#
# We define a bunch of YAML structures:
#
-# vocabulary: Almost all the words the game knows - one of them (the
+# vocabulary: - This structure is unused, and will eventually be removed. -
+# Almost all the words the game knows - one of them (the
# reservoir magic word) gets replaced with a randomly-generated
# cookie. For each word there is a type (motion, action, object,
# or special) and a numeric value. Multiple synonyms may have the
# same value.
#
-# actspk: Default message for action verbs. The numbers correspond to
-# values in the vocabulary list.
+# motions: Motion words, grouped into synonyms.
+#
+# actions: Action words, grouped into synonyms, and their corresponding
+# default messages.
#
# hints: Each item contains a hint number, a hint label (used to
# generate the value macro for the hint) the number of turns he
# [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
+# [not, OBJ N] Property of named OBJ must not be N.
+# N may be numeric or a state label.
# All attributes are optional except the long description and
# travel. Order of locations is not significant.
#
# Order doesn't matter; the logic simply tests every threshold on
# the assumption that turn counts never decrease nor skip values.
#
-# object_descriptions: Each item contains a description for use in the
+# objects: Each item contains a description for use in the
# inventory command and one or more messages describing the object
-# in different states. There is also a boolean "treasure"
-# attribute, defaulting to false. An pbject may have one or two
+# in different states. The vocabulary word(s) referring to this
+# object are listed (words). There is also a boolean "treasure"
+# attribute, defaulting to false. 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). An object may also be
# flagged immovable, meaning it cannot be carried. If a state
# message is a tuple then the first element is made the name of a
-# #define viible to the code for the associayed state, numbered
-# from zero upwards. If the inventory desription begins with "*"
+# #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. If the inventory description begins with "*"
# the object is dungeon furniture that cannot be taken or carried.
#
# obituaries: Death messages and reincarnation queries. Order is
{word: "NEWS", type: special, value: 275},
]
-actspk: {
- 1: ALREADY_CARRYING,
- 2: ARENT_CARRYING,
- 3: NO_MESSAGE,
- 4: NOT_LOCKABLE,
- 5: NO_MESSAGE,
- 6: NOT_LOCKABLE,
- 7: DONT_UNDERSTAND,
- 8: DONT_UNDERSTAND,
- 9: NOTHING_HAPPENS,
- 10: AM_GAME,
- 11: WHERE_QUERY,
- 12: RIDICULOUS_ATTEMPT,
- 13: ARENT_CARRYING,
- 14: RIDICULOUS_ATTEMPT,
- 15: STREAM_WATER,
- 16: RUB_NOGO,
- 17: ARENT_CARRYING,
- 18: HUH_MAN,
- 19: NEARBY,
- 20: NEARBY,
- 21: NO_EDIBLES,
- 22: CANT_FILL,
- 23: REQUIRES_DYNAMITE,
- 24: HUH_MAN,
- 25: NOT_KNOWHOW,
- 26: ON_WHAT,
- 27: DONT_UNDERSTAND,
- 28: BEYOND_POWER,
- 29: RIDICULOUS_ATTEMPT,
- 30: HUH_MAN,
- 31: HUH_MAN,
- 32: AM_GAME,
- 33: DONT_UNDERSTAND,
- 34: NOTHING_HAPPENS,
- 35: HUH_MAN,
-}
+motions: !!omap
+- MOT_0:
+ words: !!null
+- MOT_1:
+ words: !!null
+- MOT_2:
+ words: ['road', 'hill']
+- ENTER:
+ words: ['enter']
+- MOT_4:
+ words: ['upstr']
+- MOT_5:
+ words: ['downs']
+- MOT_6:
+ words: ['fores']
+- MOT_7:
+ words: ['forwa', 'conti', 'onwar']
+- BACK:
+ words: ['back', 'retur', 'retre']
+- MOT_9:
+ words: ['valle']
+- MOT_10:
+ words: ['stair']
+- MOT_11:
+ words: ['out', 'outsi', 'exit', 'leave']
+- MOT_12:
+ words: ['build', 'house']
+- MOT_13:
+ words: ['gully']
+- STREAM:
+ words: ['strea']
+- MOT_15:
+ words: ['fork']
+- MOT_16:
+ words: ['bed']
+- MOT_17:
+ words: ['crawl']
+- MOT_18:
+ words: ['cobbl']
+- MOT_19:
+ words: ['inwar', 'insid', 'in']
+- MOT_20:
+ words: ['surfa']
+- NUL:
+ words: ['null', 'nowhe']
+- MOT_22:
+ words: ['dark']
+- MOT_23:
+ words: ['passa', 'tunne']
+- MOT_24:
+ words: ['low']
+- MOT_25:
+ words: ['canyo']
+- MOT_26:
+ words: ['awkwa']
+- MOT_27:
+ words: ['giant']
+- MOT_28:
+ words: ['view']
+- MOT_29:
+ words: ['upwar', 'up', 'u', 'above', 'ascen']
+- MOT_30:
+ words: ['d', 'downw', 'down', 'desce']
+- MOT_31:
+ words: ['pit']
+- MOT_32:
+ words: ['outdo']
+- MOT_33:
+ words: ['crack']
+- MOT_34:
+ words: ['steps']
+- MOT_35:
+ words: ['dome']
+- MOT_36:
+ words: ['left']
+- MOT_37:
+ words: ['right']
+- MOT_38:
+ words: ['hall']
+- MOT_39:
+ words: ['jump']
+- MOT_40:
+ words: ['barre']
+- MOT_41:
+ words: ['over']
+- MOT_42:
+ words: ['acros']
+- MOT_43:
+ words: ['east', 'e']
+- MOT_44:
+ words: ['west', 'w']
+- MOT_45:
+ words: ['north', 'n']
+- MOT_46:
+ words: ['south', 's']
+- MOT_47:
+ words: ['ne']
+- MOT_48:
+ words: ['se']
+- MOT_49:
+ words: ['sw']
+- MOT_50:
+ words: ['nw']
+- MOT_51:
+ words: ['debri']
+- MOT_52:
+ words: ['hole']
+- MOT_53:
+ words: ['wall']
+- MOT_54:
+ words: ['broke']
+- MOT_55:
+ words: ['y2']
+- MOT_56:
+ words: ['climb']
+- LOOK:
+ words: ['look', 'exami', 'touch', 'descr']
+- MOT_58:
+ words: ['floor']
+- MOT_59:
+ words: ['room']
+- MOT_60:
+ words: ['slit']
+- MOT_61:
+ words: ['slab', 'slabr']
+- MOT_62:
+ words: ['xyzzy']
+- DPRSSN:
+ words: ['depre']
+- ENTRNC:
+ words: ['entra']
+- MOT_65:
+ words: ['plugh']
+- MOT_66:
+ words: ['secre']
+- CAVE:
+ words: ['cave']
+- MOT_68:
+ words: !!null
+- MOT_69:
+ words: ['cross']
+- MOT_70:
+ words: ['bedqu']
+- MOT_71:
+ words: ['plove']
+- MOT_72:
+ words: ['orien']
+- MOT_73:
+ words: ['caver']
+- MOT_74:
+ words: ['shell']
+- MOT_75:
+ words: ['reser']
+- MOT_76:
+ words: ['main', 'offic']
+
+actions: !!omap
+- ACT_0:
+ message: !!null
+ words: !!null
+- ACT_1:
+ message: ALREADY_CARRYING
+ words: ['carry', 'take', 'keep', 'catch', 'steal', 'captu', 'get', 'tote', 'snarf']
+- ACT_2:
+ message: ARENT_CARRYING
+ words: ['drop', 'relea', 'free', 'disca', 'dump']
+- SAY:
+ message: NO_MESSAGE
+ words: ['say', 'chant', 'sing', 'utter', 'mumbl']
+- ACT_4:
+ message: NOT_LOCKABLE
+ words: ['unloc', 'open']
+- ACT_5:
+ message: NO_MESSAGE
+ words: ['nothi']
+- LOCK:
+ message: NOT_LOCKABLE
+ words: ['lock', 'close']
+- ACT_7:
+ message: DONT_UNDERSTAND
+ words: ['light', 'on']
+- ACT_8:
+ message: DONT_UNDERSTAND
+ words: ['extin', 'off']
+- ACT_9:
+ message: NOTHING_HAPPENS
+ words: ['wave', 'shake', 'swing']
+- ACT_10:
+ message: AM_GAME
+ words: ['calm', 'placa', 'tame']
+- ACT_11:
+ message: WHERE_QUERY
+ words: ['walk', 'run', 'trave', 'go', 'proce', 'conti', 'explo', 'follo', 'turn']
+- ACT_12:
+ message: RIDICULOUS_ATTEMPT
+ words: ['attac', 'kill', 'fight', 'hit', 'strik', 'slay']
+- ACT_13:
+ message: ARENT_CARRYING
+ words: ['pour']
+- ACT_14:
+ message: RIDICULOUS_ATTEMPT
+ words: ['eat', 'devou']
+- ACT_15:
+ message: STREAM_WATER
+ words: ['drink']
+- ACT_16:
+ message: RUB_NOGO
+ words: ['rub']
+- THROW:
+ message: ARENT_CARRYING
+ words: ['throw', 'toss']
+- ACT_18:
+ message: HUH_MAN
+ words: ['quit']
+- FIND:
+ message: NEARBY
+ words: ['find', 'where']
+- INVENT:
+ message: NEARBY
+ words: ['inven']
+- ACT_21:
+ message: NO_EDIBLES
+ words: ['feed']
+- ACT_22:
+ message: CANT_FILL
+ words: ['fill']
+- ACT_23:
+ message: REQUIRES_DYNAMITE
+ words: ['blast', 'deton', 'ignit', 'blowu']
+- ACT_24:
+ message: HUH_MAN
+ words: ['score']
+- ACT_25:
+ message: NOT_KNOWHOW
+ words: ['fee', 'fie', 'foe', 'foo', 'fum']
+- ACT_26:
+ message: ON_WHAT
+ words: ['brief']
+- ACT_27:
+ message: DONT_UNDERSTAND
+ words: ['read', 'perus']
+- ACT_28:
+ message: BEYOND_POWER
+ words: ['break', 'shatt', 'smash']
+- ACT_29:
+ message: RIDICULOUS_ATTEMPT
+ words: ['wake', 'distu']
+- ACT_30:
+ message: HUH_MAN
+ words: ['suspe', 'pause', 'save']
+- ACT_31:
+ message: HUH_MAN
+ words: ['resum', 'resta']
+- ACT_32:
+ message: AM_GAME
+ words: ['fly']
+- ACT_33:
+ message: DONT_UNDERSTAND
+ words: ['liste']
+- ACT_34:
+ message: NOTHING_HAPPENS
+ words: ['z''zzz']
+- ACT_35:
+ message: HUH_MAN
+ words: !!null
hints:
- hint: &grate
{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, GRATE, 0,], action: [goto, LOC_BELOWGRATE]},
+ {verbs: ['ENTER', 'INWAR', 'D'], cond: [not, GRATE, GRATE_CLOSED], action: [goto, LOC_BELOWGRATE]},
{verbs: ['ENTER'], action: ["speak", GRATE_NOWAY]},
]
- LOC_BELOWGRATE:
short: 'You''re below the grate.'
conditions: {LIT: true}
travel: [
- {verbs: ['OUT', 'UPWAR'], cond: [not, GRATE, 0], action: [goto, LOC_GRATE]},
+ {verbs: ['OUT', 'UPWAR'], cond: [not, GRATE, GRATE_CLOSED], 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]},
short: 'You''re in debris room.'
conditions: {}
travel: [
- {verbs: ['DEPRE'], cond: [not, GRATE, 0], action: [goto, LOC_GRATE]},
+ {verbs: ['DEPRE'], cond: [not, GRATE, GRATE_CLOSED], 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]},
short: !!null
conditions: {}
travel: [
- {verbs: ['DEPRE'], cond: [not, GRATE, 0], action: [goto, LOC_GRATE]},
+ {verbs: ['DEPRE'], cond: [not, GRATE, GRATE_CLOSED], 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]},
conditions: {}
hints: [*bird]
travel: [
- {verbs: ['DEPRE'], cond: [not, GRATE, 0], action: [goto, LOC_GRATE]},
+ {verbs: ['DEPRE'], cond: [not, GRATE, GRATE_CLOSED], action: [goto, LOC_GRATE]},
{verbs: ['ENTRA'], action: [goto, LOC_BELOWGRATE]},
{verbs: ['DEBRI'], action: [goto, LOC_DEBRIS]},
{verbs: ['CANYO', 'EAST'], action: [goto, LOC_AWKWARD]},
short: 'You''re at top of small pit.'
conditions: {}
travel: [
- {verbs: ['DEPRE'], cond: [not, GRATE, 0], action: [goto, LOC_GRATE]},
+ {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]},
conditions: {DEEP: true}
travel: [
{verbs: ['HALL', 'EAST'], action: [goto, LOC_MISTHALL]},
- {verbs: ['JUMP'], cond: [not, FISSURE, 0], action: ["speak", CROSS_BRIDGE]},
- {verbs: ['FORWA'], cond: [not, FISSURE, 1], action: [goto, LOC_NOMAKE]},
- {verbs: ['OVER', 'ACROS', 'WEST', 'CROSS'], cond: [not, FISSURE, 1], action: ["speak", NO_CROSS]},
+ {verbs: ['JUMP'], cond: [not, FISSURE, UNBRIDGED], action: ["speak", CROSS_BRIDGE]},
+ {verbs: ['FORWA'], cond: [not, FISSURE, BRIDGED], action: [goto, LOC_NOMAKE]},
+ {verbs: ['OVER', 'ACROS', 'WEST', 'CROSS'], cond: [not, FISSURE, BRIDGED], action: ["speak", NO_CROSS]},
{verbs: ['OVER'], action: [goto, LOC_WESTBANK]},
]
- LOC_NUGGET:
hints: [*snake]
travel: [
{verbs: ['STAIR', 'UPWAR', 'EAST'], action: [goto, LOC_MISTHALL]},
- {verbs: ['NORTH', 'RIGHT'], cond: [not, SNAKE, 0], action: [goto, LOC_FLOORHOLE]},
- {verbs: ['SOUTH', 'LEFT'], cond: [not, SNAKE, 0], action: [goto, LOC_SOUTHSIDE]},
- {verbs: ['WEST', 'FORWA'], cond: [not, SNAKE, 0], action: [goto, LOC_WESTSIDE]},
+ {verbs: ['NORTH', 'RIGHT'], cond: [not, SNAKE, SNAKE_BLOCKS], action: [goto, LOC_FLOORHOLE]},
+ {verbs: ['SOUTH', 'LEFT'], cond: [not, SNAKE, SNAKE_BLOCKS], action: [goto, LOC_SOUTHSIDE]},
+ {verbs: ['WEST', 'FORWA'], cond: [not, SNAKE, SNAKE_BLOCKS], action: [goto, LOC_WESTSIDE]},
{verbs: ['NORTH'], action: [goto, LOC_SNAKEBLOCK]},
{verbs: ['SW'], cond: [pct, 35], action: [goto, LOC_SECRET3]},
{verbs: ['SW'], cond: ["with", SNAKE], action: [goto, LOC_SNAKEBLOCK]},
short: 'You''re on west bank of fissure.'
conditions: {DEEP: true}
travel: [
- {verbs: ['JUMP'], cond: [not, FISSURE, 0], action: ["speak", CROSS_BRIDGE]},
- {verbs: ['FORWA'], cond: [not, FISSURE, 1], action: [goto, LOC_NOMAKE]},
- {verbs: ['OVER', 'ACROS', 'EAST', 'CROSS'], cond: [not, FISSURE, 1], action: ["speak", NO_CROSS]},
+ {verbs: ['JUMP'], cond: [not, FISSURE, UNBRIDGED], action: ["speak", CROSS_BRIDGE]},
+ {verbs: ['FORWA'], cond: [not, FISSURE, BRIDGED], action: [goto, LOC_NOMAKE]},
+ {verbs: ['OVER', 'ACROS', 'EAST', 'CROSS'], cond: [not, FISSURE, BRIDGED], action: ["speak", NO_CROSS]},
{verbs: ['OVER'], action: [goto, LOC_EASTBANK]},
{verbs: ['NORTH'], action: [goto, LOC_PARALLEL1]},
{verbs: ['WEST'], action: [goto, LOC_MISTWEST]},
conditions: {DEEP: true}
travel: [
{verbs: ['D', 'SLAB'], action: [goto, LOC_SLAB]},
- {verbs: ['SOUTH'], cond: [not, DRAGON, 0], action: [goto, LOC_SECRET5]},
+ {verbs: ['SOUTH'], cond: [not, DRAGON, DRAGON_BLOCKS], action: [goto, LOC_SECRET5]},
{verbs: ['SOUTH'], action: [goto, LOC_SECRET4]},
{verbs: ['NORTH'], action: [goto, LOC_MIRRORCANYON]},
{verbs: ['RESER'], action: [goto, LOC_RESERVOIR]},
conditions: {DEEP: true}
travel: [
{verbs: ['EAST'], action: [goto, LOC_KINGHALL]},
- {verbs: ['WEST'], cond: [not, DRAGON, 0], action: [goto, LOC_SECRET5]},
+ {verbs: ['WEST'], cond: [not, DRAGON, DRAGON_BLOCKS], action: [goto, LOC_SECRET5]},
{verbs: ['WEST'], action: [goto, LOC_SECRET6]},
{verbs: ['D'], action: [goto, LOC_WIDEPLACE]},
]
travel: [
{verbs: ['SW'], action: [goto, LOC_WINDING]},
{verbs: ['OVER', 'ACROS', 'CROSS', 'NE'], cond: [with, TROLL], action: ["speak", TROLL_BLOCKS]},
- {verbs: ['OVER'], cond: [not, CHASM, 0], action: ["speak", BRIDGE_GONE]},
+ {verbs: ['OVER'], cond: [not, CHASM, TROLL_BRIDGE], action: ["speak", BRIDGE_GONE]},
{verbs: ['OVER'], action: ["special", 3]},
- {verbs: ['JUMP'], cond: [not, CHASM, 0], action: [goto, LOC_NOMAKE]},
+ {verbs: ['JUMP'], cond: [not, CHASM, TROLL_BRIDGE], action: [goto, LOC_NOMAKE]},
{verbs: ['JUMP'], action: ["speak", CROSS_BRIDGE]},
]
- LOC_WINDING:
conditions: {DEEP: true}
travel: [
{verbs: ['NORTH', 'OUT'], action: [goto, LOC_DIFFERENT2]},
- {verbs: ['SOUTH'], cond: [not, VEND, 0], action: [goto, LOC_ROUGHHEWN]},
+ {verbs: ['SOUTH'], cond: [not, VEND, VEND_BLOCKS], action: [goto, LOC_ROUGHHEWN]},
{verbs: ['SOUTH'], action: [goto, LOC_BADDIRECTION]},
]
- LOC_ROUGHHEWN:
conditions: {FLUID: true, DEEP: true}
sound: WATERS_CRASHING
travel: [
- {verbs: ['SOUTH', 'ACROS', 'CROSS'], cond: [not, RESER, 1], action: ["speak", BAD_DIRECTION]},
+ {verbs: ['SOUTH', 'ACROS', 'CROSS'], cond: [not, RESER, WATERS_PARTED], action: ["speak", BAD_DIRECTION]},
{verbs: ['SOUTH'], action: [goto, LOC_RESBOTTOM]},
{verbs: ['NW', 'UPWAR', 'OUT'], action: [goto, LOC_TREACHEROUS]},
]
locations: LOC_KINGHALL
immovable: true
longs:
- - 'A huge green fierce snake bars the way!'
- - '' # chased away
+ - [SNAKE_BLOCKS, 'A huge green fierce snake bars the way!']
+ - [SNAKE_CHASED, ''] # chased away
sounds:
- 'The snake is hissing venomously.'
- FISSURE:
locations: [LOC_EASTBANK, LOC_WESTBANK]
immovable: true
longs:
- - ''
- - 'A crystal bridge now spans the fissure.'
- - 'The crystal bridge has vanished!'
+ - [UNBRIDGED, '']
+ - [BRIDGED, 'A crystal bridge now spans the fissure.']
+ - [VANISHED, 'The crystal bridge has vanished!']
- OBJ_13:
words: ['table']
inventory: '*stone tablet'
locations: [LOC_SECRET4, LOC_SECRET6]
immovable: true
longs:
- - 'A huge green fierce dragon bars the way!'
+ - [DRAGON_BLOCKS, '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.'
- 'Congratulations! You have just vanquished a dragon with your bare\nhands! (Unbelievable, isn''t it?)'
locations: [LOC_SWCHASM, LOC_NECHASM]
immovable: true
longs:
- - '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.'
+ - [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.']
- TROLL:
words: ['troll']
inventory: '*troll'
immovable: true
longs:
- ''
- - 'The waters have parted to form a narrow path across the reservoir.'
+ - [WATERS_PARTED, 'The waters have parted to form a narrow path across the reservoir.']
- 'The waters crash together again.'
- OBJ_46:
words: ['appen', 'lepor']