display glitch: warning vs remembered,unseen

Noticed while testing the fix for the recently reported clairvoyance
bug.  I saw a '1' move onto an 'I', then when it moved again the 'I'
reappeared.  The remembered unseen monster couldn't be there anymore
if the warned-of monster was able to walk through that spot, so
remove any 'I' when showing a warning (digit) to stop remembering an
unseen monster at the warning spot.

Nobody has ever reported this so fixing it isn't urgent, but fixing
it is trivial so I'm doing it in now (without the clairvoyance fix).
This commit is contained in:
PatR
2018-04-26 15:07:00 -07:00
parent 72d38f1f67
commit 78fe5fbb05
2 changed files with 12 additions and 2 deletions

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 display.c $NHDT-Date: 1496101037 2017/05/29 23:37:17 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.87 $ */
/* NetHack 3.6 display.c $NHDT-Date: 1524780381 2018/04/26 22:06:21 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.90 $ */
/* Copyright (c) Dean Luick, with acknowledgements to Kevin Darcy */
/* and Dave Cohrs, 1990. */
/* NetHack may be freely redistributed. See license for details. */
@@ -496,6 +496,13 @@ register struct monst *mon;
impossible("display_warning did not match warning type?");
return;
}
/* warning glyph is drawn on the monster layer; unseen
monster glyph is drawn on the object/trap/floor layer;
if we see a 'warning' move onto 'remembered, unseen' we
need to explicitly remove that in order for it to not
reappear when the warned-of monster moves off that spot */
if (glyph_is_invisible(levl[x][y].glyph))
unmap_object(x, y);
show_glyph(x, y, glyph);
}