Typo fix.
[open-adventure.git] / adventure.yaml
index 5cbe9e0dfa49a5d085b9dfda2a2a12c6c4d2b7d0..31988de02af8bc300f4a95e8d784ed226846dbee 100644 (file)
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: (C) Eric S. Raymond <esr@thyrsus.com>
+# SPDX-License-Identifier: BSD-2-Clause
+#
 # This YAML file gets processed into a collection of data structures and
 # variable initializers describing Colossal Cave.  It replaces an ad-hoc
 # text database shipped with Adventure versions up to 2.5.  The format
 # This YAML file gets processed into a collection of data structures and
 # variable initializers describing Colossal Cave.  It replaces an ad-hoc
 # text database shipped with Adventure versions up to 2.5.  The format
@@ -9,7 +12,7 @@
 # motions: Motion words, grouped into synonyms.  The 'oldstyle'
 #    attribute, if false, means that single-letter synonyms should be
 #    accepted in oldstyle mode; it defaults to true.
 # motions: Motion words, grouped into synonyms.  The 'oldstyle'
 #    attribute, if false, means that single-letter synonyms should be
 #    accepted in oldstyle mode; it defaults to true.
-
+#
 # actions: Action words, grouped into synonyms, and their corresponding
 #    default messages. The 'oldstyle' attribute is as for motions.
 #
 # actions: Action words, grouped into synonyms, and their corresponding
 #    default messages. The 'oldstyle' attribute is as for motions.
 #
 # locations: They have attributes as follows...
 #      long:         Long description, always shown on first encounter.
 #      short:        Short description. If none, use long description.
 # locations: They have attributes as follows...
 #      long:         Long description, always shown on first encounter.
 #      short:        Short description. If none, use long description.
+#      maptag:       Tag for mapping, not used by the game itself.
+#                    Only used if the "short" property is !!null.
 #      conditions:   A dictionary of attributes
 #        LIT           Light
 #        OILY          If FLUID flag is on: true for oil, false for water
 #        FLUID         Liquid asset
 #        NOARRR                Pirate doesn't go here unless following player
 #        NOBACK                Cannot use "back" to move away
 #      conditions:   A dictionary of attributes
 #        LIT           Light
 #        OILY          If FLUID flag is on: true for oil, false for water
 #        FLUID         Liquid asset
 #        NOARRR                Pirate doesn't go here unless following player
 #        NOBACK                Cannot use "back" to move away
+#        ALLDIFFERENT   Part of the maze all different (used in grapher only)
+#        ALLALIKE       Part of the maze all alike (used in grapher only)
 #        HCAVE         Trying to get into cave
 #        HBIRD         Trying to catch bird
 #        HSNAKE                Trying to deal with snake
 #        HCAVE         Trying to get into cave
 #        HBIRD         Trying to catch bird
 #        HSNAKE                Trying to deal with snake
 #    All attributes are optional except the long description and
 #    travel. Order of locations is not significant.
 #
 #    All attributes are optional except the long description and
 #    travel. Order of locations is not significant.
 #
-# arbitrary_messages: These are arguments to rspeak(). Some spans of
-#    these messages need to be kept adjacent and ordered (for now),
-#    though there are no depenencies on actual numbers left.  To see
-#    which, grep for rspeak() calls containing expressions with
-#    arithmetic.  Eventually, these will be pulled out into more
-#    appropriate data structures. Then ordering can be dropped.
+# arbitrary_messages: These are arguments to rspeak(). Order is
+#    not significant.
 #
 # classes: Each item contains a point threshold and a message
 #    describing a classification of player.  Point thresholds must be
 #
 # classes: Each item contains a point threshold and a message
 #    describing a classification of player.  Point thresholds must be
 #    Order doesn't matter; the logic simply tests every threshold on
 #    the assumption that turn counts never decrease nor skip values.
 #
 #    Order doesn't matter; the logic simply tests every threshold on
 #    the assumption that turn counts never decrease nor skip values.
 #
-# objects: Objects have attributes as follows...
+# objects: Objects that are referenced in C code or the YAML by name
+#    have human-readable names; others are named OBJ with a numeric suffix.
+#    Objects have attributes as follows...
 #      inventory:    A description for use in the inventory command.
 #      inventory:    A description for use in the inventory command.
+#      states:       A list of state labels for states from 0 up. Each
+#                    becomes a #define, and is also a state label that
+#                    can be used in travel-rule 'not' clauses.
 #      descriptions: Messages describing the object in different states.
 #      descriptions: Messages describing the object in different states.
-#                    If a state message is a tuple then the first element
-#                    is made the name of a #define visible to the code for
-#                    the associated state, numbered from zero upwards; it
-#                    is also a state label that can be used in travel-rule
-#                    'not' clauses.
-#       changes:     State-change messages to be emitted whenever the obect
+#                    Must correspond 1:1 with state labels if the latter exist.
+#      changes:      State-change messages to be emitted whenever the object
 #                    *changes* to the (0-origin) state that is the index of the
 #                    *changes* to the (0-origin) state that is the index of the
-#                    message in this array.
-#       words:       The vocabulary word(s) referring to this object.
-#       treasure:    A boolean "treasure" used for point-scoring and pirate
+#                    message in this array. Must correspond 1:1 with state
+#                    labels if the latter exist.
+#      words:        The vocabulary word(s) referring to this object.
+#      treasure:     A boolean "treasure" used for point-scoring and pirate
 #                    snatches, defaulting to false.
 #                    snatches, defaulting to false.
-#       immovable:   An object may also be flagged
+#      immovable:    An object may also be flagged
 #                    immovable, meaning it cannot be carried.
 #                    immovable, meaning it cannot be carried.
-#       locations:   An object may have one or two start locations (the gate
+#      locations:    An object may have one or two start locations (the gate
 #                    is an example of a two-location object; it can be accessed
 #                    from above or below).
 #
 #                    is an example of a two-location object; it can be accessed
 #                    from above or below).
 #
 # message when the message is printed.  These sequences are:
 #       %d = an integer
 #       %s = an ASCII string
 # message when the message is printed.  These sequences are:
 #       %d = an integer
 #       %s = an ASCII string
-#      %S = The letter 'S' or nothing (if a given value is exactly 1)
+#      %S = the letter 's' or nothing (if a previous %d value is exactly 1)
 #      %V = substitute program version string
 #      %V = substitute program version string
+#
 
 
+# Motion names of the form MOT_* are not explicitly referenced in the
+# locations YAML, but usually get compiled into generated C.
 motions: !!omap
 - MOT_0:
     words: !!null
 motions: !!omap
 - MOT_0:
     words: !!null
@@ -204,9 +212,9 @@ motions: !!omap
     words: ['east', 'e']
 - WEST:
     words: ['west', 'w']
     words: ['east', 'e']
 - WEST:
     words: ['west', 'w']
-- MOT_45:
+- NORTH:
     words: ['north', 'n']
     words: ['north', 'n']
-- MOT_46:
+- SOUTH:
     words: ['south', 's']
 - NE:
     words: ['ne']
     words: ['south', 's']
 - NE:
     words: ['ne']
@@ -241,9 +249,9 @@ motions: !!omap
     words: ['slab', 'slabr']
 - XYZZY:
     words: ['xyzzy']
     words: ['slab', 'slabr']
 - XYZZY:
     words: ['xyzzy']
-- DPRSSN:
+- DEPRESSION:
     words: ['depre']
     words: ['depre']
-- ENTRNC:
+- ENTRANCE:
     words: ['entra']
 - PLUGH:
     words: ['plugh']
     words: ['entra']
 - PLUGH:
     words: ['plugh']
@@ -251,140 +259,23 @@ motions: !!omap
     words: ['secre']
 - CAVE:
     words: ['cave']
     words: ['secre']
 - CAVE:
     words: ['cave']
-- MOT_68:
-    words: !!null
-- MOT_69:
+- CROSS:
     words: ['cross']
 - BEDQUILT:
     words: ['bedqu']
 - PLOVER:
     words: ['plove']
     words: ['cross']
 - BEDQUILT:
     words: ['bedqu']
 - PLOVER:
     words: ['plove']
-- FORWARD2:
+- ORIENTAL:
     words: ['orien']
     words: ['orien']
-- FORWARD3:
+- CAVERN:
     words: ['caver']
     words: ['caver']
-- FORWARD4:
+- SHELLROOM:
     words: ['shell']
     words: ['shell']
-- FORWARD5:
+- RESERVOIR:
     words: ['reser']
     words: ['reser']
-- FORWARD6:
+- OFFICE:
     words: ['main', 'offic']
 
     words: ['main', 'offic']
 
-actions: !!omap
-- ACT_0:
-    message: !!null
-    words: !!null
-- CARRY:
-    message: ALREADY_CARRYING
-    words: ['g', 'carry', 'take', 'keep', 'catch',
-            'steal', 'captu', 'get', 'tote', 'snarf']
-    oldstyle: false
-- DROP:
-    message: ARENT_CARRYING
-    words: ['drop', 'relea', 'free', 'disca', 'dump']
-- SAY:
-    message: NO_MESSAGE
-    words: ['say', 'chant', 'sing', 'utter', 'mumbl']
-- UNLOCK:
-    message: NOT_LOCKABLE
-    words: ['unloc', 'open']
-- NOTHING:
-    message: NO_MESSAGE
-    words: ['z', 'nothi']
-    oldstyle: false
-- LOCK:
-    message: NOT_LOCKABLE
-    words: ['lock', 'close']
-- LIGHT:
-    message: DONT_UNDERSTAND
-    words: ['light', 'on']
-- EXTINGUISH:
-    message: DONT_UNDERSTAND
-    words: ['extin', 'off']
-- WAVE:
-    message: NOTHING_HAPPENS
-    words: ['wave', 'shake', 'swing']
-- TAME:
-    message: AM_GAME
-    words: ['calm', 'placa', 'tame']
-- GO:
-    message: WHERE_QUERY
-    words: ['walk', 'run', 'trave', 'go', 'proce',
-            'conti', 'explo', 'follo', 'turn']
-- ATTACK:
-    message: RIDICULOUS_ATTEMPT
-    words: ['attac', 'kill', 'fight', 'hit', 'strik', 'slay']
-- POUR:
-    message: ARENT_CARRYING
-    words: ['pour']
-- EAT:
-    message: RIDICULOUS_ATTEMPT
-    words: ['eat', 'devou']
-- DRINK:
-    message: STREAM_WATER
-    words: ['drink']
-- RUB:
-    message: RUB_NOGO
-    words: ['rub']
-- THROW:
-    message: ARENT_CARRYING
-    words: ['throw', 'toss']
-- QUIT:
-    message: HUH_MAN
-    words: ['quit']
-- FIND:
-    message: NEARBY
-    words: ['find', 'where']
-- INVENTORY:
-    message: NEARBY
-    words: ['i', 'inven']
-    oldstyle: false
-- FEED:
-    message: NO_EDIBLES
-    words: ['feed']
-- FILL:
-    message: CANT_FILL
-    words: ['fill']
-- BLAST:
-    message: REQUIRES_DYNAMITE
-    words: ['blast', 'deton', 'ignit', 'blowu']
-- SCORE:
-    message: HUH_MAN
-    words: ['score']
-- GIANTWORDS:
-    message: NOT_KNOWHOW
-    words: ['fee', 'fie', 'foe', 'foo', 'fum']
-- BRIEF:
-    message: ON_WHAT
-    words: ['brief']
-- READ:
-    message: DONT_UNDERSTAND
-    words: ['read', 'perus']
-- BREAK:
-    message: BEYOND_POWER
-    words: ['break', 'shatt', 'smash']
-- WAKE:
-    message: RIDICULOUS_ATTEMPT
-    words: ['wake', 'distu']
-- SAVE:
-    message: HUH_MAN
-    words: ['suspe', 'pause', 'save']
-- RESUME:
-    message: HUH_MAN
-    words: ['resum', 'resta']
-- FLY:
-    message: AM_GAME
-    words: ['fly']
-- LISTEN:
-    message: DONT_UNDERSTAND
-    words: ['liste']
-- PART:
-    message: NOTHING_HAPPENS
-    words: ['z''zzz']
-- ACT_35:
-    message: HUH_MAN
-    words: !!null
-
 hints:
   - hint: &grate
       name: CAVE
 hints:
   - hint: &grate
       name: CAVE
@@ -471,14 +362,15 @@ hints:
       penalty: 4
       question: 'You''re missing only one other treasure.  Do you need help finding it?'
       hint: |-
       penalty: 4
       question: 'You''re missing only one other treasure.  Do you need help finding it?'
       hint: |-
-        Once you''ve found all the other treasures, it is no longer possible to
-        locate the one you''re now missing.'
+        Once you've found all the other treasures, it is no longer possible to
+        locate the one you're now missing.
 
 locations: !!omap
 - LOC_NOWHERE:
     description:
       long: !!null
       short: !!null
 
 locations: !!omap
 - LOC_NOWHERE:
     description:
       long: !!null
       short: !!null
+      maptag: 'Nowhere'
     conditions: {}
     travel: [
     ]
     conditions: {}
     travel: [
     ]
@@ -489,12 +381,13 @@ locations: !!omap
           Around you is a forest.  A small stream flows out of the building and
           down a gully.
       short: 'You''re in front of building.'
           Around you is a forest.  A small stream flows out of the building and
           down a gully.
       short: 'You''re in front of building.'
+      maptag: !!null
     conditions: {FLUID: true, ABOVE: true, LIT: true}
     sound: STREAM_GURGLES
     travel: [
       {verbs: [ROAD, WEST, UPWAR], action: [goto, LOC_HILL]},
       {verbs: [ENTER, BUILD, INWAR, EAST], action: [goto, LOC_BUILDING]},
     conditions: {FLUID: true, ABOVE: true, LIT: true}
     sound: STREAM_GURGLES
     travel: [
       {verbs: [ROAD, WEST, UPWAR], action: [goto, LOC_HILL]},
       {verbs: [ENTER, BUILD, INWAR, EAST], action: [goto, LOC_BUILDING]},
-      {verbs: [DOWNS, GULLY, STREA, SOUTH, D], action: [goto, LOC_VALLEY]},
+      {verbs: [DOWNS, GULLY, STREA, SOUTH, DOWN], action: [goto, LOC_VALLEY]},
       {verbs: [FORES, NORTH], action: [goto, LOC_FOREST1]},
       {verbs: [DEPRE], action: [goto, LOC_GRATE]},
     ]
       {verbs: [FORES, NORTH], action: [goto, LOC_FOREST1]},
       {verbs: [DEPRE], action: [goto, LOC_GRATE]},
     ]
@@ -504,6 +397,7 @@ locations: !!omap
           You have walked up a hill, still in the forest.  The road slopes back
           down the other side of the hill.  There is a building in the distance.
       short: 'You''re at hill in road.'
           You have walked up a hill, still in the forest.  The road slopes back
           down the other side of the hill.  There is a building in the distance.
       short: 'You''re at hill in road.'
+      maptag: !!null
     conditions: {ABOVE: true, LIT: true}
     travel: [
       {verbs: [BUILD, EAST], action: [goto, LOC_START]},
     conditions: {ABOVE: true, LIT: true}
     travel: [
       {verbs: [BUILD, EAST], action: [goto, LOC_START]},
@@ -516,6 +410,7 @@ locations: !!omap
     description:
       long: 'You are inside a building, a well house for a large spring.'
       short: 'You''re inside building.'
     description:
       long: 'You are inside a building, a well house for a large spring.'
       short: 'You''re inside building.'
+      maptag: !!null
     conditions: {FLUID: true, ABOVE: true, LIT: true}
     sound: STREAM_GURGLES
     travel: [
     conditions: {FLUID: true, ABOVE: true, LIT: true}
     sound: STREAM_GURGLES
     travel: [
@@ -530,13 +425,14 @@ locations: !!omap
           You are in a valley in the forest beside a stream tumbling along a
           rocky bed.
       short: 'You''re in valley.'
           You are in a valley in the forest beside a stream tumbling along a
           rocky bed.
       short: 'You''re in valley.'
+      maptag: !!null
     conditions: {FLUID: true, ABOVE: true, LIT: true}
     sound: STREAM_GURGLES
     travel: [
       {verbs: [UPSTR, BUILD, NORTH], action: [goto, LOC_START]},
       {verbs: [EAST, FORES], action: [goto, LOC_FOREST6]},
       {verbs: [WEST], action: [goto, LOC_FOREST12]},
     conditions: {FLUID: true, ABOVE: true, LIT: true}
     sound: STREAM_GURGLES
     travel: [
       {verbs: [UPSTR, BUILD, NORTH], action: [goto, LOC_START]},
       {verbs: [EAST, FORES], action: [goto, LOC_FOREST6]},
       {verbs: [WEST], action: [goto, LOC_FOREST12]},
-      {verbs: [DOWNS, SOUTH, D], action: [goto, LOC_SLIT]},
+      {verbs: [DOWNS, SOUTH, DOWN], action: [goto, LOC_SLIT]},
       {verbs: [DEPRE], action: [goto, LOC_GRATE]},
       {verbs: [STREA], action: [speak, UPSTREAM_DOWNSTREAM]},
     ]
       {verbs: [DEPRE], action: [goto, LOC_GRATE]},
       {verbs: [STREA], action: [speak, UPSTREAM_DOWNSTREAM]},
     ]
@@ -544,6 +440,7 @@ locations: !!omap
     description:
       long: 'The road, which approaches from the east, ends here amid the trees.'
       short: 'You''re at end of road.'
     description:
       long: 'The road, which approaches from the east, ends here amid the trees.'
       short: 'You''re at end of road.'
+      maptag: !!null
     conditions: {ABOVE: true, LIT: true}
     travel: [
       {verbs: [ROAD, EAST, UPWAR], action: [goto, LOC_HILL]},
     conditions: {ABOVE: true, LIT: true}
     travel: [
       {verbs: [ROAD, EAST, UPWAR], action: [goto, LOC_HILL]},
@@ -558,6 +455,7 @@ locations: !!omap
           The forest thins out here to reveal a steep cliff.  There is no way
           down, but a small ledge can be seen to the west across the chasm.
       short: 'You''re at cliff.'
           The forest thins out here to reveal a steep cliff.  There is no way
           down, but a small ledge can be seen to the west across the chasm.
       short: 'You''re at cliff.'
+      maptag: !!null
     conditions: {ABOVE: true, NOBACK: true, LIT: true}
     hints: [*urn]
     travel: [
     conditions: {ABOVE: true, NOBACK: true, LIT: true}
     hints: [*urn]
     travel: [
@@ -571,6 +469,7 @@ locations: !!omap
           At your feet all the water of the stream splashes into a 2-inch slit
           in the rock.  Downstream the streambed is bare rock.
       short: 'You''re at slit in streambed.'
           At your feet all the water of the stream splashes into a 2-inch slit
           in the rock.  Downstream the streambed is bare rock.
       short: 'You''re at slit in streambed.'
+      maptag: !!null
     conditions: {FLUID: true, ABOVE: true, LIT: true}
     sound: STREAM_GURGLES
     travel: [
     conditions: {FLUID: true, ABOVE: true, LIT: true}
     sound: STREAM_GURGLES
     travel: [
@@ -588,6 +487,7 @@ locations: !!omap
           dirt is a strong steel grate mounted in concrete.  A dry streambed
           leads into the depression.
       short: 'You''re outside grate.'
           dirt is a strong steel grate mounted in concrete.  A dry streambed
           leads into the depression.
       short: 'You''re outside grate.'
+      maptag: !!null
     conditions: {ABOVE: true, LIT: true}
     hints: [*grate, *jade]
     travel: [
     conditions: {ABOVE: true, LIT: true}
     hints: [*grate, *jade]
     travel: [
@@ -596,7 +496,7 @@ locations: !!omap
       {verbs: [WEST], action: [goto, LOC_FOREST9]},
       {verbs: [BUILD], action: [goto, LOC_START]},
       {verbs: [UPSTR, GULLY, NORTH], action: [goto, LOC_SLIT]},
       {verbs: [WEST], action: [goto, LOC_FOREST9]},
       {verbs: [BUILD], action: [goto, LOC_START]},
       {verbs: [UPSTR, GULLY, NORTH], action: [goto, LOC_SLIT]},
-      {verbs: [ENTER, INWAR, D],
+      {verbs: [ENTER, INWAR, DOWN],
                              cond: [not, GRATE, GRATE_CLOSED],
                              action: [goto, LOC_BELOWGRATE]},
       {verbs: [ENTER], action: [speak, GRATE_NOWAY]},
                              cond: [not, GRATE, GRATE_CLOSED],
                              action: [goto, LOC_BELOWGRATE]},
       {verbs: [ENTER], action: [speak, GRATE_NOWAY]},
@@ -607,6 +507,7 @@ locations: !!omap
           You are in a small chamber beneath a 3x3 steel grate to the surface.
           A low crawl over cobbles leads inward to the west.
       short: 'You''re below the grate.'
           You are in a small chamber beneath a 3x3 steel grate to the surface.
           A low crawl over cobbles leads inward to the west.
       short: 'You''re below the grate.'
+      maptag: !!null
     conditions: {LIT: true}
     travel: [
       {verbs: [OUT, UPWAR], cond: [not, GRATE, GRATE_CLOSED],
     conditions: {LIT: true}
     travel: [
       {verbs: [OUT, UPWAR], cond: [not, GRATE, GRATE_CLOSED],
@@ -622,6 +523,7 @@ locations: !!omap
           You are crawling over cobbles in a low passage.  There is a dim light
           at the east end of the passage.
       short: 'You''re in cobble crawl.'
           You are crawling over cobbles in a low passage.  There is a dim light
           at the east end of the passage.
       short: 'You''re in cobble crawl.'
+      maptag: !!null
     conditions: {LIT: true}
     travel: [
       {verbs: [OUT, SURFA, EAST], action: [goto, LOC_BELOWGRATE]},
     conditions: {LIT: true}
     travel: [
       {verbs: [OUT, SURFA, EAST], action: [goto, LOC_BELOWGRATE]},
@@ -636,6 +538,7 @@ locations: !!omap
           here, but an awkward canyon leads upward and west.  In the mud someone
           has scrawled, "MAGIC WORD XYZZY".
       short: 'You''re in debris room.'
           here, but an awkward canyon leads upward and west.  In the mud someone
           has scrawled, "MAGIC WORD XYZZY".
       short: 'You''re in debris room.'
+      maptag: !!null
     conditions: {}
     travel: [
       {verbs: [DEPRE], cond: [not, GRATE, GRATE_CLOSED],
     conditions: {}
     travel: [
       {verbs: [DEPRE], cond: [not, GRATE, GRATE_CLOSED],
@@ -650,22 +553,24 @@ locations: !!omap
     description:
       long: 'You are in an awkward sloping east/west canyon.'
       short: !!null
     description:
       long: 'You are in an awkward sloping east/west canyon.'
       short: !!null
+      maptag: 'Awkward canyon.'
     conditions: {}
     travel: [
       {verbs: [DEPRE], cond: [not, GRATE, GRATE_CLOSED],
                        action: [goto, LOC_GRATE]},
       {verbs: [ENTRA], action: [goto, LOC_BELOWGRATE]},
       {verbs: [DOWN, EAST, DEBRI], action: [goto, LOC_DEBRIS]},
     conditions: {}
     travel: [
       {verbs: [DEPRE], cond: [not, GRATE, GRATE_CLOSED],
                        action: [goto, LOC_GRATE]},
       {verbs: [ENTRA], action: [goto, LOC_BELOWGRATE]},
       {verbs: [DOWN, EAST, DEBRI], action: [goto, LOC_DEBRIS]},
-      {verbs: [INWAR, UPWAR, WEST], action: [goto, LOC_BIRD]},
+      {verbs: [INWAR, UPWAR, WEST], action: [goto, LOC_BIRDCHAMBER]},
       {verbs: [PIT], action: [goto, LOC_PITTOP]},
     ]
       {verbs: [PIT], action: [goto, LOC_PITTOP]},
     ]
-- LOC_BIRD:
+- LOC_BIRDCHAMBER:
     description:
       long: |-
           You are in a splendid chamber thirty feet high.  The walls are frozen
           rivers of orange stone.  An awkward canyon and a good passage exit
           from east and west sides of the chamber.
       short: 'You''re in bird chamber.'
     description:
       long: |-
           You are in a splendid chamber thirty feet high.  The walls are frozen
           rivers of orange stone.  An awkward canyon and a good passage exit
           from east and west sides of the chamber.
       short: 'You''re in bird chamber.'
+      maptag: !!null
     conditions: {}
     hints: [*bird] 
     travel: [
     conditions: {}
     hints: [*bird] 
     travel: [
@@ -682,13 +587,14 @@ locations: !!omap
           At your feet is a small pit breathing traces of white mist.  An east
           passage ends here except for a small crack leading on.
       short: 'You''re at top of small pit.'
           At your feet is a small pit breathing traces of white mist.  An east
           passage ends here except for a small crack leading on.
       short: 'You''re at top of small pit.'
+      maptag: !!null
     conditions: {}
     travel: [
       {verbs: [DEPRE], cond: [not, GRATE, GRATE_CLOSED],
                        action: [goto, LOC_GRATE]},
       {verbs: [ENTRA], action: [goto, LOC_BELOWGRATE]},
       {verbs: [DEBRI], action: [goto, LOC_DEBRIS]},
     conditions: {}
     travel: [
       {verbs: [DEPRE], cond: [not, GRATE, GRATE_CLOSED],
                        action: [goto, LOC_GRATE]},
       {verbs: [ENTRA], action: [goto, LOC_BELOWGRATE]},
       {verbs: [DEBRI], action: [goto, LOC_DEBRIS]},
-      {verbs: [PASSA, EAST], action: [goto, LOC_BIRD]},
+      {verbs: [PASSA, EAST], action: [goto, LOC_BIRDCHAMBER]},
       {verbs: [DOWN, PIT, STEPS], cond: [carry, NUGGET],
                                action: [goto, LOC_NECKBROKE]},
       {verbs: [DOWN], action: [goto, LOC_MISTHALL]},
       {verbs: [DOWN, PIT, STEPS], cond: [carry, NUGGET],
                                action: [goto, LOC_NECKBROKE]},
       {verbs: [DOWN], action: [goto, LOC_MISTHALL]},
@@ -703,6 +609,7 @@ locations: !!omap
           swaying to and fro almost as if alive.  A cold wind blows up the
           staircase.  There is a passage at the top of a dome behind you.
       short: 'You''re in Hall of Mists.'
           swaying to and fro almost as if alive.  A cold wind blows up the
           staircase.  There is a passage at the top of a dome behind you.
       short: 'You''re in Hall of Mists.'
+      maptag: !!null
     conditions: {DEEP: true}
     hints: [*jade]
     sound: WIND_WHISTLES
     conditions: {DEEP: true}
     hints: [*jade]
     sound: WIND_WHISTLES
@@ -719,8 +626,9 @@ locations: !!omap
     description:
       long: |-
           The crack is far too small for you to follow.  At its widest it is
     description:
       long: |-
           The crack is far too small for you to follow.  At its widest it is
-          barely wide enough to admit your foot.'
+          barely wide enough to admit your foot.
       short: !!null
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_PITTOP]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_PITTOP]},
@@ -731,6 +639,7 @@ locations: !!omap
           You are on the east bank of a fissure slicing clear across the hall.
           The mist is quite thick here, and the fissure is too wide to jump.
       short: 'You''re on east bank of fissure.'
           You are on the east bank of a fissure slicing clear across the hall.
           The mist is quite thick here, and the fissure is too wide to jump.
       short: 'You''re on east bank of fissure.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [HALL, EAST], action: [goto, LOC_MISTHALL]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [HALL, EAST], action: [goto, LOC_MISTHALL]},
@@ -749,6 +658,7 @@ locations: !!omap
           This is a low room with a crude note on the wall.  The note says,
           "You won't get it up the steps".
       short: 'You''re in nugget-of-gold room.'
           This is a low room with a crude note on the wall.  The note says,
           "You won't get it up the steps".
       short: 'You''re in nugget-of-gold room.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [HALL, OUT, NORTH], action: [goto, LOC_MISTHALL]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [HALL, OUT, NORTH], action: [goto, LOC_MISTHALL]},
@@ -759,6 +669,7 @@ locations: !!omap
           You are in the Hall of the Mountain King, with passages off in all
           directions.
       short: 'You''re in Hall of Mt King.'
           You are in the Hall of the Mountain King, with passages off in all
           directions.
       short: 'You''re in Hall of Mt King.'
+      maptag: !!null
     conditions: {DEEP: true}
     hints: [*snake]
     travel: [
     conditions: {DEEP: true}
     hints: [*snake]
     travel: [
@@ -778,6 +689,7 @@ locations: !!omap
     description:
       long: 'You are at the bottom of the pit with a broken neck.'
       short: !!null
     description:
       long: 'You are at the bottom of the pit with a broken neck.'
       short: !!null
+      maptag: 'Pit bottom'
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_NOWHERE]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_NOWHERE]},
@@ -786,6 +698,7 @@ locations: !!omap
     description:
       long: 'You didn''t make it.'
       short: !!null
     description:
       long: 'You didn''t make it.'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_NOWHERE]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_NOWHERE]},
@@ -794,6 +707,7 @@ locations: !!omap
     description:
       long: 'The dome is unclimbable.'
       short: !!null
     description:
       long: 'The dome is unclimbable.'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_MISTHALL]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_MISTHALL]},
@@ -804,6 +718,7 @@ locations: !!omap
           You are at the west end of the Twopit Room.  There is a large hole in
           the wall above the pit at this end of the room.
       short: 'You''re at west end of Twopit Room.'
           You are at the west end of the Twopit Room.  There is a large hole in
           the wall above the pit at this end of the room.
       short: 'You''re at west end of Twopit Room.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST, ACROS], action: [goto, LOC_EASTEND]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST, ACROS], action: [goto, LOC_EASTEND]},
@@ -817,6 +732,7 @@ locations: !!omap
           You are at the bottom of the eastern pit in the Twopit Room.  There is
           a small pool of oil in one corner of the pit.
       short: 'You''re in east pit.'
           You are at the bottom of the eastern pit in the Twopit Room.  There is
           a small pool of oil in one corner of the pit.
       short: 'You''re in east pit.'
+      maptag: !!null
     conditions: {FLUID: true, DEEP: true, OILY: true}
     travel: [
       {verbs: [UPWAR, OUT], action: [goto, LOC_EASTEND]},
     conditions: {FLUID: true, DEEP: true, OILY: true}
     travel: [
       {verbs: [UPWAR, OUT], action: [goto, LOC_EASTEND]},
@@ -827,6 +743,7 @@ locations: !!omap
           You are at the bottom of the western pit in the Twopit Room.  There is
           a large hole in the wall about 25 feet above you.
       short: 'You''re in west pit.'
           You are at the bottom of the western pit in the Twopit Room.  There is
           a large hole in the wall about 25 feet above you.
       short: 'You''re in west pit.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [UPWAR, OUT], action: [goto, LOC_WESTEND]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [UPWAR, OUT], action: [goto, LOC_WESTEND]},
@@ -838,6 +755,7 @@ locations: !!omap
     description:
       long: 'You clamber up the plant and scurry through the hole at the top.'
       short: !!null
     description:
       long: 'You clamber up the plant and scurry through the hole at the top.'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_NARROW]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_NARROW]},
@@ -846,6 +764,7 @@ locations: !!omap
     description:
       long: 'You are on the west side of the fissure in the Hall of Mists.'
       short: 'You''re on west bank of fissure.'
     description:
       long: 'You are on the west side of the fissure in the Hall of Mists.'
       short: 'You''re on west bank of fissure.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [JUMP], cond: [not, FISSURE, UNBRIDGED],
     conditions: {DEEP: true}
     travel: [
       {verbs: [JUMP], cond: [not, FISSURE, UNBRIDGED],
@@ -865,6 +784,7 @@ locations: !!omap
           You are in a low n/s passage at a hole in the floor.  The hole goes
           down to an e/w passage.
       short: 'You''re in n/s passage above e/w passage.'
           You are in a low n/s passage at a hole in the floor.  The hole goes
           down to an e/w passage.
       short: 'You''re in n/s passage above e/w passage.'
+      maptag: "Floor hole."
     conditions: {DEEP: true}
     travel: [
       {verbs: [HALL, OUT, SOUTH], action: [goto, LOC_KINGHALL]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [HALL, OUT, SOUTH], action: [goto, LOC_KINGHALL]},
@@ -875,6 +795,7 @@ locations: !!omap
     description:
       long: 'You are in the south side chamber.'
       short: !!null
     description:
       long: 'You are in the south side chamber.'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [HALL, OUT, NORTH], action: [goto, LOC_KINGHALL]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [HALL, OUT, NORTH], action: [goto, LOC_KINGHALL]},
@@ -885,6 +806,7 @@ locations: !!omap
           You are in the west side chamber of the Hall of the Mountain King.
           A passage continues west and up here.
       short: 'You''re in the west side chamber.'
           You are in the west side chamber of the Hall of the Mountain King.
           A passage continues west and up here.
       short: 'You''re in the west side chamber.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [HALL, OUT, EAST], action: [goto, LOC_KINGHALL]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [HALL, OUT, EAST], action: [goto, LOC_KINGHALL]},
@@ -894,6 +816,7 @@ locations: !!omap
     description:
       long: ''
       short: !!null
     description:
       long: ''
       short: !!null
+      maptag: 'Middle of plant.'
     conditions: {DEEP: true}
     travel: [
       {verbs: [], cond: [not, PLANT, PLANT_BELLOWING],
     conditions: {DEEP: true}
     travel: [
       {verbs: [], cond: [not, PLANT, PLANT_BELLOWING],
@@ -904,6 +827,7 @@ locations: !!omap
     description:
       long: 'You can''t get by the snake.'
       short: !!null
     description:
       long: 'You can''t get by the snake.'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_KINGHALL]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_KINGHALL]},
@@ -915,6 +839,7 @@ locations: !!omap
           west, and a wall of broken rock to the east.  There is a large "Y2" on
           a rock in the room's center.
       short: 'You''re at "Y2".'
           west, and a wall of broken rock to the east.  There is a large "Y2" on
           a rock in the room's center.
       short: 'You''re at "Y2".'
+      maptag: "Y2."
     conditions: {DEEP: true}
     travel: [
       {verbs: [PLUGH], action: [goto, LOC_FOOF4]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [PLUGH], action: [goto, LOC_FOOF4]},
@@ -928,6 +853,7 @@ locations: !!omap
     description:
       long: 'You are in a jumble of rock, with cracks everywhere.'
       short: !!null
     description:
       long: 'You are in a jumble of rock, with cracks everywhere.'
       short: !!null
+      maptag: 'Rock jumble'
     conditions: {DEEP: true}
     travel: [
       {verbs: [DOWN, Y2], action: [goto, LOC_Y2]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [DOWN, Y2], action: [goto, LOC_Y2]},
@@ -944,6 +870,7 @@ locations: !!omap
           25 feet away there is a similar window looking into a lighted room.  A
           shadowy figure can be seen there peering back at you.
       short: 'You''re at window on pit.'
           25 feet away there is a similar window looking into a lighted room.  A
           shadowy figure can be seen there peering back at you.
       short: 'You''re at window on pit.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST, Y2], action: [goto, LOC_Y2]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST, Y2], action: [goto, LOC_Y2]},
@@ -954,7 +881,8 @@ locations: !!omap
       long: |-
           You are in a dirty broken passage.  To the east is a crawl.  To the
           west is a large passage.  Above you is a hole to another passage.
       long: |-
           You are in a dirty broken passage.  To the east is a crawl.  To the
           west is a large passage.  Above you is a hole to another passage.
-      short: 'You''re in dirty passage.'
+      short: 'You''re in dirty passage.' 
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST, CRAWL], action: [goto, LOC_SMALLPITBRINK]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST, CRAWL], action: [goto, LOC_SMALLPITBRINK]},
@@ -968,6 +896,7 @@ locations: !!omap
           You are on the brink of a small clean climbable pit.  A crawl leads
           west.
       short: 'You''re at brink of small pit.'
           You are on the brink of a small clean climbable pit.  A crawl leads
           west.
       short: 'You''re at brink of small pit.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [WEST, CRAWL], action: [goto, LOC_BROKEN]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [WEST, CRAWL], action: [goto, LOC_BROKEN]},
@@ -979,6 +908,7 @@ locations: !!omap
          You are in the bottom of a small pit with a little stream, which
          enters and exits through tiny slits.
       short: 'You''re at bottom of pit with stream.'
          You are in the bottom of a small pit with a little stream, which
          enters and exits through tiny slits.
       short: 'You''re at bottom of pit with stream.'
+      maptag: 'Small pit bottom'
     conditions: {FLUID: true, DEEP: true}
     sound: STREAM_GURGLES
     travel: [
     conditions: {FLUID: true, DEEP: true}
     sound: STREAM_GURGLES
     travel: [
@@ -992,6 +922,7 @@ locations: !!omap
           You are in a large room full of dusty rocks.  There is a big hole in
           the floor.  There are cracks everywhere, and a passage leading east.
       short: 'You''re in dusty rock room.'
           You are in a large room full of dusty rocks.  There is a big hole in
           the floor.  There are cracks everywhere, and a passage leading east.
       short: 'You''re in dusty rock room.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST, PASSA], action: [goto, LOC_BROKEN]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST, PASSA], action: [goto, LOC_BROKEN]},
@@ -1004,6 +935,7 @@ locations: !!omap
           You have crawled through a very low wide passage parallel to and north
           of the Hall of Mists.
       short: !!null
           You have crawled through a very low wide passage parallel to and north
           of the Hall of Mists.
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_MISTWEST]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_MISTWEST]},
@@ -1015,6 +947,7 @@ locations: !!omap
           continues west and another goes north.  To the south is a little
           passage 6 feet off the floor.
       short: 'You''re at west end of Hall of Mists.'
           continues west and another goes north.  To the south is a little
           passage 6 feet off the floor.
       short: 'You''re at west end of Hall of Mists.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH, UPWAR, PASSA, CLIMB], action: [goto, LOC_ALIKE1]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH, UPWAR, PASSA, CLIMB], action: [goto, LOC_ALIKE1]},
@@ -1026,7 +959,8 @@ locations: !!omap
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [UPWAR], action: [goto, LOC_MISTWEST]},
     hints: [*maze]
     travel: [
       {verbs: [UPWAR], action: [goto, LOC_MISTWEST]},
@@ -1039,7 +973,8 @@ locations: !!omap
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [WEST], action: [goto, LOC_ALIKE1]},
     hints: [*maze]
     travel: [
       {verbs: [WEST], action: [goto, LOC_ALIKE1]},
@@ -1050,50 +985,55 @@ locations: !!omap
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [EAST], action: [goto, LOC_ALIKE2]},
     hints: [*maze]
     travel: [
       {verbs: [EAST], action: [goto, LOC_ALIKE2]},
-      {verbs: [DOWN], action: [goto, LOC_DEADEND3]},
+      {verbs: [DOWN], action: [goto, LOC_MAZEEND3]},
       {verbs: [SOUTH], action: [goto, LOC_ALIKE6]},
       {verbs: [SOUTH], action: [goto, LOC_ALIKE6]},
-      {verbs: [NORTH], action: [goto, LOC_DEADEND9]},
+      {verbs: [NORTH], action: [goto, LOC_MAZEEND9]},
     ]
 - LOC_ALIKE4:
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     ]
 - LOC_ALIKE4:
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [WEST], action: [goto, LOC_ALIKE1]},
       {verbs: [NORTH], action: [goto, LOC_ALIKE2]},
     hints: [*maze]
     travel: [
       {verbs: [WEST], action: [goto, LOC_ALIKE1]},
       {verbs: [NORTH], action: [goto, LOC_ALIKE2]},
-      {verbs: [EAST], action: [goto, LOC_DEADEND1]},
-      {verbs: [SOUTH], action: [goto, LOC_DEADEND2]},
-      {verbs: [UPWAR, D], action: [goto, LOC_ALIKE14]},
+      {verbs: [EAST], action: [goto, LOC_MAZEEND1]},
+      {verbs: [SOUTH], action: [goto, LOC_MAZEEND2]},
+      {verbs: [UPWAR, DOWN], action: [goto, LOC_ALIKE14]},
     ]
     ]
-- LOC_DEADEND1:
+- LOC_MAZEEND1:
     description:
       long: 'Dead end'
       short: !!null
     description:
       long: 'Dead end'
       short: !!null
-    conditions: {DEEP: true, NOARRR: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOARRR: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [WEST, OUT], action: [goto, LOC_ALIKE4]},
     ]
     hints: [*maze]
     travel: [
       {verbs: [WEST, OUT], action: [goto, LOC_ALIKE4]},
     ]
-- LOC_DEADEND2:
+- LOC_MAZEEND2:
     description:
       long: 'Dead end'
       short: !!null
     description:
       long: 'Dead end'
       short: !!null
-    conditions: {DEEP: true, NOARRR: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOARRR: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [EAST, OUT], action: [goto, LOC_ALIKE4]},
     ]
     hints: [*maze]
     travel: [
       {verbs: [EAST, OUT], action: [goto, LOC_ALIKE4]},
     ]
-- LOC_DEADEND3:
+- LOC_MAZEEND3:
     description:
       long: 'Dead end'
       short: !!null
     description:
       long: 'Dead end'
       short: !!null
-    conditions: {DEEP: true, NOARRR: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOARRR: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [UPWAR, OUT], action: [goto, LOC_ALIKE3]},
     hints: [*maze]
     travel: [
       {verbs: [UPWAR, OUT], action: [goto, LOC_ALIKE3]},
@@ -1102,7 +1042,8 @@ locations: !!omap
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [EAST], action: [goto, LOC_ALIKE6]},
     hints: [*maze]
     travel: [
       {verbs: [EAST], action: [goto, LOC_ALIKE6]},
@@ -1112,7 +1053,8 @@ locations: !!omap
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [EAST], action: [goto, LOC_ALIKE3]},
     hints: [*maze]
     travel: [
       {verbs: [EAST], action: [goto, LOC_ALIKE3]},
@@ -1124,7 +1066,8 @@ locations: !!omap
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [WEST], action: [goto, LOC_ALIKE5]},
     hints: [*maze]
     travel: [
       {verbs: [WEST], action: [goto, LOC_ALIKE5]},
@@ -1136,7 +1079,8 @@ locations: !!omap
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [WEST], action: [goto, LOC_ALIKE6]},
     hints: [*maze]
     travel: [
       {verbs: [WEST], action: [goto, LOC_ALIKE6]},
@@ -1144,24 +1088,26 @@ locations: !!omap
       {verbs: [SOUTH], action: [goto, LOC_ALIKE8]},
       {verbs: [UPWAR], action: [goto, LOC_ALIKE9]},
       {verbs: [NORTH], action: [goto, LOC_ALIKE10]},
       {verbs: [SOUTH], action: [goto, LOC_ALIKE8]},
       {verbs: [UPWAR], action: [goto, LOC_ALIKE9]},
       {verbs: [NORTH], action: [goto, LOC_ALIKE10]},
-      {verbs: [DOWN], action: [goto, LOC_DEADEND11]},
+      {verbs: [DOWN], action: [goto, LOC_MAZEEND11]},
     ]
 - LOC_ALIKE9:
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     ]
 - LOC_ALIKE9:
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [WEST], action: [goto, LOC_ALIKE7]},
       {verbs: [NORTH], action: [goto, LOC_ALIKE8]},
     hints: [*maze]
     travel: [
       {verbs: [WEST], action: [goto, LOC_ALIKE7]},
       {verbs: [NORTH], action: [goto, LOC_ALIKE8]},
-      {verbs: [SOUTH], action: [goto, LOC_DEADEND4]},
+      {verbs: [SOUTH], action: [goto, LOC_MAZEEND4]},
     ]
     ]
-- LOC_DEADEND4:
+- LOC_MAZEEND4:
     description:
       long: 'Dead end'
       short: !!null
     description:
       long: 'Dead end'
       short: !!null
-    conditions: {DEEP: true, NOARRR: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOARRR: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [WEST, OUT], action: [goto, LOC_ALIKE9]},
     hints: [*maze]
     travel: [
       {verbs: [WEST, OUT], action: [goto, LOC_ALIKE9]},
@@ -1170,19 +1116,21 @@ locations: !!omap
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [WEST], action: [goto, LOC_ALIKE8]},
       {verbs: [NORTH], action: [goto, LOC_ALIKE10]},
     hints: [*maze]
     travel: [
       {verbs: [WEST], action: [goto, LOC_ALIKE8]},
       {verbs: [NORTH], action: [goto, LOC_ALIKE10]},
-      {verbs: [DOWN], action: [goto, LOC_DEADEND5]},
+      {verbs: [DOWN], action: [goto, LOC_MAZEEND5]},
       {verbs: [EAST], action: [goto, LOC_PITBRINK]},
     ]
       {verbs: [EAST], action: [goto, LOC_PITBRINK]},
     ]
-- LOC_DEADEND5:
+- LOC_MAZEEND5:
     description:
       long: 'Dead end'
       short: !!null
     description:
       long: 'Dead end'
       short: !!null
-    conditions: {DEEP: true, NOARRR: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOARRR: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [UPWAR, OUT], action: [goto, LOC_ALIKE10]},
     hints: [*maze]
     travel: [
       {verbs: [UPWAR, OUT], action: [goto, LOC_ALIKE10]},
@@ -1194,19 +1142,21 @@ locations: !!omap
           down one wall.  You could climb down here but you could not get back
           up.  The maze continues at this level.
       short: 'You''re at brink of pit.'
           down one wall.  You could climb down here but you could not get back
           up.  The maze continues at this level.
       short: 'You''re at brink of pit.'
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: !!null
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     travel: [
     travel: [
-      {verbs: [DOWN, CLIMB], action: [goto, LOC_BIRD]},
+      {verbs: [DOWN, CLIMB], action: [goto, LOC_BIRDCHAMBER]},
       {verbs: [WEST], action: [goto, LOC_ALIKE10]},
       {verbs: [WEST], action: [goto, LOC_ALIKE10]},
-      {verbs: [SOUTH], action: [goto, LOC_DEADEND6]},
+      {verbs: [SOUTH], action: [goto, LOC_MAZEEND6]},
       {verbs: [NORTH], action: [goto, LOC_ALIKE12]},
       {verbs: [EAST], action: [goto, LOC_ALIKE13]},
     ]
       {verbs: [NORTH], action: [goto, LOC_ALIKE12]},
       {verbs: [EAST], action: [goto, LOC_ALIKE13]},
     ]
-- LOC_DEADEND6:
+- LOC_MAZEEND6:
     description:
       long: 'Dead end'
       short: !!null
     description:
       long: 'Dead end'
       short: !!null
-    conditions: {NOARRR: true, DEEP: true}
+      maptag: 'Maze all alike.'
+    conditions: {NOARRR: true, DEEP: true, ALLALIKE: true}
     travel: [
       {verbs: [EAST, OUT], action: [goto, LOC_PITBRINK]},
     ]
     travel: [
       {verbs: [EAST, OUT], action: [goto, LOC_PITBRINK]},
     ]
@@ -1216,6 +1166,7 @@ locations: !!omap
           You have crawled through a very low wide passage parallel to and north
           of the Hall of Mists.
       short: !!null
           You have crawled through a very low wide passage parallel to and north
           of the Hall of Mists.
       short: !!null
+      maptag: 'Maze all alike.'
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_WESTBANK]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_WESTBANK]},
@@ -1227,6 +1178,7 @@ locations: !!omap
           chambers.  To the east a low wide crawl slants up.  To the north a
           round two foot hole slants down.
       short: 'You''re at east end of long hall.'
           chambers.  To the east a low wide crawl slants up.  To the north a
           round two foot hole slants down.
       short: 'You''re at east end of long hall.'
+      maptag: 'Maze all alike.'
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST, UPWAR, CRAWL], action: [goto, LOC_MISTWEST]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST, UPWAR, CRAWL], action: [goto, LOC_MISTWEST]},
@@ -1239,6 +1191,7 @@ locations: !!omap
           You are at the west end of a very long featureless hall.  The hall
           joins up with a narrow north/south passage.
       short: 'You''re at west end of long hall.'
           You are at the west end of a very long featureless hall.  The hall
           joins up with a narrow north/south passage.
       short: 'You''re at west end of long hall.'
+      maptag: 'Maze all alike.'
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST], action: [goto, LOC_LONGEAST]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST], action: [goto, LOC_LONGEAST]},
@@ -1249,6 +1202,7 @@ locations: !!omap
     description:
       long: 'You are at a crossover of a high n/s passage and a low e/w one.'
       short: !!null
     description:
       long: 'You are at a crossover of a high n/s passage and a low e/w one.'
       short: !!null
+      maptag: 'Passage crossover.'
     conditions: {DEEP: true}
     travel: [
       {verbs: [WEST], action: [goto, LOC_LONGEAST]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [WEST], action: [goto, LOC_LONGEAST]},
@@ -1260,6 +1214,7 @@ locations: !!omap
     description:
       long: 'Dead end'
       short: !!null
     description:
       long: 'Dead end'
       short: !!null
+      maptag: 'Maze all alike.'
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH, OUT], action: [goto, LOC_CROSSOVER]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH, OUT], action: [goto, LOC_CROSSOVER]},
@@ -1271,6 +1226,7 @@ locations: !!omap
           north joins a higher crawl from the east to make a walking passage
           going west.  There is also a large room above.  The air is damp here.
       short: 'You''re at complex junction.'
           north joins a higher crawl from the east to make a walking passage
           going west.  There is also a large room above.  The air is damp here.
       short: 'You''re at complex junction.'
+      maptag: !!null
     conditions: {DEEP: true}
     hints: [*jade]
     sound: WIND_WHISTLES
     conditions: {DEEP: true}
     hints: [*jade]
     sound: WIND_WHISTLES
@@ -1286,6 +1242,7 @@ locations: !!omap
           You are in Bedquilt, a long east/west passage with holes everywhere.
           To explore at random select north, south, up, or down.
       short: 'You''re in Bedquilt.'
           You are in Bedquilt, a long east/west passage with holes everywhere.
           To explore at random select north, south, up, or down.
       short: 'You''re in Bedquilt.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST], action: [goto, LOC_COMPLEX]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST], action: [goto, LOC_COMPLEX]},
@@ -1304,10 +1261,11 @@ locations: !!omap
 - LOC_SWISSCHEESE:
     description:
       long: |-
 - LOC_SWISSCHEESE:
     description:
       long: |-
-          You are in a room whose walls resemble swiss cheese.  Obvious passages
+          You are in a room whose walls resemble Swiss cheese.  Obvious passages
           go west, east, ne, and nw.  Part of the room is occupied by a large
           bedrock block.
       short: 'You''re in Swiss Cheese Room.'
           go west, east, ne, and nw.  Part of the room is occupied by a large
           bedrock block.
       short: 'You''re in Swiss Cheese Room.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [NE], action: [goto, LOC_BEDQUILT]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [NE], action: [goto, LOC_BEDQUILT]},
@@ -1327,6 +1285,7 @@ locations: !!omap
           and west.  There are holes all over, but the only big one is on the
           wall directly over the west pit where you can't get to it.
       short: 'You''re at east end of Twopit Room.'
           and west.  There are holes all over, but the only big one is on the
           wall directly over the west pit where you can't get to it.
       short: 'You''re at east end of Twopit Room.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST], action: [goto, LOC_SWISSCHEESE]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST], action: [goto, LOC_SWISSCHEESE]},
@@ -1342,6 +1301,7 @@ locations: !!omap
           passages go north and south, and the south one quickly bends west
           around the boulders.
       short: 'You''re in Slab Room.'
           passages go north and south, and the south one quickly bends west
           around the boulders.
       short: 'You''re in Slab Room.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH], action: [goto, LOC_WESTEND]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH], action: [goto, LOC_WESTEND]},
@@ -1352,6 +1312,7 @@ locations: !!omap
     description:
       long: 'You are in a secret n/s canyon above a large room.'
       short: !!null
     description:
       long: 'You are in a secret n/s canyon above a large room.'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [DOWN, SLAB], action: [goto, LOC_SLAB]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [DOWN, SLAB], action: [goto, LOC_SLAB]},
@@ -1364,7 +1325,8 @@ locations: !!omap
 - LOC_SECRET2:
     description:
       long: 'You are in a secret n/s canyon above a sizable passage.'
 - LOC_SECRET2:
     description:
       long: 'You are in a secret n/s canyon above a sizable passage.'
-      short: !!null
+      short: !!null 
+      maptag: 'Secret canyon'
     conditions: {DEEP: true}
     travel: [
       {verbs: [NORTH], action: [goto, LOC_THREEJUNCTION]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [NORTH], action: [goto, LOC_THREEJUNCTION]},
@@ -1378,6 +1340,7 @@ locations: !!omap
           north, south, and se.  The north one is as tall as the other two
           combined.
       short: 'You''re at junction of three secret canyons.'
           north, south, and se.  The north one is as tall as the other two
           combined.
       short: 'You''re at junction of three secret canyons.'
+      maptag: 'Secret canyon junction'
     conditions: {DEEP: true}
     travel: [
       {verbs: [SE], action: [goto, LOC_BEDQUILT]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [SE], action: [goto, LOC_BEDQUILT]},
@@ -1388,6 +1351,7 @@ locations: !!omap
     description:
       long: 'You are in a large low room.  Crawls lead north, se, and sw.'
       short: 'You''re in large low room.'
     description:
       long: 'You are in a large low room.  Crawls lead north, se, and sw.'
       short: 'You''re in large low room.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [BEDQU], action: [goto, LOC_BEDQUILT]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [BEDQU], action: [goto, LOC_BEDQUILT]},
@@ -1399,6 +1363,7 @@ locations: !!omap
     description:
       long: 'Dead end crawl.'
       short: !!null
     description:
       long: 'Dead end crawl.'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH, CRAWL, OUT], action: [goto, LOC_LOWROOM]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH, CRAWL, OUT], action: [goto, LOC_LOWROOM]},
@@ -1410,6 +1375,7 @@ locations: !!omap
           very tight canyon 15 feet below.  If you go down you may not be able
           to get back up.
       short: 'You''re in secret e/w canyon above tight canyon.'
           very tight canyon 15 feet below.  If you go down you may not be able
           to get back up.
       short: 'You''re in secret e/w canyon above tight canyon.'
+      maptag: 'Secret e/w canyon'
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST], action: [goto, LOC_KINGHALL]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST], action: [goto, LOC_KINGHALL]},
@@ -1421,6 +1387,7 @@ locations: !!omap
     description:
       long: 'You are at a wide place in a very tight n/s canyon.'
       short: !!null
     description:
       long: 'You are at a wide place in a very tight n/s canyon.'
       short: !!null
+      maptag: 'Wide place'
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH], action: [goto, LOC_TIGHTPLACE]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH], action: [goto, LOC_TIGHTPLACE]},
@@ -1430,6 +1397,7 @@ locations: !!omap
     description:
       long: 'The canyon here becomes too tight to go further south.'
       short: !!null
     description:
       long: 'The canyon here becomes too tight to go further south.'
       short: !!null
+      maptag: 'Tight canyon'
     conditions: {DEEP: true}
     travel: [
       {verbs: [NORTH], action: [goto, LOC_WIDEPLACE]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [NORTH], action: [goto, LOC_WIDEPLACE]},
@@ -1440,6 +1408,7 @@ locations: !!omap
           You are in a tall e/w canyon.  A low tight crawl goes 3 feet north and
           seems to open up.
       short: !!null
           You are in a tall e/w canyon.  A low tight crawl goes 3 feet north and
           seems to open up.
       short: !!null
+      maptag: 'Tall canyon'
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST], action: [goto, LOC_WIDEPLACE]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST], action: [goto, LOC_WIDEPLACE]},
@@ -1450,6 +1419,7 @@ locations: !!omap
     description:
       long: 'The canyon runs into a mass of boulders -- dead end.'
       short: !!null
     description:
       long: 'The canyon runs into a mass of boulders -- dead end.'
       short: !!null
+      maptag: 'Boulders'
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH], action: [goto, LOC_TALL]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH], action: [goto, LOC_TALL]},
@@ -1460,6 +1430,7 @@ locations: !!omap
           The stream flows out through a pair of 1 foot diameter sewer pipes.
           It would be advisable to use the exit.
       short: !!null
           The stream flows out through a pair of 1 foot diameter sewer pipes.
           It would be advisable to use the exit.
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_BUILDING]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_BUILDING]},
@@ -1468,28 +1439,31 @@ locations: !!omap
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [NORTH], action: [goto, LOC_ALIKE1]},
       {verbs: [WEST], action: [goto, LOC_ALIKE11]},
       {verbs: [SOUTH], action: [goto, LOC_ALIKE11]},
     hints: [*maze]
     travel: [
       {verbs: [NORTH], action: [goto, LOC_ALIKE1]},
       {verbs: [WEST], action: [goto, LOC_ALIKE11]},
       {verbs: [SOUTH], action: [goto, LOC_ALIKE11]},
-      {verbs: [EAST], action: [goto, LOC_DEADEND8]},
+      {verbs: [EAST], action: [goto, LOC_MAZEEND8]},
     ]
     ]
-- LOC_DEADEND8:
+- LOC_MAZEEND8:
     description:
       long: 'Dead end'
       short: !!null
     description:
       long: 'Dead end'
       short: !!null
-    conditions: {DEEP: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [WEST, OUT], action: [goto, LOC_ALIKE11]},
     ]
     hints: [*maze]
     travel: [
       {verbs: [WEST, OUT], action: [goto, LOC_ALIKE11]},
     ]
-- LOC_DEADEND9:
+- LOC_MAZEEND9:
     description:
       long: 'Dead end'
       short: !!null
     description:
       long: 'Dead end'
       short: !!null
-    conditions: {DEEP: true, NOARRR: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOARRR: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [SOUTH, OUT], action: [goto, LOC_ALIKE3]},
     hints: [*maze]
     travel: [
       {verbs: [SOUTH, OUT], action: [goto, LOC_ALIKE3]},
@@ -1498,35 +1472,39 @@ locations: !!omap
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     travel: [
       {verbs: [SOUTH], action: [goto, LOC_PITBRINK]},
       {verbs: [EAST], action: [goto, LOC_ALIKE13]},
     travel: [
       {verbs: [SOUTH], action: [goto, LOC_PITBRINK]},
       {verbs: [EAST], action: [goto, LOC_ALIKE13]},
-      {verbs: [WEST], action: [goto, LOC_DEADEND10]},
+      {verbs: [WEST], action: [goto, LOC_MAZEEND10]},
     ]
 - LOC_ALIKE13:
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     ]
 - LOC_ALIKE13:
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     travel: [
       {verbs: [NORTH], action: [goto, LOC_PITBRINK]},
       {verbs: [WEST], action: [goto, LOC_ALIKE12]},
     travel: [
       {verbs: [NORTH], action: [goto, LOC_PITBRINK]},
       {verbs: [WEST], action: [goto, LOC_ALIKE12]},
-      {verbs: [NW], action: [goto, LOC_DEADEND12]},
+      {verbs: [NW], action: [goto, LOC_MAZEEND12]},
     ]
     ]
-- LOC_DEADEND10:
+- LOC_MAZEEND10:
     description:
       long: 'Dead end'
       short: !!null
     description:
       long: 'Dead end'
       short: !!null
-    conditions: {NOARRR: true, DEEP: true}
+      maptag: 'Maze all alike.'
+    conditions: {NOARRR: true, DEEP: true, ALLALIKE: true}
     travel: [
       {verbs: [EAST, OUT], action: [goto, LOC_ALIKE12]},
     ]
     travel: [
       {verbs: [EAST, OUT], action: [goto, LOC_ALIKE12]},
     ]
-- LOC_DEADEND11:
+- LOC_MAZEEND11:
     description:
       long: 'Dead end'
       short: !!null
     description:
       long: 'Dead end'
       short: !!null
-    conditions: {DEEP: true, NOARRR: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOARRR: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [UPWAR, OUT], action: [goto, LOC_ALIKE8]},
     hints: [*maze]
     travel: [
       {verbs: [UPWAR, OUT], action: [goto, LOC_ALIKE8]},
@@ -1535,10 +1513,11 @@ locations: !!omap
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all alike.'
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
     hints: [*maze]
     travel: [
-      {verbs: [UPWAR, D], action: [goto, LOC_ALIKE4]},
+      {verbs: [UPWAR, DOWN], action: [goto, LOC_ALIKE4]},
     ]
 - LOC_NARROW:
     description:
     ]
 - LOC_NARROW:
     description:
@@ -1547,6 +1526,7 @@ locations: !!omap
           west.  At the eastern end is a hole through which you can see a
           profusion of leaves.
       short: 'You''re in narrow corridor.'
           west.  At the eastern end is a hole through which you can see a
           profusion of leaves.
       short: 'You''re in narrow corridor.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [DOWN, CLIMB, EAST], action: [goto, LOC_WESTPIT]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [DOWN, CLIMB, EAST], action: [goto, LOC_WESTPIT]},
@@ -1557,6 +1537,7 @@ locations: !!omap
     description:
       long: 'There is nothing here to climb.  Use "up" or "out" to leave the pit.'
       short: !!null
     description:
       long: 'There is nothing here to climb.  Use "up" or "out" to leave the pit.'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_WESTPIT]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_WESTPIT]},
@@ -1565,6 +1546,7 @@ locations: !!omap
     description:
       long: 'You have climbed up the plant and out of the pit.'
       short: !!null
     description:
       long: 'You have climbed up the plant and out of the pit.'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_WESTEND]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_WESTEND]},
@@ -1576,6 +1558,7 @@ locations: !!omap
           climb down here, but you would not be able to climb up.  There is a
           passage leading back to the north.
       short: 'You''re at steep incline above large room.'
           climb down here, but you would not be able to climb up.  There is a
           passage leading back to the north.
       short: 'You''re at steep incline above large room.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [NORTH, CAVER, PASSA], action: [goto, LOC_WATERFALL]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [NORTH, CAVER, PASSA], action: [goto, LOC_WATERFALL]},
@@ -1588,6 +1571,7 @@ locations: !!omap
           lamp to show it.  Cavernous passages lead east, north, and south.  On
           the west wall is scrawled the inscription, "FEE FIE FOE FOO" [sic].
       short: 'You''re in Giant Room.'
           lamp to show it.  Cavernous passages lead east, north, and south.  On
           the west wall is scrawled the inscription, "FEE FIE FOE FOO" [sic].
       short: 'You''re in Giant Room.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH], action: [goto, LOC_NARROW]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH], action: [goto, LOC_NARROW]},
@@ -1598,6 +1582,7 @@ locations: !!omap
     description:
       long: 'The passage here is blocked by a recent cave-in.'
       short: !!null
     description:
       long: 'The passage here is blocked by a recent cave-in.'
       short: !!null
+      maptag: 'Cave-in blockage'
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH, GIANT, OUT], action: [goto, LOC_GIANTROOM]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH, GIANT, OUT], action: [goto, LOC_GIANTROOM]},
@@ -1606,6 +1591,7 @@ locations: !!omap
     description:
       long: 'You are at one end of an immense north/south passage.'
       short: !!null
     description:
       long: 'You are at one end of an immense north/south passage.'
       short: !!null
+      maptag: 'Immense passage end.'
     conditions: {DEEP: true}
     sound: WIND_WHISTLES
     travel: [
     conditions: {DEEP: true}
     sound: WIND_WHISTLES
     travel: [
@@ -1621,6 +1607,7 @@ locations: !!omap
           over a sparkling waterfall into a roaring whirlpool which disappears
           through a hole in the floor.  Passages exit to the south and west.
       short: 'You''re in cavern with waterfall.'
           over a sparkling waterfall into a roaring whirlpool which disappears
           through a hole in the floor.  Passages exit to the south and west.
       short: 'You''re in cavern with waterfall.'
+      maptag: !!null
     conditions: {FLUID: true, DEEP: true}
     sound: STREAM_SPLASHES
     travel: [
     conditions: {FLUID: true, DEEP: true}
     sound: STREAM_SPLASHES
     travel: [
@@ -1634,6 +1621,7 @@ locations: !!omap
           You are in the Soft Room.  The walls are covered with heavy curtains,
           the floor with a thick pile carpet.  Moss covers the ceiling.
       short: 'You''re in Soft Room.'
           You are in the Soft Room.  The walls are covered with heavy curtains,
           the floor with a thick pile carpet.  Moss covers the ceiling.
       short: 'You''re in Soft Room.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [WEST, OUT], action: [goto, LOC_SWISSCHEESE]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [WEST, OUT], action: [goto, LOC_SWISSCHEESE]},
@@ -1645,6 +1633,7 @@ locations: !!omap
           walls.  A gently sloping passage leads upward to the north, another
           passage leads se, and a hands and knees crawl leads west.
       short: 'You''re in Oriental Room.'
           walls.  A gently sloping passage leads upward to the north, another
           passage leads se, and a hands and knees crawl leads west.
       short: 'You''re in Oriental Room.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [SE], action: [goto, LOC_SWISSCHEESE]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [SE], action: [goto, LOC_SWISSCHEESE]},
@@ -1659,6 +1648,7 @@ locations: !!omap
           heard.  The mist rises up through a fissure in the ceiling.  The path
           exits to the south and west.
       short: 'You''re in misty cavern.'
           heard.  The mist rises up through a fissure in the ceiling.  The path
           exits to the south and west.
       short: 'You''re in misty cavern.'
+      maptag: !!null
     conditions: {DEEP: true}
     sound: NO_MEANING
     travel: [
     conditions: {DEEP: true}
     sound: NO_MEANING
     travel: [
@@ -1672,6 +1662,7 @@ locations: !!omap
           distance.  An extremely tight tunnel leads east.  It looks like a very
           tight squeeze.  An eerie light can be seen at the other end.
       short: 'You''re in alcove.'
           distance.  An extremely tight tunnel leads east.  It looks like a very
           tight squeeze.  An eerie light can be seen at the other end.
       short: 'You''re in alcove.'
+      maptag: !!null
     conditions: {DEEP: true}
     hints: [*dark]
     travel: [
     conditions: {DEEP: true}
     hints: [*dark]
     travel: [
@@ -1685,6 +1676,7 @@ locations: !!omap
           You're in a small chamber lit by an eerie green light.  An extremely
           narrow tunnel exits to the west.  A dark corridor leads ne.
       short: 'You''re in Plover Room.'
           You're in a small chamber lit by an eerie green light.  An extremely
           narrow tunnel exits to the west.  A dark corridor leads ne.
       short: 'You''re in Plover Room.'
+      maptag: !!null
     conditions: {DEEP: true, LIT: true}
     hints: [*dark]
     travel: [
     conditions: {DEEP: true, LIT: true}
     hints: [*dark]
     travel: [
@@ -1698,6 +1690,7 @@ locations: !!omap
     description:
       long: 'You''re in the dark-room.  A corridor leading south is the only exit.'
       short: 'You''re in dark-room.'
     description:
       long: 'You''re in the dark-room.  A corridor leading south is the only exit.'
       short: 'You''re in dark-room.'
+      maptag: !!null
     conditions: {DEEP: true}
     hints: [*dark]
     travel: [
     conditions: {DEEP: true}
     hints: [*dark]
     travel: [
@@ -1709,6 +1702,7 @@ locations: !!omap
           You are in an arched hall.  A coral passage once continued up and east
           from here, but is now blocked by debris.  The air smells of sea water.
       short: 'You''re in arched hall.'
           You are in an arched hall.  A coral passage once continued up and east
           from here, but is now blocked by debris.  The air smells of sea water.
       short: 'You''re in arched hall.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [DOWN, SHELL, OUT], action: [goto, LOC_SHELLROOM]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [DOWN, SHELL, OUT], action: [goto, LOC_SHELLROOM]},
@@ -1717,10 +1711,11 @@ locations: !!omap
     description:
       long: |-
           You're in a large room carved out of sedimentary rock.  The floor and
     description:
       long: |-
           You're in a large room carved out of sedimentary rock.  The floor and
-          walls are littered with bits of shells imbedded in the stone.  A
+          walls are littered with bits of shells embedded in the stone.  A
           shallow passage proceeds downward, and a somewhat steeper one leads
           up.  A low hands and knees passage enters from the south.
       short: 'You''re in Shell Room.'
           shallow passage proceeds downward, and a somewhat steeper one leads
           up.  A low hands and knees passage enters from the south.
       short: 'You''re in Shell Room.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [UPWAR, HALL], action: [goto, LOC_ARCHED]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [UPWAR, HALL], action: [goto, LOC_ARCHED]},
@@ -1735,6 +1730,7 @@ locations: !!omap
     description:
       long: 'You are in a long sloping corridor with ragged sharp walls.'
       short: !!null
     description:
       long: 'You are in a long sloping corridor with ragged sharp walls.'
       short: !!null
+      maptag: "Sloping corridor"
     conditions: {DEEP: true}
     travel: [
       {verbs: [UPWAR, SHELL], action: [goto, LOC_SHELLROOM]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [UPWAR, SHELL], action: [goto, LOC_SHELLROOM]},
@@ -1744,6 +1740,7 @@ locations: !!omap
     description:
       long: 'You are in a cul-de-sac about eight feet across.'
       short: !!null
     description:
       long: 'You are in a cul-de-sac about eight feet across.'
       short: !!null
+      maptag: 'Cul-de-sac.'
     conditions: {DEEP: true}
     travel: [
       {verbs: [UPWAR, OUT], action: [goto, LOC_SLOPING1]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [UPWAR, OUT], action: [goto, LOC_SLOPING1]},
@@ -1757,6 +1754,7 @@ locations: !!omap
           A sign in midair here says "Cave under construction beyond this point.
           Proceed at own risk.  [Witt Construction Company]"
       short: 'You''re in anteroom.'
           A sign in midair here says "Cave under construction beyond this point.
           Proceed at own risk.  [Witt Construction Company]"
       short: 'You''re in anteroom.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [UPWAR], action: [goto, LOC_COMPLEX]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [UPWAR], action: [goto, LOC_COMPLEX]},
@@ -1767,7 +1765,8 @@ locations: !!omap
     description:
       long: 'You are in a maze of twisty little passages, all different.'
       short: !!null
     description:
       long: 'You are in a maze of twisty little passages, all different.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all different'
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [SOUTH], action: [goto, LOC_DIFFERENT3]},
       {verbs: [SW], action: [goto, LOC_DIFFERENT4]},
     travel: [
       {verbs: [SOUTH], action: [goto, LOC_DIFFERENT3]},
       {verbs: [SW], action: [goto, LOC_DIFFERENT4]},
@@ -1784,10 +1783,11 @@ locations: !!omap
     description:
       long: 'You are at Witt''s End.  Passages lead off in *ALL* directions.'
       short: 'You''re at Witt''s End.'
     description:
       long: 'You are at Witt''s End.  Passages lead off in *ALL* directions.'
       short: 'You''re at Witt''s End.'
+      maptag: !!null
     conditions: {DEEP: true, NOBACK: true}
     hints: [*witt]
     travel: [
     conditions: {DEEP: true, NOBACK: true}
     hints: [*witt]
     travel: [
-      {verbs: [EAST, NORTH, SOUTH, NE, SE, SW, NW, UPWAR, D],
+      {verbs: [EAST, NORTH, SOUTH, NE, SE, SW, NW, UPWAR, DOWN],
               cond: [pct, 95], action: [speak, FUTILE_CRAWL]},
       {verbs: [EAST], action: [goto, LOC_ANTEROOM]},
       {verbs: [WEST], action: [speak, WAY_BLOCKED]},
               cond: [pct, 95], action: [speak, FUTILE_CRAWL]},
       {verbs: [EAST], action: [goto, LOC_ANTEROOM]},
       {verbs: [WEST], action: [speak, WAY_BLOCKED]},
@@ -1803,6 +1803,7 @@ locations: !!omap
           for the use of the dwarves who, as you know, are extremely vain.)  A
           small window can be seen in either wall, some fifty feet up.
       short: 'You''re in Mirror Canyon.'
           for the use of the dwarves who, as you know, are extremely vain.)  A
           small window can be seen in either wall, some fifty feet up.
       short: 'You''re in Mirror Canyon.'
+      maptag: !!null
     conditions: {DEEP: true}
     hints: [*jade]
     sound: WIND_WHISTLES
     conditions: {DEEP: true}
     hints: [*jade]
     sound: WIND_WHISTLES
@@ -1821,6 +1822,7 @@ locations: !!omap
           25 feet away there is a similar window looking into a lighted room.  A
           shadowy figure can be seen there peering back at you.
       short: 'You''re at window on pit.'
           25 feet away there is a similar window looking into a lighted room.  A
           shadowy figure can be seen there peering back at you.
       short: 'You''re at window on pit.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [WEST], action: [goto, LOC_THREEJUNCTION]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [WEST], action: [goto, LOC_THREEJUNCTION]},
@@ -1833,7 +1835,8 @@ locations: !!omap
           below.  You could climb down it, and jump from it to the floor, but
           having done so you would be unable to reach it to climb back up.
       short: 'You''re at top of stalactite.'
           below.  You could climb down it, and jump from it to the floor, but
           having done so you would be unable to reach it to climb back up.
       short: 'You''re at top of stalactite.'
-    conditions: {DEEP: true}
+      maptag: !!null
+    conditions: {DEEP: true, ALLALIKE: true}
     travel: [
       {verbs: [NORTH], action: [goto, LOC_SECRET2]},
       {verbs: [DOWN, JUMP, CLIMB], cond: [pct, 40],
     travel: [
       {verbs: [NORTH], action: [goto, LOC_SECRET2]},
       {verbs: [DOWN, JUMP, CLIMB], cond: [pct, 40],
@@ -1845,7 +1848,8 @@ locations: !!omap
     description:
       long: 'You are in a little maze of twisting passages, all different.'
       short: !!null
     description:
       long: 'You are in a little maze of twisting passages, all different.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all different'
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [SW], action: [goto, LOC_DIFFERENT3]},
       {verbs: [NORTH], action: [goto, LOC_DIFFERENT4]},
     travel: [
       {verbs: [SW], action: [goto, LOC_DIFFERENT3]},
       {verbs: [NORTH], action: [goto, LOC_DIFFERENT4]},
@@ -1867,6 +1871,7 @@ locations: !!omap
           overhead and splashes noisily into the water somewhere within the
           mist.  There is a passage going back toward the south.
       short: 'You''re at reservoir.'
           overhead and splashes noisily into the water somewhere within the
           mist.  There is a passage going back toward the south.
       short: 'You''re at reservoir.'
+      maptag: !!null
     conditions: {FLUID: true, DEEP: true}
     sound: STREAM_SPLASHES
     travel: [
     conditions: {FLUID: true, DEEP: true}
     sound: STREAM_SPLASHES
     travel: [
@@ -1874,11 +1879,12 @@ locations: !!omap
       {verbs: [NORTH, ACROS, CROSS], cond: [not, RESER, WATERS_PARTED], action: [speak, BAD_DIRECTION]},
       {verbs: [NORTH], action: [goto, LOC_RESBOTTOM]},
     ]
       {verbs: [NORTH, ACROS, CROSS], cond: [not, RESER, WATERS_PARTED], action: [speak, BAD_DIRECTION]},
       {verbs: [NORTH], action: [goto, LOC_RESBOTTOM]},
     ]
-- LOC_DEADEND12:
+- LOC_MAZEEND12:
     description:
       long: 'Dead end'
       short: !!null
     description:
       long: 'Dead end'
       short: !!null
-    conditions: {DEEP: true}
+      maptag: !!null
+    conditions: {DEEP: true, ALLALIKE: true}
     travel: [
       {verbs: [SE], action: [goto, LOC_ALIKE13]},
     ]
     travel: [
       {verbs: [SE], action: [goto, LOC_ALIKE13]},
     ]
@@ -1897,6 +1903,7 @@ locations: !!omap
           wall, and stretches to the other end of the room, where various other
           sundry objects can be glimpsed dimly in the distance.
       short: 'You''re at ne end.'
           wall, and stretches to the other end of the room, where various other
           sundry objects can be glimpsed dimly in the distance.
       short: 'You''re at ne end.'
+      maptag: 'Repository ne end'
     conditions: {DEEP: true, LIT: true}
     sound: MURMURING_SNORING
     travel: [
     conditions: {DEEP: true, LIT: true}
     sound: MURMURING_SNORING
     travel: [
@@ -1914,6 +1921,7 @@ locations: !!omap
           steel grate, next to which is a sign that reads, "Treasure Vault.
           Keys in main office."
       short: 'You''re at sw end.'
           steel grate, next to which is a sign that reads, "Treasure Vault.
           Keys in main office."
       short: 'You''re at sw end.'
+      maptag: 'Repository sw end'
     conditions: {DEEP: true, LIT: true}
     sound: SNAKES_HISSING
     travel: [
     conditions: {DEEP: true, LIT: true}
     sound: SNAKES_HISSING
     travel: [
@@ -1927,6 +1935,7 @@ locations: !!omap
           up from below obscures all view of the far side.  A sw path leads away
           from the chasm into a winding corridor.
       short: 'You''re on sw side of chasm.'
           up from below obscures all view of the far side.  A sw path leads away
           from the chasm into a winding corridor.
       short: 'You''re on sw side of chasm.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [SW], action: [goto, LOC_WINDING]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [SW], action: [goto, LOC_WINDING]},
@@ -1945,15 +1954,19 @@ locations: !!omap
           You are in a long winding corridor sloping out of sight in both
           directions.
       short: 'You''re in sloping corridor.'
           You are in a long winding corridor sloping out of sight in both
           directions.
       short: 'You''re in sloping corridor.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [DOWN], action: [goto, LOC_LOWROOM]},
       {verbs: [UPWAR], action: [goto, LOC_SWCHASM]},
     ]
     conditions: {DEEP: true}
     travel: [
       {verbs: [DOWN], action: [goto, LOC_LOWROOM]},
       {verbs: [UPWAR], action: [goto, LOC_SWCHASM]},
     ]
+  # Following three rooms are where the dragon lives.  The code has a
+  # wired-in assumption that the dragon corpse goes to LOC_SECRET5,
 - LOC_SECRET4:
     description:
       long: 'You are in a secret canyon which exits to the north and east.'
       short: !!null
 - LOC_SECRET4:
     description:
       long: 'You are in a secret canyon which exits to the north and east.'
       short: !!null
+      maptag: 'Secret canyon'
     conditions: {DEEP: true}
     travel: [
       {verbs: [NORTH, OUT], action: [goto, LOC_SECRET1]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [NORTH, OUT], action: [goto, LOC_SECRET1]},
@@ -1963,6 +1976,7 @@ locations: !!omap
     description:
       long: 'You are in a secret canyon which exits to the north and east.'
       short: !!null
     description:
       long: 'You are in a secret canyon which exits to the north and east.'
       short: !!null
+      maptag: 'Secret canyon'
     conditions: {DEEP: true}
     travel: [
       {verbs: [NORTH], action: [goto, LOC_SECRET1]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [NORTH], action: [goto, LOC_SECRET1]},
@@ -1972,6 +1986,7 @@ locations: !!omap
     description:
       long: 'You are in a secret canyon which exits to the north and east.'
       short: !!null
     description:
       long: 'You are in a secret canyon which exits to the north and east.'
       short: !!null
+      maptag: 'Secret canyon'
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST, OUT], action: [goto, LOC_SECRET3]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST, OUT], action: [goto, LOC_SECRET3]},
@@ -1983,6 +1998,7 @@ locations: !!omap
            You are on the far side of the chasm.  A ne path leads away from the
            chasm on this side.
       short: 'You''re on ne side of chasm.'
            You are on the far side of the chasm.  A ne path leads away from the
            chasm on this side.
       short: 'You''re on ne side of chasm.'
+      maptag: !!null
     conditions: {NOARRR: true, DEEP: true}
     travel: [
       {verbs: [NE], action: [goto, LOC_CORRIDOR]},
     conditions: {NOARRR: true, DEEP: true}
     travel: [
       {verbs: [NE], action: [goto, LOC_CORRIDOR]},
@@ -1999,6 +2015,7 @@ locations: !!omap
           You're in a long east/west corridor.  A faint rumbling noise can be
           heard in the distance.
       short: 'You''re in corridor.'
           You're in a long east/west corridor.  A faint rumbling noise can be
           heard in the distance.
       short: 'You''re in corridor.'
+      maptag: 'e/w canyon'
     conditions: {NOARRR: true, DEEP: true}
     sound: DULL_RUMBLING
     travel: [
     conditions: {NOARRR: true, DEEP: true}
     sound: DULL_RUMBLING
     travel: [
@@ -2014,12 +2031,13 @@ locations: !!omap
           seems to get louder in that direction.  The right fork leads southeast
           down a gentle slope.  The main corridor enters from the west.
       short: 'You''re at fork in path.'
           seems to get louder in that direction.  The right fork leads southeast
           down a gentle slope.  The main corridor enters from the west.
       short: 'You''re at fork in path.'
+      maptag: !!null
     conditions: {NOARRR: true, DEEP: true}
     sound: DULL_RUMBLING
     travel: [
       {verbs: [WEST], action: [goto, LOC_CORRIDOR]},
       {verbs: [NE, LEFT], action: [goto, LOC_WARMWALLS]},
     conditions: {NOARRR: true, DEEP: true}
     sound: DULL_RUMBLING
     travel: [
       {verbs: [WEST], action: [goto, LOC_CORRIDOR]},
       {verbs: [NE, LEFT], action: [goto, LOC_WARMWALLS]},
-      {verbs: [SE, RIGHT, D], action: [goto, LOC_LIMESTONE]},
+      {verbs: [SE, RIGHT, DOWN], action: [goto, LOC_LIMESTONE]},
       {verbs: [VIEW], action: [goto, LOC_BREATHTAKING]},
       {verbs: [BARRE], action: [goto, LOC_BARRENFRONT]},
     ]
       {verbs: [VIEW], action: [goto, LOC_BREATHTAKING]},
       {verbs: [BARRE], action: [goto, LOC_BARRENFRONT]},
     ]
@@ -2030,6 +2048,7 @@ locations: !!omap
           roar, so loud that the entire cave seems to be trembling.  Another
           passage leads south, and a low crawl goes east.
       short: 'You''re at junction with warm walls.'
           roar, so loud that the entire cave seems to be trembling.  Another
           passage leads south, and a low crawl goes east.
       short: 'You''re at junction with warm walls.'
+      maptag: "Warm junction"
     conditions: {NOARRR: true, DEEP: true}
     sound: LOUD_ROAR
     travel: [
     conditions: {NOARRR: true, DEEP: true}
     sound: LOUD_ROAR
     travel: [
@@ -2060,6 +2079,7 @@ locations: !!omap
           own, which lends an additional infernal splendor to the already
           hellish scene.  A dark, foreboding passage exits to the south.
       short: 'You''re at breath-taking view.'
           own, which lends an additional infernal splendor to the already
           hellish scene.  A dark, foreboding passage exits to the south.
       short: 'You''re at breath-taking view.'
+      maptag: !!null
     conditions: {NOARRR: true, LIT: true, DEEP: true}
     hints: [*jade]
     sound: TOTAL_ROAR
     conditions: {NOARRR: true, LIT: true, DEEP: true}
     hints: [*jade]
     sound: TOTAL_ROAR
@@ -2078,6 +2098,7 @@ locations: !!omap
           heat.  The only exit is a crawl heading west, through which is coming
           a low rumbling.
       short: 'You''re in Chamber of Boulders.'
           heat.  The only exit is a crawl heading west, through which is coming
           a low rumbling.
       short: 'You''re in Chamber of Boulders.'
+      maptag: !!null
     conditions: {NOARRR: true, DEEP: true}
     sound: DULL_RUMBLING
     travel: [
     conditions: {NOARRR: true, DEEP: true}
     sound: DULL_RUMBLING
     travel: [
@@ -2087,10 +2108,11 @@ locations: !!omap
     ]
 - LOC_LIMESTONE:
     description:
     ]
 - LOC_LIMESTONE:
     description:
-      long:
+      long: |-
           You are walking along a gently sloping north/south passage lined with
           oddly shaped limestone formations.
       short: 'You''re in limestone passage.'
           You are walking along a gently sloping north/south passage lined with
           oddly shaped limestone formations.
       short: 'You''re in limestone passage.'
+      maptag: !!null
     conditions: {NOARRR: true, DEEP: true}
     travel: [
       {verbs: [NORTH, UPWAR, FORK], action: [goto, LOC_FORK]},
     conditions: {NOARRR: true, DEEP: true}
     travel: [
       {verbs: [NORTH, UPWAR, FORK], action: [goto, LOC_FORK]},
@@ -2103,6 +2125,7 @@ locations: !!omap
           You are standing at the entrance to a large, barren room.  A notice
           above the entrance reads:  "Caution!  Bear in room!"
       short: 'You''re in front of Barren Room.'
           You are standing at the entrance to a large, barren room.  A notice
           above the entrance reads:  "Caution!  Bear in room!"
       short: 'You''re in front of Barren Room.'
+      maptag: !!null
     conditions: {NOARRR: true, DEEP: true}
     travel: [
       {verbs: [WEST, UPWAR], action: [goto, LOC_LIMESTONE]},
     conditions: {NOARRR: true, DEEP: true}
     travel: [
       {verbs: [WEST, UPWAR], action: [goto, LOC_LIMESTONE]},
@@ -2117,6 +2140,7 @@ locations: !!omap
           empty except for some dust.  Marks in the dust lead away toward the
           far end of the room.  The only exit is the way you came in.
       short: 'You''re in Barren Room.'
           empty except for some dust.  Marks in the dust lead away toward the
           far end of the room.  The only exit is the way you came in.
       short: 'You''re in Barren Room.'
+      maptag: !!null
     conditions: {NOARRR: true, DEEP: true}
     travel: [
       {verbs: [WEST, OUT], action: [goto, LOC_BARRENFRONT]},
     conditions: {NOARRR: true, DEEP: true}
     travel: [
       {verbs: [WEST, OUT], action: [goto, LOC_BARRENFRONT]},
@@ -2127,7 +2151,8 @@ locations: !!omap
     description:
       long: 'You are in a maze of twisting little passages, all different.'
       short: !!null
     description:
       long: 'You are in a maze of twisting little passages, all different.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all different.'
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [WEST], action: [goto, LOC_DIFFERENT1]},
       {verbs: [SE], action: [goto, LOC_DIFFERENT4]},
     travel: [
       {verbs: [WEST], action: [goto, LOC_DIFFERENT1]},
       {verbs: [SE], action: [goto, LOC_DIFFERENT4]},
@@ -2144,7 +2169,8 @@ locations: !!omap
     description:
       long: 'You are in a little maze of twisty passages, all different.'
       short: !!null
     description:
       long: 'You are in a little maze of twisty passages, all different.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all different.'
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [NW], action: [goto, LOC_DIFFERENT1]},
       {verbs: [UPWAR], action: [goto, LOC_DIFFERENT3]},
     travel: [
       {verbs: [NW], action: [goto, LOC_DIFFERENT1]},
       {verbs: [UPWAR], action: [goto, LOC_DIFFERENT3]},
@@ -2161,7 +2187,8 @@ locations: !!omap
     description:
       long: 'You are in a twisting maze of little passages, all different.'
       short: !!null
     description:
       long: 'You are in a twisting maze of little passages, all different.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all different.'
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [UPWAR], action: [goto, LOC_DIFFERENT1]},
       {verbs: [DOWN], action: [goto, LOC_DIFFERENT3]},
     travel: [
       {verbs: [UPWAR], action: [goto, LOC_DIFFERENT1]},
       {verbs: [DOWN], action: [goto, LOC_DIFFERENT3]},
@@ -2178,7 +2205,8 @@ locations: !!omap
     description:
       long: 'You are in a twisting little maze of passages, all different.'
       short: !!null
     description:
       long: 'You are in a twisting little maze of passages, all different.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all different.'
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [NE], action: [goto, LOC_DIFFERENT1]},
       {verbs: [NORTH], action: [goto, LOC_DIFFERENT3]},
     travel: [
       {verbs: [NE], action: [goto, LOC_DIFFERENT1]},
       {verbs: [NORTH], action: [goto, LOC_DIFFERENT3]},
@@ -2195,7 +2223,8 @@ locations: !!omap
     description:
       long: 'You are in a twisty little maze of passages, all different.'
       short: !!null
     description:
       long: 'You are in a twisty little maze of passages, all different.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all different.'
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [NORTH], action: [goto, LOC_DIFFERENT1]},
       {verbs: [SE], action: [goto, LOC_DIFFERENT3]},
     travel: [
       {verbs: [NORTH], action: [goto, LOC_DIFFERENT1]},
       {verbs: [SE], action: [goto, LOC_DIFFERENT3]},
@@ -2212,7 +2241,8 @@ locations: !!omap
     description:
       long: 'You are in a twisty maze of little passages, all different.'
       short: !!null
     description:
       long: 'You are in a twisty maze of little passages, all different.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all different.'
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [EAST], action: [goto, LOC_DIFFERENT1]},
       {verbs: [WEST], action: [goto, LOC_DIFFERENT3]},
     travel: [
       {verbs: [EAST], action: [goto, LOC_DIFFERENT1]},
       {verbs: [WEST], action: [goto, LOC_DIFFERENT3]},
@@ -2229,7 +2259,8 @@ locations: !!omap
     description:
       long: 'You are in a little twisty maze of passages, all different.'
       short: !!null
     description:
       long: 'You are in a little twisty maze of passages, all different.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all different.'
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [SE], action: [goto, LOC_DIFFERENT1]},
       {verbs: [NE], action: [goto, LOC_DIFFERENT3]},
     travel: [
       {verbs: [SE], action: [goto, LOC_DIFFERENT1]},
       {verbs: [NE], action: [goto, LOC_DIFFERENT3]},
@@ -2246,7 +2277,8 @@ locations: !!omap
     description:
       long: 'You are in a maze of little twisting passages, all different.'
       short: !!null
     description:
       long: 'You are in a maze of little twisting passages, all different.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all different.'
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [DOWN], action: [goto, LOC_DIFFERENT1]},
       {verbs: [EAST], action: [goto, LOC_DIFFERENT3]},
     travel: [
       {verbs: [DOWN], action: [goto, LOC_DIFFERENT1]},
       {verbs: [EAST], action: [goto, LOC_DIFFERENT3]},
@@ -2263,7 +2295,8 @@ locations: !!omap
     description:
       long: 'You are in a maze of little twisty passages, all different.'
       short: !!null
     description:
       long: 'You are in a maze of little twisty passages, all different.'
       short: !!null
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: 'Maze all different.'
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [SW], action: [goto, LOC_DIFFERENT1]},
       {verbs: [NW], action: [goto, LOC_DIFFERENT3]},
     travel: [
       {verbs: [SW], action: [goto, LOC_DIFFERENT1]},
       {verbs: [NW], action: [goto, LOC_DIFFERENT3]},
@@ -2280,7 +2313,8 @@ locations: !!omap
     description:
       long: 'Dead end'
       short: !!null
     description:
       long: 'Dead end'
       short: !!null
-    conditions: {DEEP: true}
+      maptag: !!null
+    conditions: {DEEP: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [NORTH, OUT], action: [goto, LOC_DIFFERENT2]},
       {verbs: [SOUTH], cond: [not, VEND, VEND_BLOCKS], action: [goto, LOC_ROUGHHEWN]},
     travel: [
       {verbs: [NORTH, OUT], action: [goto, LOC_DIFFERENT2]},
       {verbs: [SOUTH], cond: [not, VEND, VEND_BLOCKS], action: [goto, LOC_ROUGHHEWN]},
@@ -2290,6 +2324,7 @@ locations: !!omap
     description:
       long: 'You are in a long, rough-hewn, north/south corridor.'
       short: !!null
     description:
       long: 'You are in a long, rough-hewn, north/south corridor.'
       short: !!null
+      maptag: 'Rough-hewn corridor'
     conditions: {DEEP: true}
     travel: [
       {verbs: [NORTH], action: [goto, LOC_DEADEND13]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [NORTH], action: [goto, LOC_DEADEND13]},
@@ -2299,6 +2334,7 @@ locations: !!omap
     description:
       long: 'There is no way to go that direction.'
       short: !!null
     description:
       long: 'There is no way to go that direction.'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_DEADEND13]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_DEADEND13]},
@@ -2307,6 +2343,7 @@ locations: !!omap
     description:
       long: 'You are in a large chamber with passages to the west and north.'
       short: !!null
     description:
       long: 'You are in a large chamber with passages to the west and north.'
       short: !!null
+      maptag: 'Large chamber.'
     conditions: {DEEP: true}
     hints: [*ogre]
     travel: [
     conditions: {DEEP: true}
     hints: [*ogre]
     travel: [
@@ -2318,6 +2355,7 @@ locations: !!omap
     description:
       long: 'You are in the ogre''s storeroom.  The only exit is to the south.'
       short: !!null
     description:
       long: 'You are in the ogre''s storeroom.  The only exit is to the south.'
       short: !!null
+      maptag: 'Ogre''s storeroom.'
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH, OUT], action: [goto, LOC_LARGE]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH, OUT], action: [goto, LOC_LARGE]},
@@ -2326,6 +2364,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2338,6 +2377,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2350,6 +2390,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2361,6 +2402,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2371,6 +2413,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2382,6 +2425,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2394,6 +2438,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2406,6 +2451,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2418,6 +2464,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2430,6 +2477,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2442,6 +2490,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2454,6 +2503,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2466,6 +2516,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2478,6 +2529,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2490,6 +2542,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2502,6 +2555,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2513,6 +2567,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2524,6 +2579,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2536,6 +2592,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2548,6 +2605,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2560,6 +2618,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2572,6 +2631,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2587,6 +2647,7 @@ locations: !!omap
           paths away from the ledge.  Across the chasm is a small clearing
           surrounded by forest.
       short: 'You''re on ledge.'
           paths away from the ledge.  Across the chasm is a small clearing
           surrounded by forest.
       short: 'You''re on ledge.'
+      maptag: !!null
     conditions: {ABOVE: true, LIT: true}
     travel: [
       {verbs: [JUMP], action: [goto, LOC_NOMAKE]},
     conditions: {ABOVE: true, LIT: true}
     travel: [
       {verbs: [JUMP], action: [goto, LOC_NOMAKE]},
@@ -2598,6 +2659,7 @@ locations: !!omap
           rear up on either side.  The roar of the water cascading past is
           nearly deafening, and the mist is so thick you can barely see.
       short: 'You''re at bottom of reservoir.'
           rear up on either side.  The roar of the water cascading past is
           nearly deafening, and the mist is so thick you can barely see.
       short: 'You''re at bottom of reservoir.'
+      maptag: !!null
     conditions: {FLUID: true, DEEP: true}
     sound: TOTAL_ROAR
     loud: true
     conditions: {FLUID: true, DEEP: true}
     sound: TOTAL_ROAR
     loud: true
@@ -2611,6 +2673,7 @@ locations: !!omap
           You are at the northern edge of the reservoir.  A northwest passage
           leads sharply up from here.
       short: 'You''re north of reservoir.'
           You are at the northern edge of the reservoir.  A northwest passage
           leads sharply up from here.
       short: 'You''re north of reservoir.'
+      maptag: !!null
     conditions: {FLUID: true, DEEP: true}
     sound: WATERS_CRASHING
     travel: [
     conditions: {FLUID: true, DEEP: true}
     sound: WATERS_CRASHING
     travel: [
@@ -2623,6 +2686,7 @@ locations: !!omap
     description:
       long: 'You are scrambling along a treacherously steep, rocky passage.'
       short: !!null
     description:
       long: 'You are scrambling along a treacherously steep, rocky passage.'
       short: !!null
+      maptag: 'Rocky passage.'
     conditions: {DEEP: true}
     travel: [
       {verbs: [UPWAR, NW], action: [goto, LOC_STEEP]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [UPWAR, NW], action: [goto, LOC_STEEP]},
@@ -2632,6 +2696,7 @@ locations: !!omap
     description:
       long: 'You are on a very steep incline, which widens at it goes upward.'
       short: !!null
     description:
       long: 'You are on a very steep incline, which widens at it goes upward.'
       short: !!null
+      maptag: 'Steep incline'
     conditions: {DEEP: true}
     travel: [
       {verbs: [DOWN, SE], action: [goto, LOC_TREACHEROUS]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [DOWN, SE], action: [goto, LOC_TREACHEROUS]},
@@ -2645,6 +2710,7 @@ locations: !!omap
           extremely dangerous.  Here at the base of the cliff lie the remains
           of several earlier adventurers who apparently failed to make it.
       short: 'You''re at base of cliff.'
           extremely dangerous.  Here at the base of the cliff lie the remains
           of several earlier adventurers who apparently failed to make it.
       short: 'You''re at base of cliff.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [DOWN, SE], action: [goto, LOC_STEEP]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [DOWN, SE], action: [goto, LOC_STEEP]},
@@ -2654,10 +2720,11 @@ locations: !!omap
     description:
       long: 'You are climbing along a nearly vertical cliff.'
       short: !!null
     description:
       long: 'You are climbing along a nearly vertical cliff.'
       short: !!null
+      maptag: 'Vertical cliff.'
     conditions: {DEEP: true}
     travel: [
       {verbs: [DOWN], action: [goto, LOC_CLIFFBASE]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [DOWN], action: [goto, LOC_CLIFFBASE]},
-      {verbs: [UPWAR], cond: [carry, OBJ_46], action: [goto, LOC_CLIFFTOP]},
+      {verbs: [UPWAR], cond: [carry, RABBITFOOT], action: [goto, LOC_CLIFFTOP]},
       {verbs: [UPWAR], action: [goto, LOC_FOOTSLIP]},
     ]
 - LOC_FOOTSLIP:
       {verbs: [UPWAR], action: [goto, LOC_FOOTSLIP]},
     ]
 - LOC_FOOTSLIP:
@@ -2666,6 +2733,7 @@ locations: !!omap
           Just as you reach the top, your foot slips on a loose rock and you
           tumble several hundred feet to join the other unlucky adventurers.
       short: !!null
           Just as you reach the top, your foot slips on a loose rock and you
           tumble several hundred feet to join the other unlucky adventurers.
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_NOWHERE]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_NOWHERE]},
@@ -2677,6 +2745,7 @@ locations: !!omap
           make one last desperate grab.  Your luck holds, as does your grip.
           With an enormous heave, you lift yourself to the ledge above.
       short: !!null
           make one last desperate grab.  Your luck holds, as does your grip.
           With an enormous heave, you lift yourself to the ledge above.
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_CLIFFLEDGE]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_CLIFFLEDGE]},
@@ -2687,15 +2756,17 @@ locations: !!omap
           You are on a small ledge at the top of a nearly vertical cliff.
           There is a low crawl leading off to the northeast.
       short: 'You''re at top of cliff.'
           You are on a small ledge at the top of a nearly vertical cliff.
           There is a low crawl leading off to the northeast.
       short: 'You''re at top of cliff.'
+      maptag: 'Clifftop'
     conditions: {DEEP: true}
     travel: [
     conditions: {DEEP: true}
     travel: [
-      {verbs: [CLIMB, D], action: [goto, LOC_CLIFFACE]},
+      {verbs: [CLIMB, DOWN], action: [goto, LOC_CLIFFACE]},
       {verbs: [NE, CRAWL], action: [goto, LOC_REACHDEAD]},
     ]
 - LOC_REACHDEAD:
     description:
       long: 'You have reached a dead end.'
       short: !!null
       {verbs: [NE, CRAWL], action: [goto, LOC_REACHDEAD]},
     ]
 - LOC_REACHDEAD:
     description:
       long: 'You have reached a dead end.'
       short: !!null
+      maptag: 'Dead end.'
     conditions: {DEEP: true}
     travel: [
       {verbs: [SW, OUT, CRAWL], action: [goto, LOC_CLIFFLEDGE]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [SW, OUT, CRAWL], action: [goto, LOC_CLIFFLEDGE]},
@@ -2704,6 +2775,7 @@ locations: !!omap
     description:
       long: 'There is now one more gruesome aspect to the spectacular vista.'
       short: !!null
     description:
       long: 'There is now one more gruesome aspect to the spectacular vista.'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_NOWHERE]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_NOWHERE]},
@@ -2712,6 +2784,7 @@ locations: !!omap
     description:
       long: '>>Foof!<<'
       short: !!null
     description:
       long: '>>Foof!<<'
       short: !!null
+      maptag: !!null
     conditions: {}
     travel: [
       {verbs: [], action: [goto, LOC_DEBRIS]},
     conditions: {}
     travel: [
       {verbs: [], action: [goto, LOC_DEBRIS]},
@@ -2720,6 +2793,7 @@ locations: !!omap
     description:
       long: '>>Foof!<<'
       short: !!null
     description:
       long: '>>Foof!<<'
       short: !!null
+      maptag: !!null
     conditions: {ABOVE: true}
     travel: [
       {verbs: [], action: [goto, LOC_BUILDING]},
     conditions: {ABOVE: true}
     travel: [
       {verbs: [], action: [goto, LOC_BUILDING]},
@@ -2728,6 +2802,7 @@ locations: !!omap
     description:
       long: '>>Foof!<<'
       short: !!null
     description:
       long: '>>Foof!<<'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_Y2]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_Y2]},
@@ -2736,6 +2811,7 @@ locations: !!omap
     description:
       long: '>>Foof!<<'
       short: !!null
     description:
       long: '>>Foof!<<'
       short: !!null
+      maptag: !!null
     conditions: {ABOVE: true}
     travel: [
       {verbs: [], action: [goto, LOC_BUILDING]},
     conditions: {ABOVE: true}
     travel: [
       {verbs: [], action: [goto, LOC_BUILDING]},
@@ -2744,6 +2820,7 @@ locations: !!omap
     description:
       long: '>>Foof!<<'
       short: !!null
     description:
       long: '>>Foof!<<'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_PLOVER]},
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_PLOVER]},
@@ -2752,11 +2829,24 @@ locations: !!omap
     description:
       long: '>>Foof!<<'
       short: !!null
     description:
       long: '>>Foof!<<'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_Y2]},
     ]
 
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_Y2]},
     ]
 
+# Starting locations of dwarves.
+# Sixth dwarf is special (the pirate).  He always starts at his
+# chest's eventual location inside the maze.
+dwarflocs: [
+    LOC_KINGHALL,
+    LOC_WESTBANK,
+    LOC_Y2,
+    LOC_ALIKE3,
+    LOC_COMPLEX,
+    LOC_MAZEEND12,
+]
+
 arbitrary_messages:  !!omap
 - NO_MESSAGE: !!null
 - CAVE_NEARBY: |-
 arbitrary_messages:  !!omap
 - NO_MESSAGE: !!null
 - CAVE_NEARBY: |-
@@ -2786,7 +2876,7 @@ arbitrary_messages:  !!omap
     I don't know in from out here.  Use compass points or name something
     in the general direction you want to go.
 - CANT_APPLY: 'I don''t know how to apply that word here.'
     I don't know in from out here.  Use compass points or name something
     in the general direction you want to go.
 - CANT_APPLY: 'I don''t know how to apply that word here.'
-- AM_GAME: 'I''m game.  Would you care to explain how?'
+- AM_GAME: &am_game 'I''m game.  Would you care to explain how?'
 - NO_MORE_DETAIL: |-
       Sorry, but I am not allowed to give more detail.  I will repeat the
       long description of your location.
 - NO_MORE_DETAIL: |-
       Sorry, but I am not allowed to give more detail.  I will repeat the
       long description of your location.
@@ -2794,27 +2884,27 @@ arbitrary_messages:  !!omap
 - W_IS_WEST: 'If you prefer, simply type w rather than west.'
 - REALLY_QUIT: 'Do you really want to quit now?'
 - PIT_FALL: 'You fell into a pit and broke every bone in your body!'
 - W_IS_WEST: 'If you prefer, simply type w rather than west.'
 - REALLY_QUIT: 'Do you really want to quit now?'
 - PIT_FALL: 'You fell into a pit and broke every bone in your body!'
-- ALREADY_CARRYING: 'You are already carrying it!'
+- ALREADY_CARRYING: &already_carrying 'You are already carrying it!'
 - YOU_JOKING: 'You can''t be serious!'
 - BIRD_EVADES: |-
     The bird seemed unafraid at first, but as you approach it becomes
     disturbed and you cannot catch it.
 - CANNOT_CARRY: 'You can catch the bird, but you cannot carry it.'
 - NOTHING_LOCKED: 'There is nothing here with a lock!'
 - YOU_JOKING: 'You can''t be serious!'
 - BIRD_EVADES: |-
     The bird seemed unafraid at first, but as you approach it becomes
     disturbed and you cannot catch it.
 - CANNOT_CARRY: 'You can catch the bird, but you cannot carry it.'
 - NOTHING_LOCKED: 'There is nothing here with a lock!'
-- ARENT_CARRYING: 'You aren''t carrying it!'
+- ARENT_CARRYING: &arent_carrying 'You aren''t carrying it!'
 - BIRD_ATTACKS: |-
     The little bird attacks the green snake, and in an astounding flurry
     drives the snake away.
 - NO_KEYS: 'You have no keys!'
 - NO_LOCK: 'It has no lock.'
 - BIRD_ATTACKS: |-
     The little bird attacks the green snake, and in an astounding flurry
     drives the snake away.
 - NO_KEYS: 'You have no keys!'
 - NO_LOCK: 'It has no lock.'
-- NOT_LOCKABLE: 'I don''t know how to lock or unlock such a thing.'
+- NOT_LOCKABLE: &not_lockable 'I don''t know how to lock or unlock such a thing.'
 - ALREADY_LOCKED: 'It was already locked.'
 - ALREADY_UNLOCKED: 'It was already unlocked.'
 - BEAR_BLOCKS: |-
     There is no way to get past the bear to unlock the chain, which is
     probably just as well.
 - ALREADY_LOCKED: 'It was already locked.'
 - ALREADY_UNLOCKED: 'It was already unlocked.'
 - BEAR_BLOCKS: |-
     There is no way to get past the bear to unlock the chain, which is
     probably just as well.
-- NOTHING_HAPPENS: 'Nothing happens.'
-- WHERE_QUERY: 'Where?'
+- NOTHING_HAPPENS: &nothing_happens 'Nothing happens.'
+- WHERE_QUERY: &where_query 'Where?'
 - NO_TARGET: 'There is nothing here to attack.'
 - BIRD_DEAD: 'The little bird is now dead.  Its body disappears.'
 - SNAKE_WARNING: 'Attacking the snake both doesn''t work and is very dangerous.'
 - NO_TARGET: 'There is nothing here to attack.'
 - BIRD_DEAD: 'The little bird is now dead.  Its body disappears.'
 - SNAKE_WARNING: 'Attacking the snake both doesn''t work and is very dangerous.'
@@ -2832,23 +2922,16 @@ arbitrary_messages:  !!omap
       I don't know where the cave is, but hereabouts no stream can run on
       the surface for long.  I would try the stream.
 - NEED_DETAIL: 'I need more detailed instructions to do that.'
       I don't know where the cave is, but hereabouts no stream can run on
       the surface for long.  I would try the stream.
 - NEED_DETAIL: 'I need more detailed instructions to do that.'
-- NEARBY: |-
+- NEARBY: &nearby |-
       I can only tell you what you see as you move about and manipulate
       things.  I cannot tell you where remote things are.
 - OGRE_SNARL: 'The ogre snarls and shoves you back.'
       I can only tell you what you see as you move about and manipulate
       things.  I cannot tell you where remote things are.
 - OGRE_SNARL: 'The ogre snarls and shoves you back.'
-- HUH_MAN: 'Huh?'
+- HUH_MAN: &huh_man 'Huh?'
 - WELCOME_YOU: 'Welcome to Adventure!!  Would you like instructions?'
 - WELCOME_YOU: 'Welcome to Adventure!!  Would you like instructions?'
-- REQUIRES_DYNAMITE: 'Blasting requires dynamite.'
+- REQUIRES_DYNAMITE: &requires_dynamite 'Blasting requires dynamite.'
 - FEET_WET: 'Your feet are now wet.'
 - LOST_APPETITE: 'I think I just lost my appetite.'
 - THANKS_DELICIOUS: 'Thank you, it was delicious!'
 - FEET_WET: 'Your feet are now wet.'
 - LOST_APPETITE: 'I think I just lost my appetite.'
 - THANKS_DELICIOUS: 'Thank you, it was delicious!'
-- STREAM_WATER: |-
-    You have taken a drink from the stream.  The water tastes strongly of
-    minerals, but is not unpleasant.  It is extremely cold.
-- BOTTLE_EMPTY: 'The bottle of water is now empty.'
-- RUB_NOGO: |-
-    Rubbing the electric lamp is not particularly rewarding.  Anyway,
-    nothing exciting happens.
 - PECULIAR_NOTHING: 'Peculiar.  Nothing unexpected happens.'
 - GROUND_WET: 'Your bottle is empty and the ground is wet.'
 - CANT_POUR: 'You can''t pour that.'
 - PECULIAR_NOTHING: 'Peculiar.  Nothing unexpected happens.'
 - GROUND_WET: 'Your bottle is empty and the ground is wet.'
 - CANT_POUR: 'You can''t pour that.'
@@ -2871,10 +2954,7 @@ arbitrary_messages:  !!omap
 - NO_CONTAINER: 'You have nothing in which to carry it.'
 - BOTTLE_FULL: 'Your bottle is already full.'
 - NO_LIQUID: 'There is nothing here with which to fill the bottle.'
 - NO_CONTAINER: 'You have nothing in which to carry it.'
 - BOTTLE_FULL: 'Your bottle is already full.'
 - NO_LIQUID: 'There is nothing here with which to fill the bottle.'
-- BOTTLED_WATER: 'Your bottle is now full of water.'
-- BOTTLED_OIL: 'Your bottle is now full of oil.'
-- CANT_FILL: 'You can''t fill that.'
-- RIDICULOUS_ATTEMPT: 'Don''t be ridiculous!'
+- RIDICULOUS_ATTEMPT: &ridiculous_attempt 'Don''t be ridiculous!'
 - RUSTY_DOOR: 'The door is extremely rusty and refuses to open.'
 - SHAKING_LEAVES: 'The plant indignantly shakes the oil off its leaves and asks, "Water?"'
 - DEEP_ROOTS: 'The plant has exceptionally deep roots and cannot be pulled free.'
 - RUSTY_DOOR: 'The door is extremely rusty and refuses to open.'
 - SHAKING_LEAVES: 'The plant indignantly shakes the oil off its leaves and asks, "Water?"'
 - DEEP_ROOTS: 'The plant has exceptionally deep roots and cannot be pulled free.'
@@ -2940,7 +3020,7 @@ arbitrary_messages:  !!omap
 - WITHOUT_SUSPENDS: 'Now let''s see you do it without suspending in mid-Adventure.'
 - FILL_INVALID: 'There is nothing here with which to fill it.'
 - SHATTER_VASE: 'The sudden change in temperature has delicately shattered the vase.'
 - WITHOUT_SUSPENDS: 'Now let''s see you do it without suspending in mid-Adventure.'
 - FILL_INVALID: 'There is nothing here with which to fill it.'
 - SHATTER_VASE: 'The sudden change in temperature has delicately shattered the vase.'
-- BEYOND_POWER: 'It is beyond your power to do that.'
+- BEYOND_POWER: &beyond_power 'It is beyond your power to do that.'
 - NOT_KNOWHOW: &not_knowhow 'I don''t know how.'
 - TOO_FAR: 'It is too far up for you to reach.'
 - DWARF_SMOKE: |-
 - NOT_KNOWHOW: &not_knowhow 'I don''t know how.'
 - TOO_FAR: 'It is too far up for you to reach.'
 - DWARF_SMOKE: |-
@@ -2948,12 +3028,12 @@ arbitrary_messages:  !!omap
       black smoke.
 - SHELL_IMPERVIOUS: 'The shell is very strong and is impervious to attack.'
 - START_OVER: 'What''s the matter, can''t you read?  Now you''d best start over.'
       black smoke.
 - SHELL_IMPERVIOUS: 'The shell is very strong and is impervious to attack.'
 - START_OVER: 'What''s the matter, can''t you read?  Now you''d best start over.'
+- WELL_POINTLESS: 'Well, that was remarkably pointless!'
 - DRAGON_SCALES: 'The axe bounces harmlessly off the dragon''s thick scales.'
 - NASTY_DRAGON: 'The dragon looks rather nasty.  You''d best not try to get by.'
 - BIRD_BURNT: |-
     The little bird attacks the green dragon, and in an astounding flurry
     gets burnt to a cinder.  The ashes blow away.
 - DRAGON_SCALES: 'The axe bounces harmlessly off the dragon''s thick scales.'
 - NASTY_DRAGON: 'The dragon looks rather nasty.  You''d best not try to get by.'
 - BIRD_BURNT: |-
     The little bird attacks the green dragon, and in an astounding flurry
     gets burnt to a cinder.  The ashes blow away.
-- ON_WHAT: 'On what?'
 - BRIEF_CONFIRM: |-
     Okay, from now on I'll only describe a place in full the first time
     you come to it.  To get the full description, say "look".
 - BRIEF_CONFIRM: |-
     Okay, from now on I'll only describe a place in full the first time
     you come to it.  To get the full description, say "look".
@@ -2966,26 +3046,14 @@ arbitrary_messages:  !!omap
 - TROLL_SATISFIED: 'The troll catches your treasure and scurries away out of sight.'
 - TROLL_BLOCKS: 'The troll refuses to let you cross.'
 - BRIDGE_GONE: 'There is no longer any way across the chasm.'
 - TROLL_SATISFIED: 'The troll catches your treasure and scurries away out of sight.'
 - TROLL_BLOCKS: 'The troll refuses to let you cross.'
 - BRIDGE_GONE: 'There is no longer any way across the chasm.'
-- BRIDGE_COLLAPSE: |-
-    Just as you reach the other side, the bridge buckles beneath the
-    weight of the bear, which was still following you around.  You
-    scrabble desperately for support, but as the bridge collapses you
-    stumble back and fall into the chasm.
-- TROLL_SCAMPERS: |-
-    The bear lumbers toward the troll, who lets out a startled shriek and
-    scurries away.  The bear soon gives up the pursuit and wanders back.
 - BEAR_HANDS: 'With what?  Your bare hands?  Against *HIS* bear hands??'
 - BEAR_CONFUSED: 'The bear is confused; he only wants to be your friend.'
 - ALREADY_DEAD: 'For crying out loud, the poor thing is already dead!'
 - BEAR_HANDS: 'With what?  Your bare hands?  Against *HIS* bear hands??'
 - BEAR_CONFUSED: 'The bear is confused; he only wants to be your friend.'
 - ALREADY_DEAD: 'For crying out loud, the poor thing is already dead!'
-- BEAR_TAMED: |-
-    The bear eagerly wolfs down your food, after which he seems to calm
-    down considerably and even becomes rather friendly.
 - BEAR_CHAINED: 'The bear is still chained to the wall.'
 - STILL_LOCKED: 'The chain is still locked.'
 - CHAIN_UNLOCKED: 'The chain is now unlocked.'
 - CHAIN_LOCKED: 'The chain is now locked.'
 - NO_LOCKSITE: 'There is nothing here to which the chain can be locked.'
 - BEAR_CHAINED: 'The bear is still chained to the wall.'
 - STILL_LOCKED: 'The chain is still locked.'
 - CHAIN_UNLOCKED: 'The chain is now unlocked.'
 - CHAIN_LOCKED: 'The chain is now locked.'
 - NO_LOCKSITE: 'There is nothing here to which the chain can be locked.'
-- NO_EDIBLES: 'There is nothing here to eat.'
 - WANT_HINT: 'Do you want the hint?'
 - TROLL_VICES: 'Gluttony is not one of the troll''s vices.  Avarice, however, is.'
 - LAMP_DIM: |-
 - WANT_HINT: 'Do you want the hint?'
 - TROLL_VICES: 'Gluttony is not one of the troll''s vices.  Avarice, however, is.'
 - LAMP_DIM: |-
@@ -3016,19 +3084,16 @@ arbitrary_messages:  !!omap
 - WAYOUT_CLUE: |-
     It says, "There is a way out of this place.  Do you need any more
     information to escape?  Sorry, but this initial hint is all you get."
 - WAYOUT_CLUE: |-
     It says, "There is a way out of this place.  Do you need any more
     information to escape?  Sorry, but this initial hint is all you get."
-- DONT_UNDERSTAND: 'I''m afraid I don''t understand.'
+- DONT_UNDERSTAND: &dont_understand 'I''m afraid I don''t understand.'
 - HAND_PASSTHROUGH: 'Your hand passes through it as though it weren''t there.'
 - HAND_PASSTHROUGH: 'Your hand passes through it as though it weren''t there.'
-- BREAK_MIRROR: |-
-    You strike the mirror a resounding blow, whereupon it shatters into a
-    myriad tiny fragments.
 - PROD_DWARF: |-
     You prod the nearest dwarf, who wakes up grumpily, takes one look at
     you, curses, and grabs for his axe.
 - THIS_ACCEPTABLE: 'Is this acceptable?'
 # This message is not currently used
 - PROD_DWARF: |-
     You prod the nearest dwarf, who wakes up grumpily, takes one look at
     you, curses, and grabs for his axe.
 - THIS_ACCEPTABLE: 'Is this acceptable?'
 # This message is not currently used
-- ALREADY_OVER: |-
-    This adventure is already over.  To start a new adventure, or to
-    resume an earlier adventure, please run a fresh copy of the program.
+#- ALREADY_OVER: |-
+#    This adventure is already over.  To start a new adventure, or to
+#    resume an earlier adventure, please run a fresh copy of the program.
 - OGRE_FULL: 'The ogre doesn''t appear to be hungry.'
 - OGRE_DODGE: |-
     The ogre, who despite his bulk is quite agile, easily dodges your
 - OGRE_FULL: 'The ogre doesn''t appear to be hungry.'
 - OGRE_DODGE: |-
     The ogre, who despite his bulk is quite agile, easily dodges your
@@ -3064,19 +3129,19 @@ arbitrary_messages:  !!omap
     to form a rare amber gemstone, resting in the cavity in the rock.
 - DOUGHNUT_HOLES: 'I suppose you collect doughnut holes, too?'
 - GEM_FITS: 'The gem fits easily into the cavity.'
     to form a rare amber gemstone, resting in the cavity in the rock.
 - DOUGHNUT_HOLES: 'I suppose you collect doughnut holes, too?'
 - GEM_FITS: 'The gem fits easily into the cavity.'
-- RUG_RISES: 'The persian rug stiffens and rises a foot or so off the ground.'
+- RUG_RISES: 'The Persian rug stiffens and rises a foot or so off the ground.'
 - RUG_WIGGLES: |-
 - RUG_WIGGLES: |-
-    The persian rug draped over your shoulder seems to wriggle for a
+    The Persian rug draped over your shoulder seems to wriggle for a
     moment, but then subsides.
     moment, but then subsides.
-- RUG_SETTLES: 'The persian rug settles gently to the ground.'
+- RUG_SETTLES: 'The Persian rug settles gently to the ground.'
 - RUG_HOVERS: 'The rug hovers stubbornly where it is.'
 - RUG_NOTHING1: 'The rug does not appear inclined to cooperate.'
 - RUG_NOTHING2: |-
 - RUG_HOVERS: 'The rug hovers stubbornly where it is.'
 - RUG_NOTHING1: 'The rug does not appear inclined to cooperate.'
 - RUG_NOTHING2: |-
-    If you mean to use the persian rug, it does not appear inclined to
+    If you mean to use the Persian rug, it does not appear inclined to
     cooperate.
 - FLAP_ARMS: 'Though you flap your arms furiously, it is to no avail.'
 - RUG_GOES: |-
     cooperate.
 - FLAP_ARMS: 'Though you flap your arms furiously, it is to no avail.'
 - RUG_GOES: |-
-    You board the persian rug, which promptly whisks you across the chasm.
+    You board the Persian rug, which promptly whisks you across the chasm.
     You have time for a fleeting glimpse of a two thousand foot drop to a
     mighty river; then you find yourself on the other side.
 - RUG_RETURNS: 'The rug ferries you back across the chasm.'
     You have time for a fleeting glimpse of a two thousand foot drop to a
     mighty river; then you find yourself on the other side.
 - RUG_RETURNS: 'The rug ferries you back across the chasm.'
@@ -3122,21 +3187,22 @@ arbitrary_messages:  !!omap
     To achieve the next higher rating would be a neat trick!
     Congratulations!!
 - OFF_SCALE: 'You just went off my scale!!'
     To achieve the next higher rating would be a neat trick!
     Congratulations!!
 - OFF_SCALE: 'You just went off my scale!!'
+- SAVERESUME_DISABLED: 'Save and resume are disabled.'
 - RESUME_HELP: 'To resume your Adventure, start a new game and then say "RESUME".'
 # This message is not currently used
 - RESUME_HELP: 'To resume your Adventure, start a new game and then say "RESUME".'
 # This message is not currently used
-- TABLE_SPACE: |-
-    Table space used:
-    %d of %d words of messages   %d of %d travel options
-    %d of %d vocabulary words    %d of %d locations
-    %d of %d objects             %d of %d action verbs
-    %d of %d "random" messages   %d of %d "class" messages
-    %d of %d hints               %d of %d turn threshholds'
+#- TABLE_SPACE: |-
+#    Table space used:
+#    %d of %d words of messages   %d of %d travel options
+#    %d of %d vocabulary words    %d of %d locations
+#    %d of %d objects             %d of %d action verbs
+#    %d of %d "random" messages   %d of %d "class" messages
+#    %d of %d hints               %d of %d turn thresholds'
 - RESUME_ABANDON: 'To resume an earlier Adventure, you must abandon the current one.'
 - RESUME_ABANDON: 'To resume an earlier Adventure, you must abandon the current one.'
+- BAD_SAVE: 'Oops, that does not look like a valid save file.'
 - VERSION_SKEW: |-
     I'm sorry, but that Adventure was begun using Version %d.%d of the
     save file format, and this program uses Version %d.%d.  You must find an instance
     using that other version in order to resume that Adventure.
 - VERSION_SKEW: |-
     I'm sorry, but that Adventure was begun using Version %d.%d of the
     save file format, and this program uses Version %d.%d.  You must find an instance
     using that other version in order to resume that Adventure.
-# This message is not currently used
 - SAVE_TAMPERING: |-
     A dark fog creeps in to surround you.  From somewhere in the fog you
     hear a stern voice.  "This Adventure has been tampered with!  You have
 - SAVE_TAMPERING: |-
     A dark fog creeps in to surround you.  From somewhere in the fog you
     hear a stern voice.  "This Adventure has been tampered with!  You have
@@ -3150,6 +3216,8 @@ arbitrary_messages:  !!omap
 - GO_UNNEEDED: |-
     You don't have to say "go" every time; just specify a direction or, if
     it's nearby, name the place to which you wish to move.
 - GO_UNNEEDED: |-
     You don't have to say "go" every time; just specify a direction or, if
     it's nearby, name the place to which you wish to move.
+- NUMERIC_REQUIRED:
+    This command requires a numeric argument. 
 
 classes: 
 - threshold: 0
 
 classes: 
 - threshold: 0
@@ -3174,10 +3242,10 @@ classes:
   message: 'All of Adventuredom gives tribute to you, Adventurer Grandmaster!'
 - threshold: 9999
   message: |-
   message: 'All of Adventuredom gives tribute to you, Adventurer Grandmaster!'
 - threshold: 9999
   message: |-
-    'Adventuredom stands in awe -- you have now joined the ranks of the
+    Adventuredom stands in awe -- you have now joined the ranks of the
            W O R L D   C H A M P I O N   A D V E N T U R E R S !
     It may interest you to know that the Dungeon-Master himself has, to
            W O R L D   C H A M P I O N   A D V E N T U R E R S !
     It may interest you to know that the Dungeon-Master himself has, to
-    my knowledge, never achieved this threshhold in fewer than 330 turns.'
+    my knowledge, never achieved this threshold in fewer than 330 turns.
 
 turn_thresholds:
 - threshold: 350
 
 turn_thresholds:
 - threshold: 350
@@ -3197,7 +3265,9 @@ turn_thresholds:
     Good grief, don't you *EVER* give up?  Do you realize you've spent
     over 2500 turns at this?  That's another ten points off, a total of
     twenty points lost for taking so long.
     Good grief, don't you *EVER* give up?  Do you realize you've spent
     over 2500 turns at this?  That's another ten points off, a total of
     twenty points lost for taking so long.
-  
+
+# Objects names OBJ_* are not made visible by the map-graph generator.
+# Don't change these casually.
 objects: !!omap
 - NO_OBJECT:
     inventory: !!null
 objects: !!omap
 - NO_OBJECT:
     inventory: !!null
@@ -3212,9 +3282,10 @@ objects: !!omap
     words: ['lamp', 'lante']
     inventory: 'Brass lantern'
     locations: LOC_BUILDING
     words: ['lamp', 'lante']
     inventory: 'Brass lantern'
     locations: LOC_BUILDING
+    states: [LAMP_DARK, LAMP_BRIGHT]
     descriptions:
     descriptions:
-    - [LAMP_DARK, 'There is a shiny brass lamp nearby.']
-    - [LAMP_BRIGHT, 'There is a lamp shining nearby.']
+    - 'There is a shiny brass lamp nearby.'
+    - 'There is a lamp shining nearby.'
     changes:
     - 'Your lamp is now off.'
     - 'Your lamp is now on.'
     changes:
     - 'Your lamp is now off.'
     - 'Your lamp is now on.'
@@ -3223,9 +3294,10 @@ objects: !!omap
     inventory: '*grate'
     locations: [LOC_GRATE, LOC_BELOWGRATE]
     immovable: true
     inventory: '*grate'
     locations: [LOC_GRATE, LOC_BELOWGRATE]
     immovable: true
+    states: [GRATE_CLOSED, GRATE_OPEN]  
     descriptions:
     descriptions:
-    - [GRATE_CLOSED, 'The grate is locked.']
-    - [GRATE_OPEN, 'The grate is open.']
+    - 'The grate is locked.'
+    - 'The grate is open.'
     changes:
     - 'The grate is now locked.'
     - 'The grate is now unlocked.'
     changes:
     - 'The grate is now locked.'
     - 'The grate is now unlocked.'
@@ -3252,23 +3324,25 @@ objects: !!omap
     inventory: '*steps'
     locations: [LOC_PITTOP, LOC_MISTHALL]
     immovable: true
     inventory: '*steps'
     locations: [LOC_PITTOP, LOC_MISTHALL]
     immovable: true
+    states: [STEPS_DOWN, STEPS_UP]
     descriptions:
     - 'Rough stone steps lead down the pit.'
     - 'Rough stone steps lead up the dome.'
 - BIRD:
     words: ['bird']
     inventory: 'Little bird in cage'
     descriptions:
     - 'Rough stone steps lead down the pit.'
     - 'Rough stone steps lead up the dome.'
 - BIRD:
     words: ['bird']
     inventory: 'Little bird in cage'
-    locations: LOC_BIRD
+    locations: LOC_BIRDCHAMBER
+    states: [BIRD_UNCAGED, BIRD_CAGED, BIRD_FOREST_UNCAGED]
     descriptions:
     descriptions:
-    - [BIRD_UNCAGED, 'A cheerful little bird is sitting here singing.']
-    - [BIRD_CAGED, 'There is a little bird in the cage.']
-    - [BIRD_FOREST_UNCAGED, 'A cheerful little bird is sitting here singing.']
+    - 'A cheerful little bird is sitting here singing.'
+    - 'There is a little bird in the cage.'
+    - 'A cheerful little bird is sitting here singing.'
     sounds:
     - 'The bird''s singing is quite melodious.'
     - 'The bird does not seem inclined to sing while in the cage.'
     - 'It almost seems as though the bird is trying to tell you something.'
     - |-
     sounds:
     - 'The bird''s singing is quite melodious.'
     - 'The bird does not seem inclined to sing while in the cage.'
     - 'It almost seems as though the bird is trying to tell you something.'
     - |-
-      To your surprise, you can understand the bird''s chirping; it is
+      To your surprise, you can understand the bird's chirping; it is
       singing about the joys of its forest home.
     - 'The bird does not seem inclined to sing while in the cage.'
     - |- 
       singing about the joys of its forest home.
     - 'The bird does not seem inclined to sing while in the cage.'
     - |- 
@@ -3282,9 +3356,10 @@ objects: !!omap
     inventory: '*rusty door'
     locations: LOC_IMMENSE
     immovable: true
     inventory: '*rusty door'
     locations: LOC_IMMENSE
     immovable: true
+    states: [DOOR_RUSTED, DOOR_UNRUSTED]
     descriptions:
     descriptions:
-    - [DOOR_RUSTED, 'The way north is barred by a massive, rusty, iron door.']
-    - [DOOR_UNRUSTED, 'The way north leads through a massive, rusty, iron door.']
+    - 'The way north is barred by a massive, rusty, iron door.'
+    - 'The way north leads through a massive, rusty, iron door.'
     changes:
     - 'The hinges are quite thoroughly rusted now and won''t budge.'
     - |-
     changes:
     - 'The hinges are quite thoroughly rusted now and won''t budge.'
     - |-
@@ -3301,20 +3376,25 @@ objects: !!omap
     inventory: '*snake'
     locations: LOC_KINGHALL
     immovable: true
     inventory: '*snake'
     locations: LOC_KINGHALL
     immovable: true
+    states: [SNAKE_BLOCKS, SNAKE_CHASED]
     descriptions:
     descriptions:
-    - [SNAKE_BLOCKS, 'A huge green fierce snake bars the way!']
-    - [SNAKE_CHASED, ''] # chased away
+    - 'A huge green fierce snake bars the way!'
+    - '' # chased away
     sounds:
     - 'The snake is hissing venomously.'
     sounds:
     - 'The snake is hissing venomously.'
+    - ''
 - FISSURE:
     words: ['fissu']
     inventory: '*fissure'
     locations: [LOC_EASTBANK, LOC_WESTBANK]
     immovable: true
 - FISSURE:
     words: ['fissu']
     inventory: '*fissure'
     locations: [LOC_EASTBANK, LOC_WESTBANK]
     immovable: true
+    states: [UNBRIDGED, BRIDGED]
     descriptions:
     descriptions:
-    - [UNBRIDGED, '']
-    - [BRIDGED, 'A crystal bridge now spans the fissure.']
-    - [VANISHED, 'The crystal bridge has vanished!']
+    - ''
+    - 'A crystal bridge spans the fissure.'
+    changes:
+    - 'The crystal bridge has vanished!'
+    - 'A crystal bridge now spans the fissure.'
 - OBJ_13:
     words: ['table']
     inventory: '*stone tablet'
 - OBJ_13:
     words: ['table']
     inventory: '*stone tablet'
@@ -3322,7 +3402,7 @@ objects: !!omap
     immovable: true
     descriptions:
     - |-
     immovable: true
     descriptions:
     - |-
-      A massive stone tablet imbedded in the wall reads:
+      A massive stone tablet embedded in the wall reads:
       "Congratulations on bringing light into the dark-room!"
     texts:
     - '"Congratulations on bringing light into the dark-room!"'
       "Congratulations on bringing light into the dark-room!"
     texts:
     - '"Congratulations on bringing light into the dark-room!"'
@@ -3352,7 +3432,7 @@ objects: !!omap
     - 'There are a few recent issues of "Spelunker Today" magazine here.'
     texts:
     - |-
     - 'There are a few recent issues of "Spelunker Today" magazine here.'
     texts:
     - |-
-      I''m afraid the magazine is written in dwarvish.  But pencilled on one
+      I'm afraid the magazine is written in dwarvish.  But pencilled on one
       cover you see, "Please leave the magazines at the construction site."
 - DWARF:
     words: ['dwarf', 'dwarv']
       cover you see, "Please leave the magazines at the construction site."
 - DWARF:
     words: ['dwarf', 'dwarv']
@@ -3375,10 +3455,15 @@ objects: !!omap
     words: ['bottl', 'jar']
     inventory: 'Small bottle'
     locations: LOC_BUILDING
     words: ['bottl', 'jar']
     inventory: 'Small bottle'
     locations: LOC_BUILDING
-    descriptions:
-    - [WATER_BOTTLE, 'There is a bottle of water here.']
-    - [EMPTY_BOTTLE, 'There is an empty bottle here.']
-    - [OIL_BOTTLE, 'There is a bottle of oil here.']
+    states: [WATER_BOTTLE, EMPTY_BOTTLE, OIL_BOTTLE]
+    descriptions: 
+    - 'There is a bottle of water here.'
+    - 'There is an empty bottle here.'
+    - 'There is a bottle of oil here.'
+    changes:
+    - 'Your bottle is now full of water.'
+    - 'The bottle of water is now empty.'
+    - 'Your bottle is now full of oil.'
 - WATER:
     words: ['water', 'h2o']
     inventory: 'Water in the bottle'
 - WATER:
     words: ['water', 'h2o']
     inventory: 'Water in the bottle'
@@ -3394,19 +3479,29 @@ objects: !!omap
     inventory: '*mirror'
     locations: LOC_MIRRORCANYON
     immovable: true
     inventory: '*mirror'
     locations: LOC_MIRRORCANYON
     immovable: true
-    descriptions: !!null
+    states: [MIRROR_UNBROKEN, MIRROR_BROKEN]
+    descriptions:
+    - ''
+    - ''
+    changes:
+    - ''
+    - |-
+        You strike the mirror a resounding blow, whereupon it shatters into a
+        myriad tiny fragments.
 - PLANT:
     words: ['plant', 'beans']
     inventory: '*plant'
     locations: LOC_WESTPIT
     immovable: true
 - PLANT:
     words: ['plant', 'beans']
     inventory: '*plant'
     locations: LOC_WESTPIT
     immovable: true
+    states: [PLANT_THIRSTY, PLANT_BELLOWING, PLANT_GROWN]
     descriptions:
     - 'There is a tiny little plant in the pit, murmuring "water, water, ..."'
     descriptions:
     - 'There is a tiny little plant in the pit, murmuring "water, water, ..."'
-    - [PLANT_BELLOWING, 'There is a 12-foot-tall beanstalk stretching up out of the pit,\nbellowing "WATER!! WATER!!"']
-    - [PLANT_GROWN, 'There is a gigantic beanstalk stretching all the way up to the hole.']
+    - 'There is a 12-foot-tall beanstalk stretching up out of the pit,\nbellowing "WATER!! WATER!!"'
+    - 'There is a gigantic beanstalk stretching all the way up to the hole.'
+    changes:
+    - 'You''ve over-watered the plant!  It''s shriveling up!  And now . . .'
     - 'The plant spurts into furious growth for a few seconds.'
     - 'The plant grows explosively, almost filling the bottom of the pit.'
     - 'The plant spurts into furious growth for a few seconds.'
     - 'The plant grows explosively, almost filling the bottom of the pit.'
-    - 'You''ve over-watered the plant!  It''s shriveling up!  And now . . .'
     sounds:
     - 'The plant continues to ask plaintively for water.'
     - 'The plant continues to demand water.'
     sounds:
     - 'The plant continues to ask plaintively for water.'
     - 'The plant continues to demand water.'
@@ -3438,9 +3533,10 @@ objects: !!omap
     words: ['axe']
     inventory: 'Dwarf''s axe'
     locations: LOC_NOWHERE
     words: ['axe']
     inventory: 'Dwarf''s axe'
     locations: LOC_NOWHERE
+    states: [AXE_HERE, AXE_LOST]
     descriptions:
     descriptions:
-    - [AXE_HERE, 'There is a little axe here.']
-    - [AXE_LOST, 'There is a little axe lying beside the bear.']
+    - 'There is a little axe here.'
+    - 'There is a little axe lying beside the bear.'
     changes:
     - ''
     - 'The axe misses and lands near the bear where you can''t get at it.'
     changes:
     - ''
     - 'The axe misses and lands near the bear where you can''t get at it.'
@@ -3461,10 +3557,11 @@ objects: !!omap
     inventory: '*dragon'
     locations: [LOC_SECRET4, LOC_SECRET6]
     immovable: true
     inventory: '*dragon'
     locations: [LOC_SECRET4, LOC_SECRET6]
     immovable: true
+    states: [DRAGON_BARS, DRAGON_DEAD, DRAGON_BLOODLESS]
     descriptions:
     descriptions:
-    - [DRAGON_BARS, 'A huge green fierce dragon bars the way!']
-    - [DRAGON_DEAD, 'The blood-specked body of a huge green dead dragon lies to one side.']
-    - [DRAGON_BLOODLESS, 'The body of a huge green dead dragon is lying off to one side.']
+    - 'A huge green fierce dragon bars the way!'
+    - 'The blood-specked body of a huge green dead dragon lies to one side.'
+    - 'The body of a huge green dead dragon is lying off to one side.'
     changes:
     - ''
     - |-
     changes:
     - ''
     - |-
@@ -3480,21 +3577,37 @@ objects: !!omap
     inventory: '*chasm'
     locations: [LOC_SWCHASM, LOC_NECHASM]
     immovable: true
     inventory: '*chasm'
     locations: [LOC_SWCHASM, LOC_NECHASM]
     immovable: true
+    states: [TROLL_BRIDGE, BRIDGE_WRECKED]
     descriptions:
     descriptions:
-    - [TROLL_BRIDGE, 'A rickety wooden bridge extends across the chasm, vanishing into the\nmist.  A notice posted on the bridge reads, "Stop! Pay troll!"']
-    - [BRIDGE_WRECKED, 'The wreckage of a bridge (and a dead bear) can be seen at the bottom\nof the chasm.']
+    - 'A rickety wooden bridge extends across the chasm, vanishing into the\nmist.  A notice posted on the bridge reads, "Stop! Pay troll!"'
+    - 'The wreckage of a bridge (and a dead bear) can be seen at the bottom\nof the chasm.'
+    changes:
+    - ''
+    - |- 
+        Just as you reach the other side, the bridge buckles beneath the
+        weight of the bear, which was still following you around.  You
+        scrabble desperately for support, but as the bridge collapses you
+        stumble back and fall into the chasm.
 - TROLL:
     words: ['troll']
     inventory: '*troll'
     locations: [LOC_SWCHASM, LOC_NECHASM]
     immovable: true
 - TROLL:
     words: ['troll']
     inventory: '*troll'
     locations: [LOC_SWCHASM, LOC_NECHASM]
     immovable: true
-    descriptions:
-    - [TROLL_UNPAID, 'A burly troll stands by the bridge and insists you throw him a\ntreasure before you may cross.']
-    - [TROLL_PAIDONCE, 'The troll steps out from beneath the bridge and blocks your way.']
-    - [TROLL_GONE, ''] # chased away
+    states: [TROLL_UNPAID, TROLL_PAIDONCE, TROLL_GONE]
+    descriptions: 
+    - 'A burly troll stands by the bridge and insists you throw him a\ntreasure before you may cross.'
+    - 'The troll steps out from beneath the bridge and blocks your way.'
+    - '' # chased away
+    changes:
+    - ''
+    - ''
+    - |-
+        The bear lumbers toward the troll, who lets out a startled shriek and
+        scurries away.  The bear soon gives up the pursuit and wanders back.
     sounds:
     - 'The troll sounds quite adamant in his demand for a treasure.'
     - 'The troll sounds quite adamant in his demand for a treasure.'
     sounds:
     - 'The troll sounds quite adamant in his demand for a treasure.'
     - 'The troll sounds quite adamant in his demand for a treasure.'
+    - ''
 - TROLL2:
     words: ['troll']
     inventory: '*phony troll'
 - TROLL2:
     words: ['troll']
     inventory: '*phony troll'
@@ -3504,14 +3617,20 @@ objects: !!omap
     - 'The troll is nowhere to be seen.'
 - BEAR:
     words: ['bear']
     - 'The troll is nowhere to be seen.'
 - BEAR:
     words: ['bear']
-    inventory: !!null # bear uses rtext 141
+    inventory: !!null
     locations: LOC_BARRENROOM
     immovable: true
     locations: LOC_BARRENROOM
     immovable: true
+    states: [UNTAMED_BEAR, SITTING_BEAR, CONTENTED_BEAR, BEAR_DEAD]
     descriptions:
     descriptions:
-    - [UNTAMED_BEAR, 'There is a ferocious cave bear eying you from the far end of the room!']
-    - [SITTING_BEAR, 'There is a gentle cave bear sitting placidly in one corner.']
-    - [CONTENTED_BEAR, 'There is a contented-looking bear wandering about nearby.']
-    - [BEAR_DEAD, '']
+    - 'There is a ferocious cave bear eyeing you from the far end of the room!'
+    - 'There is a gentle cave bear sitting placidly in one corner.'
+    - 'There is a contented-looking bear wandering about nearby.'
+    - ''
+    changes:
+    - ''
+    - 'The bear eagerly wolfs down your food, after which he seems to calm\ndown considerably and even becomes rather friendly.'
+    - ''
+    - ''
 - MESSAG:
     words: ['messa']
     inventory: '*message in second maze'
 - MESSAG:
     words: ['messa']
     inventory: '*message in second maze'
@@ -3534,9 +3653,14 @@ objects: !!omap
     inventory: '*vending machine'
     locations: LOC_DEADEND13
     immovable: true
     inventory: '*vending machine'
     locations: LOC_DEADEND13
     immovable: true
+    states: [VEND_BLOCKS, VEND_UNBLOCKS]
     descriptions:
     descriptions:
-    - [VEND_BLOCKS, 'There is a massive and somewhat battered vending machine here.  The\ninstructions on it read: "Drop coins here to receive fresh batteries."']
-    - [VEND_UNBLOCKS, 'There is a massive vending machine here, swung back to reveal a\nsouthward passage.']
+    - |-
+        There is a massive and somewhat battered vending machine here.  The
+        instructions on it read: "Drop coins here to receive fresh batteries."
+    - |-
+        There is a massive vending machine here, swung back to reveal a
+        southward passage.
     changes:
     - 'The vending machine swings back to block the passage.'
     - 'As you strike the vending machine, it pivots backward along with a\nsection of wall, revealing a dark passage leading south.'
     changes:
     - 'The vending machine swings back to block the passage.'
     - 'As you strike the vending machine, it pivots backward along with a\nsection of wall, revealing a dark passage leading south.'
@@ -3547,9 +3671,10 @@ objects: !!omap
     words: ['batte']
     inventory: 'Batteries'
     locations: LOC_NOWHERE
     words: ['batte']
     inventory: 'Batteries'
     locations: LOC_NOWHERE
+    states: [FRESH_BATTERIES, DEAD_BATTERIES]
     descriptions:
     descriptions:
-    - [FRESH_BATTERIES, 'There are fresh batteries here.']
-    - [DEAD_BATTERIES, 'Some worn-out batteries have been discarded nearby.']
+    - 'There are fresh batteries here.'
+    - 'Some worn-out batteries have been discarded nearby.'
 - OBJ_40:
     words: ['carpe', 'moss']
     inventory: '*carpet and/or moss and/or curtains'
 - OBJ_40:
     words: ['carpe', 'moss']
     inventory: '*carpet and/or moss and/or curtains'
@@ -3570,10 +3695,11 @@ objects: !!omap
     inventory: '*urn'
     locations: LOC_CLIFF
     immovable: true
     inventory: '*urn'
     locations: LOC_CLIFF
     immovable: true
+    states: [URN_EMPTY, URN_DARK, URN_LIT]
     descriptions:
     descriptions:
-    - [URN_EMPTY, 'A small urn is embedded in the rock.']
-    - [URN_DARK, 'A small urn full of oil is embedded in the rock.']
-    - [URN_LIT, 'A small oil flame extrudes from an urn embedded in the rock.']
+    - 'A small urn is embedded in the rock.'
+    - 'A small urn full of oil is embedded in the rock.'
+    - 'A small oil flame extrudes from an urn embedded in the rock.'
     changes:
     - 'The urn is empty and will not light.'
     - 'The urn is now dark.'
     changes:
     - 'The urn is empty and will not light.'
     - 'The urn is now dark.'
@@ -3583,9 +3709,10 @@ objects: !!omap
     inventory: '*cavity'
     locations: LOC_NOWHERE
     immovable: true
     inventory: '*cavity'
     locations: LOC_NOWHERE
     immovable: true
+    states: [CAVITY_FULL, CAVITY_EMPTY]
     descriptions:
     descriptions:
-    - [CAVITY_FULL, ''] # something in it
-    - [CAVITY_EMPTY, 'There is a small urn-shaped cavity in the rock.']
+    - '' # something in it
+    - 'There is a small urn-shaped cavity in the rock.'
 - BLOOD:
     words: ['blood']
     inventory: '*blood'
 - BLOOD:
     words: ['blood']
     inventory: '*blood'
@@ -3598,11 +3725,14 @@ objects: !!omap
     inventory: '*reservoir'
     locations: [LOC_RESERVOIR, LOC_RESNORTH]
     immovable: true
     inventory: '*reservoir'
     locations: [LOC_RESERVOIR, LOC_RESNORTH]
     immovable: true
+    states: [WATERS_UNPARTED, WATERS_PARTED]
     descriptions:
     - ''
     descriptions:
     - ''
-    - [WATERS_PARTED, 'The waters have parted to form a narrow path across the reservoir.']
+    - 'The waters have parted to form a narrow path across the reservoir.'
+    changes:
     - 'The waters crash together again.'
     - 'The waters crash together again.'
-- OBJ_46:
+    - 'The waters have parted to form a narrow path across the reservoir.'
+- RABBITFOOT:
     words: ['appen', 'lepor']
     inventory: 'Leporine appendage'
     locations: LOC_FOREST22
     words: ['appen', 'lepor']
     inventory: 'Leporine appendage'
     locations: LOC_FOREST22
@@ -3631,9 +3761,10 @@ objects: !!omap
     inventory: '*sign'
     locations: LOC_ANTEROOM
     immovable: true
     inventory: '*sign'
     locations: LOC_ANTEROOM
     immovable: true
+    states: [INGAME_SIGN, ENDGAME_SIGN]
     descriptions:
     descriptions:
-    - [INGAME_SIGN, '']
-    - [ENDGAME_SIGN, '']
+    - ''
+    - ''
     texts:
     - |-
       Cave under construction beyond this point.
     texts:
     - |-
       Cave under construction beyond this point.
@@ -3687,10 +3818,11 @@ objects: !!omap
     inventory: 'Golden eggs'
     locations: LOC_GIANTROOM
     treasure: true
     inventory: 'Golden eggs'
     locations: LOC_GIANTROOM
     treasure: true
+    states: [EGGS_HERE, EGGS_VANISHED, EGGS_DONE]
     descriptions:
     descriptions:
-    - [EGGS_HERE, 'There is a large nest here, full of golden eggs!']
-    - [EGGS_VANISHED, 'The nest of golden eggs has vanished!']
-    - [EGGS_DONE, 'Done!']
+    - 'There is a large nest here, full of golden eggs!'
+    - 'The nest of golden eggs has vanished!'
+    - 'Done!'
 - TRIDENT:
     words: ['tride']
     inventory: 'Jeweled trident'
 - TRIDENT:
     words: ['tride']
     inventory: 'Jeweled trident'
@@ -3703,14 +3835,14 @@ objects: !!omap
     inventory: 'Ming vase'
     locations: LOC_ORIENTAL
     treasure: true
     inventory: 'Ming vase'
     locations: LOC_ORIENTAL
     treasure: true
+    states: [VASE_WHOLE, VASE_DROPPED, VASE_BROKEN]
     descriptions:
     descriptions:
-    - [VASE_WHOLE, 'There is a delicate, precious, ming vase here!']
-    - [VASE_RESTING, 'The vase is now resting, delicately, on a velvet pillow.']
-    - [VASE_BROKEN, 'The floor is littered with worthless shards of pottery.']
-    - [VASE_DROPS, 'The ming vase drops with a delicate crash.']
+    - 'There is a delicate, precious, ming vase here!'
+    - 'The floor is littered with worthless shards of pottery.'
+    - 'The floor is littered with worthless shards of pottery.'
     changes:
     changes:
-    - ''
-    - ''
+    - 'The vase is now resting, delicately, on a velvet pillow.'
+    - 'The ming vase drops with a delicate crash.'
     - 'You have taken the vase and hurled it delicately to the ground.'
 - EMERALD:
     words: ['emera']
     - 'You have taken the vase and hurled it delicately to the ground.'
 - EMERALD:
     words: ['emera']
@@ -3740,10 +3872,11 @@ objects: !!omap
     locations: [LOC_SECRET4, LOC_SECRET6]
     immovable: true
     treasure: true
     locations: [LOC_SECRET4, LOC_SECRET6]
     immovable: true
     treasure: true
+    states: [RUG_FLOOR, RUG_DRAGON, RUG_HOVER]
     descriptions:
     descriptions:
-    - [RUG_FLOOR, 'There is a persian rug spread out on the floor!']
-    - [RUG_DRAGON, 'The dragon is sprawled out on a persian rug!!']
-    - [RUG_HOVER, 'There is a persian rug here, hovering in mid-air!']
+    - 'There is a Persian rug spread out on the floor!'
+    - 'The dragon is sprawled out on a Persian rug!!'
+    - 'There is a Persian rug here, hovering in mid-air!'
 - OBJ_63:
     words: ['spice']
     inventory: 'Rare spices'
 - OBJ_63:
     words: ['spice']
     inventory: 'Rare spices'
@@ -3757,10 +3890,11 @@ objects: !!omap
     locations: LOC_BARRENROOM
     immovable: true
     treasure: true
     locations: LOC_BARRENROOM
     immovable: true
     treasure: true
+    states: [CHAIN_HEAP, CHAINING_BEAR, CHAIN_FIXED]
     descriptions:
     descriptions:
-    - [CHAIN_HEAP, 'There is a golden chain lying in a heap on the floor!']
-    - [CHAINING_BEAR, 'The bear is locked to the wall with a golden chain!']
-    - [CHAIN_FIXED, 'There is a golden chain locked to the wall!']
+    - 'There is a golden chain lying in a heap on the floor!'
+    - 'The bear is locked to the wall with a golden chain!'
+    - 'There is a golden chain locked to the wall!'
 - RUBY:
     words: ['ruby']
     inventory: 'Giant ruby'
 - RUBY:
     words: ['ruby']
     inventory: 'Giant ruby'
@@ -3781,9 +3915,10 @@ objects: !!omap
     inventory: 'Amber gemstone'
     locations: LOC_NOWHERE
     treasure: true
     inventory: 'Amber gemstone'
     locations: LOC_NOWHERE
     treasure: true
+    states: [AMBER_IN_URN, AMBER_IN_ROCK]
     descriptions:
     descriptions:
-    - [AMBER_IN_URN, 'There is a rare amber gemstone here!']
-    - [AMBER_IN_ROCK, 'There is an amber gemstone resting in a small cavity in the rock!']
+    - 'There is a rare amber gemstone here!'
+    - 'There is an amber gemstone resting in a small cavity in the rock!'
 - SAPPH:
     words: ['sapph']
     inventory: 'Star sapphire'
 - SAPPH:
     words: ['sapph']
     inventory: 'Star sapphire'
@@ -3811,42 +3946,161 @@ obituaries:
         You are engulfed in a cloud of orange smoke.  Coughing and gasping,
         you emerge from the smoke and find....
   - query: |-
         You are engulfed in a cloud of orange smoke.  Coughing and gasping,
         you emerge from the smoke and find....
   - query: |-
-        You clumsy oaf, you've done it again!  I don''t know how long I can
+        You clumsy oaf, you've done it again!  I don't know how long I can
         keep this up.  Do you want me to try reincarnating you again?
     yes_response: |-
         Okay, now where did I put my orange smoke?....  >POOF!<
         Everything disappears in a dense cloud of orange smoke.
   - query: |-
         keep this up.  Do you want me to try reincarnating you again?
     yes_response: |-
         Okay, now where did I put my orange smoke?....  >POOF!<
         Everything disappears in a dense cloud of orange smoke.
   - query: |-
-        Now you''ve really done it!  I'm out of orange smoke!  You don''t expect
+        Now you've really done it!  I'm out of orange smoke!  You don't expect
         me to do a decent reincarnation without any orange smoke, do you?
     yes_response: 'Okay, if you''re so smart, do it yourself!  I''m leaving!'
 
         me to do a decent reincarnation without any orange smoke, do you?
     yes_response: 'Okay, if you''re so smart, do it yourself!  I''m leaving!'
 
-specials: !!omap
-- SPC_0:
+actions: !!omap
+- ACT_NULL:
     message: !!null
     words: !!null
     message: !!null
     words: !!null
-- SPC_1:
-    message: !!null
+- CARRY:
+    message: *already_carrying
+    words: ['g', 'carry', 'take', 'keep', 'catch',
+            'steal', 'captu', 'get', 'tote', 'snarf']
+    oldstyle: false
+- DROP:
+    message: *arent_carrying
+    words: ['drop', 'relea', 'free', 'disca', 'dump']
+- SAY:
+    message: NO_MESSAGE
+    words: ['say', 'chant', 'sing', 'utter', 'mumbl']
+- UNLOCK:
+    message: *not_lockable
+    words: ['unloc', 'open']
+- NOTHING:
+    message: NO_MESSAGE
+    words: ['z', 'nothi']
+    oldstyle: false
+- LOCK:
+    message: *not_lockable
+    words: ['lock', 'close']
+- LIGHT:
+    message: *dont_understand
+    words: ['light', 'on']
+- EXTINGUISH:
+    message: *dont_understand
+    words: ['extin', 'off']
+- WAVE:
+    message: *nothing_happens
+    words: ['wave', 'shake', 'swing']
+- TAME:
+    message: *am_game
+    words: ['calm', 'placa', 'tame']
+- GO:
+    message: *where_query
+    words: ['walk', 'run', 'trave', 'go', 'proce',
+            'conti', 'explo', 'follo', 'turn']
+- ATTACK:
+    message: *ridiculous_attempt
+    words: ['attac', 'kill', 'fight', 'hit', 'strik', 'slay']
+- POUR:
+    message: *arent_carrying
+    words: ['pour']
+- EAT:
+    message: *ridiculous_attempt
+    words: ['eat', 'devou']
+- DRINK:
+    message: |-
+      You have taken a drink from the stream.  The water tastes strongly of
+      minerals, but is not unpleasant.  It is extremely cold.
+    words: ['drink']
+- RUB:
+    message: |-
+      Rubbing the electric lamp is not particularly rewarding.  Anyway,
+      nothing exciting happens.
+    words: ['rub']
+- THROW:
+    message: *arent_carrying
+    words: ['throw', 'toss']
+- QUIT:
+    message: *huh_man
+    words: ['quit']
+- FIND:
+    message: *nearby
+    words: ['find', 'where']
+- INVENTORY:
+    message: *nearby
+    words: ['i', 'inven']
+    oldstyle: false
+- FEED:
+    message: 'There is nothing here to eat.'
+    words: ['feed']
+- FILL:
+    message: 'You can''t fill that.'
+    words: ['fill']
+- BLAST:
+    message: *requires_dynamite
+    words: ['blast', 'deton', 'ignit', 'blowu']
+- SCORE:
+    message: *huh_man
+    words: ['score']
+- FEE:
+    message: *not_knowhow
     words: ['fee']
     words: ['fee']
-- SPC_2:
-    message: !!null
+- FIE:
+    message: *not_knowhow
     words: ['fie']
     words: ['fie']
-- SPC_3:
-    message: !!null
+- FOE:
+    message: *not_knowhow
     words: ['foe']
     words: ['foe']
-- SPC_4:
-    message: !!null
+- FOO:
+    message: *not_knowhow
     words: ['foo']
     words: ['foo']
-- SPC_5:
-    message: !!null
+- FUM:
+    message: *not_knowhow
     words: ['fum']
     words: ['fum']
-- SPC_13:
+- BRIEF:
+    message: 'On what?'
+    words: ['brief']
+- READ:
+    message: *dont_understand
+    words: ['read', 'perus']
+- BREAK:
+    message: *beyond_power
+    words: ['break', 'shatt', 'smash']
+- WAKE:
+    message: *ridiculous_attempt
+    words: ['wake', 'distu']
+- SAVE:
+    message: *huh_man
+    words: ['suspe', 'pause', 'save']
+- RESUME:
+    message: *huh_man
+    words: ['resum', 'resta']
+- FLY:
+    message: *am_game
+    words: ['fly']
+- LISTEN:
+    message: *dont_understand
+    words: ['liste']
+- PART:
+    message: *nothing_happens
+    words: ['z''zzz']
+- SEED:
+    message: 'Seed set to %d'
+    words: ['seed']
+- WASTE:
+    message: 'Game limit is now %d'
+    words: ['waste']
+- ACT_UNKNOWN:
+    message: *huh_man
+    words: !!null
+- THANKYOU:
     message: 'You''re quite welcome.'
     words: ['thank']
     message: 'You''re quite welcome.'
     words: ['thank']
-- SPC_50:
+    noaction: true
+- INVALIDMAGIC:
     message: 'Good try, but that is an old worn-out magic word.'
     words: ['sesam', 'opens', 'abra', 'abrac', 'shaza', 'hocus', 'pocus']
     message: 'Good try, but that is an old worn-out magic word.'
     words: ['sesam', 'opens', 'abra', 'abrac', 'shaza', 'hocus', 'pocus']
-- SPC_51:
+    noaction: true
+- HELP:
     message: |-
       I know of places, actions, and things.  Most of my vocabulary
       describes places and is used to move you there.  To move, try words
     message: |-
       I know of places, actions, and things.  Most of my vocabulary
       describes places and is used to move you there.  To move, try words
@@ -3878,10 +4132,12 @@ specials: !!omap
       though the direction that takes you back might not be the reverse of
       what got you here.  Good luck, and have fun!
     words: ['help', '?']
       though the direction that takes you back might not be the reverse of
       what got you here.  Good luck, and have fun!
     words: ['help', '?']
-- SPC_54:
+    noaction: true
+- NO:
     message: *ok_man
     words: ['no']
     message: *ok_man
     words: ['no']
-- SPC_64:
+    noaction: true
+- TREE:
     message: |-
       The trees of the forest are large hardwood oak and maple, with an
       occasional grove of pine or spruce.  There is quite a bit of under-
     message: |-
       The trees of the forest are large hardwood oak and maple, with an
       occasional grove of pine or spruce.  There is quite a bit of under-
@@ -3890,27 +4146,33 @@ specials: !!omap
       all the leaves, but travel is quite easy if you detour around the
       spruce and berry bushes.
     words: ['tree', 'trees']
       all the leaves, but travel is quite easy if you detour around the
       spruce and berry bushes.
     words: ['tree', 'trees']
-- SPC_66:
+    noaction: true
+- DIG:
     message: |-
       Digging without a shovel is quite impractical.  Even with a shovel
       progress is unlikely.
     words: ['dig', 'excav']
     message: |-
       Digging without a shovel is quite impractical.  Even with a shovel
       progress is unlikely.
     words: ['dig', 'excav']
-- SPC_68:
+    noaction: true
+- LOST:
     message: 'I''m as confused as you are.'
     words: ['lost']
     message: 'I''m as confused as you are.'
     words: ['lost']
-- SPC_69:
+    noaction: true
+- MIST:
     message: |-
       Mist is a white vapor, usually water, seen from time to time in
       caverns.  It can be found anywhere but is frequently a sign of a deep
     message: |-
       Mist is a white vapor, usually water, seen from time to time in
       caverns.  It can be found anywhere but is frequently a sign of a deep
-      pit leading down to water.'
+      pit leading down to water.
     words: ['mist']
     words: ['mist']
-- SPC_79:
+    noaction: true
+- FBOMB:
     message: 'Watch it!'
     words: ['fuck']
     message: 'Watch it!'
     words: ['fuck']
-- SPC_139:
+    noaction: true
+- STOP:
     message: 'I don''t know the word "stop".  Use "quit" if you want to give up.'
     words: ['stop']
     message: 'I don''t know the word "stop".  Use "quit" if you want to give up.'
     words: ['stop']
-- SPC_142:
+    noaction: true
+- INFO:
     message: |-
       For a summary of the most recent changes to the game, say "news".
       If you want to end your adventure early, say "quit".  To suspend your
     message: |-
       For a summary of the most recent changes to the game, say "news".
       If you want to end your adventure early, say "quit".  To suspend your
@@ -3934,16 +4196,20 @@ specials: !!omap
       save time, you may specify "brief", which tells me never to repeat the
       full description of a place unless you explicitly ask me to.
     words: ['info', 'infor']
       save time, you may specify "brief", which tells me never to repeat the
       full description of a place unless you explicitly ask me to.
     words: ['info', 'infor']
-- SPC_147:
+    noaction: true
+- SWIM:
     message: *not_knowhow
     words: ['swim']
     message: *not_knowhow
     words: ['swim']
-- SPC_246:
+    noaction: true
+- WIZARD:
     message: 'Wizards are not to be disturbed by such as you.'
     words: ['wizar']
     message: 'Wizards are not to be disturbed by such as you.'
     words: ['wizar']
-- SPC_271:
+    noaction: true
+- "YES":
     message: 'Guess again.'
     words: ['yes']
     message: 'Guess again.'
     words: ['yes']
-- SPC_275:
+    noaction: true
+- NEWS:
     message: |-
       Open Adventure is an author-approved open-source release of
       Version 2.5 with, as yet, no gameplay changes.
     message: |-
       Open Adventure is an author-approved open-source release of
       Version 2.5 with, as yet, no gameplay changes.
@@ -3955,11 +4221,13 @@ specials: !!omap
       while first), but it now costs you a few points each time you save the
       game.  Saved games are now stored in much smaller files than before.
     words: ['news']
       while first), but it now costs you a few points each time you save the
       game.  Saved games are now stored in much smaller files than before.
     words: ['news']
-- SPC_276:
+    noaction: true
+- ACT_VERSION:
     message: |-
       There is a puff of orange smoke; within it, fiery runes spell out:
       
       \tOpen Adventure %V - http://www.catb.org/esr/open-adventure/
     words: ['versi']
     message: |-
       There is a puff of orange smoke; within it, fiery runes spell out:
       
       \tOpen Adventure %V - http://www.catb.org/esr/open-adventure/
     words: ['versi']
+    noaction: true
 
 # end
 
 # end