fix github issue #1170 - trapped without a trap

Issue reported by mkuoppal:  drum of earthquake triggers a sanity
check warning which the fuzzer escalated to panic.

Analysis by entrez.  If a pit gets created next to a pool or moat or
lava, liquid might flow there and replace the pit.  But the drum of
earthquake code assumed that the pit was still there.  If there was a
monster there and it wasn't levitating or flying and it wasn't killed
by the liquid, it got marked as trapped even though the pit was gone.
'sanity_check' noticed.

With difficulty I was able to reproduce the impossible warning before
the fix, but the are a bunch of random factors at play.  After the
fix I can't reproduce it again, but that's not a guarantee that it's
actually fixed.  The analysis seems correct though and the fix is
based on dealing with that.

Closes #1170
This commit is contained in:
PatR
2023-12-10 03:21:52 -08:00
parent 8b821d0e00
commit 31717fe227
3 changed files with 32 additions and 11 deletions
+5
View File
@@ -1323,6 +1323,11 @@ change [master] mind flayer, the Wizard, and the riders to bright magenta
walking into a shopkeeper tries to pay the bill
show billed items in a menu when paying with non-traditional menustyle
prioritize paying shopkeeper next to you even if multiple are detected
avoid impossible "trapped without a trap (fmon)" from 'sanity_check' when a
drum of earthquake made a pit at a monster's spot and pit creation
caused adjacent pool/moat/lava to flood that spot; if a non-floater,
non-flyer monster survived that it got marked as trapped even though
flooding deleted the trap
Fixes to 3.7.0-x General Problems Exposed Via git Repository