]> granicus.if.org Git - nethack/commitdiff
U1041 - monster hidden under a corpse not displayed immediately when it rots
authorcohrs <cohrs>
Fri, 21 May 2004 21:33:19 +0000 (21:33 +0000)
committercohrs <cohrs>
Fri, 21 May 2004 21:33:19 +0000 (21:33 +0000)
There was already code to ensure that if a hidden monster moved, it would
no longer be hidden.  However, if the monster is asleep or whatever under
a rotting corpse, when the corpse rotted away, the monster would not
immediately become detected.  Add a check to the rot code before the newsym.

doc/fixes35.0
src/dig.c

index 106aeae163e2b76b96cf81256451e078def51c30..92443793069f6a489d58cde375a14a97effbea9d 100644 (file)
@@ -65,6 +65,8 @@ kicked objects do not slide when on the air or water levels
 when a giant carrying a boulder dies in a pit, ensure that the corpse is
        buried under the filled pit
 when blind and levitating > shouldn't say "stairs" if player has not seen them
+a slow-moving monster hidden under a rotting corpse was not immediately
+       displayed when the corpse rotted away
 
 
 Platform- and/or Interface-Specific Fixes
index 56c36dfc515e1d87cee794963ee5ee409e6f3d99..3931ba02f842fe2793711a614a77dc4a86dd3114 100644 (file)
--- a/src/dig.c
+++ b/src/dig.c
@@ -1556,8 +1556,16 @@ long timeout;    /* unused */
            }
        }
        rot_organic(arg, timeout);
-       if (on_floor) newsym(x, y);
-       else if (in_invent) update_inventory();
+       if (on_floor) {
+           struct monst *mtmp = m_at(x, y);
+
+           /* a hiding monster may be exposed */
+           if (mtmp && !OBJ_AT(x, y) &&
+               mtmp->mundetected && hides_under(mtmp->data)) {
+               mtmp->mundetected = 0;
+           }
+           newsym(x, y);
+       } else if (in_invent) update_inventory();
 }
 
 #if 0