Change structure of vocabulary YAML to cope with multiply-loaded words.

This commit is contained in:
Eric S. Raymond 2017-06-25 12:36:40 -04:00
parent cfb43fcf44
commit 8a3757df59
2 changed files with 356 additions and 334 deletions

View file

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

View file

@ -25,11 +25,11 @@
# 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 the condition (if any) is not met, then the next#different*
# "destination" value is used (unless it fails to meet#its* conditions,
# 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 the condition (if any) is not met, then the next different
# "destination" value is used (unless it fails to meet *its* conditions,
# in which case the next is found, etc.). Typically, the next dest will
# be for one of the same verbs, so that its only use is as the alternate
# destination for those verbs. For instance:
@ -671,13 +671,28 @@ section3 = (
(184, 33, 1),
)
def destdecode(dest):
"Decode a destinatio nnumber"
if dest <= 300:
return '["move", %s]' % locnames[dest]
elif dest <= 500:
return '["goto", %s]' % (dest - 300)
else:
return '["speak", %s]' % (msgnames[dest - 500])
def genline(loc):
attrs = []
sys.stdout.write(" travel: {\n")
for t in section3:
t = list(t)
if t.pop(0) == loc:
sys.stdout.write(" %s,\n" % t)
src = t.pop(0)
if src == loc:
dest = t.pop(0)
cond = dest // 1000
dest = dest % 1000
print("cond %s, dest %s, words: %s" % (cond, dest, t))
t = [verbs[e] for e in t]
sys.stdout.write(" %s %s %s,\n" % (destdecode(dest), cond, t))
sys.stdout.write(" }\n")
@ -687,6 +702,12 @@ if __name__ == "__main__":
db = yaml.load(fp)
fp.seek(0)
locnames = [el[0] for el in db["locations"]]
msgnames = [el[0] for el in db["arbitrary_messages"]]
verbs = {}
for entry in db["vocabulary"]:
if entry["type"] == "motion" and entry["value"] not in verbs:
verbs[entry["value"]] = entry["word"]
print(verbs)
ln = -1
while True:
line = fp.readline()