Capture Section 3 in YAML.
authorEric S. Raymond <esr@thyrsus.com>
Sun, 25 Jun 2017 20:05:44 +0000 (16:05 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Sun, 25 Jun 2017 23:22:46 +0000 (19:22 -0400)
The temporary script travel.py emitted this YAML from the Section 3 data.
It will be removed when the compilation from YAML to an initializer is done.

adventure.yaml
travel.py

index e01ca5cc2629535c04855936d3a131590a8d8110..14a2ab963cc3212db7e66db18925748c903792d5 100644 (file)
 #                    this location. (This is why locations has to follow hints.)
 #      sound:        Label for a location sound.
 #      loud:         If true, object sounds are drowned out at this location.
-#    All attributes are optional except the long description. Order of
-#    locations is not significant.
+#      travel:       A list of movement rules.  They're applied in the order
+#                    they appear.  For a rule to fire, (1) the movement command
+#                    must be a synonym for one of its verbs, and (2) the
+#                    condition, if present, must evaluate to true. In that case
+#                    the action fires.  The action may be a goto (move to
+#                    a named location) a speak (utter a named message), or
+#                    a special (branch to special case in movement code).
+#                    The conditional may be one of the following:
+#                      [pct N]       Roll a die, n% chance of success
+#                      [carry OBJ]   Must be carrying named object
+#                      [with OBJ]    Must be carrying or in room with
+#                      [not OBJ N]   Property of named OBJ must not be N
+#    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).
@@ -510,83 +522,185 @@ locations: !!omap
       long: !!null
       short: !!null
     conditions: {}
+    travel: [
+    ]
 - LOC_START:
     description:
       long: 'You are standing at the end of a road before a small brick building.\nAround you is a forest.  A small stream flows out of the building and\ndown a gully.'
       short: 'You''re in front of building.'
     conditions: {FLUID: true, ABOVE: true, LIT: true}
     sound: STREAM_GURGLES
+    travel: [
+      {verbs: ['ROAD', 'WEST', 'UPWAR'], action: ["goto", LOC_HILL]},
+      {verbs: ['ENTER', 'BUILD', 'INWAR', 'EAST'], action: ["goto", LOC_BUILDING]},
+      {verbs: ['DOWNS', 'GULLY', 'STREA', 'SOUTH', 'D'], action: ["goto", LOC_VALLEY]},
+      {verbs: ['FORES', 'NORTH'], action: ["goto", LOC_FOREST1]},
+      {verbs: ['DEPRE'], action: ["goto", LOC_GRATE]},
+    ]
 - LOC_HILL:
     description:
       long: 'You have walked up a hill, still in the forest.  The road slopes back\ndown the other side of the hill.  There is a building in the distance.'
       short: 'You''re at hill in road.'
     conditions: {ABOVE: true, LIT: true}
+    travel: [
+      {verbs: ['BUILD', 'EAST'], action: ["goto", LOC_START]},
+      {verbs: ['WEST'], action: ["goto", LOC_ROADEND]},
+      {verbs: ['NORTH'], action: ["goto", LOC_FOREST20]},
+      {verbs: ['SOUTH', 'FORES'], action: ["goto", LOC_FOREST13]},
+      {verbs: ['D'], action: ["speak", WHICH_WAY]},
+    ]
 - LOC_BUILDING:
     description:
       long: 'You are inside a building, a well house for a large spring.'
       short: 'You''re inside building.'
     conditions: {FLUID: true, ABOVE: true, LIT: true}
     sound: STREAM_GURGLES
+    travel: [
+      {verbs: ['OUT', 'OUTDO', 'WEST'], action: ["goto", LOC_START]},
+      {verbs: ['XYZZY'], action: ["goto", LOC_FOOF1]},
+      {verbs: ['PLUGH'], action: ["goto", LOC_FOOF3]},
+      {verbs: ['DOWNS', 'STREA'], action: ["goto", LOC_SEWER]},
+    ]
 - LOC_VALLEY:
     description:
       long: 'You are in a valley in the forest beside a stream tumbling along a\nrocky bed.'
       short: 'You''re in valley.'
     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: ['DEPRE'], action: ["goto", LOC_GRATE]},
+      {verbs: ['STREA'], action: ["speak", UPSTREAM_DOWNSTREAM]},
+    ]
 - LOC_ROADEND:
     description:
       long: 'The road, which approaches from the east, ends here amid the trees.'
       short: 'You''re at end of road.'
     conditions: {ABOVE: true, LIT: true}
+    travel: [
+      {verbs: ['ROAD', 'EAST', 'UPWAR'], action: ["goto", LOC_HILL]},
+      {verbs: ['BUILD'], action: ["goto", LOC_START]},
+      {verbs: ['SOUTH', 'FORES'], action: ["goto", LOC_FOREST14]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST15]},
+      {verbs: ['NORTH'], action: ["goto", LOC_FOREST21]},
+    ]
 - LOC_CLIFF:
     description:
       long: 'The forest thins out here to reveal a steep cliff.  There is no way\ndown, but a small ledge can be seen to the west across the chasm.'
       short: 'You''re at cliff.'
     conditions: {ABOVE: true, NOBACK: true, LIT: true}
     hints: [*urn]
+    travel: [
+      {verbs: ['SOUTH', 'FORES'], action: ["goto", LOC_FOREST17]},
+      {verbs: ['EAST'], action: ["goto", LOC_FOREST19]},
+      {verbs: ['JUMP'], action: ["goto", LOC_NOMAKE]},
+    ]
 - LOC_SLIT:
     description:
       long: 'At your feet all the water of the stream splashes into a 2-inch slit\nin the rock.  Downstream the streambed is bare rock.'
       short: 'You''re at slit in streambed.'
     conditions: {FLUID: true, ABOVE: true, LIT: true}
     sound: STREAM_GURGLES
+    travel: [
+      {verbs: ['BUILD'], action: ["goto", LOC_START]},
+      {verbs: ['UPSTR', 'NORTH'], action: ["goto", LOC_VALLEY]},
+      {verbs: ['EAST', 'FORES'], action: ["goto", LOC_FOREST6]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST10]},
+      {verbs: ['DOWNS', 'BED', 'SOUTH', 'DEPRE'], action: ["goto", LOC_GRATE]},
+      {verbs: ['SLIT', 'STREA', 'D', 'INWAR', 'ENTER'], action: ["speak", DONT_FIT]},
+    ]
 - LOC_GRATE:
     description:
       long: 'You are in a 20-foot depression floored with bare dirt.  Set into the\ndirt is a strong steel grate mounted in concrete.  A dry streambed\nleads into the depression.'
       short: 'You''re outside grate.'
     conditions: {ABOVE: true, LIT: true}
     hints: [*grate, *jade]
+    travel: [
+      {verbs: ['EAST', 'FORES'], action: ["goto", LOC_FOREST7]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_FOREST10]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST9]},
+      {verbs: ['BUILD'], action: ["goto", LOC_START]},
+      {verbs: ['UPSTR', 'GULLY', 'NORTH'], action: ["goto", LOC_SLIT]},
+      {verbs: ['ENTER', 'INWAR', 'D'], cond: [not OBJ_3 0], action: ["goto", LOC_BELOWGRATE]},
+      {verbs: ['ENTER'], action: ["speak", GRATE_NOWAY]},
+    ]
 - LOC_BELOWGRATE:
     description:
       long: 'You are in a small chamber beneath a 3x3 steel grate to the surface.\nA low crawl over cobbles leads inward to the west.'
       short: 'You''re below the grate.'
     conditions: {LIT: true}
+    travel: [
+      {verbs: ['OUT', 'UPWAR'], cond: [not OBJ_3 0], action: ["goto", LOC_GRATE]},
+      {verbs: ['OUT'], action: ["speak", GRATE_NOWAY]},
+      {verbs: ['CRAWL', 'COBBL', 'INWAR', 'WEST'], action: ["goto", LOC_COBBLE]},
+      {verbs: ['PIT'], action: ["goto", LOC_PITTOP]},
+      {verbs: ['DEBRI'], action: ["goto", LOC_DEBRIS]},
+    ]
 - LOC_COBBLE:
     description:
       long: 'You are crawling over cobbles in a low passage.  There is a dim light\nat the east end of the passage.'
       short: 'You''re in cobble crawl.'
     conditions: {LIT: true}
+    travel: [
+      {verbs: ['OUT', 'SURFA', 'NULL', 'EAST'], action: ["goto", LOC_BELOWGRATE]},
+      {verbs: ['INWAR', 'DARK', 'WEST', 'DEBRI'], action: ["goto", LOC_DEBRIS]},
+      {verbs: ['PIT'], action: ["goto", LOC_PITTOP]},
+    ]
 - LOC_DEBRIS:
     description:
       long: 'You are in a debris room filled with stuff washed in from the surface.\nA low wide passage with cobbles becomes plugged with mud and debris\nhere, but an awkward canyon leads upward and west.  In the mud someone\nhas scrawled, "MAGIC WORD XYZZY".'
       short: 'You''re in debris room.'
     conditions: {}
+    travel: [
+      {verbs: ['DEPRE'], cond: [not OBJ_3 0], action: ["goto", LOC_GRATE]},
+      {verbs: ['ENTRA'], action: ["goto", LOC_BELOWGRATE]},
+      {verbs: ['CRAWL', 'COBBL', 'PASSA', 'LOW', 'EAST'], action: ["goto", LOC_COBBLE]},
+      {verbs: ['CANYO', 'INWAR', 'UPWAR', 'WEST'], action: ["goto", LOC_AWKWARD]},
+      {verbs: ['XYZZY'], action: ["goto", LOC_FOOF2]},
+      {verbs: ['PIT'], action: ["goto", LOC_PITTOP]},
+    ]
 - LOC_AWKWARD:
     description:
       long: 'You are in an awkward sloping east/west canyon.'
       short: !!null
     conditions: {}
+    travel: [
+      {verbs: ['DEPRE'], cond: [not OBJ_3 0], action: ["goto", LOC_GRATE]},
+      {verbs: ['ENTRA'], action: ["goto", LOC_BELOWGRATE]},
+      {verbs: ['D', 'EAST', 'DEBRI'], action: ["goto", LOC_DEBRIS]},
+      {verbs: ['INWAR', 'UPWAR', 'WEST'], action: ["goto", LOC_BIRD]},
+      {verbs: ['PIT'], action: ["goto", LOC_PITTOP]},
+    ]
 - LOC_BIRD:
     description:
       long: 'You are in a splendid chamber thirty feet high.  The walls are frozen\nrivers of orange stone.  An awkward canyon and a good passage exit\nfrom east and west sides of the chamber.'
       short: 'You''re in bird chamber.'
     conditions: {}
     hints: [*bird] 
+    travel: [
+      {verbs: ['DEPRE'], cond: [not OBJ_3 0], action: ["goto", LOC_GRATE]},
+      {verbs: ['ENTRA'], action: ["goto", LOC_BELOWGRATE]},
+      {verbs: ['DEBRI'], action: ["goto", LOC_DEBRIS]},
+      {verbs: ['CANYO', 'EAST'], action: ["goto", LOC_AWKWARD]},
+      {verbs: ['PASSA', 'PIT', 'WEST'], action: ["goto", LOC_PITTOP]},
+    ]
 - LOC_PITTOP:
     description:
       long: 'At your feet is a small pit breathing traces of white mist.  An east\npassage ends here except for a small crack leading on.'
       short: 'You''re at top of small pit.'
     conditions: {}
+    travel: [
+      {verbs: ['DEPRE'], cond: [not OBJ_3 0], action: ["goto", LOC_GRATE]},
+      {verbs: ['ENTRA'], action: ["goto", LOC_BELOWGRATE]},
+      {verbs: ['DEBRI'], action: ["goto", LOC_DEBRIS]},
+      {verbs: ['PASSA', 'EAST'], action: ["goto", LOC_BIRD]},
+      {verbs: ['D', 'PIT', 'STEPS'], cond: [carry OBJ_50], action: ["goto", LOC_NECKBROKE]},
+      {verbs: ['D'], action: ["goto", LOC_MISTHALL]},
+      {verbs: ['CRACK', 'WEST'], action: ["goto", LOC_CRACK]},
+    ]
 - LOC_MISTHALL:
     description:
       long: 'You are at one end of a vast hall stretching forward out of sight to\nthe west.  There are openings to either side.  Nearby, a wide stone\nstaircase leads downward.  The hall is filled with wisps of white mist\nswaying to and fro almost as if alive.  A cold wind blows up the\nstaircase.  There is a passage at the top of a dome behind you.'
@@ -594,263 +708,498 @@ locations: !!omap
     conditions: {DEEP: true}
     hints: [*jade]
     sound: WIND_WHISTLES
+    travel: [
+      {verbs: ['LEFT', 'SOUTH'], action: ["goto", LOC_NUGGET]},
+      {verbs: ['FORWA', 'HALL', 'WEST'], action: ["goto", LOC_EASTBANK]},
+      {verbs: ['STAIR', 'D', 'NORTH'], action: ["goto", LOC_KINGHALL]},
+      {verbs: ['UPWAR', 'PIT', 'STEPS', 'DOME', 'PASSA', 'EAST'], cond: [carry OBJ_50], action: ["goto", LOC_DOME]},
+      {verbs: ['UPWAR'], action: ["goto", LOC_PITTOP]},
+      {verbs: ['Y2'], action: ["goto", LOC_JUMBLE]},
+    ]
 - LOC_CRACK:
     description:
       long: 'The crack is far too small for you to follow.  At its widest it is\nbarely wide enough to admit your foot.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: [], action: ["goto", LOC_PITTOP]},
+    ]
 - LOC_EASTBANK:
     description:
       long: 'You are on the east bank of a fissure slicing clear across the hall.\nThe mist is quite thick here, and the fissure is too wide to jump.'
       short: 'You''re on east bank of fissure.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['HALL', 'EAST'], action: ["goto", LOC_MISTHALL]},
+      {verbs: ['JUMP'], cond: [not OBJ_12 0], action: ["speak", CROSS_BRIDGE]},
+      {verbs: ['FORWA'], cond: [not OBJ_12 1], action: ["goto", LOC_NOMAKE]},
+      {verbs: ['OVER', 'ACROS', 'WEST', 'CROSS'], cond: [not OBJ_12 1], action: ["speak", NO_CROSS]},
+      {verbs: ['OVER'], action: ["goto", LOC_WESTBANK]},
+    ]
 - LOC_NUGGET:
     description:
       long: 'This is a low room with a crude note on the wall.  The note says,\n"You won''t get it up the steps".'
       short: 'You''re in nugget-of-gold room.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['HALL', 'OUT', 'NORTH'], action: ["goto", LOC_MISTHALL]},
+    ]
 - LOC_KINGHALL:
     description:
       long: 'You are in the Hall of the Mountain King, with passages off in all\ndirections.'
       short: 'You''re in Hall of Mt King.'
     conditions: {DEEP: true}
     hints: [*snake]
+    travel: [
+      {verbs: ['STAIR', 'UPWAR', 'EAST'], action: ["goto", LOC_MISTHALL]},
+      {verbs: ['NORTH', 'RIGHT'], cond: [not OBJ_11 0], action: ["goto", LOC_FLOORHOLE]},
+      {verbs: ['SOUTH', 'LEFT'], cond: [not OBJ_11 0], action: ["goto", LOC_SOUTHSIDE]},
+      {verbs: ['WEST', 'FORWA'], cond: [not OBJ_11 0], action: ["goto", LOC_WESTSIDE]},
+      {verbs: ['NORTH'], action: ["goto", LOC_SNAKEBLOCK]},
+      {verbs: ['SW'], cond: [pct 35], action: ["goto", LOC_SECRET3]},
+      {verbs: ['SW'], cond: [with OBJ_11], action: ["goto", LOC_SNAKEBLOCK]},
+      {verbs: ['SECRE'], action: ["goto", LOC_SECRET3]},
+    ]
 - LOC_NECKBROKE:
     description:
       long: 'You are at the bottom of the pit with a broken neck.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: [], action: ["goto", LOC_NOWHERE]},
+    ]
 - LOC_NOMAKE:
     description:
       long: 'You didn''t make it.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: [], action: ["goto", LOC_NOWHERE]},
+    ]
 - LOC_DOME:
     description:
       long: 'The dome is unclimbable.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: [], action: ["goto", LOC_MISTHALL]},
+    ]
 - LOC_WESTEND:
     description:
       long: 'You are at the west end of the Twopit Room.  There is a large hole in\nthe wall above the pit at this end of the room.'
       short: 'You''re at west end of Twopit Room.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['EAST', 'ACROS'], action: ["goto", LOC_EASTEND]},
+      {verbs: ['WEST', 'SLAB'], action: ["goto", LOC_SLAB]},
+      {verbs: ['D', 'PIT'], action: ["goto", LOC_WESTPIT]},
+      {verbs: ['HOLE'], action: ["speak", TOO_FAR]},
+    ]
 - LOC_EASTPIT:
     description:
       long: 'You are at the bottom of the eastern pit in the Twopit Room.  There is\na small pool of oil in one corner of the pit.'
       short: 'You''re in east pit.'
     conditions: {FLUID: true, DEEP: true, OILY: true}
+    travel: [
+      {verbs: ['UPWAR', 'OUT'], action: ["goto", LOC_EASTEND]},
+    ]
 - LOC_WESTPIT:
     description:
       long: 'You are at the bottom of the western pit in the Twopit Room.  There is\na large hole in the wall about 25 feet above you.'
       short: 'You''re in west pit.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['UPWAR', 'OUT'], action: ["goto", LOC_WESTEND]},
+      {verbs: ['CLIMB'], cond: [not OBJ_24 2], action: ["goto", LOC_BUILDING1]},
+      {verbs: ['CLIMB'], action: ["goto", LOC_CLIMBSTALK]},
+    ]
 - LOC_CLIMBSTALK:
     description:
       long: 'You clamber up the plant and scurry through the hole at the top.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: [], action: ["goto", LOC_NARROW]},
+    ]
 - LOC_WESTBANK:
     description:
       long: 'You are on the west side of the fissure in the Hall of Mists.'
       short: 'You''re on west bank of fissure.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['JUMP'], cond: [not OBJ_12 0], action: ["speak", CROSS_BRIDGE]},
+      {verbs: ['FORWA'], cond: [not OBJ_12 1], action: ["goto", LOC_NOMAKE]},
+      {verbs: ['OVER', 'ACROS', 'EAST', 'CROSS'], cond: [not OBJ_12 1], action: ["speak", NO_CROSS]},
+      {verbs: ['OVER'], action: ["goto", LOC_EASTBANK]},
+      {verbs: ['NORTH'], action: ["goto", LOC_PARALLEL1]},
+      {verbs: ['WEST'], action: ["goto", LOC_MISTWEST]},
+    ]
 - LOC_FLOORHOLE:
     description:
       long: 'You are in a low n/s passage at a hole in the floor.  The hole goes\ndown to an e/w passage.'
       short: 'You''re in n/s passage above e/w passage.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['HALL', 'OUT', 'SOUTH'], action: ["goto", LOC_KINGHALL]},
+      {verbs: ['NORTH', 'Y2'], action: ["goto", LOC_Y2]},
+      {verbs: ['D', 'HOLE'], action: ["goto", LOC_BROKEN]},
+    ]
 - LOC_SOUTHSIDE:
     description:
       long: 'You are in the south side chamber.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['HALL', 'OUT', 'NORTH'], action: ["goto", LOC_KINGHALL]},
+    ]
 - LOC_WESTSIDE:
     description:
       long: 'You are in the west side chamber of the Hall of the Mountain King.\nA passage continues west and up here.'
       short: 'You''re in the west side chamber.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['HALL', 'OUT', 'EAST'], action: ["goto", LOC_KINGHALL]},
+      {verbs: ['WEST', 'UPWAR'], action: ["goto", LOC_CROSSOVER]},
+    ]
 - LOC_BUILDING1:
     description:
       long: ''
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: [], cond: [not OBJ_24 1], action: ["goto", LOC_NOCLIMB]},
+      {verbs: [], action: ["goto", LOC_PLANTTOP]},
+    ]
 - LOC_SNAKEBLOCK:
     description:
       long: 'You can''t get by the snake.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: [], action: ["goto", LOC_KINGHALL]},
+    ]
 - LOC_Y2:
     description:
       long: 'You are in a large room, with a passage to the south, a passage to the\nwest, and a wall of broken rock to the east.  There is a large "Y2" on\na rock in the room''s center.'
       short: 'You''re at "Y2".'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['PLUGH'], action: ["goto", LOC_FOOF4]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_FLOORHOLE]},
+      {verbs: ['EAST', 'WALL', 'BROKE'], action: ["goto", LOC_JUMBLE]},
+      {verbs: ['WEST'], action: ["goto", LOC_WINDOW1]},
+      {verbs: ['PLOVE'], cond: [carry OBJ_59], action: ["special", 2]},
+      {verbs: ['PLOVE'], action: ["goto", LOC_FOOF5]},
+    ]
 - LOC_JUMBLE:
     description:
       long: 'You are in a jumble of rock, with cracks everywhere.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['D', 'Y2'], action: ["goto", LOC_Y2]},
+      {verbs: ['UPWAR'], action: ["goto", LOC_MISTHALL]},
+    ]
 - LOC_WINDOW1:
     description:
       long: 'You''re at a low window overlooking a huge pit, which extends up out of\nsight.  A floor is indistinctly visible over 50 feet below.  Traces of\nwhite mist cover the floor of the pit, becoming thicker to the right.\nMarks in the dust around the window would seem to indicate that\nsomeone has been here recently.  Directly across the pit from you and\n25 feet away there is a similar window looking into a lighted room.  A\nshadowy figure can be seen there peering back at you.'
       short: 'You''re at window on pit.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['EAST', 'Y2'], action: ["goto", LOC_Y2]},
+      {verbs: ['JUMP'], action: ["goto", LOC_NECKBROKE]},
+    ]
 - LOC_BROKEN:
     description:
       long: 'You are in a dirty broken passage.  To the east is a crawl.  To the\nwest is a large passage.  Above you is a hole to another passage.'
       short: 'You''re in dirty passage.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['EAST', 'CRAWL'], action: ["goto", LOC_SMALLPITBRINK]},
+      {verbs: ['UPWAR', 'HOLE'], action: ["goto", LOC_FLOORHOLE]},
+      {verbs: ['WEST'], action: ["goto", LOC_DUSTY]},
+      {verbs: ['BEDQU'], action: ["goto", LOC_BEDQUILT]},
+    ]
 - LOC_SMALLPITBRINK:
     description:
       long: 'You are on the brink of a small clean climbable pit.  A crawl leads\nwest.'
       short: 'You''re at brink of small pit.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['WEST', 'CRAWL'], action: ["goto", LOC_BROKEN]},
+      {verbs: ['D', 'PIT', 'CLIMB'], action: ["goto", LOC_SMALLPIT]},
+    ]
 - LOC_SMALLPIT:
     description:
       long: 'You are in the bottom of a small pit with a little stream, which\nenters and exits through tiny slits.'
       short: 'You''re at bottom of pit with stream.'
     conditions: {FLUID: true, DEEP: true}
     sound: STREAM_GURGLES
+    travel: [
+      {verbs: ['CLIMB', 'UPWAR', 'OUT'], action: ["goto", LOC_SMALLPITBRINK]},
+      {verbs: ['SLIT', 'STREA', 'D', 'UPSTR', 'DOWNS', 'ENTER', 'INWAR'], action: ["speak", DONT_FIT]},
+    ]
 - LOC_DUSTY:
     description:
       long: 'You are in a large room full of dusty rocks.  There is a big hole in\nthe floor.  There are cracks everywhere, and a passage leading east.'
       short: 'You''re in dusty rock room.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['EAST', 'PASSA'], action: ["goto", LOC_BROKEN]},
+      {verbs: ['D', 'HOLE', 'FLOOR'], action: ["goto", LOC_COMPLEX]},
+      {verbs: ['BEDQU'], action: ["goto", LOC_BEDQUILT]},
+    ]
 - LOC_PARALLEL1:
     description:
       long: 'You have crawled through a very low wide passage parallel to and north\nof the Hall of Mists.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: [], action: ["goto", LOC_MISTWEST]},
+    ]
 - LOC_MISTWEST:
     description:
       long: 'You are at the west end of the Hall of Mists.  A low wide crawl\ncontinues west and another goes north.  To the south is a little\npassage 6 feet off the floor.'
       short: 'You''re at west end of Hall of Mists.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['SOUTH', 'UPWAR', 'PASSA', 'CLIMB'], action: ["goto", LOC_ALIKE1]},
+      {verbs: ['EAST'], action: ["goto", LOC_WESTBANK]},
+      {verbs: ['NORTH'], action: ["goto", LOC_PARALLEL2]},
+      {verbs: ['WEST', 'CRAWL'], action: ["goto", LOC_LONGEAST]},
+    ]
 - LOC_ALIKE1:
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
     hints: [*maze]
+    travel: [
+      {verbs: ['UPWAR'], action: ["goto", LOC_MISTWEST]},
+      {verbs: ['NORTH'], action: ["goto", LOC_ALIKE1]},
+      {verbs: ['EAST'], action: ["goto", LOC_ALIKE2]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_ALIKE4]},
+      {verbs: ['WEST'], action: ["goto", LOC_ALIKE11]},
+    ]
 - LOC_ALIKE2:
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
     hints: [*maze]
+    travel: [
+      {verbs: ['WEST'], action: ["goto", LOC_ALIKE1]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_ALIKE3]},
+      {verbs: ['EAST'], action: ["goto", LOC_ALIKE4]},
+    ]
 - LOC_ALIKE3:
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
     hints: [*maze]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_ALIKE2]},
+      {verbs: ['D'], action: ["goto", LOC_DEADEND3]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_ALIKE6]},
+      {verbs: ['NORTH'], action: ["goto", LOC_DEADEND9]},
+    ]
 - LOC_ALIKE4:
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     conditions: {DEEP: true, NOBACK: 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]},
+    ]
 - LOC_DEADEND1:
     description:
       long: 'Dead end'
       short: !!null
     conditions: {DEEP: true, NOARRR: true}
     hints: [*maze]
+    travel: [
+      {verbs: ['WEST', 'OUT'], action: ["goto", LOC_ALIKE4]},
+    ]
 - LOC_DEADEND2:
     description:
       long: 'Dead end'
       short: !!null
     conditions: {DEEP: true, NOARRR: true}
     hints: [*maze]
+    travel: [
+      {verbs: ['EAST', 'OUT'], action: ["goto", LOC_ALIKE4]},
+    ]
 - LOC_DEADEND3:
     description:
       long: 'Dead end'
       short: !!null
     conditions: {DEEP: true, NOARRR: true}
     hints: [*maze]
+    travel: [
+      {verbs: ['UPWAR', 'OUT'], action: ["goto", LOC_ALIKE3]},
+    ]
 - LOC_ALIKE5:
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
     hints: [*maze]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_ALIKE6]},
+      {verbs: ['WEST'], action: ["goto", LOC_ALIKE7]},
+    ]
 - LOC_ALIKE6:
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
     hints: [*maze]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_ALIKE3]},
+      {verbs: ['WEST'], action: ["goto", LOC_ALIKE5]},
+      {verbs: ['D'], action: ["goto", LOC_ALIKE7]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_ALIKE8]},
+    ]
 - LOC_ALIKE7:
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
     hints: [*maze]
+    travel: [
+      {verbs: ['WEST'], action: ["goto", LOC_ALIKE5]},
+      {verbs: ['UPWAR'], action: ["goto", LOC_ALIKE6]},
+      {verbs: ['EAST'], action: ["goto", LOC_ALIKE8]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_ALIKE9]},
+    ]
 - LOC_ALIKE8:
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
     hints: [*maze]
+    travel: [
+      {verbs: ['WEST'], action: ["goto", LOC_ALIKE6]},
+      {verbs: ['EAST'], action: ["goto", LOC_ALIKE7]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_ALIKE8]},
+      {verbs: ['UPWAR'], action: ["goto", LOC_ALIKE9]},
+      {verbs: ['NORTH'], action: ["goto", LOC_ALIKE10]},
+      {verbs: ['D'], action: ["goto", LOC_DEADEND11]},
+    ]
 - LOC_ALIKE9:
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
     hints: [*maze]
+    travel: [
+      {verbs: ['WEST'], action: ["goto", LOC_ALIKE7]},
+      {verbs: ['NORTH'], action: ["goto", LOC_ALIKE8]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_DEADEND4]},
+    ]
 - LOC_DEADEND4:
     description:
       long: 'Dead end'
       short: !!null
     conditions: {DEEP: true, NOARRR: true}
     hints: [*maze]
+    travel: [
+      {verbs: ['WEST', 'OUT'], action: ["goto", LOC_ALIKE9]},
+    ]
 - LOC_ALIKE10:
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
     hints: [*maze]
+    travel: [
+      {verbs: ['WEST'], action: ["goto", LOC_ALIKE8]},
+      {verbs: ['NORTH'], action: ["goto", LOC_ALIKE10]},
+      {verbs: ['D'], action: ["goto", LOC_DEADEND5]},
+      {verbs: ['EAST'], action: ["goto", LOC_PITBRINK]},
+    ]
 - LOC_DEADEND5:
     description:
       long: 'Dead end'
       short: !!null
     conditions: {DEEP: true, NOARRR: true}
     hints: [*maze]
+    travel: [
+      {verbs: ['UPWAR', 'OUT'], action: ["goto", LOC_ALIKE10]},
+    ]
 - LOC_PITBRINK:
     description:
       long: 'You are on the brink of a thirty foot pit with a massive orange column\ndown one wall.  You could climb down here but you could not get back\nup.  The maze continues at this level.'
       short: 'You''re at brink of pit.'
     conditions: {DEEP: true, NOBACK: true}
+    travel: [
+      {verbs: ['D', 'CLIMB'], action: ["goto", LOC_BIRD]},
+      {verbs: ['WEST'], action: ["goto", LOC_ALIKE10]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_DEADEND6]},
+      {verbs: ['NORTH'], action: ["goto", LOC_ALIKE12]},
+      {verbs: ['EAST'], action: ["goto", LOC_ALIKE13]},
+    ]
 - LOC_DEADEND6:
     description:
       long: 'Dead end'
       short: !!null
     conditions: {NOARRR: true, DEEP: true}
+    travel: [
+      {verbs: ['EAST', 'OUT'], action: ["goto", LOC_PITBRINK]},
+    ]
 - LOC_PARALLEL2:
     description:
       long: 'You have crawled through a very low wide passage parallel to and north\nof the Hall of Mists.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: [], action: ["goto", LOC_WESTBANK]},
+    ]
 - LOC_LONGEAST:
     description:
       long: 'You are at the east end of a very long hall apparently without side\nchambers.  To the east a low wide crawl slants up.  To the north a\nround two foot hole slants down.'
       short: 'You''re at east end of long hall.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['EAST', 'UPWAR', 'CRAWL'], action: ["goto", LOC_MISTWEST]},
+      {verbs: ['WEST'], action: ["goto", LOC_LONGWEST]},
+      {verbs: ['NORTH', 'D', 'HOLE'], action: ["goto", LOC_CROSSOVER]},
+    ]
 - LOC_LONGWEST:
     description:
       long: 'You are at the west end of a very long featureless hall.  The hall\njoins up with a narrow north/south passage.'
       short: 'You''re at west end of long hall.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_LONGEAST]},
+      {verbs: ['NORTH'], action: ["goto", LOC_CROSSOVER]},
+      {verbs: ['SOUTH'], cond: [carry OBJ_0], action: ["goto", LOC_DIFFERENT1]},
+    ]
 - LOC_CROSSOVER:
     description:
       long: 'You are at a crossover of a high n/s passage and a low e/w one.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['WEST'], action: ["goto", LOC_LONGEAST]},
+      {verbs: ['NORTH'], action: ["goto", LOC_DEADEND7]},
+      {verbs: ['EAST'], action: ["goto", LOC_WESTSIDE]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_LONGWEST]},
+    ]
 - LOC_DEADEND7:
     description:
       long: 'Dead end'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['SOUTH', 'OUT'], action: ["goto", LOC_CROSSOVER]},
+    ]
 - LOC_COMPLEX:
     description:
       long: 'You are at a complex junction.  A low hands and knees passage from the\nnorth joins a higher crawl from the east to make a walking passage\ngoing west.  There is also a large room above.  The air is damp here.'
@@ -858,238 +1207,458 @@ locations: !!omap
     conditions: {DEEP: true}
     hints: [*jade]
     sound: WIND_WHISTLES
+    travel: [
+      {verbs: ['UPWAR', 'CLIMB', 'ROOM'], action: ["goto", LOC_DUSTY]},
+      {verbs: ['WEST', 'BEDQU'], action: ["goto", LOC_BEDQUILT]},
+      {verbs: ['NORTH', 'SHELL'], action: ["goto", LOC_SHELLROOM]},
+      {verbs: ['EAST'], action: ["goto", LOC_ANTEROOM]},
+    ]
 - LOC_BEDQUILT:
     description:
       long: 'You are in Bedquilt, a long east/west passage with holes everywhere.\nTo explore at random select north, south, up, or down.'
       short: 'You''re in Bedquilt.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_COMPLEX]},
+      {verbs: ['WEST'], action: ["goto", LOC_SWISSCHEESE]},
+      {verbs: ['SOUTH'], cond: [pct 65], action: ["speak", FUTILE_CRAWL]},
+      {verbs: ['SLAB'], action: ["goto", LOC_SLAB]},
+      {verbs: ['UPWAR'], cond: [pct 60], action: ["speak", FUTILE_CRAWL]},
+      {verbs: ['UPWAR'], cond: [pct 70], action: ["goto", LOC_SECRET2]},
+      {verbs: ['UPWAR'], action: ["goto", LOC_DUSTY]},
+      {verbs: ['NORTH'], cond: [pct 50], action: ["speak", FUTILE_CRAWL]},
+      {verbs: ['NORTH'], cond: [pct 75], action: ["goto", LOC_LOWROOM]},
+      {verbs: ['NORTH'], action: ["goto", LOC_THREEJUNCTION]},
+      {verbs: ['D'], cond: [pct 65], action: ["speak", FUTILE_CRAWL]},
+      {verbs: ['D'], action: ["goto", LOC_ANTEROOM]},
+    ]
 - LOC_SWISSCHEESE:
     description:
       long: 'You are in a room whose walls resemble swiss cheese.  Obvious passages\ngo west, east, ne, and nw.  Part of the room is occupied by a large\nbedrock block.'
       short: 'You''re in Swiss Cheese Room.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['NE'], action: ["goto", LOC_BEDQUILT]},
+      {verbs: ['WEST'], action: ["goto", LOC_EASTEND]},
+      {verbs: ['SOUTH'], cond: [pct 80], action: ["speak", FUTILE_CRAWL]},
+      {verbs: ['CANYO'], action: ["goto", LOC_TALL]},
+      {verbs: ['EAST'], action: ["goto", LOC_SOFTROOM]},
+      {verbs: ['NW'], cond: [pct 50], action: ["speak", FUTILE_CRAWL]},
+      {verbs: ['ORIEN'], action: ["goto", LOC_ORIENTAL]},
+    ]
 - LOC_EASTEND:
     description:
       long: 'You are at the east end of the Twopit Room.  The floor here is\nlittered with thin rock slabs, which make it easy to descend the pits.\nThere is a path here bypassing the pits to connect passages from east\nand west.  There are holes all over, but the only big one is on the\nwall directly over the west pit where you can''t get to it.'
       short: 'You''re at east end of Twopit Room.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_SWISSCHEESE]},
+      {verbs: ['WEST', 'ACROS'], action: ["goto", LOC_WESTEND]},
+      {verbs: ['D', 'PIT'], action: ["goto", LOC_EASTPIT]},
+    ]
 - LOC_SLAB:
     description:
       long: 'You are in a large low circular chamber whose floor is an immense slab\nfallen from the ceiling (Slab Room).  East and west there once were\nlarge passages, but they are now filled with boulders.  Low small\npassages go north and south, and the south one quickly bends west\naround the boulders.'
       short: 'You''re in Slab Room.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['SOUTH'], action: ["goto", LOC_WESTEND]},
+      {verbs: ['UPWAR', 'CLIMB'], action: ["goto", LOC_SECRET1]},
+      {verbs: ['NORTH'], action: ["goto", LOC_BEDQUILT]},
+    ]
 - LOC_SECRET1:
     description:
       long: 'You are in a secret n/s canyon above a large room.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['D', 'SLAB'], action: ["goto", LOC_SLAB]},
+      {verbs: ['SOUTH'], cond: [not OBJ_31 0], action: ["goto", LOC_SECRET5]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_SECRET4]},
+      {verbs: ['NORTH'], action: ["goto", LOC_MIRRORCANYON]},
+      {verbs: ['RESER'], action: ["goto", LOC_RESERVOIR]},
+    ]
 - LOC_SECRET2:
     description:
       long: 'You are in a secret n/s canyon above a sizable passage.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['NORTH'], action: ["goto", LOC_THREEJUNCTION]},
+      {verbs: ['D', 'PASSA'], action: ["goto", LOC_BEDQUILT]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_TOPSTALACTITE]},
+    ]
 - LOC_THREEJUNCTION:
     description:
       long: 'You are in a secret canyon at a junction of three canyons, bearing\nnorth, south, and se.  The north one is as tall as the other two\ncombined.'
       short: 'You''re at junction of three secret canyons.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['SE'], action: ["goto", LOC_BEDQUILT]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_SECRET2]},
+      {verbs: ['NORTH'], action: ["goto", LOC_WINDOW2]},
+    ]
 - LOC_LOWROOM:
     description:
       long: 'You are in a large low room.  Crawls lead north, se, and sw.'
       short: 'You''re in large low room.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['BEDQU'], action: ["goto", LOC_BEDQUILT]},
+      {verbs: ['SW'], action: ["goto", LOC_WINDING]},
+      {verbs: ['NORTH'], action: ["goto", LOC_DEADCRAWL]},
+      {verbs: ['SE', 'ORIEN'], action: ["goto", LOC_ORIENTAL]},
+    ]
 - LOC_DEADCRAWL:
     description:
       long: 'Dead end crawl.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['SOUTH', 'CRAWL', 'OUT'], action: ["goto", LOC_LOWROOM]},
+    ]
 - LOC_SECRET3:
     description:
       long: 'You are in a secret canyon which here runs e/w.  It crosses over a\nvery tight canyon 15 feet below.  If you go down you may not be able\nto get back up.'
       short: 'You''re in secret e/w canyon above tight canyon.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_KINGHALL]},
+      {verbs: ['WEST'], cond: [not OBJ_31 0], action: ["goto", LOC_SECRET5]},
+      {verbs: ['WEST'], action: ["goto", LOC_SECRET6]},
+      {verbs: ['D'], action: ["goto", LOC_WIDEPLACE]},
+    ]
 - LOC_WIDEPLACE:
     description:
       long: 'You are at a wide place in a very tight n/s canyon.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['SOUTH'], action: ["goto", LOC_TIGHTPLACE]},
+      {verbs: ['NORTH'], action: ["goto", LOC_TALL]},
+    ]
 - LOC_TIGHTPLACE:
     description:
       long: 'The canyon here becomes too tight to go further south.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['NORTH'], action: ["goto", LOC_WIDEPLACE]},
+    ]
 - LOC_TALL:
     description:
       long: 'You are in a tall e/w canyon.  A low tight crawl goes 3 feet north and\nseems to open up.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_WIDEPLACE]},
+      {verbs: ['WEST'], action: ["goto", LOC_BOULDERS1]},
+      {verbs: ['NORTH', 'CRAWL'], action: ["goto", LOC_SWISSCHEESE]},
+    ]
 - LOC_BOULDERS1:
     description:
       long: 'The canyon runs into a mass of boulders -- dead end.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['SOUTH'], action: ["goto", LOC_TALL]},
+    ]
 - LOC_SEWER:
     description:
       long: 'The stream flows out through a pair of 1 foot diameter sewer pipes.\nIt would be advisable to use the exit.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: [], action: ["goto", LOC_BUILDING]},
+    ]
 - LOC_ALIKE11:
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     conditions: {DEEP: true, NOBACK: 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]},
+    ]
 - LOC_DEADEND8:
     description:
       long: 'Dead end'
       short: !!null
     conditions: {DEEP: true}
     hints: [*maze]
+    travel: [
+      {verbs: ['WEST', 'OUT'], action: ["goto", LOC_ALIKE11]},
+    ]
 - LOC_DEADEND9:
     description:
       long: 'Dead end'
       short: !!null
     conditions: {DEEP: true, NOARRR: true}
     hints: [*maze]
+    travel: [
+      {verbs: ['SOUTH', 'OUT'], action: ["goto", LOC_ALIKE3]},
+    ]
 - LOC_ALIKE12:
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
+    travel: [
+      {verbs: ['SOUTH'], action: ["goto", LOC_PITBRINK]},
+      {verbs: ['EAST'], action: ["goto", LOC_ALIKE13]},
+      {verbs: ['WEST'], action: ["goto", LOC_DEADEND10]},
+    ]
 - LOC_ALIKE13:
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
+    travel: [
+      {verbs: ['NORTH'], action: ["goto", LOC_PITBRINK]},
+      {verbs: ['WEST'], action: ["goto", LOC_ALIKE12]},
+      {verbs: ['NW'], action: ["goto", LOC_DEADEND12]},
+    ]
 - LOC_DEADEND10:
     description:
       long: 'Dead end'
       short: !!null
     conditions: {NOARRR: true, DEEP: true}
+    travel: [
+      {verbs: ['EAST', 'OUT'], action: ["goto", LOC_ALIKE12]},
+    ]
 - LOC_DEADEND11:
     description:
       long: 'Dead end'
       short: !!null
     conditions: {DEEP: true, NOARRR: true}
     hints: [*maze]
+    travel: [
+      {verbs: ['UPWAR', 'OUT'], action: ["goto", LOC_ALIKE8]},
+    ]
 - LOC_ALIKE14:
     description:
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
     hints: [*maze]
+    travel: [
+      {verbs: ['UPWAR', 'D'], action: ["goto", LOC_ALIKE4]},
+    ]
 - LOC_NARROW:
     description:
       long: 'You are in a long, narrow corridor stretching out of sight to the\nwest.  At the eastern end is a hole through which you can see a\nprofusion of leaves.'
       short: 'You''re in narrow corridor.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['D', 'CLIMB', 'EAST'], action: ["goto", LOC_WESTPIT]},
+      {verbs: ['JUMP'], action: ["goto", LOC_NECKBROKE]},
+      {verbs: ['WEST', 'GIANT'], action: ["goto", LOC_GIANTROOM]},
+    ]
 - LOC_NOCLIMB:
     description:
       long: 'There is nothing here to climb.  Use "up" or "out" to leave the pit.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: [], action: ["goto", LOC_WESTPIT]},
+    ]
 - LOC_PLANTTOP:
     description:
       long: 'You have climbed up the plant and out of the pit.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: [], action: ["goto", LOC_WESTEND]},
+    ]
 - LOC_INCLINE:
     description:
       long: 'You are at the top of a steep incline above a large room.  You could\nclimb down here, but you would not be able to climb up.  There is a\npassage leading back to the north.'
       short: 'You''re at steep incline above large room.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['NORTH', 'CAVER', 'PASSA'], action: ["goto", LOC_WATERFALL]},
+      {verbs: ['D', 'CLIMB'], action: ["goto", LOC_LOWROOM]},
+    ]
 - LOC_GIANTROOM:
     description:
       long: 'You are in the Giant Room.  The ceiling here is too high up for your\nlamp to show it.  Cavernous passages lead east, north, and south.  On\nthe west wall is scrawled the inscription, "FEE FIE FOE FOO" [sic].'
       short: 'You''re in Giant Room.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['SOUTH'], action: ["goto", LOC_NARROW]},
+      {verbs: ['EAST'], action: ["goto", LOC_CAVEIN]},
+      {verbs: ['NORTH'], action: ["goto", LOC_IMMENSE]},
+    ]
 - LOC_CAVEIN:
     description:
       long: 'The passage here is blocked by a recent cave-in.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['SOUTH', 'GIANT', 'OUT'], action: ["goto", LOC_GIANTROOM]},
+    ]
 - LOC_IMMENSE:
     description:
       long: 'You are at one end of an immense north/south passage.'
       short: !!null
     conditions: {DEEP: true}
     sound: WIND_WHISTLES
+    travel: [
+      {verbs: ['SOUTH', 'GIANT', 'PASSA'], action: ["goto", LOC_GIANTROOM]},
+      {verbs: ['NORTH', 'ENTER', 'CAVER'], cond: [not OBJ_9 0], action: ["goto", LOC_WATERFALL]},
+      {verbs: ['NORTH'], action: ["speak", RUSTY_DOOR]},
+    ]
 - LOC_WATERFALL:
     description:
       long: 'You are in a magnificent cavern with a rushing stream, which cascades\nover a sparkling waterfall into a roaring whirlpool which disappears\nthrough a hole in the floor.  Passages exit to the south and west.'
       short: 'You''re in cavern with waterfall.'
     conditions: {FLUID: true, DEEP: true}
     sound: STREAM_SPLASHES
+    travel: [
+      {verbs: ['SOUTH', 'OUT'], action: ["goto", LOC_IMMENSE]},
+      {verbs: ['GIANT'], action: ["goto", LOC_GIANTROOM]},
+      {verbs: ['WEST'], action: ["goto", LOC_INCLINE]},
+    ]
 - LOC_SOFTROOM:
     description:
       long: 'You are in the Soft Room.  The walls are covered with heavy curtains,\nthe floor with a thick pile carpet.  Moss covers the ceiling.'
       short: 'You''re in Soft Room.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['WEST', 'OUT'], action: ["goto", LOC_SWISSCHEESE]},
+    ]
 - LOC_ORIENTAL:
     description:
       long: 'This is the Oriental Room.  Ancient oriental cave drawings cover the\nwalls.  A gently sloping passage leads upward to the north, another\npassage leads se, and a hands and knees crawl leads west.'
       short: 'You''re in Oriental Room.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['SE'], action: ["goto", LOC_SWISSCHEESE]},
+      {verbs: ['WEST', 'CRAWL'], action: ["goto", LOC_LOWROOM]},
+      {verbs: ['UPWAR', 'NORTH', 'CAVER'], action: ["goto", LOC_MISTY]},
+    ]
 - LOC_MISTY:
     description:
       long: 'You are following a wide path around the outer edge of a large cavern.\nFar below, through a heavy white mist, strange splashing noises can be\nheard.  The mist rises up through a fissure in the ceiling.  The path\nexits to the south and west.'
       short: 'You''re in misty cavern.'
     conditions: {DEEP: true}
     sound: NO_MEANING
+    travel: [
+      {verbs: ['SOUTH', 'ORIEN'], action: ["goto", LOC_ORIENTAL]},
+      {verbs: ['WEST'], action: ["goto", LOC_ALCOVE]},
+    ]
 - LOC_ALCOVE:
     description:
       long: 'You are in an alcove.  A small nw path seems to widen after a short\ndistance.  An extremely tight tunnel leads east.  It looks like a very\ntight squeeze.  An eerie light can be seen at the other end.'
       short: 'You''re in alcove.'
     conditions: {DEEP: true}
     hints: [*dark]
+    travel: [
+      {verbs: ['NW', 'CAVER'], action: ["goto", LOC_MISTY]},
+      {verbs: ['EAST', 'PASSA'], action: ["special", 1]},
+      {verbs: ['EAST'], action: ["goto", LOC_PLOVER]},
+    ]
 - LOC_PLOVER:
     description:
       long: 'You''re in a small chamber lit by an eerie green light.  An extremely\nnarrow tunnel exits to the west.  A dark corridor leads ne.'
       short: 'You''re in Plover Room.'
     conditions: {DEEP: true, LIT: true}
     hints: [*dark]
+    travel: [
+      {verbs: ['WEST', 'PASSA', 'OUT'], action: ["special", 1]},
+      {verbs: ['WEST'], action: ["goto", LOC_ALCOVE]},
+      {verbs: ['PLOVE'], cond: [carry OBJ_59], action: ["special", 2]},
+      {verbs: ['PLOVE'], action: ["goto", LOC_FOOF6]},
+      {verbs: ['NE', 'DARK'], action: ["goto", LOC_DARKROOM]},
+    ]
 - LOC_DARKROOM:
     description:
       long: 'You''re in the dark-room.  A corridor leading south is the only exit.'
       short: 'You''re in dark-room.'
     conditions: {DEEP: true}
     hints: [*dark]
+    travel: [
+      {verbs: ['SOUTH', 'PLOVE', 'OUT'], action: ["goto", LOC_PLOVER]},
+    ]
 - LOC_ARCHED:
     description:
       long: 'You are in an arched hall.  A coral passage once continued up and east\nfrom here, but is now blocked by debris.  The air smells of sea water.'
       short: 'You''re in arched hall.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['D', 'SHELL', 'OUT'], action: ["goto", LOC_SHELLROOM]},
+    ]
 - LOC_SHELLROOM:
     description:
       long: 'You''re in a large room carved out of sedimentary rock.  The floor and\nwalls are littered with bits of shells imbedded in the stone.  A\nshallow passage proceeds downward, and a somewhat steeper one leads\nup.  A low hands and knees passage enters from the south.'
       short: 'You''re in Shell Room.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['UPWAR', 'HALL'], action: ["goto", LOC_ARCHED]},
+      {verbs: ['D'], action: ["goto", LOC_SLOPING1]},
+      {verbs: ['SOUTH'], cond: [carry OBJ_14], action: ["speak", CLAM_BLOCKER]},
+      {verbs: ['SOUTH'], cond: [carry OBJ_15], action: ["speak", OYSTER_BLOCKER]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_COMPLEX]},
+    ]
 - LOC_SLOPING1:
     description:
       long: 'You are in a long sloping corridor with ragged sharp walls.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['UPWAR', 'SHELL'], action: ["goto", LOC_SHELLROOM]},
+      {verbs: ['D'], action: ["goto", LOC_CULDESAC]},
+    ]
 - LOC_CULDESAC:
     description:
       long: 'You are in a cul-de-sac about eight feet across.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['UPWAR', 'OUT'], action: ["goto", LOC_SLOPING1]},
+      {verbs: ['SHELL'], action: ["goto", LOC_SHELLROOM]},
+    ]
 - LOC_ANTEROOM:
     description:
       long: 'You are in an anteroom leading to a large passage to the east.  Small\npassages go west and up.  The remnants of recent digging are evident.\nA sign in midair here says "Cave under construction beyond this point.\nProceed at own risk.  [Witt Construction Company]"'
       short: 'You''re in anteroom.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['UPWAR'], action: ["goto", LOC_COMPLEX]},
+      {verbs: ['WEST'], action: ["goto", LOC_BEDQUILT]},
+      {verbs: ['EAST'], action: ["goto", LOC_WITTSEND]},
+    ]
 - LOC_DIFFERENT1:
     description:
       long: 'You are in a maze of twisty little passages, all different.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
+    travel: [
+      {verbs: ['SOUTH'], action: ["goto", LOC_DIFFERENT3]},
+      {verbs: ['SW'], action: ["goto", LOC_DIFFERENT4]},
+      {verbs: ['NE'], action: ["goto", LOC_DIFFERENT5]},
+      {verbs: ['SE'], action: ["goto", LOC_DIFFERENT6]},
+      {verbs: ['UPWAR'], action: ["goto", LOC_DIFFERENT7]},
+      {verbs: ['NW'], action: ["goto", LOC_DIFFERENT8]},
+      {verbs: ['EAST'], action: ["goto", LOC_DIFFERENT9]},
+      {verbs: ['WEST'], action: ["goto", LOC_DIFFERENT10]},
+      {verbs: ['NORTH'], action: ["goto", LOC_DIFFERENT11]},
+      {verbs: ['D'], action: ["goto", LOC_LONGWEST]},
+    ]
 - LOC_WITTSEND:
     description:
       long: 'You are at Witt''s End.  Passages lead off in *ALL* directions.'
       short: 'You''re at Witt''s End.'
     conditions: {DEEP: true, NOBACK: true}
     hints: [*witt]
+    travel: [
+      {verbs: ['EAST', 'NORTH', 'SOUTH', 'NE', 'SE', 'SW', 'NW', 'UPWAR', 'D'], cond: [pct 95], action: ["speak", FUTILE_CRAWL]},
+      {verbs: ['EAST'], action: ["goto", LOC_ANTEROOM]},
+      {verbs: ['WEST'], action: ["speak", WAY_BLOCKED]},
+    ]
 - LOC_MIRRORCANYON:
     description:
       long: 'You are in a north/south canyon about 25 feet across.  The floor is\ncovered by white mist seeping in from the north.  The walls extend\nupward for well over 100 feet.  Suspended from some unseen point far\nabove you, an enormous two-sided mirror is hanging parallel to and\nmidway between the canyon walls.  (The mirror is obviously provided\nfor the use of the dwarves who, as you know, are extremely vain.)  A\nsmall window can be seen in either wall, some fifty feet up.'
@@ -1097,92 +1666,184 @@ locations: !!omap
     conditions: {DEEP: true}
     hints: [*jade]
     sound: WIND_WHISTLES
+    travel: [
+      {verbs: ['SOUTH'], action: ["goto", LOC_SECRET1]},
+      {verbs: ['NORTH', 'RESER'], action: ["goto", LOC_RESERVOIR]},
+    ]
 - LOC_WINDOW2:
     description:
       long: 'You''re at a low window overlooking a huge pit, which extends up out of\nsight.  A floor is indistinctly visible over 50 feet below.  Traces of\nwhite mist cover the floor of the pit, becoming thicker to the left.\nMarks in the dust around the window would seem to indicate that\nsomeone has been here recently.  Directly across the pit from you and\n25 feet away there is a similar window looking into a lighted room.  A\nshadowy figure can be seen there peering back at you.'
       short: 'You''re at window on pit.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['WEST'], action: ["goto", LOC_THREEJUNCTION]},
+      {verbs: ['JUMP'], action: ["goto", LOC_NECKBROKE]},
+    ]
 - LOC_TOPSTALACTITE:
     description:
       long: 'A large stalactite extends from the roof and almost reaches the floor\nbelow.  You could climb down it, and jump from it to the floor, but\nhaving done so you would be unable to reach it to climb back up.'
       short: 'You''re at top of stalactite.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['NORTH'], action: ["goto", LOC_SECRET2]},
+      {verbs: ['D', 'JUMP', 'CLIMB'], cond: [pct 40], action: ["goto", LOC_ALIKE6]},
+      {verbs: ['D'], cond: [pct 50], action: ["goto", LOC_ALIKE9]},
+      {verbs: ['D'], action: ["goto", LOC_ALIKE4]},
+    ]
 - LOC_DIFFERENT2:
     description:
       long: 'You are in a little maze of twisting passages, all different.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
+    travel: [
+      {verbs: ['SW'], action: ["goto", LOC_DIFFERENT3]},
+      {verbs: ['NORTH'], action: ["goto", LOC_DIFFERENT4]},
+      {verbs: ['EAST'], action: ["goto", LOC_DIFFERENT5]},
+      {verbs: ['NW'], action: ["goto", LOC_DIFFERENT6]},
+      {verbs: ['SE'], action: ["goto", LOC_DIFFERENT7]},
+      {verbs: ['NE'], action: ["goto", LOC_DIFFERENT8]},
+      {verbs: ['WEST'], action: ["goto", LOC_DIFFERENT9]},
+      {verbs: ['D'], action: ["goto", LOC_DIFFERENT10]},
+      {verbs: ['UPWAR'], action: ["goto", LOC_DIFFERENT11]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_DEADEND13]},
+    ]
 - LOC_RESERVOIR:
     description:
       long: 'You are at the edge of a large underground reservoir.  An opaque cloud\nof white mist fills the room and rises rapidly upward.  The lake is\nfed by a stream, which tumbles out of a hole in the wall about 10 feet\noverhead and splashes noisily into the water somewhere within the\nmist.  There is a passage going back toward the south.'
       short: 'You''re at reservoir.'
     conditions: {FLUID: true, DEEP: true}
     sound: STREAM_SPLASHES
+    travel: [
+      {verbs: ['SOUTH', 'OUT'], action: ["goto", LOC_MIRRORCANYON]},
+      {verbs: ['NORTH', 'ACROS', 'CROSS'], cond: [not OBJ_45 1], action: ["speak", BAD_DIRECTION]},
+      {verbs: ['NORTH'], action: ["goto", LOC_RESBOTTOM]},
+    ]
 - LOC_DEADEND12:
     description:
       long: 'Dead end'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['SE'], action: ["goto", LOC_ALIKE13]},
+    ]
 - LOC_NE:
     description:
       long: 'You are at the northeast end of an immense room, even larger than the\nGiant Room.  It appears to be a repository for the "Adventure"\nprogram.  Massive torches far overhead bathe the room with smoky\nyellow light.  Scattered about you can be seen a pile of bottles (all\nof them empty), a nursery of young beanstalks murmuring quietly, a bed\nof oysters, a bundle of black rods with rusty stars on their ends, and\na collection of brass lanterns.  Off to one side a great many dwarves\nare sleeping on the floor, snoring loudly.  A notice nearby reads: "Do\nnot disturb the dwarves!"  An immense mirror is hanging against one\nwall, and stretches to the other end of the room, where various other\nsundry objects can be glimpsed dimly in the distance.'
       short: 'You''re at ne end.'
     conditions: {DEEP: true, LIT: true}
     sound: MURMURING_SNORING
+    travel: [
+      {verbs: ['SW'], action: ["goto", LOC_SW]},
+    ]
 - LOC_SW:
     description:
       long: 'You are at the southwest end of the repository.  To one side is a pit\nfull of fierce green snakes.  On the other side is a row of small\nwicker cages, each of which contains a little sulking bird.  In one\ncorner is a bundle of black rods with rusty marks on their ends.  A\nlarge number of velvet pillows are scattered about on the floor.  A\nvast mirror stretches off to the northeast.  At your feet is a large\nsteel grate, next to which is a sign that reads, "Treasure Vault.\nKeys in main office."'
       short: 'You''re at sw end.'
     conditions: {DEEP: true, LIT: true}
     sound: SNAKES_HISSING
+    travel: [
+      {verbs: ['NE'], action: ["goto", LOC_NE]},
+      {verbs: ['D'], action: ["speak", GRATE_NOWAY]},
+    ]
 - LOC_SWCHASM:
     description:
       long: 'You are on one side of a large, deep chasm.  A heavy white mist rising\nup from below obscures all view of the far side.  A sw path leads away\nfrom the chasm into a winding corridor.'
       short: 'You''re on sw side of chasm.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['SW'], action: ["goto", LOC_WINDING]},
+      {verbs: ['OVER', 'ACROS', 'CROSS', 'NE'], cond: [with OBJ_33], action: ["speak", TROLL_BLOCKS]},
+      {verbs: ['OVER'], cond: [not OBJ_32 0], action: ["speak", BRIDGE_GONE]},
+      {verbs: ['OVER'], action: ["special", 3]},
+      {verbs: ['JUMP'], cond: [not OBJ_32 0], action: ["goto", LOC_NOMAKE]},
+      {verbs: ['JUMP'], action: ["speak", CROSS_BRIDGE]},
+    ]
 - LOC_WINDING:
     description:
       long: 'You are in a long winding corridor sloping out of sight in both\ndirections.'
       short: 'You''re in sloping corridor.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['D'], action: ["goto", LOC_LOWROOM]},
+      {verbs: ['UPWAR'], action: ["goto", LOC_SWCHASM]},
+    ]
 - LOC_SECRET4:
     description:
       long: 'You are in a secret canyon which exits to the north and east.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['NORTH', 'OUT'], action: ["goto", LOC_SECRET1]},
+      {verbs: ['EAST', 'FORWA'], action: ["speak", NASTY_DRAGON]},
+    ]
 - LOC_SECRET5:
     description:
       long: 'You are in a secret canyon which exits to the north and east.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['NORTH'], action: ["goto", LOC_SECRET1]},
+      {verbs: ['EAST'], action: ["goto", LOC_SECRET3]},
+    ]
 - LOC_SECRET6:
     description:
       long: 'You are in a secret canyon which exits to the north and east.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['EAST', 'OUT'], action: ["goto", LOC_SECRET3]},
+      {verbs: ['NORTH', 'FORWA'], action: ["speak", NASTY_DRAGON]},
+    ]
 - LOC_NECHASM:
     description:
       long: 'You are on the far side of the chasm.  A ne path leads away from the\nchasm on this side.'
       short: 'You''re on ne side of chasm.'
     conditions: {NOARRR: true, DEEP: true}
+    travel: [
+      {verbs: ['NE'], action: ["goto", LOC_CORRIDOR]},
+      {verbs: ['OVER', 'ACROS', 'CROSS', 'SW'], cond: [with OBJ_33], action: ["speak", TROLL_BLOCKS]},
+      {verbs: ['OVER'], action: ["special", 3]},
+      {verbs: ['JUMP'], action: ["speak", CROSS_BRIDGE]},
+      {verbs: ['FORK'], action: ["goto", LOC_FORK]},
+      {verbs: ['VIEW'], action: ["goto", LOC_BREATHTAKING]},
+      {verbs: ['BARRE'], action: ["goto", LOC_BARRENFRONT]},
+    ]
 - LOC_CORRIDOR:
     description:
       long: 'You''re in a long east/west corridor.  A faint rumbling noise can be\nheard in the distance.'
       short: 'You''re in corridor.'
     conditions: {NOARRR: true, DEEP: true}
     sound: DULL_RUMBLING
+    travel: [
+      {verbs: ['WEST'], action: ["goto", LOC_NECHASM]},
+      {verbs: ['EAST', 'FORK'], action: ["goto", LOC_FORK]},
+      {verbs: ['VIEW'], action: ["goto", LOC_BREATHTAKING]},
+      {verbs: ['BARRE'], action: ["goto", LOC_BARRENFRONT]},
+    ]
 - LOC_FORK:
     description:
       long: 'The path forks here.  The left fork leads northeast.  A dull rumbling\nseems to get louder in that direction.  The right fork leads southeast\ndown a gentle slope.  The main corridor enters from the west.'
       short: 'You''re at fork in path.'
     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: ['VIEW'], action: ["goto", LOC_BREATHTAKING]},
+      {verbs: ['BARRE'], action: ["goto", LOC_BARRENFRONT]},
+    ]
 - LOC_WARMWALLS:
     description:
       long: 'The walls are quite warm here.  From the north can be heard a steady\nroar, so loud that the entire cave seems to be trembling.  Another\npassage leads south, and a low crawl goes east.'
       short: 'You''re at junction with warm walls.'
     conditions: {NOARRR: true, DEEP: true}
     sound: LOUD_ROAR
+    travel: [
+      {verbs: ['SOUTH', 'FORK'], action: ["goto", LOC_FORK]},
+      {verbs: ['NORTH', 'VIEW'], action: ["goto", LOC_BREATHTAKING]},
+      {verbs: ['EAST', 'CRAWL'], action: ["goto", LOC_BOULDERS2]},
+    ]
 - LOC_BREATHTAKING:
     description:
       long: 'You are on the edge of a breath-taking view.  Far below you is an\nactive volcano, from which great gouts of molten lava come surging\nout, cascading back down into the depths.  The glowing rock fills the\nfarthest reaches of the cavern with a blood-red glare, giving every-\nthing an eerie, macabre appearance.  The air is filled with flickering\nsparks of ash and a heavy smell of brimstone.  The walls are hot to\nthe touch, and the thundering of the volcano drowns out all other\nsounds.  Embedded in the jagged roof far overhead are myriad twisted\nformations composed of pure white alabaster, which scatter the murky\nlight into sinister apparitions upon the walls.  To one side is a deep\ngorge, filled with a bizarre chaos of tortured rock which seems to\nhave been crafted by the devil himself.  An immense river of fire\ncrashes out from the depths of the volcano, burns its way through the\ngorge, and plummets into a bottomless pit far off to your left.  To\nthe right, an immense geyser of blistering steam erupts continuously\nfrom a barren island in the center of a sulfurous lake, which bubbles\nominously.  The far right wall is aflame with an incandescence of its\nown, which lends an additional infernal splendor to the already\nhellish scene.  A dark, foreboding passage exits to the south.'
@@ -1191,235 +1852,519 @@ locations: !!omap
     hints: [*jade]
     sound: TOTAL_ROAR
     loud: true
+    travel: [
+      {verbs: ['SOUTH', 'PASSA', 'OUT'], action: ["goto", LOC_WARMWALLS]},
+      {verbs: ['FORK'], action: ["goto", LOC_FORK]},
+      {verbs: ['D'], action: ["speak", RIDICULOUS_ATTEMPT]},
+      {verbs: ['JUMP'], action: ["goto", LOC_GRUESOME]},
+    ]
 - LOC_BOULDERS2:
     description:
       long: 'You are in a small chamber filled with large boulders.  The walls are\nvery warm, causing the air in the room to be almost stifling from the\nheat.  The only exit is a crawl heading west, through which is coming\na low rumbling.'
       short: 'You''re in Chamber of Boulders.'
     conditions: {NOARRR: true, DEEP: true}
     sound: DULL_RUMBLING
+    travel: [
+      {verbs: ['WEST', 'OUT', 'CRAWL'], action: ["goto", LOC_WARMWALLS]},
+      {verbs: ['FORK'], action: ["goto", LOC_FORK]},
+      {verbs: ['VIEW'], action: ["goto", LOC_BREATHTAKING]},
+    ]
 - LOC_LIMESTONE:
     description:
       long: 'You are walking along a gently sloping north/south passage lined with\noddly shaped limestone formations.'
       short: 'You''re in limestone passage.'
     conditions: {NOARRR: true, DEEP: true}
+    travel: [
+      {verbs: ['NORTH', 'UPWAR', 'FORK'], action: ["goto", LOC_FORK]},
+      {verbs: ['SOUTH', 'D', 'BARRE'], action: ["goto", LOC_BARRENFRONT]},
+      {verbs: ['VIEW'], action: ["goto", LOC_BREATHTAKING]},
+    ]
 - LOC_BARRENFRONT:
     description:
       long: 'You are standing at the entrance to a large, barren room.  A notice\nabove the entrance reads:  "Caution!  Bear in room!"'
       short: 'You''re in front of Barren Room.'
     conditions: {NOARRR: true, DEEP: true}
+    travel: [
+      {verbs: ['WEST', 'UPWAR'], action: ["goto", LOC_LIMESTONE]},
+      {verbs: ['FORK'], action: ["goto", LOC_FORK]},
+      {verbs: ['EAST', 'INWAR', 'BARRE', 'ENTER'], action: ["goto", LOC_BARRENROOM]},
+      {verbs: ['VIEW'], action: ["goto", LOC_BREATHTAKING]},
+    ]
 - LOC_BARRENROOM:
     description:
       long: 'You are inside a barren room.  The center of the room is completely\nempty except for some dust.  Marks in the dust lead away toward the\nfar end of the room.  The only exit is the way you came in.'
       short: 'You''re in Barren Room.'
     conditions: {NOARRR: true, DEEP: true}
+    travel: [
+      {verbs: ['WEST', 'OUT'], action: ["goto", LOC_BARRENFRONT]},
+      {verbs: ['FORK'], action: ["goto", LOC_FORK]},
+      {verbs: ['VIEW'], action: ["goto", LOC_BREATHTAKING]},
+    ]
 - LOC_DIFFERENT3:
     description:
       long: 'You are in a maze of twisting little passages, all different.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
+    travel: [
+      {verbs: ['WEST'], action: ["goto", LOC_DIFFERENT1]},
+      {verbs: ['SE'], action: ["goto", LOC_DIFFERENT4]},
+      {verbs: ['NW'], action: ["goto", LOC_DIFFERENT5]},
+      {verbs: ['SW'], action: ["goto", LOC_DIFFERENT6]},
+      {verbs: ['NE'], action: ["goto", LOC_DIFFERENT7]},
+      {verbs: ['UPWAR'], action: ["goto", LOC_DIFFERENT8]},
+      {verbs: ['D'], action: ["goto", LOC_DIFFERENT9]},
+      {verbs: ['NORTH'], action: ["goto", LOC_DIFFERENT10]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_DIFFERENT11]},
+      {verbs: ['EAST'], action: ["goto", LOC_DIFFERENT2]},
+    ]
 - LOC_DIFFERENT4:
     description:
       long: 'You are in a little maze of twisty passages, all different.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
+    travel: [
+      {verbs: ['NW'], action: ["goto", LOC_DIFFERENT1]},
+      {verbs: ['UPWAR'], action: ["goto", LOC_DIFFERENT3]},
+      {verbs: ['NORTH'], action: ["goto", LOC_DIFFERENT5]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_DIFFERENT6]},
+      {verbs: ['WEST'], action: ["goto", LOC_DIFFERENT7]},
+      {verbs: ['SW'], action: ["goto", LOC_DIFFERENT8]},
+      {verbs: ['NE'], action: ["goto", LOC_DIFFERENT9]},
+      {verbs: ['EAST'], action: ["goto", LOC_DIFFERENT10]},
+      {verbs: ['D'], action: ["goto", LOC_DIFFERENT11]},
+      {verbs: ['SE'], action: ["goto", LOC_DIFFERENT2]},
+    ]
 - LOC_DIFFERENT5:
     description:
       long: 'You are in a twisting maze of little passages, all different.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
+    travel: [
+      {verbs: ['UPWAR'], action: ["goto", LOC_DIFFERENT1]},
+      {verbs: ['D'], action: ["goto", LOC_DIFFERENT3]},
+      {verbs: ['WEST'], action: ["goto", LOC_DIFFERENT4]},
+      {verbs: ['NE'], action: ["goto", LOC_DIFFERENT6]},
+      {verbs: ['SW'], action: ["goto", LOC_DIFFERENT7]},
+      {verbs: ['EAST'], action: ["goto", LOC_DIFFERENT8]},
+      {verbs: ['NORTH'], action: ["goto", LOC_DIFFERENT9]},
+      {verbs: ['NW'], action: ["goto", LOC_DIFFERENT10]},
+      {verbs: ['SE'], action: ["goto", LOC_DIFFERENT11]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_DIFFERENT2]},
+    ]
 - LOC_DIFFERENT6:
     description:
       long: 'You are in a twisting little maze of passages, all different.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
+    travel: [
+      {verbs: ['NE'], action: ["goto", LOC_DIFFERENT1]},
+      {verbs: ['NORTH'], action: ["goto", LOC_DIFFERENT3]},
+      {verbs: ['NW'], action: ["goto", LOC_DIFFERENT4]},
+      {verbs: ['SE'], action: ["goto", LOC_DIFFERENT5]},
+      {verbs: ['EAST'], action: ["goto", LOC_DIFFERENT7]},
+      {verbs: ['D'], action: ["goto", LOC_DIFFERENT8]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_DIFFERENT9]},
+      {verbs: ['UPWAR'], action: ["goto", LOC_DIFFERENT10]},
+      {verbs: ['WEST'], action: ["goto", LOC_DIFFERENT11]},
+      {verbs: ['SW'], action: ["goto", LOC_DIFFERENT2]},
+    ]
 - LOC_DIFFERENT7:
     description:
       long: 'You are in a twisty little maze of passages, all different.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
+    travel: [
+      {verbs: ['NORTH'], action: ["goto", LOC_DIFFERENT1]},
+      {verbs: ['SE'], action: ["goto", LOC_DIFFERENT3]},
+      {verbs: ['D'], action: ["goto", LOC_DIFFERENT4]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_DIFFERENT5]},
+      {verbs: ['EAST'], action: ["goto", LOC_DIFFERENT6]},
+      {verbs: ['WEST'], action: ["goto", LOC_DIFFERENT8]},
+      {verbs: ['SW'], action: ["goto", LOC_DIFFERENT9]},
+      {verbs: ['NE'], action: ["goto", LOC_DIFFERENT10]},
+      {verbs: ['NW'], action: ["goto", LOC_DIFFERENT11]},
+      {verbs: ['UPWAR'], action: ["goto", LOC_DIFFERENT2]},
+    ]
 - LOC_DIFFERENT8:
     description:
       long: 'You are in a twisty maze of little passages, all different.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_DIFFERENT1]},
+      {verbs: ['WEST'], action: ["goto", LOC_DIFFERENT3]},
+      {verbs: ['UPWAR'], action: ["goto", LOC_DIFFERENT4]},
+      {verbs: ['SW'], action: ["goto", LOC_DIFFERENT5]},
+      {verbs: ['D'], action: ["goto", LOC_DIFFERENT6]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_DIFFERENT7]},
+      {verbs: ['NW'], action: ["goto", LOC_DIFFERENT9]},
+      {verbs: ['SE'], action: ["goto", LOC_DIFFERENT10]},
+      {verbs: ['NE'], action: ["goto", LOC_DIFFERENT11]},
+      {verbs: ['NORTH'], action: ["goto", LOC_DIFFERENT2]},
+    ]
 - LOC_DIFFERENT9:
     description:
       long: 'You are in a little twisty maze of passages, all different.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
+    travel: [
+      {verbs: ['SE'], action: ["goto", LOC_DIFFERENT1]},
+      {verbs: ['NE'], action: ["goto", LOC_DIFFERENT3]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_DIFFERENT4]},
+      {verbs: ['D'], action: ["goto", LOC_DIFFERENT5]},
+      {verbs: ['UPWAR'], action: ["goto", LOC_DIFFERENT6]},
+      {verbs: ['NW'], action: ["goto", LOC_DIFFERENT7]},
+      {verbs: ['NORTH'], action: ["goto", LOC_DIFFERENT8]},
+      {verbs: ['SW'], action: ["goto", LOC_DIFFERENT10]},
+      {verbs: ['EAST'], action: ["goto", LOC_DIFFERENT11]},
+      {verbs: ['WEST'], action: ["goto", LOC_DIFFERENT2]},
+    ]
 - LOC_DIFFERENT10:
     description:
       long: 'You are in a maze of little twisting passages, all different.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
+    travel: [
+      {verbs: ['D'], action: ["goto", LOC_DIFFERENT1]},
+      {verbs: ['EAST'], action: ["goto", LOC_DIFFERENT3]},
+      {verbs: ['NE'], action: ["goto", LOC_DIFFERENT4]},
+      {verbs: ['UPWAR'], action: ["goto", LOC_DIFFERENT5]},
+      {verbs: ['WEST'], action: ["goto", LOC_DIFFERENT6]},
+      {verbs: ['NORTH'], action: ["goto", LOC_DIFFERENT7]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_DIFFERENT8]},
+      {verbs: ['SE'], action: ["goto", LOC_DIFFERENT9]},
+      {verbs: ['SW'], action: ["goto", LOC_DIFFERENT11]},
+      {verbs: ['NW'], action: ["goto", LOC_DIFFERENT2]},
+    ]
 - LOC_DIFFERENT11:
     description:
       long: 'You are in a maze of little twisty passages, all different.'
       short: !!null
     conditions: {DEEP: true, NOBACK: true}
+    travel: [
+      {verbs: ['SW'], action: ["goto", LOC_DIFFERENT1]},
+      {verbs: ['NW'], action: ["goto", LOC_DIFFERENT3]},
+      {verbs: ['EAST'], action: ["goto", LOC_DIFFERENT4]},
+      {verbs: ['WEST'], action: ["goto", LOC_DIFFERENT5]},
+      {verbs: ['NORTH'], action: ["goto", LOC_DIFFERENT6]},
+      {verbs: ['D'], action: ["goto", LOC_DIFFERENT7]},
+      {verbs: ['SE'], action: ["goto", LOC_DIFFERENT8]},
+      {verbs: ['UPWAR'], action: ["goto", LOC_DIFFERENT9]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_DIFFERENT10]},
+      {verbs: ['NE'], action: ["goto", LOC_DIFFERENT2]},
+    ]
 - LOC_DEADEND13:
     description:
       long: 'Dead end'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['NORTH', 'OUT'], action: ["goto", LOC_DIFFERENT2]},
+      {verbs: ['SOUTH'], cond: [not OBJ_38 0], action: ["goto", LOC_ROUGHHEWN]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_BADDIRECTION]},
+    ]
 - LOC_ROUGHHEWN:
     description:
       long: 'You are in a long, rough-hewn, north/south corridor.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['NORTH'], action: ["goto", LOC_DEADEND13]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_LARGE]},
+    ]
 - LOC_BADDIRECTION:
     description:
       long: 'There is no way to go that direction.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: [], action: ["goto", LOC_DEADEND13]},
+    ]
 - LOC_LARGE:
     description:
       long: 'You are in a large chamber with passages to the west and north.'
       short: !!null
     conditions: {DEEP: true}
     hints: [*ogre]
+    travel: [
+      {verbs: ['WEST'], action: ["goto", LOC_ROUGHHEWN]},
+      {verbs: ['NORTH'], cond: [with OBJ_41], action: ["speak", OGRE_SNARL]},
+      {verbs: ['NORTH'], action: ["goto", LOC_STOREROOM]},
+    ]
 - LOC_STOREROOM:
     description:
       long: 'You are in the ogre''s storeroom.  The only exit is to the south.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['SOUTH', 'OUT'], action: ["goto", LOC_LARGE]},
+    ]
 - LOC_FOREST1:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_START]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST13]},
+      {verbs: ['NORTH'], action: ["goto", LOC_FOREST2]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_FOREST3]},
+    ]
 - LOC_FOREST2:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_FOREST1]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST19]},
+      {verbs: ['NORTH'], action: ["goto", LOC_FOREST3]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_FOREST18]},
+    ]
 - LOC_FOREST3:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST', 'WEST'], action: ["goto", LOC_FOREST4]},
+      {verbs: ['NORTH'], action: ["goto", LOC_FOREST2]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_FOREST1]},
+    ]
 - LOC_FOREST4:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST', 'NORTH'], action: ["goto", LOC_FOREST3]},
+      {verbs: ['WEST', 'SOUTH'], action: ["goto", LOC_FOREST5]},
+    ]
 - LOC_FOREST5:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST', 'NORTH'], action: ["goto", LOC_FOREST4]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST7]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_FOREST6]},
+    ]
 - LOC_FOREST6:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_FOREST5]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST7]},
+      {verbs: ['NORTH'], action: ["goto", LOC_VALLEY]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_SLIT]},
+    ]
 - LOC_FOREST7:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_FOREST5]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST6]},
+      {verbs: ['NORTH'], action: ["goto", LOC_GRATE]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_FOREST8]},
+    ]
 - LOC_FOREST8:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_FOREST9]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST11]},
+      {verbs: ['NORTH'], action: ["goto", LOC_FOREST22]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_FOREST7]},
+    ]
 - LOC_FOREST9:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_FOREST11]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST8]},
+      {verbs: ['NORTH'], action: ["goto", LOC_FOREST10]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_GRATE]},
+    ]
 - LOC_FOREST10:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_SLIT]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST11]},
+      {verbs: ['NORTH'], action: ["goto", LOC_FOREST9]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_GRATE]},
+    ]
 - LOC_FOREST11:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_FOREST10]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST8]},
+      {verbs: ['NORTH'], action: ["goto", LOC_FOREST22]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_FOREST9]},
+    ]
 - LOC_FOREST12:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_FOREST13]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST14]},
+      {verbs: ['NORTH'], action: ["goto", LOC_FOREST22]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_VALLEY]},
+    ]
 - LOC_FOREST13:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_FOREST1]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST12]},
+      {verbs: ['NORTH'], action: ["goto", LOC_FOREST20]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_HILL]},
+    ]
 - LOC_FOREST14:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_ROADEND]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST16]},
+      {verbs: ['NORTH'], action: ["goto", LOC_FOREST15]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_FOREST12]},
+    ]
 - LOC_FOREST15:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_FOREST16]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST22]},
+      {verbs: ['NORTH'], action: ["goto", LOC_ROADEND]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_FOREST14]},
+    ]
 - LOC_FOREST16:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST', 'NORTH'], action: ["goto", LOC_FOREST17]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST14]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_FOREST15]},
+    ]
 - LOC_FOREST17:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_FOREST18]},
+      {verbs: ['WEST', 'SOUTH'], action: ["goto", LOC_FOREST16]},
+      {verbs: ['NORTH'], action: ["goto", LOC_CLIFF]},
+    ]
 - LOC_FOREST18:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_FOREST19]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST17]},
+      {verbs: ['NORTH'], action: ["goto", LOC_FOREST2]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_FOREST21]},
+    ]
 - LOC_FOREST19:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_FOREST2]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST18]},
+      {verbs: ['NORTH'], action: ["goto", LOC_CLIFF]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_FOREST20]},
+    ]
 - LOC_FOREST20:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_HILL]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST21]},
+      {verbs: ['NORTH'], action: ["goto", LOC_FOREST19]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_FOREST13]},
+    ]
 - LOC_FOREST21:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_FOREST20]},
+      {verbs: ['WEST'], action: ["goto", LOC_ROADEND]},
+      {verbs: ['NORTH'], action: ["goto", LOC_FOREST18]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_FOREST21]},
+    ]
 - LOC_FOREST22:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
     conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
+    travel: [
+      {verbs: ['EAST'], action: ["goto", LOC_FOREST8]},
+      {verbs: ['WEST'], action: ["goto", LOC_FOREST11]},
+      {verbs: ['NORTH'], action: ["goto", LOC_FOREST15]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_FOREST12]},
+    ]
 - LOC_LEDGE:
     description:
       long: 'You are on a small ledge on one face of a sheer cliff.  There are no\npaths away from the ledge.  Across the chasm is a small clearing\nsurrounded by forest.'
       short: 'You''re on ledge.'
     conditions: {ABOVE: true, LIT: true}
+    travel: [
+      {verbs: ['JUMP'], action: ["goto", LOC_NOMAKE]},
+    ]
 - LOC_RESBOTTOM:
     description:
       long: 'You are walking across the bottom of the reservoir.  Walls of water\nrear up on either side.  The roar of the water cascading past is\nnearly deafening, and the mist is so thick you can barely see.'
@@ -1427,82 +2372,139 @@ locations: !!omap
     conditions: {FLUID: true, DEEP: true}
     sound: TOTAL_ROAR
     loud: true
+    travel: [
+      {verbs: ['NORTH'], action: ["goto", LOC_RESNORTH]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_RESERVOIR]},
+    ]
 - LOC_RESNORTH:
     description:
       long: 'You are at the northern edge of the reservoir.  A northwest passage\nleads sharply up from here.'
       short: 'You''re north of reservoir.'
     conditions: {FLUID: true, DEEP: true}
     sound: WATERS_CRASHING
+    travel: [
+      {verbs: ['SOUTH', 'ACROS', 'CROSS'], cond: [not OBJ_45 1], action: ["speak", BAD_DIRECTION]},
+      {verbs: ['SOUTH'], action: ["goto", LOC_RESBOTTOM]},
+      {verbs: ['NW', 'UPWAR', 'OUT'], action: ["goto", LOC_TREACHEROUS]},
+    ]
 - LOC_TREACHEROUS:
     description:
       long: 'You are scrambling along a treacherously steep, rocky passage.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['UPWAR', 'NW'], action: ["goto", LOC_STEEP]},
+      {verbs: ['D', 'SE'], action: ["goto", LOC_RESNORTH]},
+    ]
 - LOC_STEEP:
     description:
       long: 'You are on a very steep incline, which widens at it goes upward.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['D', 'SE'], action: ["goto", LOC_TREACHEROUS]},
+      {verbs: ['UPWAR', 'NW'], action: ["goto", LOC_CLIFFBASE]},
+    ]
 - LOC_CLIFFBASE:
     description:
       long: 'You are at the base of a nearly vertical cliff.  There are some\nslim footholds which would enable you to climb up, but it looks\nextremely dangerous.  Here at the base of the cliff lie the remains\nof several earlier adventurers who apparently failed to make it.'
       short: 'You''re at base of cliff.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['D', 'SE'], action: ["goto", LOC_STEEP]},
+      {verbs: ['UPWAR', 'CLIMB'], action: ["goto", LOC_CLIFFACE]},
+    ]
 - LOC_CLIFFACE:
     description:
       long: 'You are climbing along a nearly vertical cliff.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['D'], action: ["goto", LOC_CLIFFBASE]},
+      {verbs: ['UPWAR'], cond: [carry OBJ_46], action: ["goto", LOC_CLIFFTOP]},
+      {verbs: ['UPWAR'], action: ["goto", LOC_FOOTSLIP]},
+    ]
 - LOC_FOOTSLIP:
     description:
       long: 'Just as you reach the top, your foot slips on a loose rock and you\ntumble several hundred feet to join the other unlucky adventurers.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: [], action: ["goto", LOC_NOWHERE]},
+    ]
 - LOC_CLIFFTOP:
     description:
       long: 'Just as you reach the top, your foot slips on a loose rock and you\nmake one last desperate grab.  Your luck holds, as does your grip.\nWith an enormous heave, you lift yourself to the ledge above.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: [], action: ["goto", LOC_CLIFFLEDGE]},
+    ]
 - LOC_CLIFFLEDGE:
     description:
       long: 'You are on a small ledge at the top of a nearly vertical cliff.\nThere is a low crawl leading off to the northeast.'
       short: 'You''re at top of cliff.'
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['CLIMB', 'D'], action: ["goto", LOC_CLIFFACE]},
+      {verbs: ['NE', 'CRAWL'], action: ["goto", LOC_REACHDEAD]},
+    ]
 - LOC_REACHDEAD:
     description:
       long: 'You have reached a dead end.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: ['SW', 'OUT', 'CRAWL'], action: ["goto", LOC_CLIFFLEDGE]},
+    ]
 - LOC_GRUESOME:
     description:
       long: 'There is now one more gruesome aspect to the spectacular vista.'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: [], action: ["goto", LOC_NOWHERE]},
+    ]
 - LOC_FOOF1:
     description:
       long: '>>Foof!<<'
       short: !!null
     conditions: {}
+    travel: [
+      {verbs: [], action: ["goto", LOC_DEBRIS]},
+    ]
 - LOC_FOOF2:
     description:
       long: '>>Foof!<<'
       short: !!null
     conditions: {ABOVE: true}
+    travel: [
+      {verbs: [], action: ["goto", LOC_BUILDING]},
+    ]
 - LOC_FOOF3:
     description:
       long: '>>Foof!<<'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: [], action: ["goto", LOC_Y2]},
+    ]
 - LOC_FOOF4:
     description:
       long: '>>Foof!<<'
       short: !!null
     conditions: {ABOVE: true}
+    travel: [
+      {verbs: [], action: ["goto", LOC_BUILDING]},
+    ]
 - LOC_FOOF5:
     description:
       long: '>>Foof!<<'
       short: !!null
     conditions: {DEEP: true}
+    travel: [
+      {verbs: [], action: ["goto", LOC_PLOVER]},
+    ]
 - LOC_FOOF6:
     description:
       long: '>>Foof!<<'
index 3d6acf576eae29dee2446afe0fcba4474b1d3cdd..a3529386307527ca7be6fe4da259d385002d6602 100755 (executable)
--- a/travel.py
+++ b/travel.py
@@ -677,15 +677,35 @@ section3 = (
 def destdecode(dest):
     "Decode a destinatio nnumber"
     if dest <= 300:
-        return '["move", %s]' % locnames[dest]
+        return '["goto", %s]' % locnames[dest]
     elif dest <= 500:
-        return '["goto", %s]' % (dest - 300)
+        return '["special", %s]' % (dest - 300)
     else:
         return '["speak", %s]' % (msgnames[dest - 500])
 
+def conddecode(cond):
+    #          If M=0          it's unconditional.
+    #          If 0<M<100      it is done with M% probability.
+    #          If M=100        unconditional, but forbidden to dwarves.
+    #          If 100<M<=200   he must be carrying object M-100.
+    #          If 200<M<=300   must be carrying or in same room as M-200.
+    #          If 300<M<=400   game.prop(M % 100) must *not* be 0.
+    #          If 400<M<=500   game.prop(M % 100) must *not* be 1.
+    #          If 500<M<=600   game.prop(M % 100) must *not* be 2, etc.
+    if cond == 0:
+        return ""
+    elif cond < 100:
+        return "cond: [pct %d], " % cond
+    elif cond <= 200:
+        return "cond: [carry %s], " % objnames[cond-100]    
+    elif cond <= 300:
+        return "cond: [with %s], " % objnames[cond-200]
+    else:
+        return "cond: [not %s %d], " % (objnames[cond % 100], (cond - 300) // 100)
+
 def genline(loc):
     attrs = []
-    sys.stdout.write("    travel: {\n")
+    sys.stdout.write("    travel: [\n")
     for t in section3:
         t = list(t)
         src = t.pop(0)
@@ -703,16 +723,16 @@ def genline(loc):
             cond = dest // 1000
             dest = dest % 1000
             t = [verbs[e] for e in t]
-            sys.stdout.write("      %s %s %s,\n" % (destdecode(dest), cond, t))
-    sys.stdout.write("    }\n")
-        
-    
+            sys.stdout.write("      {verbs: %s, %saction: %s},\n" %\
+                             (t, conddecode(cond), destdecode(dest)))
+    sys.stdout.write("    ]\n")
 
 if __name__ == "__main__":
     with open("adventure.yaml", "r") as fp:
         db = yaml.load(fp)
-        fp.seek(0)
+        fp.seek(0) 
         locnames = [el[0] for el in db["locations"]]
+        objnames = [el[0] for el in db["object_descriptions"]]
         msgnames = [el[0] for el in db["arbitrary_messages"]]
         verbs = {}
         for entry in db["vocabulary"]: