more mimic-as-boulder (trunk only)

I started to add handling for doorways containing mimic-as-boulder
to doopen() and doclose() as was done for pick_lock(), but decided that
it was better just to prevent mimics from appearing as boulders at closed
door locations in the first place.  So the most recent pick_lock() change
and its fixes entry go away.

     This also fixes a post-3.4.3 bug.  On the top level of Sokoban I
discovered a boulder over a hole; probing reported it as a mimic with
0 hp.  The special level loading code moves mimic-as-boulder away from
trap spots by using place_monster() to put it on another spot, but it
was missing the corresponding remove_monster() to take it away from the
original location so left a stale pointer on the map.
This commit is contained in:
nethack.rankin
2011-01-05 01:28:36 +00:00
parent e379b245d4
commit 3b6c59c7fc
3 changed files with 34 additions and 21 deletions

View File

@@ -407,17 +407,6 @@ pick_lock(pick)
/* "The door actually was a <mimic>!" */
stumble_onto_mimic(mtmp);
return PICKLOCK_LEARNED_SOMETHING;
/* mimic-as-boulder on last Sokoban level */
} else if (mtmp && mtmp->m_ap_type == M_AP_OBJECT &&
mtmp->mappearance == BOULDER) {
if (Blind) /* by touch */
/* "Wait! That's a monster!" */
stumble_onto_mimic(mtmp);
else if (IS_DOOR(door->typ))
pline("That door is blocked.");
else
You("see no door there.");
return PICKLOCK_LEARNED_SOMETHING;
}
if(!IS_DOOR(door->typ)) {
if (is_drawbridge_wall(cc.x,cc.y) >= 0)