From: nhmall Date: Wed, 22 Sep 2021 16:01:21 +0000 (-0400) Subject: expanded-glyphs follow-up: altars X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6c541581805deeee11ac24511d9fcaf73d9c76c4;p=nethack expanded-glyphs follow-up: altars --- diff --git a/include/display.h b/include/display.h index 8ed2ef878..130cad4ab 100644 --- a/include/display.h +++ b/include/display.h @@ -458,17 +458,17 @@ enum glyph_offsets { (((mon)->female == 0) ? GLYPH_PET_MALE_OFF : GLYPH_PET_FEM_OFF)) #define altar_to_glyph(amsk) \ - (((amsk & AM_NONE) == AM_NONE) \ - ? (GLYPH_ALTAR_OFF + 0) \ - : ((amsk & AM_CHAOTIC) == AM_CHAOTIC) \ - ? (GLYPH_ALTAR_OFF + 1) \ - : ((amsk & AM_NEUTRAL) == AM_NEUTRAL) \ - ? (GLYPH_ALTAR_OFF + 2) \ - : ((amsk & AM_NEUTRAL) == AM_LAWFUL) \ - ? (GLYPH_ALTAR_OFF + 3) \ - : ((amsk & AM_NEUTRAL) == AM_SHRINE) \ - ? (GLYPH_ALTAR_OFF + 4) \ - : (GLYPH_ALTAR_OFF + 2)) + (((amsk & (AM_MASK | AM_SHRINE)) == AM_NONE) \ + ? (GLYPH_ALTAR_OFF + 0) \ + : ((amsk & (AM_MASK | AM_SHRINE)) == AM_CHAOTIC) \ + ? (GLYPH_ALTAR_OFF + 1) \ + : ((amsk & (AM_MASK | AM_SHRINE)) == AM_NEUTRAL) \ + ? (GLYPH_ALTAR_OFF + 2) \ + : ((amsk & (AM_MASK | AM_SHRINE)) == AM_LAWFUL) \ + ? (GLYPH_ALTAR_OFF + 3) \ + : ((amsk & AM_SHRINE) == AM_SHRINE) \ + ? (GLYPH_ALTAR_OFF + 4) \ + : (GLYPH_ALTAR_OFF + 2)) /* not used, nor is it correct #define zap_to_glyph(zaptype, cmap_idx) \ diff --git a/include/extern.h b/include/extern.h index 98b08e1d9..b844fa00f 100644 --- a/include/extern.h +++ b/include/extern.h @@ -342,6 +342,7 @@ extern int wiz_debug_cmd_bury(void); /* ### display.c ### */ extern void magic_map_background(xchar, xchar, int); +static void map_altar(xchar, xchar, int); extern void map_background(xchar, xchar, int); extern void map_trap(struct trap *, int); extern void map_object(struct obj *, int); diff --git a/src/display.c b/src/display.c index 0d645d02b..69271efc6 100644 --- a/src/display.c +++ b/src/display.c @@ -370,6 +370,18 @@ show_mon_or_warn(int x, int y, int monglyph) show_glyph(x, y, monglyph); } +/* + * map_altar(x, y, amsk) + */ +void +map_altar(xchar x, xchar y, int amsk) +{ + int glyph = altar_to_glyph(amsk); + + if (g.level.flags.hero_memory) + levl[x][y].glyph = glyph; + show_glyph(x, y, glyph); +} #define DETECTED 2 #define PHYSICALLY_SEEN 1 #define is_worm_tail(mon) ((mon) && ((x != (mon)->mx) || (y != (mon)->my))) @@ -825,6 +837,8 @@ newsym(register int x, register int y) display_warning(mon); } else if (glyph_is_invisible(lev->glyph)) { map_invisible(x, y); + } else if (IS_ALTAR(levl[x][y].typ)) { + map_altar(x, y, levl[x][y].altarmask); } else _map_location(x, y, 1); /* map the location */\ }