@ S_ss3 (magic shield 3 of 4)
* S_ss4 (magic shield 4 of 4)
\(ha S_statue_trap (statue trap)
-\ S_stone (solid rock or unexplored terrain
-\ \ \ or dark part of a room)
+\ S_stone (solid rock)
] S_strange_obj (strange object)
\- S_sw_bc (swallow bottom center)
\\ S_sw_bl (swallow bottom left)
| S_trwall (wall)
\- S_tuwall (wall)
U S_umber (umber hulk)
+\ S_unexplored (unexplored terrain)
u S_unicorn (unicorn or horse)
< S_upladder (ladder up)
< S_upstair (staircase up)
\verb+@+ & S\verb+_+ss3 & (magic shield 3 of 4)\\
\verb@*@ & S\verb+_+ss4 & (magic shield 4 of 4)\\
\verb@^@ & S\verb+_+statue\verb+_+trap & (statue trap)\\
-\verb@ @ & S\verb+_+stone & (solid rock or unexplored terrain\\
- & & \,or dark part of a room)\\
+\verb@ @ & S\verb+_+stone & (solid rock)\\
\verb@]@ & S\verb+_+strange\verb+_+obj & (strange object)\\
\verb@-@ & S\verb+_+sw\verb+_+bc & (swallow bottom center)\\
\verb@\@ & S\verb+_+sw\verb+_+bl & (swallow bottom left)\\
\verb@|@ & S\verb+_+trwall & (wall)\\
\verb@-@ & S\verb+_+tuwall & (wall)\\
\verb@U@ & S\verb+_+umber & (umber hulk)\\
+\verb@ @ & S\verb+_+unexplored & (unexplored terrain)\\
\verb@u@ & S\verb+_+unicorn & (unicorn or horse)\\
\verb@<@ & S\verb+_+upladder & (ladder up)\\
\verb@<@ & S\verb+_+upstair & (staircase up)\\
const struct obj zeroobj; /* used to zero out a struct obj */
const struct monst zeromonst; /* used to zero out a struct monst */
const anything zeroany; /* used to zero out union any */
+ const struct rm zerorm; /* used to zero out struct rm */
};
E const struct const_globals cg;
*
* statue One for each monster. Count: NUMMONS
*
+ * unexplored One for unexplored areas of the map
+ * nothing Nothing but background
+ *
* The following are offsets used to convert to and from a glyph.
*/
#define NUM_ZAP 8 /* number of zap beam types */
#define GLYPH_SWALLOW_OFF ((NUM_ZAP << 2) + GLYPH_ZAP_OFF)
#define GLYPH_WARNING_OFF ((NUMMONS << 3) + GLYPH_SWALLOW_OFF)
#define GLYPH_STATUE_OFF (WARNCOUNT + GLYPH_WARNING_OFF)
-#define MAX_GLYPH (NUMMONS + GLYPH_STATUE_OFF)
+#define GLYPH_UNEXPLORED_OFF (NUMMONS + GLYPH_STATUE_OFF)
+#define GLYPH_NOTHING_OFF (GLYPH_UNEXPLORED_OFF + 1)
+#define MAX_GLYPH (GLYPH_NOTHING_OFF + 1)
#define NO_GLYPH MAX_GLYPH
#define GLYPH_INVISIBLE GLYPH_INVIS_OFF
+#define GLYPH_UNEXPLORED GLYPH_UNEXPLORED_OFF
+#define GLYPH_NOTHING GLYPH_NOTHING_OFF
#define warning_to_glyph(mwarnlev) ((mwarnlev) + GLYPH_WARNING_OFF)
#define mon_to_glyph(mon, rng) \
#define glyph_is_warning(glyph) \
((glyph) >= GLYPH_WARNING_OFF \
&& (glyph) < (GLYPH_WARNING_OFF + WARNCOUNT))
+#define glyph_is_unexplored(glyph) ((glyph) == GLYPH_UNEXPLORED)
+#define glyph_is_nothing(glyph) ((glyph) == GLYPH_NOTHING)
#endif /* DISPLAY_H */
#define BOLT_LIM 8 /* from this distance ranged attacks will be made */
#define MAX_CARR_CAP 1000 /* so that boulders can be heavier */
#define DUMMY { 0 } /* array initializer, letting [1..N-1] default */
+#define DEF_NOTHING ' ' /* default symbol for NOTHING and UNEXPLORED */
/* The UNDEFINED macros are used to initialize variables whose
initialized value is not relied upon.
#define MG_BW_LAVA 0x0080 /* 'black & white lava': highlight lava if it
can't be distringuished from water by color */
#define MG_BW_ICE 0x0100 /* similar for ice vs floor */
+#define MG_NOTHING 0x0200 /* char represents GLYPH_NOTHING */
+#define MG_UNEXPL 0x0400 /* char represents GLYPH_UNEXPLORED */
/* sellobj_state() states */
#define SELL_NORMAL (0)
};
/* misc symbol definitions */
-#define SYM_BOULDER 0
-#define SYM_INVISIBLE 1
-#define SYM_PET_OVERRIDE 2
-#define SYM_HERO_OVERRIDE 3
-#define MAXOTHER 4
+#define SYM_NOTHING 0
+#define SYM_UNEXPLORED 1
+#define SYM_BOULDER 2
+#define SYM_INVISIBLE 3
+#define SYM_PET_OVERRIDE 4
+#define SYM_HERO_OVERRIDE 5
+#define MAXOTHER 6
/* linked list of symsets and their characteristics */
struct symsetentry {
/* Clear all memory from the level. */
for (x = 1; x < COLNO; x++)
for (y = 0; y < ROWNO; y++) {
- levl[x][y].seenv = 0;
- levl[x][y].waslit = 0;
- levl[x][y].glyph = cmap_to_glyph(S_stone);
+ levl[x][y] = cg.zerorm;
g.lastseentyp[x][y] = 0;
}
DUMMY, /* zeroobj */
DUMMY, /* zeromonst */
DUMMY, /* zeroany */
+ { GLYPH_UNEXPLORED, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
};
#define ZERO(x) memset(&x, 0, sizeof(x))
if (!cansee(x, y) && !lev->waslit) {
/* Floor spaces are dark if unlit. Corridors are dark if unlit. */
if (lev->typ == ROOM && glyph == cmap_to_glyph(S_room))
- glyph = cmap_to_glyph((flags.dark_room && iflags.use_color)
- ? (DARKROOMSYM)
- : S_stone);
+ glyph = (flags.dark_room && iflags.use_color)
+ ? cmap_to_glyph(DARKROOMSYM)
+ : GLYPH_NOTHING;
else if (lev->typ == CORR && glyph == cmap_to_glyph(S_litcorr))
glyph = cmap_to_glyph(S_corr);
}
for (y = lasty - 1; y <= lasty + 1; y++)
for (x = lastx - 1; x <= lastx + 1; x++)
if (isok(x, y))
- show_glyph(x, y, cmap_to_glyph(S_stone));
+ show_glyph(x, y, GLYPH_UNEXPLORED);
}
swallower = monsndx(u.ustuck->data);
for (y = lasty - 1; y <= lasty + 1; y++)
for (x = lastx - 1; x <= lastx + 1; x++)
if (isok(x, y))
- show_glyph(x, y, cmap_to_glyph(S_stone));
+ show_glyph(x, y, GLYPH_UNEXPLORED);
}
/*
for (y = u.uy - 1; y <= u.uy + 1; y++)
if (isok(x, y) && (is_pool_or_lava(x, y) || is_ice(x, y))) {
if (Blind && !(x == u.ux && y == u.uy))
- show_glyph(x, y, cmap_to_glyph(S_stone));
+ show_glyph(x, y, GLYPH_UNEXPLORED);
else
newsym(x, y);
}
for (x = 1; x < COLNO; x++) {
lev = &levl[x][0];
for (y = 0; y < ROWNO; y++, lev++)
- if (lev->glyph != cmap_to_glyph(S_stone))
- show_glyph(x, y, lev->glyph);
+ show_glyph(x, y, lev->glyph);
}
/* see what is to be seen */
* Reset the changed glyph borders so that none of the 3rd screen has
* changed.
*/
-#define reset_glyph_bbox() \
- { \
- int i; \
- \
- for (i = 0; i < ROWNO; i++) { \
+#define reset_glyph_bbox() \
+ { \
+ int i; \
+ \
+ for (i = 0; i < ROWNO; i++) { \
g.gbuf_start[i] = COLNO - 1; \
g.gbuf_stop[i] = 0; \
- } \
+ } \
}
-static const gbuf_entry nul_gbuf = { 0, cmap_to_glyph(S_stone) };
+static const gbuf_entry nul_gbuf = { 0, GLYPH_UNEXPLORED };
/*
- * Turn the 3rd screen into stone.
+ * Turn the 3rd screen into UNEXPLORED.
*/
void
clear_glyph_buffer()
}
/*
- * Assumes that the indicated positions are filled with S_stone glyphs.
+ * Assumes that the indicated positions are filled with GLYPH_UNEXPLORED glyphs.
*/
void
row_refresh(start, stop, y)
register int x;
for (x = start; x <= stop; x++)
- if (g.gbuf[y][x].glyph != cmap_to_glyph(S_stone))
+ if (g.gbuf[y][x].glyph != GLYPH_UNEXPLORED)
print_glyph(WIN_MAP, x, y, g.gbuf[y][x].glyph, get_bk_glyph(x, y));
}
void
cls()
{
+ int y;
static boolean in_cls = 0;
if (in_cls)
clear_nhwindow(WIN_MAP); /* clear physical screen */
clear_glyph_buffer(); /* this is sort of an extra effort, but OK */
+ for (y = 0; y < ROWNO; y++) {
+ g.gbuf_start[y] = 0;
+ g.gbuf_stop[y] = COLNO - 1;
+ }
in_cls = FALSE;
}
get_bk_glyph(x, y)
xchar x, y;
{
- int idx, bkglyph = NO_GLYPH;
+ int idx, bkglyph = GLYPH_UNEXPLORED;
struct rm *lev = &levl[x][y];
if (iflags.use_background_glyph && lev->seenv != 0
- && g.gbuf[y][x].glyph != cmap_to_glyph(S_stone)) {
+ && (g.gbuf[y][x].glyph != GLYPH_UNEXPLORED)) {
switch (lev->typ) {
case SCORR:
case STONE:
#define IS_UNEXPLORED_LOC(x,y) \
(isok((x), (y)) \
&& glyph_is_cmap(levl[(x)][(y)].glyph) \
- && glyph_to_cmap(levl[(x)][(y)].glyph) == S_stone \
+ && levl[(x)][(y)].glyph == GLYPH_UNEXPLORED \
&& !levl[(x)][(y)].seenv)
#define GLOC_SAME_AREA(x,y) \
* Default screen symbols with explanations and colors.
*/
const struct symdef defsyms[MAXPCHARS] = {
-/* 0*/ { ' ', "dark part of a room", C(NO_COLOR) }, /* stone */
+/* 0*/ { ' ', "stone", C(NO_COLOR) }, /* stone */
{ '|', "wall", C(CLR_GRAY) }, /* vwall */
{ '-', "wall", C(CLR_GRAY) }, /* hwall */
{ '-', "wall", C(CLR_GRAY) }, /* tlcorn */
: g.primary_syms[oidx];
if (!sym) {
switch(idx) {
+ case SYM_NOTHING:
+ case SYM_UNEXPLORED:
+ sym = DEF_NOTHING;
+ break;
case SYM_BOULDER:
sym = def_oc_syms[ROCK_CLASS].sym;
break;
case SYM_INVISIBLE:
sym = DEF_INVISIBLE;
break;
+#if 0
+ /* these intentionally have no defaults */
+ case SYM_PET_OVERRIDE:
+ case SYM_HERO_OVERRIDE:
+ break;
+#endif
}
}
return sym;
{ SYM_MON, S_LIZARD + SYM_OFF_M, "S_lizard" },
{ SYM_MON, S_WORM_TAIL + SYM_OFF_M, "S_worm_tail" },
{ SYM_MON, S_MIMIC_DEF + SYM_OFF_M, "S_mimic_def" },
+ { SYM_OTH, SYM_NOTHING + SYM_OFF_X, "S_nothing" },
+ { SYM_OTH, SYM_UNEXPLORED + SYM_OFF_X, "S_unexplored" },
{ SYM_OTH, SYM_BOULDER + SYM_OFF_X, "S_boulder" },
{ SYM_OTH, SYM_INVISIBLE + SYM_OFF_X, "S_invisible" },
{ SYM_OTH, SYM_PET_OVERRIDE + SYM_OFF_X, "S_pet_override" },
* Warning: For speed, this makes an assumption on the order of
* offsets. The order is set in display.h.
*/
- if ((offset = (glyph - GLYPH_STATUE_OFF)) >= 0) { /* a statue */
+ if ((offset = (glyph - GLYPH_NOTHING_OFF)) >= 0) {
+ idx = SYM_NOTHING + SYM_OFF_X;
+ color = NO_COLOR;
+ special |= MG_NOTHING;
+ } else if ((offset = (glyph - GLYPH_UNEXPLORED_OFF)) >= 0) {
+ idx = SYM_UNEXPLORED + SYM_OFF_X;
+ color = NO_COLOR;
+ special |= MG_UNEXPL;
+ } else if ((offset = (glyph - GLYPH_STATUE_OFF)) >= 0) { /* a statue */
idx = mons[offset].mlet + SYM_OFF_M;
if (has_rogue_color)
color = CLR_RED;
void
clear_level_structures()
{
- static struct rm zerorm = { cmap_to_glyph(S_stone),
- 0, 0, 0, 0, 0, 0, 0, 0, 0 };
register int x, y;
register struct rm *lev;
for (x = 0; x < COLNO; x++) {
lev = &levl[x][0];
for (y = 0; y < ROWNO; y++) {
- *lev++ = zerorm;
+ *lev++ = cg.zerorm;
/*
* These used to be '#if MICROPORT_BUG',
* with use of memset(0) for '#if !MICROPORT_BUG' below,
|| Is_rogue_level(&u.uz)) {
if (lev->glyph == cmap_to_glyph(S_darkroom))
lev->glyph = lev->waslit ? cmap_to_glyph(S_room)
- : cmap_to_glyph(S_stone);
+ : GLYPH_NOTHING;
} else {
if (lev->glyph == cmap_to_glyph(S_room) && lev->seenv
&& lev->waslit && !cansee(x, y))
lev->glyph = cmap_to_glyph(S_darkroom);
- else if (lev->glyph == cmap_to_glyph(S_stone)
+ else if (lev->glyph == GLYPH_NOTHING
&& lev->typ == ROOM && lev->seenv && !cansee(x, y))
lev->glyph = cmap_to_glyph(S_darkroom);
}
if (flags.dark_room && iflags.use_color)
g.showsyms[S_darkroom] = g.showsyms[S_room];
else
- g.showsyms[S_darkroom] = g.showsyms[S_stone];
+ g.showsyms[S_darkroom] = g.showsyms[SYM_NOTHING + SYM_OFF_X];
}
/* check whether a user-supplied option string is a proper leading
int warnindx = glyph_to_warning(glyph);
Strcpy(buf, def_warnsyms[warnindx].explanation);
+ } else if (glyph_is_nothing(glyph)) {
+ Strcpy(buf, "dark part of a room");
+ } else if (glyph_is_unexplored(glyph)) {
+ if (Underwater && !Is_waterlevel(&u.uz)) {
+ /* "unknown" == previously mapped but not visible when
+ submerged; better terminology appreciated... */
+ Strcpy(buf, (distu(x, y) <= 2) ? "land" : "unknown");
+ } else {
+ Strcpy(buf, "unexplored area");
+ }
} else if (!glyph_is_cmap(glyph)) {
Strcpy(buf, "unexplored area");
} else {
unreconnoitered[] = "unreconnoitered";
static char look_buf[BUFSZ];
char prefix[BUFSZ], gobbledygook[33];
- int i, alt_i, j, glyph = NO_GLYPH,
+ int i, j, glyph = NO_GLYPH,
skipped_venom = 0, found = 0; /* count of matching syms found */
boolean hit_trap, need_to_look = FALSE,
submerged = (Underwater && !Is_waterlevel(&u.uz)),
found += append_str(out_str, an(unseen_explain));
}
}
-
- /* Now check for graphics symbols */
- alt_i = (sym == (looked ? g.showsyms[0] : defsyms[0].sym)) ? 0 : (2 + 1);
- for (hit_trap = FALSE, i = 0; i < MAXPCHARS; i++) {
- /* when sym is the default background character, we process
- i == 0 three times: unexplored, stone, dark part of a room */
- if (alt_i < 2) {
- x_str = !alt_i++ ? "unexplored" : submerged ? "unknown" : "stone";
- i = 0; /* for second iteration, undo loop increment */
- /* alt_i is now 1 or 2 */
+ if ((glyph && glyph_is_nothing(glyph))
+ || (looked && sym == g.showsyms[SYM_NOTHING + SYM_OFF_X])) {
+ x_str = "the dark part of a room";
+ if (!found) {
+ Sprintf(out_str, "%s%s", prefix, x_str);
+ *firstmatch = x_str;
+ found++;
+ } else {
+ found += append_str(out_str, x_str);
+ }
+ }
+ if ((glyph && glyph_is_unexplored(glyph))
+ || (looked && sym == g.showsyms[SYM_UNEXPLORED + SYM_OFF_X])) {
+ x_str = "unexplored";
+ if (submerged)
+ x_str = "land"; /* replace "unexplored" */
+ if (!found) {
+ Sprintf(out_str, "%s%s", prefix, x_str);
+ *firstmatch = x_str;
+ found++;
} else {
- if (alt_i++ == 2)
- i = 0; /* undo loop increment */
- x_str = defsyms[i].explanation;
- if (submerged && !strcmp(x_str, defsyms[0].explanation))
- x_str = "land"; /* replace "dark part of a room" */
- /* alt_i is now 3 or more and no longer of interest */
+ found += append_str(out_str, x_str);
}
+ }
+ /* Now check for graphics symbols */
+ for (hit_trap = FALSE, i = 0; i < MAXPCHARS; i++) {
+ x_str = defsyms[i].explanation;
if (sym == (looked ? g.showsyms[i] : defsyms[i].sym) && *x_str) {
/* POOL, MOAT, and WATER are "water", LAVAPOOL is "molten lava" */
boolean water_or_lava = (!strcmp(x_str, "water")
"a molten lava", "a floor of a room", "a dark part of a room";
article==2 => "the", 1 => "an", 0 => (none) */
int article = strstri(x_str, " of a room") ? 2
- : !(alt_i <= 2
+ : !(i == S_stone
|| strcmp(x_str, "air") == 0
|| strcmp(x_str, "land") == 0
|| water_or_lava);
+ /* check if dark part of a room was already included above */
+ if (i == S_darkroom && glyph && glyph_is_nothing(glyph))
+ continue;
+
/* substitute for "water" and "molten lava" when hallucinating */
if (water_or_lava && hallucinate) {
if (*gobbledygook)
for (zy = 0; zy < ROWNO; zy++)
if (howmuch & ALL_MAP || rn2(7)) {
/* Zonk all memory of this location. */
- levl[zx][zy].seenv = 0;
- levl[zx][zy].waslit = 0;
- levl[zx][zy].glyph = cmap_to_glyph(S_stone);
+ levl[zx][zy] = cg.zerorm;
g.lastseentyp[zx][zy] = STONE;
}
/* forget overview data for this level */
for (x = 0; x < COLNO; x++) {
g.level.monsters[x][y] = 0;
g.level.objects[x][y] = 0;
- levl[x][y].seenv = 0;
- levl[x][y].glyph = cmap_to_glyph(S_stone);
+ levl[x][y] = cg.zerorm;
}
fmon = 0;
g.ftrap = 0;
Z = (195, 195, 195)
0 = (100, 100, 100)
1 = (72, 108, 108)
-# tile 0 (dark part of a room)
-{
- AAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAA
+# tile 0 (stone)
+{
+ PPPPPPPPPPPPPPPP
+ PAPPPPPPPPPPPPPP
+ PPAAPPPPPPPPPPPA
+ PPPPPPPPPPPPPPAP
+ PPPPPPPPPPPPPPPP
+ PPPPPPPPPPPPPPPP
+ PPPPPPPPPPPPPPPP
+ PPPPPPPPPPPPPPPP
+ PPPPPPPPPPPPPPPP
+ PPPPPPPPPPPPPPPP
+ PPPPPPPPPPPPPPPP
+ PPPPPPPPPPPPPPPP
+ PPPPPPPPPPPPPPPP
+ PPPPPPPPPPPPPPPP
+ PPPPPPPPPPPPPPPP
+ PPPPPPPPPPPPPPPP
}
# tile 1 (vertical wall)
{
.......AA.......
................
}
-# tile 188 (sub mine walls 0)
+# tile 191 (unexplored)
+{
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+}
+# tile 192 (nothing)
+{
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAA
+}
+# tile 189 (sub mine walls 0)
{
AJJKKKACJAAJJJAA
AJKKKACLJJAJJJJA
AAJACKCKKJJJAJAA
AAJCKKJAAAJJJJJA
}
-# tile 189 (sub mine walls 1)
+# tile 190 (sub mine walls 1)
{
AJAAAAAAJJAAAJAA
JJJAAAJJJJJAAAAJ
JJJJJJJJJJJJJJJJ
AAAAAAAAAAAAAAAA
}
-# tile 190 (sub mine walls 2)
+# tile 191 (sub mine walls 2)
{
AAAAAAKCCKKJAAAA
AAAAKKCLCJKJJAAA
AAJACKCKKJJJAJAA
AAJCKKJAAAJJJJJA
}
-# tile 191 (sub mine walls 3)
+# tile 192 (sub mine walls 3)
{
AAAAAAKCCKKJAAAA
AAAAKKCLCJKJJAAA
AAJACKCKKJJJAJAA
AAJCKKJAAAJJJJJA
}
-# tile 192 (sub mine walls 4)
+# tile 193 (sub mine walls 4)
{
AKKKAAKKKKAAJJJA
AKKAAKCCCJJJAAJA
AJJJJJJJJJJJJJJJ
AAAAAAAAAAAAAAAA
}
-# tile 193 (sub mine walls 5)
+# tile 194 (sub mine walls 5)
{
AKKAAAKKAAAAJJJA
AKAAKKLCKAAAAAJA
JJJJJJJJJJJJJJJA
AAAAAAAAAAAAAAAA
}
-# tile 194 (sub mine walls 6)
+# tile 195 (sub mine walls 6)
{
AAAAAAKCCKKJAAAA
AAAAKCCLCJKJJAAA
AAJACKCKKJJJAJAA
AAJCKKJAAAJJJJJA
}
-# tile 195 (sub mine walls 7)
+# tile 196 (sub mine walls 7)
{
AKKAAAKKKKAAJJJA
AKAAKKLCCJJJAAJA
JJJJJJJJJJJJJJJJ
AAAAAAAAAAAAAAAA
}
-# tile 196 (sub mine walls 8)
+# tile 197 (sub mine walls 8)
{
AAAAAAKCCKKJAAAA
AAAAKCCLCJKJJAAA
AAJACKCKKJJJAJAA
AAJCKKJAAAJJJJJA
}
-# tile 197 (sub mine walls 9)
+# tile 198 (sub mine walls 9)
{
AKKAACKCCKKJAJJA
AKACKKKLLJKJJAJA
AAJACKCKKJJJAJAA
AAJCKKJAAAJJJJJA
}
-# tile 198 (sub mine walls 10)
+# tile 199 (sub mine walls 10)
{
AKKAACKCCKKJAJJA
AKACKKCLCJKJJAJA
AAJACKCKKJJJAJAA
AAJCKKJAAAJJJJJA
}
-# tile 199 (sub gehennom walls 0)
+# tile 200 (sub gehennom walls 0)
{
ALLDAJ11111JLLDA
ADDDAJ1J11JJDDDA
AJJJAJJ1111JJJJA
AD11AJJ1111JD1JA
}
-# tile 200 (sub gehennom walls 1)
+# tile 201 (sub gehennom walls 1)
{
AAALDDAAAAALDDAA
DDDLDDAJDDDLDDAJ
JJJJJJJJJJJJJJJJ
AAAAAAAAAAAAAAAA
}
-# tile 201 (sub gehennom walls 2)
+# tile 202 (sub gehennom walls 2)
{
AAALLLLDDDDDDAAA
LLLLAAJJ1111DJJJ
AJJJAJJ1111JJJJA
AD11AJJ1111JD1JA
}
-# tile 202 (sub gehennom walls 3)
+# tile 203 (sub gehennom walls 3)
{
AAALLLLDDDDDDAAA
LLLLAAJJ1111DJJJ
AJJJAJJ1111JJJJA
AD11AJJ1111JD1JA
}
-# tile 203 (sub gehennom walls 4)
+# tile 204 (sub gehennom walls 4)
{
AAALLLLDDDDDDAAA
LLLLAAJJ1111DJJJ
JJJJJJJJJJJJJJJJ
AAAAAAAAAAAAAAAA
}
-# tile 204 (sub gehennom walls 5)
+# tile 205 (sub gehennom walls 5)
{
AAALLLLDDDDDDAAA
LLLLAAJJ1111DJJJ
JJJJJJJJJJJJJJJJ
AAAAAAAAAAAAAAAA
}
-# tile 205 (sub gehennom walls 6)
+# tile 206 (sub gehennom walls 6)
{
AAALLLLDDDDDDAAA
LLLLAAJJ1111DJJJ
AJJJAJJ1111JJJJA
AD11AJJ1111JD1JA
}
-# tile 206 (sub gehennom walls 7)
+# tile 207 (sub gehennom walls 7)
{
AAALLLLDDDDDDAAA
LLLLAAJJ1111DJJJ
JJJJJJJJJJJJJJJJ
AAAAAAAAAAAAAAAA
}
-# tile 207 (sub gehennom walls 8)
+# tile 208 (sub gehennom walls 8)
{
AAALLLLDDDDDDAAA
LLLLAAJJ1111DJJJ
AJJJAJJ1111JJJJA
AD11AJJ1111JD1JA
}
-# tile 208 (sub gehennom walls 9)
+# tile 209 (sub gehennom walls 9)
{
AAALLLLDDDDDDAAA
LLLLAAJJ1111DJJJ
AJJJAJJ1111JJJJA
AD11AJJ1111JD1JA
}
-# tile 209 (sub gehennom walls 10)
+# tile 210 (sub gehennom walls 10)
{
AAALLLLDDDDDDAAA
LLLLAAJJ1111DJJJ
AJJJAJJ1111JJJJA
AD11AJJ1111JD1JA
}
-# tile 210 (sub knox walls 0)
+# tile 211 (sub knox walls 0)
{
AJJJAAACJAAAJJJA
AJJJAACLJJAAJJJA
AAJAAACKKJAAAJAA
ACJJAAAAAAAACJJA
}
-# tile 211 (sub knox walls 1)
+# tile 212 (sub knox walls 1)
{
AJAAAJAAAJAAAJAA
JJJAAAJAJJJAAAJA
KJJACJJAKJJACJJA
AAAAAAAAAAAAAAAA
}
-# tile 212 (sub knox walls 2)
+# tile 213 (sub knox walls 2)
{
AAAAAAKCJKAAAAAA
AAAAKKCLKJKKAAAA
AAJAAACKKJAAAJAA
ACJJAAAAAAAACJJA
}
-# tile 213 (sub knox walls 3)
+# tile 214 (sub knox walls 3)
{
AAAAAAKCJKAAAAAA
AAAAKKCLKJKKAAAA
AAJAAACKKJAAAJAA
ACJJAAAAAAAACJJA
}
-# tile 214 (sub knox walls 4)
+# tile 215 (sub knox walls 4)
{
AAAAAAKCJKAAAAAA
AAAAKKCLKJKKAAAA
KJJACJJAKJJACJJA
AAAAAAAAAAAAAAAA
}
-# tile 215 (sub knox walls 5)
+# tile 216 (sub knox walls 5)
{
AAAAAAKCJKAAAAAA
AAAAKKCLKJKKAAAA
KJJACJJAKJJACJJA
AAAAAAAAAAAAAAAA
}
-# tile 216 (sub knox walls 6)
+# tile 217 (sub knox walls 6)
{
AAAAAAKCJKAAAAAA
AAAAKKCLKJKKAAAA
AAJAAACKKJAAAJAA
ACJJAAAAAAAACJJA
}
-# tile 217 (sub knox walls 7)
+# tile 218 (sub knox walls 7)
{
AAAAAAKCJKAAAAAA
AAAAKKCLKJKKAAAA
KJJACJJAKJJACJJA
AAAAAAAAAAAAAAAA
}
-# tile 218 (sub knox walls 8)
+# tile 219 (sub knox walls 8)
{
AAAAAAKCJKAAAAAA
AAAAKKCLKJKKAAAA
AAJAAACKKJAAAJAA
ACJJAAAAAAAACJJA
}
-# tile 219 (sub knox walls 9)
+# tile 220 (sub knox walls 9)
{
AAAAAAKCJKAAAAAA
AAAAKKCLKJKKAAAA
AAJAAACKKJAAAJAA
ACJJAAAAAAAACJJA
}
-# tile 220 (sub knox walls 10)
+# tile 221 (sub knox walls 10)
{
AAAAAAKCJKAAAAAA
AAAAKKCLKJKKAAAA
AAJAAACKKJAAAJAA
ACJJAAAAAAAACJJA
}
-# tile 221 (sub sokoban walls 0)
+# tile 222 (sub sokoban walls 0)
{
ANNBA1EEEEE1NNBA
ABBBA1E1EE11BBBA
A111A11EEEE1111A
ABEEA11EEEE1BE1A
}
-# tile 222 (sub sokoban walls 1)
+# tile 223 (sub sokoban walls 1)
{
AAANBBAAAAANBBAA
BBBNBBA1BBBNBBA1
1111111111111111
AAAAAAAAAAAAAAAA
}
-# tile 223 (sub sokoban walls 2)
+# tile 224 (sub sokoban walls 2)
{
AAANNNNBBBBBBAAA
NNNNAA11EEEEB111
A111A11EEEE1111A
ABEEA11EEEE1BE1A
}
-# tile 224 (sub sokoban walls 3)
+# tile 225 (sub sokoban walls 3)
{
AAANNNNBBBBBBAAA
NNNNAA11EEEEB111
A111A11EEEE1111A
ABEEA11EEEE1BE1A
}
-# tile 225 (sub sokoban walls 4)
+# tile 226 (sub sokoban walls 4)
{
AAANNNNBBBBBBAAA
NNNNAA11EEEEB111
1111111111111111
AAAAAAAAAAAAAAAA
}
-# tile 226 (sub sokoban walls 5)
+# tile 227 (sub sokoban walls 5)
{
AAANNNNBBBBBBAAA
NNNNAA11EEEEB111
1111111111111111
AAAAAAAAAAAAAAAA
}
-# tile 227 (sub sokoban walls 6)
+# tile 228 (sub sokoban walls 6)
{
AAANNNNBBBBBBAAA
NNNNAA11EEEEB111
A111A11EEEE1111A
ABEEA11EEEE1BE1A
}
-# tile 228 (sub sokoban walls 7)
+# tile 229 (sub sokoban walls 7)
{
AAANNNNBBBBBBAAA
NNNNAA11EEEEB111
1111111111111111
AAAAAAAAAAAAAAAA
}
-# tile 229 (sub sokoban walls 8)
+# tile 230 (sub sokoban walls 8)
{
AAANNNNBBBBBBAAA
NNNNAA11EEEEB111
A111A11EEEE1111A
ABEEA11EEEE1BE1A
}
-# tile 230 (sub sokoban walls 9)
+# tile 231 (sub sokoban walls 9)
{
AAANNNNBBBBBBAAA
NNNNAA11EEEEB111
A111A11EEEE1111A
ABEEA11EEEE1BE1A
}
-# tile 231 (sub sokoban walls 10)
+# tile 232 (sub sokoban walls 10)
{
AAANNNNBBBBBBAAA
NNNNAA11EEEEB111
}
tilenum += WARNCOUNT;
+ i = entry - tilenum;
+ if (i < 1) {
+ if (set == OTH_GLYPH) {
+ Sprintf(buf, "unexplored");
+ return buf;
+ }
+ }
+ tilenum += 1;
+
+ i = entry - tilenum;
+ if (i < 1) {
+ if (set == OTH_GLYPH) {
+ Sprintf(buf, "nothing");
+ return buf;
+ }
+ }
+ tilenum += 1;
+
for (i = 0; i < SIZE(substitutes); i++) {
j = entry - tilenum;
if (j <= substitutes[i].last_glyph - substitutes[i].first_glyph) {
tilenum++;
}
+ for (i = 0; i < 1; i++) {
+ tilemap[GLYPH_UNEXPLORED_OFF + i] = tilenum;
+ tilenum++;
+ }
+
+ for (i = 0; i < 1; i++) {
+ tilemap[GLYPH_NOTHING + i] = tilenum;
+ tilenum++;
+ }
+
#ifndef STATUES_LOOK_LIKE_MONSTERS
/* statue patch: statues still use the same glyph as in vanilla */