Chris-plus-alphanumericgibberish / dNAO

Merge of dnethack onto the nethack.alt.org sources.
Other
20 stars 29 forks source link

Putting a corpse on an ice tile and moving it back to a normal tile makes the corpse never rot #2275

Open NetSysFire opened 2 months ago

NetSysFire commented 2 months ago

riker told me to go ahead, even if this happened in notdnethack but yeah very likely a dnh issue.

Steps to reproduce:

  1. Have a normal corpse. Anything really except lichen or lizard or so.
  2. Make it die on an ice tile. Otherwise the corpse will still rot away, which is probably also a bug but a separate one maybe?
  3. Wait maybe 1000 turns or so.
  4. Save.
  5. Grab the corpse, move it back onto a normal floor tile.
  6. Wait another 1000 turns.
  7. Notice the corpse still does not rot away.
23:35 <rld> <riker [@rikerwashere]> that sounds plausible
23:35 <rld> <riker [@rikerwashere]> theres some weird timer interactions with that
23:35 <rld> <riker [@rikerwashere]> what most likely happened is that a corpse timer triggering for rot effects while on an ice tile has no effect and doesnt make it more rotten
23:35 <rld> <riker [@rikerwashere]> but then it doesn't reset the timer to run again on the next turn
23:36 <rld> <riker [@rikerwashere]> a similar bug existed with shadowsteel, where putting it in a bag would cancel the timer and make it never evaporate ever
RikerW commented 2 months ago

on checking code, ice terrain seems to have zero interaction with corpse timers in dnh (or ndnh, unless it's new and i checked the wrong branch for that one)

furthermore, i am consistently unable to reproduce this. waiting 1000 turns in step 3 consistently makes it rot away (i'm using newt corpses generated by killing a newt, not by wishing), and if i replace 1000 with 100 it still rots away by step 6. not sure what's up with this