X-Git-Url: https://jxself.org/git/?p=open-adventure.git;a=blobdiff_plain;f=adventure.yaml;h=7f79d903e2639b9e7fdb3aba45e85a36bc360892;hp=df5dfc7f5399a0eea77afcd63e99f8ce6ed167ef;hb=ceb5c27218469fd3732cf6a9ed16d0a2c4e682df;hpb=f9edfc51515853c21418c1d55b681a71681a748c diff --git a/adventure.yaml b/adventure.yaml index df5dfc7..7f79d90 100644 --- a/adventure.yaml +++ b/adventure.yaml @@ -6,14 +6,17 @@ # # 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 @@ -56,7 +59,8 @@ # [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. # @@ -80,16 +84,18 @@ # 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 @@ -340,44 +346,6 @@ vocabulary: [ {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 @@ -534,6 +502,116 @@ motions: !!omap - 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 name: CAVE @@ -714,7 +792,7 @@ locations: !!omap {verbs: ['WEST'], action: [goto, LOC_FOREST9]}, {verbs: ['BUILD'], action: [goto, LOC_START]}, {verbs: ['UPSTR', 'GULLY', 'NORTH'], action: [goto, LOC_SLIT]}, - {verbs: ['ENTER', 'INWAR', 'D'], 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: @@ -723,7 +801,7 @@ locations: !!omap 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]}, @@ -745,7 +823,7 @@ locations: !!omap 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]}, @@ -758,7 +836,7 @@ locations: !!omap 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]}, @@ -771,7 +849,7 @@ locations: !!omap 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]}, @@ -783,7 +861,7 @@ locations: !!omap 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]}, @@ -821,9 +899,9 @@ locations: !!omap 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: @@ -842,9 +920,9 @@ locations: !!omap 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]}, @@ -917,9 +995,9 @@ locations: !!omap 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]}, @@ -1363,7 +1441,7 @@ locations: !!omap 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]}, @@ -1414,7 +1492,7 @@ locations: !!omap 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]}, ] @@ -1843,9 +1921,9 @@ locations: !!omap 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: @@ -2150,7 +2228,7 @@ locations: !!omap 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: @@ -2473,7 +2551,7 @@ locations: !!omap 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]}, ] @@ -3012,8 +3090,8 @@ objects: !!omap 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: @@ -3022,9 +3100,9 @@ objects: !!omap 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' @@ -3165,7 +3243,7 @@ objects: !!omap 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?)' @@ -3179,8 +3257,8 @@ objects: !!omap 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' @@ -3288,7 +3366,7 @@ objects: !!omap 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']