fix #H260 - escaping lava let you stay there indefinitely
<email deleted>, escaping from being stuck by lava via jumping--or simply walking--got you out of the lava while being at the same location. You could then stay there for as long as you liked without falling back in. This makes a lava and water check on turns where time passes but hero hasn't moved, performing a subset of spoteffects(). I think the water case only matters when using wizard mode to wish for a pool or moat, which gets created at hero's feet without making him fall in (unlike wishing for lava, where hero does immediately fall in).
This commit is contained in:
23
src/hack.c
23
src/hack.c
@@ -1,4 +1,4 @@
|
||||
/* SCCS Id: @(#)hack.c 3.5 2007/02/10 */
|
||||
/* SCCS Id: @(#)hack.c 3.5 2007/03/12 */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -1741,6 +1741,27 @@ stillinwater:;
|
||||
return;
|
||||
}
|
||||
|
||||
/* called if hero stays in the same spot while time passes */
|
||||
void
|
||||
stayeffects()
|
||||
{
|
||||
/* leave the trickier cases to spoteffects()... */
|
||||
if (u.uinwater) {
|
||||
if (!is_pool(u.ux, u.uy)) spoteffects(FALSE);
|
||||
} else if ((is_pool(u.ux, u.uy) || is_lava(u.ux, u.uy)) &&
|
||||
!(u.ustuck || Levitation || Flying)) {
|
||||
#ifdef STEED
|
||||
if (u.usteed)
|
||||
spoteffects(FALSE);
|
||||
else
|
||||
#endif
|
||||
if (is_lava(u.ux, u.uy))
|
||||
(void)lava_effects();
|
||||
else if (!Wwalking)
|
||||
(void)drown();
|
||||
}
|
||||
}
|
||||
|
||||
/* returns first matching monster */
|
||||
STATIC_OVL struct monst *
|
||||
monstinroom(mdat,roomno)
|
||||
|
||||
Reference in New Issue
Block a user