fix obscure secret corridor bug
magic_map_background() would overwrite remembered objects and traps. That meant discovery of secret corridors by secret door detection or ^E would forget embedded objects at their locations.
This commit is contained in:
@@ -1460,6 +1460,10 @@ region expiration could report "the gas cloud around you dissipates" and also
|
|||||||
"you see a gas cloud dissipate" for the same cloud spot
|
"you see a gas cloud dissipate" for the same cloud spot
|
||||||
reduce shopkeeper's innate speed from 18 to 16 so that a hasted shopkeeper
|
reduce shopkeeper's innate speed from 18 to 16 so that a hasted shopkeeper
|
||||||
doesn't always get 2 moves per turn
|
doesn't always get 2 moves per turn
|
||||||
|
when a secret corridor was discovered by wand of secret door detection or by
|
||||||
|
wizard mode ^E and converted into a regular corridor, if there was a
|
||||||
|
formerly embbered object at the spot, presence of the object would be
|
||||||
|
forgotten unless within range of a light source
|
||||||
|
|
||||||
|
|
||||||
Fixes to 3.7.0-x General Problems Exposed Via git Repository
|
Fixes to 3.7.0-x General Problems Exposed Via git Repository
|
||||||
|
|||||||
+6
-3
@@ -248,7 +248,7 @@ magic_map_background(coordxy x, coordxy y, int show)
|
|||||||
else if (lev->typ == CORR && glyph == cmap_to_glyph(S_litcorr))
|
else if (lev->typ == CORR && glyph == cmap_to_glyph(S_litcorr))
|
||||||
glyph = cmap_to_glyph(S_corr);
|
glyph = cmap_to_glyph(S_corr);
|
||||||
}
|
}
|
||||||
if (svl.level.flags.hero_memory)
|
if (svl.level.flags.hero_memory && glyph_is_cmap(lev->glyph))
|
||||||
lev->glyph = glyph;
|
lev->glyph = glyph;
|
||||||
if (show)
|
if (show)
|
||||||
show_glyph(x, y, glyph);
|
show_glyph(x, y, glyph);
|
||||||
@@ -1120,6 +1120,8 @@ tether_glyph(coordxy x, coordxy y)
|
|||||||
*
|
*
|
||||||
* DISP_BEAM - Display the given glyph at each location, but do not erase
|
* DISP_BEAM - Display the given glyph at each location, but do not erase
|
||||||
* any until the close call.
|
* any until the close call.
|
||||||
|
* DISP_ALL - Same as DISP_BEAM except glyph is shown at the specified
|
||||||
|
* spot even when that spot can't be seen.
|
||||||
* DISP_TETHER - Display a tether glyph at each location, and the tethered
|
* DISP_TETHER - Display a tether glyph at each location, and the tethered
|
||||||
* object at the farthest location, but do not erase any
|
* object at the farthest location, but do not erase any
|
||||||
* until the return trip or close.
|
* until the return trip or close.
|
||||||
@@ -1277,7 +1279,7 @@ flash_glyph_at(coordxy x, coordxy y, int tg, int rpt)
|
|||||||
rpt *= 2; /* two loop iterations per 'count' */
|
rpt *= 2; /* two loop iterations per 'count' */
|
||||||
glyph[0] = tg;
|
glyph[0] = tg;
|
||||||
glyph[1] = (svl.level.flags.hero_memory) ? levl[x][y].glyph
|
glyph[1] = (svl.level.flags.hero_memory) ? levl[x][y].glyph
|
||||||
: back_to_glyph(x, y);
|
: back_to_glyph(x, y);
|
||||||
/* even iteration count (guaranteed) ends with glyph[1] showing;
|
/* even iteration count (guaranteed) ends with glyph[1] showing;
|
||||||
caller might want to override that, but no newsym() calls here
|
caller might want to override that, but no newsym() calls here
|
||||||
in case caller has tinkered with location visibility */
|
in case caller has tinkered with location visibility */
|
||||||
@@ -1974,13 +1976,14 @@ show_glyph(coordxy x, coordxy y, int glyph)
|
|||||||
&& !program_state.in_getlev
|
&& !program_state.in_getlev
|
||||||
&& (oldglyph != glyph || gg.gbuf[y][x].gnew)) {
|
&& (oldglyph != glyph || gg.gbuf[y][x].gnew)) {
|
||||||
int c = glyph_to_cmap(glyph);
|
int c = glyph_to_cmap(glyph);
|
||||||
|
|
||||||
if ((glyph_is_nothing(oldglyph) || glyph_is_unexplored(oldglyph)
|
if ((glyph_is_nothing(oldglyph) || glyph_is_unexplored(oldglyph)
|
||||||
|| is_cmap_furniture(c))
|
|| is_cmap_furniture(c))
|
||||||
&& !is_cmap_wall(c) && !is_cmap_room(c)) {
|
&& !is_cmap_wall(c) && !is_cmap_room(c)) {
|
||||||
if ((a11y.mon_notices && glyph_is_monster(glyph))
|
if ((a11y.mon_notices && glyph_is_monster(glyph))
|
||||||
|| (glyph_is_monster(oldglyph))
|
|| (glyph_is_monster(oldglyph))
|
||||||
|| u_at(x, y)) {
|
|| u_at(x, y)) {
|
||||||
/* nothing */
|
; /* nothing */
|
||||||
} else {
|
} else {
|
||||||
show_glyph_change = TRUE;
|
show_glyph_change = TRUE;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user