Allow state labels in not clauses.
[open-adventure.git] / adventure.yaml
index df5dfc7f5399a0eea77afcd63e99f8ce6ed167ef..4f2f287cab96ebc7ab5ef144ce71ebfc0d25d0bc 100644 (file)
@@ -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.
 #
 #    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:
@@ -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:
@@ -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'