CleverRaven / Cataclysm-DDA

Cataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.
http://cataclysmdda.org
Other
10.59k stars 4.16k forks source link

Test of the heat distribution system between body parts (between mouth and head) #77329

Open IdleSol opened 1 day ago

IdleSol commented 1 day ago

Describe the bug

Based on this comment from @kevingranade . https://github.com/CleverRaven/Cataclysm-DDA/issues/68419#issuecomment-2435702267

I decided to test whether body parts do indeed share heat with other parts.

Test methodology:

  1. A character is created and all clothing is removed
  2. The character is sent to the basement (no weather influence)
  3. The temperature is set to -20 degrees Celsius
  4. 1 turn is skipped (to allow the temperature change to take effect)
  5. Disable automatic saving
  6. Create a save and exit to the main menu
  7. Load the save
  8. Enter Record the warmth values for head and mouth, current temperature of head and mouth, hp of head (because mouth damage is transferred to head).
  9. Wait 30 minutes, repeat step 8.
  10. Wait another 30 minutes and repeat step 8.
  11. Exit without saving
  12. Load save
  13. Put on TEST suit 90 (warmth=90)
  14. Repeat steps 8-11
  15. Repeat steps 12-14 for TEST suit 130 (warmth=130)
  16. Repeat steps 12-14 for TEST suit 00 (warmth=90, but additionally covers the mouth)

Here are the results:

Naked character TEST suit 90 TEST suit 130 TEST suit 00
time = 0
warmth mouth -78 -78 -78 11
warmth head -78 11 51 11
T mouth 309.790009 309.745514 309.745514 309.799347
T head 309.790009 309.799347 309.823242 309.799347
HP head 86 86 86 86
time = +30 min
warmth mouth -78 -78 -78 2
warmth head -78 2 25 2
T mouth 302.537903 303.195587 303.349426 310.424377
T head 302.537903 310.424377 312.150513 310.424377
HP head 79 85 80 86
time = +30 min
warmth mouth -78 -78 -78 2
warmth head -78 2 25 2
T mouth 302.321869 303.050964 303.203400 310.419281
T head 302.321869 310.419281 312.150269 310.419281
HP head 59 79 70 86

Conclusions.

  1. Kevin is right, body parts share heat.
  2. But this effect is so imperceptible that it is effectively non-existent. The difference in mouth temperature, between a naked character and a character in a warm suit (TEST 130), is approximately 0.66 0.81 degrees. (0.66 for TEST 90, after 30 minutes.). And after an hour, the difference is 0.73 and 0.89, which is less than 1 degree.
  3. HP loss is dice dependent. Therefore, they don't show anything. (And are not repeatable across different measurements)
  4. For a suit with heat 90. In an hour, the character lost about 20% 10% hp of his head. And died, after 5 hours (5:10 from the start of the game). But this is a frost of only -20 degrees, the character is dressed in warm clothes!!!!

Attach save file

test.json

Details ``` [ { "id": "test_suit_00", "type": "ARMOR", "category": "armor", "name": { "str": "TEST suit 00" }, "description": "TEST.", "weight": "5200 g", "volume": "10500 ml", "price": "0 USD", "price_postapoc": "30 USD", "material": [ "kevlar", "lycra", "nylon" ], "symbol": "[", "looks_like": "survivor_jumpsuit", "color": "blue", "armor": [ { "material": [ { "type": "lycra", "covered_by_mat": 100, "thickness": 0.5 }, { "type": "kevlar", "covered_by_mat": 100, "thickness": 2.0 }, { "type": "nylon", "covered_by_mat": 100, "thickness": 0.3 } ], "covers": [ "head", "eyes", "mouth", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], "coverage": 100, "cover_melee": 100, "cover_ranged": 100, "encumbrance": 0 } ], "warmth": 90, "environmental_protection": 5, "flags": [ "NORMAL", "RAINPROOF", "STURDY", "WATER_FRIENDLY", "WATCH" ] }, { "id": "test_suit_90", "type": "ARMOR", "category": "armor", "name": { "str": "TEST suit 90" }, "description": "TEST.", "weight": "5200 g", "volume": "10500 ml", "price": "0 USD", "price_postapoc": "30 USD", "material": [ "kevlar", "lycra", "nylon" ], "symbol": "[", "looks_like": "survivor_jumpsuit", "color": "blue", "armor": [ { "material": [ { "type": "lycra", "covered_by_mat": 100, "thickness": 0.5 }, { "type": "kevlar", "covered_by_mat": 100, "thickness": 2.0 }, { "type": "nylon", "covered_by_mat": 100, "thickness": 0.3 } ], "covers": [ "head", "eyes", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], "coverage": 100, "cover_melee": 100, "cover_ranged": 100, "encumbrance": 0 } ], "warmth": 90, "environmental_protection": 5, "flags": [ "NORMAL", "RAINPROOF", "STURDY", "WATER_FRIENDLY", "WATCH" ] }, { "id": "test_suit_130", "type": "ARMOR", "name": { "str": "TEST suit 130" }, "copy-from": "test_suit_90", "warmth": 130 } ] ```

Steps to reproduce

n/a

Expected behavior

A more efficient system of heat distribution between body parts. A character should not die in 5 hours just because his mouth is not covered.

He shouldn't take damage at all as long as he has calorie reserves. Or until he gets hypothermia in almost every part of his body.

Screenshots

No response

Versions and configuration

Additional context

UPD. A critical failure of math.

PatrikLundell commented 13 hours ago

It's certainly silly that you'd get frost bite on your uncovered mouth in just a few negative degrees. However, you can definitely get frost bite eventually in poorly protected extremities well before general hypothermia sets in when it gets quite cold.