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

@@ -18,6 +18,9 @@ print regular death message when leashed, mounted steed dies of starvation
fix more funny messages, new and old
restore the behavior of bumping into closed doors when moving while impaired
fix iron ball cases that could put the chain in solid rock
discovering a mimic on a closed door location should not unblock the location
don't drop corpse when a monster kills another monster on an inaccessible
location (i.e. behave like xkilled behaves)
Platform- and/or Interface-Specific Fixes

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);
}