From: nhmall Date: Wed, 22 Sep 2021 19:47:17 +0000 (-0400) Subject: yet more expanded-glyphs altar follow-up X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=39260880eff336a30393776acd340bbe0a0d9023;p=nethack yet more expanded-glyphs altar follow-up The 5 glyphs are now unaligned_altar, chaotic_altar, neutral_altar, lawful_altar, and high_altar. The latter is only mapped if you are on astral or sanctum levels. --- diff --git a/include/display.h b/include/display.h index 30d15ffc9..57147597b 100644 --- a/include/display.h +++ b/include/display.h @@ -317,7 +317,7 @@ * cmap A S_ndoor through S_brdnladder * Count: (S_brdnladder - S_ndoor) + 1 = 19 * - * Altars Altar (Unaligned, Chaotic, Neutral, Lawful, shrine) + * Altars Altar (Unaligned, Chaotic, Neutral, Lawful, high altar) * Count: 5 * * cmap B S_grave through S_vibrating_square @@ -460,15 +460,16 @@ enum glyph_offsets { #define altar_to_glyph(amsk) \ (((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)) + : (((amsk & AM_SHRINE) == AM_SHRINE) \ + && (Is_astralevel(&u.uz) || Is_sanctum(&u.uz))) \ + ? (GLYPH_ALTAR_OFF + 4) \ + : ((amsk & AM_MASK) == AM_CHAOTIC) \ + ? (GLYPH_ALTAR_OFF + 1) \ + : ((amsk & AM_MASK) == AM_NEUTRAL) \ + ? (GLYPH_ALTAR_OFF + 2) \ + : ((amsk & AM_MASK) == AM_LAWFUL) \ + ? (GLYPH_ALTAR_OFF + 3) \ + : (GLYPH_ALTAR_OFF + 2)) /* not used, nor is it correct #define zap_to_glyph(zaptype, cmap_idx) \ @@ -915,7 +916,7 @@ enum altar_colors { altar_color_neutral = CLR_GRAY, altar_color_lawful = CLR_GRAY, #endif - altar_color_shrine = CLR_BRIGHT_MAGENTA + altar_color_highaltar = CLR_BRIGHT_MAGENTA, }; /* types of explosions */ @@ -955,7 +956,7 @@ enum altar_types { altar_chaotic, altar_neutral, altar_lawful, - altar_shrine + altar_highaltar }; enum { GM_FLAGS, GM_TTYCHAR, GM_COLOR, NUM_GLYPHMOD }; /* glyphmod entries */ diff --git a/src/display.c b/src/display.c index a6434b951..90cf5b69c 100644 --- a/src/display.c +++ b/src/display.c @@ -2183,9 +2183,9 @@ get_bk_glyph(xchar x, xchar y) #define HI_DOMESTIC CLR_WHITE /* monst.c */ /* masks for per-level variances kept in g.glyphmap_perlevel_flags */ -#define GMAP_SET 0x0001 -#define GMAP_ROGUELEVEL 0x0002 -#define GMAP_ALTARCOLOR 0x0004 +#define GMAP_SET 0x0001 +#define GMAP_ROGUELEVEL 0x0002 +#define GMAP_HIGHALTARCOLOR 0x0004 void map_glyphinfo(xchar x, xchar y, int glyph, unsigned mgflags, @@ -2240,9 +2240,9 @@ const int zapcolors[NUM_ZAP] = { zap_color_sleep, zap_color_death, zap_color_lightning, zap_color_poison_gas, zap_color_acid, }; -const int altarcolors[5] = { +const int altarcolors[] = { altar_color_unaligned, altar_color_chaotic, altar_color_neutral, - altar_color_lawful, altar_color_shrine, + altar_color_lawful, altar_color_highaltar }; const int explodecolors[7] = { explode_color_dark, explode_color_noxious, explode_color_muddy, @@ -2328,17 +2328,14 @@ reset_glyphmap(enum glyphmap_change_triggers trigger) /* * GMAP_SET 0x00000001 * GMAP_ROGUELEVEL 0x00000002 - * GMAP_ALTARCOLOR 0x00000004 + * GMAP_HIGHALTARCOLOR 0x00000004 */ g.glyphmap_perlevel_flags |= GMAP_SET; if (Is_rogue_level(&u.uz)) { g.glyphmap_perlevel_flags |= GMAP_ROGUELEVEL; - } else if (Is_astralevel(&u.uz) - || Is_sanctum(&u.uz) - || In_mines(&u.uz) - || Is_valley(&u.uz)) { - g.glyphmap_perlevel_flags |= GMAP_ALTARCOLOR; + } else if (Is_astralevel(&u.uz) || Is_sanctum(&u.uz)) { + g.glyphmap_perlevel_flags |= GMAP_HIGHALTARCOLOR; } } @@ -2460,12 +2457,9 @@ reset_glyphmap(enum glyphmap_change_triggers trigger) gmap->symidx = S_grave + offset + SYM_OFF_P; cmap_color(S_grave + offset); } else if ((offset = (glyph - GLYPH_ALTAR_OFF)) >= 0) { - /* unaligned, chaotic, neutral, lawful, shrine */ + /* unaligned, chaotic, neutral, lawful, high altar */ gmap->symidx = S_altar + SYM_OFF_P; - if (g.glyphmap_perlevel_flags & GMAP_ALTARCOLOR) - altar_color(offset); - else - cmap_color(S_altar); /* gray */ + altar_color(offset); } else if ((offset = (glyph - GLYPH_CMAP_A_OFF)) >= 0) { int cmap = S_ndoor + offset; gmap->symidx = cmap + SYM_OFF_P; diff --git a/win/share/other.txt b/win/share/other.txt index e9c86bfe8..09ff7df15 100644 --- a/win/share/other.txt +++ b/win/share/other.txt @@ -692,7 +692,7 @@ Z = (195, 195, 195) ...AAAAAAAAAAA.. ................ } -# tile 35 (shrine) +# tile 35 (high altar) { ................ ................ diff --git a/win/share/tilemap.c b/win/share/tilemap.c index 798924b9d..4d4f36f13 100644 --- a/win/share/tilemap.c +++ b/win/share/tilemap.c @@ -60,7 +60,7 @@ struct { enum {MON_GLYPH, OBJ_GLYPH, OTH_GLYPH, TERMINATOR = -1}; #define EXTRA_SCROLL_DESCR_COUNT ((SCR_BLANK_PAPER - SCR_STINKING_CLOUD) - 1) const char *altar_text[] = { - "unaligned", "chaotic", "neutral", "lawful", "shrine", + "unaligned", "chaotic", "neutral", "lawful", "high altar", }; enum wall_levels { main_dungeon, mines, gehennom, knox, sokoban }; @@ -329,7 +329,7 @@ tilename(int set, const int file_entry, int gend UNUSED) /* Altars */ cmap = S_altar; - for (k = altar_unaligned; k <= altar_shrine; k++) { + for (k = altar_unaligned; k <= altar_highaltar; k++) { /* Since defsyms only has one altar symbol, it isn't much help in identifying details these. Roll our own name. */ @@ -889,7 +889,7 @@ init_tilemap(void) /* Altars */ cmap = S_altar; j = 0; - for (k = altar_unaligned; k <= altar_shrine; k++) { + for (k = altar_unaligned; k <= altar_highaltar; k++) { offset = GLYPH_ALTAR_OFF + j; precheck((offset), "altar"); tilemap[offset].tilenum = tilenum; @@ -1377,7 +1377,7 @@ acceptable_tilename(int glyph_set, int idx, const char *encountered, { "raised drawbridge", "vertical closed drawbridge" }, { "raised drawbridge", "horizontal closed drawbridge" }, { "altar", "unaligned altar" }, - { "altar", "shrine" }, + { "altar", "high altar" }, #if 0 { "dark part of a room", "stone" }, #endif