From 13abd42d6ae674e9c2a079bf03066f59b9dfbfb8 Mon Sep 17 00:00:00 2001 From: cohrs Date: Mon, 24 May 2004 22:07:18 +0000 Subject: [PATCH] U979 - mimic mimicking a boulder on Sokobon hole 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 | 1 + src/makemon.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/fixes35.0 b/doc/fixes35.0 index 3ee77e4a0..e44f6d6ea 100644 --- a/doc/fixes35.0 +++ b/doc/fixes35.0 @@ -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 diff --git a/src/makemon.c b/src/makemon.c index 2a7de4253..5c616e8e1 100644 --- a/src/makemon.c +++ b/src/makemon.c @@ -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)