BeeStation-Hornet
BeeStation-Hornet copied to clipboard
Ports carbon 'core-temperatures' & more advanced human temperature handling/stabilization
Ports:
- https://github.com/tgstation/tgstation/pull/48912
- https://github.com/tgstation/tgstation/pull/54550
- https://github.com/tgstation/tgstation/pull/66037 (species temp optimizations only
About The Pull Request
closes #10718
This in an atomization of #8992 and a part 2 of #9876.
Effectively, it splits temperature into two separate variables, core temperature, which is the range a human's body will naturally gravitate towards, and body temperature.
Body temperature for the most part has been unchanged, and is what things like environmental hazards or cold/heat projectiles affect directly. Core temperature is a new variable that is affected by symptoms like shivering & fever, which fundamentally change what temperature range the carbon will normally operate at.
Included is also new calculations for how cold/hot you are and calculations of the burn damage you will receive, in addition to the framework for this working with burn wounds(should we want them)
Also included are some of lemons life() improvements which dont make the system process when theres no change in temp
Why It's Good For The Game
tl;dr this makes it so your human body actually has nerves in it and you will gradually get the 'it feels cold in here' HUD alert when walking into a cold room, rather than walking into a cold room and 15 seconds later getting a 'you are freezing to death, heres a slowdown and ticking damage'
It generally feels pretty janky to walk into a cold area and instantly become a popsicle, rather than you feeling the heat dissipate from yourself over time.
The effect is, of course, modified by how much insulation the player is wearing, as it was in the previous pr.
Testing Photographs and Procedure
Screenshots&Videos
Independent Core & Body temperatures
Moving from a normal temperature to a moderately freezing temperature
https://github.com/BeeStation/BeeStation-Hornet/assets/62388554/19e0c7b1-084e-4183-9bf4-626a1b6eff7a
Moving from a normal temperature to space
https://github.com/BeeStation/BeeStation-Hornet/assets/62388554/eff38de7-3675-4dc9-92f9-a291529c2e2a
Changelog
:cl: rkz, nightred, lemoninthedark refactor: refactored temperature stabilization in humans. Split human temperature into core temperature, which is affected by fevers & shivering symptoms and represents the overall temperature range, and Body Temperature which is what is directly affected by environmental factors and projectiles. add: All species will now receive temperature HUD alerts before receiving damage. balance: recalculates burn damage based on overall temperature /:cl:
Does this account for our lizard code?
How so? If there is I did not see it.
I instituted species-specific temperature handling in #9876, which includes specific temperatures lizards prefer.
This pr is just an extension of that, it wont overwrite lizards' temperature handling, its still within their specific range. Just adds the "core temperature" mechanic
tl;dr This PR is a lot of words, but really the crux of this PR is to add the alerts when going into cold/hot areas, so players can react like they actually have a Central Nervous System
So PR doesn't actually do anything with how humanoids experience core temperature change, it just lets them know as soon as they're in an uncomfortable area instead of only telling them after their body temperature itself has actually changed?
So PR doesn't actually do anything with how humanoids experience core temperature change
@Rukofamicom
I was probably reductive, I'll see if I can word it different.
So basically, the main goal of this pr is that carbons can feel temperature changes before they fully take effect.
All the changes in this PR are made to support that, the primary being the "core" temperature and the body temperature, the difference of the values are what tells the mob, "Oh my body temperature is colder than my core temperature, lets put up an alert that im getting colder" or vice versa with heat.
It is only when the carbon exceeds their species acceptable range for their "core" temperature that they will take damage.
There are two other not-as-related changes:
- https://github.com/tgstation/tgstation/pull/48912 which makes heat/cold projectiles respect insulation
- Burn damage is calculated based on temperature, it doesnt use a static value
If you can confirm this fixes the frost oil and cryo sting, include those in the changelog since this is potentially important to players who may otherwise not realize they have been affected.
Will try to give this a proper code review tomorrow
If you can confirm this fixes the frost oil and cryo sting
Issue should be reproduced on live
Regardless, I have tested the time and effects for the equivalent of a singular changeling cryosting (20u frost oil injection)
https://github.com/BeeStation/BeeStation-Hornet/assets/62388554/72b1b599-c5d0-47f1-93cb-f96829c43b04
Cold hud warning appears at 51 seconds.
Overall appears functional. Two injections should be more than enough.
Not optimal really, but I think thats because life() is still not using delta_time 3 years after https://github.com/BeeStation/BeeStation-Hornet/pull/3731
😔
Actually, I think frost oil is working exactly as intended - the code for the reagent shows it as a very slow working reagent. It isn't intended to have a larger effect on the mob until ~50 seconds (25 reagent ticks) have passed, which places it perfectly in line with your video lol
This pull request has conflicts, please resolve those before we can evaluate the pull request.