]> granicus.if.org Git - nethack/commitdiff
sym-changes - add engravings to the map
authornhmall <nhmall@nethack.org>
Sun, 5 Mar 2023 22:35:49 +0000 (17:35 -0500)
committernhmall <nhmall@nethack.org>
Sun, 5 Mar 2023 22:35:49 +0000 (17:35 -0500)
1. Add "engraved room floor" pchar sym (S_engroom). The symbol that
displays at the engraved part of a room (not a corridor though).
The default symbol is '`' which is currently never shown if people
have defined the boulder symbol to '0' and statues are displayed as
monster symbols. It is bright blue.

Add some stylized variations of the S_engroom symset to some of
the symsets.

2. Add "engraved corridor" pchar sym (S_engrcorr). The symbol that
displays at the engraved part of a corridor. The default symbol is
'#', and it matches the symbol for corridor from for whatever the
current symset uses. It is bright blue to match the color of the
S_engroom symbol. Using the normal corridor symbol for display
preserves the lines of the corridor so is not as visually-disruptive
as a smaller symbol would be. Explicit entries that match the S_corr
symbol have been added to the symset file.

Magic mapping and clairvoyance impacts yet to be determined.

The Guidebook updates will come later.

dat/symbols
include/defsym.h
include/display.h
include/engrave.h
include/extern.h
src/cmd.c
src/detect.c
src/display.c
src/engrave.c
src/pager.c
win/share/other.txt

index c131d6bdc7947469e9a7a7893253b7867e821357..c9adbda4496d9e379c9684ce1bf289a76f7f2578 100644 (file)
@@ -251,11 +251,13 @@ start: IBMgraphics
        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
@@ -287,6 +289,7 @@ start: IBMGraphics_1
        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
@@ -311,8 +314,10 @@ start: IBMGraphics_2
        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
@@ -348,6 +353,7 @@ start: RogueIBM
        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
@@ -374,8 +380,10 @@ start: RogueEpyx
        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
@@ -452,8 +460,10 @@ start: RogueWindows
        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
@@ -479,8 +489,10 @@ start: curses
        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
@@ -560,6 +572,7 @@ start: MACgraphics
        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
@@ -585,6 +598,7 @@ start: Enhanced1
        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
index e18884f55c2d96d28811f015900609b8dd973cfb..0c3536d8bbe294879a6a58448d79fd04120b21e2 100644 (file)
     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 */
index 1502f27ded0aa738d6db86e3876e660a640faa5e..80af8410cc82e0ef8324d2177f7dc1b776c89d3c 100644 (file)
@@ -630,6 +630,9 @@ enum glyph_offsets {
 #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)
index 380f8227a649baab939b416e15693b1cb2346ce9..0a5e20079749137db7989a2dfbc5764e5bd114e8 100644 (file)
@@ -6,11 +6,14 @@
 #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
@@ -25,11 +28,15 @@ struct engr {
                                 * 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 */
index 99ebfb42f185cc75b1e2d3a1195e9fa6a5ef18ee..802b564c4c03796dd21ce73d11dc48a5af340a71 100644 (file)
@@ -832,6 +832,9 @@ extern void del_engr(struct engr *);
 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 ### */
 
index 70fba772bd8157ba9606ad3d77857c11e5550353..ca6bf86d8a33b16e567c1b0ea2051cb48ca463d4 100644 (file)
--- a/src/cmd.c
+++ b/src/cmd.c
@@ -1216,12 +1216,14 @@ wiz_makemap(void)
     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;
@@ -1229,6 +1231,9 @@ wiz_map(void)
             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;
index 4ea04724042d5c83bad799d486260ce0f3bd79ad..064d739a318648e6c49a0c45ce9b9156020d844a 100644 (file)
@@ -1328,6 +1328,7 @@ show_map_spot(coordxy x, coordxy y)
 {
     struct rm *lev;
     struct trap *t;
+    struct engr *ep;
     int oldglyph;
 
     if (Confusion && rn2(7))
@@ -1359,6 +1360,8 @@ show_map_spot(coordxy x, coordxy y)
     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)
index 7b91b04e282e7957eba44d9566775d4d282c2961..aceb9487650d98a1560c8aa532ed2fd1a2483d7a 100644 (file)
@@ -60,7 +60,7 @@
  *
  * map_background
  * map_object
- * map_trap
+ * map_trap or map_engraving
  * map_invisible
  * unmap_object
  *
@@ -304,6 +304,23 @@ map_trap(register struct trap *trap, register int show)
         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()
  *
@@ -392,12 +409,15 @@ void
 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];
 
@@ -424,11 +444,14 @@ unmap_object(register coordxy x, register coordxy 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);                                     \
                                                                             \
index 6f43656f8b19dc52a77e9afbd6526e3528efe838..4605f801f25e7608eaf4a55bdc727b1945834c42 100644 (file)
@@ -254,7 +254,7 @@ ceiling(coordxy x, coordxy y)
 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)
@@ -277,8 +277,8 @@ sengr_at(const char *s, coordxy x, coordxy y, boolean strict)
     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;
@@ -304,10 +304,10 @@ wipe_engr_at(coordxy x, coordxy y, xint16 cnt, boolean magical)
                 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);
         }
     }
@@ -322,7 +322,7 @@ read_engr_at(coordxy x, coordxy y)
     /* 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) {
@@ -373,14 +373,16 @@ read_engr_at(coordxy x, coordxy y)
                                  /* 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);
         }
@@ -390,19 +392,24 @@ read_engr_at(coordxy x, coordxy y)
 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
@@ -414,7 +421,9 @@ make_engr_at(coordxy x, coordxy y, const char *s, long e_time, xint16 e_type)
     }
     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> */
@@ -536,6 +545,8 @@ doengrave(void)
     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 */
@@ -937,17 +948,28 @@ doengrave(void)
     }
     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)) {
@@ -965,6 +987,8 @@ doengrave(void)
     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;
     }
     /*
@@ -1004,6 +1028,7 @@ doengrave(void)
                                 : "written");
                     del_engr(oep);
                     oep = (struct engr *) 0;
+                    disprefresh = TRUE;
                 } else {
                     /* defer deletion until after we *know* we're engraving */
                     eow = TRUE;
@@ -1020,7 +1045,7 @@ doengrave(void)
                     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;
         }
@@ -1107,6 +1132,7 @@ doengrave(void)
     if (eow) {
         del_engr(oep);
         oep = (struct engr *) 0;
+        disprefresh = TRUE;
     }
 
     Strcpy(gc.context.engraving.text, ebuf);
@@ -1129,6 +1155,8 @@ doengrave(void)
 
     /* 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;
 }
 
@@ -1144,6 +1172,7 @@ engrave(void)
     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);
@@ -1282,7 +1311,7 @@ engrave(void)
     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) {
@@ -1305,9 +1334,15 @@ engrave(void)
     (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 */
@@ -1324,6 +1359,8 @@ engrave(void)
         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;
 }
 
@@ -1335,7 +1372,7 @@ sanitize_engravings(void)
     struct engr *ep;
 
     for (ep = head_engr; ep; ep = ep->nxt_engr) {
-        sanitize_name(ep->engr_txt);
+        sanitize_name(ep->engr_txt[actual_text]);
     }
 }
 
@@ -1347,12 +1384,13 @@ save_engravings(NHFILE *nhfp)
 
     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))
@@ -1385,7 +1423,13 @@ rest_engravings(NHFILE *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 */
@@ -1409,7 +1453,7 @@ engr_stats(
     *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;
     }
 }
 
@@ -1451,6 +1495,7 @@ rloc_engr(struct engr *ep)
 
     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.
@@ -1493,6 +1538,23 @@ disturb_grave(coordxy x, coordxy y)
     }
 }
 
+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 },
index 784f4d442633151c9d6d49e845e627de62260e67..a2d314ecefcb54fadf75c18473e8cb5d31888af1 100644 (file)
@@ -43,6 +43,7 @@ static void domenucontrols(void);
 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 */
@@ -653,6 +654,10 @@ lookat(coordxy x, coordxy y, char *buf, char *monbuf)
         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");
@@ -1266,6 +1271,12 @@ do_screen_description(coord cc, boolean looked, int sym, char *out_str,
                       : !(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);
@@ -1393,9 +1404,11 @@ do_screen_description(coord cc, boolean looked, int sym, char *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]) {
@@ -1409,6 +1422,24 @@ do_screen_description(coord cc, boolean looked, int sym, char *out_str,
     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";
 
@@ -1604,6 +1635,18 @@ do_look(int mode, coord *click_cc)
 
         /* 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
index 55726672b4ebfeaf8fd29e48456066160004c03d..0aa076e036a0b8f48cc9e5311473745b1935c3b5 100644 (file)
@@ -429,7 +429,26 @@ Z = (195, 195, 195)
   .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)
 {
   ................
   ................
@@ -448,7 +467,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 22 (lit corridor)
+# tile 23 (lit corridor)
 {
   ................
   ................
@@ -467,7 +486,26 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# 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
@@ -486,7 +524,7 @@ Z = (195, 195, 195)
   AAAAAAAAAAAAAA.A
   AAAAAAAAAAAAAAAA
 }
-# tile 24 (staircase down)
+# tile 26 (staircase down)
 {
   AAAAAAAAAAAAAA.A
   AADJJJJJJJJJDA.A
@@ -505,7 +543,7 @@ Z = (195, 195, 195)
   AAAAAAAAAAAAAA.A
   AAAAAAAAAAAAAAAA
 }
-# tile 25 (ladder up)
+# tile 27 (ladder up)
 {
   ADAAAAAAAAAAAD.A
   AADAAAANAAAADA.A
@@ -524,7 +562,7 @@ Z = (195, 195, 195)
   AAAAAAAAAAAAAA.A
   AAAAAAAAAAAAAAAA
 }
-# tile 26 (ladder down)
+# tile 28 (ladder down)
 {
   ADAAAAAAAAAAAD.A
   AADAAAANAAAADA.A
@@ -543,7 +581,7 @@ Z = (195, 195, 195)
   AAAAAAAAAAAAAA.A
   AAAAAAAAAAAAAAAA
 }
-# tile 27 (branch staircase up)
+# tile 29 (branch staircase up)
 {
   AAAAAAAAAAAAAA.A
   AADJJJJJJJJJDA.A
@@ -562,7 +600,7 @@ Z = (195, 195, 195)
   AAAAAAAAAAAAAA.A
   AAAAAAAAAAAAAAAA
 }
-# tile 28 (branch staircase down)
+# tile 30 (branch staircase down)
 {
   AAAAAAAAAAAAAA.A
   AADJJJJJJJJJDA.A
@@ -581,7 +619,7 @@ Z = (195, 195, 195)
   AAAAAAAAAAAAAA.A
   AAAAAAAAAAAAAAAA
 }
-# tile 29 (branch ladder up)
+# tile 31 (branch ladder up)
 {
   ADAAAAAAAAAAAD.A
   AADAAAAHAAAADA.A
@@ -600,7 +638,7 @@ Z = (195, 195, 195)
   AAAAAAAAAAAAAA.A
   AAAAAAAAAAAAAAAA
 }
-# tile 30 (branch ladder down)
+# tile 32 (branch ladder down)
 {
   ADAAAAAAAAAAAD.A
   AADAAAAHAAAADA.A
@@ -619,7 +657,7 @@ Z = (195, 195, 195)
   AAAAAAAAAAAAAA.A
   AAAAAAAAAAAAAAAA
 }
-# tile 31 (unaligned altar)
+# tile 33 (unaligned altar)
 {
   ................
   ................
@@ -638,7 +676,7 @@ Z = (195, 195, 195)
   ...AAAAAAAAAAA..
   ................
 }
-# tile 32 (chaotic altar)
+# tile 34 (chaotic altar)
 {
   ................
   ................
@@ -657,7 +695,7 @@ Z = (195, 195, 195)
   ...AAAAAAAAAAA..
   ................
 }
-# tile 33 (neutral altar)
+# tile 35 (neutral altar)
 {
   ................
   ................
@@ -676,7 +714,7 @@ Z = (195, 195, 195)
   ...AAAAAAAAAAA..
   ................
 }
-# tile 34 (lawful altar)
+# tile 36 (lawful altar)
 {
   ................
   ................
@@ -695,7 +733,7 @@ Z = (195, 195, 195)
   ...AAAAAAAAAAA..
   ................
 }
-# tile 35 (other altar)
+# tile 37 (other altar)
 {
   ................
   ................
@@ -714,7 +752,7 @@ Z = (195, 195, 195)
   ...AAAAAAAAAAA..
   ................
 }
-# tile 36 (grave)
+# tile 38 (grave)
 {
   ................
   ................
@@ -733,7 +771,7 @@ Z = (195, 195, 195)
   FFFFFFFFFFFFFFF.
   ................
 }
-# tile 37 (throne)
+# tile 39 (throne)
 {
   ................
   .....HHHHH......
@@ -752,7 +790,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 38 (sink)
+# tile 40 (sink)
 {
   ................
   ................
@@ -771,7 +809,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 39 (fountain)
+# tile 41 (fountain)
 {
   ....E....E......
   ..EEEE..EEE.....
@@ -790,7 +828,7 @@ Z = (195, 195, 195)
   ....AAAAAAAAA...
   ................
 }
-# tile 40 (pool)
+# tile 42 (pool)
 {
   ..........NNN...
   .EEEE....NE.EN..
@@ -809,7 +847,7 @@ Z = (195, 195, 195)
   .E..EE...E..EEE.
   EE....EEE.....EE
 }
-# tile 41 (ice)
+# tile 43 (ice)
 {
   NNNNNNNNNNNNNNNN
   NNNNNNNNNNNNNNNN
@@ -828,7 +866,7 @@ Z = (195, 195, 195)
   NNNNNNNNNNNNNNNN
   NNNNNNNNNNNNNNNN
 }
-# tile 42 (molten lava)
+# tile 44 (molten lava)
 {
   DDDDDDCDDDDDDDDD
   DDDDDCDKDDDDDDDD
@@ -847,7 +885,7 @@ Z = (195, 195, 195)
   DDDDKKDDDDCDDDDD
   DDDDDDDDDDDKDDDD
 }
-# tile 43 (wall of lava)
+# tile 45 (wall of lava)
 {
   DDDDDDCDDDDDDDDD
   DDDDDCHKDDCDDDDD
@@ -866,7 +904,7 @@ Z = (195, 195, 195)
   DDDDHKDHCDCDHDDD
   DDDDDDDDDDDKDDDD
 }
-# tile 44 (vertical open drawbridge)
+# tile 46 (vertical open drawbridge)
 {
   EKKAKKKKKKKAKKAE
   EJKKKKKKKKKKKJAA
@@ -885,7 +923,7 @@ Z = (195, 195, 195)
   EEJJJJJJJJJJJAAA
   EJKKKKKKKKKKKJAA
 }
-# tile 45 (horizontal open drawbridge)
+# tile 47 (horizontal open drawbridge)
 {
   EEEEEEEEEEEEEEEE
   JEJKJEJKJEJKJEJK
@@ -904,7 +942,7 @@ Z = (195, 195, 195)
   AAAAAAAAAAAAAAAA
   AAAEAAAEAAAEAAAE
 }
-# tile 46 (vertical closed drawbridge)
+# tile 48 (vertical closed drawbridge)
 {
   ................
   ..JKJ.JKJ.JKJ...
@@ -923,7 +961,7 @@ Z = (195, 195, 195)
   ...AAA.AAA.AAA..
   ................
 }
-# tile 47 (horizontal closed drawbridge)
+# tile 49 (horizontal closed drawbridge)
 {
   ................
   ..JJJJJJJJJJJ...
@@ -942,7 +980,7 @@ Z = (195, 195, 195)
   ...AAAAAAAAAAA..
   ................
 }
-# tile 48 (air)
+# tile 50 (air)
 {
   BBBBBBBBBBBBBBBB
   BBBBBBBBBBBBBBBB
@@ -961,7 +999,7 @@ Z = (195, 195, 195)
   BBBBBBBBBBBBBBBB
   BBBBBBBBBBBBBBBB
 }
-# tile 49 (cloud)
+# tile 51 (cloud)
 {
   BBBBBBBBBBBBBBBB
   BBBBBNNNNNNNBBBB
@@ -980,7 +1018,7 @@ Z = (195, 195, 195)
   BBBBBBOOOOBBBBBB
   BBBBBBBBBBBBBBBB
 }
-# tile 50 (water)
+# tile 52 (water)
 {
   EEEEEEEEEEEEEEEE
   EEEEEEEEEEEEEEEE
@@ -999,7 +1037,7 @@ Z = (195, 195, 195)
   EEEEEEEEEEEEEEEE
   EEEEEEEEEEEEEEEE
 }
-# tile 51 (arrow trap)
+# tile 53 (arrow trap)
 {
   ................
   .....DDDDD......
@@ -1018,7 +1056,7 @@ Z = (195, 195, 195)
   ......AAAAA.....
   ................
 }
-# tile 52 (dart trap)
+# tile 54 (dart trap)
 {
   ................
   .....DDDDD......
@@ -1037,7 +1075,7 @@ Z = (195, 195, 195)
   ......AAAAA.....
   ................
 }
-# tile 53 (falling rock trap)
+# tile 55 (falling rock trap)
 {
   ................
   .....DDDDD......
@@ -1056,7 +1094,7 @@ Z = (195, 195, 195)
   ......AAAAA.....
   ................
 }
-# tile 54 (squeaky board)
+# tile 56 (squeaky board)
 {
   ................
   .....DDDDD......
@@ -1075,7 +1113,7 @@ Z = (195, 195, 195)
   ......AAAAA.....
   ................
 }
-# tile 55 (bear trap)
+# tile 57 (bear trap)
 {
   ................
   .....DDDDD......
@@ -1094,7 +1132,7 @@ Z = (195, 195, 195)
   ......AAAAA.....
   ................
 }
-# tile 56 (land mine)
+# tile 58 (land mine)
 {
   ................
   .....DDDDD......
@@ -1113,7 +1151,7 @@ Z = (195, 195, 195)
   ......AAAAA.....
   ................
 }
-# tile 57 (rolling boulder trap)
+# tile 59 (rolling boulder trap)
 {
   ................
   .....DDDDD......
@@ -1132,7 +1170,7 @@ Z = (195, 195, 195)
   ......AAAAA.....
   ................
 }
-# tile 58 (sleeping gas trap)
+# tile 60 (sleeping gas trap)
 {
   ................
   .....DDDDD......
@@ -1151,7 +1189,7 @@ Z = (195, 195, 195)
   ......AAAAA.....
   ................
 }
-# tile 59 (rust trap)
+# tile 61 (rust trap)
 {
   ................
   .....DDDDD......
@@ -1170,7 +1208,7 @@ Z = (195, 195, 195)
   ......AAAAA.....
   ................
 }
-# tile 60 (fire trap)
+# tile 62 (fire trap)
 {
   ................
   .....DDDDD......
@@ -1189,7 +1227,7 @@ Z = (195, 195, 195)
   ......AAAAA.....
   ................
 }
-# tile 61 (pit)
+# tile 63 (pit)
 {
   AAAAAAAAAAAAAAAA
   A.AAAAAAAAAAAABA
@@ -1208,7 +1246,7 @@ Z = (195, 195, 195)
   A.PPPPPPPPPPPPPA
   AAAAAAAAAAAAAAAA
 }
-# tile 62 (spiked pit)
+# tile 64 (spiked pit)
 {
   AAAAAAAAAAAAAAAA
   A.AAAAAAAAAAAABA
@@ -1227,7 +1265,7 @@ Z = (195, 195, 195)
   A.PPPPPPPPPPPPPA
   AAAAAAAAAAAAAAAA
 }
-# tile 63 (hole)
+# tile 65 (hole)
 {
   ................
   ......AAAA......
@@ -1246,7 +1284,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 64 (trap door)
+# tile 66 (trap door)
 {
   AAAAAAAAAAAAAAAA
   A.AAAAAAAAAAAABA
@@ -1265,7 +1303,7 @@ Z = (195, 195, 195)
   A.PPPPPPPPPPPPPA
   AAAAAAAAAAAAAAAA
 }
-# tile 65 (teleportation trap)
+# tile 67 (teleportation trap)
 {
   ................
   .....DDDDD......
@@ -1284,7 +1322,7 @@ Z = (195, 195, 195)
   ......AAAAA.....
   ................
 }
-# tile 66 (level teleporter)
+# tile 68 (level teleporter)
 {
   ................
   .....DDADD......
@@ -1303,7 +1341,7 @@ Z = (195, 195, 195)
   ......AAAAA.....
   ................
 }
-# tile 67 (magic portal)
+# tile 69 (magic portal)
 {
   ................
   .....DDDDD......
@@ -1322,7 +1360,7 @@ Z = (195, 195, 195)
   ......AAAAA.....
   ................
 }
-# tile 68 (web)
+# tile 70 (web)
 {
   OAOA.OA...O....O
   .O.NNNN.NOA..OOA
@@ -1341,7 +1379,7 @@ Z = (195, 195, 195)
   .OA.............
   OA..............
 }
-# tile 69 (statue trap)
+# tile 71 (statue trap)
 {
   ................
   .....DDDDD......
@@ -1360,7 +1398,7 @@ Z = (195, 195, 195)
   ......AAAAA.....
   ................
 }
-# tile 70 (magic trap)
+# tile 72 (magic trap)
 {
   ................
   .....DDDDD......
@@ -1379,7 +1417,7 @@ Z = (195, 195, 195)
   ......AAAAA.....
   ................
 }
-# tile 71 (anti-magic field)
+# tile 73 (anti-magic field)
 {
   ................
   ......DDDDD.....
@@ -1398,7 +1436,7 @@ Z = (195, 195, 195)
   .....AAAAA......
   ................
 }
-# tile 72 (polymorph trap)
+# tile 74 (polymorph trap)
 {
   ................
   .....DDDDD......
@@ -1417,7 +1455,7 @@ Z = (195, 195, 195)
   ......AAAAA.....
   ................
 }
-# tile 73 (vibrating square)
+# tile 75 (vibrating square)
 {
   ................
   ................
@@ -1436,7 +1474,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 74 (trapped door)
+# tile 76 (trapped door)
 {
   AAAAAAAAAAAAAAAA
   AAAAAAAAAAAAAAAA
@@ -1455,7 +1493,7 @@ Z = (195, 195, 195)
   AAAAAAAAAAAAAAAA
   AAAAAAAAAAAAAAAA
 }
-# tile 75 (trapped chest)
+# tile 77 (trapped chest)
 {
   ................
   ................
@@ -1474,7 +1512,7 @@ Z = (195, 195, 195)
   CKKKKKKKKKKJAA..
   .NAAAAAAAAAAA...
 }
-# tile 76 (missile zap 1 0)
+# tile 78 (missile zap 1 0)
 {
   .......II.......
   ......IIII......
@@ -1493,7 +1531,7 @@ Z = (195, 195, 195)
   ......IIII......
   .......II.......
 }
-# tile 77 (missile zap 1 1)
+# tile 79 (missile zap 1 1)
 {
   ................
   ................
@@ -1512,7 +1550,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 78 (missile zap 1 2)
+# tile 80 (missile zap 1 2)
 {
   III.............
   IIII............
@@ -1531,7 +1569,7 @@ Z = (195, 195, 195)
   ............IIII
   .............III
 }
-# tile 79 (missile zap 1 3)
+# tile 81 (missile zap 1 3)
 {
   .............III
   ............IIII
@@ -1550,7 +1588,7 @@ Z = (195, 195, 195)
   IIII............
   III.............
 }
-# tile 80 (fire zap 2 0)
+# tile 82 (fire zap 2 0)
 {
   .......CC.......
   ......CCCC......
@@ -1569,7 +1607,7 @@ Z = (195, 195, 195)
   ......CCCC......
   .......CC.......
 }
-# tile 81 (fire zap 2 1)
+# tile 83 (fire zap 2 1)
 {
   ................
   ................
@@ -1588,7 +1626,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 82 (fire zap 2 2)
+# tile 84 (fire zap 2 2)
 {
   CCC.............
   CCCC............
@@ -1607,7 +1645,7 @@ Z = (195, 195, 195)
   ............CCCC
   .............CCC
 }
-# tile 83 (fire zap 2 3)
+# tile 85 (fire zap 2 3)
 {
   .............CCC
   ............CCCC
@@ -1626,7 +1664,7 @@ Z = (195, 195, 195)
   CCCC............
   CCC.............
 }
-# tile 84 (frost zap 3 0)
+# tile 86 (frost zap 3 0)
 {
   .......NN.......
   ......NNNN......
@@ -1645,7 +1683,7 @@ Z = (195, 195, 195)
   ......NNNN......
   .......NN.......
 }
-# tile 85 (frost zap 3 1)
+# tile 87 (frost zap 3 1)
 {
   ................
   ................
@@ -1664,7 +1702,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 86 (frost zap 3 2)
+# tile 88 (frost zap 3 2)
 {
   NNN.............
   NNNN............
@@ -1683,7 +1721,7 @@ Z = (195, 195, 195)
   ............NNNN
   .............NNN
 }
-# tile 87 (frost zap 3 3)
+# tile 89 (frost zap 3 3)
 {
   .............NNN
   ............NNNN
@@ -1702,7 +1740,7 @@ Z = (195, 195, 195)
   NNNN............
   NNN.............
 }
-# tile 88 (sleep zap 4 0)
+# tile 90 (sleep zap 4 0)
 {
   .......BB.......
   ......BBBB......
@@ -1721,7 +1759,7 @@ Z = (195, 195, 195)
   ......BBBB......
   .......BB.......
 }
-# tile 89 (sleep zap 4 1)
+# tile 91 (sleep zap 4 1)
 {
   ................
   ................
@@ -1740,7 +1778,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 90 (sleep zap 4 2)
+# tile 92 (sleep zap 4 2)
 {
   BBB.............
   BBBB............
@@ -1759,7 +1797,7 @@ Z = (195, 195, 195)
   ............BBBB
   .............BBB
 }
-# tile 91 (sleep zap 4 3)
+# tile 93 (sleep zap 4 3)
 {
   .............BBB
   ............BBBB
@@ -1778,7 +1816,7 @@ Z = (195, 195, 195)
   BBBB............
   BBB.............
 }
-# tile 92 (death zap 5 0)
+# tile 94 (death zap 5 0)
 {
   .......AA.......
   ......AAAA......
@@ -1797,7 +1835,7 @@ Z = (195, 195, 195)
   ......AAAA......
   .......AA.......
 }
-# tile 93 (death zap 5 1)
+# tile 95 (death zap 5 1)
 {
   ................
   ................
@@ -1816,7 +1854,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 94 (death zap 5 2)
+# tile 96 (death zap 5 2)
 {
   AAA.............
   AAAA............
@@ -1835,7 +1873,7 @@ Z = (195, 195, 195)
   ............AAAA
   .............AAA
 }
-# tile 95 (death zap 5 3)
+# tile 97 (death zap 5 3)
 {
   .............AAA
   ............AAAA
@@ -1854,7 +1892,7 @@ Z = (195, 195, 195)
   AAAA............
   AAA.............
 }
-# tile 96 (lightning zap 6 0)
+# tile 98 (lightning zap 6 0)
 {
   .......NN.......
   ......NNNN......
@@ -1873,7 +1911,7 @@ Z = (195, 195, 195)
   ......NNNN......
   .......NN.......
 }
-# tile 97 (lightning zap 6 1)
+# tile 99 (lightning zap 6 1)
 {
   ................
   ................
@@ -1892,7 +1930,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 98 (lightning zap 6 2)
+# tile 100 (lightning zap 6 2)
 {
   NNN.............
   NNNN............
@@ -1911,7 +1949,7 @@ Z = (195, 195, 195)
   ............NNNN
   .............NNN
 }
-# tile 99 (lightning zap 6 3)
+# tile 101 (lightning zap 6 3)
 {
   .............NNN
   ............NNNN
@@ -1930,7 +1968,7 @@ Z = (195, 195, 195)
   NNNN............
   NNN.............
 }
-# tile 100 (poison gas zap 7 0)
+# tile 102 (poison gas zap 7 0)
 {
   .......FF.......
   ......FFFF......
@@ -1949,7 +1987,7 @@ Z = (195, 195, 195)
   ......FFFF......
   .......FF.......
 }
-# tile 101 (poison gas zap 7 1)
+# tile 103 (poison gas zap 7 1)
 {
   ................
   ................
@@ -1968,7 +2006,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 102 (poison gas zap 7 2)
+# tile 104 (poison gas zap 7 2)
 {
   FFF.............
   FFFF............
@@ -1987,7 +2025,7 @@ Z = (195, 195, 195)
   ............FFFF
   .............FFF
 }
-# tile 103 (poison gas zap 7 3)
+# tile 105 (poison gas zap 7 3)
 {
   .............FFF
   ............FFFF
@@ -2006,7 +2044,7 @@ Z = (195, 195, 195)
   FFFF............
   FFF.............
 }
-# tile 104 (acid zap 8 0)
+# tile 106 (acid zap 8 0)
 {
   .......GG.......
   ......GGGG......
@@ -2025,7 +2063,7 @@ Z = (195, 195, 195)
   ......GGGG......
   .......GG.......
 }
-# tile 105 (acid zap 8 1)
+# tile 107 (acid zap 8 1)
 {
   ................
   ................
@@ -2044,7 +2082,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 106 (acid zap 8 2)
+# tile 108 (acid zap 8 2)
 {
   GGG.............
   GGGG............
@@ -2063,7 +2101,7 @@ Z = (195, 195, 195)
   ............GGGG
   .............GGG
 }
-# tile 107 (acid zap 8 3)
+# tile 109 (acid zap 8 3)
 {
   .............GGG
   ............GGGG
@@ -2082,7 +2120,7 @@ Z = (195, 195, 195)
   GGGG............
   GGG.............
 }
-# tile 108 (dig beam)
+# tile 110 (dig beam)
 {
   ....AAAA........
   ..A....AA..AA...
@@ -2101,7 +2139,7 @@ Z = (195, 195, 195)
   ....AA....AAA...
   ................
 }
-# tile 109 (flash beam)
+# tile 111 (flash beam)
 {
   ................
   .....NNNNNN.....
@@ -2120,7 +2158,7 @@ Z = (195, 195, 195)
   .....NNNNNN.....
   ................
 }
-# tile 110 (boom left)
+# tile 112 (boom left)
 {
   ................
   ................
@@ -2139,7 +2177,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 111 (boom right)
+# tile 113 (boom right)
 {
   ................
   ................
@@ -2158,7 +2196,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 112 (shield1)
+# tile 114 (shield1)
 {
   ................
   .....I....I.....
@@ -2177,7 +2215,7 @@ Z = (195, 195, 195)
   .....I....I.....
   ................
 }
-# tile 113 (shield2)
+# tile 115 (shield2)
 {
   ................
   .CCCCCCCCCCCCCCC
@@ -2196,7 +2234,7 @@ Z = (195, 195, 195)
   .CCCCCCCCCCCCCC.
   ................
 }
-# tile 114 (shield3)
+# tile 116 (shield3)
 {
   .......HH.......
   .......HH.......
@@ -2215,7 +2253,7 @@ Z = (195, 195, 195)
   .......HH.......
   .......HH.......
 }
-# tile 115 (shield4)
+# tile 117 (shield4)
 {
   ................
   ......NNNNN.....
@@ -2234,7 +2272,7 @@ Z = (195, 195, 195)
   .....NNNNN......
   ................
 }
-# tile 116 (poison cloud)
+# tile 118 (poison cloud)
 {
   BBBBBBBBBBBBBBBB
   BBBBBFFFFFFFBBBB
@@ -2253,7 +2291,7 @@ Z = (195, 195, 195)
   BBBBBBGGGGBBBBBB
   BBBBBBBBBBBBBBBB
 }
-# tile 117 (valid position)
+# tile 119 (valid position)
 {
   ................
   ................
@@ -2272,7 +2310,7 @@ Z = (195, 195, 195)
   .......FF.......
   ................
 }
-# tile 118 (swallow top left)
+# tile 120 (swallow top left)
 {
   AAAAAAADDDDDDAAA
   AAAAADDDDDDDDDDD
@@ -2291,7 +2329,7 @@ Z = (195, 195, 195)
   AAAADDDDDD......
   AAAADDDDDD......
 }
-# tile 119 (swallow top center)
+# tile 121 (swallow top center)
 {
   AAAAAAAAAAAAAAAA
   DDAAAAAAAAAAAAAA
@@ -2310,7 +2348,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 120 (swallow top right)
+# tile 122 (swallow top right)
 {
   AAAAAAAAAAAAAAAA
   AAADDDDDAAAAAAAA
@@ -2329,7 +2367,7 @@ Z = (195, 195, 195)
   ....DDDDDDDDDDDD
   ....DDDDDDDDDDDA
 }
-# tile 121 (swallow middle left)
+# tile 123 (swallow middle left)
 {
   AAAADDDDDD......
   AAAADDDDDDD.....
@@ -2348,7 +2386,7 @@ Z = (195, 195, 195)
   DDDDDDD.........
   DDCCDDD.........
 }
-# tile 122 (swallow middle right)
+# tile 124 (swallow middle right)
 {
   ....DDDDDDDDDDDA
   ....DDDDDDDDDDDA
@@ -2367,7 +2405,7 @@ Z = (195, 195, 195)
   ......DDDDDDDDAA
   .......DDDDDDDAA
 }
-# tile 123 (swallow bottom left)
+# tile 125 (swallow bottom left)
 {
   DDDCDDD.........
   DDDCDDD.........
@@ -2386,7 +2424,7 @@ Z = (195, 195, 195)
   AAAAAAAAAAAADDDD
   AAAAAAAAAAAAAADD
 }
-# tile 124 (swallow bottom center)
+# tile 126 (swallow bottom center)
 {
   ................
   ................
@@ -2405,7 +2443,7 @@ Z = (195, 195, 195)
   DDDDDDDDDDDDDDDD
   DDDDDDDDDDDDDDAA
 }
-# tile 125 (swallow bottom right)
+# tile 127 (swallow bottom right)
 {
   ......DDDDDDDDAA
   ......DDDDDDDDDA
@@ -2424,7 +2462,7 @@ Z = (195, 195, 195)
   DDAAAAAAAAAAAAAA
   AAAAAAAAAAAAAAAA
 }
-# tile 126 (explosion dark top left)
+# tile 128 (explosion dark top left)
 {
   ................
   ................
@@ -2443,7 +2481,7 @@ Z = (195, 195, 195)
   ..AAAA..AAAA....
   ..AAA..AAAAA....
 }
-# tile 127 (explosion dark top center)
+# tile 129 (explosion dark top center)
 {
   ................
   ................
@@ -2462,7 +2500,7 @@ Z = (195, 195, 195)
   ........A.A.APAA
   .PA...APAAAAAAAA
 }
-# tile 128 (explosion dark top right)
+# tile 130 (explosion dark top right)
 {
   ................
   ................
@@ -2481,7 +2519,7 @@ Z = (195, 195, 195)
   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..
@@ -2500,7 +2538,7 @@ Z = (195, 195, 195)
   ..A.A...AAP...PA
   ....A.........PA
 }
-# tile 130 (explosion dark middle center)
+# tile 132 (explosion dark middle center)
 {
   APAAA..PPAPAAAAA
   .APA..A.AAAPAAA.
@@ -2519,7 +2557,7 @@ Z = (195, 195, 195)
   AAAAAAAAAAAAA.AA
   AAAAAAAAAAA.HH..
 }
-# tile 131 (explosion dark middle right)
+# tile 133 (explosion dark middle right)
 {
   ..AAA.A.A.AAAA..
   ..AAAAA.A.AAAA..
@@ -2538,7 +2576,7 @@ Z = (195, 195, 195)
   AAA...AAAAAAA...
   ....PPAAAAAAAA..
 }
-# tile 132 (explosion dark bottom left)
+# tile 134 (explosion dark bottom left)
 {
   ....A.......A..P
   ....A.......AA..
@@ -2557,7 +2595,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 133 (explosion dark bottom center)
+# tile 135 (explosion dark bottom center)
 {
   PPPAAAAAPAAA.A..
   AAPPAAPPPPA.A...
@@ -2576,7 +2614,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 134 (explosion dark bottom right)
+# tile 136 (explosion dark bottom right)
 {
   ....P..AAAAAAA..
   ..A..A.AA.A.AA..
@@ -2595,7 +2633,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 135 (explosion noxious top left)
+# tile 137 (explosion noxious top left)
 {
   ................
   ................
@@ -2614,7 +2652,7 @@ Z = (195, 195, 195)
   ..FFFF..FFFF....
   ..FFF..FFFFF....
 }
-# tile 136 (explosion noxious top center)
+# tile 138 (explosion noxious top center)
 {
   ................
   ................
@@ -2633,7 +2671,7 @@ Z = (195, 195, 195)
   ........F.F.FGFF
   .GH...HGHHFFFFFF
 }
-# tile 137 (explosion noxious top right)
+# tile 139 (explosion noxious top right)
 {
   ................
   ................
@@ -2652,7 +2690,7 @@ Z = (195, 195, 195)
   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..
@@ -2671,7 +2709,7 @@ Z = (195, 195, 195)
   ..F.F...FHG...GH
   ....F.........GH
 }
-# tile 139 (explosion noxious middle center)
+# tile 141 (explosion noxious middle center)
 {
   FGHFF..GGFGHFFFF
   .HGH..F.FFHGFHF.
@@ -2690,7 +2728,7 @@ Z = (195, 195, 195)
   HHHHNHNHN.GGG.GF
   GGGGNHHHGGG.HH..
 }
-# tile 140 (explosion noxious middle right)
+# tile 142 (explosion noxious middle right)
 {
   ..FFF.F.F.FFFF..
   ..FFFFF.F.FFFF..
@@ -2709,7 +2747,7 @@ Z = (195, 195, 195)
   HFH...FFFFFFF...
   ....GGFFFFFFFF..
 }
-# tile 141 (explosion noxious bottom left)
+# tile 143 (explosion noxious bottom left)
 {
   ....F.......H..G
   ....F.......FH..
@@ -2728,7 +2766,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 142 (explosion noxious bottom center)
+# tile 144 (explosion noxious bottom center)
 {
   GGGHHHHHGHHH.H..
   HHGGHHGGGGH.F...
@@ -2747,7 +2785,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 143 (explosion noxious bottom right)
+# tile 145 (explosion noxious bottom right)
 {
   ....G..FFFFFFF..
   ..F..F.FF.F.FF..
@@ -2766,7 +2804,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 144 (explosion muddy top left)
+# tile 146 (explosion muddy top left)
 {
   ................
   ................
@@ -2785,7 +2823,7 @@ Z = (195, 195, 195)
   ..JJJJKKJJJJKKKK
   ..JJJKKJJJJJKKKK
 }
-# tile 145 (explosion muddy top center)
+# tile 147 (explosion muddy top center)
 {
   ................
   ................
@@ -2804,7 +2842,7 @@ Z = (195, 195, 195)
   KKKKKKKKJKJKJCJJ
   KCLKKKLCLLJJJJJJ
 }
-# tile 146 (explosion muddy top right)
+# tile 148 (explosion muddy top right)
 {
   ................
   ................
@@ -2823,7 +2861,7 @@ Z = (195, 195, 195)
   JJKJKKJKJJJJ....
   JKJJKKJKJJJJJ...
 }
-# tile 147 (explosion muddy middle left)
+# tile 149 (explosion muddy middle left)
 {
   ..JJJKJKJJJKKKKK
   ..JJJKJJJJJKJCKK
@@ -2842,7 +2880,7 @@ Z = (195, 195, 195)
   ..J.JKKKJLCKKKCL
   ....JKKKKKKKKKCL
 }
-# tile 148 (explosion muddy middle center)
+# tile 150 (explosion muddy middle center)
 {
   JCLJJKKCCJCLJJJJ
   KLCLKKJKJJLCJLJK
@@ -2861,7 +2899,7 @@ Z = (195, 195, 195)
   LLLLCLCLCKCCCKCJ
   CCCCCLLLCCCKLLKK
 }
-# tile 149 (explosion muddy middle right)
+# tile 151 (explosion muddy middle right)
 {
   KKJJJKJKJKJJJJ..
   KKJJJJJKJKJJJJ..
@@ -2880,7 +2918,7 @@ Z = (195, 195, 195)
   LJLKKKJJJJJJJ...
   KKKKCCJJJJJJJJ..
 }
-# tile 150 (explosion muddy bottom left)
+# tile 152 (explosion muddy bottom left)
 {
   ....JKKKKKKKLKKC
   ....JKKKKKKKJLKK
@@ -2899,7 +2937,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 151 (explosion muddy bottom center)
+# tile 153 (explosion muddy bottom center)
 {
   CCCLLLLLCLLLKLKK
   LLCCLLCCCCLKJKKK
@@ -2918,7 +2956,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 152 (explosion muddy bottom right)
+# tile 154 (explosion muddy bottom right)
 {
   KKKKCKKJJJJJJJ..
   KKJKKJKJJKJKJJ..
@@ -2937,7 +2975,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 153 (explosion wet top left)
+# tile 155 (explosion wet top left)
 {
   ................
   ................
@@ -2956,7 +2994,7 @@ Z = (195, 195, 195)
   ..EEEEPPEEEEPPPP
   ..EEEPPEEEEEPPPP
 }
-# tile 154 (explosion wet top center)
+# tile 156 (explosion wet top center)
 {
   ................
   ................
@@ -2975,7 +3013,7 @@ Z = (195, 195, 195)
   PPPPPPPPEPEPEBEE
   PBNPPPNBEEEEEEEE
 }
-# tile 155 (explosion wet top right)
+# tile 157 (explosion wet top right)
 {
   ................
   ................
@@ -2994,7 +3032,7 @@ Z = (195, 195, 195)
   EEPEPPEPEEEE....
   EPEEPPEPEEEEE...
 }
-# tile 156 (explosion wet middle left)
+# tile 158 (explosion wet middle left)
 {
   ..EEEPEPEEEPPPPP
   ..EEEPEEEEEPEBPP
@@ -3013,7 +3051,7 @@ Z = (195, 195, 195)
   ..E.EPPPENBPPPBE
   ....EPPPPPPPPPBE
 }
-# tile 157 (explosion wet middle center)
+# tile 159 (explosion wet middle center)
 {
   EBNEEPPBBEBNEEEE
   PNBNPPEPEEEBENEP
@@ -3032,7 +3070,7 @@ Z = (195, 195, 195)
   EEEEEEEEEPBBBPBE
   BBBBEEEEBBBPNNPP
 }
-# tile 158 (explosion wet middle right)
+# tile 160 (explosion wet middle right)
 {
   PPEEEPEPEPEEEE..
   PPEEEEEPEPEEEE..
@@ -3051,7 +3089,7 @@ Z = (195, 195, 195)
   NENPPPEEEEEEE...
   PPPPBBEEEEEEEE..
 }
-# tile 159 (explosion wet bottom left)
+# tile 161 (explosion wet bottom left)
 {
   ....EPPPPPPPNPPB
   ....EPPPPPPPENPP
@@ -3070,7 +3108,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 160 (explosion wet bottom center)
+# tile 162 (explosion wet bottom center)
 {
   BBBEEEEEBEEEPEPP
   EEBBEEBBBBEPEPPP
@@ -3089,7 +3127,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 161 (explosion wet bottom right)
+# tile 163 (explosion wet bottom right)
 {
   PPPPBPPEEEEEEE..
   PPEPPEPEEPEPEE..
@@ -3108,7 +3146,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 162 (explosion magical top left)
+# tile 164 (explosion magical top left)
 {
   ................
   ................
@@ -3127,7 +3165,7 @@ Z = (195, 195, 195)
   ..EEEEIIEEEEIIII
   ..EEEIIEEEEEIIII
 }
-# tile 163 (explosion magical top center)
+# tile 165 (explosion magical top center)
 {
   ................
   ................
@@ -3146,7 +3184,7 @@ Z = (195, 195, 195)
   IIIIIIIIEIEIELEE
   ILHIIIHLHHEEEEEE
 }
-# tile 164 (explosion magical top right)
+# tile 166 (explosion magical top right)
 {
   ................
   ................
@@ -3165,7 +3203,7 @@ Z = (195, 195, 195)
   EEIEIIEIEEEE....
   EIEEIIEIEEEEE...
 }
-# tile 165 (explosion magical middle left)
+# tile 167 (explosion magical middle left)
 {
   ..EEEIEIEEEIIIII
   ..EEEIEEEEEIEIII
@@ -3184,7 +3222,7 @@ Z = (195, 195, 195)
   ..E.EIIIENIIIIIN
   ....EIIIIIIIIIIN
 }
-# tile 166 (explosion magical middle center)
+# tile 168 (explosion magical middle center)
 {
   EINEEIIIIEINEEEE
   ININIIEIEENIENEI
@@ -3203,7 +3241,7 @@ Z = (195, 195, 195)
   NNNNNNNNNIIIIIIE
   IIIINNNNIIIINNII
 }
-# tile 167 (explosion magical middle right)
+# tile 169 (explosion magical middle right)
 {
   IIEEEIEIEIEEEE..
   IIEEEEEIEIEEEE..
@@ -3222,7 +3260,7 @@ Z = (195, 195, 195)
   NENIIIEEEEEEE...
   IIIIIIEEEEEEEE..
 }
-# tile 168 (explosion magical bottom left)
+# tile 170 (explosion magical bottom left)
 {
   ....EIIIIIIIHIII
   ....EIIIIIIIEHII
@@ -3241,7 +3279,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 169 (explosion magical bottom center)
+# tile 171 (explosion magical bottom center)
 {
   IIINNNNNINNNINII
   NNIINNIIIINIEIII
@@ -3260,7 +3298,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 170 (explosion magical bottom right)
+# tile 172 (explosion magical bottom right)
 {
   IIIIIIIEEEEEEE..
   IIEIIEIEEIEIEE..
@@ -3279,7 +3317,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 171 (explosion fiery top left)
+# tile 173 (explosion fiery top left)
 {
   ................
   ................
@@ -3298,7 +3336,7 @@ Z = (195, 195, 195)
   ..DDDDCCDDDDCCCC
   ..DDDCCDDDDDCCCC
 }
-# tile 172 (explosion fiery top center)
+# tile 174 (explosion fiery top center)
 {
   ................
   ................
@@ -3317,7 +3355,7 @@ Z = (195, 195, 195)
   CCCCCCCCDCDCDLDD
   CLHCCCHLHHDDDDDD
 }
-# tile 173 (explosion fiery top right)
+# tile 175 (explosion fiery top right)
 {
   ................
   ................
@@ -3336,7 +3374,7 @@ Z = (195, 195, 195)
   DDCDCCDCDDDD....
   DCDDCCDCDDDDD...
 }
-# tile 174 (explosion fiery middle left)
+# tile 176 (explosion fiery middle left)
 {
   ..DDDCDCDDDCCCCC
   ..DDDCDDDDDCDLCC
@@ -3355,7 +3393,7 @@ Z = (195, 195, 195)
   ..D.DCCCDHLCCCLH
   ....DCCCCCCCCCLH
 }
-# tile 175 (explosion fiery middle center)
+# tile 177 (explosion fiery middle center)
 {
   DLHDDCCLLDLHDDDD
   CHLHCCDCDDHLDHDC
@@ -3374,7 +3412,7 @@ Z = (195, 195, 195)
   HHHHNHNHNCLLLCLD
   LLLLNHHHLLLCHHCC
 }
-# tile 176 (explosion fiery middle right)
+# tile 178 (explosion fiery middle right)
 {
   CCDDDCDCDCDDDD..
   CCDDDDDCDCDDDD..
@@ -3393,7 +3431,7 @@ Z = (195, 195, 195)
   HDHCCCDDDDDDD...
   CCCCLLDDDDDDDD..
 }
-# tile 177 (explosion fiery bottom left)
+# tile 179 (explosion fiery bottom left)
 {
   ....DCCCCCCCHCCL
   ....DCCCCCCCDHCC
@@ -3412,7 +3450,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 178 (explosion fiery bottom center)
+# tile 180 (explosion fiery bottom center)
 {
   LLLHHHHHLHHHCHCC
   HHLLHHLLLLHCDCCC
@@ -3431,7 +3469,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 179 (explosion fiery bottom right)
+# tile 181 (explosion fiery bottom right)
 {
   CCCCLCCDDDDDDD..
   CCDCCDCDDCDCDD..
@@ -3450,7 +3488,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 180 (explosion frosty top left)
+# tile 182 (explosion frosty top left)
 {
   ................
   ................
@@ -3469,7 +3507,7 @@ Z = (195, 195, 195)
   ..EEEEPPNBEEPPPP
   ..EEEPPEEEEEPPPP
 }
-# tile 181 (explosion frosty top center)
+# tile 183 (explosion frosty top center)
 {
   ................
   ................
@@ -3488,7 +3526,7 @@ Z = (195, 195, 195)
   PPPPPPPPEPEPEBEE
   PBNPPPNBNNEEEEEE
 }
-# tile 182 (explosion frosty top right)
+# tile 184 (explosion frosty top right)
 {
   ................
   ................
@@ -3507,7 +3545,7 @@ Z = (195, 195, 195)
   EEPEPPEPEEEE....
   EPEEPPEPEEEEE...
 }
-# tile 183 (explosion frosty middle left)
+# tile 185 (explosion frosty middle left)
 {
   ..EEEPEPEEEPPPPP
   ..EEEPEEEEEPEBPP
@@ -3526,7 +3564,7 @@ Z = (195, 195, 195)
   ..E.EPPPENBPPPBN
   ....EPPPPPPPPPBN
 }
-# tile 184 (explosion frosty middle center)
+# tile 186 (explosion frosty middle center)
 {
   EBNEEPPBBEBNEEEE
   PNBNPPEPEENBENEP
@@ -3545,7 +3583,7 @@ Z = (195, 195, 195)
   NNNNNNNNNPBBBPBE
   BBBBNNNNBBBPNNPP
 }
-# tile 185 (explosion frosty middle right)
+# tile 187 (explosion frosty middle right)
 {
   PPEEEPEPEPEEEE..
   PPEEEEEPEPEEEE..
@@ -3564,7 +3602,7 @@ Z = (195, 195, 195)
   NENPPPEEEEEEE...
   PPPPBBEEEEEEEE..
 }
-# tile 186 (explosion frosty bottom left)
+# tile 188 (explosion frosty bottom left)
 {
   ....EPPPPPPPNPPB
   ....EPPPPPPPENPP
@@ -3583,7 +3621,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 187 (explosion frosty bottom center)
+# tile 189 (explosion frosty bottom center)
 {
   BBBNNNNNBNNNPNPP
   NNBBNNBBBBNPEPPP
@@ -3602,7 +3640,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 188 (explosion frosty bottom right)
+# tile 190 (explosion frosty bottom right)
 {
   PPPPBPPEEEEEEE..
   PPEPPEPEEPEPEE..
@@ -3621,7 +3659,7 @@ Z = (195, 195, 195)
   ...........N....
   ................
 }
-# tile 189 (warning 0)
+# tile 191 (warning 0)
 {
   ................
   ................
@@ -3640,7 +3678,7 @@ Z = (195, 195, 195)
   .......AA.......
   ................
 }
-# tile 190 (warning 1)
+# tile 192 (warning 1)
 {
   ................
   ................
@@ -3659,7 +3697,7 @@ Z = (195, 195, 195)
   .......AA.......
   ................
 }
-# tile 191 (warning 2)
+# tile 193 (warning 2)
 {
   ................
   ................
@@ -3678,7 +3716,7 @@ Z = (195, 195, 195)
   .......AA.......
   ................
 }
-# tile 192 (warning 3)
+# tile 194 (warning 3)
 {
   ................
   ................
@@ -3697,7 +3735,7 @@ Z = (195, 195, 195)
   .......AA.......
   ................
 }
-# tile 193 (warning 4)
+# tile 195 (warning 4)
 {
   ................
   ................
@@ -3716,7 +3754,7 @@ Z = (195, 195, 195)
   .......AA.......
   ................
 }
-# tile 194 (warning 5)
+# tile 196 (warning 5)
 {
   ................
   ................
@@ -3735,7 +3773,7 @@ Z = (195, 195, 195)
   .......AA.......
   ................
 }
-# tile 195 (unexplored)
+# tile 197 (unexplored)
 {
   AAAAAAAAAAAAAAAA
   AAAAAAAAAAAAAAAA
@@ -3754,7 +3792,7 @@ Z = (195, 195, 195)
   AAAAAAAAAAAAAAAA
   AAAAAAAAAAAAAAAA
 }
-# tile 196 (nothing)
+# tile 198 (nothing)
 {
   AAAAAAAAAAAAAAAA
   AAAAAAAAAAAAAAAA
@@ -3773,7 +3811,7 @@ Z = (195, 195, 195)
   AAAAAAAAAAAAAAAA
   AAAAAAAAAAAAAAAA
 }
-# tile 197 (mines walls vertical)
+# tile 199 (mines walls vertical)
 {
   AJJKKKACJAAJJJAA
   AJKKKACLJJAJJJJA
@@ -3792,7 +3830,7 @@ Z = (195, 195, 195)
   AAJACKCKKJJJAJAA
   AAJCKKJAAAJJJJJA
 }
-# tile 198 (mines walls horizontal)
+# tile 200 (mines walls horizontal)
 {
   AJAAAAAAJJAAAJAA
   JJJAAAJJJJJAAAAJ
@@ -3811,7 +3849,7 @@ Z = (195, 195, 195)
   JJJJJJJJJJJJJJJJ
   AAAAAAAAAAAAAAAA
 }
-# tile 199 (mines walls tlcorn)
+# tile 201 (mines walls tlcorn)
 {
   AAAAAAKCCKKJAAAA
   AAAAKKCLCJKJJAAA
@@ -3830,7 +3868,7 @@ Z = (195, 195, 195)
   AAJACKCKKJJJAJAA
   AAJCKKJAAAJJJJJA
 }
-# tile 200 (mines walls trcorn)
+# tile 202 (mines walls trcorn)
 {
   AAAAAAKCCKKJAAAA
   AAAAKKCLCJKJJAAA
@@ -3849,7 +3887,7 @@ Z = (195, 195, 195)
   AAJACKCKKJJJAJAA
   AAJCKKJAAAJJJJJA
 }
-# tile 201 (mines walls blcorn)
+# tile 203 (mines walls blcorn)
 {
   AKKKAAKKKKAAJJJA
   AKKAAKCCCJJJAAJA
@@ -3868,7 +3906,7 @@ Z = (195, 195, 195)
   AJJJJJJJJJJJJJJJ
   AAAAAAAAAAAAAAAA
 }
-# tile 202 (mines walls brcorn)
+# tile 204 (mines walls brcorn)
 {
   AKKAAAKKAAAAJJJA
   AKAAKKLCKAAAAAJA
@@ -3887,7 +3925,7 @@ Z = (195, 195, 195)
   JJJJJJJJJJJJJJJA
   AAAAAAAAAAAAAAAA
 }
-# tile 203 (mines walls cross wall)
+# tile 205 (mines walls cross wall)
 {
   AAAAAAKCCKKJAAAA
   AAAAKCCLCJKJJAAA
@@ -3906,7 +3944,7 @@ Z = (195, 195, 195)
   AAJACKCKKJJJAJAA
   AAJCKKJAAAJJJJJA
 }
-# tile 204 (mines walls tuwall)
+# tile 206 (mines walls tuwall)
 {
   AKKAAAKKKKAAJJJA
   AKAAKKLCCJJJAAJA
@@ -3925,7 +3963,7 @@ Z = (195, 195, 195)
   JJJJJJJJJJJJJJJJ
   AAAAAAAAAAAAAAAA
 }
-# tile 205 (mines walls tdwall)
+# tile 207 (mines walls tdwall)
 {
   AAAAAAKCCKKJAAAA
   AAAAKCCLCJKJJAAA
@@ -3944,7 +3982,7 @@ Z = (195, 195, 195)
   AAJACKCKKJJJAJAA
   AAJCKKJAAAJJJJJA
 }
-# tile 206 (mines walls tlwall)
+# tile 208 (mines walls tlwall)
 {
   AKKAACKCCKKJAJJA
   AKACKKKLLJKJJAJA
@@ -3963,7 +4001,7 @@ Z = (195, 195, 195)
   AAJACKCKKJJJAJAA
   AAJCKKJAAAJJJJJA
 }
-# tile 207 (mines walls trwall)
+# tile 209 (mines walls trwall)
 {
   AKKAACKCCKKJAJJA
   AKACKKCLCJKJJAJA
@@ -3982,7 +4020,7 @@ Z = (195, 195, 195)
   AAJACKCKKJJJAJAA
   AAJCKKJAAAJJJJJA
 }
-# tile 208 (gehennom walls vertical)
+# tile 210 (gehennom walls vertical)
 {
   ALLDAJ11111JLLDA
   ADDDAJ1J11JJDDDA
@@ -4001,7 +4039,7 @@ Z = (195, 195, 195)
   AJJJAJJ1111JJJJA
   AD11AJJ1111JD1JA
 }
-# tile 209 (gehennom walls horizontal)
+# tile 211 (gehennom walls horizontal)
 {
   AAALDDAAAAALDDAA
   DDDLDDAJDDDLDDAJ
@@ -4020,7 +4058,7 @@ Z = (195, 195, 195)
   JJJJJJJJJJJJJJJJ
   AAAAAAAAAAAAAAAA
 }
-# tile 210 (gehennom walls tlcorn)
+# tile 212 (gehennom walls tlcorn)
 {
   AAALLLLDDDDDDAAA
   LLLLAAJJ1111DJJJ
@@ -4039,7 +4077,7 @@ Z = (195, 195, 195)
   AJJJAJJ1111JJJJA
   AD11AJJ1111JD1JA
 }
-# tile 211 (gehennom walls trcorn)
+# tile 213 (gehennom walls trcorn)
 {
   AAALLLLDDDDDDAAA
   LLLLAAJJ1111DJJJ
@@ -4058,7 +4096,7 @@ Z = (195, 195, 195)
   AJJJAJJ1111JJJJA
   AD11AJJ1111JD1JA
 }
-# tile 212 (gehennom walls blcorn)
+# tile 214 (gehennom walls blcorn)
 {
   AAALLLLDDDDDDAAA
   LLLLAAJJ1111DJJJ
@@ -4077,7 +4115,7 @@ Z = (195, 195, 195)
   JJJJJJJJJJJJJJJJ
   AAAAAAAAAAAAAAAA
 }
-# tile 213 (gehennom walls brcorn)
+# tile 215 (gehennom walls brcorn)
 {
   AAALLLLDDDDDDAAA
   LLLLAAJJ1111DJJJ
@@ -4096,7 +4134,7 @@ Z = (195, 195, 195)
   JJJJJJJJJJJJJJJJ
   AAAAAAAAAAAAAAAA
 }
-# tile 214 (gehennom walls cross wall)
+# tile 216 (gehennom walls cross wall)
 {
   AAALLLLDDDDDDAAA
   LLLLAAJJ1111DJJJ
@@ -4115,7 +4153,7 @@ Z = (195, 195, 195)
   AJJJAJJ1111JJJJA
   AD11AJJ1111JD1JA
 }
-# tile 215 (gehennom walls tuwall)
+# tile 217 (gehennom walls tuwall)
 {
   AAALLLLDDDDDDAAA
   LLLLAAJJ1111DJJJ
@@ -4134,7 +4172,7 @@ Z = (195, 195, 195)
   JJJJJJJJJJJJJJJJ
   AAAAAAAAAAAAAAAA
 }
-# tile 216 (gehennom walls tdwall)
+# tile 218 (gehennom walls tdwall)
 {
   AAALLLLDDDDDDAAA
   LLLLAAJJ1111DJJJ
@@ -4153,7 +4191,7 @@ Z = (195, 195, 195)
   AJJJAJJ1111JJJJA
   AD11AJJ1111JD1JA
 }
-# tile 217 (gehennom walls tlwall)
+# tile 219 (gehennom walls tlwall)
 {
   AAALLLLDDDDDDAAA
   LLLLAAJJ1111DJJJ
@@ -4172,7 +4210,7 @@ Z = (195, 195, 195)
   AJJJAJJ1111JJJJA
   AD11AJJ1111JD1JA
 }
-# tile 218 (gehennom walls trwall)
+# tile 220 (gehennom walls trwall)
 {
   AAALLLLDDDDDDAAA
   LLLLAAJJ1111DJJJ
@@ -4191,7 +4229,7 @@ Z = (195, 195, 195)
   AJJJAJJ1111JJJJA
   AD11AJJ1111JD1JA
 }
-# tile 219 (knox walls vertical)
+# tile 221 (knox walls vertical)
 {
   AJJJAAACJAAAJJJA
   AJJJAACLJJAAJJJA
@@ -4210,7 +4248,7 @@ Z = (195, 195, 195)
   AAJAAACKKJAAAJAA
   ACJJAAAAAAAACJJA
 }
-# tile 220 (knox walls horizontal)
+# tile 222 (knox walls horizontal)
 {
   AJAAAJAAAJAAAJAA
   JJJAAAJAJJJAAAJA
@@ -4229,7 +4267,7 @@ Z = (195, 195, 195)
   KJJACJJAKJJACJJA
   AAAAAAAAAAAAAAAA
 }
-# tile 221 (knox walls tlcorn)
+# tile 223 (knox walls tlcorn)
 {
   AAAAAAKCJKAAAAAA
   AAAAKKCLKJKKAAAA
@@ -4248,7 +4286,7 @@ Z = (195, 195, 195)
   AAJAAACKKJAAAJAA
   ACJJAAAAAAAACJJA
 }
-# tile 222 (knox walls trcorn)
+# tile 224 (knox walls trcorn)
 {
   AAAAAAKCJKAAAAAA
   AAAAKKCLKJKKAAAA
@@ -4267,7 +4305,7 @@ Z = (195, 195, 195)
   AAJAAACKKJAAAJAA
   ACJJAAAAAAAACJJA
 }
-# tile 223 (knox walls blcorn)
+# tile 225 (knox walls blcorn)
 {
   AAAAAAKCJKAAAAAA
   AAAAKKCLKJKKAAAA
@@ -4286,7 +4324,7 @@ Z = (195, 195, 195)
   KJJACJJAKJJACJJA
   AAAAAAAAAAAAAAAA
 }
-# tile 224 (knox walls brcorn)
+# tile 226 (knox walls brcorn)
 {
   AAAAAAKCJKAAAAAA
   AAAAKKCLKJKKAAAA
@@ -4305,7 +4343,7 @@ Z = (195, 195, 195)
   KJJACJJAKJJACJJA
   AAAAAAAAAAAAAAAA
 }
-# tile 225 (knox walls cross wall)
+# tile 227 (knox walls cross wall)
 {
   AAAAAAKCJKAAAAAA
   AAAAKKCLKJKKAAAA
@@ -4324,7 +4362,7 @@ Z = (195, 195, 195)
   AAJAAACKKJAAAJAA
   ACJJAAAAAAAACJJA
 }
-# tile 226 (knox walls tuwall)
+# tile 228 (knox walls tuwall)
 {
   AAAAAAKCJKAAAAAA
   AAAAKKCLKJKKAAAA
@@ -4343,7 +4381,7 @@ Z = (195, 195, 195)
   KJJACJJAKJJACJJA
   AAAAAAAAAAAAAAAA
 }
-# tile 227 (knox walls tdwall)
+# tile 229 (knox walls tdwall)
 {
   AAAAAAKCJKAAAAAA
   AAAAKKCLKJKKAAAA
@@ -4362,7 +4400,7 @@ Z = (195, 195, 195)
   AAJAAACKKJAAAJAA
   ACJJAAAAAAAACJJA
 }
-# tile 228 (knox walls tlwall)
+# tile 230 (knox walls tlwall)
 {
   AAAAAAKCJKAAAAAA
   AAAAKKCLKJKKAAAA
@@ -4381,7 +4419,7 @@ Z = (195, 195, 195)
   AAJAAACKKJAAAJAA
   ACJJAAAAAAAACJJA
 }
-# tile 229 (knox walls trwall)
+# tile 231 (knox walls trwall)
 {
   AAAAAAKCJKAAAAAA
   AAAAKKCLKJKKAAAA
@@ -4400,7 +4438,7 @@ Z = (195, 195, 195)
   AAJAAACKKJAAAJAA
   ACJJAAAAAAAACJJA
 }
-# tile 230 (sokoban walls vertical)
+# tile 232 (sokoban walls vertical)
 {
   ANNBA1EEEEE1NNBA
   ABBBA1E1EE11BBBA
@@ -4419,7 +4457,7 @@ Z = (195, 195, 195)
   A111A11EEEE1111A
   ABEEA11EEEE1BE1A
 }
-# tile 231 (sokoban walls horizontal)
+# tile 233 (sokoban walls horizontal)
 {
   AAANBBAAAAANBBAA
   BBBNBBA1BBBNBBA1
@@ -4438,7 +4476,7 @@ Z = (195, 195, 195)
   1111111111111111
   AAAAAAAAAAAAAAAA
 }
-# tile 232 (sokoban walls tlcorn)
+# tile 234 (sokoban walls tlcorn)
 {
   AAANNNNBBBBBBAAA
   NNNNAA11EEEEB111
@@ -4457,7 +4495,7 @@ Z = (195, 195, 195)
   A111A11EEEE1111A
   ABEEA11EEEE1BE1A
 }
-# tile 233 (sokoban walls trcorn)
+# tile 235 (sokoban walls trcorn)
 {
   AAANNNNBBBBBBAAA
   NNNNAA11EEEEB111
@@ -4476,7 +4514,7 @@ Z = (195, 195, 195)
   A111A11EEEE1111A
   ABEEA11EEEE1BE1A
 }
-# tile 234 (sokoban walls blcorn)
+# tile 236 (sokoban walls blcorn)
 {
   AAANNNNBBBBBBAAA
   NNNNAA11EEEEB111
@@ -4495,7 +4533,7 @@ Z = (195, 195, 195)
   1111111111111111
   AAAAAAAAAAAAAAAA
 }
-# tile 235 (sokoban walls brcorn)
+# tile 237 (sokoban walls brcorn)
 {
   AAANNNNBBBBBBAAA
   NNNNAA11EEEEB111
@@ -4514,7 +4552,7 @@ Z = (195, 195, 195)
   1111111111111111
   AAAAAAAAAAAAAAAA
 }
-# tile 236 (sokoban walls cross wall)
+# tile 238 (sokoban walls cross wall)
 {
   AAANNNNBBBBBBAAA
   NNNNAA11EEEEB111
@@ -4533,7 +4571,7 @@ Z = (195, 195, 195)
   A111A11EEEE1111A
   ABEEA11EEEE1BE1A
 }
-# tile 237 (sokoban walls tuwall)
+# tile 239 (sokoban walls tuwall)
 {
   AAANNNNBBBBBBAAA
   NNNNAA11EEEEB111
@@ -4552,7 +4590,7 @@ Z = (195, 195, 195)
   1111111111111111
   AAAAAAAAAAAAAAAA
 }
-# tile 238 (sokoban walls tdwall)
+# tile 240 (sokoban walls tdwall)
 {
   AAANNNNBBBBBBAAA
   NNNNAA11EEEEB111
@@ -4571,7 +4609,7 @@ Z = (195, 195, 195)
   A111A11EEEE1111A
   ABEEA11EEEE1BE1A
 }
-# tile 239 (sokoban walls tlwall)
+# tile 241 (sokoban walls tlwall)
 {
   AAANNNNBBBBBBAAA
   NNNNAA11EEEEB111
@@ -4590,7 +4628,7 @@ Z = (195, 195, 195)
   A111A11EEEE1111A
   ABEEA11EEEE1BE1A
 }
-# tile 240 (sokoban walls trwall)
+# tile 242 (sokoban walls trwall)
 {
   AAANNNNBBBBBBAAA
   NNNNAA11EEEEB111