]> granicus.if.org Git - nethack/commitdiff
displaying generic objects
authorPatR <rankin@nethack.org>
Tue, 10 Jan 2023 22:33:21 +0000 (14:33 -0800)
committerPatR <rankin@nethack.org>
Tue, 10 Jan 2023 22:33:21 +0000 (14:33 -0800)
Add 17 fake objects to objects[], one for each object class.  All
specific color as gray.  They're grouped at the start--actually near
the start since "strange object" is still objects[0]--rather than
being among the objects for each class.  init_object() knows to start
at [MAXOCLASSES] instead of [0]; other code that loops through every
object might need adjusting.

For potions, non-stone gems, and non-novel/non-Book_of_the_Dead
spellbooks that don't have obj->dknown set, display the corresponding
generic object rather the object itself.  Fixes the longstanding bug
of seeing color for not-yet-seen objects whose primary distinguishing
characteristic is their color.  Walking next to a generic object
while able to see its spot will set dknown and redraw as specific.
It's slightly disconcerting to have objects change as you reach them;
I hope it's just a matter of becoming used to that.  (If there is any
code still changing the hero's location manually instead of using
u_on_newpos(), it should be changed to use that routine.)

Most of the new tiles are just a big rendering of punctuation
characters.  The potion, gem, and spellbook ones could be cloned from
a specific object in their class and then have the color removed.  I
started out that way but wasn't happy with the result.  I'm not
artisticly inclined; hopefully someone else will do better.  Each of
them is preceded by a comment beginning with "#_"; the underscore
isn't required, just being used to make the comments stand out a bit.

Invalidates existing save and bones files.

13 files changed:
doc/fixes3-7-0.txt
include/decl.h
include/display.h
include/extern.h
include/objclass.h
include/objects.h
include/patchlevel.h
src/allmain.c
src/decl.c
src/display.c
src/dungeon.c
src/o_init.c
win/share/objects.txt

index f890f04cccd8bcd5a1d031d723bd20a60c3a056b..574b9da4565476c3746ab2765ab7035bf6c44cd9 100644 (file)
@@ -1082,6 +1082,8 @@ when identifying items via menu and more than one pass is needed (so when
        identifying 3 items and player only picks 1, for instance), issue
        --More-- because the next menu might cover up the ID message(s)
 slightly more interesting Gehennom filler levels
+don't reveal color of potions, gems, or spellbooks that haven't been seen up
+       close (seeing faraway monster operate on an object counts as up close)
 
 
 Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
index 90c3232fa4d940ff29c977abf59637eab186948d..1a8cff2bf3d26cee355753f030b252af5746a342 100644 (file)
@@ -1259,6 +1259,7 @@ struct instance_globals_o {
     int (*occupation)(void);
     int occtime;
     int otg_temp; /* used by object_to_glyph() [otg] */
+    struct obj *otg_otmp; /* used by obj_is_piletop() */
     const char *occtxt; /* defined when occupation != NULL */
 
     /* symbols.c */
index 1a193fd6053ec52c02cb8c8828fac31877a98f0d..5cf72c225ab1fceb4a3d268c73962572dcc93937 100644 (file)
@@ -388,7 +388,15 @@ enum glyphmap_change_triggers { gm_nochange, gm_newgame, gm_levelchange,
  * ridden (female)  Represents all female monsters being ridden.
  *                  Count: NUMMONS
  *
- * object           One for each object.
+ * object           One for each type of object.  The first entry is
+ *                  'strange object', the next 1..MAXOCLASSES-1 entries
+ *                  are generic (one for each class, including one for
+ *                  strange object's 'illobj class'), the rest are
+ *                  regular objects.  Some members of the generic
+ *                  subset are used to prevent color of potions, gems,
+ *                  and spellbooks from being revealed when obj->dknown
+ *                  hasn't been set, avoiding a bug which had been
+ *                  present since day one of color support.
  *                  Count: NUM_OBJECTS
  *
  * Stone            Stone
@@ -451,7 +459,8 @@ enum glyphmap_change_triggers { gm_nochange, gm_newgame, gm_levelchange,
  * frosty explosions      A set of nine.
  *                        Count: MAXEXPCHAR
  *
- * warning                A set of six representing the different warning levels.
+ * warning                A set of six representing the different warning
+ *                        levels.
  *                        Count: 6
  *
  * statues (male)         One for each male monster.
@@ -749,7 +758,8 @@ enum glyph_offsets {
 #define glyph_is_normal_female_monster(glyph) \
     ((glyph) >= GLYPH_MON_FEM_OFF && (glyph) < (GLYPH_MON_FEM_OFF + NUMMONS))
 #define glyph_is_normal_monster(glyph) \
-    (glyph_is_normal_male_monster(glyph) || glyph_is_normal_female_monster(glyph))
+    (glyph_is_normal_male_monster(glyph)                \
+     || glyph_is_normal_female_monster(glyph))
 #define glyph_is_female_pet(glyph) \
     ((glyph) >= GLYPH_PET_FEM_OFF && (glyph) < (GLYPH_PET_FEM_OFF + NUMMONS))
 #define glyph_is_male_pet(glyph) \
@@ -799,10 +809,23 @@ enum glyph_offsets {
                        ? ((glyph) - GLYPH_RIDDEN_MALE_OFF)     \
                        : NUMMONS)
 
+/* boulder hides pile except when on top of another boulder;
+   the otg_otmp assignment might occur multiple times in the same
+   expression but there will always be sequence points in between */
 #define obj_is_piletop(obj) \
     ((obj)->where == OBJ_FLOOR                                  \
-        /*&& gl.level.objects[(obj)->ox][(obj)->oy]*/            \
-        && gl.level.objects[(obj)->ox][(obj)->oy]->nexthere)
+     && (go.otg_otmp = gl.level.objects[(obj)->ox][(obj)->oy]->nexthere) != 0 \
+     && ((obj)->otyp != BOULDER || go.otg_otmp->otyp == BOULDER))
+/* used to hide info such as potion and gem color when not seen yet;
+   stones and rock are excluded for gem class; LAST_SPELL includes blank
+   spellbook but excludes novel and the Book of the Dead */
+#define obj_is_generic(obj) \
+    (!(obj)->dknown                                             \
+     && ((obj)->oclass == POTION_CLASS                          \
+         || ((obj)->otyp >= FIRST_REAL_GEM                      \
+             && ((obj)->otyp <= LAST_GLASS_GEM))                \
+         || ((obj)->otyp >= FIRST_SPELL                         \
+             && ((obj)->otyp <= LAST_SPELL))))
 
 #define glyph_is_body_piletop(glyph) \
     (((glyph) >= GLYPH_BODY_PILETOP_OFF)                        \
@@ -827,17 +850,31 @@ enum glyph_offsets {
      || glyph_is_male_statue_piletop(glyph))
 #define glyph_is_statue(glyph) \
     (glyph_is_male_statue(glyph) || glyph_is_fem_statue(glyph))
+/* note: 'strange object' gets [mis?]classified as generic here but that
+   shouldn't impact anything; to do it properly, glyph_is_normal_generic_obj()
+   and glyph_is_piletop_generic_obj() should use '>' rather than '>=', and
+   glyph_is_normal_object() and glyph_is_normal_piletop_obj() should include
+   (glyph == {GLYPH_OBJ_OFF,GLYPH_OBJ_PILETOP_OFF}) to test for object #0 */
+#define glyph_is_normal_generic_obj(glyph) \
+    ((glyph) >= GLYPH_OBJ_OFF && (glyph) < GLYPH_OBJ_OFF + MAXOCLASSES)
+#define glyph_is_piletop_generic_obj(glyph) \
+    ((glyph) >= GLYPH_OBJ_PILETOP_OFF                           \
+     && (glyph) < GLYPH_OBJ_PILETOP_OFF + MAXOCLASSES)
+#define glyph_is_generic_object(glyph) \
+    (glyph_is_normal_generic_obj(glyph)                         \
+     || glyph_is_piletop_generic_obj(glyph))
 #define glyph_is_normal_piletop_obj(glyph) \
-    (((glyph) >= GLYPH_OBJ_PILETOP_OFF)                         \
+    (((glyph) >= GLYPH_OBJ_PILETOP_OFF + MAXOCLASSES)           \
      && ((glyph) < (GLYPH_OBJ_PILETOP_OFF + NUM_OBJECTS)))
 #define glyph_is_normal_object(glyph) \
-    ((((glyph) >= GLYPH_OBJ_OFF)                                \
+    ((((glyph) >= GLYPH_OBJ_OFF + MAXOCLASSES)                  \
       && ((glyph) < (GLYPH_OBJ_OFF + NUM_OBJECTS)))             \
      || glyph_is_normal_piletop_obj(glyph))
 
-#if 0
+#if 0   /* [note: out of date] */
 #define glyph_is_object(glyph) \
-  ((((glyph) >= GLYPH_OBJ_OFF) && ((glyph) < (GLYPH_OBJ_OFF + NUM_OBJECTS))) \
+  (   (((glyph) >= GLYPH_OBJ_OFF)                                       \
+       && ((glyph) < (GLYPH_OBJ_OFF + NUM_OBJECTS)))                    \
    || (((glyph) >= GLYPH_OBJ_PILETOP_OFF)                               \
        && ((glyph) < (GLYPH_OBJ_PILETOP_OFF + NUM_OBJECTS)))            \
    || (((glyph) >= GLYPH_STATUE_MALE_OFF)                               \
@@ -851,15 +888,16 @@ enum glyph_offsets {
    || (((glyph) >= GLYPH_BODY_OFF)                                      \
        && ((glyph) < (GLYPH_BODY_OFF + NUMMONS)))                       \
    || (((glyph) >= GLYPH_BODY_PILETOP_OFF)                              \
-       && ((glyph) < (GLYPH_BODY_PILETOP_OFF + NUMMONS))))
+       && ((glyph) < (GLYPH_BODY_PILETOP_OFF + NUMMONS)))               \
+  )
 #endif
 #define glyph_is_object(glyph) \
-    (glyph_is_normal_object(glyph) || glyph_is_statue(glyph)    \
-     || glyph_is_body(glyph))
+    (glyph_is_normal_object(glyph) || glyph_is_generic_object(glyph)    \
+     || glyph_is_statue(glyph) || glyph_is_body(glyph))
 
 /* briefly used for Qt's "paper doll" inventory which shows map tiles for
    equipped objects; those vary like floor items during hallucination now
-   so this isn't used anywhere */
+   so this isn't used anywhere [note: out of date since generic objs added] */
 #define obj_to_true_glyph(obj)                                  \
     (((obj)->otyp == STATUE)                                    \
      ? ((int) (obj)->corpsenm                                   \
@@ -881,10 +919,14 @@ enum glyph_offsets {
 #define glyph_to_obj(glyph) \
     (glyph_is_body(glyph) ? CORPSE                              \
      : glyph_is_statue(glyph) ? STATUE                          \
-       : glyph_is_normal_object(glyph)                          \
+       : glyph_is_generic_object(glyph)                         \
+         ? ((glyph) - (glyph_is_piletop_generic_obj(glyph)      \
+                       ? GLYPH_OBJ_PILETOP_OFF                  \
+                       : GLYPH_OBJ_OFF))                        \
+         : glyph_is_normal_object(glyph)                        \
            ? ((glyph) - (glyph_is_normal_piletop_obj(glyph)     \
-                           ? GLYPH_OBJ_PILETOP_OFF              \
-                           : GLYPH_OBJ_OFF))                    \
+                         ? GLYPH_OBJ_PILETOP_OFF                \
+                         : GLYPH_OBJ_OFF))                      \
            : NUM_OBJECTS)
 
 #define glyph_to_body_corpsenm(glyph) \
@@ -903,27 +945,21 @@ enum glyph_offsets {
                    ? ((glyph) - GLYPH_STATUE_MALE_OFF)  \
                    : NO_GLYPH)
 
-/* These have the unfortunate side effect of needing a global variable  */
-/* to store a result. 'otg_temp' is defined and declared in decl.{ch}.  */
+/* This has the unfortunate side effect of needing a global variable
+   to store a result. 'otg_temp' is defined and declared in decl.{ch}.  */
 #define random_obj_to_glyph(rng) \
-    ((go.otg_temp = random_object(rng)) == CORPSE        \
+    (((go.otg_temp = random_object(rng)) == CORPSE)     \
          ? (random_monster(rng) + GLYPH_BODY_OFF)       \
          : (go.otg_temp + GLYPH_OBJ_OFF))
 #define corpse_to_glyph(obj) \
-    ((int) ((obj)->corpsenm + (obj_is_piletop(obj)        \
-                                ? GLYPH_BODY_PILETOP_OFF  \
-                                : GLYPH_BODY_OFF)))
-
-/* Paraphrased rationale from the original commit for the boulder
-   exception: If a boulder is the topmost item on a pile, then it is
-   not mapped to a piletop glyph; mainly because boulders are "solid";
-   boulders dropped by monsters are nearly always over other objects;
-   also done so that special levels such a Sokoban can "hide" items
-   under the boulders. */
+    ((int) ((obj)->corpsenm                             \
+          + (obj_is_piletop(obj) ? GLYPH_BODY_PILETOP_OFF : GLYPH_BODY_OFF)))
+#define generic_obj_to_glyph(obj) \
+    ((int) ((obj)->oclass                               \
+            + (obj_is_piletop(obj) ? GLYPH_OBJ_PILETOP_OFF : GLYPH_OBJ_OFF)))
 #define normal_obj_to_glyph(obj) \
-    ((int) ((obj)->otyp + ((obj_is_piletop(obj) && ((obj)->otyp != BOULDER)) \
-                           ? GLYPH_OBJ_PILETOP_OFF                           \
-                           : GLYPH_OBJ_OFF)))
+    ((int) ((obj)->otyp                                 \
+            + (obj_is_piletop(obj) ? GLYPH_OBJ_PILETOP_OFF : GLYPH_OBJ_OFF)))
 
 /* MRKR: Statues now have glyphs corresponding to the monster they    */
 /*       represent and look like monsters when you are hallucinating. */
@@ -942,13 +978,11 @@ enum glyph_offsets {
               : GLYPH_STATUE_MALE_OFF))))
 
 #define obj_to_glyph(obj, rng) \
-    (((obj)->otyp == STATUE)                             \
-        ? statue_to_glyph(obj, rng)                      \
-        : ((Hallucination)                               \
-             ? random_obj_to_glyph(rng)                  \
-             : (((obj)->otyp == CORPSE)                  \
-                  ? corpse_to_glyph(obj)                 \
-                  : normal_obj_to_glyph(obj))))
+    (((obj)->otyp == STATUE) ? statue_to_glyph(obj, rng)            \
+     : (Hallucination) ? random_obj_to_glyph(rng)                   \
+       : ((obj)->otyp == CORPSE) ? corpse_to_glyph(obj)             \
+         : obj_is_generic(obj) ? generic_obj_to_glyph(obj)          \
+           : normal_obj_to_glyph(obj))
 
 #define GLYPH_TRAP_OFF \
     (GLYPH_CMAP_B_OFF + (S_arrow_trap - S_grave))
@@ -963,8 +997,10 @@ enum glyph_offsets {
 
 #if 0
 #define glyph_is_piletop(glyph) \
-    (glyph_is_body_piletop(glyph) || glyph_is_statue_piletop(glyph) \
-        || glyph_is_obj_piletop(glyph))
+    (glyph_is_body_piletop(glyph)           \
+     || glyph_is_statue_piletop(glyph)      \
+     || glyph_is_piletop_generic_obj(glyph) \
+     || glyph_is_obj_piletop(glyph))
 #endif
 
 /* mgflags for altering map_glyphinfo() internal behavior */
index 54235811e218668d1a952d9a9cbb9b2da1564ec7..cf6b51aee656c194d08f440678171e71123a485f 100644 (file)
@@ -430,6 +430,7 @@ extern void under_water(int);
 extern void see_monsters(void);
 extern void set_mimic_blocking(void);
 extern void see_objects(void);
+extern void see_nearby_objects(void);
 extern void see_traps(void);
 extern void curs_on_u(void);
 extern int doredraw(void);
index be7ec92e2e25bd058099b17064fe864cd5391ee6..6df5398095ce314970d72e3436800f2077e27002 100644 (file)
@@ -171,11 +171,12 @@ enum objects_nums {
 };
 
 enum misc_object_nums {
+    NUM_POTIONS    = (LAST_POTION - FIRST_POTION + 1),
+    NUM_REAL_GEMS  = (LAST_REAL_GEM - FIRST_REAL_GEM + 1),
     NUM_GLASS_GEMS = (LAST_GLASS_GEM - FIRST_GLASS_GEM + 1),
-    /* 1st +1: last-first subtraction; 2nd +1: extra empty spl_book[] slot;
-       currently LAST_SPELL includes blank, novel, and DeadBook so this
-       overallocates when used to define spl_book[] array */
-    MAXSPELL = (LAST_SPELL + 1 - FIRST_SPELL + 1),
+    /* LAST_SPELL is SPE_BLANK_PAPER, guaranteeing that spl_book[] will
+       have at least one unused slot at end to be used as a terminator */
+    MAXSPELL       = (LAST_SPELL - FIRST_SPELL + 1),
 };
 
 extern NEARDATA struct objclass objects[NUM_OBJECTS + 1];
index 4a2a0223c9d02a16e511bc4e25cbf51e89becc01..5aa08b7301c37f3a6c8bfdb1203b4ae770bf0a76 100644 (file)
 #error Unproductive inclusion of objects.h
 #endif  /* OBJECTS_DESCR_INIT || OBJECTS_INIT || OBJECTS_ENUM */
 
+#define GENERIC(desc, class, gen_enum) \
+    OBJECT(OBJ(NoDes, desc),                                            \
+           BITS(0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, P_NONE, 0),            \
+           0, class, 0, 0, 0, 0, 0, 0, 0, 0, 0, CLR_GRAY, gen_enum)
+
 /* dummy object[0] -- description [2nd arg] *must* be NULL */
 OBJECT(OBJ("strange object", NoDes),
        BITS(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, P_NONE, 0),
        0, ILLOBJ_CLASS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, STRANGE_OBJECT),
+/* slots [1] through [MAXOCLASSES-1] are indexed by class; some are
+   used for display purposes, most aren't used; none are actual objects;
+   note that 'real' strange object is in slot [0] but ILLOBJ_CLASS is 1
+   so we add a dummy for it in slot [1] to simplify accessing the rest;
+   there isn't any entry for RANDOM_CLASS (0) */
+GENERIC("strange",    ILLOBJ_CLASS,  GENERIC_ILLOBJ),  /* [1] */
+GENERIC("weapon",     WEAPON_CLASS,  GENERIC_WEAPON),  /* [2] */
+GENERIC("armor",      ARMOR_CLASS,   GENERIC_ARMOR),   /* [3] */
+GENERIC("ring",       RING_CLASS,    GENERIC_RING),    /* [4] */
+GENERIC("amulet",     AMULET_CLASS,  GENERIC_AMULET),  /* [5] */
+GENERIC("tool",       TOOL_CLASS,    GENERIC_TOOL),    /* [6] */
+GENERIC("food",       FOOD_CLASS,    GENERIC_FOOD),    /* [7] */
+GENERIC("potion",     POTION_CLASS,  GENERIC_POTION),  /* [8] */
+GENERIC("scroll",     SCROLL_CLASS,  GENERIC_SCROLL),  /* [9] */
+GENERIC("spellbook",  SPBOOK_CLASS,  GENERIC_SPBOOK),  /* [10] */
+GENERIC("wand",       WAND_CLASS,    GENERIC_WAND),    /* [11] */
+GENERIC("coin",       COIN_CLASS,    GENERIC_COIN),    /* [12] */
+GENERIC("gem",        GEM_CLASS,     GENERIC_GEM),     /* [13] */
+GENERIC("large rock", ROCK_CLASS,    GENERIC_ROCK),    /* [14] bldr+statue */
+GENERIC("iron ball",  BALL_CLASS,    GENERIC_BALL),    /* [15] */
+GENERIC("iron chain", CHAIN_CLASS,   GENERIC_CHAIN),   /* [16] */
+GENERIC("venom",      VENOM_CLASS,   GENERIC_VENOM),   /* [17] */
+#undef GENERIC
 
 /* weapons ... */
 #define WEAPON(name,desc,kn,mg,bi,prob,wt,                          \
@@ -1045,6 +1073,7 @@ FOOD("tin",                  75,  0, 10, 1, METAL,   0, HI_METAL, TIN),
            power, POTION_CLASS, prob, 0, 20, cost, 0, 0, 0, 0, 10, color, sn)
 POTION("gain ability",           "ruby",  1, 0, 42, 300, CLR_RED,
                                                         POT_GAIN_ABILITY),
+MARKER(FIRST_POTION, POT_GAIN_ABILITY)
 POTION("restore ability",        "pink",  1, 0, 40, 100, CLR_BRIGHT_MAGENTA,
                                                         POT_RESTORE_ABILITY),
 POTION("confusion",            "orange",  1, CONFUSION, 42, 100, CLR_ORANGE,
@@ -1097,6 +1126,7 @@ POTION("oil",                   "murky",  0, 0, 30, 250, CLR_BROWN,
  */
 POTION("water",                 "clear",  0, 0, 92, 100, CLR_CYAN,
                                                         POT_WATER),
+MARKER(LAST_POTION, POT_WATER)
 #undef POTION
 
 /* scrolls ... */
@@ -1338,6 +1368,11 @@ SPELL("freeze sphere",   "hardcover",
  */
 SPELL("blank paper", "plain", P_NONE, 18, 0, 0, 0, 0, HI_PAPER,
                                                         SPE_BLANK_PAPER),
+/* LAST_SPELL is used to calculate MAXSPELL, allocation size of spl_book[];
+   by including blank paper, which has no actual spell, we ensure that
+   even if hero learns every spell, spl_book[] will have at least one
+   unused slot at end; an unused slot is needed for use as terminator */
+MARKER(LAST_SPELL, SPE_BLANK_PAPER)
 /* tribute book for 3.6 */
 OBJECT(OBJ("novel", "paperback"),
        BITS(0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, P_NONE, PAPER),
@@ -1348,10 +1383,6 @@ OBJECT(OBJ("Book of the Dead", "papyrus"),
        BITS(0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, P_NONE, PAPER),
        0, SPBOOK_CLASS, 0, 0, 20, 10000, 0, 0, 0, 7, 20, HI_PAPER,
                                                         SPE_BOOK_OF_THE_DEAD),
-/* LAST_SPELL is used to compute MAXSPELL and should probably be
-   SPE_BLANK_PAPER-1 since there's no need for spl_book[] slots for
-   blank, novel, and Book of the Dead */
-MARKER(LAST_SPELL, SPE_BOOK_OF_THE_DEAD)
 #undef SPELL
 
 /* wands ... */
@@ -1488,7 +1519,7 @@ GEM("worthless piece of blue glass", "blue",
 GEM("worthless piece of red glass", "red",
     77, 1, 0, 6, 5, GLASS, CLR_RED, WORTHLESS_RED_GLASS),
 GEM("worthless piece of yellowish brown glass", "yellowish brown",
-    77, 1, 0, 6, 5, GLASS, CLR_BROWN, WORTHLESS_YELLOWISH_BROWN_GLASS),
+    77, 1, 0, 6, 5, GLASS, CLR_BROWN, WORTHLESS_YELLOWBROWN_GLASS),
 GEM("worthless piece of orange glass", "orange",
     76, 1, 0, 6, 5, GLASS, CLR_ORANGE, WORTHLESS_ORANGE_GLASS),
 GEM("worthless piece of yellow glass", "yellow",
index 65b64d320837fe4862b0a74cdd73fbf089ed6551..2f6ab8463e871537c862710cc13963c2a872421a 100644 (file)
@@ -17,7 +17,7 @@
  * Incrementing EDITLEVEL can be used to force invalidation of old bones
  * and save files.
  */
-#define EDITLEVEL 67
+#define EDITLEVEL 68
 
 /*
  * Development status possibilities.
index 7a56b469541854b4011a0b6d3c78b5eb643d1079..fe15ce2134211bd5a6390a46e73912a8889c1ae1 100644 (file)
@@ -1058,6 +1058,9 @@ dump_enums(void)
     static const struct enum_dump omdump[] = {
         dump_om(FIRST_AMULET),
         dump_om(LAST_AMULET),
+        dump_om(FIRST_POTION),
+        dump_om(LAST_POTION),
+        dump_om(NUM_POTIONS),
         dump_om(FIRST_SPELL),
         dump_om(LAST_SPELL),
         dump_om(MAXSPELL),
@@ -1065,7 +1068,9 @@ dump_enums(void)
         dump_om(LAST_REAL_GEM),
         dump_om(FIRST_GLASS_GEM),
         dump_om(LAST_GLASS_GEM),
+        dump_om(NUM_REAL_GEMS),
         dump_om(NUM_GLASS_GEMS),
+        dump_om(MAX_GLYPH),
     };
 #undef dump_om
     static const struct enum_dump *const ed[NUM_ENUM_DUMPS] = {
@@ -1075,16 +1080,16 @@ dump_enums(void)
     static int szd[NUM_ENUM_DUMPS] = {
         SIZE(monsdump), SIZE(objdump), SIZE(omdump)
     };
-    int i, j;
+    const char *nmprefix;
+    int i, j, nmwidth;
 
     for (i = 0; i < NUM_ENUM_DUMPS; ++ i) {
         raw_printf("enum %s = {", titles[i]);
         for (j = 0; j < szd[i]; ++j) {
-            raw_printf("    %s%s = %i%s",
-                       (j == szd[i] - 1) ? "" : pfx[i],
-                       ed[i][j].nm,
-                       ed[i][j].val,
-                       (j == szd[i] - 1) ? "" : ",");
+            nmprefix = (j == szd[i] - 1) ? "" : pfx[i]; /* "" or "PM_" */
+            nmwidth = 27 - (int) strlen(nmprefix); /* 27 or 24 */
+            raw_printf("    %s%*s = %3d,",
+                       nmprefix, -nmwidth, ed[i][j].nm, ed[i][j].val);
        }
         raw_print("};");
         raw_print("");
index 43586368c6b80a8678f6370a155c7aab4639ea16..25ad307cde4c0ddd8b652cef7819d3df5130dd10 100644 (file)
@@ -588,6 +588,7 @@ const struct instance_globals_o g_init_o = {
     UNDEFINED_PTR, /* occupation */
     0, /* occtime */
     UNDEFINED_VALUE, /* otg_temp */
+    NULL, /* otg_otmp */
     NULL, /* occtxt */
     /* symbols.c */
     DUMMY, /* ov_primary_syms */
index 51f2a42790926cf02ed873400b2c353da7adc076..89d807c265cff23af0b9ff59bffc93614abf45d2 100644 (file)
@@ -309,13 +309,23 @@ map_trap(register struct trap *trap, register int show)
  *
  * Map the given object.  This routine assumes that the hero can physically
  * see the location of the object.  Update the screen if directed.
+ * [Note: feel_location() -> map_location() -> map_object() contradicts
+ * the claim here that the hero can see obj's <ox,oy>.]
  */
 void
-map_object(register struct obj *obj, register int show)
+map_object(register struct obj *obj, int show)
 {
     register coordxy x = obj->ox, y = obj->oy;
     register int glyph = obj_to_glyph(obj, newsym_rn2);
 
+    /* if this object is already displayed as a generic object, it might
+       become a specific one now */
+    if (glyph_is_generic_object(glyph) && cansee(x, y) && next2u(x, y)
+        && !Hallucination) {
+        obj->dknown = 1;
+        glyph = obj_to_glyph(obj, newsym_rn2);
+    }
+
     if (gl.level.flags.hero_memory) {
         /* MRKR: While hallucinating, statues are seen as random monsters */
         /*       but remembered as random objects.                        */
@@ -1425,6 +1435,29 @@ see_objects(void)
     update_inventory();
 }
 
+/* mark the top object of each adjacent stack as having been seen, and
+   if it was being displayed as generic, redisplay it as specific */
+void
+see_nearby_objects(void)
+{
+    struct obj *obj;
+    int glyph;
+    coordxy ix, iy, x = u.ux, y = u.uy;
+
+    for (iy = y - 1; iy <= y + 1; ++iy)
+        for (ix = x - 1; ix <= x + 1; ++ix) {
+            if (!isok(ix, iy) || !cansee(ix, iy))
+                continue;
+            if ((obj = vobj_at(ix, iy)) != 0) {
+                obj->dknown = 1; /* adjacent, so close enough to see it */
+                /* operate on remembered glyph rather than current one */
+                glyph = levl[ix][iy].glyph;
+                if (glyph_is_generic_object(glyph))
+                    newsym_force(ix, iy);
+            }
+        }
+}
+
 /*
  * Update hallucinated traps.
  */
@@ -1697,8 +1730,10 @@ show_glyph(coordxy x, coordxy y, int glyph)
             text = "statue of a male monster at top of a pile";
         } else if ((offset = (glyph - GLYPH_BODY_PILETOP_OFF)) >= 0) {
             text = "body at top of a pile";
-        } else if ((offset = (glyph - GLYPH_OBJ_PILETOP_OFF))) {
-            text = "object at top of a pile";
+        } else if ((offset = (glyph - GLYPH_OBJ_PILETOP_OFF)) >= 0) {
+            text = (glyph_is_piletop_generic_obj(glyph)
+                    ? "generic object at top of a pile"
+                    : "object at top of a pile");
         } else if ((offset = (glyph - GLYPH_STATUE_FEM_OFF)) >= 0) {
             text = "statue of female monster";
         } else if ((offset = (glyph - GLYPH_STATUE_MALE_OFF)) >= 0) {
@@ -1745,7 +1780,9 @@ show_glyph(coordxy x, coordxy y, int glyph)
         } else if ((offset = (glyph - GLYPH_CMAP_STONE_OFF)) >= 0) {
             text = "stone";
         } else if ((offset = (glyph - GLYPH_OBJ_OFF)) >= 0) {
-            text = "object";
+            text = (glyph_is_normal_generic_obj(glyph)
+                    ? "generic object"
+                    : "object");
         } else if ((offset = (glyph - GLYPH_RIDDEN_FEM_OFF)) >= 0) {
             text = "ridden female monster";
         } else if ((offset = (glyph - GLYPH_RIDDEN_MALE_OFF)) >= 0) {
index 07cd2f56bea379fc726419538a04b96238ae7e2a..7c3f10f4a073ebc10d90bef10bf51530d09226af 100644 (file)
@@ -1426,7 +1426,7 @@ void
 u_on_newpos(coordxy x, coordxy y)
 {
     if (!isok(x, y)) { /* validate location */
-        void (*func)(const char *, ...);
+        void (*func)(const char *, ...) PRINTF_F_PTR(1, 2);
 
         func = (x < 0 || y < 0 || x > COLNO - 1 || y > ROWNO - 1) ? panic
                : impossible;
@@ -1445,6 +1445,10 @@ u_on_newpos(coordxy x, coordxy y)
        stale values from previous level */
     if (!on_level(&u.uz, &u.uz0))
         u.ux0 = u.ux, u.uy0 = u.uy;
+    else if (!Blind && !Hallucination)
+        /* still on same level; might have come close enough to
+           generic object(s) to redisplay them as specific objects */
+        see_nearby_objects();
 }
 
 /* place you on a random location when arriving on a level */
index 196bb3ed1a90d090151be453fcfa1101257d7e36..5a93fa9852095d779955de338d670af9d2fd0cf1 100644 (file)
@@ -31,8 +31,10 @@ shuffle_tiles(void)
     short tmp_tilemap[2][NUM_OBJECTS];
 
     for (i = 0; i < NUM_OBJECTS; i++) {
-        tmp_tilemap[0][i] = glyphmap[objects[i].oc_descr_idx + GLYPH_OBJ_OFF].tileidx;
-        tmp_tilemap[1][i] = glyphmap[objects[i].oc_descr_idx + GLYPH_OBJ_PILETOP_OFF].tileidx;
+        tmp_tilemap[0][i] = glyphmap[objects[i].oc_descr_idx
+                                     + GLYPH_OBJ_OFF].tileidx;
+        tmp_tilemap[1][i] = glyphmap[objects[i].oc_descr_idx
+                                     + GLYPH_OBJ_PILETOP_OFF].tileidx;
     }
     for (i = 0; i < NUM_OBJECTS; i++) {
         glyphmap[i + GLYPH_OBJ_OFF].tileidx = tmp_tilemap[0][i];
@@ -122,17 +124,19 @@ init_objects(void)
 #define COPY_OBJ_DESCR(o_dst, o_src) o_dst.oc_descr_idx = o_src.oc_descr_idx
 #endif
 
-    /* bug fix to prevent "initialization error" abort on Intel Xenix.
-     * reported by mikew@semike
-     */
-    for (i = 0; i <= MAXOCLASSES; i++)
+    for (i = 0; i <= MAXOCLASSES; i++) {
         gb.bases[i] = 0;
+        if (i > 0 && i < MAXOCLASSES && objects[i].oc_class != i)
+            panic(
+              "init_objects: class for generic object #%d doesn't match (%d)",
+                  i, objects[i].oc_class);
+    }
     /* initialize object descriptions */
     for (i = 0; i < NUM_OBJECTS; i++)
         objects[i].oc_name_idx = objects[i].oc_descr_idx = i;
     /* init base; if probs given check that they add up to 1000,
        otherwise compute probs */
-    first = 0;
+    first = MAXOCLASSES;
     prevoclass = -1;
     while (first < NUM_OBJECTS) {
         oclass = objects[first].oc_class;
@@ -188,7 +192,7 @@ init_objects(void)
             gb.bases[last] = gb.bases[last + 1];
 
     /* check objects[].oc_name_known */
-    for (i = 0; i < NUM_OBJECTS; ++i) {
+    for (i = MAXOCLASSES; i < NUM_OBJECTS; ++i) {
         int nmkn = objects[i].oc_name_known != 0;
 
         if (!OBJ_DESCR(objects[i]) ^ nmkn) {
index 7522e541e80962e5438a0bb57071a5f7dd867bcf..ab01024d1d71635f605c14b83fd3d2d069f9f822 100644 (file)
@@ -46,7 +46,349 @@ Z = (195, 195, 195)
   CKKKKKKKKKKJAA..
   .AAAAAAAAAAAA...
 }
-# tile 1 (arrow)
+# tile 1 (strange)
+#_ right/close square bracket
+{
+  ................
+  ................
+  ................
+  ......OOOO......
+  .......SSOS.....
+  .........OS.....
+  .........OS.....
+  .........OS.....
+  .........OS.....
+  .........OS.....
+  .........OS.....
+  ......OOOOS.....
+  .......SSSS.....
+  ................
+  ................
+  ................
+}
+# tile 2 (weapon)
+#_ right/close parenthesis
+{
+  ................
+  ................
+  ................
+  ......OO........
+  .......SO.......
+  .........O......
+  .........OS.....
+  .........OS.....
+  .........OS.....
+  .........OS.....
+  ........O.S.....
+  ......OO.S......
+  .......SS.......
+  ................
+  ................
+  ................
+}
+# tile 3 (armor)
+#_ left/open square bracket
+{
+  ................
+  ................
+  ................
+  ......OOOO......
+  ......ORRRR.....
+  ......OR........
+  ......OR........
+  ......OR........
+  ......OR........
+  ......OR........
+  ......OR........
+  ......OOOO......
+  .......RRRR.....
+  ................
+  ................
+  ................
+}
+# tile 4 (ring)
+#_ circle rather than equal sign
+{
+  ................
+  ................
+  ................
+  ................
+  .......OOO......
+  ......O.RRO.....
+  .....O.R...O....
+  .....OR....OR...
+  .....OR....OR...
+  ......O...O.R...
+  .......OOO.R....
+  ........RRR.....
+  ................
+  ................
+  ................
+  ................
+}
+# tile 5 (amulet)
+#_ double quote
+{
+  ................
+  ................
+  ................
+  ................
+  ......O..O......
+  ......OS.OS.....
+  .....O.SO.S.....
+  .....OS.OS......
+  ....O.SO.S......
+  ....OS.OS.......
+  .....S..S.......
+  ................
+  ................
+  ................
+  ................
+  ................
+}
+# tile 6 (tool)
+#_ left/open parenthesis
+{
+  ................
+  ................
+  ................
+  ........OO......
+  .......O.RR.....
+  ......O.R.......
+  ......OR........
+  ......OR........
+  ......OR........
+  ......OR........
+  .......O........
+  ........OO......
+  .........RR.....
+  ................
+  ................
+  ................
+}
+# tile 7 (food)
+#_ percent sign (almost)
+{
+  ................
+  ................
+  ................
+  ................
+  .....OO.....O...
+  ....O.SO...O.S..
+  ....OS.OS.O.S...
+  .....OO.SO.S....
+  ......SSO.S.....
+  .......O.SOO....
+  ......O.SO.SO...
+  .....O.S.OS.OS..
+  ....O.S...OO.S..
+  .....S.....SS...
+  ................
+  ................
+}
+# tile 8 (potion)
+#_ exclamation point
+{
+  ................
+  ................
+  ................
+  .......O........
+  .......OS.......
+  .......OS.......
+  .......OS.......
+  .......OS.......
+  .......OS.......
+  .......OS.......
+  ........S.......
+  ................
+  .......O........
+  ........S.......
+  ................
+  ................
+}
+# tile 9 (scroll)
+#_ question mark (almost)
+{
+  ................
+  ................
+  ................
+  ......OOO.......
+  .....O.SSO......
+  ......S..OS.....
+  .........OS.....
+  ........O.S.....
+  .......O.S......
+  .......OS.......
+  .......OS.......
+  ........S.......
+  .......O........
+  ........S.......
+  ................
+  ................
+}
+# tile 10 (spellbook)
+#_ plus sign
+{
+  ................
+  ................
+  ................
+  ................
+  ................
+  .......O........
+  .......OS.......
+  .......OS.......
+  ....OOOOOOO.....
+  .....SSOSSSS....
+  .......OS.......
+  .......OS.......
+  ........S.......
+  ................
+  ................
+  ................
+}
+# tile 11 (wand)
+#_ slash
+{
+  ................
+  ................
+  ................
+  ...........O....
+  ..........O.S...
+  .........O.S....
+  ........O.S.....
+  .......O.S......
+  ......O.S.......
+  .....O.S........
+  ....O.S.........
+  ...O.S..........
+  ....S...........
+  ................
+  ................
+  ................
+}
+# tile 12 (coin)
+#_ dollar sign
+{
+  ................
+  ................
+  ................
+  ........H.......
+  .......OOO......
+  ......O.HSS.....
+  ......OSH.......
+  .......OOO......
+  ........HSO.....
+  ........H.OS....
+  .......OOO.S....
+  ........HSS.....
+  ................
+  ................
+  ................
+  ................
+}
+# tile 13 (gem)
+#_ asterisk
+{
+  ................
+  ................
+  ................
+  .......O........
+  ....O..OS.O.....
+  .....O.OSO.S....
+  ......O.O.S.....
+  .......O.S......
+  ......O.O.......
+  .....O.O.O......
+  ....O.SOS.O.....
+  .....S.OS..S....
+  ........S.......
+  ................
+  ................
+  ................
+}
+# tile 14 (large rock)
+#_ backtick/grave accent
+{
+  ................
+  ................
+  ................
+  ................
+  ................
+  .....O..........
+  .....OS.........
+  ......OO........
+  .......SO.......
+  .........S......
+  ................
+  ................
+  ................
+  ................
+  ................
+  ................
+}
+# tile 15 (iron ball)
+#_ zero
+{
+  ................
+  ................
+  ................
+  ................
+  ......OOO.......
+  .....O.SSO......
+  .....OS..OS.....
+  .....OS..OS.....
+  .....OS..OS.....
+  .....OS..OS.....
+  .....OS..OS.....
+  ......OOO.S.....
+  .......SSS......
+  ................
+  ................
+  ................
+}
+# tile 16 (iron chain)
+#_ underscore (ugh)
+{
+  ................
+  ................
+  ................
+  ................
+  ................
+  ................
+  ................
+  ................
+  ................
+  ................
+  ...OOOOOOOOO....
+  ....SSSSSSSSS...
+  ................
+  ................
+  ................
+  ................
+}
+# tile 17 (venom)
+#_ period
+{
+  ................
+  ................
+  ................
+  ................
+  ................
+  ................
+  ................
+  ................
+  ................
+  .......OO.......
+  .......OOR......
+  ........RR......
+  ................
+  ................
+  ................
+  ................
+}
+#_ end of generic object tiles
+#_ start of regular object tiles
+# tile 18 (arrow)
 {
   ................
   ..........PP....
@@ -65,7 +407,7 @@ Z = (195, 195, 195)
   ..AAA...........
   ................
 }
-# tile 2 (runed arrow / elven arrow)
+# tile 19 (runed arrow / elven arrow)
 {
   ................
   ..........FF....
@@ -84,7 +426,7 @@ Z = (195, 195, 195)
   ..AAA...........
   ................
 }
-# tile 3 (crude arrow / orcish arrow)
+# tile 20 (crude arrow / orcish arrow)
 {
   ................
   ..........PP....
@@ -103,7 +445,7 @@ Z = (195, 195, 195)
   ..AAA...........
   ................
 }
-# tile 4 (silver arrow)
+# tile 21 (silver arrow)
 {
   ................
   ..........DP....
@@ -122,7 +464,7 @@ Z = (195, 195, 195)
   ..AAA...........
   ................
 }
-# tile 5 (bamboo arrow / ya)
+# tile 22 (bamboo arrow / ya)
 {
   ................
   ..........BP....
@@ -141,7 +483,7 @@ Z = (195, 195, 195)
   NNPA............
   .AA.............
 }
-# tile 6 (crossbow bolt)
+# tile 23 (crossbow bolt)
 {
   ................
   ................
@@ -160,7 +502,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 7 (dart)
+# tile 24 (dart)
 {
   ................
   ................
@@ -179,7 +521,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 8 (throwing star / shuriken)
+# tile 25 (throwing star / shuriken)
 {
   ................
   ................
@@ -198,7 +540,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 9 (boomerang)
+# tile 26 (boomerang)
 {
   ................
   ................
@@ -217,7 +559,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 10 (spear)
+# tile 27 (spear)
 {
   ................
   ..............N.
@@ -236,7 +578,7 @@ Z = (195, 195, 195)
   ..JAA...........
   ................
 }
-# tile 11 (runed spear / elven spear)
+# tile 28 (runed spear / elven spear)
 {
   ................
   ..............N.
@@ -255,7 +597,7 @@ Z = (195, 195, 195)
   ..JAA...........
   ................
 }
-# tile 12 (crude spear / orcish spear)
+# tile 29 (crude spear / orcish spear)
 {
   ................
   ..............N.
@@ -274,7 +616,7 @@ Z = (195, 195, 195)
   ..JAA...........
   ................
 }
-# tile 13 (stout spear / dwarvish spear)
+# tile 30 (stout spear / dwarvish spear)
 {
   ................
   ................
@@ -293,7 +635,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 14 (silver spear)
+# tile 31 (silver spear)
 {
   ................
   ..............OA
@@ -312,7 +654,7 @@ Z = (195, 195, 195)
   .OA.............
   ................
 }
-# tile 15 (throwing spear / javelin)
+# tile 32 (throwing spear / javelin)
 {
   ................
   ..............OA
@@ -331,7 +673,7 @@ Z = (195, 195, 195)
   .OA.............
   ................
 }
-# tile 16 (trident)
+# tile 33 (trident)
 {
   ................
   ...PA...........
@@ -350,7 +692,7 @@ Z = (195, 195, 195)
   ............JA..
   ................
 }
-# tile 17 (dagger)
+# tile 34 (dagger)
 {
   ................
   ................
@@ -369,7 +711,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 18 (runed dagger / elven dagger)
+# tile 35 (runed dagger / elven dagger)
 {
   ................
   ................
@@ -388,7 +730,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 19 (crude dagger / orcish dagger)
+# tile 36 (crude dagger / orcish dagger)
 {
   ................
   ................
@@ -407,7 +749,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 20 (silver dagger)
+# tile 37 (silver dagger)
 {
   ................
   ................
@@ -426,7 +768,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 21 (athame)
+# tile 38 (athame)
 {
   ................
   ................
@@ -445,7 +787,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 22 (scalpel)
+# tile 39 (scalpel)
 {
   ................
   ................
@@ -464,7 +806,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 23 (knife)
+# tile 40 (knife)
 {
   ................
   ................
@@ -483,7 +825,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 24 (stiletto)
+# tile 41 (stiletto)
 {
   ................
   ................
@@ -502,7 +844,7 @@ Z = (195, 195, 195)
   ..AAA...........
   ................
 }
-# tile 25 (worm tooth)
+# tile 42 (worm tooth)
 {
   ................
   ................
@@ -521,7 +863,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 26 (crysknife)
+# tile 43 (crysknife)
 {
   ................
   ................
@@ -540,7 +882,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 27 (axe)
+# tile 44 (axe)
 {
   ................
   .....OPA........
@@ -559,7 +901,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 28 (double-headed axe / battle-axe)
+# tile 45 (double-headed axe / battle-axe)
 {
   ................
   ................
@@ -578,7 +920,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 29 (short sword)
+# tile 46 (short sword)
 {
   ................
   ................
@@ -597,7 +939,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 30 (runed short sword / elven short sword)
+# tile 47 (runed short sword / elven short sword)
 {
   ................
   ................
@@ -616,7 +958,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 31 (crude short sword / orcish short sword)
+# tile 48 (crude short sword / orcish short sword)
 {
   ................
   ................
@@ -635,7 +977,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 32 (broad short sword / dwarvish short sword)
+# tile 49 (broad short sword / dwarvish short sword)
 {
   ................
   ................
@@ -654,7 +996,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 33 (curved sword / scimitar)
+# tile 50 (curved sword / scimitar)
 {
   ................
   ................
@@ -673,7 +1015,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 34 (silver saber)
+# tile 51 (silver saber)
 {
   ................
   ................
@@ -692,7 +1034,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 35 (broadsword)
+# tile 52 (broadsword)
 {
   ................
   ................
@@ -711,7 +1053,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 36 (runed broadsword / elven broadsword)
+# tile 53 (runed broadsword / elven broadsword)
 {
   ................
   ................
@@ -730,7 +1072,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 37 (long sword)
+# tile 54 (long sword)
 {
   ................
   .............O..
@@ -749,7 +1091,7 @@ Z = (195, 195, 195)
   .AAA............
   ................
 }
-# tile 38 (two-handed sword)
+# tile 55 (two-handed sword)
 {
   ..............N.
   .............NO.
@@ -768,7 +1110,7 @@ Z = (195, 195, 195)
   .AAA............
   ................
 }
-# tile 39 (samurai sword / katana)
+# tile 56 (samurai sword / katana)
 {
   ................
   ..............N.
@@ -787,7 +1129,7 @@ Z = (195, 195, 195)
   ..AA............
   ................
 }
-# tile 40 (long samurai sword / tsurugi)
+# tile 57 (long samurai sword / tsurugi)
 {
   ................
   ................
@@ -806,7 +1148,7 @@ Z = (195, 195, 195)
   ..AA............
   ................
 }
-# tile 41 (runed broadsword / runesword)
+# tile 58 (runed broadsword / runesword)
 {
   ................
   .............A..
@@ -825,7 +1167,7 @@ Z = (195, 195, 195)
   .PPP............
   ................
 }
-# tile 42 (vulgar polearm / partisan)
+# tile 59 (vulgar polearm / partisan)
 {
   ................
   .............PO.
@@ -844,7 +1186,7 @@ Z = (195, 195, 195)
   .JJAA...........
   JJAA............
 }
-# tile 43 (hilted polearm / ranseur)
+# tile 60 (hilted polearm / ranseur)
 {
   ................
   .............PN.
@@ -863,7 +1205,7 @@ Z = (195, 195, 195)
   .JJAA...........
   JJAA............
 }
-# tile 44 (forked polearm / spetum)
+# tile 61 (forked polearm / spetum)
 {
   ................
   .............PN.
@@ -882,7 +1224,7 @@ Z = (195, 195, 195)
   .JJAA...........
   JJAA............
 }
-# tile 45 (single-edged polearm / glaive)
+# tile 62 (single-edged polearm / glaive)
 {
   .............KA.
   ............KNOA
@@ -901,7 +1243,7 @@ Z = (195, 195, 195)
   JAA.............
   AA..............
 }
-# tile 46 (angled poleaxe / halberd)
+# tile 63 (angled poleaxe / halberd)
 {
   ................
   .........OOOA...
@@ -920,7 +1262,7 @@ Z = (195, 195, 195)
   JJAA............
   JAA.............
 }
-# tile 47 (long poleaxe / bardiche)
+# tile 64 (long poleaxe / bardiche)
 {
   .............NA.
   ............POPA
@@ -939,7 +1281,7 @@ Z = (195, 195, 195)
   JAA.............
   ................
 }
-# tile 48 (pole cleaver / voulge)
+# tile 65 (pole cleaver / voulge)
 {
   .............NA.
   ............NNOA
@@ -958,7 +1300,7 @@ Z = (195, 195, 195)
   JAA.............
   AA..............
 }
-# tile 49 (pole sickle / fauchard)
+# tile 66 (pole sickle / fauchard)
 {
   ..........NNN...
   .........NPPPN..
@@ -977,7 +1319,7 @@ Z = (195, 195, 195)
   KJA.............
   .A..............
 }
-# tile 50 (pruning hook / guisarme)
+# tile 67 (pruning hook / guisarme)
 {
   .............NA.
   ............POPA
@@ -996,7 +1338,7 @@ Z = (195, 195, 195)
   JAA.............
   AA..............
 }
-# tile 51 (hooked polearm / bill-guisarme)
+# tile 68 (hooked polearm / bill-guisarme)
 {
   .............PN.
   ............PNA.
@@ -1015,7 +1357,7 @@ Z = (195, 195, 195)
   PNPAA...........
   OPAA............
 }
-# tile 52 (pronged polearm / lucern hammer)
+# tile 69 (pronged polearm / lucern hammer)
 {
   .........NP.....
   .........PNP....
@@ -1034,7 +1376,7 @@ Z = (195, 195, 195)
   .JJAA...........
   JJAA............
 }
-# tile 53 (beaked polearm / bec de corbin)
+# tile 70 (beaked polearm / bec de corbin)
 {
   ................
   ................
@@ -1053,7 +1395,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 54 (broad pick / dwarvish mattock)
+# tile 71 (broad pick / dwarvish mattock)
 {
   ................
   ................
@@ -1072,7 +1414,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 55 (lance)
+# tile 72 (lance)
 {
   PA..............
   .PA.............
@@ -1091,7 +1433,7 @@ Z = (195, 195, 195)
   ..........OA.ONO
   ..............ON
 }
-# tile 56 (mace)
+# tile 73 (mace)
 {
   ................
   ................
@@ -1110,7 +1452,7 @@ Z = (195, 195, 195)
   ...A............
   ................
 }
-# tile 57 (morning star)
+# tile 74 (morning star)
 {
   ................
   ................
@@ -1129,7 +1471,7 @@ Z = (195, 195, 195)
   ......KA........
   ................
 }
-# tile 58 (war hammer)
+# tile 75 (war hammer)
 {
   ..........O.....
   .........PPOA...
@@ -1148,7 +1490,7 @@ Z = (195, 195, 195)
   .JA.............
   ................
 }
-# tile 59 (club)
+# tile 76 (club)
 {
   ................
   ................
@@ -1167,7 +1509,7 @@ Z = (195, 195, 195)
   .JA.............
   ................
 }
-# tile 60 (rubber hose)
+# tile 77 (rubber hose)
 {
   ................
   ................
@@ -1186,7 +1528,7 @@ Z = (195, 195, 195)
   ....AAA.........
   ................
 }
-# tile 61 (staff / quarterstaff)
+# tile 78 (staff / quarterstaff)
 {
   ................
   .............JK.
@@ -1205,7 +1547,7 @@ Z = (195, 195, 195)
   .JJAA...........
   ..A.............
 }
-# tile 62 (thonged club / aklys)
+# tile 79 (thonged club / aklys)
 {
   ................
   ................
@@ -1224,7 +1566,7 @@ Z = (195, 195, 195)
   ......OA.OA.....
   .......OOA......
 }
-# tile 63 (flail)
+# tile 80 (flail)
 {
   ................
   ............KJ..
@@ -1243,7 +1585,7 @@ Z = (195, 195, 195)
   ..JA............
   ................
 }
-# tile 64 (bullwhip)
+# tile 81 (bullwhip)
 {
   ................
   ................
@@ -1262,7 +1604,7 @@ Z = (195, 195, 195)
   ......AAA.......
   ................
 }
-# tile 65 (bow)
+# tile 82 (bow)
 {
   ................
   .....K..........
@@ -1281,7 +1623,7 @@ Z = (195, 195, 195)
   .....KAA........
   ................
 }
-# tile 66 (runed bow / elven bow)
+# tile 83 (runed bow / elven bow)
 {
   .....K..........
   .....KP.........
@@ -1300,7 +1642,7 @@ Z = (195, 195, 195)
   .....KPAAA......
   .....KAA........
 }
-# tile 67 (crude bow / orcish bow)
+# tile 84 (crude bow / orcish bow)
 {
   ................
   ................
@@ -1319,7 +1661,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 68 (long bow / yumi)
+# tile 85 (long bow / yumi)
 {
   .....L..........
   .....LP.........
@@ -1338,7 +1680,7 @@ Z = (195, 195, 195)
   .....LPAAA......
   .....LAA........
 }
-# tile 69 (sling)
+# tile 86 (sling)
 {
   ................
   ................
@@ -1357,7 +1699,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 70 (crossbow)
+# tile 87 (crossbow)
 {
   ................
   ................
@@ -1376,7 +1718,7 @@ Z = (195, 195, 195)
   ........OA......
   ................
 }
-# tile 71 (leather hat / elven leather helm)
+# tile 88 (leather hat / elven leather helm)
 {
   ................
   ................
@@ -1395,7 +1737,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 72 (iron skull cap / orcish helm)
+# tile 89 (iron skull cap / orcish helm)
 {
   ................
   ................
@@ -1414,7 +1756,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 73 (hard hat / dwarvish iron helm)
+# tile 90 (hard hat / dwarvish iron helm)
 {
   ................
   ................
@@ -1433,7 +1775,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 74 (fedora)
+# tile 91 (fedora)
 {
   ................
   ................
@@ -1452,7 +1794,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 75 (conical hat / cornuthaum)
+# tile 92 (conical hat / cornuthaum)
 {
   ................
   .......E........
@@ -1471,7 +1813,7 @@ Z = (195, 195, 195)
   ....EEEEEEE.....
   ................
 }
-# tile 76 (conical hat / dunce cap)
+# tile 93 (conical hat / dunce cap)
 {
   ................
   .......E........
@@ -1490,7 +1832,7 @@ Z = (195, 195, 195)
   ....EEEEEEE.....
   ................
 }
-# tile 77 (dented pot)
+# tile 94 (dented pot)
 {
   ................
   ................
@@ -1509,7 +1851,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 78 (plumed helmet / helmet)
+# tile 95 (plumed helmet / helmet)
 {
   .......DID......
   ......DIBI......
@@ -1528,7 +1870,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 79 (etched helmet / helm of brilliance)
+# tile 96 (etched helmet / helm of brilliance)
 {
   ................
   ................
@@ -1547,7 +1889,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 80 (crested helmet / helm of opposite alignment)
+# tile 97 (crested helmet / helm of opposite alignment)
 {
   ................
   ................
@@ -1566,7 +1908,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 81 (visored helmet / helm of telepathy)
+# tile 98 (visored helmet / helm of telepathy)
 {
   ................
   ................
@@ -1585,7 +1927,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 82 (gray dragon scale mail)
+# tile 99 (gray dragon scale mail)
 {
   ................
   ................
@@ -1604,7 +1946,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 83 (gold dragon scale mail)
+# tile 100 (gold dragon scale mail)
 {
   ................
   ................
@@ -1623,7 +1965,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 84 (silver dragon scale mail)
+# tile 101 (silver dragon scale mail)
 {
   ................
   ................
@@ -1642,7 +1984,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 85 (shimmering dragon scale mail)
+# tile 102 (shimmering dragon scale mail)
 {
   ................
   ................
@@ -1661,7 +2003,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 86 (red dragon scale mail)
+# tile 103 (red dragon scale mail)
 {
   ................
   ................
@@ -1680,7 +2022,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 87 (white dragon scale mail)
+# tile 104 (white dragon scale mail)
 {
   ................
   ................
@@ -1699,7 +2041,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 88 (orange dragon scale mail)
+# tile 105 (orange dragon scale mail)
 {
   ................
   ................
@@ -1718,7 +2060,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 89 (black dragon scale mail)
+# tile 106 (black dragon scale mail)
 {
   ................
   ................
@@ -1737,7 +2079,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 90 (blue dragon scale mail)
+# tile 107 (blue dragon scale mail)
 {
   ................
   ................
@@ -1756,7 +2098,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 91 (green dragon scale mail)
+# tile 108 (green dragon scale mail)
 {
   ................
   ................
@@ -1775,7 +2117,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 92 (yellow dragon scale mail)
+# tile 109 (yellow dragon scale mail)
 {
   ................
   ................
@@ -1794,7 +2136,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 93 (gray dragon scales)
+# tile 110 (gray dragon scales)
 {
   ................
   ................
@@ -1813,7 +2155,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 94 (gold dragon scales)
+# tile 111 (gold dragon scales)
 {
   ................
   ................
@@ -1832,7 +2174,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 95 (silver dragon scales)
+# tile 112 (silver dragon scales)
 {
   ................
   ................
@@ -1851,7 +2193,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 96 (shimmering dragon scales)
+# tile 113 (shimmering dragon scales)
 {
   ................
   ................
@@ -1870,7 +2212,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 97 (red dragon scales)
+# tile 114 (red dragon scales)
 {
   ................
   ................
@@ -1889,7 +2231,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 98 (white dragon scales)
+# tile 115 (white dragon scales)
 {
   ................
   ................
@@ -1908,7 +2250,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 99 (orange dragon scales)
+# tile 116 (orange dragon scales)
 {
   ................
   ................
@@ -1927,7 +2269,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 100 (black dragon scales)
+# tile 117 (black dragon scales)
 {
   ................
   ................
@@ -1946,7 +2288,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 101 (blue dragon scales)
+# tile 118 (blue dragon scales)
 {
   ................
   ................
@@ -1965,7 +2307,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 102 (green dragon scales)
+# tile 119 (green dragon scales)
 {
   ................
   ................
@@ -1984,7 +2326,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 103 (yellow dragon scales)
+# tile 120 (yellow dragon scales)
 {
   ................
   ................
@@ -2003,7 +2345,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 104 (plate mail)
+# tile 121 (plate mail)
 {
   ................
   ................
@@ -2022,7 +2364,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 105 (crystal plate mail)
+# tile 122 (crystal plate mail)
 {
   ................
   ................
@@ -2041,7 +2383,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 106 (bronze plate mail)
+# tile 123 (bronze plate mail)
 {
   ................
   ................
@@ -2060,7 +2402,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 107 (splint mail)
+# tile 124 (splint mail)
 {
   ................
   ................
@@ -2079,7 +2421,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 108 (banded mail)
+# tile 125 (banded mail)
 {
   ................
   ................
@@ -2098,7 +2440,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 109 (dwarvish mithril-coat)
+# tile 126 (dwarvish mithril-coat)
 {
   ................
   ................
@@ -2117,7 +2459,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 110 (elven mithril-coat)
+# tile 127 (elven mithril-coat)
 {
   ................
   ...N.N.NO.O.O...
@@ -2136,7 +2478,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 111 (chain mail)
+# tile 128 (chain mail)
 {
   ................
   ................
@@ -2155,7 +2497,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 112 (crude chain mail / orcish chain mail)
+# tile 129 (crude chain mail / orcish chain mail)
 {
   ................
   ................
@@ -2174,7 +2516,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 113 (scale mail)
+# tile 130 (scale mail)
 {
   ................
   ................
@@ -2193,7 +2535,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 114 (studded leather armor)
+# tile 131 (studded leather armor)
 {
   ................
   ................
@@ -2212,7 +2554,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 115 (ring mail)
+# tile 132 (ring mail)
 {
   ................
   ................
@@ -2231,7 +2573,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 116 (crude ring mail / orcish ring mail)
+# tile 133 (crude ring mail / orcish ring mail)
 {
   ................
   ................
@@ -2250,7 +2592,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 117 (leather armor)
+# tile 134 (leather armor)
 {
   ................
   ................
@@ -2269,7 +2611,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 118 (leather jacket)
+# tile 135 (leather jacket)
 {
   ................
   ................
@@ -2288,7 +2630,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 119 (Hawaiian shirt)
+# tile 136 (Hawaiian shirt)
 {
   ................
   ................
@@ -2307,7 +2649,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 120 (T-shirt)
+# tile 137 (T-shirt)
 {
   ................
   ................
@@ -2326,7 +2668,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 121 (mummy wrapping)
+# tile 138 (mummy wrapping)
 {
   ................
   ................
@@ -2345,7 +2687,7 @@ Z = (195, 195, 195)
   ..N.AAN.NA.OO...
   ................
 }
-# tile 122 (faded pall / elven cloak)
+# tile 139 (faded pall / elven cloak)
 {
   ................
   ................
@@ -2364,7 +2706,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 123 (coarse mantelet / orcish cloak)
+# tile 140 (coarse mantelet / orcish cloak)
 {
   ................
   ................
@@ -2383,7 +2725,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 124 (hooded cloak / dwarvish cloak)
+# tile 141 (hooded cloak / dwarvish cloak)
 {
   ................
   ................
@@ -2402,7 +2744,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 125 (slippery cloak / oilskin cloak)
+# tile 142 (slippery cloak / oilskin cloak)
 {
   ................
   ................
@@ -2421,7 +2763,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 126 (robe)
+# tile 143 (robe)
 {
   ................
   ......CCC.......
@@ -2440,7 +2782,7 @@ Z = (195, 195, 195)
   ...ACCCCCCAAA...
   ....AAAAAAAA....
 }
-# tile 127 (apron / alchemy smock)
+# tile 144 (apron / alchemy smock)
 {
   ................
   ................
@@ -2459,7 +2801,7 @@ Z = (195, 195, 195)
   .....NNNNNAA....
   ......AAAAA.....
 }
-# tile 128 (leather cloak)
+# tile 145 (leather cloak)
 {
   ................
   ................
@@ -2478,7 +2820,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 129 (tattered cape / cloak of protection)
+# tile 146 (tattered cape / cloak of protection)
 {
   ................
   ................
@@ -2497,7 +2839,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 130 (opera cloak / cloak of invisibility)
+# tile 147 (opera cloak / cloak of invisibility)
 {
   ................
   ......NNN.......
@@ -2516,7 +2858,7 @@ Z = (195, 195, 195)
   ..AANNNNNNAOOAA.
   ....AAAAAAAAAA..
 }
-# tile 131 (ornamental cope / cloak of magic resistance)
+# tile 148 (ornamental cope / cloak of magic resistance)
 {
   ................
   ................
@@ -2535,7 +2877,7 @@ Z = (195, 195, 195)
   ..AAAAAAAAAAAP..
   ...PPPPPPPPPPP..
 }
-# tile 132 (piece of cloth / cloak of displacement)
+# tile 149 (piece of cloth / cloak of displacement)
 {
   ................
   ................
@@ -2554,7 +2896,7 @@ Z = (195, 195, 195)
   .....PPPPPAA....
   .......PPAA.....
 }
-# tile 133 (small shield)
+# tile 150 (small shield)
 {
   ................
   ................
@@ -2573,7 +2915,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 134 (blue and green shield / elven shield)
+# tile 151 (blue and green shield / elven shield)
 {
   ................
   ................
@@ -2592,7 +2934,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 135 (white-handed shield / Uruk-hai shield)
+# tile 152 (white-handed shield / Uruk-hai shield)
 {
   ................
   ...K.KKKJJJ.J...
@@ -2611,7 +2953,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 136 (red-eyed shield / orcish shield)
+# tile 153 (red-eyed shield / orcish shield)
 {
   ................
   ................
@@ -2630,7 +2972,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 137 (large shield)
+# tile 154 (large shield)
 {
   ................
   ...N.NNNOOO.O...
@@ -2649,7 +2991,7 @@ Z = (195, 195, 195)
   ........AA......
   ................
 }
-# tile 138 (large round shield / dwarvish roundshield)
+# tile 155 (large round shield / dwarvish roundshield)
 {
   ................
   ................
@@ -2668,7 +3010,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 139 (polished silver shield / shield of reflection)
+# tile 156 (polished silver shield / shield of reflection)
 {
   ................
   ................
@@ -2687,7 +3029,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 140 (old gloves / leather gloves)
+# tile 157 (old gloves / leather gloves)
 {
   ................
   ................
@@ -2706,7 +3048,7 @@ Z = (195, 195, 195)
   .........AAA....
   ................
 }
-# tile 141 (padded gloves / gauntlets of fumbling)
+# tile 158 (padded gloves / gauntlets of fumbling)
 {
   ................
   ................
@@ -2725,7 +3067,7 @@ Z = (195, 195, 195)
   .........AAA....
   ................
 }
-# tile 142 (riding gloves / gauntlets of power)
+# tile 159 (riding gloves / gauntlets of power)
 {
   ................
   ................
@@ -2744,7 +3086,7 @@ Z = (195, 195, 195)
   .........AAA....
   ................
 }
-# tile 143 (fencing gloves / gauntlets of dexterity)
+# tile 160 (fencing gloves / gauntlets of dexterity)
 {
   ................
   ................
@@ -2763,7 +3105,7 @@ Z = (195, 195, 195)
   .........AAA....
   ................
 }
-# tile 144 (walking shoes / low boots)
+# tile 161 (walking shoes / low boots)
 {
   ................
   ................
@@ -2782,7 +3124,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 145 (hard shoes / iron shoes)
+# tile 162 (hard shoes / iron shoes)
 {
   ................
   ................
@@ -2801,7 +3143,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 146 (jackboots / high boots)
+# tile 163 (jackboots / high boots)
 {
   .......CCKKKK...
   ......CKAAAAJJ..
@@ -2820,7 +3162,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 147 (combat boots / speed boots)
+# tile 164 (combat boots / speed boots)
 {
   ................
   ................
@@ -2839,7 +3181,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 148 (jungle boots / water walking boots)
+# tile 165 (jungle boots / water walking boots)
 {
   ................
   ................
@@ -2858,7 +3200,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 149 (hiking boots / jumping boots)
+# tile 166 (hiking boots / jumping boots)
 {
   ................
   ................
@@ -2877,7 +3219,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 150 (mud boots / elven boots)
+# tile 167 (mud boots / elven boots)
 {
   ................
   ................
@@ -2896,7 +3238,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 151 (buckled boots / kicking boots)
+# tile 168 (buckled boots / kicking boots)
 {
   ................
   ................
@@ -2915,7 +3257,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 152 (riding boots / fumble boots)
+# tile 169 (riding boots / fumble boots)
 {
   ................
   ................
@@ -2934,7 +3276,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 153 (snow boots / levitation boots)
+# tile 170 (snow boots / levitation boots)
 {
   ................
   ................
@@ -2953,7 +3295,7 @@ Z = (195, 195, 195)
   ...A.A.A.A.A.A..
   ................
 }
-# tile 154 (wooden / adornment)
+# tile 171 (wooden / adornment)
 {
   ................
   ................
@@ -2972,7 +3314,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 155 (granite / gain strength)
+# tile 172 (granite / gain strength)
 {
   ................
   ................
@@ -2991,7 +3333,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 156 (opal / gain constitution)
+# tile 173 (opal / gain constitution)
 {
   ................
   ................
@@ -3010,7 +3352,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 157 (clay / increase accuracy)
+# tile 174 (clay / increase accuracy)
 {
   ................
   ................
@@ -3029,7 +3371,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 158 (coral / increase damage)
+# tile 175 (coral / increase damage)
 {
   ................
   ................
@@ -3048,7 +3390,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 159 (black onyx / protection)
+# tile 176 (black onyx / protection)
 {
   ................
   ................
@@ -3067,7 +3409,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 160 (moonstone / regeneration)
+# tile 177 (moonstone / regeneration)
 {
   ................
   ................
@@ -3086,7 +3428,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 161 (tiger eye / searching)
+# tile 178 (tiger eye / searching)
 {
   ................
   ................
@@ -3105,7 +3447,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 162 (jade / stealth)
+# tile 179 (jade / stealth)
 {
   ................
   ................
@@ -3124,7 +3466,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 163 (bronze / sustain ability)
+# tile 180 (bronze / sustain ability)
 {
   ................
   ................
@@ -3143,7 +3485,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 164 (agate / levitation)
+# tile 181 (agate / levitation)
 {
   ................
   ................
@@ -3162,7 +3504,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 165 (topaz / hunger)
+# tile 182 (topaz / hunger)
 {
   ................
   ................
@@ -3181,7 +3523,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 166 (sapphire / aggravate monster)
+# tile 183 (sapphire / aggravate monster)
 {
   ................
   ................
@@ -3200,7 +3542,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 167 (ruby / conflict)
+# tile 184 (ruby / conflict)
 {
   ................
   ................
@@ -3219,7 +3561,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 168 (diamond / warning)
+# tile 185 (diamond / warning)
 {
   ................
   ................
@@ -3238,7 +3580,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 169 (pearl / poison resistance)
+# tile 186 (pearl / poison resistance)
 {
   ................
   ................
@@ -3257,7 +3599,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 170 (iron / fire resistance)
+# tile 187 (iron / fire resistance)
 {
   ................
   ................
@@ -3276,7 +3618,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 171 (brass / cold resistance)
+# tile 188 (brass / cold resistance)
 {
   ................
   ................
@@ -3295,7 +3637,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 172 (copper / shock resistance)
+# tile 189 (copper / shock resistance)
 {
   ................
   ................
@@ -3314,7 +3656,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 173 (twisted / free action)
+# tile 190 (twisted / free action)
 {
   ................
   ................
@@ -3333,7 +3675,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 174 (steel / slow digestion)
+# tile 191 (steel / slow digestion)
 {
   ................
   ................
@@ -3352,7 +3694,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 175 (silver / teleportation)
+# tile 192 (silver / teleportation)
 {
   ................
   ................
@@ -3371,7 +3713,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 176 (gold / teleport control)
+# tile 193 (gold / teleport control)
 {
   ................
   ................
@@ -3390,7 +3732,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 177 (ivory / polymorph)
+# tile 194 (ivory / polymorph)
 {
   ................
   ................
@@ -3409,7 +3751,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 178 (emerald / polymorph control)
+# tile 195 (emerald / polymorph control)
 {
   ................
   ................
@@ -3428,7 +3770,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 179 (wire / invisibility)
+# tile 196 (wire / invisibility)
 {
   ................
   ................
@@ -3447,7 +3789,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 180 (engagement / see invisible)
+# tile 197 (engagement / see invisible)
 {
   ................
   ................
@@ -3466,7 +3808,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 181 (shiny / protection from shape changers)
+# tile 198 (shiny / protection from shape changers)
 {
   ................
   ................
@@ -3485,7 +3827,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 182 (circular / amulet of ESP)
+# tile 199 (circular / amulet of ESP)
 {
   ................
   ......LLLLLAA...
@@ -3504,7 +3846,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 183 (spherical / amulet of life saving)
+# tile 200 (spherical / amulet of life saving)
 {
   ................
   ......LLLLLAA...
@@ -3523,7 +3865,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 184 (oval / amulet of strangulation)
+# tile 201 (oval / amulet of strangulation)
 {
   ................
   ......LLLLLLAA..
@@ -3542,7 +3884,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 185 (triangular / amulet of restful sleep)
+# tile 202 (triangular / amulet of restful sleep)
 {
   ................
   ......LLLLLAA...
@@ -3561,7 +3903,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 186 (pyramidal / amulet versus poison)
+# tile 203 (pyramidal / amulet versus poison)
 {
   ................
   ......LLLLLAA...
@@ -3580,7 +3922,7 @@ Z = (195, 195, 195)
   ....KJJJJJJJJA..
   .......AAAAAAA..
 }
-# tile 187 (square / amulet of change)
+# tile 204 (square / amulet of change)
 {
   ................
   ......LLLLLAA...
@@ -3599,7 +3941,7 @@ Z = (195, 195, 195)
   .......AAAAA....
   ................
 }
-# tile 188 (concave / amulet of unchanging)
+# tile 205 (concave / amulet of unchanging)
 {
   ................
   ......LLLLLAA...
@@ -3618,7 +3960,7 @@ Z = (195, 195, 195)
   .......KCCAA....
   ........AAA.....
 }
-# tile 189 (hexagonal / amulet of reflection)
+# tile 206 (hexagonal / amulet of reflection)
 {
   ................
   ......LLLLLAA...
@@ -3637,7 +3979,7 @@ Z = (195, 195, 195)
   ........AAA.....
   ................
 }
-# tile 190 (octagonal / amulet of magical breathing)
+# tile 207 (octagonal / amulet of magical breathing)
 {
   ................
   ......LLLLLAA...
@@ -3656,7 +3998,7 @@ Z = (195, 195, 195)
   .......KKKAA....
   ........AAA.....
 }
-# tile 191 (perforated / amulet of guarding)
+# tile 208 (perforated / amulet of guarding)
 {
   ................
   ......LLLLLAA...
@@ -3675,7 +4017,7 @@ Z = (195, 195, 195)
   .......KKKAA....
   ........AAA.....
 }
-# tile 192 (cubical / amulet of flying)
+# tile 209 (cubical / amulet of flying)
 {
   ................
   ......LLLLLAA...
@@ -3694,7 +4036,7 @@ Z = (195, 195, 195)
   ......CKKKKA....
   .......AAAAA....
 }
-# tile 193 (Amulet of Yendor / cheap plastic imitation of the Amulet of Yendor)
+# tile 210 (Amulet of Yendor / cheap plastic imitation of the Amulet of Yendor)
 {
   ................
   ......HHHHHAA...
@@ -3713,7 +4055,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 194 (Amulet of Yendor / Amulet of Yendor)
+# tile 211 (Amulet of Yendor / Amulet of Yendor)
 {
   ................
   ......HHHHHAA...
@@ -3732,7 +4074,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 195 (large box)
+# tile 212 (large box)
 {
   ................
   ................
@@ -3751,7 +4093,7 @@ Z = (195, 195, 195)
   CKKKKKKKKKKJAA..
   .AAAAAAAAAAAA...
 }
-# tile 196 (chest)
+# tile 213 (chest)
 {
   ................
   ................
@@ -3770,7 +4112,7 @@ Z = (195, 195, 195)
   CKKKKKKKKKKJAA..
   .AAAAAAAAAAAA...
 }
-# tile 197 (ice box)
+# tile 214 (ice box)
 {
   ................
   ................
@@ -3789,7 +4131,7 @@ Z = (195, 195, 195)
   NBBBBBBBBBBPAA..
   .AAAAAAAAAAAA...
 }
-# tile 198 (bag / sack)
+# tile 215 (bag / sack)
 {
   ................
   ................
@@ -3808,7 +4150,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 199 (bag / oilskin sack)
+# tile 216 (bag / oilskin sack)
 {
   ................
   ................
@@ -3827,7 +4169,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 200 (bag / bag of holding)
+# tile 217 (bag / bag of holding)
 {
   ................
   ................
@@ -3846,7 +4188,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 201 (bag / bag of tricks)
+# tile 218 (bag / bag of tricks)
 {
   ................
   ................
@@ -3865,7 +4207,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 202 (key / skeleton key)
+# tile 219 (key / skeleton key)
 {
   ................
   ................
@@ -3884,7 +4226,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 203 (lock pick)
+# tile 220 (lock pick)
 {
   ................
   ................
@@ -3903,7 +4245,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 204 (credit card)
+# tile 221 (credit card)
 {
   ................
   ................
@@ -3922,7 +4264,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 205 (candle / tallow candle)
+# tile 222 (candle / tallow candle)
 {
   ................
   ................
@@ -3941,7 +4283,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 206 (candle / wax candle)
+# tile 223 (candle / wax candle)
 {
   ................
   ................
@@ -3960,7 +4302,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 207 (brass lantern)
+# tile 224 (brass lantern)
 {
   ................
   ................
@@ -3979,7 +4321,7 @@ Z = (195, 195, 195)
   .....AAAAAAA....
   ................
 }
-# tile 208 (lamp / oil lamp)
+# tile 225 (lamp / oil lamp)
 {
   ................
   ................
@@ -3998,7 +4340,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 209 (lamp / magic lamp)
+# tile 226 (lamp / magic lamp)
 {
   ................
   ................
@@ -4017,7 +4359,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 210 (expensive camera)
+# tile 227 (expensive camera)
 {
   ................
   ................
@@ -4036,7 +4378,7 @@ Z = (195, 195, 195)
   ...PPPPPPPPPPPP.
   ................
 }
-# tile 211 (looking glass / mirror)
+# tile 228 (looking glass / mirror)
 {
   ................
   ................
@@ -4055,7 +4397,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 212 (glass orb / crystal ball)
+# tile 229 (glass orb / crystal ball)
 {
   ................
   ................
@@ -4074,7 +4416,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 213 (lenses)
+# tile 230 (lenses)
 {
   ................
   ................
@@ -4093,7 +4435,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 214 (blindfold)
+# tile 231 (blindfold)
 {
   ................
   ................
@@ -4112,7 +4454,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 215 (towel)
+# tile 232 (towel)
 {
   ................
   ................
@@ -4131,7 +4473,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 216 (saddle)
+# tile 233 (saddle)
 {
   ................
   ................
@@ -4150,7 +4492,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 217 (leash)
+# tile 234 (leash)
 {
   ................
   ................
@@ -4169,7 +4511,7 @@ Z = (195, 195, 195)
   .....AAAA.......
   ................
 }
-# tile 218 (stethoscope)
+# tile 235 (stethoscope)
 {
   ................
   ................
@@ -4188,7 +4530,7 @@ Z = (195, 195, 195)
   ........AAA.....
   ................
 }
-# tile 219 (tinning kit)
+# tile 236 (tinning kit)
 {
   ................
   ................
@@ -4207,7 +4549,7 @@ Z = (195, 195, 195)
   ......AAA.......
   ................
 }
-# tile 220 (tin opener)
+# tile 237 (tin opener)
 {
   ................
   ................
@@ -4226,7 +4568,7 @@ Z = (195, 195, 195)
   ........AA......
   ................
 }
-# tile 221 (can of grease)
+# tile 238 (can of grease)
 {
   ................
   ................
@@ -4245,7 +4587,7 @@ Z = (195, 195, 195)
   .......AAAA.....
   ................
 }
-# tile 222 (figurine)
+# tile 239 (figurine)
 {
   ................
   ................
@@ -4264,7 +4606,7 @@ Z = (195, 195, 195)
   .....JJJJJAA....
   ................
 }
-# tile 223 (magic marker)
+# tile 240 (magic marker)
 {
   ................
   ................
@@ -4283,7 +4625,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 224 (land mine)
+# tile 241 (land mine)
 {
   ................
   ................
@@ -4302,7 +4644,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 225 (beartrap)
+# tile 242 (beartrap)
 {
   ................
   ................
@@ -4321,7 +4663,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 226 (whistle / tin whistle)
+# tile 243 (whistle / tin whistle)
 {
   ................
   ................
@@ -4340,7 +4682,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 227 (whistle / magic whistle)
+# tile 244 (whistle / magic whistle)
 {
   ................
   ................
@@ -4359,7 +4701,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 228 (flute / wooden flute)
+# tile 245 (flute / wooden flute)
 {
   ................
   ................
@@ -4378,7 +4720,7 @@ Z = (195, 195, 195)
   ..A.............
   ................
 }
-# tile 229 (flute / magic flute)
+# tile 246 (flute / magic flute)
 {
   ................
   ................
@@ -4397,7 +4739,7 @@ Z = (195, 195, 195)
   ..A.............
   ................
 }
-# tile 230 (horn / tooled horn)
+# tile 247 (horn / tooled horn)
 {
   ................
   ................
@@ -4416,7 +4758,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 231 (horn / frost horn)
+# tile 248 (horn / frost horn)
 {
   ................
   ................
@@ -4435,7 +4777,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 232 (horn / fire horn)
+# tile 249 (horn / fire horn)
 {
   ................
   ................
@@ -4454,7 +4796,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 233 (horn / horn of plenty)
+# tile 250 (horn / horn of plenty)
 {
   ................
   ................
@@ -4473,7 +4815,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 234 (harp / wooden harp)
+# tile 251 (harp / wooden harp)
 {
   ................
   ................
@@ -4492,7 +4834,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 235 (harp / magic harp)
+# tile 252 (harp / magic harp)
 {
   ................
   ................
@@ -4511,7 +4853,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 236 (bell)
+# tile 253 (bell)
 {
   ................
   .......KA.......
@@ -4530,7 +4872,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 237 (bugle)
+# tile 254 (bugle)
 {
   ................
   ................
@@ -4549,7 +4891,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 238 (drum / leather drum)
+# tile 255 (drum / leather drum)
 {
   ................
   ................
@@ -4568,7 +4910,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 239 (drum / drum of earthquake)
+# tile 256 (drum / drum of earthquake)
 {
   ................
   ................
@@ -4587,7 +4929,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 240 (pick-axe)
+# tile 257 (pick-axe)
 {
   ................
   ................
@@ -4606,7 +4948,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 241 (grappling hook)
+# tile 258 (grappling hook)
 {
   .............N..
   ..............P.
@@ -4625,7 +4967,7 @@ Z = (195, 195, 195)
   ..OOA..OOOA.....
   ....OOOAA.......
 }
-# tile 242 (unicorn horn)
+# tile 259 (unicorn horn)
 {
   ................
   ................
@@ -4644,7 +4986,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 243 (candelabrum / Candelabrum of Invocation)
+# tile 260 (candelabrum / Candelabrum of Invocation)
 {
   .......N........
   .......D........
@@ -4663,7 +5005,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 244 (silver bell / Bell of Opening)
+# tile 261 (silver bell / Bell of Opening)
 {
   ................
   .......OA.......
@@ -4682,7 +5024,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 245 (tripe ration)
+# tile 262 (tripe ration)
 {
   ................
   ................
@@ -4701,7 +5043,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 246 (corpse)
+# tile 263 (corpse)
 {
   ................
   .....D.DPLN.....
@@ -4720,7 +5062,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 247 (egg)
+# tile 264 (egg)
 {
   ................
   ................
@@ -4739,7 +5081,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 248 (meatball)
+# tile 265 (meatball)
 {
   ................
   ................
@@ -4758,7 +5100,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 249 (meat stick)
+# tile 266 (meat stick)
 {
   ................
   ................
@@ -4777,7 +5119,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 250 (enormous meatball)
+# tile 267 (enormous meatball)
 {
   ................
   ................
@@ -4796,7 +5138,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 251 (meat ring)
+# tile 268 (meat ring)
 {
   ................
   ................
@@ -4815,7 +5157,7 @@ Z = (195, 195, 195)
   ......AAAAA.....
   ................
 }
-# tile 252 (glob of gray ooze)
+# tile 269 (glob of gray ooze)
 {
   ................
   ................
@@ -4834,7 +5176,7 @@ Z = (195, 195, 195)
   ...AAA.AAAAA....
   ................
 }
-# tile 253 (glob of brown pudding)
+# tile 270 (glob of brown pudding)
 {
   ................
   ................
@@ -4853,7 +5195,7 @@ Z = (195, 195, 195)
   ...AAA.AAAAA....
   ................
 }
-# tile 254 (glob of green slime)
+# tile 271 (glob of green slime)
 {
   ................
   ................
@@ -4872,7 +5214,7 @@ Z = (195, 195, 195)
   ...AAA.AAAAA....
   ................
 }
-# tile 255 (glob of black pudding)
+# tile 272 (glob of black pudding)
 {
   ................
   ................
@@ -4891,7 +5233,7 @@ Z = (195, 195, 195)
   ...AAA.AAAAA....
   ................
 }
-# tile 256 (kelp frond)
+# tile 273 (kelp frond)
 {
   ....FA..........
   ....FFA.........
@@ -4910,7 +5252,7 @@ Z = (195, 195, 195)
   .....FFFFA......
   ......FFFFA.....
 }
-# tile 257 (eucalyptus leaf)
+# tile 274 (eucalyptus leaf)
 {
   ................
   ................
@@ -4929,7 +5271,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 258 (apple)
+# tile 275 (apple)
 {
   ................
   ................
@@ -4948,7 +5290,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 259 (orange)
+# tile 276 (orange)
 {
   ................
   ................
@@ -4967,7 +5309,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 260 (pear)
+# tile 277 (pear)
 {
   ................
   ................
@@ -4986,7 +5328,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 261 (melon)
+# tile 278 (melon)
 {
   ................
   ................
@@ -5005,7 +5347,7 @@ Z = (195, 195, 195)
   ......AAA.......
   ................
 }
-# tile 262 (banana)
+# tile 279 (banana)
 {
   ................
   ................
@@ -5024,7 +5366,7 @@ Z = (195, 195, 195)
   .....AAAAA......
   ................
 }
-# tile 263 (carrot)
+# tile 280 (carrot)
 {
   ................
   ..........F..F..
@@ -5043,7 +5385,7 @@ Z = (195, 195, 195)
   ...A............
   ................
 }
-# tile 264 (sprig of wolfsbane)
+# tile 281 (sprig of wolfsbane)
 {
   ................
   ................
@@ -5062,7 +5404,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 265 (clove of garlic)
+# tile 282 (clove of garlic)
 {
   ................
   ................
@@ -5081,7 +5423,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 266 (slime mold)
+# tile 283 (slime mold)
 {
   ................
   ................
@@ -5100,7 +5442,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 267 (lump of royal jelly)
+# tile 284 (lump of royal jelly)
 {
   ................
   ................
@@ -5119,7 +5461,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 268 (cream pie)
+# tile 285 (cream pie)
 {
   ................
   ................
@@ -5138,7 +5480,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 269 (candy bar)
+# tile 286 (candy bar)
 {
   ................
   ................
@@ -5157,7 +5499,7 @@ Z = (195, 195, 195)
   ....A...........
   ................
 }
-# tile 270 (fortune cookie)
+# tile 287 (fortune cookie)
 {
   ................
   ................
@@ -5176,7 +5518,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 271 (pancake)
+# tile 288 (pancake)
 {
   ................
   ................
@@ -5195,7 +5537,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 272 (lembas wafer)
+# tile 289 (lembas wafer)
 {
   ................
   ................
@@ -5214,7 +5556,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 273 (cram ration)
+# tile 290 (cram ration)
 {
   ................
   ...JKA..........
@@ -5233,7 +5575,7 @@ Z = (195, 195, 195)
   .....AAAAAA.....
   ................
 }
-# tile 274 (food ration)
+# tile 291 (food ration)
 {
   ...JJA..........
   ...BPA..........
@@ -5252,7 +5594,7 @@ Z = (195, 195, 195)
   ....KKKKKKKKKA..
   .....AAAAAAAA...
 }
-# tile 275 (K-ration)
+# tile 292 (K-ration)
 {
   ................
   ................
@@ -5271,7 +5613,7 @@ Z = (195, 195, 195)
   ....KKKKKKKKKA..
   .....AAAAAAAA...
 }
-# tile 276 (C-ration)
+# tile 293 (C-ration)
 {
   ................
   ................
@@ -5290,7 +5632,7 @@ Z = (195, 195, 195)
   ....KKKKKKKKKA..
   .....AAAAAAAA...
 }
-# tile 277 (tin)
+# tile 294 (tin)
 {
   ................
   ................
@@ -5309,7 +5651,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 278 (ruby / gain ability)
+# tile 295 (ruby / gain ability)
 {
   ................
   ................
@@ -5328,7 +5670,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 279 (pink / restore ability)
+# tile 296 (pink / restore ability)
 {
   ................
   ................
@@ -5347,7 +5689,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 280 (orange / confusion)
+# tile 297 (orange / confusion)
 {
   ................
   ................
@@ -5366,7 +5708,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 281 (yellow / blindness)
+# tile 298 (yellow / blindness)
 {
   ................
   ................
@@ -5385,7 +5727,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 282 (emerald / paralysis)
+# tile 299 (emerald / paralysis)
 {
   ................
   ................
@@ -5404,7 +5746,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 283 (dark green / speed)
+# tile 300 (dark green / speed)
 {
   ................
   ................
@@ -5423,7 +5765,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 284 (cyan / levitation)
+# tile 301 (cyan / levitation)
 {
   ................
   ................
@@ -5442,7 +5784,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 285 (sky blue / hallucination)
+# tile 302 (sky blue / hallucination)
 {
   ................
   ................
@@ -5461,7 +5803,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 286 (brilliant blue / invisibility)
+# tile 303 (brilliant blue / invisibility)
 {
   ................
   ................
@@ -5480,7 +5822,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 287 (magenta / see invisible)
+# tile 304 (magenta / see invisible)
 {
   ................
   ................
@@ -5499,7 +5841,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 288 (purple-red / healing)
+# tile 305 (purple-red / healing)
 {
   ................
   ................
@@ -5518,7 +5860,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 289 (puce / extra healing)
+# tile 306 (puce / extra healing)
 {
   ................
   ................
@@ -5537,7 +5879,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 290 (milky / gain level)
+# tile 307 (milky / gain level)
 {
   ................
   ................
@@ -5556,7 +5898,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 291 (swirly / enlightenment)
+# tile 308 (swirly / enlightenment)
 {
   ................
   ................
@@ -5575,7 +5917,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 292 (bubbly / monster detection)
+# tile 309 (bubbly / monster detection)
 {
   ................
   ................
@@ -5594,7 +5936,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 293 (smoky / object detection)
+# tile 310 (smoky / object detection)
 {
   ................
   ................
@@ -5613,7 +5955,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 294 (cloudy / gain energy)
+# tile 311 (cloudy / gain energy)
 {
   ................
   ................
@@ -5632,7 +5974,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 295 (effervescent / sleeping)
+# tile 312 (effervescent / sleeping)
 {
   ................
   ................
@@ -5651,7 +5993,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 296 (black / full healing)
+# tile 313 (black / full healing)
 {
   ................
   ................
@@ -5670,7 +6012,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 297 (golden / polymorph)
+# tile 314 (golden / polymorph)
 {
   ................
   ................
@@ -5689,7 +6031,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 298 (brown / booze)
+# tile 315 (brown / booze)
 {
   ................
   ................
@@ -5708,7 +6050,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 299 (fizzy / sickness)
+# tile 316 (fizzy / sickness)
 {
   ................
   ................
@@ -5727,7 +6069,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 300 (dark / fruit juice)
+# tile 317 (dark / fruit juice)
 {
   ................
   ................
@@ -5746,7 +6088,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 301 (white / acid)
+# tile 318 (white / acid)
 {
   ................
   ................
@@ -5765,7 +6107,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 302 (murky / oil)
+# tile 319 (murky / oil)
 {
   ................
   ................
@@ -5784,7 +6126,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 303 (clear / water)
+# tile 320 (clear / water)
 {
   ................
   ................
@@ -5803,7 +6145,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 304 (ZELGO MER / enchant armor)
+# tile 321 (ZELGO MER / enchant armor)
 {
   ................
   ................
@@ -5822,7 +6164,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 305 (JUYED AWK YACC / destroy armor)
+# tile 322 (JUYED AWK YACC / destroy armor)
 {
   ................
   ................
@@ -5841,7 +6183,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 306 (NR 9 / confuse monster)
+# tile 323 (NR 9 / confuse monster)
 {
   ................
   ................
@@ -5860,7 +6202,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 307 (XIXAXA XOXAXA XUXAXA / scare monster)
+# tile 324 (XIXAXA XOXAXA XUXAXA / scare monster)
 {
   ................
   ................
@@ -5879,7 +6221,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 308 (PRATYAVAYAH / remove curse)
+# tile 325 (PRATYAVAYAH / remove curse)
 {
   ................
   ................
@@ -5898,7 +6240,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 309 (DAIYEN FOOELS / enchant weapon)
+# tile 326 (DAIYEN FOOELS / enchant weapon)
 {
   ................
   ................
@@ -5917,7 +6259,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 310 (LEP GEX VEN ZEA / create monster)
+# tile 327 (LEP GEX VEN ZEA / create monster)
 {
   ................
   ................
@@ -5936,7 +6278,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 311 (PRIRUTSENIE / taming)
+# tile 328 (PRIRUTSENIE / taming)
 {
   ................
   ................
@@ -5955,7 +6297,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 312 (ELBIB YLOH / genocide)
+# tile 329 (ELBIB YLOH / genocide)
 {
   ................
   ................
@@ -5974,7 +6316,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 313 (VERR YED HORRE / light)
+# tile 330 (VERR YED HORRE / light)
 {
   ................
   ................
@@ -5993,7 +6335,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 314 (VENZAR BORGAVVE / teleportation)
+# tile 331 (VENZAR BORGAVVE / teleportation)
 {
   ................
   ................
@@ -6012,7 +6354,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 315 (THARR / gold detection)
+# tile 332 (THARR / gold detection)
 {
   ................
   ................
@@ -6031,7 +6373,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 316 (YUM YUM / food detection)
+# tile 333 (YUM YUM / food detection)
 {
   ................
   ................
@@ -6050,7 +6392,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 317 (KERNOD WEL / identify)
+# tile 334 (KERNOD WEL / identify)
 {
   ................
   ................
@@ -6069,7 +6411,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 318 (ELAM EBOW / magic mapping)
+# tile 335 (ELAM EBOW / magic mapping)
 {
   ................
   ................
@@ -6088,7 +6430,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 319 (DUAM XNAHT / amnesia)
+# tile 336 (DUAM XNAHT / amnesia)
 {
   ................
   ................
@@ -6107,7 +6449,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 320 (ANDOVA BEGARIN / fire)
+# tile 337 (ANDOVA BEGARIN / fire)
 {
   ................
   ................
@@ -6126,7 +6468,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 321 (KIRJE / earth)
+# tile 338 (KIRJE / earth)
 {
   ................
   ................
@@ -6145,7 +6487,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 322 (VE FORBRYDERNE / punishment)
+# tile 339 (VE FORBRYDERNE / punishment)
 {
   ................
   ................
@@ -6164,7 +6506,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 323 (HACKEM MUCHE / charging)
+# tile 340 (HACKEM MUCHE / charging)
 {
   ................
   ................
@@ -6183,7 +6525,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 324 (VELOX NEB / stinking cloud)
+# tile 341 (VELOX NEB / stinking cloud)
 {
   ................
   ................
@@ -6202,7 +6544,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 325 (FOOBIE BLETCH)
+# tile 342 (FOOBIE BLETCH)
 {
   ................
   ................
@@ -6221,7 +6563,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 326 (TEMOV)
+# tile 343 (TEMOV)
 {
   ................
   ................
@@ -6240,7 +6582,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 327 (GARVEN DEH)
+# tile 344 (GARVEN DEH)
 {
   ................
   ................
@@ -6259,7 +6601,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 328 (READ ME)
+# tile 345 (READ ME)
 {
   ................
   ................
@@ -6278,7 +6620,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 329 (ETAOIN SHRDLU)
+# tile 346 (ETAOIN SHRDLU)
 {
   ................
   ................
@@ -6297,7 +6639,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 330 (LOREM IPSUM)
+# tile 347 (LOREM IPSUM)
 {
   ................
   ................
@@ -6316,7 +6658,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 331 (FNORD)
+# tile 348 (FNORD)
 {
   ................
   ................
@@ -6335,7 +6677,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 332 (KO BATE)
+# tile 349 (KO BATE)
 {
   ................
   ................
@@ -6354,7 +6696,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 333 (ABRA KA DABRA)
+# tile 350 (ABRA KA DABRA)
 {
   ................
   ................
@@ -6373,7 +6715,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 334 (ASHPD SODALG)
+# tile 351 (ASHPD SODALG)
 {
   ................
   ................
@@ -6392,7 +6734,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 335 (ZLORFIK)
+# tile 352 (ZLORFIK)
 {
   ................
   ................
@@ -6411,7 +6753,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 336 (GNIK SISI VLE)
+# tile 353 (GNIK SISI VLE)
 {
   ................
   ................
@@ -6430,7 +6772,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 337 (HAPAX LEGOMENON)
+# tile 354 (HAPAX LEGOMENON)
 {
   ................
   ................
@@ -6449,7 +6791,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 338 (EIRIS SAZUN IDISI)
+# tile 355 (EIRIS SAZUN IDISI)
 {
   ................
   ................
@@ -6468,7 +6810,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 339 (PHOL ENDE WODAN)
+# tile 356 (PHOL ENDE WODAN)
 {
   ................
   ................
@@ -6487,7 +6829,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 340 (GHOTI)
+# tile 357 (GHOTI)
 {
   ................
   ................
@@ -6506,7 +6848,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 341 (MAPIRO MAHAMA DIROMAT)
+# tile 358 (MAPIRO MAHAMA DIROMAT)
 {
   ................
   ................
@@ -6525,7 +6867,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 342 (VAS CORP BET MANI)
+# tile 359 (VAS CORP BET MANI)
 {
   ................
   ................
@@ -6544,7 +6886,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 343 (XOR OTA)
+# tile 360 (XOR OTA)
 {
   ................
   ................
@@ -6563,7 +6905,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 344 (STRC PRST SKRZ KRK)
+# tile 361 (STRC PRST SKRZ KRK)
 {
   ................
   ................
@@ -6582,7 +6924,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 345 (stamped / mail)
+# tile 362 (stamped / mail)
 {
   ................
   ................
@@ -6601,7 +6943,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 346 (unlabeled / blank paper)
+# tile 363 (unlabeled / blank paper)
 {
   ................
   ................
@@ -6620,7 +6962,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 347 (parchment / dig)
+# tile 364 (parchment / dig)
 {
   ................
   ................
@@ -6639,7 +6981,7 @@ Z = (195, 195, 195)
   .......JJJAA....
   ................
 }
-# tile 348 (vellum / magic missile)
+# tile 365 (vellum / magic missile)
 {
   ................
   ................
@@ -6658,7 +7000,7 @@ Z = (195, 195, 195)
   .......JJJAA....
   ................
 }
-# tile 349 (ragged / fireball)
+# tile 366 (ragged / fireball)
 {
   ................
   ................
@@ -6677,7 +7019,7 @@ Z = (195, 195, 195)
   ......OOJJAA....
   ................
 }
-# tile 350 (dog eared / cone of cold)
+# tile 367 (dog eared / cone of cold)
 {
   ................
   ................
@@ -6696,7 +7038,7 @@ Z = (195, 195, 195)
   .......JJJAA....
   ................
 }
-# tile 351 (mottled / sleep)
+# tile 368 (mottled / sleep)
 {
   ................
   ................
@@ -6715,7 +7057,7 @@ Z = (195, 195, 195)
   .......JJJAA....
   ................
 }
-# tile 352 (stained / finger of death)
+# tile 369 (stained / finger of death)
 {
   ................
   ................
@@ -6734,7 +7076,7 @@ Z = (195, 195, 195)
   .......JJJAA....
   ................
 }
-# tile 353 (cloth / light)
+# tile 370 (cloth / light)
 {
   ................
   ................
@@ -6753,7 +7095,7 @@ Z = (195, 195, 195)
   .......PPPAA....
   ................
 }
-# tile 354 (leathery / detect monsters)
+# tile 371 (leathery / detect monsters)
 {
   ................
   ................
@@ -6772,7 +7114,7 @@ Z = (195, 195, 195)
   .......JJJAA....
   ................
 }
-# tile 355 (white / healing)
+# tile 372 (white / healing)
 {
   ................
   ................
@@ -6791,7 +7133,7 @@ Z = (195, 195, 195)
   .......PNNAA....
   ................
 }
-# tile 356 (pink / knock)
+# tile 373 (pink / knock)
 {
   ................
   ................
@@ -6810,7 +7152,7 @@ Z = (195, 195, 195)
   .......IIIAA....
   ................
 }
-# tile 357 (red / force bolt)
+# tile 374 (red / force bolt)
 {
   ................
   ................
@@ -6829,7 +7171,7 @@ Z = (195, 195, 195)
   .......DDDAA....
   ................
 }
-# tile 358 (orange / confuse monster)
+# tile 375 (orange / confuse monster)
 {
   ................
   ................
@@ -6848,7 +7190,7 @@ Z = (195, 195, 195)
   .......CCCAA....
   ................
 }
-# tile 359 (yellow / cure blindness)
+# tile 376 (yellow / cure blindness)
 {
   ................
   ................
@@ -6867,7 +7209,7 @@ Z = (195, 195, 195)
   .......HHHAA....
   ................
 }
-# tile 360 (velvet / drain life)
+# tile 377 (velvet / drain life)
 {
   ................
   ................
@@ -6886,7 +7228,7 @@ Z = (195, 195, 195)
   .......EEEAA....
   ................
 }
-# tile 361 (light green / slow monster)
+# tile 378 (light green / slow monster)
 {
   ................
   ................
@@ -6905,7 +7247,7 @@ Z = (195, 195, 195)
   .......GGGAA....
   ................
 }
-# tile 362 (dark green / wizard lock)
+# tile 379 (dark green / wizard lock)
 {
   ................
   ................
@@ -6924,7 +7266,7 @@ Z = (195, 195, 195)
   .......FFFAA....
   ................
 }
-# tile 363 (turquoise / create monster)
+# tile 380 (turquoise / create monster)
 {
   ................
   ................
@@ -6943,7 +7285,7 @@ Z = (195, 195, 195)
   .......FBBAA....
   ................
 }
-# tile 364 (cyan / detect food)
+# tile 381 (cyan / detect food)
 {
   ................
   ................
@@ -6962,7 +7304,7 @@ Z = (195, 195, 195)
   .......BBBAA....
   ................
 }
-# tile 365 (light blue / cause fear)
+# tile 382 (light blue / cause fear)
 {
   ................
   ................
@@ -6981,7 +7323,7 @@ Z = (195, 195, 195)
   .......BBBAA....
   ................
 }
-# tile 366 (dark blue / clairvoyance)
+# tile 383 (dark blue / clairvoyance)
 {
   ................
   ................
@@ -7000,7 +7342,7 @@ Z = (195, 195, 195)
   .......EEEAA....
   ................
 }
-# tile 367 (indigo / cure sickness)
+# tile 384 (indigo / cure sickness)
 {
   ................
   ................
@@ -7019,7 +7361,7 @@ Z = (195, 195, 195)
   .......EEEAA....
   ................
 }
-# tile 368 (magenta / charm monster)
+# tile 385 (magenta / charm monster)
 {
   ................
   ................
@@ -7038,7 +7380,7 @@ Z = (195, 195, 195)
   .......IIIAA....
   ................
 }
-# tile 369 (purple / haste self)
+# tile 386 (purple / haste self)
 {
   ................
   ................
@@ -7057,7 +7399,7 @@ Z = (195, 195, 195)
   .......IIIAA....
   ................
 }
-# tile 370 (violet / detect unseen)
+# tile 387 (violet / detect unseen)
 {
   ................
   ................
@@ -7076,7 +7418,7 @@ Z = (195, 195, 195)
   .......IIIAA....
   ................
 }
-# tile 371 (tan / levitation)
+# tile 388 (tan / levitation)
 {
   ................
   ................
@@ -7095,7 +7437,7 @@ Z = (195, 195, 195)
   .......KKKAA....
   ................
 }
-# tile 372 (plaid / extra healing)
+# tile 389 (plaid / extra healing)
 {
   ................
   ................
@@ -7114,7 +7456,7 @@ Z = (195, 195, 195)
   .......EFDAA....
   ................
 }
-# tile 373 (light brown / restore ability)
+# tile 390 (light brown / restore ability)
 {
   ................
   ................
@@ -7133,7 +7475,7 @@ Z = (195, 195, 195)
   .......JJJAA....
   ................
 }
-# tile 374 (dark brown / invisibility)
+# tile 391 (dark brown / invisibility)
 {
   ................
   ................
@@ -7152,7 +7494,7 @@ Z = (195, 195, 195)
   .......JJJAA....
   ................
 }
-# tile 375 (gray / detect treasure)
+# tile 392 (gray / detect treasure)
 {
   ................
   ................
@@ -7171,7 +7513,7 @@ Z = (195, 195, 195)
   .......PPPAA....
   ................
 }
-# tile 376 (wrinkled / remove curse)
+# tile 393 (wrinkled / remove curse)
 {
   ................
   ................
@@ -7190,7 +7532,7 @@ Z = (195, 195, 195)
   ......JJKKAA....
   ................
 }
-# tile 377 (dusty / magic mapping)
+# tile 394 (dusty / magic mapping)
 {
   ................
   ................
@@ -7209,7 +7551,7 @@ Z = (195, 195, 195)
   .KAKA..JJJAA....
   ................
 }
-# tile 378 (bronze / identify)
+# tile 395 (bronze / identify)
 {
   ................
   ................
@@ -7228,7 +7570,7 @@ Z = (195, 195, 195)
   .......CCCAA....
   ................
 }
-# tile 379 (copper / turn undead)
+# tile 396 (copper / turn undead)
 {
   ................
   ................
@@ -7247,7 +7589,7 @@ Z = (195, 195, 195)
   .......JCJAA....
   ................
 }
-# tile 380 (silver / polymorph)
+# tile 397 (silver / polymorph)
 {
   ................
   ................
@@ -7266,7 +7608,7 @@ Z = (195, 195, 195)
   .......PPPAA....
   ................
 }
-# tile 381 (gold / teleport away)
+# tile 398 (gold / teleport away)
 {
   ................
   ................
@@ -7285,7 +7627,7 @@ Z = (195, 195, 195)
   .......HHHAA....
   ................
 }
-# tile 382 (glittering / create familiar)
+# tile 399 (glittering / create familiar)
 {
   ................
   ................
@@ -7304,7 +7646,7 @@ Z = (195, 195, 195)
   .......PPPAN....
   .......N........
 }
-# tile 383 (shining / cancellation)
+# tile 400 (shining / cancellation)
 {
   ....N...........
   .......N........
@@ -7323,7 +7665,7 @@ Z = (195, 195, 195)
   .......PPPAA....
   ................
 }
-# tile 384 (dull / protection)
+# tile 401 (dull / protection)
 {
   ................
   ................
@@ -7342,7 +7684,7 @@ Z = (195, 195, 195)
   .......JJJAA....
   ................
 }
-# tile 385 (thin / jumping)
+# tile 402 (thin / jumping)
 {
   ................
   ................
@@ -7361,7 +7703,7 @@ Z = (195, 195, 195)
   .......JJJAA....
   ................
 }
-# tile 386 (thick / stone to flesh)
+# tile 403 (thick / stone to flesh)
 {
   ................
   ................
@@ -7380,7 +7722,7 @@ Z = (195, 195, 195)
   .......JJJAA....
   ................
 }
-# tile 387 (plain / blank paper)
+# tile 404 (plain / blank paper)
 {
   ................
   ................
@@ -7399,7 +7741,7 @@ Z = (195, 195, 195)
   .......JJJAA....
   ................
 }
-# tile 388 (paperback / novel)
+# tile 405 (paperback / novel)
 {
   ................
   ................
@@ -7418,7 +7760,7 @@ Z = (195, 195, 195)
   .......EEEAA....
   ................
 }
-# tile 389 (papyrus / Book of the Dead)
+# tile 406 (papyrus / Book of the Dead)
 {
   ................
   ................
@@ -7437,7 +7779,7 @@ Z = (195, 195, 195)
   .......AAA......
   ................
 }
-# tile 390 (glass / light)
+# tile 407 (glass / light)
 {
   ................
   ................
@@ -7456,7 +7798,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 391 (balsa / secret door detection)
+# tile 408 (balsa / secret door detection)
 {
   ................
   ................
@@ -7475,7 +7817,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 392 (crystal / enlightenment)
+# tile 409 (crystal / enlightenment)
 {
   ................
   ................
@@ -7494,7 +7836,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 393 (maple / create monster)
+# tile 410 (maple / create monster)
 {
   ................
   ................
@@ -7513,7 +7855,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 394 (pine / wishing)
+# tile 411 (pine / wishing)
 {
   ................
   ................
@@ -7532,7 +7874,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 395 (oak / nothing)
+# tile 412 (oak / nothing)
 {
   ................
   ................
@@ -7551,7 +7893,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 396 (ebony / striking)
+# tile 413 (ebony / striking)
 {
   ................
   ................
@@ -7570,7 +7912,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 397 (marble / make invisible)
+# tile 414 (marble / make invisible)
 {
   ................
   ................
@@ -7589,7 +7931,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 398 (tin / slow monster)
+# tile 415 (tin / slow monster)
 {
   ................
   ................
@@ -7608,7 +7950,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 399 (brass / speed monster)
+# tile 416 (brass / speed monster)
 {
   ................
   ................
@@ -7627,7 +7969,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 400 (copper / undead turning)
+# tile 417 (copper / undead turning)
 {
   ................
   ................
@@ -7646,7 +7988,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 401 (silver / polymorph)
+# tile 418 (silver / polymorph)
 {
   ................
   ................
@@ -7665,7 +8007,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 402 (platinum / cancellation)
+# tile 419 (platinum / cancellation)
 {
   ................
   ................
@@ -7684,7 +8026,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 403 (iridium / teleportation)
+# tile 420 (iridium / teleportation)
 {
   ................
   ................
@@ -7703,7 +8045,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 404 (zinc / opening)
+# tile 421 (zinc / opening)
 {
   ................
   ................
@@ -7722,7 +8064,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 405 (aluminum / locking)
+# tile 422 (aluminum / locking)
 {
   ................
   ................
@@ -7741,7 +8083,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 406 (uranium / probing)
+# tile 423 (uranium / probing)
 {
   ................
   ................
@@ -7760,7 +8102,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 407 (iron / digging)
+# tile 424 (iron / digging)
 {
   ................
   ................
@@ -7779,7 +8121,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 408 (steel / magic missile)
+# tile 425 (steel / magic missile)
 {
   ................
   ................
@@ -7798,7 +8140,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 409 (hexagonal / fire)
+# tile 426 (hexagonal / fire)
 {
   ................
   ................
@@ -7817,7 +8159,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 410 (short / cold)
+# tile 427 (short / cold)
 {
   ................
   ................
@@ -7836,7 +8178,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 411 (runed / sleep)
+# tile 428 (runed / sleep)
 {
   ................
   ................
@@ -7855,7 +8197,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 412 (long / death)
+# tile 429 (long / death)
 {
   ................
   .............NO.
@@ -7874,7 +8216,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 413 (curved / lightning)
+# tile 430 (curved / lightning)
 {
   ................
   .......NO.......
@@ -7893,7 +8235,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 414 (forked)
+# tile 431 (forked)
 {
   ................
   ................
@@ -7912,7 +8254,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 415 (spiked)
+# tile 432 (spiked)
 {
   ................
   ................
@@ -7931,7 +8273,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 416 (jeweled)
+# tile 433 (jeweled)
 {
   ................
   ................
@@ -7950,7 +8292,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 417 (gold piece)
+# tile 434 (gold piece)
 {
   ................
   ................
@@ -7969,7 +8311,7 @@ Z = (195, 195, 195)
   .........HA.....
   ...........HA...
 }
-# tile 418 (white / dilithium crystal)
+# tile 435 (white / dilithium crystal)
 {
   ................
   ................
@@ -7988,7 +8330,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 419 (white / diamond)
+# tile 436 (white / diamond)
 {
   ................
   ................
@@ -8007,7 +8349,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 420 (red / ruby)
+# tile 437 (red / ruby)
 {
   ................
   ................
@@ -8026,7 +8368,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 421 (orange / jacinth)
+# tile 438 (orange / jacinth)
 {
   ................
   ................
@@ -8045,7 +8387,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 422 (blue / sapphire)
+# tile 439 (blue / sapphire)
 {
   ................
   ................
@@ -8064,7 +8406,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 423 (black / black opal)
+# tile 440 (black / black opal)
 {
   ................
   ................
@@ -8083,7 +8425,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 424 (green / emerald)
+# tile 441 (green / emerald)
 {
   ................
   ................
@@ -8102,7 +8444,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 425 (green / turquoise)
+# tile 442 (green / turquoise)
 {
   ................
   ................
@@ -8121,7 +8463,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 426 (yellow / citrine)
+# tile 443 (yellow / citrine)
 {
   ................
   ................
@@ -8140,7 +8482,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 427 (green / aquamarine)
+# tile 444 (green / aquamarine)
 {
   ................
   ................
@@ -8159,7 +8501,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 428 (yellowish brown / amber)
+# tile 445 (yellowish brown / amber)
 {
   ................
   ................
@@ -8178,7 +8520,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 429 (yellowish brown / topaz)
+# tile 446 (yellowish brown / topaz)
 {
   ................
   ................
@@ -8197,7 +8539,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 430 (black / jet)
+# tile 447 (black / jet)
 {
   ................
   ................
@@ -8216,7 +8558,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 431 (white / opal)
+# tile 448 (white / opal)
 {
   ................
   ................
@@ -8235,7 +8577,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 432 (yellow / chrysoberyl)
+# tile 449 (yellow / chrysoberyl)
 {
   ................
   ................
@@ -8254,7 +8596,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 433 (red / garnet)
+# tile 450 (red / garnet)
 {
   ................
   ................
@@ -8273,7 +8615,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 434 (violet / amethyst)
+# tile 451 (violet / amethyst)
 {
   ................
   ................
@@ -8292,7 +8634,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 435 (red / jasper)
+# tile 452 (red / jasper)
 {
   ................
   ................
@@ -8311,7 +8653,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 436 (violet / fluorite)
+# tile 453 (violet / fluorite)
 {
   ................
   ................
@@ -8330,7 +8672,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 437 (black / obsidian)
+# tile 454 (black / obsidian)
 {
   ................
   ................
@@ -8349,7 +8691,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 438 (orange / agate)
+# tile 455 (orange / agate)
 {
   ................
   ................
@@ -8368,7 +8710,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 439 (green / jade)
+# tile 456 (green / jade)
 {
   ................
   ................
@@ -8387,7 +8729,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 440 (white / worthless piece of white glass)
+# tile 457 (white / worthless piece of white glass)
 {
   ................
   ................
@@ -8406,7 +8748,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 441 (blue / worthless piece of blue glass)
+# tile 458 (blue / worthless piece of blue glass)
 {
   ................
   ................
@@ -8425,7 +8767,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 442 (red / worthless piece of red glass)
+# tile 459 (red / worthless piece of red glass)
 {
   ................
   ................
@@ -8444,7 +8786,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 443 (yellowish brown / worthless piece of yellowish brown glass)
+# tile 460 (yellowish brown / worthless piece of yellowish brown glass)
 {
   ................
   ................
@@ -8463,7 +8805,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 444 (orange / worthless piece of orange glass)
+# tile 461 (orange / worthless piece of orange glass)
 {
   ................
   ................
@@ -8482,7 +8824,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 445 (yellow / worthless piece of yellow glass)
+# tile 462 (yellow / worthless piece of yellow glass)
 {
   ................
   ................
@@ -8501,7 +8843,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 446 (black / worthless piece of black glass)
+# tile 463 (black / worthless piece of black glass)
 {
   ................
   ................
@@ -8520,7 +8862,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 447 (green / worthless piece of green glass)
+# tile 464 (green / worthless piece of green glass)
 {
   ................
   ................
@@ -8539,7 +8881,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 448 (violet / worthless piece of violet glass)
+# tile 465 (violet / worthless piece of violet glass)
 {
   ................
   ................
@@ -8558,7 +8900,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 449 (gray / luckstone)
+# tile 466 (gray / luckstone)
 {
   ................
   ................
@@ -8577,7 +8919,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 450 (gray / loadstone)
+# tile 467 (gray / loadstone)
 {
   ................
   ................
@@ -8596,7 +8938,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 451 (gray / touchstone)
+# tile 468 (gray / touchstone)
 {
   ................
   ................
@@ -8615,7 +8957,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 452 (gray / flint)
+# tile 469 (gray / flint)
 {
   ................
   ................
@@ -8634,7 +8976,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 453 (rock)
+# tile 470 (rock)
 {
   ................
   ................
@@ -8653,7 +8995,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 454 (boulder)
+# tile 471 (boulder)
 {
   ................
   ................
@@ -8672,7 +9014,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 455 (statue)
+# tile 472 (statue)
 {
   ................
   ........JJ......
@@ -8691,7 +9033,7 @@ Z = (195, 195, 195)
   .....JJJJJJAA...
   ................
 }
-# tile 456 (heavy iron ball)
+# tile 473 (heavy iron ball)
 {
   ................
   ................
@@ -8710,7 +9052,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 457 (iron chain)
+# tile 474 (iron chain)
 {
   ................
   ................
@@ -8729,7 +9071,7 @@ Z = (195, 195, 195)
   ...........PP.PA
   ............AA..
 }
-# tile 458 (splash of venom / splash of blinding venom)
+# tile 475 (splash of venom / splash of blinding venom)
 {
   ................
   ................
@@ -8748,7 +9090,7 @@ Z = (195, 195, 195)
   ................
   ................
 }
-# tile 459 (splash of venom / splash of acid venom)
+# tile 476 (splash of venom / splash of acid venom)
 {
   ................
   ................