]> granicus.if.org Git - nethack/commitdiff
U979 - mimic mimicking a boulder on Sokobon hole
authorcohrs <cohrs>
Mon, 24 May 2004 22:07:18 +0000 (22:07 +0000)
committercohrs <cohrs>
Mon, 24 May 2004 22:07:18 +0000 (22:07 +0000)
On mazelike levels, mimics will mimic either boulders or statues (of giant
ants, as it turns out).  However, it does not make sense to mimic a boulder
on a hole or even a pit, since boulders would typically fall in.  Also,
statues are not typical objects in Sokoban.  So, skip statue special case
in Sokoban and always avoid the forced emulation of a boulder when on a
trap location outside a room.  This is a bit drastic, but I couldn't think of
an argument for adding the code to do this only for pits, holes, et al,
which are the most likely traps outside rooms anyway.

doc/fixes35.0
src/makemon.c

index 3ee77e4a0568d45d348ae2280f70dd7011d2056a..e44f6d6ea0628df2b5175fc1a246d72d6f7f5ed6 100644 (file)
@@ -69,6 +69,7 @@ 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
 polymorphed or shapechanged monster sometimes got erroneous hit points
+mimic should not mimic a boulder while on a pit or hole location
 
 
 Platform- and/or Interface-Specific Fixes
index 2a7de4253e25b04ecc2f3d68048f7f8828366679..5c616e8e1e8da7e93685d627dc38ded54615c942 100644 (file)
@@ -1695,10 +1695,10 @@ register struct monst *mtmp;
 
                if(!mtmp->minvis || See_invisible)
                    block_point(mx,my); /* vision */
-       } else if (level.flags.is_maze_lev && rn2(2)) {
+       } else if (level.flags.is_maze_lev && !In_sokoban(&u.uz) && rn2(2)) {
                ap_type = M_AP_OBJECT;
                appear = STATUE;
-       } else if (roomno < 0) {
+       } else if (roomno < 0 && !t_at(mx, my)) {
                ap_type = M_AP_OBJECT;
                appear = BOULDER;
                if(!mtmp->minvis || See_invisible)