From 78fe5fbb059686573f4f05b8ac3460def02686dc Mon Sep 17 00:00:00 2001 From: PatR Date: Thu, 26 Apr 2018 15:07:00 -0700 Subject: [PATCH] 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). --- doc/fixes36.1 | 5 ++++- src/display.c | 9 ++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/doc/fixes36.1 b/doc/fixes36.1 index 7c89019d0..0d8bf47b5 100644 --- a/doc/fixes36.1 +++ b/doc/fixes36.1 @@ -1,4 +1,4 @@ -$NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.446 $ $NHDT-Date: 1524689549 2018/04/25 20:52:29 $ +$NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.448 $ $NHDT-Date: 1524780380 2018/04/26 22:06:20 $ General Fixes and Modified Features ----------------------------------- @@ -542,6 +542,9 @@ at the prompt for entering a level annotation, responding with reorder the #droptype menu and add some separator lines moving from a pit to an adjacent pit with uncleared debris shouldn't be a fall open drawbridge spanning ice would vanish if the ice melted +if a warned-of mon moved onto a spot containing a 'remembered, unseen mon' + then moved off, the unseen marker was redisplayed even though the + hero should now know that the remembered monster isn't there anymore Fixes to Post-3.6.0 Problems that Were Exposed Via git Repository diff --git a/src/display.c b/src/display.c index d946ec965..5c98c8a99 100644 --- a/src/display.c +++ b/src/display.c @@ -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); }