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:
@@ -18,6 +18,9 @@ print regular death message when leashed, mounted steed dies of starvation
|
|||||||
fix more funny messages, new and old
|
fix more funny messages, new and old
|
||||||
restore the behavior of bumping into closed doors when moving while impaired
|
restore the behavior of bumping into closed doors when moving while impaired
|
||||||
fix iron ball cases that could put the chain in solid rock
|
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
|
Platform- and/or Interface-Specific Fixes
|
||||||
|
|||||||
22
src/mon.c
22
src/mon.c
@@ -1473,7 +1473,8 @@ register struct monst *mdef;
|
|||||||
mondead(mdef);
|
mondead(mdef);
|
||||||
if (mdef->mhp > 0) return; /* lifesaved */
|
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);
|
(void) make_corpse(mdef);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2061,16 +2062,21 @@ void
|
|||||||
seemimic(mtmp)
|
seemimic(mtmp)
|
||||||
register struct monst *mtmp;
|
register struct monst *mtmp;
|
||||||
{
|
{
|
||||||
/*
|
unsigned old_app = mtmp->mappearance;
|
||||||
* Discovered mimics don't block light.
|
uchar old_ap_type = mtmp->m_ap_type;
|
||||||
*/
|
|
||||||
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);
|
|
||||||
|
|
||||||
mtmp->m_ap_type = M_AP_NOTHING;
|
mtmp->m_ap_type = M_AP_NOTHING;
|
||||||
mtmp->mappearance = 0;
|
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);
|
newsym(mtmp->mx,mtmp->my);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user