]> granicus.if.org Git - nethack/commitdiff
U1047 - mimics mimicking closed doors on the rogue level
authorcohrs <cohrs>
Sat, 22 May 2004 01:10:01 +0000 (01:10 +0000)
committercohrs <cohrs>
Sat, 22 May 2004 01:10:01 +0000 (01:10 +0000)
Since the rogue level does not have closed doors, mimicking one there makes
no sense.  Similar to what wand of locking does there, make mimics that end
up there mimic a wall instead of a door.

doc/fixes35.0
src/makemon.c

index 92443793069f6a489d58cde375a14a97effbea9d..6b6667cdd5fbee6532a1524953205deeb7a2ecba 100644 (file)
@@ -67,6 +67,7 @@ when a giant carrying a boulder dies in a pit, ensure that the corpse is
 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
+mimic that ends up on the rogue level should not mimic a closed door
 
 
 Platform- and/or Interface-Specific Fixes
index f76099c9f7c7b19a3909ab43def6cc7a6c7e18b0..6a94826e8eced9d2784ad8c91497f0abe66231df 100644 (file)
@@ -1665,6 +1665,8 @@ register struct monst *mtmp;
                 *  If there is a wall to the left that connects to this
                 *  location, then the mimic mimics a horizontal closed door.
                 *  This does not allow doors to be in corners of rooms.
+                *  Since rogue has no closed doors, mimic a wall there
+                *  (yes, mimics can end up on this level by various means).
                 */
                if (mx != 0 &&
                        (levl[mx-1][my].typ == HWALL    ||
@@ -1674,9 +1676,9 @@ register struct monst *mtmp;
                         levl[mx-1][my].typ == TDWALL   ||
                         levl[mx-1][my].typ == CROSSWALL||
                         levl[mx-1][my].typ == TUWALL    ))
-                   appear = S_hcdoor;
+                   appear = Is_rogue_level(&u.uz) ? S_hwall : S_hcdoor;
                else
-                   appear = S_vcdoor;
+                   appear = Is_rogue_level(&u.uz) ? S_vwall : S_vcdoor;
 
                if(!mtmp->minvis || See_invisible)
                    block_point(mx,my); /* vision */