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
|
'F'orcefighting with a war hammer has a small chance of breaking iron bars
|
||||||
very rarely random items are generated eroded, erodeproof, or greased
|
very rarely random items are generated eroded, erodeproof, or greased
|
||||||
Nazgul can see invisible
|
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
|
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
|
||||||
|
|||||||
@@ -4177,6 +4177,8 @@ wiz_mon_diff(void)
|
|||||||
static void
|
static void
|
||||||
you_sanity_check(void)
|
you_sanity_check(void)
|
||||||
{
|
{
|
||||||
|
struct monst *mtmp;
|
||||||
|
|
||||||
if (u.uswallow && !u.ustuck) {
|
if (u.uswallow && !u.ustuck) {
|
||||||
/* this probably ought to be panic() */
|
/* this probably ought to be panic() */
|
||||||
impossible("sanity_check: swallowed by nothing?");
|
impossible("sanity_check: swallowed by nothing?");
|
||||||
@@ -4186,6 +4188,12 @@ you_sanity_check(void)
|
|||||||
u.uswldtim = 0;
|
u.uswldtim = 0;
|
||||||
docrt();
|
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");
|
(void) check_invent_gold("invent");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3560,7 +3560,7 @@ float_down(
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Punished && !carried(uball)
|
if (Punished && !carried(uball) && !m_at(uball->ox, uball->oy)
|
||||||
&& (is_pool(uball->ox, uball->oy)
|
&& (is_pool(uball->ox, uball->oy)
|
||||||
|| ((trap = t_at(uball->ox, uball->oy))
|
|| ((trap = t_at(uball->ox, uball->oy))
|
||||||
&& (is_pit(trap->ttyp) || is_hole(trap->ttyp))))) {
|
&& (is_pit(trap->ttyp) || is_hole(trap->ttyp))))) {
|
||||||
|
|||||||
Reference in New Issue
Block a user