S_ndoor: \xfa # meta-z, centered dot
S_vodoor: \xfe # meta-~, small centered square
S_hodoor: \xfe # meta-~, small centered square
+ S_engroom: \xee # epsilon
S_bars: \xf0 # equivalence symbol
S_tree: \xf1 # plus or minus symbol
S_room: \xfa # meta-z, centered dot
S_corr: \xb0 # meta-0, light shading
S_litcorr: \xb1 # meta-1, medium shading
+ S_engrcorr: \xb0 # meta-0, light shading
S_fountain: \xf4 # meta-t, integral top half
S_sink: \xf4 # meta-t, integral top half
S_pool: \xf7 # meta-w, approx. equals
S_tdwall: \xc2 # meta-B, T down
S_tlwall: \xb4 # meta-4, T left
S_trwall: \xc3 # meta-C, T right
+ S_engroom: \xee # epsilon
S_vbeam: \xb3 # meta-3, vertical rule
S_hbeam: \xc4 # meta-D, horizontal rule
S_sw_ml: \xb3 # meta-3, vertical rule
S_trwall: \xc3 # meta-C, T right
S_vodoor: \xfe # meta-~, small centered square
S_hodoor: \xfe # meta-~, small centered square
+ S_engroom: \xee # epsilon
S_corr: \xb0 # meta-0, light shading
S_litcorr: \xb1 # meta-1, medium shading
+ S_engrcorr: \xb0 # meta-0, light shading
S_vbeam: \xb3 # meta-3, vertical rule
S_hbeam: \xc4 # meta-D, horizontal rule
S_sw_ml: \xb3 # meta-3, vertical rule
S_room: \xfa # centered dot
S_corr: \xb1
S_litcorr: \xb2
+ S_engrcorr: \xb1
S_upstair: \xf0 # Greek Xi
S_dnstair: \xf0
S_brupstair: \xf0 # Greek Xi
S_vodoor: \xce
S_hodoor: \xce
S_room: \xfa # centered dot
+ S_engroom: \xee # epsilon
S_corr: \xb1
S_litcorr: \xb2
+ S_engrcorr: \xb1
S_upstair: \xf0 # Greek Xi
S_dnstair: \xf0
S_brupstair: \xf0 # Greek Xi
S_vodoor: \xce
S_hodoor: \xce
S_room: \xfa # centered dot
+ S_engroom: \xee # epsilon
S_corr: \xb1
S_litcorr: \xb2
+ S_engrcorr: \xb1
S_upstair: \xf0 # Greek Xi
S_dnstair: \xf0
S_brupstair: \xf0 # Greek Xi
S_bars: \xfc # meta-|, not-equals sign (was '#')
S_tree: \xe7 # meta-g, plus or minus sign
S_room: \xfe # meta-z, centered dot
+ S_engroom: \xee # epsilon
S_corr: \xe1 # meta-a, solid block
S_litcorr: \xe1 # meta-a, solid block
+ S_engrcorr: \xe1 # meta-a, solid block
S_ice: \xfe # meta-z, centered dot
S_vodbridge: \xfe # meta-z, centered dot
S_hodbridge: \xfe # meta-z, centered dot
S_bars: \xf0 # equivalency symbol
S_tree: \xf1 # plus-or-minus
S_corr: \xb0
+ S_engrcorr: \xb0
S_grave: \xef # same as open door
S_pool: \xe0
finish
S_bars: U+2261 # IDENTICAL TO
S_tree: U+03a8 # GREEK CAPITAL LETTER PSI
S_room: U+00b7 # MIDDLE DOT
+ S_engroom: U+03BE # Greek Small Letter Xi
S_darkroom: U+00b7 # MIDDLE DOT
S_upladder: U+2264 # LESS-THAN OR EQUAL TO
S_dnladder: U+2265 # GREATER-THAN OR EQUAL TO
PCHAR( 18, '#', S_tree, "tree", CLR(CLR_GREEN))
PCHAR( 19, '.', S_room, "floor of a room", CLR(CLR_GRAY))
PCHAR( 20, '.', S_darkroom, "dark part of a room", CLR(CLR_BLACK))
- PCHAR2(21, '#', S_corr, "dark corridor", "corridor", CLR(CLR_GRAY))
- PCHAR( 22, '#', S_litcorr, "lit corridor", CLR(CLR_GRAY))
- PCHAR2(23, '<', S_upstair, "up stairs", "staircase up", CLR(CLR_GRAY))
- PCHAR2(24, '>', S_dnstair, "down stairs", "staircase down", CLR(CLR_GRAY))
- PCHAR2(25, '<', S_upladder, "up ladder", "ladder up", CLR(CLR_BROWN))
- PCHAR2(26, '>', S_dnladder, "down ladder", "ladder down", CLR(CLR_BROWN))
- PCHAR( 27, '<', S_brupstair, "branch staircase up", CLR(CLR_YELLOW))
- PCHAR( 28, '>', S_brdnstair, "branch staircase down", CLR(CLR_YELLOW))
- PCHAR( 29, '<', S_brupladder, "branch ladder up", CLR(CLR_YELLOW))
- PCHAR( 30, '>', S_brdnladder, "branch ladder down", CLR(CLR_YELLOW))
+ PCHAR( 21, '`', S_engroom, "engraved part of a room", CLR(CLR_BRIGHT_BLUE))
+ PCHAR2(22, '#', S_corr, "dark corridor", "corridor", CLR(CLR_GRAY))
+ PCHAR( 23, '#', S_litcorr, "lit corridor", CLR(CLR_GRAY))
+ PCHAR( 24, '#', S_engrcorr, "engraved part of a corridor", CLR(CLR_BRIGHT_BLUE))
+ PCHAR2(25, '<', S_upstair, "up stairs", "staircase up", CLR(CLR_GRAY))
+ PCHAR2(26, '>', S_dnstair, "down stairs", "staircase down", CLR(CLR_GRAY))
+ PCHAR2(27, '<', S_upladder, "up ladder", "ladder up", CLR(CLR_BROWN))
+ PCHAR2(28, '>', S_dnladder, "down ladder", "ladder down", CLR(CLR_BROWN))
+ PCHAR( 29, '<', S_brupstair, "branch staircase up", CLR(CLR_YELLOW))
+ PCHAR( 30, '>', S_brdnstair, "branch staircase down", CLR(CLR_YELLOW))
+ PCHAR( 31, '<', S_brupladder, "branch ladder up", CLR(CLR_YELLOW))
+ PCHAR( 32, '>', S_brdnladder, "branch ladder down", CLR(CLR_YELLOW))
/* end cmap A */
- PCHAR( 31, '_', S_altar, "altar", CLR(CLR_GRAY))
+ PCHAR( 33, '_', S_altar, "altar", CLR(CLR_GRAY))
/* start cmap B */
- PCHAR( 32, '|', S_grave, "grave", CLR(CLR_WHITE))
- PCHAR2(33, '\\', S_throne, "throne", "opulent throne", CLR(HI_GOLD))
- PCHAR( 34, '{', S_sink, "sink", CLR(CLR_WHITE))
- PCHAR( 35, '{', S_fountain, "fountain", CLR(CLR_BRIGHT_BLUE))
- PCHAR2(36, '}', S_pool, "pool", "water", CLR(CLR_BLUE))
- PCHAR( 37, '.', S_ice, "ice", CLR(CLR_CYAN))
- PCHAR( 38, '}', S_lava, "molten lava", CLR(CLR_RED))
- PCHAR( 39, '}', S_lavawall, "wall of lava", CLR(CLR_ORANGE))
- PCHAR2(40, '.', S_vodbridge, "vertical open drawbridge",
+ PCHAR( 34, '|', S_grave, "grave", CLR(CLR_WHITE))
+ PCHAR2(35, '\\', S_throne, "throne", "opulent throne", CLR(HI_GOLD))
+ PCHAR( 36, '{', S_sink, "sink", CLR(CLR_WHITE))
+ PCHAR( 37, '{', S_fountain, "fountain", CLR(CLR_BRIGHT_BLUE))
+ PCHAR2(38, '}', S_pool, "pool", "water", CLR(CLR_BLUE))
+ PCHAR( 39, '.', S_ice, "ice", CLR(CLR_CYAN))
+ PCHAR( 40, '}', S_lava, "molten lava", CLR(CLR_RED))
+ PCHAR( 41, '}', S_lavawall, "wall of lava", CLR(CLR_ORANGE))
+ PCHAR2(42, '.', S_vodbridge, "vertical open drawbridge",
"lowered drawbridge", CLR(CLR_BROWN))
- PCHAR2(41, '.', S_hodbridge, "horizontal open drawbridge",
+ PCHAR2(43, '.', S_hodbridge, "horizontal open drawbridge",
"lowered drawbridge", CLR(CLR_BROWN))
- PCHAR2(42, '#', S_vcdbridge, "vertical closed drawbridge",
+ PCHAR2(44, '#', S_vcdbridge, "vertical closed drawbridge",
"raised drawbridge", CLR(CLR_BROWN))
- PCHAR2(43, '#', S_hcdbridge, "horizontal closed drawbridge",
+ PCHAR2(45, '#', S_hcdbridge, "horizontal closed drawbridge",
"raised drawbridge", CLR(CLR_BROWN))
- PCHAR( 44, ' ', S_air, "air", CLR(CLR_CYAN))
- PCHAR( 45, '#', S_cloud, "cloud", CLR(CLR_GRAY))
- PCHAR( 46, '}', S_water, "water", CLR(CLR_BLUE))
+ PCHAR( 46, ' ', S_air, "air", CLR(CLR_CYAN))
+ PCHAR( 47, '#', S_cloud, "cloud", CLR(CLR_GRAY))
+ PCHAR( 48, '}', S_water, "water", CLR(CLR_BLUE))
/* end dungeon characters */
/* */
/* begin traps */
/* */
- PCHAR( 47, '^', S_arrow_trap, "arrow trap", CLR(HI_METAL))
- PCHAR( 48, '^', S_dart_trap, "dart trap", CLR(HI_METAL))
- PCHAR( 49, '^', S_falling_rock_trap, "falling rock trap", CLR(CLR_GRAY))
- PCHAR( 50, '^', S_squeaky_board, "squeaky board", CLR(CLR_BROWN))
- PCHAR( 51, '^', S_bear_trap, "bear trap", CLR(HI_METAL))
- PCHAR( 52, '^', S_land_mine, "land mine", CLR(CLR_RED))
- PCHAR( 53, '^', S_rolling_boulder_trap, "rolling boulder trap",
+ PCHAR( 49, '^', S_arrow_trap, "arrow trap", CLR(HI_METAL))
+ PCHAR( 50, '^', S_dart_trap, "dart trap", CLR(HI_METAL))
+ PCHAR( 51, '^', S_falling_rock_trap, "falling rock trap", CLR(CLR_GRAY))
+ PCHAR( 52, '^', S_squeaky_board, "squeaky board", CLR(CLR_BROWN))
+ PCHAR( 53, '^', S_bear_trap, "bear trap", CLR(HI_METAL))
+ PCHAR( 54, '^', S_land_mine, "land mine", CLR(CLR_RED))
+ PCHAR( 55, '^', S_rolling_boulder_trap, "rolling boulder trap",
CLR(CLR_GRAY))
- PCHAR( 54, '^', S_sleeping_gas_trap, "sleeping gas trap", CLR(HI_ZAP))
- PCHAR( 55, '^', S_rust_trap, "rust trap", CLR(CLR_BLUE))
- PCHAR( 56, '^', S_fire_trap, "fire trap", CLR(CLR_ORANGE))
- PCHAR( 57, '^', S_pit, "pit", CLR(CLR_BLACK))
- PCHAR( 58, '^', S_spiked_pit, "spiked pit", CLR(CLR_BLACK))
- PCHAR( 59, '^', S_hole, "hole", CLR(CLR_BROWN))
- PCHAR( 60, '^', S_trap_door, "trap door", CLR(CLR_BROWN))
- PCHAR( 61, '^', S_teleportation_trap, "teleportation trap",
+ PCHAR( 56, '^', S_sleeping_gas_trap, "sleeping gas trap", CLR(HI_ZAP))
+ PCHAR( 57, '^', S_rust_trap, "rust trap", CLR(CLR_BLUE))
+ PCHAR( 58, '^', S_fire_trap, "fire trap", CLR(CLR_ORANGE))
+ PCHAR( 59, '^', S_pit, "pit", CLR(CLR_BLACK))
+ PCHAR( 60, '^', S_spiked_pit, "spiked pit", CLR(CLR_BLACK))
+ PCHAR( 61, '^', S_hole, "hole", CLR(CLR_BROWN))
+ PCHAR( 62, '^', S_trap_door, "trap door", CLR(CLR_BROWN))
+ PCHAR( 63, '^', S_teleportation_trap, "teleportation trap",
CLR(CLR_MAGENTA))
- PCHAR( 62, '^', S_level_teleporter, "level teleporter", CLR(CLR_MAGENTA))
- PCHAR( 63, '^', S_magic_portal, "magic portal", CLR(CLR_BRIGHT_MAGENTA))
- PCHAR( 64, '"', S_web, "web", CLR(CLR_GRAY))
- PCHAR( 65, '^', S_statue_trap, "statue trap", CLR(CLR_GRAY))
- PCHAR( 66, '^', S_magic_trap, "magic trap", CLR(HI_ZAP))
- PCHAR2(67, '^', S_anti_magic_trap, "anti magic trap", "anti-magic field",
+ PCHAR( 64, '^', S_level_teleporter, "level teleporter", CLR(CLR_MAGENTA))
+ PCHAR( 65, '^', S_magic_portal, "magic portal", CLR(CLR_BRIGHT_MAGENTA))
+ PCHAR( 66, '"', S_web, "web", CLR(CLR_GRAY))
+ PCHAR( 67, '^', S_statue_trap, "statue trap", CLR(CLR_GRAY))
+ PCHAR( 68, '^', S_magic_trap, "magic trap", CLR(HI_ZAP))
+ PCHAR2(69, '^', S_anti_magic_trap, "anti magic trap", "anti-magic field",
CLR(HI_ZAP))
- PCHAR( 68, '^', S_polymorph_trap, "polymorph trap", CLR(CLR_BRIGHT_GREEN))
- PCHAR( 69, '~', S_vibrating_square, "vibrating square", CLR(CLR_MAGENTA))
- PCHAR( 70, '^', S_trapped_door, "trapped door", CLR(CLR_ORANGE))
- PCHAR( 71, '^', S_trapped_chest, "trapped chest", CLR(CLR_ORANGE))
+ PCHAR( 70, '^', S_polymorph_trap, "polymorph trap", CLR(CLR_BRIGHT_GREEN))
+ PCHAR( 71, '~', S_vibrating_square, "vibrating square", CLR(CLR_MAGENTA))
+ PCHAR( 72, '^', S_trapped_door, "trapped door", CLR(CLR_ORANGE))
+ PCHAR( 73, '^', S_trapped_chest, "trapped chest", CLR(CLR_ORANGE))
/* end traps */
/* end cmap B */
/* */
/* */
/* zap colors are changed by reset_glyphmap() to match type of beam */
/* */
- PCHAR2(72, '|', S_vbeam, "vertical beam", "", CLR(CLR_GRAY))
- PCHAR2(73, '-', S_hbeam, "horizontal beam", "", CLR(CLR_GRAY))
- PCHAR2(74, '\\', S_lslant, "left slant beam", "", CLR(CLR_GRAY))
- PCHAR2(75, '/', S_rslant, "right slant beam", "", CLR(CLR_GRAY))
+ PCHAR2(74, '|', S_vbeam, "vertical beam", "", CLR(CLR_GRAY))
+ PCHAR2(75, '-', S_hbeam, "horizontal beam", "", CLR(CLR_GRAY))
+ PCHAR2(76, '\\', S_lslant, "left slant beam", "", CLR(CLR_GRAY))
+ PCHAR2(77, '/', S_rslant, "right slant beam", "", CLR(CLR_GRAY))
/* start cmap C */
- PCHAR2(76, '*', S_digbeam, "dig beam", "", CLR(CLR_WHITE))
- PCHAR2(77, '!', S_flashbeam, "flash beam", "", CLR(CLR_WHITE))
- PCHAR2(78, ')', S_boomleft, "boom left", "", CLR(HI_WOOD))
- PCHAR2(79, '(', S_boomright, "boom right", "", CLR(HI_WOOD))
+ PCHAR2(78, '*', S_digbeam, "dig beam", "", CLR(CLR_WHITE))
+ PCHAR2(79, '!', S_flashbeam, "flash beam", "", CLR(CLR_WHITE))
+ PCHAR2(80, ')', S_boomleft, "boom left", "", CLR(HI_WOOD))
+ PCHAR2(81, '(', S_boomright, "boom right", "", CLR(HI_WOOD))
/* 4 magic shield symbols */
- PCHAR2(80, '0', S_ss1, "shield1", "", CLR(HI_ZAP))
- PCHAR2(81, '#', S_ss2, "shield2", "", CLR(HI_ZAP))
- PCHAR2(82, '@', S_ss3, "shield3", "", CLR(HI_ZAP))
- PCHAR2(83, '*', S_ss4, "shield4", "", CLR(HI_ZAP))
- PCHAR( 84, '#', S_poisoncloud, "poison cloud", CLR(CLR_BRIGHT_GREEN))
- PCHAR( 85, '?', S_goodpos, "valid position", CLR(CLR_BRIGHT_GREEN))
+ PCHAR2(82, '0', S_ss1, "shield1", "", CLR(HI_ZAP))
+ PCHAR2(83, '#', S_ss2, "shield2", "", CLR(HI_ZAP))
+ PCHAR2(84, '@', S_ss3, "shield3", "", CLR(HI_ZAP))
+ PCHAR2(85, '*', S_ss4, "shield4", "", CLR(HI_ZAP))
+ PCHAR( 86, '#', S_poisoncloud, "poison cloud", CLR(CLR_BRIGHT_GREEN))
+ PCHAR( 87, '?', S_goodpos, "valid position", CLR(CLR_BRIGHT_GREEN))
/* end cmap C */
/* */
/* The 8 swallow symbols. Do NOT separate. */
/* 4 5 6 */
/* 7 8 9 */
/* */
- PCHAR2(86, '/', S_sw_tl, "swallow top left", "", CLR(CLR_GREEN)) /*1*/
- PCHAR2(87, '-', S_sw_tc, "swallow top center", "", CLR(CLR_GREEN)) /*2*/
- PCHAR2(88, '\\', S_sw_tr, "swallow top right", "", CLR(CLR_GREEN)) /*3*/
- PCHAR2(89, '|', S_sw_ml, "swallow middle left", "", CLR(CLR_GREEN)) /*4*/
- PCHAR2(90, '|', S_sw_mr, "swallow middle right", "", CLR(CLR_GREEN)) /*6*/
- PCHAR2(91, '\\', S_sw_bl, "swallow bottom left", "", CLR(CLR_GREEN)) /*7*/
- PCHAR2(92, '-', S_sw_bc, "swallow bottom center", "", CLR(CLR_GREEN))/*8*/
- PCHAR2(93, '/', S_sw_br, "swallow bottom right", "", CLR(CLR_GREEN)) /*9*/
+ PCHAR2(88, '/', S_sw_tl, "swallow top left", "", CLR(CLR_GREEN)) /*1*/
+ PCHAR2(89, '-', S_sw_tc, "swallow top center", "", CLR(CLR_GREEN)) /*2*/
+ PCHAR2(90, '\\', S_sw_tr, "swallow top right", "", CLR(CLR_GREEN)) /*3*/
+ PCHAR2(91, '|', S_sw_ml, "swallow middle left", "", CLR(CLR_GREEN)) /*4*/
+ PCHAR2(92, '|', S_sw_mr, "swallow middle right", "", CLR(CLR_GREEN)) /*6*/
+ PCHAR2(93, '\\', S_sw_bl, "swallow bottom left", "", CLR(CLR_GREEN)) /*7*/
+ PCHAR2(94, '-', S_sw_bc, "swallow bottom center", "", CLR(CLR_GREEN))/*8*/
+ PCHAR2(95, '/', S_sw_br, "swallow bottom right", "", CLR(CLR_GREEN)) /*9*/
/* */
/* explosion colors are changed by reset_glyphmap() to match */
/* the type of expl. */
/* |@| */
/* \-/ */
/* */
- PCHAR2(94, '/', S_expl_tl, "explosion top left", "", CLR(CLR_ORANGE))
- PCHAR2(95, '-', S_expl_tc, "explosion top center", "", CLR(CLR_ORANGE))
- PCHAR2(96, '\\', S_expl_tr, "explosion top right", "", CLR(CLR_ORANGE))
- PCHAR2(97, '|', S_expl_ml, "explosion middle left", "", CLR(CLR_ORANGE))
- PCHAR2(98, ' ', S_expl_mc, "explosion middle center", "", CLR(CLR_ORANGE))
- PCHAR2(99, '|', S_expl_mr, "explosion middle right", "", CLR(CLR_ORANGE))
- PCHAR2(100, '\\', S_expl_bl, "explosion bottom left", "", CLR(CLR_ORANGE))
- PCHAR2(101, '-', S_expl_bc, "explosion bottom center", "", CLR(CLR_ORANGE))
- PCHAR2(102, '/', S_expl_br, "explosion bottom right", "", CLR(CLR_ORANGE))
+ PCHAR2(96, '/', S_expl_tl, "explosion top left", "", CLR(CLR_ORANGE))
+ PCHAR2(97, '-', S_expl_tc, "explosion top center", "", CLR(CLR_ORANGE))
+ PCHAR2(98, '\\', S_expl_tr, "explosion top right", "", CLR(CLR_ORANGE))
+ PCHAR2(99, '|', S_expl_ml, "explosion middle left", "", CLR(CLR_ORANGE))
+ PCHAR2(100, ' ', S_expl_mc, "explosion middle center", "", CLR(CLR_ORANGE))
+ PCHAR2(101, '|', S_expl_mr, "explosion middle right", "", CLR(CLR_ORANGE))
+ PCHAR2(102, '\\', S_expl_bl, "explosion bottom left", "", CLR(CLR_ORANGE))
+ PCHAR2(103, '-', S_expl_bc, "explosion bottom center", "", CLR(CLR_ORANGE))
+ PCHAR2(104, '/', S_expl_br, "explosion bottom right", "", CLR(CLR_ORANGE))
#undef PCHAR
#undef PCHAR2
#endif /* PCHAR_S_ENUM || PCHAR_PARSE || PCHAR_DRAWING || PCHAR_TILES */
#define trap_to_glyph(trap) \
cmap_to_glyph(trap_to_defsym(((int) (trap)->ttyp)))
+#define engraving_to_glyph(ep) \
+ cmap_to_glyph(engraving_to_defsym(ep))
+
/* Not affected by hallucination. Gives a generic body for CORPSE */
/* MRKR: ...and the generic statue */
#define objnum_to_glyph(onum) ((int) (onum) + GLYPH_OBJ_OFF)
#ifndef ENGRAVE_H
#define ENGRAVE_H
+enum engraving_texts { actual_text, remembered_text, pristine_text, text_states };
+
struct engr {
struct engr *nxt_engr;
- char *engr_txt;
+ char *engr_txt[text_states];
coordxy engr_x, engr_y;
- unsigned engr_lth; /* for save & restore; not length of text */
+ unsigned engr_szeach; /* length of text including trailing NUL */
+ unsigned engr_alloc; /* for save & restore; not length of text */
long engr_time; /* moment engraving was (will be) finished */
xint8 engr_type;
#define DUST 1
* even when hero isn't (so behaves similarly
* to how Elbereth did in 3.4.3) */
Bitfield(nowipeout, 1); /* this engraving will not degrade */
- /* 6 free bits */
+ Bitfield(eread, 1); /* the engraving text has been read or felt */
+ /* 5 free bits */
};
#define newengr(lth) \
(struct engr *) alloc((unsigned) (lth) + (unsigned) sizeof (struct engr))
#define dealloc_engr(engr) free((genericptr_t) (engr))
+#define engraving_to_defsym(ep) \
+ (levl[(ep)->engr_x][(ep)->engr_y].typ == CORR ? S_engrcorr : S_engroom)
+
#endif /* ENGRAVE_H */
extern void rloc_engr(struct engr *);
extern void make_grave(coordxy, coordxy, const char *);
extern void disturb_grave(coordxy, coordxy);
+extern void map_engraving(struct engr *, int);
+extern void see_engraving(struct engr *);
+extern void feel_engraving(struct engr *);
/* ### exper.c ### */
return ECMD_OK;
}
-/* the #wizmap command - reveal the level map and any traps on it */
+/* the #wizmap command - reveal the level map
+ and any traps or engravings on it */
static int
wiz_map(void)
{
if (wizard) {
struct trap *t;
+ struct engr *ep;
long save_Hconf = HConfusion, save_Hhallu = HHallucination;
HConfusion = HHallucination = 0L;
t->tseen = 1;
map_trap(t, TRUE);
}
+ for (ep = head_engr; ep != 0; ep = ep->nxt_engr) {
+ map_engraving(ep, TRUE);
+ }
do_mapping();
HConfusion = save_Hconf;
HHallucination = save_Hhallu;
{
struct rm *lev;
struct trap *t;
+ struct engr *ep;
int oldglyph;
if (Confusion && rn2(7))
if (!IS_FURNITURE(lev->typ)) {
if ((t = t_at(x, y)) != 0 && t->tseen) {
map_trap(t, 1);
+ } else if ((ep = engr_at(x,y)) != 0) {
+ map_engraving(ep, 1);
} else if (glyph_is_trap(oldglyph) || glyph_is_object(oldglyph)) {
show_glyph(x, y, oldglyph);
if (gl.level.flags.hero_memory)
*
* map_background
* map_object
- * map_trap
+ * map_trap or map_engraving
* map_invisible
* unmap_object
*
show_glyph(x, y, glyph);
}
+/*
+ * map_engraving()
+ *
+ * Map the engraving and print it out if directed.
+ */
+void
+map_engraving(struct engr *ep, register int show)
+{
+ coordxy x = ep->engr_x, y = ep->engr_y;
+ int glyph = engraving_to_glyph(ep);
+
+ if (gl.level.flags.hero_memory)
+ levl[x][y].glyph = glyph;
+ if (show)
+ show_glyph(x, y, glyph);
+}
+
/*
* map_object()
*
unmap_object(register coordxy x, register coordxy y)
{
register struct trap *trap;
+ struct engr *ep;
if (!gl.level.flags.hero_memory)
return;
if ((trap = t_at(x, y)) != 0 && trap->tseen && !covers_traps(x, y)) {
map_trap(trap, 0);
+ } else if ((ep = engr_at(x, y)) != 0 && !covers_traps(x, y)) {
+ map_engraving(ep, 0);
} else if (levl[x][y].seenv) {
struct rm *lev = &levl[x][y];
{ \
register struct obj *obj; \
register struct trap *trap; \
+ struct engr *ep; \
\
if ((obj = vobj_at(x, y)) && !covers_objects(x, y)) \
map_object(obj, show); \
else if ((trap = t_at(x, y)) && trap->tseen && !covers_traps(x, y)) \
map_trap(trap, show); \
+ else if ((ep = engr_at(x, y)) && !covers_traps(x, y)) \
+ map_engraving(ep, show); \
else \
map_background(x, y, show); \
\
struct engr *
engr_at(coordxy x, coordxy y)
{
- register struct engr *ep = head_engr;
+ struct engr *ep = head_engr;
while (ep) {
if (x == ep->engr_x && y == ep->engr_y)
struct engr *ep = engr_at(x, y);
if (ep && ep->engr_type != HEADSTONE && ep->engr_time <= gm.moves) {
- if (strict ? !strcmpi(ep->engr_txt, s)
- : (strstri(ep->engr_txt, s) != 0))
+ if (strict ? !strcmpi(ep->engr_txt[actual_text], s)
+ : (strstri(ep->engr_txt[actual_text], s) != 0))
return ep;
}
return (struct engr *) NULL;
cnt = rn2(1 + 50 / (cnt + 1)) ? 0 : 1;
debugpline1("actually eroding %d characters", cnt);
}
- wipeout_text(ep->engr_txt, (int) cnt, 0);
- while (ep->engr_txt[0] == ' ')
- ep->engr_txt++;
- if (!ep->engr_txt[0])
+ wipeout_text(ep->engr_txt[actual_text], (int) cnt, 0);
+ while (ep->engr_txt[actual_text][0] == ' ')
+ ep->engr_txt[actual_text]++;
+ if (!ep->engr_txt[actual_text][0])
del_engr(ep);
}
}
/* Sensing an engraving does not require sight,
* nor does it necessarily imply comprehension (literacy).
*/
- if (ep && ep->engr_txt[0]) {
+ if (ep && ep->engr_txt[actual_text][0]) {
switch (ep->engr_type) {
case DUST:
if (!Blind) {
/* sizeof "literal" counts terminating \0 */
- sizeof "You feel the words: \"\".");
- if ((int) strlen(ep->engr_txt) > maxelen) {
- (void) strncpy(buf, ep->engr_txt, maxelen);
+ if ((int) strlen(ep->engr_txt[actual_text]) > maxelen) {
+ (void) strncpy(buf, ep->engr_txt[actual_text], maxelen);
buf[maxelen] = '\0';
et = buf;
} else {
- et = ep->engr_txt;
+ et = ep->engr_txt[actual_text];
}
You("%s: \"%s\".", (Blind) ? "feel the words" : "read", et);
+ Strcpy(ep->engr_txt[remembered_text], ep->engr_txt[actual_text]);
+ ep->eread = 1;
if (gc.context.run > 0)
nomul(0);
}
void
make_engr_at(coordxy x, coordxy y, const char *s, long e_time, xint16 e_type)
{
+ int i;
struct engr *ep;
unsigned smem = Strlen(s) + 1;
if ((ep = engr_at(x, y)) != 0)
del_engr(ep);
- ep = newengr(smem);
- (void) memset((genericptr_t) ep, 0, smem + sizeof (struct engr));
+
+ ep = newengr(smem * 3);
+ (void) memset((genericptr_t) ep, 0, (smem * 3) + sizeof (struct engr));
ep->nxt_engr = head_engr;
head_engr = ep;
ep->engr_x = x;
ep->engr_y = y;
- ep->engr_txt = (char *) (ep + 1);
- Strcpy(ep->engr_txt, s);
+ ep->engr_txt[actual_text] = (char *) (ep + 1);
+ ep->engr_txt[remembered_text] = ep->engr_txt[actual_text] + smem;
+ ep->engr_txt[pristine_text] = ep->engr_txt[remembered_text] + smem;
+ for(i = 0; i < text_states; ++i)
+ Strcpy(ep->engr_txt[i], s);
if (!strcmp(s, "Elbereth")) {
/* engraving "Elbereth": if done when making a level, it creates
an old-style Elbereth that deters monsters when any objects are
}
ep->engr_time = e_time;
ep->engr_type = e_type > 0 ? e_type : rnd(N_ENGRAVE - 1);
- ep->engr_lth = smem;
+ ep->engr_szeach = smem;
+ ep->engr_alloc = smem * 3;
+ /* we do not set ep->eread; the caller will need to if required */
}
/* delete any engraving at location <x,y> */
boolean ptext = TRUE; /* TRUE if we must prompt for engrave text */
boolean teleengr = FALSE; /* TRUE if we move the old engraving */
boolean zapwand = FALSE; /* TRUE if we remove a wand charge */
+ boolean disprefresh = FALSE; /* TRUE if the display needs a refresh */
+
xint16 type = DUST; /* Type of engraving made */
xint16 oetype = 0; /* will be set to type of current engraving */
char buf[BUFSZ]; /* Buffer for final/poly engraving text */
}
if (teleengr) {
rloc_engr(oep);
+ oep->eread = 0;
+ disprefresh = TRUE;
oep = (struct engr *) 0;
}
if (dengr) {
del_engr(oep);
oep = (struct engr *) 0;
+ disprefresh = TRUE;
}
/* Something has changed the engraving here */
if (*buf) {
+ struct engr *tmp_ep;
+
make_engr_at(u.ux, u.uy, buf, gm.moves, type);
- if (!Blind)
- pline_The("engraving now reads: \"%s\".", buf);
+ tmp_ep = engr_at(u.ux, u.uy);
+ if (!Blind) {
+ if (tmp_ep != 0) {
+ pline_The("engraving now reads: \"%s\".", buf);
+ tmp_ep->eread = 1;
+ disprefresh = TRUE;
+ }
+ }
ptext = FALSE;
}
if (zapwand && (otmp->spe < 0)) {
if (!ptext) {
if (otmp && otmp->oclass == WAND_CLASS && !can_reach_floor(TRUE))
cant_reach_floor(u.ux, u.uy, FALSE, TRUE);
+ if (disprefresh)
+ newsym(u.ux, u.uy);
return ECMD_TIME;
}
/*
: "written");
del_engr(oep);
oep = (struct engr *) 0;
+ disprefresh = TRUE;
} else {
/* defer deletion until after we *know* we're engraving */
eow = TRUE;
You("will overwrite the current message.");
eow = TRUE;
}
- } else if (oep && (int) strlen(oep->engr_txt) >= BUFSZ - 1) {
+ } else if (oep && (int) strlen(oep->engr_txt[actual_text]) >= BUFSZ - 1) {
There("is no room to add anything else here.");
return ECMD_TIME;
}
if (eow) {
del_engr(oep);
oep = (struct engr *) 0;
+ disprefresh = TRUE;
}
Strcpy(gc.context.engraving.text, ebuf);
/* Engraving will always take at least one action via being run as an
* occupation, so do not count this setup as taking time. */
+ if (disprefresh)
+ newsym(u.ux, u.uy);
return ECMD_OK;
}
boolean firsttime = (gc.context.engraving.actionct == 0);
int rate = 10; /* # characters that can be engraved in this action */
boolean truncate = FALSE;
+ boolean neweng = (gc.context.engraving.actionct == 0);
boolean carving = (gc.context.engraving.type == ENGRAVE
|| gc.context.engraving.type == HEADSTONE);
buf[0] = '\0';
oep = engr_at(u.ux, u.uy);
if (oep) /* add to existing engraving */
- Strcpy(buf, oep->engr_txt);
+ Strcpy(buf, oep->engr_txt[actual_text]);
space_left = (int) (sizeof buf - strlen(buf) - 1U);
if (endc - gc.context.engraving.nextc > space_left) {
(void) strncat(buf, gc.context.engraving.nextc,
min(space_left, endc - gc.context.engraving.nextc));
make_engr_at(u.ux, u.uy, buf, gm.moves - gm.multi, gc.context.engraving.type);
+ oep = engr_at(u.ux, u.uy);
+ if (oep)
+ oep->eread = 1;
if (*endc) {
gc.context.engraving.nextc = endc;
+ if (neweng) {
+ newsym(gc.context.engraving.pos.x, gc.context.engraving.pos.y);
+ }
return 1; /* not yet finished this turn */
} else { /* finished engraving */
/* actions that happen after the engraving is finished go here */
gc.context.engraving.nextc = (char *) 0;
gc.context.engraving.stylus = (struct obj *) 0;
}
+ if (neweng)
+ newsym(gc.context.engraving.pos.x, gc.context.engraving.pos.y);
return 0;
}
struct engr *ep;
for (ep = head_engr; ep; ep = ep->nxt_engr) {
- sanitize_name(ep->engr_txt);
+ sanitize_name(ep->engr_txt[actual_text]);
}
}
for (ep = head_engr; ep; ep = ep2) {
ep2 = ep->nxt_engr;
- if (ep->engr_lth && ep->engr_txt[0] && perform_bwrite(nhfp)) {
+ if (ep->engr_alloc
+ && ep->engr_txt[actual_text][0] && perform_bwrite(nhfp)) {
if (nhfp->structlevel) {
- bwrite(nhfp->fd, (genericptr_t)&(ep->engr_lth),
- sizeof ep->engr_lth);
+ bwrite(nhfp->fd, (genericptr_t)&(ep->engr_alloc),
+ sizeof ep->engr_alloc);
bwrite(nhfp->fd, (genericptr_t)ep,
- sizeof (struct engr) + ep->engr_lth);
+ sizeof (struct engr) + ep->engr_alloc);
}
}
if (release_data(nhfp))
}
ep->nxt_engr = head_engr;
head_engr = ep;
- ep->engr_txt = (char *) (ep + 1); /* Andreas Bormann */
+ ep->engr_txt[actual_text] = (char *) (ep + 1); /* Andreas Bormann */
+ ep->engr_txt[remembered_text] = ep->engr_txt[actual_text] + ep->engr_szeach;
+ ep->engr_txt[pristine_text] = ep->engr_txt[remembered_text] + ep->engr_szeach;
+ while (ep->engr_txt[actual_text][0] == ' ')
+ ep->engr_txt[actual_text]++;
+ while (ep->engr_txt[remembered_text][0] == ' ')
+ ep->engr_txt[remembered_text]++;
/* mark as finished for bones levels -- no problem for
* normal levels as the player must have finished engraving
* to be able to move again */
*count = *size = 0L;
for (ep = head_engr; ep; ep = ep->nxt_engr) {
++*count;
- *size += (long) sizeof *ep + (long) ep->engr_lth;
+ *size += (long) sizeof *ep + (long) ep->engr_alloc;
}
}
ep->engr_x = tx;
ep->engr_y = ty;
+ newsym(tx, ty); /* caller took care of the old location */
}
/* Create a headstone at the given location.
}
}
+void
+see_engraving(struct engr *ep)
+{
+ newsym(ep->engr_x, ep->engr_y);
+}
+
+/* like see_engravings() but overrides vision, but
+ only for some types of engravings that can be felt */
+void
+feel_engraving(struct engr *ep)
+{
+ ep->eread = 1;
+ map_engraving(ep, 1);
+ /* in case it's beneath something, redisplay the something */
+ newsym(ep->engr_x, ep->engr_y);
+}
+
static const char blind_writing[][21] = {
{0x44, 0x66, 0x6d, 0x69, 0x62, 0x65, 0x22, 0x45, 0x7b, 0x71,
0x65, 0x6d, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
extern void port_help(void);
#endif
static char *setopt_cmd(char *);
+static boolean add_quoted_engraving(coordxy, coordxy, char *);
static const char invisexplain[] = "remembered, unseen, creature",
altinvisexplain[] = "unseen creature"; /* for clairvoyance */
case S_ice: /* for hallucination; otherwise defsyms[] would be fine */
Strcpy(buf, waterbody_name(x, y));
break;
+ case S_engroom:
+ case S_engrcorr:
+ Strcpy(buf, "engraving");
+ break;
case S_stone:
if (!levl[x][y].seenv) {
Strcpy(buf, "unexplored");
: !(alt_i == S_stone
|| strcmp(x_str, "air") == 0
|| strcmp(x_str, "land") == 0);
+
+ if (alt_i == S_engroom || alt_i == S_engrcorr) {
+ article = 1;
+ x_str = "engraving";
+ need_to_look = TRUE;
+ }
found = add_cmap_descr(found, alt_i, glyph, article,
cc, x_str, prefix,
&hit_trap, firstmatch, out_str);
if (look_buf[0] != '\0')
*firstmatch = look_buf;
if (*(*firstmatch)) {
- Snprintf(temp_buf, sizeof temp_buf, " (%s)", *firstmatch);
- (void) strncat(out_str, temp_buf,
- BUFSZ - strlen(out_str) - 1);
+ if (strncmp(look_buf, "engraving", 9) != 0) {
+ Snprintf(temp_buf, sizeof temp_buf, " (%s)", *firstmatch);
+ (void) strncat(out_str, temp_buf,
+ BUFSZ - strlen(out_str) - 1);
+ }
found = 1; /* we have something to look up */
}
if (monbuf[0]) {
return found;
}
+static boolean
+add_quoted_engraving(coordxy x, coordxy y, char *buf)
+{
+ char temp_buf[BUFSZ];
+ struct engr *ep = engr_at(x, y);
+
+ if (ep) {
+ if (ep->eread)
+ Snprintf(temp_buf, sizeof temp_buf, " with remembered text: \"%s\"",
+ ep->engr_txt[remembered_text]);
+ else
+ Snprintf(temp_buf, sizeof temp_buf, " that you've never read");
+ (void) strncat(buf, temp_buf, BUFSZ - strlen(buf) - 1);
+ return TRUE;
+ }
+ return FALSE;
+}
+
/* also used by getpos hack in do_name.c */
const char what_is_an_unknown_object[] = "an unknown object";
/* Finally, print out our explanation. */
if (found) {
+ if (ans != LOOK_QUICK && ans != LOOK_ONCE
+ && (ans == LOOK_VERBOSE || (flags.help && !quick))
+ && !clicklook
+ && !strncmp(firstmatch, "engraving", 9)) {
+ char engbuf[BUFSZ];
+
+ engbuf[0] = '\0';
+ if (add_quoted_engraving(cc.x, cc.y, engbuf)) {
+ Snprintf(eos(out_str), BUFSZ - strlen(out_str) - 1,
+ engbuf);
+ }
+ }
/* use putmixed() because there may be an encoded glyph present */
putmixed(WIN_MESSAGE, 0, out_str);
#ifdef DUMPLOG
.A.A.A.A.A.A.A.A
A.A.A.A.A.A.A.A.
}
-# tile 21 (corridor)
+# tile 21 (engraved part of a room)
+{
+ ................
+ ................
+ ...E...E........
+ ....E...E.......
+ .........E..E...
+ ..........E.....
+ ................
+ .......PP.......
+ .......PP.......
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+}
+# tile 22 (corridor)
{
................
................
................
................
}
-# tile 22 (lit corridor)
+# tile 23 (lit corridor)
{
................
................
................
................
}
-# tile 23 (staircase up)
+# tile 24 (engraved part of a corridor)
+{
+ ................
+ ...E...E........
+ ....E...E.......
+ .........E..E...
+ ..........E.....
+ ................
+ .......PP.......
+ ......PPPP......
+ ......PPPP......
+ .......PP.......
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+}
+# tile 25 (staircase up)
{
AAAAAAAAAAAAAA.A
AADJJJJJJJJJDA.A
AAAAAAAAAAAAAA.A
AAAAAAAAAAAAAAAA
}
-# tile 24 (staircase down)
+# tile 26 (staircase down)
{
AAAAAAAAAAAAAA.A
AADJJJJJJJJJDA.A
AAAAAAAAAAAAAA.A
AAAAAAAAAAAAAAAA
}
-# tile 25 (ladder up)
+# tile 27 (ladder up)
{
ADAAAAAAAAAAAD.A
AADAAAANAAAADA.A
AAAAAAAAAAAAAA.A
AAAAAAAAAAAAAAAA
}
-# tile 26 (ladder down)
+# tile 28 (ladder down)
{
ADAAAAAAAAAAAD.A
AADAAAANAAAADA.A
AAAAAAAAAAAAAA.A
AAAAAAAAAAAAAAAA
}
-# tile 27 (branch staircase up)
+# tile 29 (branch staircase up)
{
AAAAAAAAAAAAAA.A
AADJJJJJJJJJDA.A
AAAAAAAAAAAAAA.A
AAAAAAAAAAAAAAAA
}
-# tile 28 (branch staircase down)
+# tile 30 (branch staircase down)
{
AAAAAAAAAAAAAA.A
AADJJJJJJJJJDA.A
AAAAAAAAAAAAAA.A
AAAAAAAAAAAAAAAA
}
-# tile 29 (branch ladder up)
+# tile 31 (branch ladder up)
{
ADAAAAAAAAAAAD.A
AADAAAAHAAAADA.A
AAAAAAAAAAAAAA.A
AAAAAAAAAAAAAAAA
}
-# tile 30 (branch ladder down)
+# tile 32 (branch ladder down)
{
ADAAAAAAAAAAAD.A
AADAAAAHAAAADA.A
AAAAAAAAAAAAAA.A
AAAAAAAAAAAAAAAA
}
-# tile 31 (unaligned altar)
+# tile 33 (unaligned altar)
{
................
................
...AAAAAAAAAAA..
................
}
-# tile 32 (chaotic altar)
+# tile 34 (chaotic altar)
{
................
................
...AAAAAAAAAAA..
................
}
-# tile 33 (neutral altar)
+# tile 35 (neutral altar)
{
................
................
...AAAAAAAAAAA..
................
}
-# tile 34 (lawful altar)
+# tile 36 (lawful altar)
{
................
................
...AAAAAAAAAAA..
................
}
-# tile 35 (other altar)
+# tile 37 (other altar)
{
................
................
...AAAAAAAAAAA..
................
}
-# tile 36 (grave)
+# tile 38 (grave)
{
................
................
FFFFFFFFFFFFFFF.
................
}
-# tile 37 (throne)
+# tile 39 (throne)
{
................
.....HHHHH......
................
................
}
-# tile 38 (sink)
+# tile 40 (sink)
{
................
................
................
................
}
-# tile 39 (fountain)
+# tile 41 (fountain)
{
....E....E......
..EEEE..EEE.....
....AAAAAAAAA...
................
}
-# tile 40 (pool)
+# tile 42 (pool)
{
..........NNN...
.EEEE....NE.EN..
.E..EE...E..EEE.
EE....EEE.....EE
}
-# tile 41 (ice)
+# tile 43 (ice)
{
NNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNN
}
-# tile 42 (molten lava)
+# tile 44 (molten lava)
{
DDDDDDCDDDDDDDDD
DDDDDCDKDDDDDDDD
DDDDKKDDDDCDDDDD
DDDDDDDDDDDKDDDD
}
-# tile 43 (wall of lava)
+# tile 45 (wall of lava)
{
DDDDDDCDDDDDDDDD
DDDDDCHKDDCDDDDD
DDDDHKDHCDCDHDDD
DDDDDDDDDDDKDDDD
}
-# tile 44 (vertical open drawbridge)
+# tile 46 (vertical open drawbridge)
{
EKKAKKKKKKKAKKAE
EJKKKKKKKKKKKJAA
EEJJJJJJJJJJJAAA
EJKKKKKKKKKKKJAA
}
-# tile 45 (horizontal open drawbridge)
+# tile 47 (horizontal open drawbridge)
{
EEEEEEEEEEEEEEEE
JEJKJEJKJEJKJEJK
AAAAAAAAAAAAAAAA
AAAEAAAEAAAEAAAE
}
-# tile 46 (vertical closed drawbridge)
+# tile 48 (vertical closed drawbridge)
{
................
..JKJ.JKJ.JKJ...
...AAA.AAA.AAA..
................
}
-# tile 47 (horizontal closed drawbridge)
+# tile 49 (horizontal closed drawbridge)
{
................
..JJJJJJJJJJJ...
...AAAAAAAAAAA..
................
}
-# tile 48 (air)
+# tile 50 (air)
{
BBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBB
}
-# tile 49 (cloud)
+# tile 51 (cloud)
{
BBBBBBBBBBBBBBBB
BBBBBNNNNNNNBBBB
BBBBBBOOOOBBBBBB
BBBBBBBBBBBBBBBB
}
-# tile 50 (water)
+# tile 52 (water)
{
EEEEEEEEEEEEEEEE
EEEEEEEEEEEEEEEE
EEEEEEEEEEEEEEEE
EEEEEEEEEEEEEEEE
}
-# tile 51 (arrow trap)
+# tile 53 (arrow trap)
{
................
.....DDDDD......
......AAAAA.....
................
}
-# tile 52 (dart trap)
+# tile 54 (dart trap)
{
................
.....DDDDD......
......AAAAA.....
................
}
-# tile 53 (falling rock trap)
+# tile 55 (falling rock trap)
{
................
.....DDDDD......
......AAAAA.....
................
}
-# tile 54 (squeaky board)
+# tile 56 (squeaky board)
{
................
.....DDDDD......
......AAAAA.....
................
}
-# tile 55 (bear trap)
+# tile 57 (bear trap)
{
................
.....DDDDD......
......AAAAA.....
................
}
-# tile 56 (land mine)
+# tile 58 (land mine)
{
................
.....DDDDD......
......AAAAA.....
................
}
-# tile 57 (rolling boulder trap)
+# tile 59 (rolling boulder trap)
{
................
.....DDDDD......
......AAAAA.....
................
}
-# tile 58 (sleeping gas trap)
+# tile 60 (sleeping gas trap)
{
................
.....DDDDD......
......AAAAA.....
................
}
-# tile 59 (rust trap)
+# tile 61 (rust trap)
{
................
.....DDDDD......
......AAAAA.....
................
}
-# tile 60 (fire trap)
+# tile 62 (fire trap)
{
................
.....DDDDD......
......AAAAA.....
................
}
-# tile 61 (pit)
+# tile 63 (pit)
{
AAAAAAAAAAAAAAAA
A.AAAAAAAAAAAABA
A.PPPPPPPPPPPPPA
AAAAAAAAAAAAAAAA
}
-# tile 62 (spiked pit)
+# tile 64 (spiked pit)
{
AAAAAAAAAAAAAAAA
A.AAAAAAAAAAAABA
A.PPPPPPPPPPPPPA
AAAAAAAAAAAAAAAA
}
-# tile 63 (hole)
+# tile 65 (hole)
{
................
......AAAA......
................
................
}
-# tile 64 (trap door)
+# tile 66 (trap door)
{
AAAAAAAAAAAAAAAA
A.AAAAAAAAAAAABA
A.PPPPPPPPPPPPPA
AAAAAAAAAAAAAAAA
}
-# tile 65 (teleportation trap)
+# tile 67 (teleportation trap)
{
................
.....DDDDD......
......AAAAA.....
................
}
-# tile 66 (level teleporter)
+# tile 68 (level teleporter)
{
................
.....DDADD......
......AAAAA.....
................
}
-# tile 67 (magic portal)
+# tile 69 (magic portal)
{
................
.....DDDDD......
......AAAAA.....
................
}
-# tile 68 (web)
+# tile 70 (web)
{
OAOA.OA...O....O
.O.NNNN.NOA..OOA
.OA.............
OA..............
}
-# tile 69 (statue trap)
+# tile 71 (statue trap)
{
................
.....DDDDD......
......AAAAA.....
................
}
-# tile 70 (magic trap)
+# tile 72 (magic trap)
{
................
.....DDDDD......
......AAAAA.....
................
}
-# tile 71 (anti-magic field)
+# tile 73 (anti-magic field)
{
................
......DDDDD.....
.....AAAAA......
................
}
-# tile 72 (polymorph trap)
+# tile 74 (polymorph trap)
{
................
.....DDDDD......
......AAAAA.....
................
}
-# tile 73 (vibrating square)
+# tile 75 (vibrating square)
{
................
................
................
................
}
-# tile 74 (trapped door)
+# tile 76 (trapped door)
{
AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA
}
-# tile 75 (trapped chest)
+# tile 77 (trapped chest)
{
................
................
CKKKKKKKKKKJAA..
.NAAAAAAAAAAA...
}
-# tile 76 (missile zap 1 0)
+# tile 78 (missile zap 1 0)
{
.......II.......
......IIII......
......IIII......
.......II.......
}
-# tile 77 (missile zap 1 1)
+# tile 79 (missile zap 1 1)
{
................
................
................
................
}
-# tile 78 (missile zap 1 2)
+# tile 80 (missile zap 1 2)
{
III.............
IIII............
............IIII
.............III
}
-# tile 79 (missile zap 1 3)
+# tile 81 (missile zap 1 3)
{
.............III
............IIII
IIII............
III.............
}
-# tile 80 (fire zap 2 0)
+# tile 82 (fire zap 2 0)
{
.......CC.......
......CCCC......
......CCCC......
.......CC.......
}
-# tile 81 (fire zap 2 1)
+# tile 83 (fire zap 2 1)
{
................
................
................
................
}
-# tile 82 (fire zap 2 2)
+# tile 84 (fire zap 2 2)
{
CCC.............
CCCC............
............CCCC
.............CCC
}
-# tile 83 (fire zap 2 3)
+# tile 85 (fire zap 2 3)
{
.............CCC
............CCCC
CCCC............
CCC.............
}
-# tile 84 (frost zap 3 0)
+# tile 86 (frost zap 3 0)
{
.......NN.......
......NNNN......
......NNNN......
.......NN.......
}
-# tile 85 (frost zap 3 1)
+# tile 87 (frost zap 3 1)
{
................
................
................
................
}
-# tile 86 (frost zap 3 2)
+# tile 88 (frost zap 3 2)
{
NNN.............
NNNN............
............NNNN
.............NNN
}
-# tile 87 (frost zap 3 3)
+# tile 89 (frost zap 3 3)
{
.............NNN
............NNNN
NNNN............
NNN.............
}
-# tile 88 (sleep zap 4 0)
+# tile 90 (sleep zap 4 0)
{
.......BB.......
......BBBB......
......BBBB......
.......BB.......
}
-# tile 89 (sleep zap 4 1)
+# tile 91 (sleep zap 4 1)
{
................
................
................
................
}
-# tile 90 (sleep zap 4 2)
+# tile 92 (sleep zap 4 2)
{
BBB.............
BBBB............
............BBBB
.............BBB
}
-# tile 91 (sleep zap 4 3)
+# tile 93 (sleep zap 4 3)
{
.............BBB
............BBBB
BBBB............
BBB.............
}
-# tile 92 (death zap 5 0)
+# tile 94 (death zap 5 0)
{
.......AA.......
......AAAA......
......AAAA......
.......AA.......
}
-# tile 93 (death zap 5 1)
+# tile 95 (death zap 5 1)
{
................
................
................
................
}
-# tile 94 (death zap 5 2)
+# tile 96 (death zap 5 2)
{
AAA.............
AAAA............
............AAAA
.............AAA
}
-# tile 95 (death zap 5 3)
+# tile 97 (death zap 5 3)
{
.............AAA
............AAAA
AAAA............
AAA.............
}
-# tile 96 (lightning zap 6 0)
+# tile 98 (lightning zap 6 0)
{
.......NN.......
......NNNN......
......NNNN......
.......NN.......
}
-# tile 97 (lightning zap 6 1)
+# tile 99 (lightning zap 6 1)
{
................
................
................
................
}
-# tile 98 (lightning zap 6 2)
+# tile 100 (lightning zap 6 2)
{
NNN.............
NNNN............
............NNNN
.............NNN
}
-# tile 99 (lightning zap 6 3)
+# tile 101 (lightning zap 6 3)
{
.............NNN
............NNNN
NNNN............
NNN.............
}
-# tile 100 (poison gas zap 7 0)
+# tile 102 (poison gas zap 7 0)
{
.......FF.......
......FFFF......
......FFFF......
.......FF.......
}
-# tile 101 (poison gas zap 7 1)
+# tile 103 (poison gas zap 7 1)
{
................
................
................
................
}
-# tile 102 (poison gas zap 7 2)
+# tile 104 (poison gas zap 7 2)
{
FFF.............
FFFF............
............FFFF
.............FFF
}
-# tile 103 (poison gas zap 7 3)
+# tile 105 (poison gas zap 7 3)
{
.............FFF
............FFFF
FFFF............
FFF.............
}
-# tile 104 (acid zap 8 0)
+# tile 106 (acid zap 8 0)
{
.......GG.......
......GGGG......
......GGGG......
.......GG.......
}
-# tile 105 (acid zap 8 1)
+# tile 107 (acid zap 8 1)
{
................
................
................
................
}
-# tile 106 (acid zap 8 2)
+# tile 108 (acid zap 8 2)
{
GGG.............
GGGG............
............GGGG
.............GGG
}
-# tile 107 (acid zap 8 3)
+# tile 109 (acid zap 8 3)
{
.............GGG
............GGGG
GGGG............
GGG.............
}
-# tile 108 (dig beam)
+# tile 110 (dig beam)
{
....AAAA........
..A....AA..AA...
....AA....AAA...
................
}
-# tile 109 (flash beam)
+# tile 111 (flash beam)
{
................
.....NNNNNN.....
.....NNNNNN.....
................
}
-# tile 110 (boom left)
+# tile 112 (boom left)
{
................
................
................
................
}
-# tile 111 (boom right)
+# tile 113 (boom right)
{
................
................
................
................
}
-# tile 112 (shield1)
+# tile 114 (shield1)
{
................
.....I....I.....
.....I....I.....
................
}
-# tile 113 (shield2)
+# tile 115 (shield2)
{
................
.CCCCCCCCCCCCCCC
.CCCCCCCCCCCCCC.
................
}
-# tile 114 (shield3)
+# tile 116 (shield3)
{
.......HH.......
.......HH.......
.......HH.......
.......HH.......
}
-# tile 115 (shield4)
+# tile 117 (shield4)
{
................
......NNNNN.....
.....NNNNN......
................
}
-# tile 116 (poison cloud)
+# tile 118 (poison cloud)
{
BBBBBBBBBBBBBBBB
BBBBBFFFFFFFBBBB
BBBBBBGGGGBBBBBB
BBBBBBBBBBBBBBBB
}
-# tile 117 (valid position)
+# tile 119 (valid position)
{
................
................
.......FF.......
................
}
-# tile 118 (swallow top left)
+# tile 120 (swallow top left)
{
AAAAAAADDDDDDAAA
AAAAADDDDDDDDDDD
AAAADDDDDD......
AAAADDDDDD......
}
-# tile 119 (swallow top center)
+# tile 121 (swallow top center)
{
AAAAAAAAAAAAAAAA
DDAAAAAAAAAAAAAA
................
................
}
-# tile 120 (swallow top right)
+# tile 122 (swallow top right)
{
AAAAAAAAAAAAAAAA
AAADDDDDAAAAAAAA
....DDDDDDDDDDDD
....DDDDDDDDDDDA
}
-# tile 121 (swallow middle left)
+# tile 123 (swallow middle left)
{
AAAADDDDDD......
AAAADDDDDDD.....
DDDDDDD.........
DDCCDDD.........
}
-# tile 122 (swallow middle right)
+# tile 124 (swallow middle right)
{
....DDDDDDDDDDDA
....DDDDDDDDDDDA
......DDDDDDDDAA
.......DDDDDDDAA
}
-# tile 123 (swallow bottom left)
+# tile 125 (swallow bottom left)
{
DDDCDDD.........
DDDCDDD.........
AAAAAAAAAAAADDDD
AAAAAAAAAAAAAADD
}
-# tile 124 (swallow bottom center)
+# tile 126 (swallow bottom center)
{
................
................
DDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDAA
}
-# tile 125 (swallow bottom right)
+# tile 127 (swallow bottom right)
{
......DDDDDDDDAA
......DDDDDDDDDA
DDAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA
}
-# tile 126 (explosion dark top left)
+# tile 128 (explosion dark top left)
{
................
................
..AAAA..AAAA....
..AAA..AAAAA....
}
-# tile 127 (explosion dark top center)
+# tile 129 (explosion dark top center)
{
................
................
........A.A.APAA
.PA...APAAAAAAAA
}
-# tile 128 (explosion dark top right)
+# tile 130 (explosion dark top right)
{
................
................
AA.A..A.AAAA....
A.AA..A.AAAAA...
}
-# tile 129 (explosion dark middle left)
+# tile 131 (explosion dark middle left)
{
..AAA.A.AAA.....
..AAA.AAAAA.AP..
..A.A...AAP...PA
....A.........PA
}
-# tile 130 (explosion dark middle center)
+# tile 132 (explosion dark middle center)
{
APAAA..PPAPAAAAA
.APA..A.AAAPAAA.
AAAAAAAAAAAAA.AA
AAAAAAAAAAA.HH..
}
-# tile 131 (explosion dark middle right)
+# tile 133 (explosion dark middle right)
{
..AAA.A.A.AAAA..
..AAAAA.A.AAAA..
AAA...AAAAAAA...
....PPAAAAAAAA..
}
-# tile 132 (explosion dark bottom left)
+# tile 134 (explosion dark bottom left)
{
....A.......A..P
....A.......AA..
................
................
}
-# tile 133 (explosion dark bottom center)
+# tile 135 (explosion dark bottom center)
{
PPPAAAAAPAAA.A..
AAPPAAPPPPA.A...
................
................
}
-# tile 134 (explosion dark bottom right)
+# tile 136 (explosion dark bottom right)
{
....P..AAAAAAA..
..A..A.AA.A.AA..
................
................
}
-# tile 135 (explosion noxious top left)
+# tile 137 (explosion noxious top left)
{
................
................
..FFFF..FFFF....
..FFF..FFFFF....
}
-# tile 136 (explosion noxious top center)
+# tile 138 (explosion noxious top center)
{
................
................
........F.F.FGFF
.GH...HGHHFFFFFF
}
-# tile 137 (explosion noxious top right)
+# tile 139 (explosion noxious top right)
{
................
................
FF.F..F.FFFF....
F.FF..F.FFFFF...
}
-# tile 138 (explosion noxious middle left)
+# tile 140 (explosion noxious middle left)
{
..FFF.F.FFF.....
..FFF.FFFFF.FG..
..F.F...FHG...GH
....F.........GH
}
-# tile 139 (explosion noxious middle center)
+# tile 141 (explosion noxious middle center)
{
FGHFF..GGFGHFFFF
.HGH..F.FFHGFHF.
HHHHNHNHN.GGG.GF
GGGGNHHHGGG.HH..
}
-# tile 140 (explosion noxious middle right)
+# tile 142 (explosion noxious middle right)
{
..FFF.F.F.FFFF..
..FFFFF.F.FFFF..
HFH...FFFFFFF...
....GGFFFFFFFF..
}
-# tile 141 (explosion noxious bottom left)
+# tile 143 (explosion noxious bottom left)
{
....F.......H..G
....F.......FH..
................
................
}
-# tile 142 (explosion noxious bottom center)
+# tile 144 (explosion noxious bottom center)
{
GGGHHHHHGHHH.H..
HHGGHHGGGGH.F...
................
................
}
-# tile 143 (explosion noxious bottom right)
+# tile 145 (explosion noxious bottom right)
{
....G..FFFFFFF..
..F..F.FF.F.FF..
................
................
}
-# tile 144 (explosion muddy top left)
+# tile 146 (explosion muddy top left)
{
................
................
..JJJJKKJJJJKKKK
..JJJKKJJJJJKKKK
}
-# tile 145 (explosion muddy top center)
+# tile 147 (explosion muddy top center)
{
................
................
KKKKKKKKJKJKJCJJ
KCLKKKLCLLJJJJJJ
}
-# tile 146 (explosion muddy top right)
+# tile 148 (explosion muddy top right)
{
................
................
JJKJKKJKJJJJ....
JKJJKKJKJJJJJ...
}
-# tile 147 (explosion muddy middle left)
+# tile 149 (explosion muddy middle left)
{
..JJJKJKJJJKKKKK
..JJJKJJJJJKJCKK
..J.JKKKJLCKKKCL
....JKKKKKKKKKCL
}
-# tile 148 (explosion muddy middle center)
+# tile 150 (explosion muddy middle center)
{
JCLJJKKCCJCLJJJJ
KLCLKKJKJJLCJLJK
LLLLCLCLCKCCCKCJ
CCCCCLLLCCCKLLKK
}
-# tile 149 (explosion muddy middle right)
+# tile 151 (explosion muddy middle right)
{
KKJJJKJKJKJJJJ..
KKJJJJJKJKJJJJ..
LJLKKKJJJJJJJ...
KKKKCCJJJJJJJJ..
}
-# tile 150 (explosion muddy bottom left)
+# tile 152 (explosion muddy bottom left)
{
....JKKKKKKKLKKC
....JKKKKKKKJLKK
................
................
}
-# tile 151 (explosion muddy bottom center)
+# tile 153 (explosion muddy bottom center)
{
CCCLLLLLCLLLKLKK
LLCCLLCCCCLKJKKK
................
................
}
-# tile 152 (explosion muddy bottom right)
+# tile 154 (explosion muddy bottom right)
{
KKKKCKKJJJJJJJ..
KKJKKJKJJKJKJJ..
................
................
}
-# tile 153 (explosion wet top left)
+# tile 155 (explosion wet top left)
{
................
................
..EEEEPPEEEEPPPP
..EEEPPEEEEEPPPP
}
-# tile 154 (explosion wet top center)
+# tile 156 (explosion wet top center)
{
................
................
PPPPPPPPEPEPEBEE
PBNPPPNBEEEEEEEE
}
-# tile 155 (explosion wet top right)
+# tile 157 (explosion wet top right)
{
................
................
EEPEPPEPEEEE....
EPEEPPEPEEEEE...
}
-# tile 156 (explosion wet middle left)
+# tile 158 (explosion wet middle left)
{
..EEEPEPEEEPPPPP
..EEEPEEEEEPEBPP
..E.EPPPENBPPPBE
....EPPPPPPPPPBE
}
-# tile 157 (explosion wet middle center)
+# tile 159 (explosion wet middle center)
{
EBNEEPPBBEBNEEEE
PNBNPPEPEEEBENEP
EEEEEEEEEPBBBPBE
BBBBEEEEBBBPNNPP
}
-# tile 158 (explosion wet middle right)
+# tile 160 (explosion wet middle right)
{
PPEEEPEPEPEEEE..
PPEEEEEPEPEEEE..
NENPPPEEEEEEE...
PPPPBBEEEEEEEE..
}
-# tile 159 (explosion wet bottom left)
+# tile 161 (explosion wet bottom left)
{
....EPPPPPPPNPPB
....EPPPPPPPENPP
................
................
}
-# tile 160 (explosion wet bottom center)
+# tile 162 (explosion wet bottom center)
{
BBBEEEEEBEEEPEPP
EEBBEEBBBBEPEPPP
................
................
}
-# tile 161 (explosion wet bottom right)
+# tile 163 (explosion wet bottom right)
{
PPPPBPPEEEEEEE..
PPEPPEPEEPEPEE..
................
................
}
-# tile 162 (explosion magical top left)
+# tile 164 (explosion magical top left)
{
................
................
..EEEEIIEEEEIIII
..EEEIIEEEEEIIII
}
-# tile 163 (explosion magical top center)
+# tile 165 (explosion magical top center)
{
................
................
IIIIIIIIEIEIELEE
ILHIIIHLHHEEEEEE
}
-# tile 164 (explosion magical top right)
+# tile 166 (explosion magical top right)
{
................
................
EEIEIIEIEEEE....
EIEEIIEIEEEEE...
}
-# tile 165 (explosion magical middle left)
+# tile 167 (explosion magical middle left)
{
..EEEIEIEEEIIIII
..EEEIEEEEEIEIII
..E.EIIIENIIIIIN
....EIIIIIIIIIIN
}
-# tile 166 (explosion magical middle center)
+# tile 168 (explosion magical middle center)
{
EINEEIIIIEINEEEE
ININIIEIEENIENEI
NNNNNNNNNIIIIIIE
IIIINNNNIIIINNII
}
-# tile 167 (explosion magical middle right)
+# tile 169 (explosion magical middle right)
{
IIEEEIEIEIEEEE..
IIEEEEEIEIEEEE..
NENIIIEEEEEEE...
IIIIIIEEEEEEEE..
}
-# tile 168 (explosion magical bottom left)
+# tile 170 (explosion magical bottom left)
{
....EIIIIIIIHIII
....EIIIIIIIEHII
................
................
}
-# tile 169 (explosion magical bottom center)
+# tile 171 (explosion magical bottom center)
{
IIINNNNNINNNINII
NNIINNIIIINIEIII
................
................
}
-# tile 170 (explosion magical bottom right)
+# tile 172 (explosion magical bottom right)
{
IIIIIIIEEEEEEE..
IIEIIEIEEIEIEE..
................
................
}
-# tile 171 (explosion fiery top left)
+# tile 173 (explosion fiery top left)
{
................
................
..DDDDCCDDDDCCCC
..DDDCCDDDDDCCCC
}
-# tile 172 (explosion fiery top center)
+# tile 174 (explosion fiery top center)
{
................
................
CCCCCCCCDCDCDLDD
CLHCCCHLHHDDDDDD
}
-# tile 173 (explosion fiery top right)
+# tile 175 (explosion fiery top right)
{
................
................
DDCDCCDCDDDD....
DCDDCCDCDDDDD...
}
-# tile 174 (explosion fiery middle left)
+# tile 176 (explosion fiery middle left)
{
..DDDCDCDDDCCCCC
..DDDCDDDDDCDLCC
..D.DCCCDHLCCCLH
....DCCCCCCCCCLH
}
-# tile 175 (explosion fiery middle center)
+# tile 177 (explosion fiery middle center)
{
DLHDDCCLLDLHDDDD
CHLHCCDCDDHLDHDC
HHHHNHNHNCLLLCLD
LLLLNHHHLLLCHHCC
}
-# tile 176 (explosion fiery middle right)
+# tile 178 (explosion fiery middle right)
{
CCDDDCDCDCDDDD..
CCDDDDDCDCDDDD..
HDHCCCDDDDDDD...
CCCCLLDDDDDDDD..
}
-# tile 177 (explosion fiery bottom left)
+# tile 179 (explosion fiery bottom left)
{
....DCCCCCCCHCCL
....DCCCCCCCDHCC
................
................
}
-# tile 178 (explosion fiery bottom center)
+# tile 180 (explosion fiery bottom center)
{
LLLHHHHHLHHHCHCC
HHLLHHLLLLHCDCCC
................
................
}
-# tile 179 (explosion fiery bottom right)
+# tile 181 (explosion fiery bottom right)
{
CCCCLCCDDDDDDD..
CCDCCDCDDCDCDD..
................
................
}
-# tile 180 (explosion frosty top left)
+# tile 182 (explosion frosty top left)
{
................
................
..EEEEPPNBEEPPPP
..EEEPPEEEEEPPPP
}
-# tile 181 (explosion frosty top center)
+# tile 183 (explosion frosty top center)
{
................
................
PPPPPPPPEPEPEBEE
PBNPPPNBNNEEEEEE
}
-# tile 182 (explosion frosty top right)
+# tile 184 (explosion frosty top right)
{
................
................
EEPEPPEPEEEE....
EPEEPPEPEEEEE...
}
-# tile 183 (explosion frosty middle left)
+# tile 185 (explosion frosty middle left)
{
..EEEPEPEEEPPPPP
..EEEPEEEEEPEBPP
..E.EPPPENBPPPBN
....EPPPPPPPPPBN
}
-# tile 184 (explosion frosty middle center)
+# tile 186 (explosion frosty middle center)
{
EBNEEPPBBEBNEEEE
PNBNPPEPEENBENEP
NNNNNNNNNPBBBPBE
BBBBNNNNBBBPNNPP
}
-# tile 185 (explosion frosty middle right)
+# tile 187 (explosion frosty middle right)
{
PPEEEPEPEPEEEE..
PPEEEEEPEPEEEE..
NENPPPEEEEEEE...
PPPPBBEEEEEEEE..
}
-# tile 186 (explosion frosty bottom left)
+# tile 188 (explosion frosty bottom left)
{
....EPPPPPPPNPPB
....EPPPPPPPENPP
................
................
}
-# tile 187 (explosion frosty bottom center)
+# tile 189 (explosion frosty bottom center)
{
BBBNNNNNBNNNPNPP
NNBBNNBBBBNPEPPP
................
................
}
-# tile 188 (explosion frosty bottom right)
+# tile 190 (explosion frosty bottom right)
{
PPPPBPPEEEEEEE..
PPEPPEPEEPEPEE..
...........N....
................
}
-# tile 189 (warning 0)
+# tile 191 (warning 0)
{
................
................
.......AA.......
................
}
-# tile 190 (warning 1)
+# tile 192 (warning 1)
{
................
................
.......AA.......
................
}
-# tile 191 (warning 2)
+# tile 193 (warning 2)
{
................
................
.......AA.......
................
}
-# tile 192 (warning 3)
+# tile 194 (warning 3)
{
................
................
.......AA.......
................
}
-# tile 193 (warning 4)
+# tile 195 (warning 4)
{
................
................
.......AA.......
................
}
-# tile 194 (warning 5)
+# tile 196 (warning 5)
{
................
................
.......AA.......
................
}
-# tile 195 (unexplored)
+# tile 197 (unexplored)
{
AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA
}
-# tile 196 (nothing)
+# tile 198 (nothing)
{
AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA
}
-# tile 197 (mines walls vertical)
+# tile 199 (mines walls vertical)
{
AJJKKKACJAAJJJAA
AJKKKACLJJAJJJJA
AAJACKCKKJJJAJAA
AAJCKKJAAAJJJJJA
}
-# tile 198 (mines walls horizontal)
+# tile 200 (mines walls horizontal)
{
AJAAAAAAJJAAAJAA
JJJAAAJJJJJAAAAJ
JJJJJJJJJJJJJJJJ
AAAAAAAAAAAAAAAA
}
-# tile 199 (mines walls tlcorn)
+# tile 201 (mines walls tlcorn)
{
AAAAAAKCCKKJAAAA
AAAAKKCLCJKJJAAA
AAJACKCKKJJJAJAA
AAJCKKJAAAJJJJJA
}
-# tile 200 (mines walls trcorn)
+# tile 202 (mines walls trcorn)
{
AAAAAAKCCKKJAAAA
AAAAKKCLCJKJJAAA
AAJACKCKKJJJAJAA
AAJCKKJAAAJJJJJA
}
-# tile 201 (mines walls blcorn)
+# tile 203 (mines walls blcorn)
{
AKKKAAKKKKAAJJJA
AKKAAKCCCJJJAAJA
AJJJJJJJJJJJJJJJ
AAAAAAAAAAAAAAAA
}
-# tile 202 (mines walls brcorn)
+# tile 204 (mines walls brcorn)
{
AKKAAAKKAAAAJJJA
AKAAKKLCKAAAAAJA
JJJJJJJJJJJJJJJA
AAAAAAAAAAAAAAAA
}
-# tile 203 (mines walls cross wall)
+# tile 205 (mines walls cross wall)
{
AAAAAAKCCKKJAAAA
AAAAKCCLCJKJJAAA
AAJACKCKKJJJAJAA
AAJCKKJAAAJJJJJA
}
-# tile 204 (mines walls tuwall)
+# tile 206 (mines walls tuwall)
{
AKKAAAKKKKAAJJJA
AKAAKKLCCJJJAAJA
JJJJJJJJJJJJJJJJ
AAAAAAAAAAAAAAAA
}
-# tile 205 (mines walls tdwall)
+# tile 207 (mines walls tdwall)
{
AAAAAAKCCKKJAAAA
AAAAKCCLCJKJJAAA
AAJACKCKKJJJAJAA
AAJCKKJAAAJJJJJA
}
-# tile 206 (mines walls tlwall)
+# tile 208 (mines walls tlwall)
{
AKKAACKCCKKJAJJA
AKACKKKLLJKJJAJA
AAJACKCKKJJJAJAA
AAJCKKJAAAJJJJJA
}
-# tile 207 (mines walls trwall)
+# tile 209 (mines walls trwall)
{
AKKAACKCCKKJAJJA
AKACKKCLCJKJJAJA
AAJACKCKKJJJAJAA
AAJCKKJAAAJJJJJA
}
-# tile 208 (gehennom walls vertical)
+# tile 210 (gehennom walls vertical)
{
ALLDAJ11111JLLDA
ADDDAJ1J11JJDDDA
AJJJAJJ1111JJJJA
AD11AJJ1111JD1JA
}
-# tile 209 (gehennom walls horizontal)
+# tile 211 (gehennom walls horizontal)
{
AAALDDAAAAALDDAA
DDDLDDAJDDDLDDAJ
JJJJJJJJJJJJJJJJ
AAAAAAAAAAAAAAAA
}
-# tile 210 (gehennom walls tlcorn)
+# tile 212 (gehennom walls tlcorn)
{
AAALLLLDDDDDDAAA
LLLLAAJJ1111DJJJ
AJJJAJJ1111JJJJA
AD11AJJ1111JD1JA
}
-# tile 211 (gehennom walls trcorn)
+# tile 213 (gehennom walls trcorn)
{
AAALLLLDDDDDDAAA
LLLLAAJJ1111DJJJ
AJJJAJJ1111JJJJA
AD11AJJ1111JD1JA
}
-# tile 212 (gehennom walls blcorn)
+# tile 214 (gehennom walls blcorn)
{
AAALLLLDDDDDDAAA
LLLLAAJJ1111DJJJ
JJJJJJJJJJJJJJJJ
AAAAAAAAAAAAAAAA
}
-# tile 213 (gehennom walls brcorn)
+# tile 215 (gehennom walls brcorn)
{
AAALLLLDDDDDDAAA
LLLLAAJJ1111DJJJ
JJJJJJJJJJJJJJJJ
AAAAAAAAAAAAAAAA
}
-# tile 214 (gehennom walls cross wall)
+# tile 216 (gehennom walls cross wall)
{
AAALLLLDDDDDDAAA
LLLLAAJJ1111DJJJ
AJJJAJJ1111JJJJA
AD11AJJ1111JD1JA
}
-# tile 215 (gehennom walls tuwall)
+# tile 217 (gehennom walls tuwall)
{
AAALLLLDDDDDDAAA
LLLLAAJJ1111DJJJ
JJJJJJJJJJJJJJJJ
AAAAAAAAAAAAAAAA
}
-# tile 216 (gehennom walls tdwall)
+# tile 218 (gehennom walls tdwall)
{
AAALLLLDDDDDDAAA
LLLLAAJJ1111DJJJ
AJJJAJJ1111JJJJA
AD11AJJ1111JD1JA
}
-# tile 217 (gehennom walls tlwall)
+# tile 219 (gehennom walls tlwall)
{
AAALLLLDDDDDDAAA
LLLLAAJJ1111DJJJ
AJJJAJJ1111JJJJA
AD11AJJ1111JD1JA
}
-# tile 218 (gehennom walls trwall)
+# tile 220 (gehennom walls trwall)
{
AAALLLLDDDDDDAAA
LLLLAAJJ1111DJJJ
AJJJAJJ1111JJJJA
AD11AJJ1111JD1JA
}
-# tile 219 (knox walls vertical)
+# tile 221 (knox walls vertical)
{
AJJJAAACJAAAJJJA
AJJJAACLJJAAJJJA
AAJAAACKKJAAAJAA
ACJJAAAAAAAACJJA
}
-# tile 220 (knox walls horizontal)
+# tile 222 (knox walls horizontal)
{
AJAAAJAAAJAAAJAA
JJJAAAJAJJJAAAJA
KJJACJJAKJJACJJA
AAAAAAAAAAAAAAAA
}
-# tile 221 (knox walls tlcorn)
+# tile 223 (knox walls tlcorn)
{
AAAAAAKCJKAAAAAA
AAAAKKCLKJKKAAAA
AAJAAACKKJAAAJAA
ACJJAAAAAAAACJJA
}
-# tile 222 (knox walls trcorn)
+# tile 224 (knox walls trcorn)
{
AAAAAAKCJKAAAAAA
AAAAKKCLKJKKAAAA
AAJAAACKKJAAAJAA
ACJJAAAAAAAACJJA
}
-# tile 223 (knox walls blcorn)
+# tile 225 (knox walls blcorn)
{
AAAAAAKCJKAAAAAA
AAAAKKCLKJKKAAAA
KJJACJJAKJJACJJA
AAAAAAAAAAAAAAAA
}
-# tile 224 (knox walls brcorn)
+# tile 226 (knox walls brcorn)
{
AAAAAAKCJKAAAAAA
AAAAKKCLKJKKAAAA
KJJACJJAKJJACJJA
AAAAAAAAAAAAAAAA
}
-# tile 225 (knox walls cross wall)
+# tile 227 (knox walls cross wall)
{
AAAAAAKCJKAAAAAA
AAAAKKCLKJKKAAAA
AAJAAACKKJAAAJAA
ACJJAAAAAAAACJJA
}
-# tile 226 (knox walls tuwall)
+# tile 228 (knox walls tuwall)
{
AAAAAAKCJKAAAAAA
AAAAKKCLKJKKAAAA
KJJACJJAKJJACJJA
AAAAAAAAAAAAAAAA
}
-# tile 227 (knox walls tdwall)
+# tile 229 (knox walls tdwall)
{
AAAAAAKCJKAAAAAA
AAAAKKCLKJKKAAAA
AAJAAACKKJAAAJAA
ACJJAAAAAAAACJJA
}
-# tile 228 (knox walls tlwall)
+# tile 230 (knox walls tlwall)
{
AAAAAAKCJKAAAAAA
AAAAKKCLKJKKAAAA
AAJAAACKKJAAAJAA
ACJJAAAAAAAACJJA
}
-# tile 229 (knox walls trwall)
+# tile 231 (knox walls trwall)
{
AAAAAAKCJKAAAAAA
AAAAKKCLKJKKAAAA
AAJAAACKKJAAAJAA
ACJJAAAAAAAACJJA
}
-# tile 230 (sokoban walls vertical)
+# tile 232 (sokoban walls vertical)
{
ANNBA1EEEEE1NNBA
ABBBA1E1EE11BBBA
A111A11EEEE1111A
ABEEA11EEEE1BE1A
}
-# tile 231 (sokoban walls horizontal)
+# tile 233 (sokoban walls horizontal)
{
AAANBBAAAAANBBAA
BBBNBBA1BBBNBBA1
1111111111111111
AAAAAAAAAAAAAAAA
}
-# tile 232 (sokoban walls tlcorn)
+# tile 234 (sokoban walls tlcorn)
{
AAANNNNBBBBBBAAA
NNNNAA11EEEEB111
A111A11EEEE1111A
ABEEA11EEEE1BE1A
}
-# tile 233 (sokoban walls trcorn)
+# tile 235 (sokoban walls trcorn)
{
AAANNNNBBBBBBAAA
NNNNAA11EEEEB111
A111A11EEEE1111A
ABEEA11EEEE1BE1A
}
-# tile 234 (sokoban walls blcorn)
+# tile 236 (sokoban walls blcorn)
{
AAANNNNBBBBBBAAA
NNNNAA11EEEEB111
1111111111111111
AAAAAAAAAAAAAAAA
}
-# tile 235 (sokoban walls brcorn)
+# tile 237 (sokoban walls brcorn)
{
AAANNNNBBBBBBAAA
NNNNAA11EEEEB111
1111111111111111
AAAAAAAAAAAAAAAA
}
-# tile 236 (sokoban walls cross wall)
+# tile 238 (sokoban walls cross wall)
{
AAANNNNBBBBBBAAA
NNNNAA11EEEEB111
A111A11EEEE1111A
ABEEA11EEEE1BE1A
}
-# tile 237 (sokoban walls tuwall)
+# tile 239 (sokoban walls tuwall)
{
AAANNNNBBBBBBAAA
NNNNAA11EEEEB111
1111111111111111
AAAAAAAAAAAAAAAA
}
-# tile 238 (sokoban walls tdwall)
+# tile 240 (sokoban walls tdwall)
{
AAANNNNBBBBBBAAA
NNNNAA11EEEEB111
A111A11EEEE1111A
ABEEA11EEEE1BE1A
}
-# tile 239 (sokoban walls tlwall)
+# tile 241 (sokoban walls tlwall)
{
AAANNNNBBBBBBAAA
NNNNAA11EEEEB111
A111A11EEEE1111A
ABEEA11EEEE1BE1A
}
-# tile 240 (sokoban walls trwall)
+# tile 242 (sokoban walls trwall)
{
AAANNNNBBBBBBAAA
NNNNAA11EEEEB111