Fix punishment iron ball yanking hero on top of a monster
When attached iron ball was in a pit (or a pool) with a monster, and your levitation ended, you were put on top of the monster. Add a sanity check for hero over monster.
This commit is contained in:
@@ -1103,6 +1103,7 @@ give gremlin the property it stole, if possible
|
||||
'F'orcefighting with a war hammer has a small chance of breaking iron bars
|
||||
very rarely random items are generated eroded, erodeproof, or greased
|
||||
Nazgul can see invisible
|
||||
fix a case where punished iron ball yanked hero on top of a monster
|
||||
|
||||
|
||||
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
|
||||
|
||||
@@ -4177,6 +4177,8 @@ wiz_mon_diff(void)
|
||||
static void
|
||||
you_sanity_check(void)
|
||||
{
|
||||
struct monst *mtmp;
|
||||
|
||||
if (u.uswallow && !u.ustuck) {
|
||||
/* this probably ought to be panic() */
|
||||
impossible("sanity_check: swallowed by nothing?");
|
||||
@@ -4186,6 +4188,12 @@ you_sanity_check(void)
|
||||
u.uswldtim = 0;
|
||||
docrt();
|
||||
}
|
||||
if ((mtmp = m_at(u.ux, u.uy)) != 0) {
|
||||
/* u.usteed isn't on the map */
|
||||
if (u.ustuck != mtmp)
|
||||
impossible("sanity_check: you over monster");
|
||||
}
|
||||
|
||||
(void) check_invent_gold("invent");
|
||||
}
|
||||
|
||||
|
||||
@@ -3560,7 +3560,7 @@ float_down(
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (Punished && !carried(uball)
|
||||
if (Punished && !carried(uball) && !m_at(uball->ox, uball->oy)
|
||||
&& (is_pool(uball->ox, uball->oy)
|
||||
|| ((trap = t_at(uball->ox, uball->oy))
|
||||
&& (is_pit(trap->ttyp) || is_hole(trap->ttyp))))) {
|
||||
|
||||
Reference in New Issue
Block a user