vision vs gas cloud dissipation

Reported directly to dev-team:  vapor cloud dissipation didn't always
update vision properly.

Region removal affecting visibility needs to make two passes, the
first unblocking all no longer blocked spots, then the second deciding
whether spots are visible.

Attempting to do that in one pass was doing
| unblock <x1,y1>
| if cansee <x1,y1> whatever
| unblock <x2,y2>
| if cansee <x2,y2> whatever
and the cansee <x1,y1> test wasn't accurate if <x2,y2> blocked it and
hadn't been unblocked yet.

Testing with steam didn't seem to trigger the problem but with poison
vapor trail from green dragon breath did.  The order of evaporation
mattered too; sometimes the single pass unblocking plus vision-testing
worked ok by coincidence.
This commit is contained in:
PatR
2024-01-26 13:40:34 -08:00
parent 524ae27c99
commit 9993fa97ec
2 changed files with 44 additions and 25 deletions

View File

@@ -1,4 +1,4 @@
$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1361 $ $NHDT-Date: 1705357506 2024/01/15 22:25:06 $
$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1368 $ $NHDT-Date: 1706272459 2024/01/26 12:34:19 $
General Fixes and Modified Features
-----------------------------------
@@ -1355,6 +1355,8 @@ if a covetous monster tried to teleport next to the hero but the level was
if loadstone was unIDed but had been assigned a type name and you failed to
pick one up, the message referred to it as "gray stone" rather than
"stone called <assigned name>"
when a vision blocking gas cloud dissipated, the screen didn't necessarily
get updated to show newly visible locations in a timely fashion
Fixes to 3.7.0-x General Problems Exposed Via git Repository