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.
This commit is contained in:
nhmall
2021-09-22 15:47:17 -04:00
parent c8c08a6aec
commit 39260880ef
4 changed files with 28 additions and 33 deletions

View File

@@ -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 */

View File

@@ -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;

View File

@@ -692,7 +692,7 @@ Z = (195, 195, 195)
...AAAAAAAAAAA..
................
}
# tile 35 (shrine)
# tile 35 (high altar)
{
................
................

View File

@@ -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