CleverRaven / Cataclysm-DDA

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

Fire won't go out, but only legs burn #74989

Open Terrorforge opened 1 month ago

Terrorforge commented 1 month ago

Describe the bug

In the attached save, I ended up standing on a fire due to some unfortunate Pyrokinesis shenanigans. My feet and legs acquired the On Fire effect and quickly broke, but I managed to crawl away so I wasn't on top of the fire any more.

Then I "Wait[ed] in place to attempt to put out the fire" for 30 minutes, during which the fire kept raging but only ever affected my legs. Since my legs were already disabled, that meant it just kept racking up pain and not doing anything else.

Attach save file

New Mind 2-trimmed.tar.gz This is shortly after crawling out of the fire.

Steps to reproduce

  1. Step in fire
  2. Step off fire
  3. Wait in place to attempt to put out the fire

Expected behavior

If my character burns for half an hour, she should die.

If the fire isn't going to kill her, it should take less than half an hour to go out.

Screenshots

image On fire

image ~30 minutes later

Versions and configuration

Additional context

No response

fairyarmadillo commented 1 month ago

As I recall, an intensity 2 onfire effect is applied to a body part every turn as long as any worn gear on that body part is burning. Gear burns according to its material's fuel values. So while the fire system is wonky in general, the root of the bug here is that it took 30 minutes for your shorts to burn into nothing.

Without checking, it looks like maybe the wait to extinguish yourself thing only stops the onfire effect on your body and not your gear, so even if you put out the fire from the effect it immediately reapplies from the burning shorts.

Terrorforge commented 1 month ago

That seems plausible. I noticed that the "on fire" effect seemed to get worse if I did anything other than waiting, but waiting could only tamp it down to the lowest level without actually extinguishing it.

And ftr I believe I was also wearing jeans, a trenchcoat, socks and sneakers, all of which were eventually incinerated but it looks like the boxers hung on the longest.

Fun fact: turns out you still get the "No shoes" movement penalty even if you're dragging yourself along the ground with two broken legs.

fairyarmadillo commented 1 month ago

They're made of cotton, so I am not sure why they took so long to burn. Realistically they should be ash in just a couple of minutes and should fall off of your body well before that.

Crazy thought: Does body part wetness interact with worn item burning? I don't think it does, and it shouldnt in this case, but maybe sweat from the hot fire could have been a factor?

Either that or it burned each item layer in turn rather than all at once.

Terrorforge commented 1 month ago

I did a little bit of testing. Replicated my lower body outfit of duster, jeans and boxer shorts.

Firstly, it does do the layer thing, from the outside in. The duster burns first, then the jeans, then the boxers. Interestingly, even though the duster also covers the upper body, the fire never spreads from the legs.

Secondly, the duster seems to be the biggest culprit. It takes about 15-20 minutes to burn away completely, and then the jeans and boxers both disappear in the next 5-10 minutes.

Also worth noting that there's very little indication that your clothes are fueling the fire. From what I can tell, the "on fire" effect is applied to the body part and burns any flammable clothing there. As long as the outermost layer on that body part is flammable, you can't put the fire out. But the item itself is not on fire - if you take it off, it will immediately stop burning. The correct response is to take off the affected clothing, which is fair enough, but the way this behaves is nonsensical. E.g. if your legs catch fire and your duster starts burning, you would think that taking off your duster would let you sacrifice the duster to save yourself, but it actually saves your duster and sets your jeans on fire instead.

In summary, I believe these are the problems:

  1. Once you catch on fire, the fire won't go out until any flammable clothes have burned away completely (or been taken off)
  2. Clothing is burned one piece at a time, layer by layer, sometimes resulting in very long burn times.
  3. Fire doesn't spread across body parts, which means that limbs catching on fire can never kill you.
  4. The clothing items themselves can't actually catch on fire, leading to nonsensical behavior like "burning" items immediately getting put out when you remove them from your person

The "correct" solution would be a pretty complicated system where individual items can be "on fire" and the fire spreads across your body from items that are in contact with one another, but I think the most pressing fix would be to make it so that stop drop and roll can actually put out the fire.