portcullis failed if bridge orientation was north-to-south (Valk quest)
sinking into lava didn't track passage of time properly
sinking into lava eventually burns away slime; sitting in it always does
+after escaping lava by foot, if hero doesn't move he'll fall back in
suppress corpse from bones data if death is due to being dissolved in lava
suppress "you rise from the dead" if game ends due to be turned into slime
don't give erroneous "<mon> disppears" message for hero poly'd into quantum
E void NDECL(domove);
E void NDECL(invocation_message);
E void FDECL(spoteffects, (BOOLEAN_P));
+E void NDECL(stayeffects);
E char *FDECL(in_rooms, (XCHAR_P,XCHAR_P,int));
E boolean FDECL(in_town, (int,int));
E void FDECL(check_special_room, (BOOLEAN_P));
-/* SCCS Id: @(#)allmain.c 3.5 2007/02/16 */
+/* SCCS Id: @(#)allmain.c 3.5 2007/03/12 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
!In_endgame(&u.uz) && !BClairvoyant &&
!(moves % 15) && !rn2(2)) do_vicinity_map();
if (u.utrap && u.utraptype == TT_LAVA) sink_into_lava();
+ /* when/if hero escapes from lava, he can't just stay there */
+ else if (!u.umoved) stayeffects();
} /* actual time passed */
-/* 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. */
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)