From: cohrs Date: Thu, 21 Sep 2006 15:03:48 +0000 (+0000) Subject: Eyes plus stinking cloud X-Git-Tag: MOVE2GIT~894 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a3e0bf97b1f244e23e84127d1eb47c2216d26d37;p=nethack Eyes plus stinking cloud stinking clouds extend their timers, causing the "ttl == 0" check in visible_region_at to be inappropriate; technically it was never quite right, since the ttl is set to 0 one turn before removal is considered. But with the Eyes on, this caused a visible change in the region although the region still existed. Introduced a new -2L value to designate that the region is being removed (-1L means it's permanent), which is what visible_region_at was really trying to test. --- diff --git a/doc/fixes34.4 b/doc/fixes34.4 index c0d0467d5..796ad2a9f 100644 --- a/doc/fixes34.4 +++ b/doc/fixes34.4 @@ -255,6 +255,8 @@ hero is not subject to light-based blindness while fainted from hunger engraving while underwater should use surface() which handles that case prevent obj_is_local panic during bones creation when splatter_burning_oil() from a thrown potion of oil kills the hero +fix region timeout detection, caused strange display of stinking cloud + while wearing the Eyes of the Overworld Platform- and/or Interface-Specific Fixes diff --git a/src/region.c b/src/region.c index 4aa3761ab..863c4ff7d 100644 --- a/src/region.c +++ b/src/region.c @@ -339,6 +339,7 @@ NhRegion *reg; return; /* Update screen if necessary */ + reg->ttl = -2L; /* for visible_region_at */ if (reg->visible) for (x = reg->bounding_box.lx; x <= reg->bounding_box.hx; x++) for (y = reg->bounding_box.ly; y <= reg->bounding_box.hy; y++) @@ -600,7 +601,7 @@ xchar x, y; for (i = 0; i < n_regions; i++) if (inside_region(regions[i], x, y) && regions[i]->visible && - regions[i]->ttl != 0L) + regions[i]->ttl != -2L) return regions[i]; return (NhRegion *) 0; }