seemimic produces transparent doors

- if a mimic mimics a boulder (top sokoban) or a door atop
a closed door the closed door didn't block your vision after
the mimic is sensed.
- also, make mondied consistent with xkilled WRT corpses on inaccessible
locations: no corpse
This commit is contained in:
cohrs
2002-03-27 00:58:44 +00:00
parent bbb9ded22f
commit ea18afa4dd
2 changed files with 17 additions and 8 deletions

View File

@@ -1473,7 +1473,8 @@ register struct monst *mdef;
mondead(mdef);
if (mdef->mhp > 0) return; /* lifesaved */
if (corpse_chance(mdef, (struct monst *)0, FALSE))
if (corpse_chance(mdef, (struct monst *)0, FALSE) &&
(accessible(mdef->mx, mdef->my) || is_pool(mdef->mx, mdef->my)))
(void) make_corpse(mdef);
}
@@ -2061,16 +2062,21 @@ void
seemimic(mtmp)
register struct monst *mtmp;
{
/*
* Discovered mimics don't block light.
*/
if ((mtmp->m_ap_type == M_AP_FURNITURE &&
(mtmp->mappearance==S_hcdoor || mtmp->mappearance==S_vcdoor))||
(mtmp->m_ap_type == M_AP_OBJECT && mtmp->mappearance == BOULDER))
unblock_point(mtmp->mx,mtmp->my);
unsigned old_app = mtmp->mappearance;
uchar old_ap_type = mtmp->m_ap_type;
mtmp->m_ap_type = M_AP_NOTHING;
mtmp->mappearance = 0;
/*
* Discovered mimics don't block light.
*/
if (((old_ap_type == M_AP_FURNITURE &&
(old_app == S_hcdoor || old_app == S_vcdoor)) ||
(old_ap_type == M_AP_OBJECT && old_app == BOULDER)) &&
!does_block(mtmp->mx, mtmp->my, &levl[mtmp->mx][mtmp->my]))
unblock_point(mtmp->mx, mtmp->my);
newsym(mtmp->mx,mtmp->my);
}