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
|
engraving while underwater should use surface() which handles that case
|
||||||
prevent obj_is_local panic during bones creation when splatter_burning_oil()
|
prevent obj_is_local panic during bones creation when splatter_burning_oil()
|
||||||
from a thrown potion of oil kills the hero
|
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
|
Platform- and/or Interface-Specific Fixes
|
||||||
|
|||||||
+2
-1
@@ -339,6 +339,7 @@ NhRegion *reg;
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
/* Update screen if necessary */
|
/* Update screen if necessary */
|
||||||
|
reg->ttl = -2L; /* for visible_region_at */
|
||||||
if (reg->visible)
|
if (reg->visible)
|
||||||
for (x = reg->bounding_box.lx; x <= reg->bounding_box.hx; x++)
|
for (x = reg->bounding_box.lx; x <= reg->bounding_box.hx; x++)
|
||||||
for (y = reg->bounding_box.ly; y <= reg->bounding_box.hy; y++)
|
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++)
|
for (i = 0; i < n_regions; i++)
|
||||||
if (inside_region(regions[i], x, y) && regions[i]->visible &&
|
if (inside_region(regions[i], x, y) && regions[i]->visible &&
|
||||||
regions[i]->ttl != 0L)
|
regions[i]->ttl != -2L)
|
||||||
return regions[i];
|
return regions[i];
|
||||||
return (NhRegion *) 0;
|
return (NhRegion *) 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user