if levitating hero poly'd into pass-wall creature jumped or teleported from
terrain that allowed levitation to terrain that didn't or vice versa,
blocking of levitation wasn't updated properly
+clairvoyance revealing underwater or under-lava objects left object displayed
+ instead of restoring the water or lava
Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository
-/* NetHack 3.6 detect.c $NHDT-Date: 1542853884 2018/11/22 02:31:24 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.87 $ */
+/* NetHack 3.6 detect.c $NHDT-Date: 1544437284 2018/12/10 10:21:24 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.91 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2018. */
/* NetHack may be freely redistributed. See license for details. */
struct obj *otmp;
long save_EDetect_mons;
char save_viz_uyux;
- boolean unconstrained, refresh = FALSE, mdetected = FALSE,
+ boolean unconstrained, refresh = FALSE,
+ mdetected = FALSE, odetected = FALSE,
/* fake spellbook 'sobj' implies hero has cast the spell;
when book is blessed, casting is skilled or expert level;
if already clairvoyant, non-skilled spell acts like skilled */
if (extended)
otmp->dknown = 1;
map_object(otmp, TRUE);
+ newglyph = glyph_at(zx, zy);
+ /* if otmp is underwater, we'll need to redisplay the water */
+ if (newglyph != oldglyph && covers_objects(zx, zy))
+ odetected = TRUE;
}
/* if there is a monster here, see or detect it,
possibly as "remembered, unseen monster" */
}
}
- if (!level.flags.hero_memory || unconstrained || mdetected) {
+ if (!level.flags.hero_memory || unconstrained || mdetected || odetected) {
flush_screen(1); /* flush temp screen */
/* the getpos() prompt from browse_map() is only shown when
flags.verbose is set, but make this unconditional so that