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.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user