gas cloud fix
remove_region() calls newsym() when removing gas clouds, but when newsym() checked whether it was updating a gas cloud location it always got a false 'yes' because the region hadn't been removed yet. Fixing this didn't seem to make any observable difference so it must be followed fairly rapidly by a full vision recalc.
This commit is contained in:
+6
-4
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 region.c $NHDT-Date: 1573933605 2019/11/16 19:46:45 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.44 $ */
|
/* NetHack 3.6 region.c $NHDT-Date: 1573957877 2019/11/17 02:31:17 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.45 $ */
|
||||||
/* Copyright (c) 1996 by Jean-Christophe Collet */
|
/* Copyright (c) 1996 by Jean-Christophe Collet */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -340,6 +340,11 @@ NhRegion *reg;
|
|||||||
if (i == n_regions)
|
if (i == n_regions)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
/* remove region before potential newsym() calls, but don't free it yet */
|
||||||
|
if (--n_regions != i)
|
||||||
|
regions[i] = regions[n_regions];
|
||||||
|
regions[n_regions] = (NhRegion *) 0;
|
||||||
|
|
||||||
/* Update screen if necessary */
|
/* Update screen if necessary */
|
||||||
reg->ttl = -2L; /* for visible_region_at */
|
reg->ttl = -2L; /* for visible_region_at */
|
||||||
if (reg->visible)
|
if (reg->visible)
|
||||||
@@ -349,9 +354,6 @@ NhRegion *reg;
|
|||||||
newsym(x, y);
|
newsym(x, y);
|
||||||
|
|
||||||
free_region(reg);
|
free_region(reg);
|
||||||
regions[i] = regions[n_regions - 1];
|
|
||||||
regions[n_regions - 1] = (NhRegion *) 0;
|
|
||||||
n_regions--;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user