Vocabulary (adventure.txt section 4) is now in YAML...
authorEric S. Raymond <esr@thyrsus.com>
Sun, 25 Jun 2017 12:08:25 +0000 (08:08 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Sun, 25 Jun 2017 12:08:25 +0000 (08:08 -0400)
...but no code to use that structure yet.

adventure.yaml

index 622b3198013ba1ce5584867da91be709df566f9f..f39a5a25855debad80167fc7410ac627297c7618 100644 (file)
@@ -6,6 +6,11 @@
 #
 # We define a bunch of YAML structures:
 #
+# vocabulary: Almost all the words the game knows - one of them gets
+#    replaced with a randomly-generated cookie.  Fpor each word there
+#    is a type (motion, action, object, or special) and a numeric value.
+#    Multiple synonyms may have the same value.
+#
 # hints: Each item contains a hint number (add 10 to get cond bit),
 #    a hint label (used to generate the value macro for the hint) 
 #    the number of turns he must be at the right loc(s) before
 #      %B = Variable number of blanks
 #      %! = The entire message should be suppressed
 
+vocabulary: {
+    "ROAD":  {type: motion, value: 2},
+    "HILL":  {type: motion, value: 2},
+    "ENTER": {type: motion, value: 3},
+    "UPSTR": {type: motion, value: 4},
+    "DOWNS": {type: motion, value: 5},
+    "FORES": {type: motion, value: 6},
+    "FORWA": {type: motion, value: 7},
+    "CONTI": {type: motion, value: 7},
+    "ONWAR": {type: motion, value: 7},
+    "BACK":  {type: motion, value: 8},
+    "RETUR": {type: motion, value: 8},
+    "RETRE": {type: motion, value: 8},
+    "VALLE": {type: motion, value: 9},
+    "STAIR": {type: motion, value: 10},
+    "OUT":   {type: motion, value: 11},
+    "OUTSI": {type: motion, value: 11},
+    "EXIT":  {type: motion, value: 11},
+    "LEAVE": {type: motion, value: 11},
+    "BUILD": {type: motion, value: 12},
+    "HOUSE": {type: motion, value: 12},
+    "GULLY": {type: motion, value: 13},
+    "STREA": {type: motion, value: 14},
+    "FORK":  {type: motion, value: 15},
+    "BED":   {type: motion, value: 16},
+    "CRAWL": {type: motion, value: 17},
+    "COBBL": {type: motion, value: 18},
+    "INWAR": {type: motion, value: 19},
+    "INSID": {type: motion, value: 19},
+    "IN":    {type: motion, value: 19},
+    "SURFA": {type: motion, value: 20},
+    "NULL":  {type: motion, value: 21},
+    "NOWHE": {type: motion, value: 21},
+    "DARK":  {type: motion, value: 22},
+    "PASSA": {type: motion, value: 23},
+    "TUNNE": {type: motion, value: 23},
+    "LOW":   {type: motion, value: 24},
+    "CANYO": {type: motion, value: 25},
+    "AWKWA": {type: motion, value: 26},
+    "GIANT": {type: motion, value: 27},
+    "VIEW":  {type: motion, value: 28},
+    "UPWAR": {type: motion, value: 29},
+    "UP":    {type: motion, value: 29},
+    "U":     {type: motion, value: 29},
+    "ABOVE": {type: motion, value: 29},
+    "ASCEN": {type: motion, value: 29},
+    "D":     {type: motion, value: 30},
+    "DOWNW": {type: motion, value: 30},
+    "DOWN":  {type: motion, value: 30},
+    "DESCE": {type: motion, value: 30},
+    "PIT":   {type: motion, value: 31},
+    "OUTDO": {type: motion, value: 32},
+    "CRACK": {type: motion, value: 33},
+    "STEPS": {type: motion, value: 34},
+    "DOME":  {type: motion, value: 35},
+    "LEFT":  {type: motion, value: 36},
+    "RIGHT": {type: motion, value: 37},
+    "HALL":  {type: motion, value: 38},
+    "JUMP":  {type: motion, value: 39},
+    "BARRE": {type: motion, value: 40},
+    "OVER":  {type: motion, value: 41},
+    "ACROS": {type: motion, value: 42},
+    "EAST":  {type: motion, value: 43},
+    "E":     {type: motion, value: 43},
+    "WEST":  {type: motion, value: 44},
+    "W":     {type: motion, value: 44},
+    "NORTH": {type: motion, value: 45},
+    "N":     {type: motion, value: 45},
+    "SOUTH": {type: motion, value: 46},
+    "S":     {type: motion, value: 46},
+    "NE":    {type: motion, value: 47},
+    "SE":    {type: motion, value: 48},
+    "SW":    {type: motion, value: 49},
+    "NW":    {type: motion, value: 50},
+    "DEBRI": {type: motion, value: 51},
+    "HOLE":  {type: motion, value: 52},
+    "WALL":  {type: motion, value: 53},
+    "BROKE": {type: motion, value: 54},
+    "Y2":    {type: motion, value: 55},
+    "CLIMB": {type: motion, value: 56},
+    "LOOK":  {type: motion, value: 57},
+    "EXAMI": {type: motion, value: 57},
+    "TOUCH": {type: motion, value: 57},
+    "DESCR": {type: motion, value: 57},
+    "FLOOR": {type: motion, value: 58},
+    "ROOM":  {type: motion, value: 59},
+    "SLIT":  {type: motion, value: 60},
+    "SLAB":  {type: motion, value: 61},
+    "SLABR": {type: motion, value: 61},
+    "XYZZY": {type: motion, value: 62},
+    "DEPRE": {type: motion, value: 63},
+    "ENTRA": {type: motion, value: 64},
+    "PLUGH": {type: motion, value: 65},
+    "SECRE": {type: motion, value: 66},
+    "CAVE":  {type: motion, value: 67},
+    "CROSS": {type: motion, value: 69},
+    "BEDQU": {type: motion, value: 70},
+    "PLOVE": {type: motion, value: 71},
+    "ORIEN": {type: motion, value: 72},
+    "CAVER": {type: motion, value: 73},
+    "SHELL": {type: motion, value: 74},
+    "RESER": {type: motion, value: 75},
+    "MAIN":  {type: motion, value: 76},
+    "OFFIC": {type: motion, value: 76},
+    "KEYS":  {type: object, value: 1},
+    "KEY":   {type: object, value: 1},
+    "LAMP":  {type: object, value: 2},
+    "LANTE": {type: object, value: 2},
+    "GRATE": {type: object, value: 3},
+    "CAGE":  {type: object, value: 4},
+    "ROD":   {type: object, value: 5},
+    "ROD":   {type: object, value: 6}, # Must be next object after "real" rod
+    "STEPS": {type: object, value: 7},
+    "BIRD":  {type: object, value: 8},
+    "DOOR":  {type: object, value: 9},
+    "PILLO": {type: object, value: 10},
+    "VELVE": {type: object, value: 10},
+    "SNAKE": {type: object, value: 11},
+    "FISSU": {type: object, value: 12},
+    "TABLE": {type: object, value: 13},
+    "CLAM":  {type: object, value: 14},
+    "OYSTE": {type: object, value: 15},
+    "MAGAZ": {type: object, value: 16},
+    "ISSUE": {type: object, value: 16},
+    "SPELU": {type: object, value: 16},
+    '"SPEL': {type: object, value: 16},
+    "DWARF": {type: object, value: 17},
+    "DWARV": {type: object, value: 17},
+    "KNIFE": {type: object, value: 18},
+    "KNIVE": {type: object, value: 18},
+    "FOOD":  {type: object, value: 19},
+    "RATIO": {type: object, value: 19},
+    "BOTTL": {type: object, value: 20},
+    "JAR":   {type: object, value: 20},
+    "WATER": {type: object, value: 21},
+    "H2O":   {type: object, value: 21},
+    "OIL":   {type: object, value: 22},
+    "MIRRO": {type: object, value: 23},
+    "PLANT": {type: object, value: 24},
+    "BEANS": {type: object, value: 24},
+    "PLANT": {type: object, value: 25}, # Must be next object after "real" plant
+    "STALA": {type: object, value: 26},
+    "SHADO": {type: object, value: 27},
+    "FIGUR": {type: object, value: 27},
+    "WINDO": {type: object, value: 27}, # Same as figure
+    "AXE":   {type: object, value: 28},
+    "DRAWI": {type: object, value: 29},
+    "PIRAT": {type: object, value: 30},
+    "GENIE": {type: object, value: 30},
+    "DJINN": {type: object, value: 30},
+    "DRAGO": {type: object, value: 31},
+    "CHASM": {type: object, value: 32},
+    "TROLL": {type: object, value: 33},
+    "TROLL": {type: object, value: 34}, # Must be next object after "real" troll
+    "BEAR":  {type: object, value: 35},
+    "MESSA": {type: object, value: 36},
+    "VOLCA": {type: object, value: 37},
+    "GEYSE": {type: object, value: 37}, # Same as volcano
+    "MACHI": {type: object, value: 38},
+    "VENDI": {type: object, value: 38},
+    "BATTE": {type: object, value: 39},
+    "CARPE": {type: object, value: 40},
+    "MOSS":  {type: object, value: 40},
+    "CURTA": {type: object, value: 40}, # Same as carpet
+    "OGRE":  {type: object, value: 41},
+    "URN":   {type: object, value: 42},
+    "CAVIT": {type: object, value: 43},
+    "BLOOD": {type: object, value: 44},
+    "RESER": {type: object, value: 45}, # Verb overrides
+    "APPEN": {type: object, value: 46},
+    "LEPOR": {type: object, value: 46},
+    "MUD":   {type: object, value: 47},
+    "NOTE":  {type: object, value: 48},
+    "SIGN":  {type: object, value: 49},
+    "GOLD":  {type: object, value: 50},
+    "NUGGE": {type: object, value: 50},
+    "DIAMO": {type: object, value: 51},
+    "SILVE": {type: object, value: 52},
+    "BARS":  {type: object, value: 52},
+    "JEWEL": {type: object, value: 53},
+    "COINS": {type: object, value: 54},
+    "CHEST": {type: object, value: 55},
+    "BOX":   {type: object, value: 55},
+    "TREAS": {type: object, value: 55},
+    "EGGS":  {type: object, value: 56},
+    "EGG":   {type: object, value: 56},
+    "NEST":  {type: object, value: 56},
+    "TRIDE": {type: object, value: 57},
+    "VASE":  {type: object, value: 58},
+    "MING":  {type: object, value: 58},
+    "SHARD": {type: object, value: 58},
+    "POTTE": {type: object, value: 58},
+    "EMERA": {type: object, value: 59},
+    "PLATI": {type: object, value: 60},
+    "PYRAM": {type: object, value: 60},
+    "PEARL": {type: object, value: 61},
+    "RUG":   {type: object, value: 62},
+    "PERSI": {type: object, value: 62},
+    "SPICE": {type: object, value: 63},
+    "CHAIN": {type: object, value: 64},
+    "RUBY":  {type: object, value: 65},
+    "JADE":  {type: object, value: 66},
+    "NECKL": {type: object, value: 66},
+    "AMBER": {type: object, value: 67},
+    "GEMST": {type: object, value: 67},
+    "SAPPH": {type: object, value: 68},
+    "EBONY": {type: object, value: 69},
+    "STATU": {type: object, value: 69},
+    "CARRY": {type: action, value: 1},
+    "TAKE":  {type: action, value: 1},
+    "KEEP":  {type: action, value: 1},
+    "CATCH": {type: action, value: 1},
+    "STEAL": {type: action, value: 1},
+    "CAPTU": {type: action, value: 1},
+    "GET":   {type: action, value: 1},
+    "TOTE":  {type: action, value: 1},
+    "SNARF": {type: action, value: 1},
+    "DROP":  {type: action, value: 2},
+    "RELEA": {type: action, value: 2},
+    "FREE":  {type: action, value: 2},
+    "DISCA": {type: action, value: 2},
+    "DUMP":  {type: action, value: 2},
+    "SAY":   {type: action, value: 3},
+    "CHANT": {type: action, value: 3},
+    "SING":  {type: action, value: 3},
+    "UTTER": {type: action, value: 3},
+    "MUMBL": {type: action, value: 3},
+    "UNLOC": {type: action, value: 4},
+    "OPEN":  {type: action, value: 4},
+    "NOTHI": {type: action, value: 5},
+    "LOCK":  {type: action, value: 6},
+    "CLOSE": {type: action, value: 6},
+    "LIGHT": {type: action, value: 7},
+    "ON":    {type: action, value: 7},
+    "EXTIN": {type: action, value: 8},
+    "OFF":   {type: action, value: 8},
+    "WAVE":  {type: action, value: 9},
+    "SHAKE": {type: action, value: 9},
+    "SWING": {type: action, value: 9},
+    "CALM":  {type: action, value: 10},
+    "PLACA": {type: action, value: 10},
+    "TAME":  {type: action, value: 10},
+    "WALK":  {type: action, value: 11},
+    "RUN":   {type: action, value: 11},
+    "TRAVE": {type: action, value: 11},
+    "GO":    {type: action, value: 11},
+    "PROCE": {type: action, value: 11},
+    "CONTI": {type: action, value: 11},
+    "EXPLO": {type: action, value: 11},
+    "FOLLO": {type: action, value: 11},
+    "TURN":  {type: action, value: 11},
+    "ATTAC": {type: action, value: 12},
+    "KILL":  {type: action, value: 12},
+    "FIGHT": {type: action, value: 12},
+    "HIT":   {type: action, value: 12},
+    "STRIK": {type: action, value: 12},
+    "SLAY":  {type: action, value: 12},
+    "POUR":  {type: action, value: 13},
+    "EAT":   {type: action, value: 14},
+    "DEVOU": {type: action, value: 14},
+    "DRINK": {type: action, value: 15},
+    "RUB":   {type: action, value: 16},
+    "THROW": {type: action, value: 17},
+    "TOSS":  {type: action, value: 17},
+    "QUIT":  {type: action, value: 18},
+    "FIND":  {type: action, value: 19},
+    "WHERE": {type: action, value: 19},
+    "INVEN": {type: action, value: 20},
+    "FEED":  {type: action, value: 21},
+    "FILL":  {type: action, value: 22},
+    "BLAST": {type: action, value: 23},
+    "DETON": {type: action, value: 23},
+    "IGNIT": {type: action, value: 23},
+    "BLOWU": {type: action, value: 23},
+    "SCORE": {type: action, value: 24},
+    "FEE":   {type: action, value: 25},
+    "FIE":   {type: action, value: 25},
+    "FOE":   {type: action, value: 25},
+    "FOO":   {type: action, value: 25},
+    "FUM":   {type: action, value: 25},
+    "BRIEF": {type: action, value: 26},
+    "READ":  {type: action, value: 27},
+    "PERUS": {type: action, value: 27},
+    "BREAK": {type: action, value: 28},
+    "SHATT": {type: action, value: 28},
+    "SMASH": {type: action, value: 28},
+    "WAKE":  {type: action, value: 29},
+    "DISTU": {type: action, value: 29},
+    "SUSPE": {type: action, value: 30},
+    "PAUSE": {type: action, value: 30},
+    "SAVE":  {type: action, value: 30},
+    "RESUM": {type: action, value: 31},
+    "RESTA": {type: action, value: 31},
+    "FLY":   {type: action, value: 32},
+    "LISTE": {type: action, value: 33},
+    "Z'ZZZ": {type: action, value: 34}, # Gets replaced
+    "FEE":   {type: special, value: 1},
+    "FIE":   {type: special, value: 2},
+    "FOE":   {type: special, value: 3},
+    "FOO":   {type: special, value: 4},
+    "FUM":   {type: special, value: 5},
+    "THANK": {type: special, value: 13},
+    "SESAM": {type: special, value: 50},
+    "OPENS": {type: special, value: 50},
+    "ABRA":  {type: special, value: 50},
+    "ABRAC": {type: special, value: 50},
+    "SHAZA": {type: special, value: 50},
+    "HOCUS": {type: special, value: 50},
+    "POCUS": {type: special, value: 50},
+    "HELP":  {type: special, value: 51},
+    "?":     {type: special, value: 51},
+    "NO":    {type: special, value: 54},
+    "TREE":  {type: special, value: 64},
+    "TREES": {type: special, value: 64},
+    "DIG":   {type: special, value: 66},
+    "EXCAV": {type: special, value: 66},
+    "LOST":  {type: special, value: 68},
+    "MIST":  {type: special, value: 69},
+    "FUCK":  {type: special, value: 79},
+    "STOP":  {type: special, value: 139},
+    "INFO":  {type: special, value: 142},
+    "INFOR": {type: special, value: 142},
+    "SWIM":  {type: special, value: 147},
+    "WIZAR": {type: special, value: 246},
+    "YES":   {type: special, value: 271},
+    "NEWS":  {type: special, value: 275},
+}
+
 # FIXME: Hint texts shouldn't be in arbitrary_messages, but inlined here
 hints:
   - hint: &grate