]> granicus.if.org Git - nethack/commitdiff
add glyphs+tiles for door+chest traps
authorPatR <rankin@nethack.org>
Wed, 27 Apr 2022 18:22:12 +0000 (11:22 -0700)
committerPatR <rankin@nethack.org>
Wed, 27 Apr 2022 18:22:12 +0000 (11:22 -0700)
When trap detection finds trapped doors and trapped chests, it shows
those as bear traps.  When the hero comes within view, they revert to
normal and the detected trap is forgotten.  This doesn't change that,
it is just groundwork to be able to show them distinctly.  Like the
TT_BEARTRAP patch, it increments EDITLEVEL so this seemed like a good
time to put the groudwork in place.

There shouldn't be any visible changes even though internal glyph and
tile values have been renumbered after inserting two new entries.
Adding traps after S_vibrating_square was quite a hassle and suffered
though a couple of off-by-one errors that weren't trivial to find and
fix.

13 files changed:
include/defsym.h
include/display.h
include/hack.h
include/patchlevel.h
include/sym.h
include/trap.h
src/do_name.c
src/mklev.c
src/monmove.c
src/pager.c
src/trap.c
win/share/other.txt
win/share/tilemap.c

index dae019524723d680c07e4176a40ebd7f17d154ad..57b6d1599ba3fdee3869d67c289e9c69453e5437 100644 (file)
     PCHAR( 49, '^',  S_squeaky_board, "squeaky board", CLR(CLR_BROWN))
     PCHAR( 50, '^',  S_bear_trap, "bear trap", CLR(HI_METAL))
     PCHAR( 51, '^',  S_land_mine, "land mine", CLR(CLR_RED))
-    PCHAR( 52, '^',  S_rolling_boulder_trap, "rolling boulder trap", CLR(CLR_GRAY))
+    PCHAR( 52, '^',  S_rolling_boulder_trap, "rolling boulder trap",
+                     CLR(CLR_GRAY))
     PCHAR( 53, '^',  S_sleeping_gas_trap, "sleeping gas trap", CLR(HI_ZAP))
     PCHAR( 54, '^',  S_rust_trap, "rust trap", CLR(CLR_BLUE))
     PCHAR( 55, '^',  S_fire_trap, "fire trap", CLR(CLR_ORANGE))
     PCHAR( 57, '^',  S_spiked_pit, "spiked pit", CLR(CLR_BLACK))
     PCHAR( 58, '^',  S_hole, "hole", CLR(CLR_BROWN))
     PCHAR( 59, '^',  S_trap_door, "trap door", CLR(CLR_BROWN))
-    PCHAR( 60, '^',  S_teleportation_trap, "teleportation trap", CLR(CLR_MAGENTA))
+    PCHAR( 60, '^',  S_teleportation_trap, "teleportation trap",
+                     CLR(CLR_MAGENTA))
     PCHAR( 61, '^',  S_level_teleporter, "level teleporter", CLR(CLR_MAGENTA))
     PCHAR( 62, '^',  S_magic_portal, "magic portal", CLR(CLR_BRIGHT_MAGENTA))
     PCHAR( 63, '"',  S_web, "web", CLR(CLR_GRAY))
     PCHAR( 64, '^',  S_statue_trap, "statue trap", CLR(CLR_GRAY))
     PCHAR( 65, '^',  S_magic_trap, "magic trap", CLR(HI_ZAP))
-    PCHAR2(66, '^',  S_anti_magic_trap, "anti magic trap", "anti-magic field", CLR(HI_ZAP))
+    PCHAR2(66, '^',  S_anti_magic_trap, "anti magic trap", "anti-magic field",
+                     CLR(HI_ZAP))
     PCHAR( 67, '^',  S_polymorph_trap, "polymorph trap", CLR(CLR_BRIGHT_GREEN))
     PCHAR( 68, '~',  S_vibrating_square, "vibrating square", CLR(CLR_MAGENTA))
+    PCHAR( 69, '^',  S_trapped_door, "trapped door", CLR(CLR_ORANGE))
+    PCHAR( 70, '^',  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(69, '|',  S_vbeam, "vertical beam", "", CLR(CLR_GRAY))
-    PCHAR2(70, '-',  S_hbeam, "horizontal beam", "", CLR(CLR_GRAY))
-    PCHAR2(71, '\\', S_lslant, "left slant beam", "", CLR(CLR_GRAY))
-    PCHAR2(72, '/',  S_rslant, "right slant beam", "", CLR(CLR_GRAY))
+    PCHAR2(71, '|',  S_vbeam, "vertical beam", "", CLR(CLR_GRAY))
+    PCHAR2(72, '-',  S_hbeam, "horizontal beam", "", CLR(CLR_GRAY))
+    PCHAR2(73, '\\', S_lslant, "left slant beam", "", CLR(CLR_GRAY))
+    PCHAR2(74, '/',  S_rslant, "right slant beam", "", CLR(CLR_GRAY))
     /* start cmap C */
-    PCHAR2(73, '*',  S_digbeam, "dig beam", "", CLR(CLR_WHITE))
-    PCHAR2(74, '!',  S_flashbeam, "flash beam", "", CLR(CLR_WHITE))
-    PCHAR2(75, ')',  S_boomleft, "boom left", "", CLR(HI_WOOD))
-    PCHAR2(76, '(',  S_boomright, "boom right", "", CLR(HI_WOOD))
+    PCHAR2(75, '*',  S_digbeam, "dig beam", "", CLR(CLR_WHITE))
+    PCHAR2(76, '!',  S_flashbeam, "flash beam", "", CLR(CLR_WHITE))
+    PCHAR2(77, ')',  S_boomleft, "boom left", "", CLR(HI_WOOD))
+    PCHAR2(78, '(',  S_boomright, "boom right", "", CLR(HI_WOOD))
     /* 4 magic shield symbols                                          */
-    PCHAR2(77, '0',  S_ss1, "shield1", "", CLR(HI_ZAP))
-    PCHAR2(78, '#',  S_ss2, "shield2", "", CLR(HI_ZAP))
-    PCHAR2(79, '@',  S_ss3, "shield3", "", CLR(HI_ZAP))
-    PCHAR2(80, '*',  S_ss4, "shield4", "", CLR(HI_ZAP))
-    PCHAR( 81, '#',  S_poisoncloud, "poison cloud", CLR(CLR_BRIGHT_GREEN))
-    PCHAR( 82, '?',  S_goodpos, "valid position", CLR(CLR_BRIGHT_GREEN))
+    PCHAR2(79, '0',  S_ss1, "shield1", "", CLR(HI_ZAP))
+    PCHAR2(80, '#',  S_ss2, "shield2", "", CLR(HI_ZAP))
+    PCHAR2(81, '@',  S_ss3, "shield3", "", CLR(HI_ZAP))
+    PCHAR2(82, '*',  S_ss4, "shield4", "", CLR(HI_ZAP))
+    PCHAR( 83, '#',  S_poisoncloud, "poison cloud", CLR(CLR_BRIGHT_GREEN))
+    PCHAR( 84, '?',  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(83, '/',  S_sw_tl, "swallow top left", "", CLR(CLR_GREEN))      /* 1 */
-    PCHAR2(84, '-',  S_sw_tc, "swallow top center", "", CLR(CLR_GREEN))    /* 2 */
-    PCHAR2(85, '\\', S_sw_tr, "swallow top right", "", CLR(CLR_GREEN))     /* 3 */
-    PCHAR2(86, '|',  S_sw_ml, "swallow middle left", "", CLR(CLR_GREEN))   /* 4 */
-    PCHAR2(87, '|',  S_sw_mr, "swallow middle right", "", CLR(CLR_GREEN))  /* 6 */
-    PCHAR2(88, '\\', S_sw_bl, "swallow bottom left", "", CLR(CLR_GREEN))   /* 7 */
-    PCHAR2(89, '-',  S_sw_bc, "swallow bottom center", "", CLR(CLR_GREEN)) /* 8 */
-    PCHAR2(90, '/',  S_sw_br, "swallow bottom right", "", CLR(CLR_GREEN))  /* 9 */
+    PCHAR2(85, '/',  S_sw_tl, "swallow top left", "", CLR(CLR_GREEN))    /*1*/
+    PCHAR2(86, '-',  S_sw_tc, "swallow top center", "", CLR(CLR_GREEN))  /*2*/
+    PCHAR2(87, '\\', S_sw_tr, "swallow top right", "", CLR(CLR_GREEN))   /*3*/
+    PCHAR2(88, '|',  S_sw_ml, "swallow middle left", "", CLR(CLR_GREEN)) /*4*/
+    PCHAR2(89, '|',  S_sw_mr, "swallow middle right", "", CLR(CLR_GREEN)) /*6*/
+    PCHAR2(90, '\\', S_sw_bl, "swallow bottom left", "", CLR(CLR_GREEN))  /*7*/
+    PCHAR2(91, '-',  S_sw_bc, "swallow bottom center", "", CLR(CLR_GREEN))/*8*/
+    PCHAR2(92, '/',  S_sw_br, "swallow bottom right", "", CLR(CLR_GREEN)) /*9*/
     /*                                                             */
     /* explosion colors are changed by reset_glyphmap() to match   */
     /* the type of expl.                                           */
     /*      |@|                                                    */
     /*      \-/                                                    */
     /*                                                             */
-    PCHAR2(91, '/',  S_expl_tl, "explosion top left", "", CLR(CLR_ORANGE))
-    PCHAR2(92, '-',  S_expl_tc, "explosion top center", "", CLR(CLR_ORANGE))
-    PCHAR2(93, '\\', S_expl_tr, "explosion top right", "", CLR(CLR_ORANGE))
-    PCHAR2(94, '|',  S_expl_ml, "explosion middle left", "", CLR(CLR_ORANGE))
-    PCHAR2(95, ' ',  S_expl_mc, "explosion middle center", "", CLR(CLR_ORANGE))
-    PCHAR2(96, '|',  S_expl_mr, "explosion middle right", "", CLR(CLR_ORANGE))
-    PCHAR2(97, '\\', S_expl_bl, "explosion bottom left", "", CLR(CLR_ORANGE))
-    PCHAR2(98, '-',  S_expl_bc, "explosion bottom center", "", CLR(CLR_ORANGE))
-    PCHAR2(99, '/',  S_expl_br, "explosion bottom right", "", CLR(CLR_ORANGE))
+    PCHAR2(93, '/',  S_expl_tl, "explosion top left", "", CLR(CLR_ORANGE))
+    PCHAR2(94, '-',  S_expl_tc, "explosion top center", "", CLR(CLR_ORANGE))
+    PCHAR2(95, '\\', S_expl_tr, "explosion top right", "", CLR(CLR_ORANGE))
+    PCHAR2(96, '|',  S_expl_ml, "explosion middle left", "", CLR(CLR_ORANGE))
+    PCHAR2(97, ' ',  S_expl_mc, "explosion middle center", "", CLR(CLR_ORANGE))
+    PCHAR2(98, '|',  S_expl_mr, "explosion middle right", "", CLR(CLR_ORANGE))
+    PCHAR2(99, '\\', S_expl_bl, "explosion bottom left", "", CLR(CLR_ORANGE))
+    PCHAR2(100, '-', S_expl_bc, "explosion bottom center", "", CLR(CLR_ORANGE))
+    PCHAR2(101, '/', S_expl_br, "explosion bottom right", "", CLR(CLR_ORANGE))
 #undef PCHAR
 #undef PCHAR2
 #endif /* PCHAR_S_ENUM || PCHAR_PARSE || PCHAR_DRAWING || PCHAR_TILES */
index eb7d01045c8f9ccad12d8f091ed0069f7ac041a2..a70279bdf2d05dee4bf720a12e76c44f43b61b04 100644 (file)
@@ -404,8 +404,8 @@ enum glyphmap_change_triggers { gm_nochange, gm_newgame, gm_levelchange,
  * Altars           Altar (unaligned, chaotic, neutral, lawful, other)
  *                  Count: 5
  *
- * cmap B           S_grave through S_vibrating_square
- *                  Count: (S_vibrating_square - S_grave) + 1 = 37
+ * cmap B           S_grave through S_arrow_trap + TRAPNUM - 1
+ *                  Count: (S_arrow_trap + (TRAPNUM - 1) - S_grave) = 39
  *
  * zap beams        set of four (there are four directions) HI_ZAP.
  *                  Count: 4 * NUM_ZAP
@@ -497,7 +497,9 @@ enum glyph_offsets {
     GLYPH_CMAP_A_OFF     = (((S_trwall - S_vwall) + 1) + GLYPH_CMAP_SOKO_OFF),
     GLYPH_ALTAR_OFF = (((S_brdnladder - S_ndoor) + 1) + GLYPH_CMAP_A_OFF),
     GLYPH_CMAP_B_OFF = (5 + GLYPH_ALTAR_OFF),
-    GLYPH_ZAP_OFF = (((S_vibrating_square - S_grave) + 1) + GLYPH_CMAP_B_OFF),
+    /*               (46           + (26  -  1)- 32     ) == 39 */
+    GLYPH_ZAP_OFF = ((S_arrow_trap + MAXTCHARS - S_grave)
+                     + GLYPH_CMAP_B_OFF),
     GLYPH_CMAP_C_OFF = ((NUM_ZAP << 2) + GLYPH_ZAP_OFF),
     GLYPH_SWALLOW_OFF = (((S_goodpos - S_digbeam) + 1) + GLYPH_CMAP_C_OFF),
     GLYPH_EXPLODE_OFF = ((NUMMONS << 3) + GLYPH_SWALLOW_OFF),
@@ -932,7 +934,7 @@ enum glyph_offsets {
     (GLYPH_CMAP_B_OFF + (S_arrow_trap - S_grave))
 #define glyph_is_trap(glyph)      \
     ((glyph) >= (GLYPH_TRAP_OFF) && \
-     (glyph) < ((GLYPH_TRAP_OFF) + (TRAPNUM - 1)))
+     (glyph) < ((GLYPH_TRAP_OFF) + MAXTCHARS))
 #define glyph_is_warning(glyph)   \
     ((glyph) >= GLYPH_WARNING_OFF \
      && (glyph) < (GLYPH_WARNING_OFF + WARNCOUNT))
index 2f54b327ce6e9ef9c5147e7ebb4bb934918ed55a..4a75195ee4b4bbf5728d02b02d8b5c60da0eb609 100644 (file)
@@ -214,6 +214,7 @@ enum misc_arti_nums {
 
 #include "rect.h"
 #include "region.h"
+#include "trap.h"
 #include "display.h"
 #include "decl.h"
 #include "timeout.h"
@@ -265,7 +266,6 @@ typedef struct sortloot_item Loot;
 
 typedef uint32_t mmflags_nht;     /* makemon MM_ flags */
 
-#include "trap.h"
 #include "flag.h"
 #include "vision.h"
 #include "engrave.h"
index d090797aec5d12edf43e16d527d1ceee31778df4..28738c0d8326f0d56ec2d9131e40baa98f3915ca 100644 (file)
@@ -17,7 +17,7 @@
  * Incrementing EDITLEVEL can be used to force invalidation of old bones
  * and save files.
  */
-#define EDITLEVEL 54
+#define EDITLEVEL 55
 
 /*
  * Development status possibilities.
index a029e4c54510e768e493cbcf9988674e2ba10fd0..f08bcd32f59fd202a5b083e0ebbe20d37a7e2f69 100644 (file)
@@ -75,13 +75,13 @@ struct symsetentry {
  */
 
 #define MAXDCHARS (S_water - S_stone + 1) /* mapped dungeon characters */
-#define MAXTCHARS (S_vibrating_square - S_arrow_trap + 1) /* trap chars */
+#define MAXTCHARS (TRAPNUM - 1) /* trap chars */
 #define MAXECHARS (S_expl_br - S_vbeam + 1) /* mapped effects characters */
 #define MAXEXPCHARS 9 /* number of explosion characters */
 
 #define DARKROOMSYM (Is_rogue_level(&u.uz) ? S_stone : S_darkroom)
 
-#define is_cmap_trap(i) ((i) >= S_arrow_trap && (i) <= S_polymorph_trap)
+#define is_cmap_trap(i) ((i) >= S_arrow_trap && (i) < S_arrow_trap + MAXTCHARS)
 #define is_cmap_drawbridge(i) ((i) >= S_vodbridge && (i) <= S_hcdbridge)
 #define is_cmap_door(i) ((i) >= S_vodoor && (i) <= S_hcdoor)
 #define is_cmap_wall(i) ((i) >= S_stone && (i) <= S_trwall)
index 5710802ab0550455774fb541a413c5e9f412db0b..5a7d431f19da268deff72ad3f991b32ea9eb20af 100644 (file)
@@ -77,9 +77,18 @@ enum trap_types {
     MAGIC_TRAP   = 20,
     ANTI_MAGIC   = 21,
     POLY_TRAP    = 22,
-    VIBRATING_SQUARE = 23,
+    VIBRATING_SQUARE = 23, /* not a trap but shown/remembered as if one
+                            * once it has been discovered */
 
-    TRAPNUM      = 24
+    /* trapped door and trapped chest aren't traps on the map, but they
+       might be shown/remembered as such after trap detection until hero
+       comes in view of them and sees the feature or object;
+       key-using or door-busting monsters who survive a door trap learn
+       to avoid other such doors [not implemented] */
+    TRAPPED_DOOR = 24, /* part of door; not present on map as a trap */
+    TRAPPED_CHEST = 25, /* part of object; not on map */
+
+    TRAPNUM = 26
 };
 
 /* some trap-related function return results */
index d44d5051285bea18e8c7dd9efd89a3438b64af8f..f275897ec04930cc5cca2ddbd8118c3bd39b8a8e 100644 (file)
@@ -913,8 +913,7 @@ getpos(coord *ccp, boolean force, const char *goal)
                         || c == (int) g.showsyms[sidx]
                         /* have '^' match webs and vibrating square or any
                            other trap that uses something other than '^' */
-                        || (c == '^' && (is_cmap_trap(sidx)
-                                         || sidx == S_vibrating_square)))
+                        || (c == '^' && is_cmap_trap(sidx)))
                         matching[sidx] = (char) ++k;
                 }
                 if (k) {
index 9965b802d3ded7a3fe13fa852d551f78c3dd96a6..aeff642e638180c3ede138bbb871c0267a13c5f2 100644 (file)
@@ -572,6 +572,8 @@ static NEARDATA const char *trap_engravings[TRAPNUM] = {
     /* 14..16: trap door, teleport, level-teleport */
     "Vlad was here", "ad aerarium", "ad aerarium", (char *) 0, (char *) 0,
     (char *) 0,      (char *) 0,    (char *) 0,    (char *) 0, (char *) 0,
+    /* 24..25 */
+    (char *) 0, (char *) 0,
 };
 
 static void
@@ -1367,7 +1369,7 @@ mktrap(
     if (tm && is_pool(tm->x, tm->y))
         return;
 
-    if (num > 0 && num < TRAPNUM) {
+    if (num > NO_TRAP && num < TRAPNUM) {
         kind = num;
     } else if (Is_rogue_level(&u.uz)) {
         switch (rn2(7)) {
@@ -1401,6 +1403,14 @@ mktrap(
             kind = rnd(TRAPNUM - 1);
             /* reject "too hard" traps */
             switch (kind) {
+            /* these are controlled by the feature or object they guard,
+               not by the map so mustn't be created on it */
+            case TRAPPED_DOOR:
+            case TRAPPED_CHEST:
+                kind = NO_TRAP;
+                break;
+            /* these can have a random location but can't be generated
+               randomly */
             case MAGIC_PORTAL:
             case VIBRATING_SQUARE:
                 kind = NO_TRAP;
index 9ae4f15b3a162ebabdbace646bcbdd47bce55ad1..bc8527cc007141f7dace1028cde24c97870bae39 100644 (file)
@@ -21,7 +21,9 @@ static boolean m_balks_at_approaching(struct monst *);
 static boolean stuff_prevents_passage(struct monst *);
 static int vamp_shift(struct monst *, struct permonst *, boolean);
 
-/* True if mtmp died */
+/* monster has triggered trapped door lock or was present when it got
+   triggered remotely (at door spot, door hit by zap);
+   returns True if mtmp dies */
 boolean
 mb_trapped(struct monst *mtmp, boolean canseeit)
 {
@@ -42,6 +44,7 @@ mb_trapped(struct monst *mtmp, boolean canseeit)
             return TRUE;
         /* will get here if lifesaved */
     }
+    mtmp->mtrapseen |= (1 << (TRAPPED_DOOR - 1));
     return FALSE;
 }
 
index ebd77f8178489ff5562ef0a919983343e5499c8c..128d68c375492b1d9dd45c70eadcd6276ee8ed27 100644 (file)
@@ -1035,7 +1035,7 @@ add_cmap_descr(
 
     if (!found) {
         /* this is the first match */
-        if (is_cmap_trap(idx)) {
+        if (is_cmap_trap(idx) && idx != S_vibrating_square) {
             Sprintf(out_str, "%sa trap", prefix);
             *hit_trap = TRUE;
         } else {
@@ -1056,7 +1056,7 @@ add_cmap_descr(
         found += append_str(out_str, (article == 2) ? the(x_str)
                                      : (article == 1) ? an(x_str)
                                        : x_str);
-        if (is_cmap_trap(idx))
+        if (is_cmap_trap(idx) && idx != S_vibrating_square)
             *hit_trap = TRUE;
     }
     return found;
index a4e783727e738caa0106fa22570c8cfb2b5ad150..e66de0966e4b407dbebcaaabe1f8864a8fa2adf8 100644 (file)
@@ -380,6 +380,9 @@ maketrap(int x, int y, int typ)
     struct trap *ttmp;
     struct rm *lev = &levl[x][y];
 
+    if (typ == TRAPPED_DOOR || typ == TRAPPED_CHEST)
+        return (struct trap *) 0;
+
     if ((ttmp = t_at(x, y)) != 0) {
         if (undestroyable_trap(ttmp->ttyp))
             return (struct trap *) 0;
index d23557e85ca82ca5a7d87f56b7ad7108d92c00ef..b3d4e3ebf174c1241130a92c05a6add6e118e1ca 100644 (file)
@@ -1414,7 +1414,45 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 73 (missile zap 1 0)
+# tile 73 (trapped door)
+{
+  AAAAAAAAAAAAAAAA
+  AAAAAAAAAAAAAAAA
+  AACCKKKKKKKKJJAA
+  ACKJJJJJJJJJJKJA
+  APJJPKJJKJJJJJJA
+  A.PP.PPPPP.BPPJA
+  A.........BPP.JA
+  A.JJ.JJJJJDAPADA
+  AJJJJKJJJJ.D.DJA
+  APKJPKJJJJJADAJA
+  A.PP.PPPPPPD.DJA
+  A.........D...DA
+  A.JJ.JJJJJJJJJJA
+  AJKJJKJJKJJJNJNA
+  AAAAAAAAAAAAAAAA
+  AAAAAAAAAAAAAAAA
+}
+# tile 74 (trapped chest)
+{
+  ................
+  ................
+  ................
+  ...CJKKKCJKKKC..
+  .CKJKKCKJKKCJJK.
+  .KJKKKKJKKKKJJJ.
+  CJKDKCJKDKCJJJJ.
+  CJKKDCJDKKCJJJJ.
+  CCCCCDHCCCCJJJJ.
+  CJJJHQQHJJJJJJJ.
+  CJKKDHHDKKCJJJJN
+  CJKDKHHKDKCJJJJA
+  CJKKKCJKKKCJJJAA
+  CJCCCCJCCCCJJAA.
+  CKKKKKKKKKKJAA..
+  .NAAAAAAAAAAA...
+}
+# tile 75 (missile zap 1 0)
 {
   .......II.......
   ......IIII......
@@ -1433,7 +1471,7 @@ Z = (195, 195, 195)
   ......IIII......
   .......II.......
 }
-# tile 74 (missile zap 1 1)
+# tile 76 (missile zap 1 1)
 {
   ................
   ................
@@ -1452,7 +1490,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 75 (missile zap 1 2)
+# tile 77 (missile zap 1 2)
 {
   III.............
   IIII............
@@ -1471,7 +1509,7 @@ Z = (195, 195, 195)
   ............IIII
   .............III
 }
-# tile 76 (missile zap 1 3)
+# tile 78 (missile zap 1 3)
 {
   .............III
   ............IIII
@@ -1490,7 +1528,7 @@ Z = (195, 195, 195)
   IIII............
   III.............
 }
-# tile 77 (fire zap 2 0)
+# tile 79 (fire zap 2 0)
 {
   .......CC.......
   ......CCCC......
@@ -1509,7 +1547,7 @@ Z = (195, 195, 195)
   ......CCCC......
   .......CC.......
 }
-# tile 78 (fire zap 2 1)
+# tile 80 (fire zap 2 1)
 {
   ................
   ................
@@ -1528,7 +1566,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 79 (fire zap 2 2)
+# tile 81 (fire zap 2 2)
 {
   CCC.............
   CCCC............
@@ -1547,7 +1585,7 @@ Z = (195, 195, 195)
   ............CCCC
   .............CCC
 }
-# tile 80 (fire zap 2 3)
+# tile 82 (fire zap 2 3)
 {
   .............CCC
   ............CCCC
@@ -1566,7 +1604,7 @@ Z = (195, 195, 195)
   CCCC............
   CCC.............
 }
-# tile 81 (frost zap 3 0)
+# tile 83 (frost zap 3 0)
 {
   .......NN.......
   ......NNNN......
@@ -1585,7 +1623,7 @@ Z = (195, 195, 195)
   ......NNNN......
   .......NN.......
 }
-# tile 82 (frost zap 3 1)
+# tile 84 (frost zap 3 1)
 {
   ................
   ................
@@ -1604,7 +1642,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 83 (frost zap 3 2)
+# tile 85 (frost zap 3 2)
 {
   NNN.............
   NNNN............
@@ -1623,7 +1661,7 @@ Z = (195, 195, 195)
   ............NNNN
   .............NNN
 }
-# tile 84 (frost zap 3 3)
+# tile 86 (frost zap 3 3)
 {
   .............NNN
   ............NNNN
@@ -1642,7 +1680,7 @@ Z = (195, 195, 195)
   NNNN............
   NNN.............
 }
-# tile 85 (sleep zap 4 0)
+# tile 87 (sleep zap 4 0)
 {
   .......BB.......
   ......BBBB......
@@ -1661,7 +1699,7 @@ Z = (195, 195, 195)
   ......BBBB......
   .......BB.......
 }
-# tile 86 (sleep zap 4 1)
+# tile 88 (sleep zap 4 1)
 {
   ................
   ................
@@ -1680,7 +1718,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 87 (sleep zap 4 2)
+# tile 89 (sleep zap 4 2)
 {
   BBB.............
   BBBB............
@@ -1699,7 +1737,7 @@ Z = (195, 195, 195)
   ............BBBB
   .............BBB
 }
-# tile 88 (sleep zap 4 3)
+# tile 90 (sleep zap 4 3)
 {
   .............BBB
   ............BBBB
@@ -1718,7 +1756,7 @@ Z = (195, 195, 195)
   BBBB............
   BBB.............
 }
-# tile 89 (death zap 5 0)
+# tile 91 (death zap 5 0)
 {
   .......AA.......
   ......AAAA......
@@ -1737,7 +1775,7 @@ Z = (195, 195, 195)
   ......AAAA......
   .......AA.......
 }
-# tile 90 (death zap 5 1)
+# tile 92 (death zap 5 1)
 {
   ................
   ................
@@ -1756,7 +1794,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 91 (death zap 5 2)
+# tile 93 (death zap 5 2)
 {
   AAA.............
   AAAA............
@@ -1775,7 +1813,7 @@ Z = (195, 195, 195)
   ............AAAA
   .............AAA
 }
-# tile 92 (death zap 5 3)
+# tile 94 (death zap 5 3)
 {
   .............AAA
   ............AAAA
@@ -1794,7 +1832,7 @@ Z = (195, 195, 195)
   AAAA............
   AAA.............
 }
-# tile 93 (lightning zap 6 0)
+# tile 95 (lightning zap 6 0)
 {
   .......NN.......
   ......NNNN......
@@ -1813,7 +1851,7 @@ Z = (195, 195, 195)
   ......NNNN......
   .......NN.......
 }
-# tile 94 (lightning zap 6 1)
+# tile 96 (lightning zap 6 1)
 {
   ................
   ................
@@ -1832,7 +1870,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 95 (lightning zap 6 2)
+# tile 97 (lightning zap 6 2)
 {
   NNN.............
   NNNN............
@@ -1851,7 +1889,7 @@ Z = (195, 195, 195)
   ............NNNN
   .............NNN
 }
-# tile 96 (lightning zap 6 3)
+# tile 98 (lightning zap 6 3)
 {
   .............NNN
   ............NNNN
@@ -1870,7 +1908,7 @@ Z = (195, 195, 195)
   NNNN............
   NNN.............
 }
-# tile 97 (poison gas zap 7 0)
+# tile 99 (poison gas zap 7 0)
 {
   .......FF.......
   ......FFFF......
@@ -1889,7 +1927,7 @@ Z = (195, 195, 195)
   ......FFFF......
   .......FF.......
 }
-# tile 98 (poison gas zap 7 1)
+# tile 100 (poison gas zap 7 1)
 {
   ................
   ................
@@ -1908,7 +1946,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 99 (poison gas zap 7 2)
+# tile 101 (poison gas zap 7 2)
 {
   FFF.............
   FFFF............
@@ -1927,7 +1965,7 @@ Z = (195, 195, 195)
   ............FFFF
   .............FFF
 }
-# tile 100 (poison gas zap 7 3)
+# tile 102 (poison gas zap 7 3)
 {
   .............FFF
   ............FFFF
@@ -1946,7 +1984,7 @@ Z = (195, 195, 195)
   FFFF............
   FFF.............
 }
-# tile 101 (acid zap 8 0)
+# tile 103 (acid zap 8 0)
 {
   .......GG.......
   ......GGGG......
@@ -1965,7 +2003,7 @@ Z = (195, 195, 195)
   ......GGGG......
   .......GG.......
 }
-# tile 102 (acid zap 8 1)
+# tile 104 (acid zap 8 1)
 {
   ................
   ................
@@ -1984,7 +2022,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 103 (acid zap 8 2)
+# tile 105 (acid zap 8 2)
 {
   GGG.............
   GGGG............
@@ -2003,7 +2041,7 @@ Z = (195, 195, 195)
   ............GGGG
   .............GGG
 }
-# tile 104 (acid zap 8 3)
+# tile 106 (acid zap 8 3)
 {
   .............GGG
   ............GGGG
@@ -2022,7 +2060,7 @@ Z = (195, 195, 195)
   GGGG............
   GGG.............
 }
-# tile 105 (dig beam)
+# tile 107 (dig beam)
 {
   ....AAAA........
   ..A....AA..AA...
@@ -2041,7 +2079,7 @@ Z = (195, 195, 195)
   ....AA....AAA...
   ................
 }
-# tile 106 (flash beam)
+# tile 108 (flash beam)
 {
   ................
   .....NNNNNN.....
@@ -2060,7 +2098,7 @@ Z = (195, 195, 195)
   .....NNNNNN.....
   ................
 }
-# tile 107 (boom left)
+# tile 109 (boom left)
 {
   ................
   ................
@@ -2079,7 +2117,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 108 (boom right)
+# tile 110 (boom right)
 {
   ................
   ................
@@ -2098,7 +2136,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 109 (shield1)
+# tile 111 (shield1)
 {
   ................
   .....I....I.....
@@ -2117,7 +2155,7 @@ Z = (195, 195, 195)
   .....I....I.....
   ................
 }
-# tile 110 (shield2)
+# tile 112 (shield2)
 {
   ................
   .CCCCCCCCCCCCCCC
@@ -2136,7 +2174,7 @@ Z = (195, 195, 195)
   .CCCCCCCCCCCCCC.
   ................
 }
-# tile 111 (shield3)
+# tile 113 (shield3)
 {
   .......HH.......
   .......HH.......
@@ -2155,7 +2193,7 @@ Z = (195, 195, 195)
   .......HH.......
   .......HH.......
 }
-# tile 112 (shield4)
+# tile 114 (shield4)
 {
   ................
   ......NNNNN.....
@@ -2174,7 +2212,7 @@ Z = (195, 195, 195)
   .....NNNNN......
   ................
 }
-# tile 113 (poison cloud)
+# tile 115 (poison cloud)
 {
   BBBBBBBBBBBBBBBB
   BBBBBFFFFFFFBBBB
@@ -2193,7 +2231,7 @@ Z = (195, 195, 195)
   BBBBBBGGGGBBBBBB
   BBBBBBBBBBBBBBBB
 }
-# tile 114 (valid position)
+# tile 116 (valid position)
 {
   ................
   ................
@@ -2212,7 +2250,7 @@ Z = (195, 195, 195)
   .......FF.......
   ................
 }
-# tile 115 (swallow top left)
+# tile 117 (swallow top left)
 {
   AAAAAAADDDDDDAAA
   AAAAADDDDDDDDDDD
@@ -2231,7 +2269,7 @@ Z = (195, 195, 195)
   AAAADDDDDD......
   AAAADDDDDD......
 }
-# tile 116 (swallow top center)
+# tile 118 (swallow top center)
 {
   AAAAAAAAAAAAAAAA
   DDAAAAAAAAAAAAAA
@@ -2250,7 +2288,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 117 (swallow top right)
+# tile 119 (swallow top right)
 {
   AAAAAAAAAAAAAAAA
   AAADDDDDAAAAAAAA
@@ -2269,7 +2307,7 @@ Z = (195, 195, 195)
   ....DDDDDDDDDDDD
   ....DDDDDDDDDDDA
 }
-# tile 118 (swallow middle left)
+# tile 120 (swallow middle left)
 {
   AAAADDDDDD......
   AAAADDDDDDD.....
@@ -2288,7 +2326,7 @@ Z = (195, 195, 195)
   DDDDDDD.........
   DDCCDDD.........
 }
-# tile 119 (swallow middle right)
+# tile 121 (swallow middle right)
 {
   ....DDDDDDDDDDDA
   ....DDDDDDDDDDDA
@@ -2307,7 +2345,7 @@ Z = (195, 195, 195)
   ......DDDDDDDDAA
   .......DDDDDDDAA
 }
-# tile 120 (swallow bottom left)
+# tile 122 (swallow bottom left)
 {
   DDDCDDD.........
   DDDCDDD.........
@@ -2326,7 +2364,7 @@ Z = (195, 195, 195)
   AAAAAAAAAAAADDDD
   AAAAAAAAAAAAAADD
 }
-# tile 121 (swallow bottom center)
+# tile 123 (swallow bottom center)
 {
   ................
   ................
@@ -2345,7 +2383,7 @@ Z = (195, 195, 195)
   DDDDDDDDDDDDDDDD
   DDDDDDDDDDDDDDAA
 }
-# tile 122 (swallow bottom right)
+# tile 124 (swallow bottom right)
 {
   ......DDDDDDDDAA
   ......DDDDDDDDDA
@@ -2364,7 +2402,7 @@ Z = (195, 195, 195)
   DDAAAAAAAAAAAAAA
   AAAAAAAAAAAAAAAA
 }
-# tile 123 (explosion dark top left)
+# tile 125 (explosion dark top left)
 {
   ................
   ................
@@ -2383,7 +2421,7 @@ Z = (195, 195, 195)
   ..AAAA..AAAA....
   ..AAA..AAAAA....
 }
-# tile 124 (explosion dark top center)
+# tile 126 (explosion dark top center)
 {
   ................
   ................
@@ -2402,7 +2440,7 @@ Z = (195, 195, 195)
   ........A.A.APAA
   .PA...APAAAAAAAA
 }
-# tile 125 (explosion dark top right)
+# tile 127 (explosion dark top right)
 {
   ................
   ................
@@ -2421,7 +2459,7 @@ Z = (195, 195, 195)
   AA.A..A.AAAA....
   A.AA..A.AAAAA...
 }
-# tile 126 (explosion dark middle left)
+# tile 128 (explosion dark middle left)
 {
   ..AAA.A.AAA.....
   ..AAA.AAAAA.AP..
@@ -2440,7 +2478,7 @@ Z = (195, 195, 195)
   ..A.A...AAP...PA
   ....A.........PA
 }
-# tile 127 (explosion dark middle center)
+# tile 129 (explosion dark middle center)
 {
   APAAA..PPAPAAAAA
   .APA..A.AAAPAAA.
@@ -2459,7 +2497,7 @@ Z = (195, 195, 195)
   AAAAAAAAAAAAA.AA
   AAAAAAAAAAA.HH..
 }
-# tile 128 (explosion dark middle right)
+# tile 130 (explosion dark middle right)
 {
   ..AAA.A.A.AAAA..
   ..AAAAA.A.AAAA..
@@ -2478,7 +2516,7 @@ Z = (195, 195, 195)
   AAA...AAAAAAA...
   ....PPAAAAAAAA..
 }
-# tile 129 (explosion dark bottom left)
+# tile 131 (explosion dark bottom left)
 {
   ....A.......A..P
   ....A.......AA..
@@ -2497,7 +2535,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 130 (explosion dark bottom center)
+# tile 132 (explosion dark bottom center)
 {
   PPPAAAAAPAAA.A..
   AAPPAAPPPPA.A...
@@ -2516,7 +2554,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 131 (explosion dark bottom right)
+# tile 133 (explosion dark bottom right)
 {
   ....P..AAAAAAA..
   ..A..A.AA.A.AA..
@@ -2535,7 +2573,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 132 (explosion noxious top left)
+# tile 134 (explosion noxious top left)
 {
   ................
   ................
@@ -2554,7 +2592,7 @@ Z = (195, 195, 195)
   ..FFFF..FFFF....
   ..FFF..FFFFF....
 }
-# tile 133 (explosion noxious top center)
+# tile 135 (explosion noxious top center)
 {
   ................
   ................
@@ -2573,7 +2611,7 @@ Z = (195, 195, 195)
   ........F.F.FGFF
   .GH...HGHHFFFFFF
 }
-# tile 134 (explosion noxious top right)
+# tile 136 (explosion noxious top right)
 {
   ................
   ................
@@ -2592,7 +2630,7 @@ Z = (195, 195, 195)
   FF.F..F.FFFF....
   F.FF..F.FFFFF...
 }
-# tile 135 (explosion noxious middle left)
+# tile 137 (explosion noxious middle left)
 {
   ..FFF.F.FFF.....
   ..FFF.FFFFF.FG..
@@ -2611,7 +2649,7 @@ Z = (195, 195, 195)
   ..F.F...FHG...GH
   ....F.........GH
 }
-# tile 136 (explosion noxious middle center)
+# tile 138 (explosion noxious middle center)
 {
   FGHFF..GGFGHFFFF
   .HGH..F.FFHGFHF.
@@ -2630,7 +2668,7 @@ Z = (195, 195, 195)
   HHHHNHNHN.GGG.GF
   GGGGNHHHGGG.HH..
 }
-# tile 137 (explosion noxious middle right)
+# tile 139 (explosion noxious middle right)
 {
   ..FFF.F.F.FFFF..
   ..FFFFF.F.FFFF..
@@ -2649,7 +2687,7 @@ Z = (195, 195, 195)
   HFH...FFFFFFF...
   ....GGFFFFFFFF..
 }
-# tile 138 (explosion noxious bottom left)
+# tile 140 (explosion noxious bottom left)
 {
   ....F.......H..G
   ....F.......FH..
@@ -2668,7 +2706,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 139 (explosion noxious bottom center)
+# tile 141 (explosion noxious bottom center)
 {
   GGGHHHHHGHHH.H..
   HHGGHHGGGGH.F...
@@ -2687,7 +2725,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 140 (explosion noxious bottom right)
+# tile 142 (explosion noxious bottom right)
 {
   ....G..FFFFFFF..
   ..F..F.FF.F.FF..
@@ -2706,7 +2744,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 141 (explosion muddy top left)
+# tile 143 (explosion muddy top left)
 {
   ................
   ................
@@ -2725,7 +2763,7 @@ Z = (195, 195, 195)
   ..JJJJKKJJJJKKKK
   ..JJJKKJJJJJKKKK
 }
-# tile 142 (explosion muddy top center)
+# tile 144 (explosion muddy top center)
 {
   ................
   ................
@@ -2744,7 +2782,7 @@ Z = (195, 195, 195)
   KKKKKKKKJKJKJCJJ
   KCLKKKLCLLJJJJJJ
 }
-# tile 143 (explosion muddy top right)
+# tile 145 (explosion muddy top right)
 {
   ................
   ................
@@ -2763,7 +2801,7 @@ Z = (195, 195, 195)
   JJKJKKJKJJJJ....
   JKJJKKJKJJJJJ...
 }
-# tile 144 (explosion muddy middle left)
+# tile 146 (explosion muddy middle left)
 {
   ..JJJKJKJJJKKKKK
   ..JJJKJJJJJKJCKK
@@ -2782,7 +2820,7 @@ Z = (195, 195, 195)
   ..J.JKKKJLCKKKCL
   ....JKKKKKKKKKCL
 }
-# tile 145 (explosion muddy middle center)
+# tile 147 (explosion muddy middle center)
 {
   JCLJJKKCCJCLJJJJ
   KLCLKKJKJJLCJLJK
@@ -2801,7 +2839,7 @@ Z = (195, 195, 195)
   LLLLCLCLCKCCCKCJ
   CCCCCLLLCCCKLLKK
 }
-# tile 146 (explosion muddy middle right)
+# tile 148 (explosion muddy middle right)
 {
   KKJJJKJKJKJJJJ..
   KKJJJJJKJKJJJJ..
@@ -2820,7 +2858,7 @@ Z = (195, 195, 195)
   LJLKKKJJJJJJJ...
   KKKKCCJJJJJJJJ..
 }
-# tile 147 (explosion muddy bottom left)
+# tile 149 (explosion muddy bottom left)
 {
   ....JKKKKKKKLKKC
   ....JKKKKKKKJLKK
@@ -2839,7 +2877,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 148 (explosion muddy bottom center)
+# tile 150 (explosion muddy bottom center)
 {
   CCCLLLLLCLLLKLKK
   LLCCLLCCCCLKJKKK
@@ -2858,7 +2896,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 149 (explosion muddy bottom right)
+# tile 151 (explosion muddy bottom right)
 {
   KKKKCKKJJJJJJJ..
   KKJKKJKJJKJKJJ..
@@ -2877,7 +2915,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 150 (explosion wet top left)
+# tile 152 (explosion wet top left)
 {
   ................
   ................
@@ -2896,7 +2934,7 @@ Z = (195, 195, 195)
   ..EEEEPPEEEEPPPP
   ..EEEPPEEEEEPPPP
 }
-# tile 151 (explosion wet top center)
+# tile 153 (explosion wet top center)
 {
   ................
   ................
@@ -2915,7 +2953,7 @@ Z = (195, 195, 195)
   PPPPPPPPEPEPEBEE
   PBNPPPNBEEEEEEEE
 }
-# tile 152 (explosion wet top right)
+# tile 154 (explosion wet top right)
 {
   ................
   ................
@@ -2934,7 +2972,7 @@ Z = (195, 195, 195)
   EEPEPPEPEEEE....
   EPEEPPEPEEEEE...
 }
-# tile 153 (explosion wet middle left)
+# tile 155 (explosion wet middle left)
 {
   ..EEEPEPEEEPPPPP
   ..EEEPEEEEEPEBPP
@@ -2953,7 +2991,7 @@ Z = (195, 195, 195)
   ..E.EPPPENBPPPBE
   ....EPPPPPPPPPBE
 }
-# tile 154 (explosion wet middle center)
+# tile 156 (explosion wet middle center)
 {
   EBNEEPPBBEBNEEEE
   PNBNPPEPEEEBENEP
@@ -2972,7 +3010,7 @@ Z = (195, 195, 195)
   EEEEEEEEEPBBBPBE
   BBBBEEEEBBBPNNPP
 }
-# tile 155 (explosion wet middle right)
+# tile 157 (explosion wet middle right)
 {
   PPEEEPEPEPEEEE..
   PPEEEEEPEPEEEE..
@@ -2991,7 +3029,7 @@ Z = (195, 195, 195)
   NENPPPEEEEEEE...
   PPPPBBEEEEEEEE..
 }
-# tile 156 (explosion wet bottom left)
+# tile 158 (explosion wet bottom left)
 {
   ....EPPPPPPPNPPB
   ....EPPPPPPPENPP
@@ -3010,7 +3048,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 157 (explosion wet bottom center)
+# tile 159 (explosion wet bottom center)
 {
   BBBEEEEEBEEEPEPP
   EEBBEEBBBBEPEPPP
@@ -3029,7 +3067,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 158 (explosion wet bottom right)
+# tile 160 (explosion wet bottom right)
 {
   PPPPBPPEEEEEEE..
   PPEPPEPEEPEPEE..
@@ -3048,7 +3086,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 159 (explosion magical top left)
+# tile 161 (explosion magical top left)
 {
   ................
   ................
@@ -3067,7 +3105,7 @@ Z = (195, 195, 195)
   ..EEEEIIEEEEIIII
   ..EEEIIEEEEEIIII
 }
-# tile 160 (explosion magical top center)
+# tile 162 (explosion magical top center)
 {
   ................
   ................
@@ -3086,7 +3124,7 @@ Z = (195, 195, 195)
   IIIIIIIIEIEIELEE
   ILHIIIHLHHEEEEEE
 }
-# tile 161 (explosion magical top right)
+# tile 163 (explosion magical top right)
 {
   ................
   ................
@@ -3105,7 +3143,7 @@ Z = (195, 195, 195)
   EEIEIIEIEEEE....
   EIEEIIEIEEEEE...
 }
-# tile 162 (explosion magical middle left)
+# tile 164 (explosion magical middle left)
 {
   ..EEEIEIEEEIIIII
   ..EEEIEEEEEIEIII
@@ -3124,7 +3162,7 @@ Z = (195, 195, 195)
   ..E.EIIIENIIIIIN
   ....EIIIIIIIIIIN
 }
-# tile 163 (explosion magical middle center)
+# tile 165 (explosion magical middle center)
 {
   EINEEIIIIEINEEEE
   ININIIEIEENIENEI
@@ -3143,7 +3181,7 @@ Z = (195, 195, 195)
   NNNNNNNNNIIIIIIE
   IIIINNNNIIIINNII
 }
-# tile 164 (explosion magical middle right)
+# tile 166 (explosion magical middle right)
 {
   IIEEEIEIEIEEEE..
   IIEEEEEIEIEEEE..
@@ -3162,7 +3200,7 @@ Z = (195, 195, 195)
   NENIIIEEEEEEE...
   IIIIIIEEEEEEEE..
 }
-# tile 165 (explosion magical bottom left)
+# tile 167 (explosion magical bottom left)
 {
   ....EIIIIIIIHIII
   ....EIIIIIIIEHII
@@ -3181,7 +3219,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 166 (explosion magical bottom center)
+# tile 168 (explosion magical bottom center)
 {
   IIINNNNNINNNINII
   NNIINNIIIINIEIII
@@ -3200,7 +3238,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 167 (explosion magical bottom right)
+# tile 169 (explosion magical bottom right)
 {
   IIIIIIIEEEEEEE..
   IIEIIEIEEIEIEE..
@@ -3219,7 +3257,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 168 (explosion fiery top left)
+# tile 170 (explosion fiery top left)
 {
   ................
   ................
@@ -3238,7 +3276,7 @@ Z = (195, 195, 195)
   ..DDDDCCDDDDCCCC
   ..DDDCCDDDDDCCCC
 }
-# tile 169 (explosion fiery top center)
+# tile 171 (explosion fiery top center)
 {
   ................
   ................
@@ -3257,7 +3295,7 @@ Z = (195, 195, 195)
   CCCCCCCCDCDCDLDD
   CLHCCCHLHHDDDDDD
 }
-# tile 170 (explosion fiery top right)
+# tile 172 (explosion fiery top right)
 {
   ................
   ................
@@ -3276,7 +3314,7 @@ Z = (195, 195, 195)
   DDCDCCDCDDDD....
   DCDDCCDCDDDDD...
 }
-# tile 171 (explosion fiery middle left)
+# tile 173 (explosion fiery middle left)
 {
   ..DDDCDCDDDCCCCC
   ..DDDCDDDDDCDLCC
@@ -3295,7 +3333,7 @@ Z = (195, 195, 195)
   ..D.DCCCDHLCCCLH
   ....DCCCCCCCCCLH
 }
-# tile 172 (explosion fiery middle center)
+# tile 174 (explosion fiery middle center)
 {
   DLHDDCCLLDLHDDDD
   CHLHCCDCDDHLDHDC
@@ -3314,7 +3352,7 @@ Z = (195, 195, 195)
   HHHHNHNHNCLLLCLD
   LLLLNHHHLLLCHHCC
 }
-# tile 173 (explosion fiery middle right)
+# tile 175 (explosion fiery middle right)
 {
   CCDDDCDCDCDDDD..
   CCDDDDDCDCDDDD..
@@ -3333,7 +3371,7 @@ Z = (195, 195, 195)
   HDHCCCDDDDDDD...
   CCCCLLDDDDDDDD..
 }
-# tile 174 (explosion fiery bottom left)
+# tile 176 (explosion fiery bottom left)
 {
   ....DCCCCCCCHCCL
   ....DCCCCCCCDHCC
@@ -3352,7 +3390,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 175 (explosion fiery bottom center)
+# tile 177 (explosion fiery bottom center)
 {
   LLLHHHHHLHHHCHCC
   HHLLHHLLLLHCDCCC
@@ -3371,7 +3409,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 176 (explosion fiery bottom right)
+# tile 178 (explosion fiery bottom right)
 {
   CCCCLCCDDDDDDD..
   CCDCCDCDDCDCDD..
@@ -3390,7 +3428,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 177 (explosion frosty top left)
+# tile 179 (explosion frosty top left)
 {
   ................
   ................
@@ -3409,7 +3447,7 @@ Z = (195, 195, 195)
   ..EEEEPPNBEEPPPP
   ..EEEPPEEEEEPPPP
 }
-# tile 178 (explosion frosty top center)
+# tile 180 (explosion frosty top center)
 {
   ................
   ................
@@ -3428,7 +3466,7 @@ Z = (195, 195, 195)
   PPPPPPPPEPEPEBEE
   PBNPPPNBNNEEEEEE
 }
-# tile 179 (explosion frosty top right)
+# tile 181 (explosion frosty top right)
 {
   ................
   ................
@@ -3447,7 +3485,7 @@ Z = (195, 195, 195)
   EEPEPPEPEEEE....
   EPEEPPEPEEEEE...
 }
-# tile 180 (explosion frosty middle left)
+# tile 182 (explosion frosty middle left)
 {
   ..EEEPEPEEEPPPPP
   ..EEEPEEEEEPEBPP
@@ -3466,7 +3504,7 @@ Z = (195, 195, 195)
   ..E.EPPPENBPPPBN
   ....EPPPPPPPPPBN
 }
-# tile 181 (explosion frosty middle center)
+# tile 183 (explosion frosty middle center)
 {
   EBNEEPPBBEBNEEEE
   PNBNPPEPEENBENEP
@@ -3485,7 +3523,7 @@ Z = (195, 195, 195)
   NNNNNNNNNPBBBPBE
   BBBBNNNNBBBPNNPP
 }
-# tile 182 (explosion frosty middle right)
+# tile 184 (explosion frosty middle right)
 {
   PPEEEPEPEPEEEE..
   PPEEEEEPEPEEEE..
@@ -3504,7 +3542,7 @@ Z = (195, 195, 195)
   NENPPPEEEEEEE...
   PPPPBBEEEEEEEE..
 }
-# tile 183 (explosion frosty bottom left)
+# tile 185 (explosion frosty bottom left)
 {
   ....EPPPPPPPNPPB
   ....EPPPPPPPENPP
@@ -3523,7 +3561,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 184 (explosion frosty bottom center)
+# tile 186 (explosion frosty bottom center)
 {
   BBBNNNNNBNNNPNPP
   NNBBNNBBBBNPEPPP
@@ -3542,7 +3580,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 185 (explosion frosty bottom right)
+# tile 187 (explosion frosty bottom right)
 {
   PPPPBPPEEEEEEE..
   PPEPPEPEEPEPEE..
@@ -3561,7 +3599,7 @@ Z = (195, 195, 195)
   ...........N....
   ................
 }
-# tile 186 (warning 0)
+# tile 188 (warning 0)
 {
   ................
   ................
@@ -3580,7 +3618,7 @@ Z = (195, 195, 195)
   .......AA.......
   ................
 }
-# tile 187 (warning 1)
+# tile 189 (warning 1)
 {
   ................
   ................
@@ -3599,7 +3637,7 @@ Z = (195, 195, 195)
   .......AA.......
   ................
 }
-# tile 188 (warning 2)
+# tile 190 (warning 2)
 {
   ................
   ................
@@ -3618,7 +3656,7 @@ Z = (195, 195, 195)
   .......AA.......
   ................
 }
-# tile 189 (warning 3)
+# tile 191 (warning 3)
 {
   ................
   ................
@@ -3637,7 +3675,7 @@ Z = (195, 195, 195)
   .......AA.......
   ................
 }
-# tile 190 (warning 4)
+# tile 192 (warning 4)
 {
   ................
   ................
@@ -3656,7 +3694,7 @@ Z = (195, 195, 195)
   .......AA.......
   ................
 }
-# tile 191 (warning 5)
+# tile 193 (warning 5)
 {
   ................
   ................
@@ -3675,7 +3713,7 @@ Z = (195, 195, 195)
   .......AA.......
   ................
 }
-# tile 192 (unexplored)
+# tile 194 (unexplored)
 {
   AAAAAAAAAAAAAAAA
   AAAAAAAAAAAAAAAA
@@ -3694,7 +3732,7 @@ Z = (195, 195, 195)
   AAAAAAAAAAAAAAAA
   AAAAAAAAAAAAAAAA
 }
-# tile 193 (nothing)
+# tile 195 (nothing)
 {
   AAAAAAAAAAAAAAAA
   AAAAAAAAAAAAAAAA
@@ -3713,7 +3751,7 @@ Z = (195, 195, 195)
   AAAAAAAAAAAAAAAA
   AAAAAAAAAAAAAAAA
 }
-# tile 194 (mines walls vertical)
+# tile 196 (mines walls vertical)
 {
   AJJKKKACJAAJJJAA
   AJKKKACLJJAJJJJA
@@ -3732,7 +3770,7 @@ Z = (195, 195, 195)
   AAJACKCKKJJJAJAA
   AAJCKKJAAAJJJJJA
 }
-# tile 195 (mines walls horizontal)
+# tile 197 (mines walls horizontal)
 {
   AJAAAAAAJJAAAJAA
   JJJAAAJJJJJAAAAJ
@@ -3751,7 +3789,7 @@ Z = (195, 195, 195)
   JJJJJJJJJJJJJJJJ
   AAAAAAAAAAAAAAAA
 }
-# tile 196 (mines walls tlcorn)
+# tile 198 (mines walls tlcorn)
 {
   AAAAAAKCCKKJAAAA
   AAAAKKCLCJKJJAAA
@@ -3770,7 +3808,7 @@ Z = (195, 195, 195)
   AAJACKCKKJJJAJAA
   AAJCKKJAAAJJJJJA
 }
-# tile 197 (mines walls trcorn)
+# tile 199 (mines walls trcorn)
 {
   AAAAAAKCCKKJAAAA
   AAAAKKCLCJKJJAAA
@@ -3789,7 +3827,7 @@ Z = (195, 195, 195)
   AAJACKCKKJJJAJAA
   AAJCKKJAAAJJJJJA
 }
-# tile 198 (mines walls blcorn)
+# tile 200 (mines walls blcorn)
 {
   AKKKAAKKKKAAJJJA
   AKKAAKCCCJJJAAJA
@@ -3808,7 +3846,7 @@ Z = (195, 195, 195)
   AJJJJJJJJJJJJJJJ
   AAAAAAAAAAAAAAAA
 }
-# tile 199 (mines walls brcorn)
+# tile 201 (mines walls brcorn)
 {
   AKKAAAKKAAAAJJJA
   AKAAKKLCKAAAAAJA
@@ -3827,7 +3865,7 @@ Z = (195, 195, 195)
   JJJJJJJJJJJJJJJA
   AAAAAAAAAAAAAAAA
 }
-# tile 200 (mines walls cross wall)
+# tile 202 (mines walls cross wall)
 {
   AAAAAAKCCKKJAAAA
   AAAAKCCLCJKJJAAA
@@ -3846,7 +3884,7 @@ Z = (195, 195, 195)
   AAJACKCKKJJJAJAA
   AAJCKKJAAAJJJJJA
 }
-# tile 201 (mines walls tuwall)
+# tile 203 (mines walls tuwall)
 {
   AKKAAAKKKKAAJJJA
   AKAAKKLCCJJJAAJA
@@ -3865,7 +3903,7 @@ Z = (195, 195, 195)
   JJJJJJJJJJJJJJJJ
   AAAAAAAAAAAAAAAA
 }
-# tile 202 (mines walls tdwall)
+# tile 204 (mines walls tdwall)
 {
   AAAAAAKCCKKJAAAA
   AAAAKCCLCJKJJAAA
@@ -3884,7 +3922,7 @@ Z = (195, 195, 195)
   AAJACKCKKJJJAJAA
   AAJCKKJAAAJJJJJA
 }
-# tile 203 (mines walls tlwall)
+# tile 205 (mines walls tlwall)
 {
   AKKAACKCCKKJAJJA
   AKACKKKLLJKJJAJA
@@ -3903,7 +3941,7 @@ Z = (195, 195, 195)
   AAJACKCKKJJJAJAA
   AAJCKKJAAAJJJJJA
 }
-# tile 204 (mines walls trwall)
+# tile 206 (mines walls trwall)
 {
   AKKAACKCCKKJAJJA
   AKACKKCLCJKJJAJA
@@ -3922,7 +3960,7 @@ Z = (195, 195, 195)
   AAJACKCKKJJJAJAA
   AAJCKKJAAAJJJJJA
 }
-# tile 205 (gehennom walls vertical)
+# tile 207 (gehennom walls vertical)
 {
   ALLDAJ11111JLLDA
   ADDDAJ1J11JJDDDA
@@ -3941,7 +3979,7 @@ Z = (195, 195, 195)
   AJJJAJJ1111JJJJA
   AD11AJJ1111JD1JA
 }
-# tile 206 (gehennom walls horizontal)
+# tile 208 (gehennom walls horizontal)
 {
   AAALDDAAAAALDDAA
   DDDLDDAJDDDLDDAJ
@@ -3960,7 +3998,7 @@ Z = (195, 195, 195)
   JJJJJJJJJJJJJJJJ
   AAAAAAAAAAAAAAAA
 }
-# tile 207 (gehennom walls tlcorn)
+# tile 209 (gehennom walls tlcorn)
 {
   AAALLLLDDDDDDAAA
   LLLLAAJJ1111DJJJ
@@ -3979,7 +4017,7 @@ Z = (195, 195, 195)
   AJJJAJJ1111JJJJA
   AD11AJJ1111JD1JA
 }
-# tile 208 (gehennom walls trcorn)
+# tile 210 (gehennom walls trcorn)
 {
   AAALLLLDDDDDDAAA
   LLLLAAJJ1111DJJJ
@@ -3998,7 +4036,7 @@ Z = (195, 195, 195)
   AJJJAJJ1111JJJJA
   AD11AJJ1111JD1JA
 }
-# tile 209 (gehennom walls blcorn)
+# tile 211 (gehennom walls blcorn)
 {
   AAALLLLDDDDDDAAA
   LLLLAAJJ1111DJJJ
@@ -4017,7 +4055,7 @@ Z = (195, 195, 195)
   JJJJJJJJJJJJJJJJ
   AAAAAAAAAAAAAAAA
 }
-# tile 210 (gehennom walls brcorn)
+# tile 212 (gehennom walls brcorn)
 {
   AAALLLLDDDDDDAAA
   LLLLAAJJ1111DJJJ
@@ -4036,7 +4074,7 @@ Z = (195, 195, 195)
   JJJJJJJJJJJJJJJJ
   AAAAAAAAAAAAAAAA
 }
-# tile 211 (gehennom walls cross wall)
+# tile 213 (gehennom walls cross wall)
 {
   AAALLLLDDDDDDAAA
   LLLLAAJJ1111DJJJ
@@ -4055,7 +4093,7 @@ Z = (195, 195, 195)
   AJJJAJJ1111JJJJA
   AD11AJJ1111JD1JA
 }
-# tile 212 (gehennom walls tuwall)
+# tile 214 (gehennom walls tuwall)
 {
   AAALLLLDDDDDDAAA
   LLLLAAJJ1111DJJJ
@@ -4074,7 +4112,7 @@ Z = (195, 195, 195)
   JJJJJJJJJJJJJJJJ
   AAAAAAAAAAAAAAAA
 }
-# tile 213 (gehennom walls tdwall)
+# tile 215 (gehennom walls tdwall)
 {
   AAALLLLDDDDDDAAA
   LLLLAAJJ1111DJJJ
@@ -4093,7 +4131,7 @@ Z = (195, 195, 195)
   AJJJAJJ1111JJJJA
   AD11AJJ1111JD1JA
 }
-# tile 214 (gehennom walls tlwall)
+# tile 216 (gehennom walls tlwall)
 {
   AAALLLLDDDDDDAAA
   LLLLAAJJ1111DJJJ
@@ -4112,7 +4150,7 @@ Z = (195, 195, 195)
   AJJJAJJ1111JJJJA
   AD11AJJ1111JD1JA
 }
-# tile 215 (gehennom walls trwall)
+# tile 217 (gehennom walls trwall)
 {
   AAALLLLDDDDDDAAA
   LLLLAAJJ1111DJJJ
@@ -4131,7 +4169,7 @@ Z = (195, 195, 195)
   AJJJAJJ1111JJJJA
   AD11AJJ1111JD1JA
 }
-# tile 216 (knox walls vertical)
+# tile 218 (knox walls vertical)
 {
   AJJJAAACJAAAJJJA
   AJJJAACLJJAAJJJA
@@ -4150,7 +4188,7 @@ Z = (195, 195, 195)
   AAJAAACKKJAAAJAA
   ACJJAAAAAAAACJJA
 }
-# tile 217 (knox walls horizontal)
+# tile 219 (knox walls horizontal)
 {
   AJAAAJAAAJAAAJAA
   JJJAAAJAJJJAAAJA
@@ -4169,7 +4207,7 @@ Z = (195, 195, 195)
   KJJACJJAKJJACJJA
   AAAAAAAAAAAAAAAA
 }
-# tile 218 (knox walls tlcorn)
+# tile 220 (knox walls tlcorn)
 {
   AAAAAAKCJKAAAAAA
   AAAAKKCLKJKKAAAA
@@ -4188,7 +4226,7 @@ Z = (195, 195, 195)
   AAJAAACKKJAAAJAA
   ACJJAAAAAAAACJJA
 }
-# tile 219 (knox walls trcorn)
+# tile 221 (knox walls trcorn)
 {
   AAAAAAKCJKAAAAAA
   AAAAKKCLKJKKAAAA
@@ -4207,7 +4245,7 @@ Z = (195, 195, 195)
   AAJAAACKKJAAAJAA
   ACJJAAAAAAAACJJA
 }
-# tile 220 (knox walls blcorn)
+# tile 222 (knox walls blcorn)
 {
   AAAAAAKCJKAAAAAA
   AAAAKKCLKJKKAAAA
@@ -4226,7 +4264,7 @@ Z = (195, 195, 195)
   KJJACJJAKJJACJJA
   AAAAAAAAAAAAAAAA
 }
-# tile 221 (knox walls brcorn)
+# tile 223 (knox walls brcorn)
 {
   AAAAAAKCJKAAAAAA
   AAAAKKCLKJKKAAAA
@@ -4245,7 +4283,7 @@ Z = (195, 195, 195)
   KJJACJJAKJJACJJA
   AAAAAAAAAAAAAAAA
 }
-# tile 222 (knox walls cross wall)
+# tile 224 (knox walls cross wall)
 {
   AAAAAAKCJKAAAAAA
   AAAAKKCLKJKKAAAA
@@ -4264,7 +4302,7 @@ Z = (195, 195, 195)
   AAJAAACKKJAAAJAA
   ACJJAAAAAAAACJJA
 }
-# tile 223 (knox walls tuwall)
+# tile 225 (knox walls tuwall)
 {
   AAAAAAKCJKAAAAAA
   AAAAKKCLKJKKAAAA
@@ -4283,7 +4321,7 @@ Z = (195, 195, 195)
   KJJACJJAKJJACJJA
   AAAAAAAAAAAAAAAA
 }
-# tile 224 (knox walls tdwall)
+# tile 226 (knox walls tdwall)
 {
   AAAAAAKCJKAAAAAA
   AAAAKKCLKJKKAAAA
@@ -4302,7 +4340,7 @@ Z = (195, 195, 195)
   AAJAAACKKJAAAJAA
   ACJJAAAAAAAACJJA
 }
-# tile 225 (knox walls tlwall)
+# tile 227 (knox walls tlwall)
 {
   AAAAAAKCJKAAAAAA
   AAAAKKCLKJKKAAAA
@@ -4321,7 +4359,7 @@ Z = (195, 195, 195)
   AAJAAACKKJAAAJAA
   ACJJAAAAAAAACJJA
 }
-# tile 226 (knox walls trwall)
+# tile 228 (knox walls trwall)
 {
   AAAAAAKCJKAAAAAA
   AAAAKKCLKJKKAAAA
@@ -4340,7 +4378,7 @@ Z = (195, 195, 195)
   AAJAAACKKJAAAJAA
   ACJJAAAAAAAACJJA
 }
-# tile 227 (sokoban walls vertical)
+# tile 229 (sokoban walls vertical)
 {
   ANNBA1EEEEE1NNBA
   ABBBA1E1EE11BBBA
@@ -4359,7 +4397,7 @@ Z = (195, 195, 195)
   A111A11EEEE1111A
   ABEEA11EEEE1BE1A
 }
-# tile 228 (sokoban walls horizontal)
+# tile 230 (sokoban walls horizontal)
 {
   AAANBBAAAAANBBAA
   BBBNBBA1BBBNBBA1
@@ -4378,7 +4416,7 @@ Z = (195, 195, 195)
   1111111111111111
   AAAAAAAAAAAAAAAA
 }
-# tile 229 (sokoban walls tlcorn)
+# tile 231 (sokoban walls tlcorn)
 {
   AAANNNNBBBBBBAAA
   NNNNAA11EEEEB111
@@ -4397,7 +4435,7 @@ Z = (195, 195, 195)
   A111A11EEEE1111A
   ABEEA11EEEE1BE1A
 }
-# tile 230 (sokoban walls trcorn)
+# tile 232 (sokoban walls trcorn)
 {
   AAANNNNBBBBBBAAA
   NNNNAA11EEEEB111
@@ -4416,7 +4454,7 @@ Z = (195, 195, 195)
   A111A11EEEE1111A
   ABEEA11EEEE1BE1A
 }
-# tile 231 (sokoban walls blcorn)
+# tile 233 (sokoban walls blcorn)
 {
   AAANNNNBBBBBBAAA
   NNNNAA11EEEEB111
@@ -4435,7 +4473,7 @@ Z = (195, 195, 195)
   1111111111111111
   AAAAAAAAAAAAAAAA
 }
-# tile 232 (sokoban walls brcorn)
+# tile 234 (sokoban walls brcorn)
 {
   AAANNNNBBBBBBAAA
   NNNNAA11EEEEB111
@@ -4454,7 +4492,7 @@ Z = (195, 195, 195)
   1111111111111111
   AAAAAAAAAAAAAAAA
 }
-# tile 233 (sokoban walls cross wall)
+# tile 235 (sokoban walls cross wall)
 {
   AAANNNNBBBBBBAAA
   NNNNAA11EEEEB111
@@ -4473,7 +4511,7 @@ Z = (195, 195, 195)
   A111A11EEEE1111A
   ABEEA11EEEE1BE1A
 }
-# tile 234 (sokoban walls tuwall)
+# tile 236 (sokoban walls tuwall)
 {
   AAANNNNBBBBBBAAA
   NNNNAA11EEEEB111
@@ -4492,7 +4530,7 @@ Z = (195, 195, 195)
   1111111111111111
   AAAAAAAAAAAAAAAA
 }
-# tile 235 (sokoban walls tdwall)
+# tile 237 (sokoban walls tdwall)
 {
   AAANNNNBBBBBBAAA
   NNNNAA11EEEEB111
@@ -4511,7 +4549,7 @@ Z = (195, 195, 195)
   A111A11EEEE1111A
   ABEEA11EEEE1BE1A
 }
-# tile 236 (sokoban walls tlwall)
+# tile 238 (sokoban walls tlwall)
 {
   AAANNNNBBBBBBAAA
   NNNNAA11EEEEB111
@@ -4530,7 +4568,7 @@ Z = (195, 195, 195)
   A111A11EEEE1111A
   ABEEA11EEEE1BE1A
 }
-# tile 237 (sokoban walls trwall)
+# tile 239 (sokoban walls trwall)
 {
   AAANNNNBBBBBBAAA
   NNNNAA11EEEEB111
index f22138d0e20d4ee907336fa6db2dee428c60bdaa..2e70216529e1ee0ece8c08a908b8f3fe8d8e3a6c 100644 (file)
@@ -362,7 +362,7 @@ tilename(int set, const int file_entry, int gend UNUSED)
         }
 
         /* cmap B */
-        for (cmap = S_grave; cmap <= S_vibrating_square; cmap++) {
+        for (cmap = S_grave; cmap < S_arrow_trap + MAXTCHARS; cmap++) {
             i = cmap - S_grave;
             if (tilenum == file_entry) {
                 if (*defsyms[cmap].explanation) {
@@ -410,12 +410,12 @@ tilename(int set, const int file_entry, int gend UNUSED)
             }
         }
 #else
-    i = file_entry - tilenum;
-    if (i < (NUM_ZAP << 2)) {
-        Sprintf(buf, "%s zap %d %d", zap_texts[i / 4], (i / 4) + 1, i % 4);
-        return buf;
-    }
-    tilenum += (NUM_ZAP << 2);
+        i = file_entry - tilenum;
+        if (i < (NUM_ZAP << 2)) {
+            Sprintf(buf, "%s zap %d %d", zap_texts[i / 4], (i / 4) + 1, i % 4);
+            return buf;
+        }
+        tilenum += (NUM_ZAP << 2);
 #endif
 
         /* cmap C */
@@ -665,11 +665,11 @@ init_tilemap(void)
                   ((S_trwall - S_vwall) + 1) +             /* main walls */
                   ((S_brdnladder - S_ndoor) + 1) +         /* cmap A */
                   5 +                                      /* 5 altar tiles */
-                  ((S_vibrating_square - S_grave) + 1) +   /* cmap B */
+                  (S_arrow_trap + MAXTCHARS - S_grave) +   /* cmap B */
                   (NUM_ZAP << 2)  +                        /* zaps */
                   ((S_goodpos - S_digbeam) + 1);           /* cmap C */
 
-   /* add number compiled out */
+    /* add number compiled out */
     for (i = 0; conditionals[i].sequence != TERMINATOR; i++) {
         switch (conditionals[i].sequence) {
         case MON_GLYPH:
@@ -944,7 +944,7 @@ init_tilemap(void)
     }
 
     /* cmap B */
-    for (cmap = S_grave; cmap <= S_vibrating_square; cmap++) {
+    for (cmap = S_grave; cmap < S_arrow_trap + MAXTCHARS; cmap++) {
         i = cmap - S_grave;
         precheck((GLYPH_CMAP_B_OFF + i), "cmap B");
         tilemap[GLYPH_CMAP_B_OFF + i].tilenum = tilenum;