]> granicus.if.org Git - nethack/commitdiff
expanded-glyphs follow-up: altars
authornhmall <nhmall@nethack.org>
Wed, 22 Sep 2021 16:01:21 +0000 (12:01 -0400)
committernhmall <nhmall@nethack.org>
Wed, 22 Sep 2021 16:01:21 +0000 (12:01 -0400)
include/display.h
include/extern.h
src/display.c

index 8ed2ef878f4e9655e42fe2883f82dd07b5038855..130cad4abdf2b606c93e0e9a6a94227a4d95122b 100644 (file)
@@ -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) \
index 98b08e1d958243f6456a7c783c4b27c7296f5d49..b844fa00fefa3c37c6012b096c5a4d02d9518617 100644 (file)
@@ -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);
index 0d645d02bca7fa1007fbc7143bd417f4064cc57e..69271efc6096597ffa823fb063d58d6dc92c836b 100644 (file)
@@ -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 */\
         }