Typo fix.
[open-adventure.git] / adventure.yaml
index 93ff91a9462fb611d2763a5d64c594b44c145720..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
@@ -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.
-
+#
 # 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.
+#      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
+#        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
 #    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
 #    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.
+#      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.
-#                    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
-#                    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.
-#       immovable:   An object may also be flagged
+#      immovable:    An object may also be flagged
 #                    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).
 #
 # Message strings may include certain special character sequences to
 # denote that the program must provide parameters to insert into a
 # message when the message is printed.  These sequences are:
-#      %S = The letter 'S' or nothing (if a given value is exactly 1)
-#      %W = A word (up to 10 characters)
-#      %L = A word mapped to lower-case letters
-#      %U = A word mapped to upper-case letters
-#      %C = A word mapped to lower-case, first letter capitalised
-#      %T = Several words of text, ending with a word of -1
-#      %1 = A 1-digit number
-#      %2 = A 2-digit number
-#      ...
-#      %9 = A 9-digit number
-#      %B = Variable number of blanks
-#      %! = The entire message should be suppressed
+#       %d = an integer
+#       %s = an ASCII string
+#      %S = the letter 's' or nothing (if a previous %d value is exactly 1)
 #      %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
@@ -213,9 +212,9 @@ motions: !!omap
     words: ['east', 'e']
 - WEST:
     words: ['west', 'w']
-- MOT_45:
+- NORTH:
     words: ['north', 'n']
-- MOT_46:
+- SOUTH:
     words: ['south', 's']
 - NE:
     words: ['ne']
@@ -250,9 +249,9 @@ motions: !!omap
     words: ['slab', 'slabr']
 - XYZZY:
     words: ['xyzzy']
-- DPRSSN:
+- DEPRESSION:
     words: ['depre']
-- ENTRNC:
+- ENTRANCE:
     words: ['entra']
 - PLUGH:
     words: ['plugh']
@@ -260,140 +259,23 @@ motions: !!omap
     words: ['secre']
 - CAVE:
     words: ['cave']
-- MOT_68:
-    words: !!null
-- MOT_69:
+- CROSS:
     words: ['cross']
 - BEDQUILT:
     words: ['bedqu']
 - PLOVER:
     words: ['plove']
-- FORWARD2:
+- ORIENTAL:
     words: ['orien']
-- FORWARD3:
+- CAVERN:
     words: ['caver']
-- FORWARD4:
+- SHELLROOM:
     words: ['shell']
-- FORWARD5:
+- RESERVOIR:
     words: ['reser']
-- FORWARD6:
+- OFFICE:
     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
@@ -480,14 +362,15 @@ hints:
       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
+      maptag: 'Nowhere'
     conditions: {}
     travel: [
     ]
@@ -498,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.'
+      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]},
-      {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]},
     ]
@@ -513,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.'
+      maptag: !!null
     conditions: {ABOVE: true, LIT: true}
     travel: [
       {verbs: [BUILD, EAST], action: [goto, LOC_START]},
@@ -525,6 +410,7 @@ locations: !!omap
     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: [
@@ -539,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.'
+      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]},
-      {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]},
     ]
@@ -553,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.'
+      maptag: !!null
     conditions: {ABOVE: true, LIT: true}
     travel: [
       {verbs: [ROAD, EAST, UPWAR], action: [goto, LOC_HILL]},
@@ -567,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.'
+      maptag: !!null
     conditions: {ABOVE: true, NOBACK: true, LIT: true}
     hints: [*urn]
     travel: [
@@ -580,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.'
+      maptag: !!null
     conditions: {FLUID: true, ABOVE: true, LIT: true}
     sound: STREAM_GURGLES
     travel: [
@@ -597,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.'
+      maptag: !!null
     conditions: {ABOVE: true, LIT: true}
     hints: [*grate, *jade]
     travel: [
@@ -605,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: [ENTER, INWAR, D],
+      {verbs: [ENTER, INWAR, DOWN],
                              cond: [not, GRATE, GRATE_CLOSED],
                              action: [goto, LOC_BELOWGRATE]},
       {verbs: [ENTER], action: [speak, GRATE_NOWAY]},
@@ -616,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.'
+      maptag: !!null
     conditions: {LIT: true}
     travel: [
       {verbs: [OUT, UPWAR], cond: [not, GRATE, GRATE_CLOSED],
@@ -631,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.'
+      maptag: !!null
     conditions: {LIT: true}
     travel: [
       {verbs: [OUT, SURFA, EAST], action: [goto, LOC_BELOWGRATE]},
@@ -645,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.'
+      maptag: !!null
     conditions: {}
     travel: [
       {verbs: [DEPRE], cond: [not, GRATE, GRATE_CLOSED],
@@ -659,22 +553,24 @@ locations: !!omap
     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]},
-      {verbs: [INWAR, UPWAR, WEST], action: [goto, LOC_BIRD]},
+      {verbs: [INWAR, UPWAR, WEST], action: [goto, LOC_BIRDCHAMBER]},
       {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.'
+      maptag: !!null
     conditions: {}
     hints: [*bird] 
     travel: [
@@ -691,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.'
+      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]},
-      {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]},
@@ -712,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     hints: [*jade]
     sound: WIND_WHISTLES
@@ -728,8 +626,9 @@ locations: !!omap
     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
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_PITTOP]},
@@ -740,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [HALL, EAST], action: [goto, LOC_MISTHALL]},
@@ -758,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [HALL, OUT, NORTH], action: [goto, LOC_MISTHALL]},
@@ -768,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     hints: [*snake]
     travel: [
@@ -787,6 +689,7 @@ locations: !!omap
     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]},
@@ -795,6 +698,7 @@ locations: !!omap
     description:
       long: 'You didn''t make it.'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_NOWHERE]},
@@ -803,6 +707,7 @@ locations: !!omap
     description:
       long: 'The dome is unclimbable.'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_MISTHALL]},
@@ -813,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST, ACROS], action: [goto, LOC_EASTEND]},
@@ -826,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.'
+      maptag: !!null
     conditions: {FLUID: true, DEEP: true, OILY: true}
     travel: [
       {verbs: [UPWAR, OUT], action: [goto, LOC_EASTEND]},
@@ -836,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [UPWAR, OUT], action: [goto, LOC_WESTEND]},
@@ -847,6 +755,7 @@ locations: !!omap
     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]},
@@ -855,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [JUMP], cond: [not, FISSURE, UNBRIDGED],
@@ -874,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.'
+      maptag: "Floor hole."
     conditions: {DEEP: true}
     travel: [
       {verbs: [HALL, OUT, SOUTH], action: [goto, LOC_KINGHALL]},
@@ -884,6 +795,7 @@ locations: !!omap
     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]},
@@ -894,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [HALL, OUT, EAST], action: [goto, LOC_KINGHALL]},
@@ -903,6 +816,7 @@ locations: !!omap
     description:
       long: ''
       short: !!null
+      maptag: 'Middle of plant.'
     conditions: {DEEP: true}
     travel: [
       {verbs: [], cond: [not, PLANT, PLANT_BELLOWING],
@@ -913,6 +827,7 @@ locations: !!omap
     description:
       long: 'You can''t get by the snake.'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_KINGHALL]},
@@ -924,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".'
+      maptag: "Y2."
     conditions: {DEEP: true}
     travel: [
       {verbs: [PLUGH], action: [goto, LOC_FOOF4]},
@@ -937,6 +853,7 @@ locations: !!omap
     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]},
@@ -953,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST, Y2], action: [goto, LOC_Y2]},
@@ -963,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.
-      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]},
@@ -977,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [WEST, CRAWL], action: [goto, LOC_BROKEN]},
@@ -988,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.'
+      maptag: 'Small pit bottom'
     conditions: {FLUID: true, DEEP: true}
     sound: STREAM_GURGLES
     travel: [
@@ -1001,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST, PASSA], action: [goto, LOC_BROKEN]},
@@ -1013,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
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_MISTWEST]},
@@ -1024,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH, UPWAR, PASSA, CLIMB], action: [goto, LOC_ALIKE1]},
@@ -1035,7 +959,8 @@ locations: !!omap
     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]},
@@ -1048,7 +973,8 @@ locations: !!omap
     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]},
@@ -1059,50 +985,55 @@ locations: !!omap
     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]},
-      {verbs: [DOWN], action: [goto, LOC_DEADEND3]},
+      {verbs: [DOWN], action: [goto, LOC_MAZEEND3]},
       {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
-    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]},
-      {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
-    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]},
     ]
-- LOC_DEADEND2:
+- LOC_MAZEEND2:
     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]},
     ]
-- LOC_DEADEND3:
+- LOC_MAZEEND3:
     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]},
@@ -1111,7 +1042,8 @@ locations: !!omap
     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]},
@@ -1121,7 +1053,8 @@ locations: !!omap
     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]},
@@ -1133,7 +1066,8 @@ locations: !!omap
     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]},
@@ -1145,7 +1079,8 @@ locations: !!omap
     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]},
@@ -1153,24 +1088,26 @@ locations: !!omap
       {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
-    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]},
-      {verbs: [SOUTH], action: [goto, LOC_DEADEND4]},
+      {verbs: [SOUTH], action: [goto, LOC_MAZEEND4]},
     ]
-- LOC_DEADEND4:
+- LOC_MAZEEND4:
     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]},
@@ -1179,19 +1116,21 @@ locations: !!omap
     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]},
-      {verbs: [DOWN], action: [goto, LOC_DEADEND5]},
+      {verbs: [DOWN], action: [goto, LOC_MAZEEND5]},
       {verbs: [EAST], action: [goto, LOC_PITBRINK]},
     ]
-- LOC_DEADEND5:
+- LOC_MAZEEND5:
     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]},
@@ -1203,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.'
-    conditions: {DEEP: true, NOBACK: true}
+      maptag: !!null
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     travel: [
-      {verbs: [DOWN, CLIMB], action: [goto, LOC_BIRD]},
+      {verbs: [DOWN, CLIMB], action: [goto, LOC_BIRDCHAMBER]},
       {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]},
     ]
-- LOC_DEADEND6:
+- LOC_MAZEEND6:
     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]},
     ]
@@ -1225,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
+      maptag: 'Maze all alike.'
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_WESTBANK]},
@@ -1236,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.'
+      maptag: 'Maze all alike.'
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST, UPWAR, CRAWL], action: [goto, LOC_MISTWEST]},
@@ -1248,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.'
+      maptag: 'Maze all alike.'
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST], action: [goto, LOC_LONGEAST]},
@@ -1258,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
+      maptag: 'Passage crossover.'
     conditions: {DEEP: true}
     travel: [
       {verbs: [WEST], action: [goto, LOC_LONGEAST]},
@@ -1269,6 +1214,7 @@ locations: !!omap
     description:
       long: 'Dead end'
       short: !!null
+      maptag: 'Maze all alike.'
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH, OUT], action: [goto, LOC_CROSSOVER]},
@@ -1280,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     hints: [*jade]
     sound: WIND_WHISTLES
@@ -1295,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST], action: [goto, LOC_COMPLEX]},
@@ -1313,10 +1261,11 @@ locations: !!omap
 - 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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [NE], action: [goto, LOC_BEDQUILT]},
@@ -1336,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST], action: [goto, LOC_SWISSCHEESE]},
@@ -1351,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH], action: [goto, LOC_WESTEND]},
@@ -1361,6 +1312,7 @@ locations: !!omap
     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]},
@@ -1373,7 +1325,8 @@ locations: !!omap
 - 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]},
@@ -1387,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.'
+      maptag: 'Secret canyon junction'
     conditions: {DEEP: true}
     travel: [
       {verbs: [SE], action: [goto, LOC_BEDQUILT]},
@@ -1397,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [BEDQU], action: [goto, LOC_BEDQUILT]},
@@ -1408,6 +1363,7 @@ locations: !!omap
     description:
       long: 'Dead end crawl.'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH, CRAWL, OUT], action: [goto, LOC_LOWROOM]},
@@ -1419,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.'
+      maptag: 'Secret e/w canyon'
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST], action: [goto, LOC_KINGHALL]},
@@ -1430,6 +1387,7 @@ locations: !!omap
     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]},
@@ -1439,6 +1397,7 @@ locations: !!omap
     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]},
@@ -1449,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
+      maptag: 'Tall canyon'
     conditions: {DEEP: true}
     travel: [
       {verbs: [EAST], action: [goto, LOC_WIDEPLACE]},
@@ -1459,6 +1419,7 @@ locations: !!omap
     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]},
@@ -1469,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
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_BUILDING]},
@@ -1477,28 +1439,31 @@ locations: !!omap
     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]},
-      {verbs: [EAST], action: [goto, LOC_DEADEND8]},
+      {verbs: [EAST], action: [goto, LOC_MAZEEND8]},
     ]
-- LOC_DEADEND8:
+- LOC_MAZEEND8:
     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]},
     ]
-- LOC_DEADEND9:
+- LOC_MAZEEND9:
     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]},
@@ -1507,35 +1472,39 @@ locations: !!omap
     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]},
-      {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
-    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]},
-      {verbs: [NW], action: [goto, LOC_DEADEND12]},
+      {verbs: [NW], action: [goto, LOC_MAZEEND12]},
     ]
-- LOC_DEADEND10:
+- LOC_MAZEEND10:
     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]},
     ]
-- LOC_DEADEND11:
+- LOC_MAZEEND11:
     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]},
@@ -1544,10 +1513,11 @@ locations: !!omap
     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, D], action: [goto, LOC_ALIKE4]},
+      {verbs: [UPWAR, DOWN], action: [goto, LOC_ALIKE4]},
     ]
 - LOC_NARROW:
     description:
@@ -1556,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [DOWN, CLIMB, EAST], action: [goto, LOC_WESTPIT]},
@@ -1566,6 +1537,7 @@ locations: !!omap
     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]},
@@ -1574,6 +1546,7 @@ locations: !!omap
     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]},
@@ -1585,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [NORTH, CAVER, PASSA], action: [goto, LOC_WATERFALL]},
@@ -1597,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [SOUTH], action: [goto, LOC_NARROW]},
@@ -1607,6 +1582,7 @@ locations: !!omap
     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]},
@@ -1615,6 +1591,7 @@ locations: !!omap
     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: [
@@ -1630,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.'
+      maptag: !!null
     conditions: {FLUID: true, DEEP: true}
     sound: STREAM_SPLASHES
     travel: [
@@ -1643,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [WEST, OUT], action: [goto, LOC_SWISSCHEESE]},
@@ -1654,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [SE], action: [goto, LOC_SWISSCHEESE]},
@@ -1668,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     sound: NO_MEANING
     travel: [
@@ -1681,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     hints: [*dark]
     travel: [
@@ -1694,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.'
+      maptag: !!null
     conditions: {DEEP: true, LIT: true}
     hints: [*dark]
     travel: [
@@ -1707,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     hints: [*dark]
     travel: [
@@ -1718,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [DOWN, SHELL, OUT], action: [goto, LOC_SHELLROOM]},
@@ -1726,10 +1711,11 @@ locations: !!omap
     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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [UPWAR, HALL], action: [goto, LOC_ARCHED]},
@@ -1744,6 +1730,7 @@ locations: !!omap
     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]},
@@ -1753,6 +1740,7 @@ locations: !!omap
     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]},
@@ -1766,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [UPWAR], action: [goto, LOC_COMPLEX]},
@@ -1776,7 +1765,8 @@ locations: !!omap
     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]},
@@ -1793,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.'
+      maptag: !!null
     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]},
@@ -1812,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     hints: [*jade]
     sound: WIND_WHISTLES
@@ -1830,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [WEST], action: [goto, LOC_THREEJUNCTION]},
@@ -1842,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.'
-    conditions: {DEEP: true}
+      maptag: !!null
+    conditions: {DEEP: true, ALLALIKE: true}
     travel: [
       {verbs: [NORTH], action: [goto, LOC_SECRET2]},
       {verbs: [DOWN, JUMP, CLIMB], cond: [pct, 40],
@@ -1854,7 +1848,8 @@ locations: !!omap
     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]},
@@ -1876,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.'
+      maptag: !!null
     conditions: {FLUID: true, DEEP: true}
     sound: STREAM_SPLASHES
     travel: [
@@ -1883,11 +1879,12 @@ locations: !!omap
       {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
-    conditions: {DEEP: true}
+      maptag: !!null
+    conditions: {DEEP: true, ALLALIKE: true}
     travel: [
       {verbs: [SE], action: [goto, LOC_ALIKE13]},
     ]
@@ -1906,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.'
+      maptag: 'Repository ne end'
     conditions: {DEEP: true, LIT: true}
     sound: MURMURING_SNORING
     travel: [
@@ -1923,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.'
+      maptag: 'Repository sw end'
     conditions: {DEEP: true, LIT: true}
     sound: SNAKES_HISSING
     travel: [
@@ -1936,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [SW], action: [goto, LOC_WINDING]},
@@ -1954,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.'
+      maptag: !!null
     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
+      maptag: 'Secret canyon'
     conditions: {DEEP: true}
     travel: [
       {verbs: [NORTH, OUT], action: [goto, LOC_SECRET1]},
@@ -1972,6 +1976,7 @@ locations: !!omap
     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]},
@@ -1981,6 +1986,7 @@ locations: !!omap
     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]},
@@ -1992,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.'
+      maptag: !!null
     conditions: {NOARRR: true, DEEP: true}
     travel: [
       {verbs: [NE], action: [goto, LOC_CORRIDOR]},
@@ -2008,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.'
+      maptag: 'e/w canyon'
     conditions: {NOARRR: true, DEEP: true}
     sound: DULL_RUMBLING
     travel: [
@@ -2023,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.'
+      maptag: !!null
     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]},
     ]
@@ -2039,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.'
+      maptag: "Warm junction"
     conditions: {NOARRR: true, DEEP: true}
     sound: LOUD_ROAR
     travel: [
@@ -2069,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.'
+      maptag: !!null
     conditions: {NOARRR: true, LIT: true, DEEP: true}
     hints: [*jade]
     sound: TOTAL_ROAR
@@ -2087,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.'
+      maptag: !!null
     conditions: {NOARRR: true, DEEP: true}
     sound: DULL_RUMBLING
     travel: [
@@ -2096,10 +2108,11 @@ locations: !!omap
     ]
 - 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.'
+      maptag: !!null
     conditions: {NOARRR: true, DEEP: true}
     travel: [
       {verbs: [NORTH, UPWAR, FORK], action: [goto, LOC_FORK]},
@@ -2112,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.'
+      maptag: !!null
     conditions: {NOARRR: true, DEEP: true}
     travel: [
       {verbs: [WEST, UPWAR], action: [goto, LOC_LIMESTONE]},
@@ -2126,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.'
+      maptag: !!null
     conditions: {NOARRR: true, DEEP: true}
     travel: [
       {verbs: [WEST, OUT], action: [goto, LOC_BARRENFRONT]},
@@ -2136,7 +2151,8 @@ locations: !!omap
     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]},
@@ -2153,7 +2169,8 @@ locations: !!omap
     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]},
@@ -2170,7 +2187,8 @@ locations: !!omap
     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]},
@@ -2187,7 +2205,8 @@ locations: !!omap
     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]},
@@ -2204,7 +2223,8 @@ locations: !!omap
     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]},
@@ -2221,7 +2241,8 @@ locations: !!omap
     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]},
@@ -2238,7 +2259,8 @@ locations: !!omap
     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]},
@@ -2255,7 +2277,8 @@ locations: !!omap
     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]},
@@ -2272,7 +2295,8 @@ locations: !!omap
     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]},
@@ -2289,7 +2313,8 @@ locations: !!omap
     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]},
@@ -2299,6 +2324,7 @@ locations: !!omap
     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]},
@@ -2308,6 +2334,7 @@ locations: !!omap
     description:
       long: 'There is no way to go that direction.'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_DEADEND13]},
@@ -2316,6 +2343,7 @@ locations: !!omap
     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: [
@@ -2327,6 +2355,7 @@ locations: !!omap
     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]},
@@ -2335,6 +2364,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2347,6 +2377,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2359,6 +2390,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2370,6 +2402,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2380,6 +2413,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2391,6 +2425,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2403,6 +2438,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2415,6 +2451,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2427,6 +2464,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2439,6 +2477,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2451,6 +2490,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2463,6 +2503,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2475,6 +2516,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2487,6 +2529,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2499,6 +2542,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2511,6 +2555,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2522,6 +2567,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2533,6 +2579,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2545,6 +2592,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2557,6 +2605,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2569,6 +2618,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2581,6 +2631,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
+      maptag: 'Forest.'
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
     travel: [
@@ -2596,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.'
+      maptag: !!null
     conditions: {ABOVE: true, LIT: true}
     travel: [
       {verbs: [JUMP], action: [goto, LOC_NOMAKE]},
@@ -2607,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.'
+      maptag: !!null
     conditions: {FLUID: true, DEEP: true}
     sound: TOTAL_ROAR
     loud: true
@@ -2620,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.'
+      maptag: !!null
     conditions: {FLUID: true, DEEP: true}
     sound: WATERS_CRASHING
     travel: [
@@ -2632,6 +2686,7 @@ locations: !!omap
     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]},
@@ -2641,6 +2696,7 @@ locations: !!omap
     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]},
@@ -2654,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.'
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [DOWN, SE], action: [goto, LOC_STEEP]},
@@ -2663,10 +2720,11 @@ locations: !!omap
     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]},
-      {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:
@@ -2675,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
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_NOWHERE]},
@@ -2686,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
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_CLIFFLEDGE]},
@@ -2696,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.'
+      maptag: 'Clifftop'
     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
+      maptag: 'Dead end.'
     conditions: {DEEP: true}
     travel: [
       {verbs: [SW, OUT, CRAWL], action: [goto, LOC_CLIFFLEDGE]},
@@ -2713,6 +2775,7 @@ locations: !!omap
     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]},
@@ -2721,6 +2784,7 @@ locations: !!omap
     description:
       long: '>>Foof!<<'
       short: !!null
+      maptag: !!null
     conditions: {}
     travel: [
       {verbs: [], action: [goto, LOC_DEBRIS]},
@@ -2729,6 +2793,7 @@ locations: !!omap
     description:
       long: '>>Foof!<<'
       short: !!null
+      maptag: !!null
     conditions: {ABOVE: true}
     travel: [
       {verbs: [], action: [goto, LOC_BUILDING]},
@@ -2737,6 +2802,7 @@ locations: !!omap
     description:
       long: '>>Foof!<<'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_Y2]},
@@ -2745,6 +2811,7 @@ locations: !!omap
     description:
       long: '>>Foof!<<'
       short: !!null
+      maptag: !!null
     conditions: {ABOVE: true}
     travel: [
       {verbs: [], action: [goto, LOC_BUILDING]},
@@ -2753,6 +2820,7 @@ locations: !!omap
     description:
       long: '>>Foof!<<'
       short: !!null
+      maptag: !!null
     conditions: {DEEP: true}
     travel: [
       {verbs: [], action: [goto, LOC_PLOVER]},
@@ -2761,11 +2829,24 @@ locations: !!omap
     description:
       long: '>>Foof!<<'
       short: !!null
+      maptag: !!null
     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: |-
@@ -2795,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.'
-- 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.
@@ -2803,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!'
-- 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!'
-- 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.'
-- 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.
-- 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.'
@@ -2841,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.'
-- 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.'
-- HUH_MAN: 'Huh?'
+- HUH_MAN: &huh_man 'Huh?'
 - 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!'
-- 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.'
@@ -2880,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.'
-- 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.'
@@ -2949,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.'
-- 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: |-
@@ -2957,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.'
+- 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.
-- 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".
@@ -2975,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.'
-- 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_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.'
-- 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: |-
@@ -3025,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."
-- 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.'
-- 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
-- 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
@@ -3073,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.'
-- 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: |-
-    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.
-- 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: |-
-    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: |-
-    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.'
@@ -3131,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!!'
+- 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
-- 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.'
+- 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.
-# 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
@@ -3159,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.
+- NUMERIC_REQUIRED:
+    This command requires a numeric argument. 
 
 classes: 
 - threshold: 0
@@ -3183,10 +3242,10 @@ classes:
   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
-    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
@@ -3206,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.
-  
+
+# Objects names OBJ_* are not made visible by the map-graph generator.
+# Don't change these casually.
 objects: !!omap
 - NO_OBJECT:
     inventory: !!null
@@ -3221,9 +3282,10 @@ objects: !!omap
     words: ['lamp', 'lante']
     inventory: 'Brass lantern'
     locations: LOC_BUILDING
+    states: [LAMP_DARK, LAMP_BRIGHT]
     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.'
@@ -3232,9 +3294,10 @@ objects: !!omap
     inventory: '*grate'
     locations: [LOC_GRATE, LOC_BELOWGRATE]
     immovable: true
+    states: [GRATE_CLOSED, GRATE_OPEN]  
     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.'
@@ -3261,23 +3324,25 @@ objects: !!omap
     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'
-    locations: LOC_BIRD
+    locations: LOC_BIRDCHAMBER
+    states: [BIRD_UNCAGED, BIRD_CAGED, BIRD_FOREST_UNCAGED]
     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.'
     - |-
-      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.'
     - |- 
@@ -3291,9 +3356,10 @@ objects: !!omap
     inventory: '*rusty door'
     locations: LOC_IMMENSE
     immovable: true
+    states: [DOOR_RUSTED, DOOR_UNRUSTED]
     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.'
     - |-
@@ -3310,20 +3376,25 @@ objects: !!omap
     inventory: '*snake'
     locations: LOC_KINGHALL
     immovable: true
+    states: [SNAKE_BLOCKS, SNAKE_CHASED]
     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.'
+    - ''
 - FISSURE:
     words: ['fissu']
     inventory: '*fissure'
     locations: [LOC_EASTBANK, LOC_WESTBANK]
     immovable: true
+    states: [UNBRIDGED, BRIDGED]
     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'
@@ -3331,7 +3402,7 @@ objects: !!omap
     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!"'
@@ -3361,7 +3432,7 @@ objects: !!omap
     - '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']
@@ -3384,10 +3455,15 @@ objects: !!omap
     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'
@@ -3403,19 +3479,29 @@ objects: !!omap
     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
+    states: [PLANT_THIRSTY, PLANT_BELLOWING, PLANT_GROWN]
     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.'
-    - '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.'
@@ -3447,9 +3533,10 @@ objects: !!omap
     words: ['axe']
     inventory: 'Dwarf''s axe'
     locations: LOC_NOWHERE
+    states: [AXE_HERE, AXE_LOST]
     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.'
@@ -3470,10 +3557,11 @@ objects: !!omap
     inventory: '*dragon'
     locations: [LOC_SECRET4, LOC_SECRET6]
     immovable: true
+    states: [DRAGON_BARS, DRAGON_DEAD, DRAGON_BLOODLESS]
     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:
     - ''
     - |-
@@ -3489,21 +3577,37 @@ objects: !!omap
     inventory: '*chasm'
     locations: [LOC_SWCHASM, LOC_NECHASM]
     immovable: true
+    states: [TROLL_BRIDGE, BRIDGE_WRECKED]
     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
-    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.'
+    - ''
 - TROLL2:
     words: ['troll']
     inventory: '*phony troll'
@@ -3513,14 +3617,20 @@ objects: !!omap
     - 'The troll is nowhere to be seen.'
 - BEAR:
     words: ['bear']
-    inventory: !!null # bear uses rtext 141
+    inventory: !!null
     locations: LOC_BARRENROOM
     immovable: true
+    states: [UNTAMED_BEAR, SITTING_BEAR, CONTENTED_BEAR, BEAR_DEAD]
     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'
@@ -3543,9 +3653,14 @@ objects: !!omap
     inventory: '*vending machine'
     locations: LOC_DEADEND13
     immovable: true
+    states: [VEND_BLOCKS, VEND_UNBLOCKS]
     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.'
@@ -3556,9 +3671,10 @@ objects: !!omap
     words: ['batte']
     inventory: 'Batteries'
     locations: LOC_NOWHERE
+    states: [FRESH_BATTERIES, DEAD_BATTERIES]
     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'
@@ -3579,10 +3695,11 @@ objects: !!omap
     inventory: '*urn'
     locations: LOC_CLIFF
     immovable: true
+    states: [URN_EMPTY, URN_DARK, URN_LIT]
     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.'
@@ -3592,9 +3709,10 @@ objects: !!omap
     inventory: '*cavity'
     locations: LOC_NOWHERE
     immovable: true
+    states: [CAVITY_FULL, CAVITY_EMPTY]
     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'
@@ -3607,11 +3725,14 @@ objects: !!omap
     inventory: '*reservoir'
     locations: [LOC_RESERVOIR, LOC_RESNORTH]
     immovable: true
+    states: [WATERS_UNPARTED, WATERS_PARTED]
     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.'
-- OBJ_46:
+    - 'The waters have parted to form a narrow path across the reservoir.'
+- RABBITFOOT:
     words: ['appen', 'lepor']
     inventory: 'Leporine appendage'
     locations: LOC_FOREST22
@@ -3640,9 +3761,10 @@ objects: !!omap
     inventory: '*sign'
     locations: LOC_ANTEROOM
     immovable: true
+    states: [INGAME_SIGN, ENDGAME_SIGN]
     descriptions:
-    - [INGAME_SIGN, '']
-    - [ENDGAME_SIGN, '']
+    - ''
+    - ''
     texts:
     - |-
       Cave under construction beyond this point.
@@ -3696,10 +3818,11 @@ objects: !!omap
     inventory: 'Golden eggs'
     locations: LOC_GIANTROOM
     treasure: true
+    states: [EGGS_HERE, EGGS_VANISHED, EGGS_DONE]
     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'
@@ -3712,14 +3835,14 @@ objects: !!omap
     inventory: 'Ming vase'
     locations: LOC_ORIENTAL
     treasure: true
+    states: [VASE_WHOLE, VASE_DROPPED, VASE_BROKEN]
     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:
-    - ''
-    - ''
+    - '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']
@@ -3749,10 +3872,11 @@ objects: !!omap
     locations: [LOC_SECRET4, LOC_SECRET6]
     immovable: true
     treasure: true
+    states: [RUG_FLOOR, RUG_DRAGON, RUG_HOVER]
     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'
@@ -3766,10 +3890,11 @@ objects: !!omap
     locations: LOC_BARRENROOM
     immovable: true
     treasure: true
+    states: [CHAIN_HEAP, CHAINING_BEAR, CHAIN_FIXED]
     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'
@@ -3790,9 +3915,10 @@ objects: !!omap
     inventory: 'Amber gemstone'
     locations: LOC_NOWHERE
     treasure: true
+    states: [AMBER_IN_URN, AMBER_IN_ROCK]
     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'
@@ -3820,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 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: |-
-        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!'
 
-specials: !!omap
-- SPC_0:
+actions: !!omap
+- ACT_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']
-- SPC_2:
-    message: !!null
+- FIE:
+    message: *not_knowhow
     words: ['fie']
-- SPC_3:
-    message: !!null
+- FOE:
+    message: *not_knowhow
     words: ['foe']
-- SPC_4:
-    message: !!null
+- FOO:
+    message: *not_knowhow
     words: ['foo']
-- SPC_5:
-    message: !!null
+- FUM:
+    message: *not_knowhow
     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']
-- 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']
-- 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
@@ -3887,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', '?']
-- SPC_54:
+    noaction: true
+- 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-
@@ -3899,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']
-- SPC_66:
+    noaction: true
+- DIG:
     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']
-- 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
-      pit leading down to water.'
+      pit leading down to water.
     words: ['mist']
-- SPC_79:
+    noaction: true
+- FBOMB:
     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']
-- 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
@@ -3943,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']
-- SPC_147:
+    noaction: true
+- SWIM:
     message: *not_knowhow
     words: ['swim']
-- SPC_246:
+    noaction: true
+- WIZARD:
     message: 'Wizards are not to be disturbed by such as you.'
     words: ['wizar']
-- SPC_271:
+    noaction: true
+- "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.
@@ -3964,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']
-- 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']
+    noaction: true
 
 # end