Use enums for object number mnemonics instead of VOCWRD() calls.
[open-adventure.git] / adventure.yaml
index 14a2ab963cc3212db7e66db18925748c903792d5..7cee07ea47cccb684741ada37f09a9ec9a950b27 100644 (file)
@@ -12,6 +12,9 @@
 #    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.
+#
 # hints: Each item contains a hint number, 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 triggering the hint, the
 #    significant, they're used in succession as the player racks up
 #    deaths.
 #
-# These correspond to sections 1, 2, 4, 5, 6, 7, 9, 10, 11, 13, and 14 in
-# the old adventure.text format.  Sections 3 and 8 haven't moved
-# yet.  Section 12 was obsolete.
-#
 # Message strings may include certain special character sequences to
 # denote that the program must provide parameters to insert into a
 # message when the message is printed.  These sequences are:
 
 # There are duplicate keys in this vocabulary, that's why it can't be a normal
 # map.  You have to iterate through it looking for a match qualified by type.
+# 1 is not allocated because it's used as a sentinel value in motion-verb
+# lists.
 vocabulary: [
     {word: "ROAD",  type: motion, value: 2},
     {word: "HILL",  type: motion, value: 2},
@@ -219,110 +220,6 @@ vocabulary: [
     {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},
@@ -443,78 +340,115 @@ vocabulary: [
     {word: "NEWS",  type: special, value: 275},
 ]
 
-# FIXME: Hint texts shouldn't be in arbitrary_messages, but inlined here
+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,
+}
+
 hints:
   - hint: &grate
       name: CAVE
       number: 1
       turns: 4
       penalty: 2
-      question: ENTRY_QUERY
-      hint: HARD_GRATE
+      question: 'Are you trying to get into the cave?'
+      hint: 'The grate is very solid and has a hardened steel lock.  You cannot\nenter without a key, and there are no keys nearby.  I would recommend\nlooking elsewhere for the keys.'
   - hint: &bird
       name: BIRD
       number: 2
       turns: 5
       penalty: 2
-      question: BIRD_QUERY
-      hint: SKITTISH_BIRD
+      question: 'Are you trying to catch the bird?'
+      hint: 'Something about you seems to be frightening the bird.  Perhaps you\nmight figure out what it is.'
   - hint: &snake
       name: SNAKE
       number: 3
       turns: 8
       penalty: 2
-      question: SNAKE_QUERY
-      hint: SNAKE_HINT
+      question: 'Are you trying to somehow deal with the snake?'
+      hint: 'You can''t kill the snake, or drive it away, or avoid it, or anything\nlike that.  There is a way to get by, but you don''t have the necessary\nresources right now.'
   - hint: &maze
       name: MAZE
       number: 4
       turns: 75
       penalty: 4
-      question: MAZE_HELP
-      hint: DROP_THINGS
+      question: 'Do you need help getting out of the maze?'
+      hint: 'You can make the passages look less alike by dropping things.'
   - hint: &dark
       name: DARK
       number: 5
       turns: 25
       penalty: 5
-      question: PLOVER_QUERY
-      hint: EXPLORE_HINT
+      question: 'Are you trying to explore beyond the plover room?'
+      hint: 'There is a way to explore that region without having to worry about\nfalling into a pit.  None of the objects available is immediately\nuseful in discovering the secret.'
   - hint: &witt
       name: WITT
       number: 6
       turns: 20
       penalty: 3
-      question: HELP_LEAVING
-      hint: NOGO_WEST
+      question: 'Do you need help getting out of here?'
+      hint: 'Don''t go west.'
   - hint: &urn
       name: CLIFF
       number: 7
       turns: 8
       penalty: 2
-      question: WONDERING_QUERY
-      hint: ADVANCED_SECTION
+      question: 'Are you wondering what to do here?'
+      hint: 'This section is quite advanced.  Find the cave first.'
   - hint: &forest
       name: WOODS
       number: 8
       turns: 25
       penalty: 2
-      question: FOREST_QUERY
-      hint: GO_EAST
+      question: 'Would you like to be shown out of the forest?'
+      hint: 'Go east ten times.  If that doesn''t get you out, then go south, then\nwest twice, then south.'
   - hint: &ogre
       name: OGRE
       number: 9
       turns: 10
       penalty: 4
-      question: OGRE_QUERY
-      hint: OGRE_CLUE
+      question: 'Do you need help dealing with the ogre?'
+      hint: 'There is nothing the presence of which will prevent you from defeating\nhim; thus it can''t hurt to fetch everything you possibly can.'
   - hint: &jade
       name: JADE
       number: 10
       turns: 1
       penalty: 4
-      question: MISSING_ONE
-      hint: NO_LOCATE
+      question: 'You''re missing only one other treasure.  Do you need help finding it?'
+      hint: 'Once you''ve found all the other treasures, it is no longer possible to\nlocate the one you''re now missing.'
 
 locations: !!omap
 - LOC_NOWHERE:
@@ -2530,10 +2464,10 @@ arbitrary_messages:  !!omap
 - NO_MORE_DETAIL: 'Sorry, but I am not allowed to give more detail.  I will repeat the\nlong description of your location.'
 - PITCH_DARK: 'It is now pitch dark.  If you proceed you will likely fall into a pit.'
 - W_IS_WEST: 'If you prefer, simply type w rather than west.'
-- BIRD_QUERY: 'Are you trying to catch the bird?'
-- SKITTISH_BIRD: 'Something about you seems to be frightening the bird.  Perhaps you\nmight figure out what it is.'
-- SNAKE_QUERY: 'Are you trying to somehow deal with the snake?'
-- SNAKE_HINT: 'You can''t kill the snake, or drive it away, or avoid it, or anything\nlike that.  There is a way to get by, but you don''t have the necessary\nresources right now.'
+- ARB_18: !!null
+- ARB_19: !!null
+- ARB_20: !!null
+- ARB_21: !!null
 - REALLY_QUIT: 'Do you really want to quit now?'
 - PIT_FALL: 'You fell into a pit and broke every bone in your body!'
 - ALREADY_CARRYING: 'You are already carrying it!'
@@ -2574,8 +2508,8 @@ arbitrary_messages:  !!omap
 - NEARBY: 'I can only tell you what you see as you move about and manipulate\nthings.  I cannot tell you where remote things are.'
 - OGRE_SNARL: 'The ogre snarls and shoves you back.'
 - HUH_MAN: 'Huh?'
-- ENTRY_QUERY: 'Are you trying to get into the cave?'
-- HARD_GRATE: 'The grate is very solid and has a hardened steel lock.  You cannot\nenter without a key, and there are no keys nearby.  I would recommend\nlooking elsewhere for the keys.'
+- ARB_62: !!null
+- ARB_63: !!null
 - FOREST_LOOK: 'The trees of the forest are large hardwood oak and maple, with an\noccasional grove of pine or spruce.  There is quite a bit of under-\ngrowth, largely birch and ash saplings plus nondescript bushes of\nvarious sorts.  This time of year visibility is quite restricted by\nall the leaves, but travel is quite easy if you detour around the\nspruce and berry bushes.'
 - WELCOME_YOU: 'Welcome to Adventure!!  Would you like instructions?'
 - DIGGING_FUTILE: 'Digging without a shovel is quite impractical.  Even with a shovel\nprogress is unlikely.'
@@ -2688,12 +2622,12 @@ arbitrary_messages:  !!omap
 - NO_LOCKSITE: 'There is nothing here to which the chain can be locked.'
 - NO_EDIBLES: 'There is nothing here to eat.'
 - WANT_HINT: 'Do you want the hint?'
-- MAZE_HELP: 'Do you need help getting out of the maze?'
-- DROP_THINGS: 'You can make the passages look less alike by dropping things.'
-- PLOVER_QUERY: 'Are you trying to explore beyond the plover room?'
-- EXPLORE_HINT: 'There is a way to explore that region without having to worry about\nfalling into a pit.  None of the objects available is immediately\nuseful in discovering the secret.'
-- HELP_LEAVING: 'Do you need help getting out of here?'
-- NOGO_WEST: 'Don''t go west.'
+- ARB_176: !!null
+- ARB_177: !!null
+- ARB_178: !!null
+- ARB_179: !!null
+- ARB_180: !!null
+- ARB_181: !!null
 - TROLL_VICES: 'Gluttony is not one of the troll''s vices.  Avarice, however, is.'
 - LAMP_DIM: 'Your lamp is getting dim.  You''d best start wrapping this up, unless\nyou can find some fresh batteries.  I seem to recall there''s a vending\nmachine in the maze.  Bring some coins with you.'
 - LAMP_OUT: 'Your lamp has run out of power.'
@@ -2703,10 +2637,10 @@ arbitrary_messages:  !!omap
 - REPLACE_BATTERIES: 'Your lamp is getting dim.  I''m taking the liberty of replacing the\nbatteries.'
 - MISSING_BATTERIES: 'Your lamp is getting dim, and you''re out of spare batteries.  You''d\nbest start wrapping this up.'
 - REMOVE_MESSAGE: 'You sift your fingers through the dust, but succeed only in\nobliterating the cryptic message.'
-- OGRE_QUERY: 'Do you need help dealing with the ogre?'
+- ARB_191: !!null
 - CLUE_QUERY: 'Hmmm, this looks like a clue, which means it''ll cost you 10 points to\nread it.  Should I go ahead and read it anyway?'
 - WAYOUT_CLUE: 'It says, "There is a way out of this place.  Do you need any more\ninformation to escape?  Sorry, but this initial hint is all you get."'
-- OGRE_CLUE: 'There is nothing the presence of which will prevent you from defeating\nhim; thus it can''t hurt to fetch everything you possibly can.'
+- ARB_194: !!null
 - DONT_UNDERSTAND: 'I''m afraid I don''t understand.'
 - HAND_PASSTHROUGH: 'Your hand passes through it as though it weren''t there.'
 - BREAK_MIRROR: 'You strike the mirror a resounding blow, whereupon it shatters into a\nmyriad tiny fragments.'
@@ -2756,12 +2690,12 @@ arbitrary_messages:  !!omap
 - HEAD_BUZZES: 'Your head buzzes strangely for a moment.'
 - NOT_BRIGHT: '(Uh, y''know, that wasn''t very bright.)'
 - TOOK_LONG: 'It''s a pity you took so long about it.'
-- WONDERING_QUERY: 'Are you wondering what to do here?'
-- ADVANCED_SECTION: 'This section is quite advanced.  Find the cave first.'
+- ARB_244: !!null
+- ARB_245: !!null
 - UPSTREAM_DOWNSTREAM: 'Upstream or downstream?'
 - WIZARDS_NODISTURB: 'Wizards are not to be disturbed by such as you.'
-- FOREST_QUERY: 'Would you like to be shown out of the forest?'
-- GO_EAST: 'Go east ten times.  If that doesn''t get you out, then go south, then\nwest twice, then south.'
+- FOREST_QUERY: !!null
+- ARB_249: !!null
 - WATERS_CRASHING: 'The waters are crashing loudly against the shore.'
 - THROWN_KNIVES: '%d of them throw knives at you!'
 - MULTIPLE_HITS: '%d of them get you!'
@@ -2786,12 +2720,12 @@ arbitrary_messages:  !!omap
 # This message is not currently used
 - SAVE_TAMPERING: 'A dark fog creeps in to surround you.  From somewhere in the fog you\nhear a stern voice.  "This Adventure has been tampered with!  You have\nbeen dabbling in magic, knowing not the havoc you might cause thereby.\nLeave at once, before you do irrevocable harm!"  The fog thickens,\nuntil at last you can see nothing at all.  Your vision then clears,\nand you find yourself back in The Real World.'
 - GUESS_AGAIN: 'Guess again.'
-- MISSING_ONE: 'You''re missing only one other treasure.  Do you need help finding it?'
-- NO_LOCATE: 'Once you''ve found all the other treasures, it is no longer possible to\nlocate the one you''re now missing.'
+- ARB_274: !!null
+- ARB_275: !!null
 - TWIST_TURN: 'Sorry, but the path twisted and turned so much that I can''t figure\nout which way to go to get back.'
 - ADVENTURE_NEWS: 'Open Adventure is an author-approved open-source release of\nVersion 2.5 with, as yet, no gameplay changes.\nVersion 2.5 was essentially the same as Version II; the cave and the\nhazards therein are unchanged, and top score is still 430 points.\nThere are a few more hints, especially for some of the more obscure\npuzzles.  There are a few minor bugfixes and cosmetic changes.  You\ncan now save a game and resume it at once (formerly you had to wait a\nwhile first), but it now costs you a few points each time you save the\ngame.  Saved games are now stored in much smaller files than before.'
 - GO_UNNEEDED: 'You don''t have to say "go" every time; just specify a direction or, if\nit''s nearby, name the place to which you wish to move.'
-- CANNOT_CARRY7: !!null
+- ARB_279: !!null
 - MACHINE_SWINGOUT: 'As you strike the vending machine, it pivots backward along with a\nsection of wall, revealing a dark passage leading south.'
 - MACHINE_SWINGBACK: 'The vending machine swings back to block the passage.'
   
@@ -2833,51 +2767,59 @@ turn_thresholds:
   point_loss: 10
   message: 'Good grief, don''t you *EVER* give up?  Do you realize you''ve spent\nover 2500 turns at this?  That''s another ten points off, a total of\ntwenty points lost for taking so long.'
   
-object_descriptions: !!omap
+objects: !!omap
 - OBJ_0:
     inventory: !!null
     longs: !!null
-- OBJ_1:
+- KEYS:
+    words: ['keys', 'key']
     inventory: 'Set of keys'
     locations: LOC_BUILDING
     longs:
     - 'There are some keys on the ground here.'
-- OBJ_2:
+- LAMP:
+    words: ['lamp', 'lante']
     inventory: 'Brass lantern'
     locations: LOC_BUILDING
     longs:
     - [LAMP_DARK, 'There is a shiny brass lamp nearby.']
     - [LAMP_BRIGHT, 'There is a lamp shining nearby.']
-- OBJ_3:
+- GRATE:
+    words: ['grate']
     inventory: '*grate'
     locations: [LOC_GRATE, LOC_BELOWGRATE]
     immovable: true
     longs:
     - [GRATE_CLOSED, 'The grate is locked.']
     - [GRATE_OPEN, 'The grate is open.']
-- OBJ_4:
+- CAGE:
+    words: ['cage']
     inventory: 'Wicker cage'
     locations: LOC_COBBLE
     longs:
     - 'There is a small wicker cage discarded nearby.'
-- OBJ_5:
+- ROD:
+    words: ['rod']
     inventory: 'Black rod'
     locations: LOC_DEBRIS
     longs:
     - 'A three foot black rod with a rusty star on an end lies nearby.'
-- OBJ_6:
+- ROD2:
+    words: ['rod']
     inventory: 'Black rod'
     locations: LOC_NOWHERE
     longs:
     - 'A three foot black rod with a rusty mark on an end lies nearby.'
-- OBJ_7:
+- STEPS:
+    words: ['steps']
     inventory: '*steps'
     locations: [LOC_PITTOP, LOC_MISTHALL]
     immovable: true
     longs:
     - 'Rough stone steps lead down the pit.'
     - 'Rough stone steps lead up the dome.'
-- OBJ_8:
+- BIRD:
+    words: ['bird']
     inventory: 'Little bird in cage'
     locations: LOC_BIRD
     longs:
@@ -2891,19 +2833,22 @@ object_descriptions: !!omap
     - 'To your surprise, you can understand the bird''s chirping; it is\nsinging about the joys of its forest home.'
     - 'The bird does not seem inclined to sing while in the cage.'
     - 'The bird is singing to you in gratitude for your having returned it to\nits home.  In return, it informs you of a magic word which it thinks\nyou may find useful somewhere near the Hall of Mists.  The magic word\nchanges frequently, but for now the bird believes it is "%s".  You\nthank the bird for this information, and it flies off into the forest.'
-- OBJ_9:
+- DOOR:
+    words: ['door']
     inventory: '*rusty door'
     locations: LOC_IMMENSE
     immovable: true
     longs:
     - 'The way north is barred by a massive, rusty, iron door.'
     - 'The way north leads through a massive, rusty, iron door.'
-- OBJ_10:
+- PILLOW:
+    words: ['pillo', 'velve']
     inventory: 'Velvet pillow'
     locations: LOC_SOFTROOM
     longs:
     - 'A small velvet pillow lies on the floor.'
-- OBJ_11:
+- SNAKE:
+    words: ['snake']
     inventory: '*snake'
     locations: LOC_KINGHALL
     immovable: true
@@ -2912,7 +2857,8 @@ object_descriptions: !!omap
     - '' # chased away
     sounds:
     - 'The snake is hissing venomously.'
-- OBJ_12:
+- FISSURE:
+    words: ['fissu']
     inventory: '*fissure'
     locations: [LOC_EASTBANK, LOC_WESTBANK]
     immovable: true
@@ -2921,6 +2867,7 @@ object_descriptions: !!omap
     - 'A crystal bridge now spans the fissure.'
     - 'The crystal bridge has vanished!'
 - OBJ_13:
+    words: ['table']
     inventory: '*stone tablet'
     locations: LOC_DARKROOM
     immovable: true
@@ -2928,14 +2875,16 @@ object_descriptions: !!omap
     - 'A massive stone tablet imbedded in the wall reads:\n"Congratulations on bringing light into the dark-room!"'
     texts:
     - '"Congratulations on bringing light into the dark-room!"'
-- OBJ_14:
+- CLAM:
+    words: ['clam']
     inventory: 'Giant clam  >GRUNT!<'
     locations: LOC_SHELLROOM
     longs:
     - 'There is an enormous clam here with its shell tightly closed.'
     sounds:
     - 'The clam is as tight-mouthed as a, er, clam.'
-- OBJ_15:
+- OYSTER:
+    words: ['oyste']
     inventory: 'Giant oyster  >GROAN!<'
     locations: LOC_NOWHERE
     longs:
@@ -2944,48 +2893,57 @@ object_descriptions: !!omap
     sounds:
     - 'Even though it''s an oyster, the critter''s as tight-mouthed as a clam.'
     - 'It says the same thing it did before.  Hm, maybe it''s a pun?'
-- OBJ_16:
+- MAGAZINE:
+    words: ['issue', 'spelu', '"spel']
     inventory: '"Spelunker Today"'
     locations: LOC_ANTEROOM
     longs:
     - 'There are a few recent issues of "Spelunker Today" magazine here.'
     texts:
     - 'I''m afraid the magazine is written in dwarvish.  But pencilled on one\ncover you see, "Please leave the magazines at the construction site."'
-- OBJ_17:
+- DWARF:
+    words: ['dwarf', 'dwarv']
     inventory: !!null
     locations: LOC_NOWHERE
     immovable: true
     longs: !!null
-- OBJ_18:
+- KNIFE:
+    words: ['knife', 'knive']
     inventory: !!null
     locations: LOC_NOWHERE
     longs: !!null
-- OBJ_19:
+- FOOD:
+    words: ['food', 'ratio']
     inventory: 'Tasty food'
     locations: LOC_BUILDING
     longs:
     - 'There is food here.'
-- OBJ_20:
+- BOTTLE:
+    words: ['bottl', 'jar']
     inventory: 'Small bottle'
     locations: LOC_BUILDING
     longs:
     - [WATER_BOTTLE, 'There is a bottle of water here.']
     - [EMPTY_BOTTLE, 'There is an empty bottle here.']
     - [OIL_BOTTLE, 'There is a bottle of oil here.']
-- OBJ_21:
+- WATER:
+    words: ['water', 'h2o']
     inventory: 'Water in the bottle'
     locations: LOC_NOWHERE
     longs: !!null
-- OBJ_22:
+- OIL:
+    words: ['oil']
     inventory: 'Oil in the bottle'
     locations: LOC_NOWHERE
     longs: !!null
-- OBJ_23:
+- MIRROR:
+    words: ['mirro']
     inventory: '*mirror'
     locations: LOC_MIRRORCANYON
     immovable: true
     longs: !!null
-- OBJ_24:
+- PLANT:
+    words: ['plant', 'beans']
     inventory: '*plant'
     locations: LOC_WESTPIT
     immovable: true
@@ -3000,7 +2958,8 @@ object_descriptions: !!omap
     - 'The plant continues to ask plaintively for water.'
     - 'The plant continues to demand water.'
     - 'The plant now maintains a contented silence.'
-- OBJ_25:
+- PLANT2:
+    words: ['plant']
     inventory: '*phony plant' # seen in Twopit Room only when tall enough
     locations: [LOC_WESTEND, LOC_EASTEND]
     immovable: true
@@ -3009,34 +2968,40 @@ object_descriptions: !!omap
     - 'The top of a 12-foot-tall beanstalk is poking out of the west pit.'
     - 'There is a huge beanstalk growing out of the west pit up to the hole.'
 - OBJ_26:
+    words: ['stala']
     inventory: '*stalactite'
     locations: LOC_TOPSTALACTITE
     immovable: true
     longs:
     - ''
 - OBJ_27:
+    words: ['shado', 'figur', 'windo']
     inventory: '*shadowy figure and/or window'
     locations: [LOC_WINDOW1, LOC_WINDOW2]
     immovable: true
     longs:
     - 'The shadowy figure seems to be trying to attract your attention.'
-- OBJ_28:
+- AXE:
+    words: ['axe']
     inventory: 'Dwarf''s axe'
     locations: LOC_NOWHERE
     longs:
     - 'There is a little axe here.'
     - 'There is a little axe lying beside the bear.'
 - OBJ_29:
+    words: ['drawi']
     inventory: '*cave drawings'
     locations: LOC_ORIENTAL
     immovable: true
     longs: !!null
 - OBJ_30:
+    words: ['pirat', 'genie', 'djinn']
     inventory: '*pirate/genie'
     locations: LOC_NOWHERE
     immovable: true
     longs: !!null # never present
-- OBJ_31:
+- DRAGON:
+    words: ['drago']
     inventory: '*dragon'
     locations: [LOC_SECRET4, LOC_SECRET6]
     immovable: true
@@ -3049,14 +3014,16 @@ object_descriptions: !!omap
     - 'The dragon''s ominous hissing does not bode well for you.'
     - 'The dragon is, not surprisingly, silent.'
     - 'The dragon is, not surprisingly, silent.'
-- OBJ_32:
+- CHASM:
+    words: ['chasm']
     inventory: '*chasm'
     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.'
-- OBJ_33:
+- TROLL:
+    words: ['troll']
     inventory: '*troll'
     locations: [LOC_SWCHASM, LOC_NECHASM]
     immovable: true
@@ -3066,13 +3033,15 @@ object_descriptions: !!omap
     - '' # chased away
     sounds:
     - 'The troll sounds quite adamant in his demand for a treasure.'
-- OBJ_34:
+- TROLL2:
+    words: ['troll']
     inventory: '*phony troll'
     locations: [LOC_NOWHERE, LOC_NOWHERE]
     immovable: true
     longs:
     - 'The troll is nowhere to be seen.'
-- OBJ_35:
+- BEAR:
+    words: ['bear']
     inventory: !!null # bear uses rtext 141
     locations: LOC_BARRENROOM
     immovable: true
@@ -3081,7 +3050,8 @@ object_descriptions: !!omap
     - 'There is a gentle cave bear sitting placidly in one corner.'
     - 'There is a contented-looking bear wandering about nearby.'
     - '' # dead
-- OBJ_36:
+- MESSAG:
+    words: ['messa']
     inventory: '*message in second maze'
     locations: LOC_NOWHERE
     immovable: true
@@ -3089,12 +3059,14 @@ object_descriptions: !!omap
     - 'There is a message scrawled in the dust in a flowery script, reading:\n"This is not the maze where the pirate leaves his treasure chest."'
     texts:
     - '"This is not the maze where the pirate leaves his treasure chest."'
-- OBJ_37:
+- VOLCANO:
+    words: ['volca', 'geyse']
     inventory: '*volcano and/or geyser'
     locations: LOC_BREATHTAKING
     immovable: true
     longs: !!null
-- OBJ_38:
+- VEND:
+    words: ['machi', 'vendi']
     inventory: '*vending machine'
     locations: LOC_DEADEND13
     immovable: true
@@ -3104,18 +3076,21 @@ object_descriptions: !!omap
     texts:
     - '"Drop coins here to receive fresh batteries."'
     - '"Drop coins here to receive fresh batteries."'
-- OBJ_39:
+- BATTERY:
+    words: ['batte']
     inventory: 'Batteries'
     locations: LOC_NOWHERE
     longs:
     - [FRESH_BATTERIES, 'There are fresh batteries here.']
     - [DEAD_BATTERIES, 'Some worn-out batteries have been discarded nearby.']
 - OBJ_40:
+    words: ['carpe', 'moss']
     inventory: '*carpet and/or moss and/or curtains'
     locations: LOC_SOFTROOM
     immovable: true
     longs: !!null
-- OBJ_41:
+- OGRE:
+    words: ['ogre']
     inventory: '*ogre'
     locations: LOC_LARGE
     immovable: true
@@ -3123,7 +3098,8 @@ object_descriptions: !!omap
     - 'A formidable ogre bars the northern exit.'
     sounds:
     - 'The ogre is apparently the strong, silent type.'
-- OBJ_42:
+- URN:
+    words: ['urn']
     inventory: '*urn'
     locations: LOC_CLIFF
     immovable: true
@@ -3131,20 +3107,23 @@ object_descriptions: !!omap
     - 'A small urn is embedded in the rock.'
     - 'A small urn full of oil is embedded in the rock.'
     - 'A small oil flame extrudes from an urn embedded in the rock.'
-- OBJ_43:
+- CAVITY:
+    words: ['cavit']
     inventory: '*cavity'
     locations: LOC_NOWHERE
     immovable: true
     longs:
     - '' # something in it
     - 'There is a small urn-shaped cavity in the rock.'
-- OBJ_44:
+- BLOOD:
+    words: ['blood']
     inventory: '*blood'
     locations: LOC_NOWHERE
     immovable: true
     longs:
     - '' # described with dragon
-- OBJ_45:
+- RESER:
+    words: ['reser']
     inventory: '*reservoir'
     locations: [LOC_RESERVOIR, LOC_RESNORTH]
     immovable: true
@@ -3153,11 +3132,13 @@ object_descriptions: !!omap
     - 'The waters have parted to form a narrow path across the reservoir.'
     - 'The waters crash together again.'
 - OBJ_46:
+    words: ['appen', 'lepor']
     inventory: 'Leporine appendage'
     locations: LOC_FOREST22
     longs:
     - 'Your keen eye spots a severed leporine appendage lying on the ground.'
 - OBJ_47:
+    words: ['mud']
     inventory: '*mud'
     locations: LOC_DEBRIS
     immovable: true
@@ -3166,6 +3147,7 @@ object_descriptions: !!omap
     texts:
     - '"MAGIC WORD XYZZY"'
 - OBJ_48:
+    words: ['note']
     inventory: '*note'
     locations: LOC_NUGGET
     immovable: true
@@ -3173,7 +3155,8 @@ object_descriptions: !!omap
     - ''
     texts:
     - '"You won''t get it up the steps"'
-- OBJ_49:
+- SIGN:
+    words: ['sign']
     inventory: '*sign'
     locations: LOC_ANTEROOM
     immovable: true
@@ -3183,43 +3166,50 @@ object_descriptions: !!omap
     texts:
     - 'Cave under construction beyond this point.\n           Proceed at own risk.\n       [Witt Construction Company]'
     - '"Treasure Vault.  Keys in main office."'
-- OBJ_50:
+- NUGGET:
+    words: ['gold', 'nugge']
     inventory: 'Large gold nugget'
     locations: LOC_NUGGET
     treasure: true
     longs:
     - 'There is a large sparkling nugget of gold here!'
 - OBJ_51:
+    words: ['diamo']
     inventory: 'Several diamonds'
     locations: LOC_WESTBANK
     treasure: true
     longs:
     - 'There are diamonds here!'
 - OBJ_52:
+    words: ['silve', 'bars']
     inventory: 'Bars of silver'
     locations: LOC_FLOORHOLE
     treasure: true
     longs:
     - 'There are bars of silver here!'
 - OBJ_53:
+    words: ['jewel']
     inventory: 'Precious jewelry'
     locations: LOC_SOUTHSIDE
     treasure: true
     longs:
     - 'There is precious jewelry here!'
-- OBJ_54:
+- COINS:
+    words: ['coins']
     inventory: 'Rare coins'
     locations: LOC_WESTSIDE
     treasure: true
     longs:
     - 'There are many coins here!'
-- OBJ_55:
+- CHEST:
+    words: ['chest', 'box', 'treas']
     inventory: 'Treasure chest'
     locations: LOC_NOWHERE
     treasure: true
     longs:
     - 'The pirate''s treasure chest is here!'
-- OBJ_56:
+- EGGS:
+    words: ['eggs', 'egg', 'nest']
     inventory: 'Golden eggs'
     locations: LOC_GIANTROOM
     treasure: true
@@ -3227,13 +3217,15 @@ object_descriptions: !!omap
     - 'There is a large nest here, full of golden eggs!'
     - 'The nest of golden eggs has vanished!'
     - 'Done!'
-- OBJ_57:
+- TRIDENT:
+    words: ['tride']
     inventory: 'Jeweled trident'
     locations: LOC_WATERFALL
     treasure: true
     longs:
     - 'There is a jewel-encrusted trident here!'
-- OBJ_58:
+- VASE:
+    words: ['vase', 'ming', 'shard', 'potte']
     inventory: 'Ming vase'
     locations: LOC_ORIENTAL
     treasure: true
@@ -3242,26 +3234,30 @@ object_descriptions: !!omap
     - [VASE_RESTING, 'The vase is now resting, delicately, on a velvet pillow.']
     - [VASE_BROKEN, 'The floor is littered with worthless shards of pottery.']
     - [VASE_DROPS, 'The ming vase drops with a delicate crash.']
-- OBJ_59:
+- EMERALD:
+    words: ['emera']
     inventory: 'Egg-sized emerald'
     locations: LOC_PLOVER
     treasure: true
     longs:
     - 'There is an emerald here the size of a plover''s egg!'
     - 'There is an emerald resting in a small cavity in the rock!'
-- OBJ_60:
+- PYRAMID:
+    words: ['plati', 'pyram']
     inventory: 'Platinum pyramid'
     locations: LOC_DARKROOM
     treasure: true
     longs:
     - 'There is a platinum pyramid here, 8 inches on a side!'
-- OBJ_61:
+- PEARL:
+    words: ['pearl']
     inventory: 'Glistening pearl'
     locations: LOC_NOWHERE
     treasure: true
     longs:
     - 'Off to one side lies a glistening pearl!'
-- OBJ_62:
+- RUG:
+    words: ['rug', 'persi']
     inventory: 'Persian rug'
     locations: [LOC_SECRET4, LOC_SECRET6]
     immovable: true
@@ -3271,12 +3267,14 @@ object_descriptions: !!omap
     - 'The dragon is sprawled out on a persian rug!!'
     - 'There is a persian rug here, hovering in mid-air!'
 - OBJ_63:
+    words: ['spice']
     inventory: 'Rare spices'
     locations: LOC_BOULDERS2
     treasure: true
     longs:
     - 'There are rare spices here!'
-- OBJ_64:
+- CHAIN:
+    words: ['chain']
     inventory: 'Golden chain'
     locations: LOC_BARRENROOM
     immovable: true
@@ -3285,27 +3283,31 @@ object_descriptions: !!omap
     - 'There is a golden chain lying in a heap on the floor!'
     - 'The bear is locked to the wall with a golden chain!'
     - 'There is a golden chain locked to the wall!'
-- OBJ_65:
+- RUBY:
+    words: ['ruby']
     inventory: 'Giant ruby'
     locations: LOC_STOREROOM
     treasure: true
     longs:
     - 'There is an enormous ruby here!'
     - 'There is a ruby resting in a small cavity in the rock!'
-- OBJ_66:
+- JADE:
+    words: ['jade', 'neckl']
     inventory: 'Jade necklace'
     locations: LOC_NOWHERE
     treasure: true
     longs:
     - 'A precious jade necklace has been dropped here!'
-- OBJ_67:
+- AMBER:
+    words: ['amber', 'gemst']
     inventory: 'Amber gemstone'
     locations: LOC_NOWHERE
     treasure: true
     longs:
     - 'There is a rare amber gemstone here!'
     - 'There is an amber gemstone resting in a small cavity in the rock!'
-- OBJ_68:
+- SAPPH:
+    words: ['sapph']
     inventory: 'Star sapphire'
     locations: LOC_LEDGE
     treasure: true
@@ -3313,6 +3315,7 @@ object_descriptions: !!omap
     - 'A brilliant blue star sapphire is here!'
     - 'There is a star sapphire resting in a small cavity in the rock!'
 - OBJ_69:
+    words: ['ebony', 'statu']
     inventory: 'Ebony statuette'
     locations: LOC_REACHDEAD
     treasure: true