Simplify build: nested makefiles considered harmful.
authorEric S. Raymond <esr@thyrsus.com>
Mon, 29 May 2017 05:33:59 +0000 (01:33 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Mon, 29 May 2017 05:33:59 +0000 (01:33 -0400)
12 files changed:
Makefile
actions1.c
adventure.text [new file with mode: 0644]
compile.c [new file with mode: 0644]
database/Makefile [deleted file]
database/adventure.text [deleted file]
database/compile.c [deleted file]
funcs.h
init.c
main.c
misc.c
score.c

index 435adc4622adb602af320034fd342a494a97f263..5eab9d5288aa42ba0442dd19df776aa592b6f3b6 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,31 +1,34 @@
 # Makefile for the open-source release of adventure 2.5
 
 LIBS=-lrt
-OBJS=main.o init.o actions1.o actions2.o score.o misc.o database/database.o
+OBJS=main.o init.o actions1.o actions2.o score.o misc.o database.o
 SOURCES=$(OBJS:.o=.c) COPYING NEWS README TODO advent.text control
 
 .c.o:
        gcc -O $(DBX) -c $<
 
-advent:        $(OBJS) database
+advent:        $(OBJS)
        gcc -Wall -std=c99 -O $(DBX) -o advent $(OBJS) $(LIBS)
 
-main.o:                main.h misc.h funcs.h database/database.h
+main.o:                main.h misc.h funcs.h database.h
 
-init.o:                misc.h main.h share.h funcs.h database/database.h
+init.o:                misc.h main.h share.h funcs.h database.h
 
-actions1.o:    misc.h main.h share.h funcs.h database/database.h
+actions1.o:    misc.h main.h share.h funcs.h database.h
 
 actions2.o:    misc.h main.h share.h funcs.h
 
-score.o:       misc.h main.h share.h database/database.h
+score.o:       misc.h main.h share.h database.h
 
-misc.o:                misc.h main.h database/database.h
+misc.o:                misc.h main.h database.h
+
+database.c database.h: compile
+       ./compile
+       gcc $(OPTIONS) -O $(DBX) -c database.c
 
 clean:
-       rm -f *.o advent advent.html advent.6 adventure.data
+       rm -f *.o advent advent.html advent.6 database.[ch]
        cd tests; $(MAKE) --quiet clean
-       cd database; $(MAKE) clean
 
 check: advent
        cd tests; $(MAKE) --quiet
index 802a130004d850b35da751e8db63f2ee1a843237..0cf8e97d56fcae90e2d9e6189e6c640ddc435be7 100644 (file)
@@ -4,7 +4,7 @@
 #include "main.h"
 #include "share.h"
 #include "funcs.h"
-#include "database/database.h"
+#include "database.h"
 
 /* This stuff was broken off as part of an effort to get the main program
  * to compile without running out of memory.  We're called with a number
diff --git a/adventure.text b/adventure.text
new file mode 100644 (file)
index 0000000..5ec4034
--- /dev/null
@@ -0,0 +1,2295 @@
+1
+1      You are standing at the end of a road before a small brick building.
+1      Around you is a forest.  A small stream flows out of the building and
+1      down a gully.
+2      You have walked up a hill, still in the forest.  The road slopes back
+2      down the other side of the hill.  There is a building in the distance.
+3      You are inside a building, a well house for a large spring.
+4      You are in a valley in the forest beside a stream tumbling along a
+4      rocky bed.
+5      The road, which approaches from the east, ends here amid the trees.
+6      The forest thins out here to reveal a steep cliff.  There is no way
+6      down, but a small ledge can be seen to the west across the chasm.
+7      At your feet all the water of the stream splashes into a 2-inch slit
+7      in the rock.  Downstream the streambed is bare rock.
+8      You are in a 20-foot depression floored with bare dirt.  Set into the
+8      dirt is a strong steel grate mounted in concrete.  A dry streambed
+8      leads into the depression.
+9      You are in a small chamber beneath a 3x3 steel grate to the surface.
+9      A low crawl over cobbles leads inward to the west.
+10     You are crawling over cobbles in a low passage.  There is a dim light
+10     at the east end of the passage.
+11     You are in a debris room filled with stuff washed in from the surface.
+11     A low wide passage with cobbles becomes plugged with mud and debris
+11     here, but an awkward canyon leads upward and west.  In the mud someone
+11     has scrawled, "MAGIC WORD XYZZY".
+12     You are in an awkward sloping east/west canyon.
+13     You are in a splendid chamber thirty feet high.  The walls are frozen
+13     rivers of orange stone.  An awkward canyon and a good passage exit
+13     from east and west sides of the chamber.
+14     At your feet is a small pit breathing traces of white mist.  An east
+14     passage ends here except for a small crack leading on.
+15     You are at one end of a vast hall stretching forward out of sight to
+15     the west.  There are openings to either side.  Nearby, a wide stone
+15     staircase leads downward.  The hall is filled with wisps of white mist
+15     swaying to and fro almost as if alive.  A cold wind blows up the
+15     staircase.  There is a passage at the top of a dome behind you.
+16     The crack is far too small for you to follow.  At its widest it is
+16     barely wide enough to admit your foot.
+17     You are on the east bank of a fissure slicing clear across the hall.
+17     The mist is quite thick here, and the fissure is too wide to jump.
+18     This is a low room with a crude note on the wall.  The note says,
+18     "You won't get it up the steps".
+19     You are in the Hall of the Mountain King, with passages off in all
+19     directions.
+20     You are at the bottom of the pit with a broken neck.
+21     You didn't make it.
+22     The dome is unclimbable.
+23     You are at the west end of the Twopit Room.  There is a large hole in
+23     the wall above the pit at this end of the room.
+24     You are at the bottom of the eastern pit in the Twopit Room.  There is
+24     a small pool of oil in one corner of the pit.
+25     You are at the bottom of the western pit in the Twopit Room.  There is
+25     a large hole in the wall about 25 feet above you.
+26     You clamber up the plant and scurry through the hole at the top.
+27     You are on the west side of the fissure in the Hall of Mists.
+28     You are in a low n/s passage at a hole in the floor.  The hole goes
+28     down to an e/w passage.
+29     You are in the south side chamber.
+30     You are in the west side chamber of the Hall of the Mountain King.
+30     A passage continues west and up here.
+31     %!
+32     You can't get by the snake.
+33     You are in a large room, with a passage to the south, a passage to the
+33     west, and a wall of broken rock to the east.  There is a large "Y2" on
+33     a rock in the room's center.
+34     You are in a jumble of rock, with cracks everywhere.
+35     You're at a low window overlooking a huge pit, which extends up out of
+35     sight.  A floor is indistinctly visible over 50 feet below.  Traces of
+35     white mist cover the floor of the pit, becoming thicker to the right.
+35     Marks in the dust around the window would seem to indicate that
+35     someone has been here recently.  Directly across the pit from you and
+35     25 feet away there is a similar window looking into a lighted room.  A
+35     shadowy figure can be seen there peering back at you.
+36     You are in a dirty broken passage.  To the east is a crawl.  To the
+36     west is a large passage.  Above you is a hole to another passage.
+37     You are on the brink of a small clean climbable pit.  A crawl leads
+37     west.
+38     You are in the bottom of a small pit with a little stream, which
+38     enters and exits through tiny slits.
+39     You are in a large room full of dusty rocks.  There is a big hole in
+39     the floor.  There are cracks everywhere, and a passage leading east.
+40     You have crawled through a very low wide passage parallel to and north
+40     of the Hall of Mists.
+41     You are at the west end of the Hall of Mists.  A low wide crawl
+41     continues west and another goes north.  To the south is a little
+41     passage 6 feet off the floor.
+42     You are in a maze of twisty little passages, all alike.
+43     You are in a maze of twisty little passages, all alike.
+44     You are in a maze of twisty little passages, all alike.
+45     You are in a maze of twisty little passages, all alike.
+46     Dead end
+47     Dead end
+48     Dead end
+49     You are in a maze of twisty little passages, all alike.
+50     You are in a maze of twisty little passages, all alike.
+51     You are in a maze of twisty little passages, all alike.
+52     You are in a maze of twisty little passages, all alike.
+53     You are in a maze of twisty little passages, all alike.
+54     Dead end
+55     You are in a maze of twisty little passages, all alike.
+56     Dead end
+57     You are on the brink of a thirty foot pit with a massive orange column
+57     down one wall.  You could climb down here but you could not get back
+57     up.  The maze continues at this level.
+58     Dead end
+59     You have crawled through a very low wide passage parallel to and north
+59     of the Hall of Mists.
+60     You are at the east end of a very long hall apparently without side
+60     chambers.  To the east a low wide crawl slants up.  To the north a
+60     round two foot hole slants down.
+61     You are at the west end of a very long featureless hall.  The hall
+61     joins up with a narrow north/south passage.
+62     You are at a crossover of a high n/s passage and a low e/w one.
+63     Dead end
+64     You are at a complex junction.  A low hands and knees passage from the
+64     north joins a higher crawl from the east to make a walking passage
+64     going west.  There is also a large room above.  The air is damp here.
+65     You are in Bedquilt, a long east/west passage with holes everywhere.
+65     To explore at random select north, south, up, or down.
+66     You are in a room whose walls resemble swiss cheese.  Obvious passages
+66     go west, east, ne, and nw.  Part of the room is occupied by a large
+66     bedrock block.
+67     You are at the east end of the Twopit Room.  The floor here is
+67     littered with thin rock slabs, which make it easy to descend the pits.
+67     There is a path here bypassing the pits to connect passages from east
+67     and west.  There are holes all over, but the only big one is on the
+67     wall directly over the west pit where you can't get to it.
+68     You are in a large low circular chamber whose floor is an immense slab
+68     fallen from the ceiling (Slab Room).  East and west there once were
+68     large passages, but they are now filled with boulders.  Low small
+68     passages go north and south, and the south one quickly bends west
+68     around the boulders.
+69     You are in a secret n/s canyon above a large room.
+70     You are in a secret n/s canyon above a sizable passage.
+71     You are in a secret canyon at a junction of three canyons, bearing
+71     north, south, and se.  The north one is as tall as the other two
+71     combined.
+72     You are in a large low room.  Crawls lead north, se, and sw.
+73     Dead end crawl.
+74     You are in a secret canyon which here runs e/w.  It crosses over a
+74     very tight canyon 15 feet below.  If you go down you may not be able
+74     to get back up.
+75     You are at a wide place in a very tight n/s canyon.
+76     The canyon here becomes too tight to go further south.
+77     You are in a tall e/w canyon.  A low tight crawl goes 3 feet north and
+77     seems to open up.
+78     The canyon runs into a mass of boulders -- dead end.
+79     The stream flows out through a pair of 1 foot diameter sewer pipes.
+79     It would be advisable to use the exit.
+80     You are in a maze of twisty little passages, all alike.
+81     Dead end
+82     Dead end
+83     You are in a maze of twisty little passages, all alike.
+84     You are in a maze of twisty little passages, all alike.
+85     Dead end
+86     Dead end
+87     You are in a maze of twisty little passages, all alike.
+88     You are in a long, narrow corridor stretching out of sight to the
+88     west.  At the eastern end is a hole through which you can see a
+88     profusion of leaves.
+89     There is nothing here to climb.  Use "up" or "out" to leave the pit.
+90     You have climbed up the plant and out of the pit.
+91     You are at the top of a steep incline above a large room.  You could
+91     climb down here, but you would not be able to climb up.  There is a
+91     passage leading back to the north.
+92     You are in the Giant Room.  The ceiling here is too high up for your
+92     lamp to show it.  Cavernous passages lead east, north, and south.  On
+92     the west wall is scrawled the inscription, "FEE FIE FOE FOO" [sic].
+93     The passage here is blocked by a recent cave-in.
+94     You are at one end of an immense north/south passage.
+95     You are in a magnificent cavern with a rushing stream, which cascades
+95     over a sparkling waterfall into a roaring whirlpool which disappears
+95     through a hole in the floor.  Passages exit to the south and west.
+96     You are in the Soft Room.  The walls are covered with heavy curtains,
+96     the floor with a thick pile carpet.  Moss covers the ceiling.
+97     This is the Oriental Room.  Ancient oriental cave drawings cover the
+97     walls.  A gently sloping passage leads upward to the north, another
+97     passage leads se, and a hands and knees crawl leads west.
+98     You are following a wide path around the outer edge of a large cavern.
+98     Far below, through a heavy white mist, strange splashing noises can be
+98     heard.  The mist rises up through a fissure in the ceiling.  The path
+98     exits to the south and west.
+99     You are in an alcove.  A small nw path seems to widen after a short
+99     distance.  An extremely tight tunnel leads east.  It looks like a very
+99     tight squeeze.  An eerie light can be seen at the other end.
+100    You're in a small chamber lit by an eerie green light.  An extremely
+100    narrow tunnel exits to the west.  A dark corridor leads ne.
+101    You're in the dark-room.  A corridor leading south is the only exit.
+102    You are in an arched hall.  A coral passage once continued up and east
+102    from here, but is now blocked by debris.  The air smells of sea water.
+103    You're in a large room carved out of sedimentary rock.  The floor and
+103    walls are littered with bits of shells imbedded in the stone.  A
+103    shallow passage proceeds downward, and a somewhat steeper one leads
+103    up.  A low hands and knees passage enters from the south.
+104    You are in a long sloping corridor with ragged sharp walls.
+105    You are in a cul-de-sac about eight feet across.
+106    You are in an anteroom leading to a large passage to the east.  Small
+106    passages go west and up.  The remnants of recent digging are evident.
+106    A sign in midair here says "Cave under construction beyond this point.
+106    Proceed at own risk.  [Witt Construction Company]"
+107    You are in a maze of twisty little passages, all different.
+108    You are at Witt's End.  Passages lead off in *ALL* directions.
+109    You are in a north/south canyon about 25 feet across.  The floor is
+109    covered by white mist seeping in from the north.  The walls extend
+109    upward for well over 100 feet.  Suspended from some unseen point far
+109    above you, an enormous two-sided mirror is hanging parallel to and
+109    midway between the canyon walls.  (The mirror is obviously provided
+109    for the use of the dwarves who, as you know, are extremely vain.)  A
+109    small window can be seen in either wall, some fifty feet up.
+110    You're at a low window overlooking a huge pit, which extends up out of
+110    sight.  A floor is indistinctly visible over 50 feet below.  Traces of
+110    white mist cover the floor of the pit, becoming thicker to the left.
+110    Marks in the dust around the window would seem to indicate that
+110    someone has been here recently.  Directly across the pit from you and
+110    25 feet away there is a similar window looking into a lighted room.  A
+110    shadowy figure can be seen there peering back at you.
+111    A large stalactite extends from the roof and almost reaches the floor
+111    below.  You could climb down it, and jump from it to the floor, but
+111    having done so you would be unable to reach it to climb back up.
+112    You are in a little maze of twisting passages, all different.
+113    You are at the edge of a large underground reservoir.  An opaque cloud
+113    of white mist fills the room and rises rapidly upward.  The lake is
+113    fed by a stream, which tumbles out of a hole in the wall about 10 feet
+113    overhead and splashes noisily into the water somewhere within the
+113    mist.  There is a passage going back toward the south.
+114    Dead end
+115    You are at the northeast end of an immense room, even larger than the
+115    Giant Room.  It appears to be a repository for the "Adventure"
+115    program.  Massive torches far overhead bathe the room with smoky
+115    yellow light.  Scattered about you can be seen a pile of bottles (all
+115    of them empty), a nursery of young beanstalks murmuring quietly, a bed
+115    of oysters, a bundle of black rods with rusty stars on their ends, and
+115    a collection of brass lanterns.  Off to one side a great many dwarves
+115    are sleeping on the floor, snoring loudly.  A notice nearby reads: "Do
+115    not disturb the dwarves!"  An immense mirror is hanging against one
+115    wall, and stretches to the other end of the room, where various other
+115    sundry objects can be glimpsed dimly in the distance.
+116    You are at the southwest end of the repository.  To one side is a pit
+116    full of fierce green snakes.  On the other side is a row of small
+116    wicker cages, each of which contains a little sulking bird.  In one
+116    corner is a bundle of black rods with rusty marks on their ends.  A
+116    large number of velvet pillows are scattered about on the floor.  A
+116    vast mirror stretches off to the northeast.  At your feet is a large
+116    steel grate, next to which is a sign that reads, "Treasure Vault.
+116    Keys in main office."
+117    You are on one side of a large, deep chasm.  A heavy white mist rising
+117    up from below obscures all view of the far side.  A sw path leads away
+117    from the chasm into a winding corridor.
+118    You are in a long winding corridor sloping out of sight in both
+118    directions.
+119    You are in a secret canyon which exits to the north and east.
+120    You are in a secret canyon which exits to the north and east.
+121    You are in a secret canyon which exits to the north and east.
+122    You are on the far side of the chasm.  A ne path leads away from the
+122    chasm on this side.
+123    You're in a long east/west corridor.  A faint rumbling noise can be
+123    heard in the distance.
+124    The path forks here.  The left fork leads northeast.  A dull rumbling
+124    seems to get louder in that direction.  The right fork leads southeast
+124    down a gentle slope.  The main corridor enters from the west.
+125    The walls are quite warm here.  From the north can be heard a steady
+125    roar, so loud that the entire cave seems to be trembling.  Another
+125    passage leads south, and a low crawl goes east.
+126    You are on the edge of a breath-taking view.  Far below you is an
+126    active volcano, from which great gouts of molten lava come surging
+126    out, cascading back down into the depths.  The glowing rock fills the
+126    farthest reaches of the cavern with a blood-red glare, giving every-
+126    thing an eerie, macabre appearance.  The air is filled with flickering
+126    sparks of ash and a heavy smell of brimstone.  The walls are hot to
+126    the touch, and the thundering of the volcano drowns out all other
+126    sounds.  Embedded in the jagged roof far overhead are myriad twisted
+126    formations composed of pure white alabaster, which scatter the murky
+126    light into sinister apparitions upon the walls.  To one side is a deep
+126    gorge, filled with a bizarre chaos of tortured rock which seems to
+126    have been crafted by the devil himself.  An immense river of fire
+126    crashes out from the depths of the volcano, burns its way through the
+126    gorge, and plummets into a bottomless pit far off to your left.  To
+126    the right, an immense geyser of blistering steam erupts continuously
+126    from a barren island in the center of a sulfurous lake, which bubbles
+126    ominously.  The far right wall is aflame with an incandescence of its
+126    own, which lends an additional infernal splendor to the already
+126    hellish scene.  A dark, foreboding passage exits to the south.
+127    You are in a small chamber filled with large boulders.  The walls are
+127    very warm, causing the air in the room to be almost stifling from the
+127    heat.  The only exit is a crawl heading west, through which is coming
+127    a low rumbling.
+128    You are walking along a gently sloping north/south passage lined with
+128    oddly shaped limestone formations.
+129    You are standing at the entrance to a large, barren room.  A notice
+129    above the entrance reads:  "Caution!  Bear in room!"
+130    You are inside a barren room.  The center of the room is completely
+130    empty except for some dust.  Marks in the dust lead away toward the
+130    far end of the room.  The only exit is the way you came in.
+131    You are in a maze of twisting little passages, all different.
+132    You are in a little maze of twisty passages, all different.
+133    You are in a twisting maze of little passages, all different.
+134    You are in a twisting little maze of passages, all different.
+135    You are in a twisty little maze of passages, all different.
+136    You are in a twisty maze of little passages, all different.
+137    You are in a little twisty maze of passages, all different.
+138    You are in a maze of little twisting passages, all different.
+139    You are in a maze of little twisty passages, all different.
+140    Dead end
+141    You are in a long, rough-hewn, north/south corridor.
+142    There is no way to go that direction.
+143    You are in a large chamber with passages to the west and north.
+144    You are in the ogre's storeroom.  The only exit is to the south.
+145    You are wandering aimlessly through the forest.
+146    You are wandering aimlessly through the forest.
+147    You are wandering aimlessly through the forest.
+148    You are wandering aimlessly through the forest.
+149    You are wandering aimlessly through the forest.
+150    You are wandering aimlessly through the forest.
+151    You are wandering aimlessly through the forest.
+152    You are wandering aimlessly through the forest.
+153    You are wandering aimlessly through the forest.
+154    You are wandering aimlessly through the forest.
+155    You are wandering aimlessly through the forest.
+156    You are wandering aimlessly through the forest.
+157    You are wandering aimlessly through the forest.
+158    You are wandering aimlessly through the forest.
+159    You are wandering aimlessly through the forest.
+160    You are wandering aimlessly through the forest.
+161    You are wandering aimlessly through the forest.
+162    You are wandering aimlessly through the forest.
+163    You are wandering aimlessly through the forest.
+164    You are wandering aimlessly through the forest.
+165    You are wandering aimlessly through the forest.
+166    You are wandering aimlessly through the forest.
+167    You are on a small ledge on one face of a sheer cliff.  There are no
+167    paths away from the ledge.  Across the chasm is a small clearing
+167    surrounded by forest.
+168    You are walking across the bottom of the reservoir.  Walls of water
+168    rear up on either side.  The roar of the water cascading past is
+168    nearly deafening, and the mist is so thick you can barely see.
+169    You are at the northern edge of the reservoir.  A northwest passage
+169    leads sharply up from here.
+170    You are scrambling along a treacherously steep, rocky passage.
+171    You are on a very steep incline, which widens at it goes upward.
+172    You are at the base of a nearly vertical cliff.  There are some
+172    slim footholds which would enable you to climb up, but it looks
+172    extremely dangerous.  Here at the base of the cliff lie the remains
+172    of several earlier adventurers who apparently failed to make it.
+173    You are climbing along a nearly vertical cliff.
+174    Just as you reach the top, your foot slips on a loose rock and you
+174    tumble several hundred feet to join the other unlucky adventurers.
+175    Just as you reach the top, your foot slips on a loose rock and you
+175    make one last desperate grab.  Your luck holds, as does your grip.
+175    With an enormous heave, you lift yourself to the ledge above.
+176    You are on a small ledge at the top of a nearly vertical cliff.
+176    There is a low crawl leading off to the northeast.
+177    You have reached a dead end.
+178    There is now one more gruesome aspect to the spectacular vista.
+179    >>Foof!<<
+180    >>Foof!<<
+181    >>Foof!<<
+182    >>Foof!<<
+183    >>Foof!<<
+184    >>Foof!<<
+-1
+2
+1      You're in front of building.
+2      You're at hill in road.
+3      You're inside building.
+4      You're in valley.
+5      You're at end of road.
+6      You're at cliff.
+7      You're at slit in streambed.
+8      You're outside grate.
+9      You're below the grate.
+10     You're in cobble crawl.
+11     You're in debris room.
+13     You're in bird chamber.
+14     You're at top of small pit.
+15     You're in Hall of Mists.
+17     You're on east bank of fissure.
+18     You're in nugget-of-gold room.
+19     You're in Hall of Mt King.
+23     You're at west end of Twopit Room.
+24     You're in east pit.
+25     You're in west pit.
+27     You're on west bank of fissure.
+28     You're in n/s passage above e/w passage.
+30     You're in the west side chamber.
+33     You're at "Y2".
+35     You're at window on pit.
+36     You're in dirty passage.
+37     You're at brink of small pit.
+38     You're at bottom of pit with stream.
+39     You're in dusty rock room.
+41     You're at west end of Hall of Mists.
+57     You're at brink of pit.
+60     You're at east end of long hall.
+61     You're at west end of long hall.
+64     You're at complex junction.
+65     You're in Bedquilt.
+66     You're in Swiss Cheese Room.
+67     You're at east end of Twopit Room.
+68     You're in Slab Room.
+71     You're at junction of three secret canyons.
+72     You're in large low room.
+74     You're in secret e/w canyon above tight canyon.
+88     You're in narrow corridor.
+91     You're at steep incline above large room.
+92     You're in Giant Room.
+95     You're in cavern with waterfall.
+96     You're in Soft Room.
+97     You're in Oriental Room.
+98     You're in misty cavern.
+99     You're in alcove.
+100    You're in Plover Room.
+101    You're in dark-room.
+102    You're in arched hall.
+103    You're in Shell Room.
+106    You're in anteroom.
+108    You're at Witt's End.
+109    You're in Mirror Canyon.
+110    You're at window on pit.
+111    You're at top of stalactite.
+113    You're at reservoir.
+115    You're at ne end.
+116    You're at sw end.
+117    You're on sw side of chasm.
+118    You're in sloping corridor.
+122    You're on ne side of chasm.
+123    You're in corridor.
+124    You're at fork in path.
+125    You're at junction with warm walls.
+126    You're at breath-taking view.
+127    You're in Chamber of Boulders.
+128    You're in limestone passage.
+129    You're in front of Barren Room.
+130    You're in Barren Room.
+167    You're on ledge.
+168    You're at bottom of reservoir.
+169    You're north of reservoir.
+172    You're at base of cliff.
+176    You're at top of cliff.
+-1
+3
+1      2       2       44      29
+1      3       3       12      19      43
+1      4       5       13      14      46      30
+1      145     6       45
+1      8       63
+2      1       12      43
+2      5       44
+2      164     45
+2      157     46      6
+2      580     30
+3      1       11      32      44
+3      179     62
+3      181     65
+3      79      5       14
+4      1       4       12      45
+4      150     43      6
+4      156     44
+4      7       5       46      30
+4      8       63
+4      745     14
+5      2       2       43      29
+5      1       12
+5      158     46      6
+5      159     44
+5      165     45
+6      161     46      6
+6      163     43
+6      21      39
+7      1       12
+7      4       4       45
+7      150     43      6
+7      154     44
+7      8       5       16      46      63
+7      595     60      14      30      19      3
+8      151     43      6
+8      154     46
+8      153     44
+8      1       12
+8      7       4       13      45
+8      303009  3       19      30
+8      593     3
+9      303008  11      29
+9      593     11
+9      10      17      18      19      44
+9      14      31
+9      11      51
+10     9       11      20      21      43
+10     11      19      22      44      51
+10     14      31
+11     303008  63
+11     9       64
+11     10      17      18      23      24      43
+11     12      25      19      29      44
+11     180     62
+11     14      31
+12     303008  63
+12     9       64
+12     11      30      43      51
+12     13      19      29      44
+12     14      31
+13     303008  63
+13     9       64
+13     11      51
+13     12      25      43
+13     14      23      31      44
+14     303008  63
+14     9       64
+14     11      51
+14     13      23      43
+14     150020  30      31      34
+14     15      30
+14     16      33      44
+15     18      36      46
+15     17      7       38      44
+15     19      10      30      45
+15     150022  29      31      34      35      23      43
+15     14      29
+15     34      55
+16     14      1
+17     15      38      43
+17     312596  39
+17     412021  7
+17     412597  41      42      44      69
+17     27      41
+18     15      38      11      45
+19     15      10      29      43
+19     311028  45      37
+19     311029  46      36
+19     311030  44      7
+19     32      45
+19     35074   49
+19     211032  49
+19     74      66
+20     0       1
+21     0       1
+22     15      1
+23     67      43      42
+23     68      44      61
+23     25      30      31
+23     648     52
+24     67      29      11
+25     23      29      11
+25     524031  56
+25     26      56
+26     88      1
+27     312596  39
+27     412021  7
+27     412597  41      42      43      69
+27     17      41
+27     40      45
+27     41      44
+28     19      38      11      46
+28     33      45      55
+28     36      30      52
+29     19      38      11      45
+30     19      38      11      43
+30     62      44      29
+31     424089  1
+31     90      1
+32     19      1
+33     182     65
+33     28      46
+33     34      43      53      54
+33     35      44
+33     159302  71
+33     183     71
+34     33      30      55
+34     15      29
+35     33      43      55
+35     20      39
+36     37      43      17
+36     28      29      52
+36     39      44
+36     65      70
+37     36      44      17
+37     38      30      31      56
+38     37      56      29      11
+38     595     60      14      30      4       5       3       19
+39     36      43      23
+39     64      30      52      58
+39     65      70
+40     41      1
+41     42      46      29      23      56
+41     27      43
+41     59      45
+41     60      44      17
+42     41      29
+42     42      45
+42     43      43
+42     45      46
+42     80      44
+43     42      44
+43     44      46
+43     45      43
+44     43      43
+44     48      30
+44     50      46
+44     82      45
+45     42      44
+45     43      45
+45     46      43
+45     47      46
+45     87      29      30
+46     45      44      11
+47     45      43      11
+48     44      29      11
+49     50      43
+49     51      44
+50     44      43
+50     49      44
+50     51      30
+50     52      46
+51     49      44
+51     50      29
+51     52      43
+51     53      46
+52     50      44
+52     51      43
+52     52      46
+52     53      29
+52     55      45
+52     86      30
+53     51      44
+53     52      45
+53     54      46
+54     53      44      11
+55     52      44
+55     55      45
+55     56      30
+55     57      43
+56     55      29      11
+57     13      30      56
+57     55      44
+57     58      46
+57     83      45
+57     84      43
+58     57      43      11
+59     27      1
+60     41      43      29      17
+60     61      44
+60     62      45      30      52
+61     60      43
+61     62      45
+61     100107  46
+62     60      44
+62     63      45
+62     30      43
+62     61      46
+63     62      46      11
+64     39      29      56      59
+64     65      44      70
+64     103     45      74
+64     106     43
+65     64      43
+65     66      44
+65     65556   46
+65     68      61
+65     60556   29
+65     70070   29
+65     39      29
+65     50556   45
+65     75072   45
+65     71      45
+65     65556   30
+65     106     30
+66     65      47
+66     67      44
+66     80556   46
+66     77      25
+66     96      43
+66     50556   50
+66     97      72
+67     66      43
+67     23      44      42
+67     24      30      31
+68     23      46
+68     69      29      56
+68     65      45
+69     68      30      61
+69     331120  46
+69     119     46
+69     109     45
+69     113     75
+70     71      45
+70     65      30      23
+70     111     46
+71     65      48
+71     70      46
+71     110     45
+72     65      70
+72     118     49
+72     73      45
+72     97      48      72
+73     72      46      17      11
+74     19      43
+74     331120  44
+74     121     44
+74     75      30
+75     76      46
+75     77      45
+76     75      45
+77     75      43
+77     78      44
+77     66      45      17
+78     77      46
+79     3       1
+80     42      45
+80     80      44
+80     80      46
+80     81      43
+81     80      44      11
+82     44      46      11
+83     57      46
+83     84      43
+83     85      44
+84     57      45
+84     83      44
+84     114     50
+85     83      43      11
+86     52      29      11
+87     45      29      30
+88     25      30      56      43
+88     20      39
+88     92      44      27
+89     25      1
+90     23      1
+91     95      45      73      23
+91     72      30      56
+92     88      46
+92     93      43
+92     94      45
+93     92      46      27      11
+94     92      46      27      23
+94     309095  45      3       73
+94     611     45
+95     94      46      11
+95     92      27
+95     91      44
+96     66      44      11
+97     66      48
+97     72      44      17
+97     98      29      45      73
+98     97      46      72
+98     99      44
+99     98      50      73
+99     301     43      23
+99     100     43
+100    301     44      23      11
+100    99      44
+100    159302  71
+100    184     71
+100    101     47      22
+101    100     46      71      11
+102    103     30      74      11
+103    102     29      38
+103    104     30
+103    114618  46
+103    115619  46
+103    64      46
+104    103     29      74
+104    105     30
+105    104     29      11
+105    103     74
+106    64      29
+106    65      44
+106    108     43
+107    131     46
+107    132     49
+107    133     47
+107    134     48
+107    135     29
+107    136     50
+107    137     43
+107    138     44
+107    139     45
+107    61      30
+108    95556   43      45      46      47      48      49      50      29      30
+108    106     43
+108    626     44
+109    69      46
+109    113     45      75
+110    71      44
+110    20      39
+111    70      45
+111    40050   30      39      56
+111    50053   30
+111    45      30
+112    131     49
+112    132     45
+112    133     43
+112    134     50
+112    135     48
+112    136     47
+112    137     44
+112    138     30
+112    139     29
+112    140     46
+113    109     46      11
+113    445552  45      42      69
+113    168     45
+114    84      48
+115    116     49
+116    115     47
+116    593     30
+117    118     49
+117    233660  41      42      69      47
+117    332661  41
+117    303     41
+117    332021  39
+117    596     39
+118    72      30
+118    117     29
+119    69      45      11
+119    653     43      7
+120    69      45
+120    74      43
+121    74      43      11
+121    653     45      7
+122    123     47
+122    233660  41      42      69      49
+122    303     41
+122    596     39
+122    124     15
+122    126     28
+122    129     40
+123    122     44
+123    124     43      15
+123    126     28
+123    129     40
+124    123     44
+124    125     47      36
+124    128     48      37      30
+124    126     28
+124    129     40
+125    124     46      15
+125    126     45      28
+125    127     43      17
+126    125     46      23      11
+126    124     15
+126    610     30
+126    178     39
+127    125     44      11      17
+127    124     15
+127    126     28
+128    124     45      29      15
+128    129     46      30      40
+128    126     28
+129    128     44      29
+129    124     15
+129    130     43      19      40      3
+129    126     28
+130    129     44      11
+130    124     15
+130    126     28
+131    107     44
+131    132     48
+131    133     50
+131    134     49
+131    135     47
+131    136     29
+131    137     30
+131    138     45
+131    139     46
+131    112     43
+132    107     50
+132    131     29
+132    133     45
+132    134     46
+132    135     44
+132    136     49
+132    137     47
+132    138     43
+132    139     30
+132    112     48
+133    107     29
+133    131     30
+133    132     44
+133    134     47
+133    135     49
+133    136     43
+133    137     45
+133    138     50
+133    139     48
+133    112     46
+134    107     47
+134    131     45
+134    132     50
+134    133     48
+134    135     43
+134    136     30
+134    137     46
+134    138     29
+134    139     44
+134    112     49
+135    107     45
+135    131     48
+135    132     30
+135    133     46
+135    134     43
+135    136     44
+135    137     49
+135    138     47
+135    139     50
+135    112     29
+136    107     43
+136    131     44
+136    132     29
+136    133     49
+136    134     30
+136    135     46
+136    137     50
+136    138     48
+136    139     47
+136    112     45
+137    107     48
+137    131     47
+137    132     46
+137    133     30
+137    134     29
+137    135     50
+137    136     45
+137    138     49
+137    139     43
+137    112     44
+138    107     30
+138    131     43
+138    132     47
+138    133     29
+138    134     44
+138    135     45
+138    136     46
+138    137     48
+138    139     49
+138    112     50
+139    107     49
+139    131     50
+139    132     43
+139    133     44
+139    134     45
+139    135     30
+139    136     48
+139    137     29
+139    138     46
+139    112     47
+140    112     45      11
+140    338141  46
+140    142     46
+141    140     45
+141    143     46
+142    140     1
+143    141     44
+143    241560  45
+143    144     45
+144    143     46      11
+145    1       43
+145    157     44
+145    146     45
+145    147     46
+146    145     43
+146    163     44
+146    147     45
+146    162     46
+147    148     43      44
+147    146     45
+147    145     46
+148    147     43      45
+148    149     44      46
+149    148     43      45
+149    151     44
+149    150     46
+150    149     43
+150    151     44
+150    4       45
+150    7       46
+151    149     43
+151    150     44
+151    8       45
+151    152     46
+152    153     43
+152    155     44
+152    166     45
+152    151     46
+153    155     43
+153    152     44
+153    154     45
+153    8       46
+154    7       43
+154    155     44
+154    153     45
+154    8       46
+155    154     43
+155    152     44
+155    166     45
+155    153     46
+156    157     43
+156    158     44
+156    166     45
+156    4       46
+157    145     43
+157    156     44
+157    164     45
+157    2       46
+158    5       43
+158    160     44
+158    159     45
+158    156     46
+159    160     43
+159    166     44
+159    5       45
+159    158     46
+160    161     43      45
+160    158     44
+160    159     46
+161    162     43
+161    160     44      46
+161    6       45
+162    163     43
+162    161     44
+162    146     45
+162    165     46
+163    146     43
+163    162     44
+163    6       45
+163    164     46
+164    2       43
+164    165     44
+164    163     45
+164    157     46
+165    164     43
+165    5       44
+165    162     45
+165    165     46
+166    152     43
+166    155     44
+166    159     45
+166    156     46
+167    21      39
+168    169     45
+168    113     46
+169    445552  46      42      69
+169    168     46
+169    170     50      29      11
+170    171     29      50
+170    169     30      48
+171    170     30      48
+171    172     29      50
+172    171     30      48
+172    173     29      56
+173    172     30
+173    146175  29
+173    174     29
+174    0       1
+175    176     1
+176    173     56      30
+176    177     47      17
+177    176     49      11      17
+178    0       1
+179    11      1
+180    3       1
+181    33      1
+182    3       1
+183    100     1
+184    33      1
+-1
+4
+2      ROAD
+2      HILL
+3      ENTER
+4      UPSTR
+5      DOWNS
+6      FORES
+7      FORWA
+7      CONTI
+7      ONWAR
+8      BACK
+8      RETUR
+8      RETRE
+9      VALLE
+10     STAIR
+11     OUT
+11     OUTSI
+11     EXIT
+11     LEAVE
+12     BUILD
+12     HOUSE
+13     GULLY
+14     STREA
+15     FORK
+16     BED
+17     CRAWL
+18     COBBL
+19     INWAR
+19     INSID
+19     IN
+20     SURFA
+21     NULL
+21     NOWHE
+22     DARK
+23     PASSA
+23     TUNNE
+24     LOW
+25     CANYO
+26     AWKWA
+27     GIANT
+28     VIEW
+29     UPWAR
+29     UP
+29     U
+29     ABOVE
+29     ASCEN
+30     D
+30     DOWNW
+30     DOWN
+30     DESCE
+31     PIT
+32     OUTDO
+33     CRACK
+34     STEPS
+35     DOME
+36     LEFT
+37     RIGHT
+38     HALL
+39     JUMP
+40     BARRE
+41     OVER
+42     ACROS
+43     EAST
+43     E
+44     WEST
+44     W
+45     NORTH
+45     N
+46     SOUTH
+46     S
+47     NE
+48     SE
+49     SW
+50     NW
+51     DEBRI
+52     HOLE
+53     WALL
+54     BROKE
+55     Y2
+56     CLIMB
+57     LOOK
+57     EXAMI
+57     TOUCH
+57     DESCR
+58     FLOOR
+59     ROOM
+60     SLIT
+61     SLAB
+61     SLABR
+62     XYZZY
+63     DEPRE
+64     ENTRA
+65     PLUGH
+66     SECRE
+67     CAVE
+69     CROSS
+70     BEDQU
+71     PLOVE
+72     ORIEN
+73     CAVER
+74     SHELL
+75     RESER
+76     MAIN
+76     OFFIC
+1001   KEYS
+1001   KEY
+1002   LAMP
+1002   LANTE
+1003   GRATE
+1004   CAGE
+1005   ROD
+1006   ROD     (MUST BE NEXT OBJECT AFTER "REAL" ROD)
+1007   STEPS
+1008   BIRD
+1009   DOOR
+1010   PILLO
+1010   VELVE
+1011   SNAKE
+1012   FISSU
+1013   TABLE
+1014   CLAM
+1015   OYSTE
+1016   MAGAZ
+1016   ISSUE
+1016   SPELU
+1016   "SPEL
+1017   DWARF
+1017   DWARV
+1018   KNIFE
+1018   KNIVE
+1019   FOOD
+1019   RATIO
+1020   BOTTL
+1020   JAR
+1021   WATER
+1021   H2O
+1022   OIL
+1023   MIRRO
+1024   PLANT
+1024   BEANS
+1025   PLANT   (MUST BE NEXT OBJECT AFTER "REAL" PLANT)
+1026   STALA
+1027   SHADO
+1027   FIGUR
+1027   WINDO   (SAME AS FIGURE)
+1028   AXE
+1029   DRAWI
+1030   PIRAT
+1030   GENIE
+1030   DJINN
+1031   DRAGO
+1032   CHASM
+1033   TROLL
+1034   TROLL   (MUST BE NEXT OBJECT AFTER "REAL" TROLL)
+1035   BEAR
+1036   MESSA
+1037   VOLCA
+1037   GEYSE   (SAME AS VOLCANO)
+1038   MACHI
+1038   VENDI
+1039   BATTE
+1040   CARPE
+1040   MOSS
+1040   CURTA   (SAME AS CARPET)
+1041   OGRE
+1042   URN
+1043   CAVIT
+1044   BLOOD
+1045   RESER   (VERB OVERRIDES)
+1046   APPEN
+1046   LEPOR
+1047   MUD
+1048   NOTE
+1049   SIGN
+1050   GOLD
+1050   NUGGE
+1051   DIAMO
+1052   SILVE
+1052   BARS
+1053   JEWEL
+1054   COINS
+1055   CHEST
+1055   BOX
+1055   TREAS
+1056   EGGS
+1056   EGG
+1056   NEST
+1057   TRIDE
+1058   VASE
+1058   MING
+1058   SHARD
+1058   POTTE
+1059   EMERA
+1060   PLATI
+1060   PYRAM
+1061   PEARL
+1062   RUG
+1062   PERSI
+1063   SPICE
+1064   CHAIN
+1065   RUBY
+1066   JADE
+1066   NECKL
+1067   AMBER
+1067   GEMST
+1068   SAPPH
+1069   EBONY
+1069   STATU
+2001   CARRY
+2001   TAKE
+2001   KEEP
+2001   CATCH
+2001   STEAL
+2001   CAPTU
+2001   GET
+2001   TOTE
+2001   SNARF
+2002   DROP
+2002   RELEA
+2002   FREE
+2002   DISCA
+2002   DUMP
+2003   SAY
+2003   CHANT
+2003   SING
+2003   UTTER
+2003   MUMBL
+2004   UNLOC
+2004   OPEN
+2005   NOTHI
+2006   LOCK
+2006   CLOSE
+2007   LIGHT
+2007   ON
+2008   EXTIN
+2008   OFF
+2009   WAVE
+2009   SHAKE
+2009   SWING
+2010   CALM
+2010   PLACA
+2010   TAME
+2011   WALK
+2011   RUN
+2011   TRAVE
+2011   GO
+2011   PROCE
+2011   CONTI
+2011   EXPLO
+2011   FOLLO
+2011   TURN
+2012   ATTAC
+2012   KILL
+2012   FIGHT
+2012   HIT
+2012   STRIK
+2012   SLAY
+2013   POUR
+2014   EAT
+2014   DEVOU
+2015   DRINK
+2016   RUB
+2017   THROW
+2017   TOSS
+2018   QUIT
+2019   FIND
+2019   WHERE
+2020   INVEN
+2021   FEED
+2022   FILL
+2023   BLAST
+2023   DETON
+2023   IGNIT
+2023   BLOWU
+2024   SCORE
+2025   FEE
+2025   FIE
+2025   FOE
+2025   FOO
+2025   FUM
+2026   BRIEF
+2027   READ
+2027   PERUS
+2028   BREAK
+2028   SHATT
+2028   SMASH
+2029   WAKE
+2029   DISTU
+2030   SUSPE
+2030   PAUSE
+2030   SAVE
+2031   RESUM
+2031   RESTA
+2032   FLY
+2033   LISTE
+2034   Z'ZZZ   (GETS REPLACED)
+3001   FEE
+3002   FIE
+3003   FOE
+3004   FOO
+3005   FUM
+3013   THANK
+3050   SESAM
+3050   OPENS
+3050   ABRA
+3050   ABRAC
+3050   SHAZA
+3050   HOCUS
+3050   POCUS
+3051   HELP
+3051   ?
+3054   NO
+3064   TREE
+3064   TREES
+3066   DIG
+3066   EXCAV
+3068   LOST
+3069   MIST
+3079   FUCK
+3139   STOP
+3142   INFO
+3142   INFOR
+3147   SWIM
+3246   WIZAR
+3271   YES
+3275   NEWS
+-1
+5
+1      Set of keys
+000    There are some keys on the ground here.
+2      Brass lantern
+000    There is a shiny brass lamp nearby.
+100    There is a lamp shining nearby.
+3      *grate
+000    The grate is locked.
+100    The grate is open.
+4      Wicker cage
+000    There is a small wicker cage discarded nearby.
+5      Black rod
+000    A three foot black rod with a rusty star on an end lies nearby.
+6      Black rod
+000    A three foot black rod with a rusty mark on an end lies nearby.
+7      *steps
+000    Rough stone steps lead down the pit.
+100    Rough stone steps lead up the dome.
+8      Little bird in cage
+000    A cheerful little bird is sitting here singing.
+100    There is a little bird in the cage.
+200    A cheerful little bird is sitting here singing.
+300    The bird's singing is quite melodious.
+400    The bird does not seem inclined to sing while in the cage.
+500    It almost seems as though the bird is trying to tell you something.
+600    To your surprise, you can understand the bird's chirping; it is
+600    singing about the joys of its forest home.
+700    The bird does not seem inclined to sing while in the cage.
+800    The bird is singing to you in gratitude for your having returned it to
+800    its home.  In return, it informs you of a magic word which it thinks
+800    you may find useful somewhere near the Hall of Mists.  The magic word
+800    changes frequently, but for now the bird believes it is "%W".  You
+800    thank the bird for this information, and it flies off into the forest.
+9      *rusty door
+000    The way north is barred by a massive, rusty, iron door.
+100    The way north leads through a massive, rusty, iron door.
+10     Velvet pillow
+000    A small velvet pillow lies on the floor.
+11     *snake
+000    A huge green fierce snake bars the way!
+100    %!  (chased away)
+200    The snake is hissing venomously.
+12     *fissure
+000    %!
+100    A crystal bridge now spans the fissure.
+200    The crystal bridge has vanished!
+13     *stone tablet
+000    A massive stone tablet imbedded in the wall reads:
+000    "Congratulations on bringing light into the dark-room!"
+100    "Congratulations on bringing light into the dark-room!"
+14     Giant clam  >GRUNT!<
+000    There is an enormous clam here with its shell tightly closed.
+100    The clam is as tight-mouthed as a, er, clam.
+15     Giant oyster  >GROAN!<
+000    There is an enormous oyster here with its shell tightly closed.
+100    Interesting.  There seems to be something written on the underside of
+100    the oyster.
+200    Even though it's an oyster, the critter's as tight-mouthed as a clam.
+300    It says the same thing it did before.  Hm, maybe it's a pun?
+16     "Spelunker Today"
+000    There are a few recent issues of "Spelunker Today" magazine here.
+100    I'm afraid the magazine is written in dwarvish.  But pencilled on one
+100    cover you see, "Please leave the magazines at the construction site."
+19     Tasty food
+000    There is food here.
+20     Small bottle
+000    There is a bottle of water here.
+100    There is an empty bottle here.
+200    There is a bottle of oil here.
+21     Water in the bottle
+22     Oil in the bottle
+23     *mirror
+000    %!
+24     *plant
+000    There is a tiny little plant in the pit, murmuring "water, water, ..."
+100    There is a 12-foot-tall beanstalk stretching up out of the pit,
+100    bellowing "WATER!! WATER!!"
+200    There is a gigantic beanstalk stretching all the way up to the hole.
+300    The plant spurts into furious growth for a few seconds.
+400    The plant grows explosively, almost filling the bottom of the pit.
+500    You've over-watered the plant!  It's shriveling up!  And now . . .
+600    The plant continues to ask plaintively for water.
+700    The plant continues to demand water.
+800    The plant now maintains a contented silence.
+25     *phony plant (seen in Twopit Room only when tall enough)
+000    %!
+100    The top of a 12-foot-tall beanstalk is poking out of the west pit.
+200    There is a huge beanstalk growing out of the west pit up to the hole.
+26     *stalactite
+000    %!
+27     *shadowy figure and/or window
+000    The shadowy figure seems to be trying to attract your attention.
+28     Dwarf's axe
+000    There is a little axe here.
+100    There is a little axe lying beside the bear.
+29     *cave drawings
+000    %!
+30     *pirate/genie
+000    %!  (never present)
+31     *dragon
+000    A huge green fierce dragon bars the way!
+100    The blood-specked body of a huge green dead dragon lies to one side.
+200    The body of a huge green dead dragon is lying off to one side.
+300    Congratulations!  You have just vanquished a dragon with your bare
+300    hands!  (Unbelievable, isn't it?)
+400    The dragon's ominous hissing does not bode well for you.
+500    The dragon is, not surprisingly, silent.
+600    The dragon is, not surprisingly, silent.
+32     *chasm
+000    A rickety wooden bridge extends across the chasm, vanishing into the
+000    mist.  A notice posted on the bridge reads, "Stop! Pay troll!"
+100    The wreckage of a bridge (and a dead bear) can be seen at the bottom
+100    of the chasm.
+33     *troll
+000    A burly troll stands by the bridge and insists you throw him a
+000    treasure before you may cross.
+100    The troll steps out from beneath the bridge and blocks your way.
+200    %!  (chased away)
+300    The troll sounds quite adamant in his demand for a treasure.
+34     *phony troll
+000    The troll is nowhere to be seen.
+35     %!  (bear uses rtext 141)
+000    There is a ferocious cave bear eying you from the far end of the room!
+100    There is a gentle cave bear sitting placidly in one corner.
+200    There is a contented-looking bear wandering about nearby.
+300    %!  (dead)
+36     *message in second maze
+000    There is a message scrawled in the dust in a flowery script, reading:
+000    "This is not the maze where the pirate leaves his treasure chest."
+100    "This is not the maze where the pirate leaves his treasure chest."
+37     *volcano and/or geyser
+000    %!
+38     *vending machine
+000    There is a massive and somewhat battered vending machine here.  The
+000    instructions on it read: "Drop coins here to receive fresh batteries."
+100    "Drop coins here to receive fresh batteries."
+200    As you strike the vending machine, it pivots backward along with a
+200    section of wall, revealing a dark passage leading south.
+300    There is a massive vending machine here, swung back to reveal a
+300    southward passage.
+400    "Drop coins here to receive fresh batteries."
+500    The vending machine swings back to block the passage.
+39     Batteries
+000    There are fresh batteries here.
+100    Some worn-out batteries have been discarded nearby.
+40     *carpet and/or moss and/or curtains
+000    %!
+41     *ogre
+000    A formidable ogre bars the northern exit.
+100    The ogre is apparently the strong, silent type.
+42     *urn
+000    A small urn is embedded in the rock.
+100    A small urn full of oil is embedded in the rock.
+200    A small oil flame extrudes from an urn embedded in the rock.
+43     *cavity
+000    %!  (something in it)
+100    There is a small urn-shaped cavity in the rock.
+44     *blood
+000    %!  (described with dragon)
+45     *reservoir
+000    %!
+100    The waters have parted to form a narrow path across the reservoir.
+200    The waters crash together again.
+46     Leporine appendage
+000    Your keen eye spots a severed leporine appendage lying on the ground.
+47     *mud
+000    %!
+100    "MAGIC WORD XYZZY"
+48     *note
+000    %!
+100    "You won't get it up the steps"
+49     *sign
+000    %!
+100    Cave under construction beyond this point.
+100               Proceed at own risk.
+100           [Witt Construction Company]
+200    "Treasure Vault.  Keys in main office."
+50     Large gold nugget
+000    There is a large sparkling nugget of gold here!
+51     Several diamonds
+000    There are diamonds here!
+52     Bars of silver
+000    There are bars of silver here!
+53     Precious jewelry
+000    There is precious jewelry here!
+54     Rare coins
+000    There are many coins here!
+55     Treasure chest
+000    The pirate's treasure chest is here!
+56     Golden eggs
+000    There is a large nest here, full of golden eggs!
+100    The nest of golden eggs has vanished!
+200    Done!
+57     Jeweled trident
+000    There is a jewel-encrusted trident here!
+58     Ming vase
+000    There is a delicate, precious, ming vase here!
+100    The vase is now resting, delicately, on a velvet pillow.
+200    The floor is littered with worthless shards of pottery.
+300    The ming vase drops with a delicate crash.
+59     Egg-sized emerald
+000    There is an emerald here the size of a plover's egg!
+100    There is an emerald resting in a small cavity in the rock!
+60     Platinum pyramid
+000    There is a platinum pyramid here, 8 inches on a side!
+61     Glistening pearl
+000    Off to one side lies a glistening pearl!
+62     Persian rug
+000    There is a persian rug spread out on the floor!
+100    The dragon is sprawled out on a persian rug!!
+200    There is a persian rug here, hovering in mid-air!
+63     Rare spices
+000    There are rare spices here!
+64     Golden chain
+000    There is a golden chain lying in a heap on the floor!
+100    The bear is locked to the wall with a golden chain!
+200    There is a golden chain locked to the wall!
+65     Giant ruby
+000    There is an enormous ruby here!
+100    There is a ruby resting in a small cavity in the rock!
+66     Jade necklace
+000    A precious jade necklace has been dropped here!
+67     Amber gemstone
+000    There is a rare amber gemstone here!
+100    There is an amber gemstone resting in a small cavity in the rock!
+68     Star sapphire
+000    A brilliant blue star sapphire is here!
+100    There is a star sapphire resting in a small cavity in the rock!
+69     Ebony statuette
+000    There is a richly-carved ebony statuette here!
+-1
+6
+1      Somewhere nearby is Colossal Cave, where others have found fortunes in
+1      treasure and gold, though it is rumored that some who enter are never
+1      seen again.  Magic is said to work in the cave.  I will be your eyes
+1      and hands.  Direct me with commands of 1 or 2 words.  I should warn
+1      you that I look at only the first five letters of each word, so you'll
+1      have to enter "northeast" as "ne" to distinguish it from "north".
+1      You can type "help" for some general hints.  For information on how
+1      to end your adventure, scoring, etc., type "info".
+1                                    - - -
+1      This program was originally developed by Willie Crowther.  Most of the
+1      features of the current program were added by Don Woods.  Contact Don
+1      if you have any questions, comments, etc.
+2      A little dwarf with a big knife blocks your way.
+3      A little dwarf just walked around a corner, saw you, threw a little
+3      axe at you which missed, cursed, and ran away.
+4      There are %1 threatening little dwarves in the room with you.
+5      There is a threatening little dwarf in the room with you!
+6      One sharp nasty knife is thrown at you!
+7      A hollow voice says "PLUGH".
+8      It gets you!
+9      It misses!
+10     I am unsure how you are facing.  Use compass points or nearby objects.
+11     I don't know in from out here.  Use compass points or name something
+11     in the general direction you want to go.
+12     I don't know how to apply that word here.
+13     You're quite welcome.
+14     I'm game.  Would you care to explain how?
+15     Sorry, but I am not allowed to give more detail.  I will repeat the
+15     long description of your location.
+16     It is now pitch dark.  If you proceed you will likely fall into a pit.
+17     If you prefer, simply type w rather than west.
+18     Are you trying to catch the bird?
+19     Something about you seems to be frightening the bird.  Perhaps you
+19     might figure out what it is.
+20     Are you trying to somehow deal with the snake?
+21     You can't kill the snake, or drive it away, or avoid it, or anything
+21     like that.  There is a way to get by, but you don't have the necessary
+21     resources right now.
+22     Do you really want to quit now?
+23     You fell into a pit and broke every bone in your body!
+24     You are already carrying it!
+25     You can't be serious!
+26     The bird seemed unafraid at first, but as you approach it becomes
+26     disturbed and you cannot catch it.
+27     You can catch the bird, but you cannot carry it.
+28     There is nothing here with a lock!
+29     You aren't carrying it!
+30     The little bird attacks the green snake, and in an astounding flurry
+30     drives the snake away.
+31     You have no keys!
+32     It has no lock.
+33     I don't know how to lock or unlock such a thing.
+34     It was already locked.
+35     The grate is now locked.
+36     The grate is now unlocked.
+37     It was already unlocked.
+38     The urn is empty and will not light.
+39     Your lamp is now on.
+40     Your lamp is now off.
+41     There is no way to get past the bear to unlock the chain, which is
+41     probably just as well.
+42     Nothing happens.
+43     Where?
+44     There is nothing here to attack.
+45     The little bird is now dead.  Its body disappears.
+46     Attacking the snake both doesn't work and is very dangerous.
+47     You killed a little dwarf.
+48     You attack a little dwarf, but he dodges out of the way.
+49     With what?  Your bare hands?
+50     Good try, but that is an old worn-out magic word.
+51     I know of places, actions, and things.  Most of my vocabulary
+51     describes places and is used to move you there.  To move, try words
+51     like forest, building, downstream, enter, east, west, north, south,
+51     up, or down.  I know about a few special objects, like a black rod
+51     hidden in the cave.  These objects can be manipulated using some of
+51     the action words that I know.  Usually you will need to give both the
+51     object and action words (in either order), but sometimes I can infer
+51     the object from the verb alone.  Some objects also imply verbs; in
+51     particular, "inventory" implies "take inventory", which causes me to
+51     give you a list of what you're carrying.  Some objects have unexpected
+51     effects; the effects are not always desirable!  Usually people having
+51     trouble moving just need to try a few more words.  Usually people
+51     trying unsuccessfully to manipulate an object are attempting something
+51     beyond their (or my!) capabilities and should try a completely
+51     different tack.  One point often confusing to beginners is that, when
+51     there are several ways to go in a certain direction (e.g., if there
+51     are several holes in a wall), choosing that direction in effect
+51     chooses one of the ways at random; often, though, by specifying the
+51     place you want to reach you can guarantee choosing the right path.
+51     Also, to speed the game you can sometimes move long distances with a
+51     single word.  For example, "building" usually gets you to the building
+51     from anywhere above ground except when lost in the forest.  Also, note
+51     that cave passages and forest paths turn a lot, so leaving one place
+51     heading north doesn't guarantee entering the next from the south.
+51     However (another important point), except when you've used a "long
+51     distance" word such as "building", there is always a way to go back
+51     where you just came from unless I warn you to the contrary, even
+51     though the direction that takes you back might not be the reverse of
+51     what got you here.  Good luck, and have fun!
+52     There is no way to go that direction.
+53     Please stick to 1- and 2-word commands.
+54     OK
+55     You can't unlock the keys.
+56     You have crawled around in some little holes and wound up back in the
+56     main passage.
+57     I don't know where the cave is, but hereabouts no stream can run on
+57     the surface for long.  I would try the stream.
+58     I need more detailed instructions to do that.
+59     I can only tell you what you see as you move about and manipulate
+59     things.  I cannot tell you where remote things are.
+60     The ogre snarls and shoves you back.
+61     Huh?
+62     Are you trying to get into the cave?
+63     The grate is very solid and has a hardened steel lock.  You cannot
+63     enter without a key, and there are no keys nearby.  I would recommend
+63     looking elsewhere for the keys.
+64     The trees of the forest are large hardwood oak and maple, with an
+64     occasional grove of pine or spruce.  There is quite a bit of under-
+64     growth, largely birch and ash saplings plus nondescript bushes of
+64     various sorts.  This time of year visibility is quite restricted by
+64     all the leaves, but travel is quite easy if you detour around the
+64     spruce and berry bushes.
+65     Welcome to Adventure!!  Would you like instructions?
+66     Digging without a shovel is quite impractical.  Even with a shovel
+66     progress is unlikely.
+67     Blasting requires dynamite.
+68     I'm as confused as you are.
+69     Mist is a white vapor, usually water, seen from time to time in
+69     caverns.  It can be found anywhere but is frequently a sign of a deep
+69     pit leading down to water.
+70     Your feet are now wet.
+71     I think I just lost my appetite.
+72     Thank you, it was delicious!
+73     You have taken a drink from the stream.  The water tastes strongly of
+73     minerals, but is not unpleasant.  It is extremely cold.
+74     The bottle of water is now empty.
+75     Rubbing the electric lamp is not particularly rewarding.  Anyway,
+75     nothing exciting happens.
+76     Peculiar.  Nothing unexpected happens.
+77     Your bottle is empty and the ground is wet.
+78     You can't pour that.
+79     Watch it!
+80     Which way?
+81     Oh dear, you seem to have gotten yourself killed.  I might be able to
+81     help you out, but I've never really done this before.  Do you want me
+81     to try to reincarnate you?
+82     All right.  But don't blame me if something goes wr......
+82                         --- POOF!! ---
+82     You are engulfed in a cloud of orange smoke.  Coughing and gasping,
+82     you emerge from the smoke and find....
+83     You clumsy oaf, you've done it again!  I don't know how long I can
+83     keep this up.  Do you want me to try reincarnating you again?
+84     Okay, now where did I put my orange smoke?....  >POOF!<
+84     Everything disappears in a dense cloud of orange smoke.
+85     Now you've really done it!  I'm out of orange smoke!  You don't expect
+85     me to do a decent reincarnation without any orange smoke, do you?
+86     Okay, if you're so smart, do it yourself!  I'm leaving!
+90     >>> messages 81 thru 90 are reserved for "obituaries". <<<
+91     Sorry, but I no longer seem to remember how it was you got here.
+92     You can't carry anything more.  You'll have to drop something first.
+93     You can't go through a locked steel grate!
+94     I believe what you want is right here with you.
+95     You don't fit through a two-inch slit!
+96     I respectfully suggest you go across the bridge instead of jumping.
+97     There is no way across the fissure.
+98     You're not carrying anything.
+99     You are currently holding the following:
+100    It's not hungry (it's merely pinin' for the fjords).  Besides, you
+100    have no bird seed.
+101    The snake has now devoured your bird.
+102    There's nothing here it wants to eat (except perhaps you).
+103    You fool, dwarves eat only coal!  Now you've made him *REALLY* mad!!
+104    You have nothing in which to carry it.
+105    Your bottle is already full.
+106    There is nothing here with which to fill the bottle.
+107    Your bottle is now full of water.
+108    Your bottle is now full of oil.
+109    You can't fill that.
+110    Don't be ridiculous!
+111    The door is extremely rusty and refuses to open.
+112    The plant indignantly shakes the oil off its leaves and asks, "Water?"
+113    The hinges are quite thoroughly rusted now and won't budge.
+114    The oil has freed up the hinges so that the door will now move,
+114    although it requires some effort.
+115    The plant has exceptionally deep roots and cannot be pulled free.
+116    The dwarves' knives vanish as they strike the walls of the cave.
+117    Something you're carrying won't fit through the tunnel with you.
+117    You'd best take inventory and drop something.
+118    You can't fit this five-foot clam through that little passage!
+119    You can't fit this five-foot oyster through that little passage!
+120    I advise you to put down the clam before opening it.  >STRAIN!<
+121    I advise you to put down the oyster before opening it.  >WRENCH!<
+122    You don't have anything strong enough to open the clam.
+123    You don't have anything strong enough to open the oyster.
+124    A glistening pearl falls out of the clam and rolls away.  Goodness,
+124    this must really be an oyster.  (I never was very good at identifying
+124    bivalves.)  Whatever it is, it has now snapped shut again.
+125    The oyster creaks open, revealing nothing but oyster inside.  It
+125    promptly snaps shut again.
+126    You have crawled around in some little holes and found your way
+126    blocked by a recent cave-in.  You are now back in the main passage.
+127    There are faint rustling noises from the darkness behind you.
+128    Out from the shadows behind you pounces a bearded pirate!  "Har, har,"
+128    he chortles, "I'll just take all this booty and hide it away with me
+128    chest deep in the maze!"  He snatches your treasure and vanishes into
+128    the gloom.
+129    A sepulchral voice reverberating through the cave, says, "Cave closing
+129    soon.  All adventurers exit immediately through main office."
+130    A mysterious recorded voice groans into life and announces:
+130       "This exit is closed.  Please leave via main office."
+131    It looks as though you're dead.  Well, seeing as how it's so close to
+131    closing time anyway, I think we'll just call it a day.
+132    The sepulchral voice intones, "The cave is now closed."  As the echoes
+132    fade, there is a blinding flash of light (and a small puff of orange
+132    smoke). . . .    As your eyes refocus, you look around and find...
+133    There is a loud explosion, and a twenty-foot hole appears in the far
+133    wall, burying the dwarves in the rubble.  You march through the hole
+133    and find yourself in the main office, where a cheering band of
+133    friendly elves carry the conquering adventurer off into the sunset.
+134    There is a loud explosion, and a twenty-foot hole appears in the far
+134    wall, burying the snakes in the rubble.  A river of molten lava pours
+134    in through the hole, destroying everything in its path, including you!
+135    There is a loud explosion, and you are suddenly splashed across the
+135    walls of the room.
+136    The resulting ruckus has awakened the dwarves.  There are now several
+136    threatening little dwarves in the room with you!  Most of them throw
+136    knives at you!  All of them get you!
+137    Oh, leave the poor unhappy bird alone.
+138    I daresay whatever you want is around here somewhere.
+139    I don't know the word "stop".  Use "quit" if you want to give up.
+140    You can't get there from here.
+141    You are being followed by a very large, tame bear.
+142    For a summary of the most recent changes to the game, say "news".
+142    If you want to end your adventure early, say "quit".  To suspend your
+142    adventure such that you can continue later, say "suspend" (or "pause"
+142    or "save").  To see how well you're doing, say "score".  To get full
+142    credit for a treasure, you must have left it safely in the building,
+142    though you get partial credit just for locating it.  You lose points
+142    for getting killed, or for quitting, though the former costs you more.
+142    There are also points based on how much (if any) of the cave you've
+142    managed to explore; in particular, there is a large bonus just for
+142    getting in (to distinguish the beginners from the rest of the pack),
+142    and there are other ways to determine whether you've been through some
+142    of the more harrowing sections.  If you think you've found all the
+142    treasures, just keep exploring for a while.  If nothing interesting
+142    happens, you haven't found them all yet.  If something interesting
+142    *DOES* happen (incidentally, there *ARE* ways to hasten things along),
+142    it means you're getting a bonus and have an opportunity to garner many
+142    more points in the Master's section.  I may occasionally offer hints
+142    if you seem to be having trouble.  If I do, I'll warn you in advance
+142    how much it will affect your score to accept the hints.  Finally, to
+142    save time, you may specify "brief", which tells me never to repeat the
+142    full description of a place unless you explicitly ask me to.
+143    Now let's see you do it without suspending in mid-Adventure.
+144    There is nothing here with which to fill it.
+145    The sudden change in temperature has delicately shattered the vase.
+146    It is beyond your power to do that.
+147    I don't know how.
+148    It is too far up for you to reach.
+149    You killed a little dwarf.  The body vanishes in a cloud of greasy
+149    black smoke.
+150    The shell is very strong and is impervious to attack.
+151    What's the matter, can't you read?  Now you'd best start over.
+152    The axe bounces harmlessly off the dragon's thick scales.
+153    The dragon looks rather nasty.  You'd best not try to get by.
+154    The little bird attacks the green dragon, and in an astounding flurry
+154    gets burnt to a cinder.  The ashes blow away.
+155    On what?
+156    Okay, from now on I'll only describe a place in full the first time
+156    you come to it.  To get the full description, say "look".
+157    Trolls are close relatives with the rocks and have skin as tough as
+157    that of a rhinoceros.  The troll fends off your blows effortlessly.
+158    The troll deftly catches the axe, examines it carefully, and tosses it
+158    back, declaring, "Good workmanship, but it's not valuable enough."
+159    The troll catches your treasure and scurries away out of sight.
+160    The troll refuses to let you cross.
+161    There is no longer any way across the chasm.
+162    Just as you reach the other side, the bridge buckles beneath the
+162    weight of the bear, which was still following you around.  You
+162    scrabble desperately for support, but as the bridge collapses you
+162    stumble back and fall into the chasm.
+163    The bear lumbers toward the troll, who lets out a startled shriek and
+163    scurries away.  The bear soon gives up the pursuit and wanders back.
+164    The axe misses and lands near the bear where you can't get at it.
+165    With what?  Your bare hands?  Against *HIS* bear hands??
+166    The bear is confused; he only wants to be your friend.
+167    For crying out loud, the poor thing is already dead!
+168    The bear eagerly wolfs down your food, after which he seems to calm
+168    down considerably and even becomes rather friendly.
+169    The bear is still chained to the wall.
+170    The chain is still locked.
+171    The chain is now unlocked.
+172    The chain is now locked.
+173    There is nothing here to which the chain can be locked.
+174    There is nothing here to eat.
+175    Do you want the hint?
+176    Do you need help getting out of the maze?
+177    You can make the passages look less alike by dropping things.
+178    Are you trying to explore beyond the plover room?
+179    There is a way to explore that region without having to worry about
+179    falling into a pit.  None of the objects available is immediately
+179    useful in discovering the secret.
+180    Do you need help getting out of here?
+181    Don't go west.
+182    Gluttony is not one of the troll's vices.  Avarice, however, is.
+183    Your lamp is getting dim.  You'd best start wrapping this up, unless
+183    you can find some fresh batteries.  I seem to recall there's a vending
+183    machine in the maze.  Bring some coins with you.
+184    Your lamp has run out of power.
+185    Please answer the question.
+186    There are faint rustling noises from the darkness behind you.  As you
+186    turn toward them, the beam of your lamp falls across a bearded pirate.
+186    He is carrying a large chest.  "Shiver me timbers!" he cries, "I've
+186    been spotted!  I'd best hie meself off to the maze to hide me chest!"
+186    With that, he vanishes into the gloom.
+187    Your lamp is getting dim.  You'd best go back for those batteries.
+188    Your lamp is getting dim.  I'm taking the liberty of replacing the
+188    batteries.
+189    Your lamp is getting dim, and you're out of spare batteries.  You'd
+189    best start wrapping this up.
+190    You sift your fingers through the dust, but succeed only in
+190    obliterating the cryptic message.
+191    Do you need help dealing with the ogre?
+192    Hmmm, this looks like a clue, which means it'll cost you 10 points to
+192    read it.  Should I go ahead and read it anyway?
+193    It says, "There is a way out of this place.  Do you need any more
+193    information to escape?  Sorry, but this initial hint is all you get."
+194    There is nothing the presence of which will prevent you from defeating
+194    him; thus it can't hurt to fetch everything you possibly can.
+195    I'm afraid I don't understand.
+196    Your hand passes through it as though it weren't there.
+197    You strike the mirror a resounding blow, whereupon it shatters into a
+197    myriad tiny fragments.
+198    You have taken the vase and hurled it delicately to the ground.
+199    You prod the nearest dwarf, who wakes up grumpily, takes one look at
+199    you, curses, and grabs for his axe.
+200    Is this acceptable?
+201    This adventure is already over.  To start a new adventure, or to
+201    resume an earlier adventure, please run a fresh copy of the program.
+202    The ogre doesn't appear to be hungry.
+203    The ogre, who despite his bulk is quite agile, easily dodges your
+203    attack.  He seems almost amused by your puny effort.
+204    The ogre, distracted by your rush, is struck by the knife.  With a
+204    blood-curdling yell he turns and bounds after the dwarves, who flee
+204    in panic.  You are left alone in the room.
+205    The ogre, distracted by your rush, is struck by the knife.  With a
+205    blood-curdling yell he turns and bounds after the dwarf, who flees
+205    in panic.  You are left alone in the room.
+206    The bird flies about agitatedly for a moment.
+207    The bird flies agitatedly about the cage.
+208    The bird flies about agitatedly for a moment, then disappears through
+208    the crack.  It reappears shortly, carrying in its beak a jade
+208    necklace, which it drops at your feet.
+209    The urn is now lit.
+210    The urn is now dark.
+211    You empty the bottle into the urn, which promptly ejects the water
+211    with uncanny accuracy, squirting you directly between the eyes.
+212    Your bottle is now empty and the urn is full of oil.
+213    The urn is already full of oil.
+214    There's no way to get the oil out of the urn.
+215    The urn is far too firmly embedded for your puny strength to budge it.
+216    As you rub the urn, there is a flash of light and a genie appears.
+216    His aspect is stern as he advises: "One who wouldst traffic in
+216    precious stones must first learn to recognize the signals thereof."
+216    He wrests the urn from the stone, leaving a small cavity.  Turning to
+216    face you again, he fixes you with a steely eye and intones: "Caution!"
+216    Genie and urn vanish in a cloud of amber smoke.  The smoke condenses
+216    to form a rare amber gemstone, resting in the cavity in the rock.
+217    I suppose you collect doughnut holes, too?
+218    The gem fits easily into the cavity.
+219    The persian rug stiffens and rises a foot or so off the ground.
+220    The persian rug draped over your shoulder seems to wriggle for a
+220    moment, but then subsides.
+221    The persian rug settles gently to the ground.
+222    The rug hovers stubbornly where it is.
+223    The rug does not appear inclined to cooperate.
+224    If you mean to use the persian rug, it does not appear inclined to
+224    cooperate.
+225    Though you flap your arms furiously, it is to no avail.
+226    You board the persian rug, which promptly whisks you across the chasm.
+226    You have time for a fleeting glimpse of a two thousand foot drop to a
+226    mighty river; then you find yourself on the other side.
+227    The rug ferries you back across the chasm.
+228    All is silent.
+229    The stream is gurgling placidly.
+230    The wind whistles coldly past your ears.
+231    The stream splashes loudly into the pool.
+232    You are unable to make anything of the splashing noise.
+233    You can hear the murmuring of the beanstalks and the snoring of the
+233    dwarves.
+234    A loud hissing emanates from the snake pit.
+235    The air is filled with a dull rumbling sound.
+236    The roar is quite loud here.
+237    The roaring is so loud that it drowns out all other sound.
+238    The bird eyes you suspiciously and flutters away.  A moment later you
+238    feel something wet land on your head, but upon looking up you can see
+238    no sign of the culprit.
+239    There are only a few drops--not enough to carry.
+240    Your head buzzes strangely for a moment.
+241    (Uh, y'know, that wasn't very bright.)
+242    It's a pity you took so long about it.
+243    Are you wondering what to do here?
+244    This section is quite advanced.  Find the cave first.
+245    Upstream or downstream?
+246    Wizards are not to be disturbed by such as you.
+247    Would you like to be shown out of the forest?
+248    Go east ten times.  If that doesn't get you out, then go south, then
+248    west twice, then south.
+249    The waters are crashing loudly against the shore.
+250    %1 of them throw knives at you!
+251    %1 of them get you!
+252    One of them gets you!
+253    None of them hits you!
+254    Sorry, I don't know the word "%W".
+255    What do you want to do with the %L?
+256    I see no %L here.
+257    %C what?
+258    Okay, "%W".
+259    You have garnered %3 out of a possible %3 points, using %5 turn%S.
+260    I can suspend your Adventure for you so that you can resume later, but
+260    it will cost you 5 points.
+261    I am prepared to give you a hint, but it will cost you %1 point%S.
+262    You scored %3 out of a possible %3, using%5 turn%S.
+263    To achieve the next higher rating, you need %2 more point%S.
+264    To achieve the next higher rating would be a neat trick!
+264    Congratulations!!
+265    You just went off my scale!!
+266    To resume your Adventure, start a new game and then say "RESUME".
+267    Table space used:
+267    %6 of %6 words of messages   %6 of %6 travel options
+267    %6 of %6 vocabulary words    %6 of %6 locations
+267    %6 of %6 objects             %6 of %6 action verbs
+267    %6 of %6 "random" messages   %6 of %6 "class" messages
+267    %6 of %6 hints               %6 of %6 turn threshholds
+268    To resume an earlier Adventure, you must abandon the current one.
+269    I'm sorry, but that Adventure was begun using Version%2.%1 of the
+269    program, and this is Version%2.%1.  You must find the other version
+269    in order to resume that Adventure.
+270    A dark fog creeps in to surround you.  From somewhere in the fog you
+270    hear a stern voice.  "This Adventure has been tampered with!  You have
+270    been dabbling in magic, knowing not the havoc you might cause thereby.
+270    Leave at once, before you do irrevocable harm!"  The fog thickens,
+270    until at last you can see nothing at all.  Your vision then clears,
+270    and you find yourself back in The Real World.
+271    Guess again.
+272    You're missing only one other treasure.  Do you need help finding it?
+273    Once you've found all the other treasures, it is no longer possible to
+273    locate the one you're now missing.
+274    Sorry, but the path twisted and turned so much that I can't figure
+274    out which way to go to get back.
+275    Version 2.5 is essentially the same as Version II; the cave and the
+275    hazards therein are unchanged, and top score is still 430 points.
+275    There are a few more hints, especially for some of the more obscure
+275    puzzles.  There are a few minor bugfixes and cosmetic changes.  You
+275    can now save a game and resume it at once (formerly you had to wait a
+275    while first), but it now costs you a few points each time you save the
+275    game.  Saved games are now stored in much smaller files than before.
+276    You don't have to say "go" every time; just specify a direction or, if
+276    it's nearby, name the place to which you wish to move.
+-1
+7
+1      3
+2      3
+3      8       9
+4      10
+5      11
+6      0
+7      14      15
+8      13
+9      94      -1
+10     96
+11     19      -1
+12     17      27
+13     101     -1
+14     103
+15     0
+16     106
+17     0       -1
+18     0
+19     3
+20     3
+21     0
+22     0
+23     109     -1
+24     25      -1
+25     23      67
+26     111     -1
+27     35      110
+28     0
+29     97      -1
+30     0       -1
+31     119     121
+32     117     122
+33     117     122
+34     0       0
+35     130     -1
+36     0       -1
+37     126     -1
+38     140     -1
+39     0
+40     96      -1
+41     143     -1
+42     6       -1
+43     0       -1
+44     0       -1
+45     113     169
+46     166
+47     11      -1
+48     18      -1
+49     106     -1
+50     18
+51     27
+52     28
+53     29
+54     30
+55     0
+56     92
+57     95
+58     97
+59     100
+60     101
+61     0
+62     119     121
+63     127
+64     130     -1
+65     144
+66     0
+67     0
+68     167
+69     177
+-1
+8
+1      24
+2      29
+3      0
+4      33
+5      0
+6      33
+7      195
+8      195
+9      42
+10     14
+11     43
+12     110
+13     29
+14     110
+15     73
+16     75
+17     29
+18     61
+19     59
+20     59
+21     174
+22     109
+23     67
+24     61
+25     147
+26     155
+27     195
+28     146
+29     110
+30     61
+31     61
+32     14
+33     195
+34     42
+35     61
+-1
+9
+0      1       2       3       4       5       6       7       8       9       10
+0      100     115     116     126     145     146     147     148     149     150
+0      151     152     153     154     155     156     157     158     159     160
+0      161     162     163     164     165     166     167
+2      1       3       4       7       38      95      113     24      168     169
+1      24
+3      46      47      48      54      56      58      82      85      86
+3      122     123     124     125     126     127     128     129     130
+4      6       145     146     147     148     149     150     151     152
+4      153     154     155     156     157     158     159     160     161
+4      162     163     164     165     166     42      43      44      45
+4      49      50      51      52      53      55      57      80      83
+4      84      87      107     112     131     132     133     134     135
+4      136     137     138     139     108
+11     8
+12     13
+13     19
+14     42      43      44      45      46      47      48      49      50      51
+14     52      53      54      55      56      80      81      82      86      87
+15     99      100     101
+16     108
+17     6
+18     145     146     147     148     149     150     151     152     153     154
+18     155     156     157     158     159     160     161     162     163     164
+18     165     166
+19     143
+20     8       15      64      109     126
+-1
+10
+45     You are obviously a rank amateur.  Better luck next time.
+120    Your score qualifies you as a novice class adventurer.
+170    You have achieved the rating: "Experienced Adventurer".
+250    You may now consider yourself a "Seasoned Adventurer".
+320    You have reached "Junior Master" status.
+375    Your score puts you in Master Adventurer Class C.
+410    Your score puts you in Master Adventurer Class B.
+426    Your score puts you in Master Adventurer Class A.
+429    All of Adventuredom gives tribute to you, Adventurer Grandmaster!
+9999   Adventuredom stands in awe -- you have now joined the ranks of the
+9999          W O R L D   C H A M P I O N   A D V E N T U R E R S !
+9999   It may interest you to know that the Dungeon-Master himself has, to
+9999   my knowledge, never achieved this threshhold in fewer than 330 turns.
+-1
+11
+1      4       2       62      63
+2      5       2       18      19
+3      8       2       20      21
+4      75      4       176     177
+5      25      5       178     179
+6      20      3       180     181
+7      8       2       243     244
+8      25      2       247     248
+9      10      4       191     194
+10     1       4       272     273
+-1
+13
+8      3       -1
+11     2       -1
+13     -1      1
+14     1       -1
+15     2       -1
+16     -1      1
+24     6       -1
+31     4       -1
+33     3       -1
+36     -1      1
+38     -1      1
+41     1       -1
+47     -1      1
+48     -1      1
+49     -1      1
+1      229
+3      229
+4      229
+7      229
+15     230
+38     229
+64     230
+94     230
+95     231
+98     232
+109    230
+113    231
+115    233
+116    234
+123    235
+124    235
+125    236
+126    -237
+127    235
+168    -237
+169    249
+-1
+14
+200350 Tsk!  A wizard wouldn't have to take 350 turns.  This is going to cost
+200350 you a couple of points.
+300500 500 turns?  That's another few points you've lost.
+501000 Are you still at it?  Five points off for exceeding 1000 turns!
+1002500 Good grief, don't you *EVER* give up?  Do you realize you've spent
+1002500 over 2500 turns at this?  That's another ten points off, a total of
+1002500 twenty points lost for taking so long.
+-1
+0
diff --git a/compile.c b/compile.c
new file mode 100644 (file)
index 0000000..9906f08
--- /dev/null
+++ b/compile.c
@@ -0,0 +1,547 @@
+#define LINESIZE 100
+#define RTXSIZ 277
+#define CLSMAX 12
+#define LOCSIZ 185
+#define LINSIZ 12500
+#define TRNSIZ 5
+#define TABSIZ 330
+#define VRBSIZ 35
+#define HNTSIZ 20
+#define TRVSIZ 885
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <unistd.h>
+
+const char advent_to_ascii[] = {0, 32, 33, 34, 39, 40, 41, 42, 43, 44, 45, 46, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 37, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 35, 36, 38, 47, 58, 59, 60, 61, 62, 63, 64, 91, 92, 93, 94, 95, 96, 123, 124, 125, 126, 0};
+/* Rendered from the now-gone MPINIT() function */
+const char ascii_to_advent[] = {0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 0, 0, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 0, 1, 2, 106, 107, 63, 108, 3, 4, 5, 6, 7, 8, 9, 10, 109, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 110, 111, 112, 113, 114, 115, 116, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 117, 118, 119, 120, 121, 122, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 123, 124, 125, 126, 83};
+
+// Global variables for use in functions below that can gradually disappear as code is cleaned up
+long LNLENG;
+long LNPOSN;
+signed char INLINE[LINESIZE+1];
+long I;
+long K;
+long KK;
+long L;
+long LOC;
+long NEWLOC;
+long OBJ;
+long OLDLOC;
+long SECT;
+long VERB;
+
+// Storage for what comes out of the database
+long LINUSE;
+long TRVS;
+long CLSSES;
+long TRNVLS;
+long TABNDX;
+long HNTMAX;
+long PTEXT[101];
+long RTEXT[RTXSIZ + 1];
+long CTEXT[CLSMAX + 1];
+long OBJSND[101];
+long OBJTXT[101];
+long STEXT[LOCSIZ + 1];
+long LTEXT[LOCSIZ + 1];
+long COND[LOCSIZ + 1];
+long KEY[LOCSIZ + 1];
+long LOCSND[LOCSIZ + 1];
+long LINES[LINSIZ + 1];
+long CVAL[CLSMAX + 1];
+long TTEXT[TRNSIZ + 1];
+long TRNVAL[TRNSIZ + 1];
+long TRAVEL[TRVSIZ + 1];
+long KTAB[TABSIZ + 1];
+long ATAB[TABSIZ + 1];
+long PLAC[101];
+long FIXD[101];
+long ACTSPK[VRBSIZ + 1];
+long HINTS[HNTSIZ + 1][5];
+
+bool is_set(long, long);
+long GETTXT(long, long, long);
+void BUG(long);
+void MAPLIN(FILE*);
+long GETNUM(FILE*);
+int read_database(FILE*);
+void write_0d(FILE*, FILE*, long, char*);
+void write_1d(FILE*, FILE*, long[], long, char*);
+void write_hints(FILE*, FILE*, long[][5], long, long, char*);
+void write_files(FILE*, FILE*);
+
+bool is_set(long var, long position)
+{
+  long mask = 1l << position;
+  bool result = (var & mask) == mask;
+  return(result);
+}
+
+long GETTXT(long SKIP,long ONEWRD, long UPPER) {
+/*  Take characters from an input line and pack them into 30-bit words.
+ *  Skip says to skip leading blanks.  ONEWRD says stop if we come to a
+ *  blank.  UPPER says to map all letters to uppercase.  If we reach the
+ *  end of the line, the word is filled up with blanks (which encode as 0's).
+ *  If we're already at end of line when GETTXT is called, we return -1. */
+
+  long CHAR;
+  long GETTXT;
+  static long SPLITTING = -1;
+
+  if(LNPOSN != SPLITTING)
+    SPLITTING = -1;
+  GETTXT= -1;
+ L10:
+  if(LNPOSN > LNLENG)
+    return(GETTXT);
+  if((!SKIP) || INLINE[LNPOSN] != 0)
+    goto L11;
+  LNPOSN=LNPOSN+1;
+  goto L10;
+
+ L11:
+  GETTXT=0;
+  for (int I=1; I<=5; I++) {
+    GETTXT=GETTXT*64;
+    if(LNPOSN > LNLENG || (ONEWRD && INLINE[LNPOSN] == 0))
+      continue;
+    CHAR=INLINE[LNPOSN];
+    if(CHAR >= 63)
+      goto L12;
+    SPLITTING = -1;
+    if(UPPER && CHAR >= 37)
+      CHAR=CHAR-26;
+    GETTXT=GETTXT+CHAR;
+    goto L14;
+
+  L12:
+    if(SPLITTING == LNPOSN)
+      goto L13;
+    GETTXT=GETTXT+63;
+    SPLITTING = LNPOSN;
+    continue;
+
+  L13:
+    GETTXT=GETTXT+CHAR-63;
+    SPLITTING = -1;
+  L14:
+    LNPOSN=LNPOSN+1;
+  }
+
+  return(GETTXT);
+}
+
+void BUG(long NUM) {
+
+/*  The following conditions are currently considered fatal bugs.  Numbers < 20
+ *  are detected while reading the database; the others occur at "run time".
+ *     0       Message line > 70 characters
+ *     1       Null line in message
+ *     2       Too many words of messages
+ *     3       Too many travel options
+ *     4       Too many vocabulary words
+ *     5       Required vocabulary word not found
+ *     6       Too many RTEXT messages
+ *     7       Too many hints
+ *     8       Location has cond bit being set twice
+ *     9       Invalid section number in database
+ *     10      Too many locations
+ *     11      Too many class or turn messages
+ *     20      Special travel (500>L>300) exceeds goto list
+ *     21      Ran off end of vocabulary table
+ *     22      Vocabulary type (N/1000) not between 0 and 3
+ *     23      Intransitive action verb exceeds goto list
+ *     24      Transitive action verb exceeds goto list
+ *     25      Conditional travel entry with no alternative
+ *     26      Location has no travel entries
+ *     27      Hint number exceeds goto list
+ *     28      Invalid month returned by date function
+ *     29      Too many parameters given to SETPRM */
+
+  fprintf(stderr, "Fatal error %ld.  See source code for interpretation.\n", NUM);
+  exit(EXIT_FAILURE);
+}
+
+void MAPLIN(FILE *OPENED) {
+/*  Read a line of input, from the specified input source,
+ *  translate the chars to integers in the range 0-126 and store
+ *  them in the common array "INLINE".  Integer values are as follows:
+ *     0   = space [ASCII CODE 40 octal, 32 decimal]
+ *    1-2  = !" [ASCII 41-42 octal, 33-34 decimal]
+ *    3-10 = '()*+,-. [ASCII 47-56 octal, 39-46 decimal]
+ *   11-36 = upper-case letters
+ *   37-62 = lower-case letters
+ *    63   = percent (%) [ASCII 45 octal, 37 decimal]
+ *   64-73 = digits, 0 through 9
+ *  Remaining characters can be translated any way that is convenient;
+ *  The "TYPE" routine below is used to map them back to characters when
+ *  necessary.  The above mappings are required so that certain special
+ *  characters are known to fit in 6 bits and/or can be easily spotted.
+ *  Array elements beyond the end of the line should be filled with 0,
+ *  and LNLENG should be set to the index of the last character.
+ *
+ *  If the data file uses a character other than space (e.g., tab) to
+ *  separate numbers, that character should also translate to 0.
+ *
+ *  This procedure may use the map1,map2 arrays to maintain static data for
+ *  the mapping.  MAP2(1) is set to 0 when the program starts
+ *  and is not changed thereafter unless the routines on this page choose
+ *  to do so. */
+
+  do {
+    fgets(INLINE + 1, sizeof(INLINE) - 1, OPENED);
+  }
+  while (!feof(OPENED) && INLINE[1] == '#');
+  
+  LNLENG = 0;
+  for (int i = 1; i <= sizeof(INLINE) && INLINE[i] != 0; ++i)
+    {
+      char val = INLINE[i] + 1;
+      INLINE[i] = ascii_to_advent[val];
+      if (INLINE[i] != 0)
+       LNLENG = i;
+    }
+  LNPOSN = 1;
+}
+
+long GETNUM(FILE *source) {
+/*  Obtain the next integer from an input line.  If K>0, we first read a
+ *  new input line from a file; if K<0, we read a line from the keyboard;
+ *  if K=0 we use a line that has already been read (and perhaps partially
+ *  scanned).  If we're at the end of the line or encounter an illegal
+ *  character (not a digit, hyphen, or blank), we return 0. */
+  
+  long DIGIT, GETNUM, SIGN;
+
+  if(source != NULL) MAPLIN(source);
+  GETNUM = 0;
+
+  while (INLINE[LNPOSN] == 0)
+    {
+      if (LNPOSN > LNLENG) return(GETNUM);
+      ++LNPOSN;
+    }
+
+       SIGN=1;
+       if(INLINE[LNPOSN] != 9) goto L32;
+       SIGN= -1;
+L30:   LNPOSN=LNPOSN+1;
+L32:   if(LNPOSN > LNLENG || INLINE[LNPOSN] == 0) goto L42;
+       DIGIT=INLINE[LNPOSN]-64;
+       if(DIGIT < 0 || DIGIT > 9) goto L40;
+       GETNUM=GETNUM*10+DIGIT;
+        goto L30;
+
+L40:   GETNUM=0;
+L42:   GETNUM=GETNUM*SIGN;
+       LNPOSN=LNPOSN+1;
+       return(GETNUM);
+}
+
+int read_database(FILE* database) {
+       
+/*  Clear out the various text-pointer arrays.  All text is stored in array
+ *  lines; each line is preceded by a word pointing to the next pointer (i.e.
+ *  the word following the end of the line).  The pointer is negative if this is
+ *  first line of a message.  The text-pointer arrays contain indices of
+ *  pointer-words in lines.  STEXT(N) is short description of location N.
+ *  LTEXT(N) is long description.  PTEXT(N) points to message for PROP(N)=0.
+ *  Successive prop messages are found by chasing pointers.  RTEXT contains
+ *  section 6's stuff.  CTEXT(N) points to a player-class message.  TTEXT is for
+ *  section 14.  We also clear COND (see description of section 9 for details). */
+
+  for (int I=1; I<=300; I++) {
+    if(I <= 100) PTEXT[I] = 0;
+    if(I <= RTXSIZ) RTEXT[I] = 0;
+    if(I <= CLSMAX) CTEXT[I] = 0;
+    if(I <= 100) OBJSND[I] = 0;
+    if(I <= 100) OBJTXT[I] = 0;
+    if(I > LOCSIZ) break;
+    STEXT[I] = 0;
+    LTEXT[I] = 0;
+    COND[I] = 0;
+    KEY[I] = 0;
+    LOCSND[I] = 0;
+  }
+
+  LINUSE = 1;
+  TRVS = 1;
+  CLSSES = 0;
+  TRNVLS = 0;
+
+/*  Start new data section.  Sect is the section number. */
+
+ L1002: SECT=GETNUM(database);
+  OLDLOC= -1;
+  switch (SECT) {
+  case 0: return(0);
+  case 1: goto L1004;
+  case 2: goto L1004;
+  case 3: goto L1030;
+  case 4: goto L1040;
+  case 5: goto L1004;
+  case 6: goto L1004;
+  case 7: goto L1050;
+  case 8: goto L1060;
+  case 9: goto L1070;
+  case 10: goto L1004;
+  case 11: goto L1080;
+  case 12: break;
+  case 13: goto L1090;
+  case 14: goto L1004;
+  default: BUG(9);
+  }
+
+/*  Sections 1, 2, 5, 6, 10, 14.  Read messages and set up pointers. */
+
+L1004: KK=LINUSE;
+L1005: LINUSE=KK;
+       LOC=GETNUM(database);
+       if(LNLENG >= LNPOSN+70)BUG(0);
+       if(LOC == -1) goto L1002;
+       if(LNLENG < LNPOSN)BUG(1);
+L1006: KK=KK+1;
+       if(KK >= LINSIZ)BUG(2);
+       LINES[KK]=GETTXT(false,false,false);
+       if(LINES[KK] != -1) goto L1006;
+       LINES[LINUSE]=KK;
+       if(LOC == OLDLOC) goto L1005;
+       OLDLOC=LOC;
+       LINES[LINUSE]= -KK;
+       if(SECT == 14) goto L1014;
+       if(SECT == 10) goto L1012;
+       if(SECT == 6) goto L1011;
+       if(SECT == 5) goto L1010;
+       if(LOC > LOCSIZ)BUG(10);
+       if(SECT == 1) goto L1008;
+
+       STEXT[LOC]=LINUSE;
+        goto L1005;
+
+L1008: LTEXT[LOC]=LINUSE;
+        goto L1005;
+
+L1010: if(LOC > 0 && LOC <= 100)PTEXT[LOC]=LINUSE;
+        goto L1005;
+
+L1011: if(LOC > RTXSIZ)BUG(6);
+       RTEXT[LOC]=LINUSE;
+        goto L1005;
+
+L1012: CLSSES=CLSSES+1;
+       if(CLSSES > CLSMAX)BUG(11);
+       CTEXT[CLSSES]=LINUSE;
+       CVAL[CLSSES]=LOC;
+        goto L1005;
+
+L1014: TRNVLS=TRNVLS+1;
+       if(TRNVLS > TRNSIZ)BUG(11);
+       TTEXT[TRNVLS]=LINUSE;
+       TRNVAL[TRNVLS]=LOC;
+        goto L1005;
+
+/*  The stuff for section 3 is encoded here.  Each "from-location" gets a
+ *  contiguous section of the "TRAVEL" array.  Each entry in travel is
+ *  NEWLOC*1000 + KEYWORD (from section 4, motion verbs), and is negated if
+ *  this is the last entry for this location.  KEY(N) is the index in travel
+ *  of the first option at location N. */
+
+L1030: LOC=GETNUM(database);
+       if(LOC == -1) goto L1002;
+       NEWLOC=GETNUM(NULL);
+       if(KEY[LOC] != 0) goto L1033;
+       KEY[LOC]=TRVS;
+        goto L1035;
+L1033: TRVS--; TRAVEL[TRVS]= -TRAVEL[TRVS]; TRVS++;
+L1035: L=GETNUM(NULL);
+       if(L == 0) goto L1039;
+       TRAVEL[TRVS]=NEWLOC*1000+L;
+       TRVS=TRVS+1;
+       if(TRVS == TRVSIZ)BUG(3);
+        goto L1035;
+L1039: TRVS--; TRAVEL[TRVS]= -TRAVEL[TRVS]; TRVS++;
+        goto L1030;
+
+/*  Here we read in the vocabulary.  KTAB(N) is the word number, ATAB(N) is
+ *  the corresponding word.  The -1 at the end of section 4 is left in KTAB
+ *  as an end-marker. */
+
+L1040:
+       for (TABNDX=1; TABNDX<=TABSIZ; TABNDX++) {
+       KTAB[TABNDX]=GETNUM(database);
+       if(KTAB[TABNDX] == -1) goto L1002;
+       ATAB[TABNDX]=GETTXT(true,true,true);
+       } /* end loop */
+       BUG(4);
+
+/*  Read in the initial locations for each object.  Also the immovability info.
+ *  plac contains initial locations of objects.  FIXD is -1 for immovable
+ *  objects (including the snake), or = second loc for two-placed objects. */
+
+L1050: OBJ=GETNUM(database);
+       if(OBJ == -1) goto L1002;
+       PLAC[OBJ]=GETNUM(NULL);
+       FIXD[OBJ]=GETNUM(NULL);
+        goto L1050;
+
+/*  Read default message numbers for action verbs, store in ACTSPK. */
+
+L1060: VERB=GETNUM(database);
+       if(VERB == -1) goto L1002;
+       ACTSPK[VERB]=GETNUM(NULL);
+        goto L1060;
+
+/*  Read info about available liquids and other conditions, store in COND. */
+
+L1070: K=GETNUM(database);
+       if(K == -1) goto L1002;
+L1071: LOC=GETNUM(NULL);
+       if(LOC == 0) goto L1070;
+       if(is_set(COND[LOC],K)) BUG(8);
+       COND[LOC]=COND[LOC] + (1l << K);
+        goto L1071;
+
+/*  Read data for hints. */
+
+L1080: HNTMAX=0;
+L1081: K=GETNUM(database);
+       if(K == -1) goto L1002;
+       if(K <= 0 || K > HNTSIZ)BUG(7);
+       for (int I=1; I<=4; I++) {
+       HINTS[K][I] =GETNUM(NULL);
+       } /* end loop */
+       HNTMAX=(HNTMAX>K ? HNTMAX : K);
+        goto L1081;
+
+/*  Read the sound/text info, store in OBJSND, OBJTXT, LOCSND. */
+
+L1090: K=GETNUM(database);
+       if(K == -1) goto L1002;
+       KK=GETNUM(NULL);
+       I=GETNUM(NULL);
+       if(I == 0) goto L1092;
+       OBJSND[K]=(KK>0 ? KK : 0);
+       OBJTXT[K]=(I>0 ? I : 0);
+        goto L1090;
+
+L1092: LOCSND[K]=KK;
+        goto L1090;
+}
+
+/*  Finish constructing internal data format */
+
+/*  Having read in the database, certain things are now constructed.  PROPS are
+ *  set to zero.  We finish setting up COND by checking for forced-motion travel
+ *  entries.  The PLAC and FIXD arrays are used to set up ATLOC(N) as the first
+ *  object at location N, and LINK(OBJ) as the next object at the same location
+ *  as OBJ.  (OBJ>100 indicates that FIXED(OBJ-100)=LOC; LINK(OBJ) is still the
+ *  correct link to use.)  ABB is zeroed; it controls whether the abbreviated
+ *  description is printed.  Counts modulo 5 unless "LOOK" is used. */
+
+void write_0d(FILE* c_file, FILE* header_file, long single, char* varname)
+{
+  fprintf(c_file, "long %s = %ld;\n", varname, single);
+  fprintf(header_file, "extern long %s;\n", varname);
+}
+
+void write_1d(FILE* c_file, FILE* header_file, long array[], long dim, char* varname)
+{
+  fprintf(c_file, "long %s[] = {\n", varname);
+  for (int i = 0; i < dim; ++i)
+    {
+      if (i % 10 == 0)
+       {
+         if (i > 0)
+           fprintf(c_file, "\n");
+         fprintf(c_file, "  ");
+       }
+      fprintf(c_file, "%ld, ", array[i]);
+    }
+  fprintf(c_file, "\n};\n");
+  fprintf(header_file, "extern long %s[%ld];\n", varname, dim);
+}
+
+void write_hints(FILE* c_file, FILE* header_file, long matrix[][5], long dim1, long dim2, char* varname)
+{
+  fprintf(c_file, "long %s[][%ld] = {\n", varname, dim2);
+  for (int i = 0; i < dim1; ++i)
+    {
+      fprintf(c_file, "  {");
+      for (int j = 0; j < dim2; ++j)
+       {
+         fprintf(c_file, "%ld, ", matrix[i][j]);
+       }
+      fprintf(c_file, "},\n");
+    }
+  fprintf(c_file, "};\n");
+  fprintf(header_file, "extern long %s[%ld][%ld];\n", varname, dim1, dim2);
+}
+
+void write_files(FILE* c_file, FILE* header_file)
+{
+  // preprocessor defines for the header
+  fprintf(header_file, "#define RTXSIZ 277\n");
+  fprintf(header_file, "#define CLSMAX 12\n");
+  fprintf(header_file, "#define LOCSIZ 185\n");
+  fprintf(header_file, "#define LINSIZ 12500\n");
+  fprintf(header_file, "#define TRNSIZ 5\n");
+  fprintf(header_file, "#define TABSIZ 330\n");
+  fprintf(header_file, "#define VRBSIZ 35\n");
+  fprintf(header_file, "#define HNTSIZ 20\n");
+  fprintf(header_file, "#define TRVSIZ 885\n");
+  fprintf(header_file, "\n");
+
+  // include the header in the C file
+  fprintf(c_file, "#include \"database.h\"\n");
+  fprintf(c_file, "\n");
+  
+  // content variables
+  write_0d(c_file, header_file, LINUSE, "LINUSE");
+  write_0d(c_file, header_file, TRVS, "TRVS");
+  write_0d(c_file, header_file, CLSSES, "CLSSES");
+  write_0d(c_file, header_file, TRNVLS, "TRNVLS");
+  write_0d(c_file, header_file, TABNDX, "TABNDX");
+  write_0d(c_file, header_file, HNTMAX, "HNTMAX");
+  write_1d(c_file, header_file, PTEXT, 100 + 1, "PTEXT");
+  write_1d(c_file, header_file, RTEXT, RTXSIZ + 1, "RTEXT");
+  write_1d(c_file, header_file, CTEXT, CLSMAX + 1, "CTEXT");
+  write_1d(c_file, header_file, OBJSND, 100 + 1, "OBJSND");
+  write_1d(c_file, header_file, OBJTXT, 100 + 1, "OBJTXT");
+  write_1d(c_file, header_file, STEXT, LOCSIZ + 1, "STEXT");
+  write_1d(c_file, header_file, LTEXT, LOCSIZ + 1, "LTEXT");
+  write_1d(c_file, header_file, COND, LOCSIZ + 1, "COND");
+  write_1d(c_file, header_file, KEY, LOCSIZ + 1, "KEY");
+  write_1d(c_file, header_file, LOCSND, LOCSIZ + 1, "LOCSND");
+  write_1d(c_file, header_file, LINES, LINSIZ + 1, "LINES");
+  write_1d(c_file, header_file, CVAL, CLSMAX + 1, "CVAL");
+  write_1d(c_file, header_file, TTEXT, TRNSIZ + 1, "TTEXT");
+  write_1d(c_file, header_file, TRNVAL, TRNSIZ + 1, "TRNVAL");
+  write_1d(c_file, header_file, TRAVEL, TRVSIZ + 1, "TRAVEL");
+  write_1d(c_file, header_file, KTAB, TABSIZ + 1, "KTAB");
+  write_1d(c_file, header_file, ATAB, TABSIZ + 1, "ATAB");
+  write_1d(c_file, header_file, PLAC, 100 + 1, "PLAC");
+  write_1d(c_file, header_file, FIXD, 100 + 1, "FIXD");
+  write_1d(c_file, header_file, ACTSPK, VRBSIZ + 1, "ACTSPK");
+  write_hints(c_file, header_file, HINTS, HNTSIZ + 1, 5, "HINTS");
+}
+
+int main(int argc, char** argv)
+{
+  argc = argc;
+  argv = argv;
+
+  FILE* database = fopen("adventure.text", "r");
+  read_database(database);
+  fclose(database);
+
+  FILE* c_file = fopen("database.c", "w");
+  FILE* header_file = fopen("database.h", "w");
+  write_files(c_file, header_file);
+  fclose(c_file);
+  fclose(header_file);
+  
+  return(EXIT_SUCCESS);
+}
diff --git a/database/Makefile b/database/Makefile
deleted file mode 100644 (file)
index 18795ed..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-# Makefile for the open-adventure database
-
-OBJS=compile.o
-SOURCES=$(OBJS:.o=.c) adventure.text
-OPTIONS=-ggdb -Wall -std=c99
-
-.c.o:
-       gcc $(OPTIONS) -O $(DBX) -c $<
-
-database: compile
-       ./compile
-       gcc $(OPTIONS) -O $(DBX) -c database.c
-
-compile: $(OBJS)
-
-clean:
-       rm -f $(OBJS) compile database.c database.h
diff --git a/database/adventure.text b/database/adventure.text
deleted file mode 100644 (file)
index 5ec4034..0000000
+++ /dev/null
@@ -1,2295 +0,0 @@
-1
-1      You are standing at the end of a road before a small brick building.
-1      Around you is a forest.  A small stream flows out of the building and
-1      down a gully.
-2      You have walked up a hill, still in the forest.  The road slopes back
-2      down the other side of the hill.  There is a building in the distance.
-3      You are inside a building, a well house for a large spring.
-4      You are in a valley in the forest beside a stream tumbling along a
-4      rocky bed.
-5      The road, which approaches from the east, ends here amid the trees.
-6      The forest thins out here to reveal a steep cliff.  There is no way
-6      down, but a small ledge can be seen to the west across the chasm.
-7      At your feet all the water of the stream splashes into a 2-inch slit
-7      in the rock.  Downstream the streambed is bare rock.
-8      You are in a 20-foot depression floored with bare dirt.  Set into the
-8      dirt is a strong steel grate mounted in concrete.  A dry streambed
-8      leads into the depression.
-9      You are in a small chamber beneath a 3x3 steel grate to the surface.
-9      A low crawl over cobbles leads inward to the west.
-10     You are crawling over cobbles in a low passage.  There is a dim light
-10     at the east end of the passage.
-11     You are in a debris room filled with stuff washed in from the surface.
-11     A low wide passage with cobbles becomes plugged with mud and debris
-11     here, but an awkward canyon leads upward and west.  In the mud someone
-11     has scrawled, "MAGIC WORD XYZZY".
-12     You are in an awkward sloping east/west canyon.
-13     You are in a splendid chamber thirty feet high.  The walls are frozen
-13     rivers of orange stone.  An awkward canyon and a good passage exit
-13     from east and west sides of the chamber.
-14     At your feet is a small pit breathing traces of white mist.  An east
-14     passage ends here except for a small crack leading on.
-15     You are at one end of a vast hall stretching forward out of sight to
-15     the west.  There are openings to either side.  Nearby, a wide stone
-15     staircase leads downward.  The hall is filled with wisps of white mist
-15     swaying to and fro almost as if alive.  A cold wind blows up the
-15     staircase.  There is a passage at the top of a dome behind you.
-16     The crack is far too small for you to follow.  At its widest it is
-16     barely wide enough to admit your foot.
-17     You are on the east bank of a fissure slicing clear across the hall.
-17     The mist is quite thick here, and the fissure is too wide to jump.
-18     This is a low room with a crude note on the wall.  The note says,
-18     "You won't get it up the steps".
-19     You are in the Hall of the Mountain King, with passages off in all
-19     directions.
-20     You are at the bottom of the pit with a broken neck.
-21     You didn't make it.
-22     The dome is unclimbable.
-23     You are at the west end of the Twopit Room.  There is a large hole in
-23     the wall above the pit at this end of the room.
-24     You are at the bottom of the eastern pit in the Twopit Room.  There is
-24     a small pool of oil in one corner of the pit.
-25     You are at the bottom of the western pit in the Twopit Room.  There is
-25     a large hole in the wall about 25 feet above you.
-26     You clamber up the plant and scurry through the hole at the top.
-27     You are on the west side of the fissure in the Hall of Mists.
-28     You are in a low n/s passage at a hole in the floor.  The hole goes
-28     down to an e/w passage.
-29     You are in the south side chamber.
-30     You are in the west side chamber of the Hall of the Mountain King.
-30     A passage continues west and up here.
-31     %!
-32     You can't get by the snake.
-33     You are in a large room, with a passage to the south, a passage to the
-33     west, and a wall of broken rock to the east.  There is a large "Y2" on
-33     a rock in the room's center.
-34     You are in a jumble of rock, with cracks everywhere.
-35     You're at a low window overlooking a huge pit, which extends up out of
-35     sight.  A floor is indistinctly visible over 50 feet below.  Traces of
-35     white mist cover the floor of the pit, becoming thicker to the right.
-35     Marks in the dust around the window would seem to indicate that
-35     someone has been here recently.  Directly across the pit from you and
-35     25 feet away there is a similar window looking into a lighted room.  A
-35     shadowy figure can be seen there peering back at you.
-36     You are in a dirty broken passage.  To the east is a crawl.  To the
-36     west is a large passage.  Above you is a hole to another passage.
-37     You are on the brink of a small clean climbable pit.  A crawl leads
-37     west.
-38     You are in the bottom of a small pit with a little stream, which
-38     enters and exits through tiny slits.
-39     You are in a large room full of dusty rocks.  There is a big hole in
-39     the floor.  There are cracks everywhere, and a passage leading east.
-40     You have crawled through a very low wide passage parallel to and north
-40     of the Hall of Mists.
-41     You are at the west end of the Hall of Mists.  A low wide crawl
-41     continues west and another goes north.  To the south is a little
-41     passage 6 feet off the floor.
-42     You are in a maze of twisty little passages, all alike.
-43     You are in a maze of twisty little passages, all alike.
-44     You are in a maze of twisty little passages, all alike.
-45     You are in a maze of twisty little passages, all alike.
-46     Dead end
-47     Dead end
-48     Dead end
-49     You are in a maze of twisty little passages, all alike.
-50     You are in a maze of twisty little passages, all alike.
-51     You are in a maze of twisty little passages, all alike.
-52     You are in a maze of twisty little passages, all alike.
-53     You are in a maze of twisty little passages, all alike.
-54     Dead end
-55     You are in a maze of twisty little passages, all alike.
-56     Dead end
-57     You are on the brink of a thirty foot pit with a massive orange column
-57     down one wall.  You could climb down here but you could not get back
-57     up.  The maze continues at this level.
-58     Dead end
-59     You have crawled through a very low wide passage parallel to and north
-59     of the Hall of Mists.
-60     You are at the east end of a very long hall apparently without side
-60     chambers.  To the east a low wide crawl slants up.  To the north a
-60     round two foot hole slants down.
-61     You are at the west end of a very long featureless hall.  The hall
-61     joins up with a narrow north/south passage.
-62     You are at a crossover of a high n/s passage and a low e/w one.
-63     Dead end
-64     You are at a complex junction.  A low hands and knees passage from the
-64     north joins a higher crawl from the east to make a walking passage
-64     going west.  There is also a large room above.  The air is damp here.
-65     You are in Bedquilt, a long east/west passage with holes everywhere.
-65     To explore at random select north, south, up, or down.
-66     You are in a room whose walls resemble swiss cheese.  Obvious passages
-66     go west, east, ne, and nw.  Part of the room is occupied by a large
-66     bedrock block.
-67     You are at the east end of the Twopit Room.  The floor here is
-67     littered with thin rock slabs, which make it easy to descend the pits.
-67     There is a path here bypassing the pits to connect passages from east
-67     and west.  There are holes all over, but the only big one is on the
-67     wall directly over the west pit where you can't get to it.
-68     You are in a large low circular chamber whose floor is an immense slab
-68     fallen from the ceiling (Slab Room).  East and west there once were
-68     large passages, but they are now filled with boulders.  Low small
-68     passages go north and south, and the south one quickly bends west
-68     around the boulders.
-69     You are in a secret n/s canyon above a large room.
-70     You are in a secret n/s canyon above a sizable passage.
-71     You are in a secret canyon at a junction of three canyons, bearing
-71     north, south, and se.  The north one is as tall as the other two
-71     combined.
-72     You are in a large low room.  Crawls lead north, se, and sw.
-73     Dead end crawl.
-74     You are in a secret canyon which here runs e/w.  It crosses over a
-74     very tight canyon 15 feet below.  If you go down you may not be able
-74     to get back up.
-75     You are at a wide place in a very tight n/s canyon.
-76     The canyon here becomes too tight to go further south.
-77     You are in a tall e/w canyon.  A low tight crawl goes 3 feet north and
-77     seems to open up.
-78     The canyon runs into a mass of boulders -- dead end.
-79     The stream flows out through a pair of 1 foot diameter sewer pipes.
-79     It would be advisable to use the exit.
-80     You are in a maze of twisty little passages, all alike.
-81     Dead end
-82     Dead end
-83     You are in a maze of twisty little passages, all alike.
-84     You are in a maze of twisty little passages, all alike.
-85     Dead end
-86     Dead end
-87     You are in a maze of twisty little passages, all alike.
-88     You are in a long, narrow corridor stretching out of sight to the
-88     west.  At the eastern end is a hole through which you can see a
-88     profusion of leaves.
-89     There is nothing here to climb.  Use "up" or "out" to leave the pit.
-90     You have climbed up the plant and out of the pit.
-91     You are at the top of a steep incline above a large room.  You could
-91     climb down here, but you would not be able to climb up.  There is a
-91     passage leading back to the north.
-92     You are in the Giant Room.  The ceiling here is too high up for your
-92     lamp to show it.  Cavernous passages lead east, north, and south.  On
-92     the west wall is scrawled the inscription, "FEE FIE FOE FOO" [sic].
-93     The passage here is blocked by a recent cave-in.
-94     You are at one end of an immense north/south passage.
-95     You are in a magnificent cavern with a rushing stream, which cascades
-95     over a sparkling waterfall into a roaring whirlpool which disappears
-95     through a hole in the floor.  Passages exit to the south and west.
-96     You are in the Soft Room.  The walls are covered with heavy curtains,
-96     the floor with a thick pile carpet.  Moss covers the ceiling.
-97     This is the Oriental Room.  Ancient oriental cave drawings cover the
-97     walls.  A gently sloping passage leads upward to the north, another
-97     passage leads se, and a hands and knees crawl leads west.
-98     You are following a wide path around the outer edge of a large cavern.
-98     Far below, through a heavy white mist, strange splashing noises can be
-98     heard.  The mist rises up through a fissure in the ceiling.  The path
-98     exits to the south and west.
-99     You are in an alcove.  A small nw path seems to widen after a short
-99     distance.  An extremely tight tunnel leads east.  It looks like a very
-99     tight squeeze.  An eerie light can be seen at the other end.
-100    You're in a small chamber lit by an eerie green light.  An extremely
-100    narrow tunnel exits to the west.  A dark corridor leads ne.
-101    You're in the dark-room.  A corridor leading south is the only exit.
-102    You are in an arched hall.  A coral passage once continued up and east
-102    from here, but is now blocked by debris.  The air smells of sea water.
-103    You're in a large room carved out of sedimentary rock.  The floor and
-103    walls are littered with bits of shells imbedded in the stone.  A
-103    shallow passage proceeds downward, and a somewhat steeper one leads
-103    up.  A low hands and knees passage enters from the south.
-104    You are in a long sloping corridor with ragged sharp walls.
-105    You are in a cul-de-sac about eight feet across.
-106    You are in an anteroom leading to a large passage to the east.  Small
-106    passages go west and up.  The remnants of recent digging are evident.
-106    A sign in midair here says "Cave under construction beyond this point.
-106    Proceed at own risk.  [Witt Construction Company]"
-107    You are in a maze of twisty little passages, all different.
-108    You are at Witt's End.  Passages lead off in *ALL* directions.
-109    You are in a north/south canyon about 25 feet across.  The floor is
-109    covered by white mist seeping in from the north.  The walls extend
-109    upward for well over 100 feet.  Suspended from some unseen point far
-109    above you, an enormous two-sided mirror is hanging parallel to and
-109    midway between the canyon walls.  (The mirror is obviously provided
-109    for the use of the dwarves who, as you know, are extremely vain.)  A
-109    small window can be seen in either wall, some fifty feet up.
-110    You're at a low window overlooking a huge pit, which extends up out of
-110    sight.  A floor is indistinctly visible over 50 feet below.  Traces of
-110    white mist cover the floor of the pit, becoming thicker to the left.
-110    Marks in the dust around the window would seem to indicate that
-110    someone has been here recently.  Directly across the pit from you and
-110    25 feet away there is a similar window looking into a lighted room.  A
-110    shadowy figure can be seen there peering back at you.
-111    A large stalactite extends from the roof and almost reaches the floor
-111    below.  You could climb down it, and jump from it to the floor, but
-111    having done so you would be unable to reach it to climb back up.
-112    You are in a little maze of twisting passages, all different.
-113    You are at the edge of a large underground reservoir.  An opaque cloud
-113    of white mist fills the room and rises rapidly upward.  The lake is
-113    fed by a stream, which tumbles out of a hole in the wall about 10 feet
-113    overhead and splashes noisily into the water somewhere within the
-113    mist.  There is a passage going back toward the south.
-114    Dead end
-115    You are at the northeast end of an immense room, even larger than the
-115    Giant Room.  It appears to be a repository for the "Adventure"
-115    program.  Massive torches far overhead bathe the room with smoky
-115    yellow light.  Scattered about you can be seen a pile of bottles (all
-115    of them empty), a nursery of young beanstalks murmuring quietly, a bed
-115    of oysters, a bundle of black rods with rusty stars on their ends, and
-115    a collection of brass lanterns.  Off to one side a great many dwarves
-115    are sleeping on the floor, snoring loudly.  A notice nearby reads: "Do
-115    not disturb the dwarves!"  An immense mirror is hanging against one
-115    wall, and stretches to the other end of the room, where various other
-115    sundry objects can be glimpsed dimly in the distance.
-116    You are at the southwest end of the repository.  To one side is a pit
-116    full of fierce green snakes.  On the other side is a row of small
-116    wicker cages, each of which contains a little sulking bird.  In one
-116    corner is a bundle of black rods with rusty marks on their ends.  A
-116    large number of velvet pillows are scattered about on the floor.  A
-116    vast mirror stretches off to the northeast.  At your feet is a large
-116    steel grate, next to which is a sign that reads, "Treasure Vault.
-116    Keys in main office."
-117    You are on one side of a large, deep chasm.  A heavy white mist rising
-117    up from below obscures all view of the far side.  A sw path leads away
-117    from the chasm into a winding corridor.
-118    You are in a long winding corridor sloping out of sight in both
-118    directions.
-119    You are in a secret canyon which exits to the north and east.
-120    You are in a secret canyon which exits to the north and east.
-121    You are in a secret canyon which exits to the north and east.
-122    You are on the far side of the chasm.  A ne path leads away from the
-122    chasm on this side.
-123    You're in a long east/west corridor.  A faint rumbling noise can be
-123    heard in the distance.
-124    The path forks here.  The left fork leads northeast.  A dull rumbling
-124    seems to get louder in that direction.  The right fork leads southeast
-124    down a gentle slope.  The main corridor enters from the west.
-125    The walls are quite warm here.  From the north can be heard a steady
-125    roar, so loud that the entire cave seems to be trembling.  Another
-125    passage leads south, and a low crawl goes east.
-126    You are on the edge of a breath-taking view.  Far below you is an
-126    active volcano, from which great gouts of molten lava come surging
-126    out, cascading back down into the depths.  The glowing rock fills the
-126    farthest reaches of the cavern with a blood-red glare, giving every-
-126    thing an eerie, macabre appearance.  The air is filled with flickering
-126    sparks of ash and a heavy smell of brimstone.  The walls are hot to
-126    the touch, and the thundering of the volcano drowns out all other
-126    sounds.  Embedded in the jagged roof far overhead are myriad twisted
-126    formations composed of pure white alabaster, which scatter the murky
-126    light into sinister apparitions upon the walls.  To one side is a deep
-126    gorge, filled with a bizarre chaos of tortured rock which seems to
-126    have been crafted by the devil himself.  An immense river of fire
-126    crashes out from the depths of the volcano, burns its way through the
-126    gorge, and plummets into a bottomless pit far off to your left.  To
-126    the right, an immense geyser of blistering steam erupts continuously
-126    from a barren island in the center of a sulfurous lake, which bubbles
-126    ominously.  The far right wall is aflame with an incandescence of its
-126    own, which lends an additional infernal splendor to the already
-126    hellish scene.  A dark, foreboding passage exits to the south.
-127    You are in a small chamber filled with large boulders.  The walls are
-127    very warm, causing the air in the room to be almost stifling from the
-127    heat.  The only exit is a crawl heading west, through which is coming
-127    a low rumbling.
-128    You are walking along a gently sloping north/south passage lined with
-128    oddly shaped limestone formations.
-129    You are standing at the entrance to a large, barren room.  A notice
-129    above the entrance reads:  "Caution!  Bear in room!"
-130    You are inside a barren room.  The center of the room is completely
-130    empty except for some dust.  Marks in the dust lead away toward the
-130    far end of the room.  The only exit is the way you came in.
-131    You are in a maze of twisting little passages, all different.
-132    You are in a little maze of twisty passages, all different.
-133    You are in a twisting maze of little passages, all different.
-134    You are in a twisting little maze of passages, all different.
-135    You are in a twisty little maze of passages, all different.
-136    You are in a twisty maze of little passages, all different.
-137    You are in a little twisty maze of passages, all different.
-138    You are in a maze of little twisting passages, all different.
-139    You are in a maze of little twisty passages, all different.
-140    Dead end
-141    You are in a long, rough-hewn, north/south corridor.
-142    There is no way to go that direction.
-143    You are in a large chamber with passages to the west and north.
-144    You are in the ogre's storeroom.  The only exit is to the south.
-145    You are wandering aimlessly through the forest.
-146    You are wandering aimlessly through the forest.
-147    You are wandering aimlessly through the forest.
-148    You are wandering aimlessly through the forest.
-149    You are wandering aimlessly through the forest.
-150    You are wandering aimlessly through the forest.
-151    You are wandering aimlessly through the forest.
-152    You are wandering aimlessly through the forest.
-153    You are wandering aimlessly through the forest.
-154    You are wandering aimlessly through the forest.
-155    You are wandering aimlessly through the forest.
-156    You are wandering aimlessly through the forest.
-157    You are wandering aimlessly through the forest.
-158    You are wandering aimlessly through the forest.
-159    You are wandering aimlessly through the forest.
-160    You are wandering aimlessly through the forest.
-161    You are wandering aimlessly through the forest.
-162    You are wandering aimlessly through the forest.
-163    You are wandering aimlessly through the forest.
-164    You are wandering aimlessly through the forest.
-165    You are wandering aimlessly through the forest.
-166    You are wandering aimlessly through the forest.
-167    You are on a small ledge on one face of a sheer cliff.  There are no
-167    paths away from the ledge.  Across the chasm is a small clearing
-167    surrounded by forest.
-168    You are walking across the bottom of the reservoir.  Walls of water
-168    rear up on either side.  The roar of the water cascading past is
-168    nearly deafening, and the mist is so thick you can barely see.
-169    You are at the northern edge of the reservoir.  A northwest passage
-169    leads sharply up from here.
-170    You are scrambling along a treacherously steep, rocky passage.
-171    You are on a very steep incline, which widens at it goes upward.
-172    You are at the base of a nearly vertical cliff.  There are some
-172    slim footholds which would enable you to climb up, but it looks
-172    extremely dangerous.  Here at the base of the cliff lie the remains
-172    of several earlier adventurers who apparently failed to make it.
-173    You are climbing along a nearly vertical cliff.
-174    Just as you reach the top, your foot slips on a loose rock and you
-174    tumble several hundred feet to join the other unlucky adventurers.
-175    Just as you reach the top, your foot slips on a loose rock and you
-175    make one last desperate grab.  Your luck holds, as does your grip.
-175    With an enormous heave, you lift yourself to the ledge above.
-176    You are on a small ledge at the top of a nearly vertical cliff.
-176    There is a low crawl leading off to the northeast.
-177    You have reached a dead end.
-178    There is now one more gruesome aspect to the spectacular vista.
-179    >>Foof!<<
-180    >>Foof!<<
-181    >>Foof!<<
-182    >>Foof!<<
-183    >>Foof!<<
-184    >>Foof!<<
--1
-2
-1      You're in front of building.
-2      You're at hill in road.
-3      You're inside building.
-4      You're in valley.
-5      You're at end of road.
-6      You're at cliff.
-7      You're at slit in streambed.
-8      You're outside grate.
-9      You're below the grate.
-10     You're in cobble crawl.
-11     You're in debris room.
-13     You're in bird chamber.
-14     You're at top of small pit.
-15     You're in Hall of Mists.
-17     You're on east bank of fissure.
-18     You're in nugget-of-gold room.
-19     You're in Hall of Mt King.
-23     You're at west end of Twopit Room.
-24     You're in east pit.
-25     You're in west pit.
-27     You're on west bank of fissure.
-28     You're in n/s passage above e/w passage.
-30     You're in the west side chamber.
-33     You're at "Y2".
-35     You're at window on pit.
-36     You're in dirty passage.
-37     You're at brink of small pit.
-38     You're at bottom of pit with stream.
-39     You're in dusty rock room.
-41     You're at west end of Hall of Mists.
-57     You're at brink of pit.
-60     You're at east end of long hall.
-61     You're at west end of long hall.
-64     You're at complex junction.
-65     You're in Bedquilt.
-66     You're in Swiss Cheese Room.
-67     You're at east end of Twopit Room.
-68     You're in Slab Room.
-71     You're at junction of three secret canyons.
-72     You're in large low room.
-74     You're in secret e/w canyon above tight canyon.
-88     You're in narrow corridor.
-91     You're at steep incline above large room.
-92     You're in Giant Room.
-95     You're in cavern with waterfall.
-96     You're in Soft Room.
-97     You're in Oriental Room.
-98     You're in misty cavern.
-99     You're in alcove.
-100    You're in Plover Room.
-101    You're in dark-room.
-102    You're in arched hall.
-103    You're in Shell Room.
-106    You're in anteroom.
-108    You're at Witt's End.
-109    You're in Mirror Canyon.
-110    You're at window on pit.
-111    You're at top of stalactite.
-113    You're at reservoir.
-115    You're at ne end.
-116    You're at sw end.
-117    You're on sw side of chasm.
-118    You're in sloping corridor.
-122    You're on ne side of chasm.
-123    You're in corridor.
-124    You're at fork in path.
-125    You're at junction with warm walls.
-126    You're at breath-taking view.
-127    You're in Chamber of Boulders.
-128    You're in limestone passage.
-129    You're in front of Barren Room.
-130    You're in Barren Room.
-167    You're on ledge.
-168    You're at bottom of reservoir.
-169    You're north of reservoir.
-172    You're at base of cliff.
-176    You're at top of cliff.
--1
-3
-1      2       2       44      29
-1      3       3       12      19      43
-1      4       5       13      14      46      30
-1      145     6       45
-1      8       63
-2      1       12      43
-2      5       44
-2      164     45
-2      157     46      6
-2      580     30
-3      1       11      32      44
-3      179     62
-3      181     65
-3      79      5       14
-4      1       4       12      45
-4      150     43      6
-4      156     44
-4      7       5       46      30
-4      8       63
-4      745     14
-5      2       2       43      29
-5      1       12
-5      158     46      6
-5      159     44
-5      165     45
-6      161     46      6
-6      163     43
-6      21      39
-7      1       12
-7      4       4       45
-7      150     43      6
-7      154     44
-7      8       5       16      46      63
-7      595     60      14      30      19      3
-8      151     43      6
-8      154     46
-8      153     44
-8      1       12
-8      7       4       13      45
-8      303009  3       19      30
-8      593     3
-9      303008  11      29
-9      593     11
-9      10      17      18      19      44
-9      14      31
-9      11      51
-10     9       11      20      21      43
-10     11      19      22      44      51
-10     14      31
-11     303008  63
-11     9       64
-11     10      17      18      23      24      43
-11     12      25      19      29      44
-11     180     62
-11     14      31
-12     303008  63
-12     9       64
-12     11      30      43      51
-12     13      19      29      44
-12     14      31
-13     303008  63
-13     9       64
-13     11      51
-13     12      25      43
-13     14      23      31      44
-14     303008  63
-14     9       64
-14     11      51
-14     13      23      43
-14     150020  30      31      34
-14     15      30
-14     16      33      44
-15     18      36      46
-15     17      7       38      44
-15     19      10      30      45
-15     150022  29      31      34      35      23      43
-15     14      29
-15     34      55
-16     14      1
-17     15      38      43
-17     312596  39
-17     412021  7
-17     412597  41      42      44      69
-17     27      41
-18     15      38      11      45
-19     15      10      29      43
-19     311028  45      37
-19     311029  46      36
-19     311030  44      7
-19     32      45
-19     35074   49
-19     211032  49
-19     74      66
-20     0       1
-21     0       1
-22     15      1
-23     67      43      42
-23     68      44      61
-23     25      30      31
-23     648     52
-24     67      29      11
-25     23      29      11
-25     524031  56
-25     26      56
-26     88      1
-27     312596  39
-27     412021  7
-27     412597  41      42      43      69
-27     17      41
-27     40      45
-27     41      44
-28     19      38      11      46
-28     33      45      55
-28     36      30      52
-29     19      38      11      45
-30     19      38      11      43
-30     62      44      29
-31     424089  1
-31     90      1
-32     19      1
-33     182     65
-33     28      46
-33     34      43      53      54
-33     35      44
-33     159302  71
-33     183     71
-34     33      30      55
-34     15      29
-35     33      43      55
-35     20      39
-36     37      43      17
-36     28      29      52
-36     39      44
-36     65      70
-37     36      44      17
-37     38      30      31      56
-38     37      56      29      11
-38     595     60      14      30      4       5       3       19
-39     36      43      23
-39     64      30      52      58
-39     65      70
-40     41      1
-41     42      46      29      23      56
-41     27      43
-41     59      45
-41     60      44      17
-42     41      29
-42     42      45
-42     43      43
-42     45      46
-42     80      44
-43     42      44
-43     44      46
-43     45      43
-44     43      43
-44     48      30
-44     50      46
-44     82      45
-45     42      44
-45     43      45
-45     46      43
-45     47      46
-45     87      29      30
-46     45      44      11
-47     45      43      11
-48     44      29      11
-49     50      43
-49     51      44
-50     44      43
-50     49      44
-50     51      30
-50     52      46
-51     49      44
-51     50      29
-51     52      43
-51     53      46
-52     50      44
-52     51      43
-52     52      46
-52     53      29
-52     55      45
-52     86      30
-53     51      44
-53     52      45
-53     54      46
-54     53      44      11
-55     52      44
-55     55      45
-55     56      30
-55     57      43
-56     55      29      11
-57     13      30      56
-57     55      44
-57     58      46
-57     83      45
-57     84      43
-58     57      43      11
-59     27      1
-60     41      43      29      17
-60     61      44
-60     62      45      30      52
-61     60      43
-61     62      45
-61     100107  46
-62     60      44
-62     63      45
-62     30      43
-62     61      46
-63     62      46      11
-64     39      29      56      59
-64     65      44      70
-64     103     45      74
-64     106     43
-65     64      43
-65     66      44
-65     65556   46
-65     68      61
-65     60556   29
-65     70070   29
-65     39      29
-65     50556   45
-65     75072   45
-65     71      45
-65     65556   30
-65     106     30
-66     65      47
-66     67      44
-66     80556   46
-66     77      25
-66     96      43
-66     50556   50
-66     97      72
-67     66      43
-67     23      44      42
-67     24      30      31
-68     23      46
-68     69      29      56
-68     65      45
-69     68      30      61
-69     331120  46
-69     119     46
-69     109     45
-69     113     75
-70     71      45
-70     65      30      23
-70     111     46
-71     65      48
-71     70      46
-71     110     45
-72     65      70
-72     118     49
-72     73      45
-72     97      48      72
-73     72      46      17      11
-74     19      43
-74     331120  44
-74     121     44
-74     75      30
-75     76      46
-75     77      45
-76     75      45
-77     75      43
-77     78      44
-77     66      45      17
-78     77      46
-79     3       1
-80     42      45
-80     80      44
-80     80      46
-80     81      43
-81     80      44      11
-82     44      46      11
-83     57      46
-83     84      43
-83     85      44
-84     57      45
-84     83      44
-84     114     50
-85     83      43      11
-86     52      29      11
-87     45      29      30
-88     25      30      56      43
-88     20      39
-88     92      44      27
-89     25      1
-90     23      1
-91     95      45      73      23
-91     72      30      56
-92     88      46
-92     93      43
-92     94      45
-93     92      46      27      11
-94     92      46      27      23
-94     309095  45      3       73
-94     611     45
-95     94      46      11
-95     92      27
-95     91      44
-96     66      44      11
-97     66      48
-97     72      44      17
-97     98      29      45      73
-98     97      46      72
-98     99      44
-99     98      50      73
-99     301     43      23
-99     100     43
-100    301     44      23      11
-100    99      44
-100    159302  71
-100    184     71
-100    101     47      22
-101    100     46      71      11
-102    103     30      74      11
-103    102     29      38
-103    104     30
-103    114618  46
-103    115619  46
-103    64      46
-104    103     29      74
-104    105     30
-105    104     29      11
-105    103     74
-106    64      29
-106    65      44
-106    108     43
-107    131     46
-107    132     49
-107    133     47
-107    134     48
-107    135     29
-107    136     50
-107    137     43
-107    138     44
-107    139     45
-107    61      30
-108    95556   43      45      46      47      48      49      50      29      30
-108    106     43
-108    626     44
-109    69      46
-109    113     45      75
-110    71      44
-110    20      39
-111    70      45
-111    40050   30      39      56
-111    50053   30
-111    45      30
-112    131     49
-112    132     45
-112    133     43
-112    134     50
-112    135     48
-112    136     47
-112    137     44
-112    138     30
-112    139     29
-112    140     46
-113    109     46      11
-113    445552  45      42      69
-113    168     45
-114    84      48
-115    116     49
-116    115     47
-116    593     30
-117    118     49
-117    233660  41      42      69      47
-117    332661  41
-117    303     41
-117    332021  39
-117    596     39
-118    72      30
-118    117     29
-119    69      45      11
-119    653     43      7
-120    69      45
-120    74      43
-121    74      43      11
-121    653     45      7
-122    123     47
-122    233660  41      42      69      49
-122    303     41
-122    596     39
-122    124     15
-122    126     28
-122    129     40
-123    122     44
-123    124     43      15
-123    126     28
-123    129     40
-124    123     44
-124    125     47      36
-124    128     48      37      30
-124    126     28
-124    129     40
-125    124     46      15
-125    126     45      28
-125    127     43      17
-126    125     46      23      11
-126    124     15
-126    610     30
-126    178     39
-127    125     44      11      17
-127    124     15
-127    126     28
-128    124     45      29      15
-128    129     46      30      40
-128    126     28
-129    128     44      29
-129    124     15
-129    130     43      19      40      3
-129    126     28
-130    129     44      11
-130    124     15
-130    126     28
-131    107     44
-131    132     48
-131    133     50
-131    134     49
-131    135     47
-131    136     29
-131    137     30
-131    138     45
-131    139     46
-131    112     43
-132    107     50
-132    131     29
-132    133     45
-132    134     46
-132    135     44
-132    136     49
-132    137     47
-132    138     43
-132    139     30
-132    112     48
-133    107     29
-133    131     30
-133    132     44
-133    134     47
-133    135     49
-133    136     43
-133    137     45
-133    138     50
-133    139     48
-133    112     46
-134    107     47
-134    131     45
-134    132     50
-134    133     48
-134    135     43
-134    136     30
-134    137     46
-134    138     29
-134    139     44
-134    112     49
-135    107     45
-135    131     48
-135    132     30
-135    133     46
-135    134     43
-135    136     44
-135    137     49
-135    138     47
-135    139     50
-135    112     29
-136    107     43
-136    131     44
-136    132     29
-136    133     49
-136    134     30
-136    135     46
-136    137     50
-136    138     48
-136    139     47
-136    112     45
-137    107     48
-137    131     47
-137    132     46
-137    133     30
-137    134     29
-137    135     50
-137    136     45
-137    138     49
-137    139     43
-137    112     44
-138    107     30
-138    131     43
-138    132     47
-138    133     29
-138    134     44
-138    135     45
-138    136     46
-138    137     48
-138    139     49
-138    112     50
-139    107     49
-139    131     50
-139    132     43
-139    133     44
-139    134     45
-139    135     30
-139    136     48
-139    137     29
-139    138     46
-139    112     47
-140    112     45      11
-140    338141  46
-140    142     46
-141    140     45
-141    143     46
-142    140     1
-143    141     44
-143    241560  45
-143    144     45
-144    143     46      11
-145    1       43
-145    157     44
-145    146     45
-145    147     46
-146    145     43
-146    163     44
-146    147     45
-146    162     46
-147    148     43      44
-147    146     45
-147    145     46
-148    147     43      45
-148    149     44      46
-149    148     43      45
-149    151     44
-149    150     46
-150    149     43
-150    151     44
-150    4       45
-150    7       46
-151    149     43
-151    150     44
-151    8       45
-151    152     46
-152    153     43
-152    155     44
-152    166     45
-152    151     46
-153    155     43
-153    152     44
-153    154     45
-153    8       46
-154    7       43
-154    155     44
-154    153     45
-154    8       46
-155    154     43
-155    152     44
-155    166     45
-155    153     46
-156    157     43
-156    158     44
-156    166     45
-156    4       46
-157    145     43
-157    156     44
-157    164     45
-157    2       46
-158    5       43
-158    160     44
-158    159     45
-158    156     46
-159    160     43
-159    166     44
-159    5       45
-159    158     46
-160    161     43      45
-160    158     44
-160    159     46
-161    162     43
-161    160     44      46
-161    6       45
-162    163     43
-162    161     44
-162    146     45
-162    165     46
-163    146     43
-163    162     44
-163    6       45
-163    164     46
-164    2       43
-164    165     44
-164    163     45
-164    157     46
-165    164     43
-165    5       44
-165    162     45
-165    165     46
-166    152     43
-166    155     44
-166    159     45
-166    156     46
-167    21      39
-168    169     45
-168    113     46
-169    445552  46      42      69
-169    168     46
-169    170     50      29      11
-170    171     29      50
-170    169     30      48
-171    170     30      48
-171    172     29      50
-172    171     30      48
-172    173     29      56
-173    172     30
-173    146175  29
-173    174     29
-174    0       1
-175    176     1
-176    173     56      30
-176    177     47      17
-177    176     49      11      17
-178    0       1
-179    11      1
-180    3       1
-181    33      1
-182    3       1
-183    100     1
-184    33      1
--1
-4
-2      ROAD
-2      HILL
-3      ENTER
-4      UPSTR
-5      DOWNS
-6      FORES
-7      FORWA
-7      CONTI
-7      ONWAR
-8      BACK
-8      RETUR
-8      RETRE
-9      VALLE
-10     STAIR
-11     OUT
-11     OUTSI
-11     EXIT
-11     LEAVE
-12     BUILD
-12     HOUSE
-13     GULLY
-14     STREA
-15     FORK
-16     BED
-17     CRAWL
-18     COBBL
-19     INWAR
-19     INSID
-19     IN
-20     SURFA
-21     NULL
-21     NOWHE
-22     DARK
-23     PASSA
-23     TUNNE
-24     LOW
-25     CANYO
-26     AWKWA
-27     GIANT
-28     VIEW
-29     UPWAR
-29     UP
-29     U
-29     ABOVE
-29     ASCEN
-30     D
-30     DOWNW
-30     DOWN
-30     DESCE
-31     PIT
-32     OUTDO
-33     CRACK
-34     STEPS
-35     DOME
-36     LEFT
-37     RIGHT
-38     HALL
-39     JUMP
-40     BARRE
-41     OVER
-42     ACROS
-43     EAST
-43     E
-44     WEST
-44     W
-45     NORTH
-45     N
-46     SOUTH
-46     S
-47     NE
-48     SE
-49     SW
-50     NW
-51     DEBRI
-52     HOLE
-53     WALL
-54     BROKE
-55     Y2
-56     CLIMB
-57     LOOK
-57     EXAMI
-57     TOUCH
-57     DESCR
-58     FLOOR
-59     ROOM
-60     SLIT
-61     SLAB
-61     SLABR
-62     XYZZY
-63     DEPRE
-64     ENTRA
-65     PLUGH
-66     SECRE
-67     CAVE
-69     CROSS
-70     BEDQU
-71     PLOVE
-72     ORIEN
-73     CAVER
-74     SHELL
-75     RESER
-76     MAIN
-76     OFFIC
-1001   KEYS
-1001   KEY
-1002   LAMP
-1002   LANTE
-1003   GRATE
-1004   CAGE
-1005   ROD
-1006   ROD     (MUST BE NEXT OBJECT AFTER "REAL" ROD)
-1007   STEPS
-1008   BIRD
-1009   DOOR
-1010   PILLO
-1010   VELVE
-1011   SNAKE
-1012   FISSU
-1013   TABLE
-1014   CLAM
-1015   OYSTE
-1016   MAGAZ
-1016   ISSUE
-1016   SPELU
-1016   "SPEL
-1017   DWARF
-1017   DWARV
-1018   KNIFE
-1018   KNIVE
-1019   FOOD
-1019   RATIO
-1020   BOTTL
-1020   JAR
-1021   WATER
-1021   H2O
-1022   OIL
-1023   MIRRO
-1024   PLANT
-1024   BEANS
-1025   PLANT   (MUST BE NEXT OBJECT AFTER "REAL" PLANT)
-1026   STALA
-1027   SHADO
-1027   FIGUR
-1027   WINDO   (SAME AS FIGURE)
-1028   AXE
-1029   DRAWI
-1030   PIRAT
-1030   GENIE
-1030   DJINN
-1031   DRAGO
-1032   CHASM
-1033   TROLL
-1034   TROLL   (MUST BE NEXT OBJECT AFTER "REAL" TROLL)
-1035   BEAR
-1036   MESSA
-1037   VOLCA
-1037   GEYSE   (SAME AS VOLCANO)
-1038   MACHI
-1038   VENDI
-1039   BATTE
-1040   CARPE
-1040   MOSS
-1040   CURTA   (SAME AS CARPET)
-1041   OGRE
-1042   URN
-1043   CAVIT
-1044   BLOOD
-1045   RESER   (VERB OVERRIDES)
-1046   APPEN
-1046   LEPOR
-1047   MUD
-1048   NOTE
-1049   SIGN
-1050   GOLD
-1050   NUGGE
-1051   DIAMO
-1052   SILVE
-1052   BARS
-1053   JEWEL
-1054   COINS
-1055   CHEST
-1055   BOX
-1055   TREAS
-1056   EGGS
-1056   EGG
-1056   NEST
-1057   TRIDE
-1058   VASE
-1058   MING
-1058   SHARD
-1058   POTTE
-1059   EMERA
-1060   PLATI
-1060   PYRAM
-1061   PEARL
-1062   RUG
-1062   PERSI
-1063   SPICE
-1064   CHAIN
-1065   RUBY
-1066   JADE
-1066   NECKL
-1067   AMBER
-1067   GEMST
-1068   SAPPH
-1069   EBONY
-1069   STATU
-2001   CARRY
-2001   TAKE
-2001   KEEP
-2001   CATCH
-2001   STEAL
-2001   CAPTU
-2001   GET
-2001   TOTE
-2001   SNARF
-2002   DROP
-2002   RELEA
-2002   FREE
-2002   DISCA
-2002   DUMP
-2003   SAY
-2003   CHANT
-2003   SING
-2003   UTTER
-2003   MUMBL
-2004   UNLOC
-2004   OPEN
-2005   NOTHI
-2006   LOCK
-2006   CLOSE
-2007   LIGHT
-2007   ON
-2008   EXTIN
-2008   OFF
-2009   WAVE
-2009   SHAKE
-2009   SWING
-2010   CALM
-2010   PLACA
-2010   TAME
-2011   WALK
-2011   RUN
-2011   TRAVE
-2011   GO
-2011   PROCE
-2011   CONTI
-2011   EXPLO
-2011   FOLLO
-2011   TURN
-2012   ATTAC
-2012   KILL
-2012   FIGHT
-2012   HIT
-2012   STRIK
-2012   SLAY
-2013   POUR
-2014   EAT
-2014   DEVOU
-2015   DRINK
-2016   RUB
-2017   THROW
-2017   TOSS
-2018   QUIT
-2019   FIND
-2019   WHERE
-2020   INVEN
-2021   FEED
-2022   FILL
-2023   BLAST
-2023   DETON
-2023   IGNIT
-2023   BLOWU
-2024   SCORE
-2025   FEE
-2025   FIE
-2025   FOE
-2025   FOO
-2025   FUM
-2026   BRIEF
-2027   READ
-2027   PERUS
-2028   BREAK
-2028   SHATT
-2028   SMASH
-2029   WAKE
-2029   DISTU
-2030   SUSPE
-2030   PAUSE
-2030   SAVE
-2031   RESUM
-2031   RESTA
-2032   FLY
-2033   LISTE
-2034   Z'ZZZ   (GETS REPLACED)
-3001   FEE
-3002   FIE
-3003   FOE
-3004   FOO
-3005   FUM
-3013   THANK
-3050   SESAM
-3050   OPENS
-3050   ABRA
-3050   ABRAC
-3050   SHAZA
-3050   HOCUS
-3050   POCUS
-3051   HELP
-3051   ?
-3054   NO
-3064   TREE
-3064   TREES
-3066   DIG
-3066   EXCAV
-3068   LOST
-3069   MIST
-3079   FUCK
-3139   STOP
-3142   INFO
-3142   INFOR
-3147   SWIM
-3246   WIZAR
-3271   YES
-3275   NEWS
--1
-5
-1      Set of keys
-000    There are some keys on the ground here.
-2      Brass lantern
-000    There is a shiny brass lamp nearby.
-100    There is a lamp shining nearby.
-3      *grate
-000    The grate is locked.
-100    The grate is open.
-4      Wicker cage
-000    There is a small wicker cage discarded nearby.
-5      Black rod
-000    A three foot black rod with a rusty star on an end lies nearby.
-6      Black rod
-000    A three foot black rod with a rusty mark on an end lies nearby.
-7      *steps
-000    Rough stone steps lead down the pit.
-100    Rough stone steps lead up the dome.
-8      Little bird in cage
-000    A cheerful little bird is sitting here singing.
-100    There is a little bird in the cage.
-200    A cheerful little bird is sitting here singing.
-300    The bird's singing is quite melodious.
-400    The bird does not seem inclined to sing while in the cage.
-500    It almost seems as though the bird is trying to tell you something.
-600    To your surprise, you can understand the bird's chirping; it is
-600    singing about the joys of its forest home.
-700    The bird does not seem inclined to sing while in the cage.
-800    The bird is singing to you in gratitude for your having returned it to
-800    its home.  In return, it informs you of a magic word which it thinks
-800    you may find useful somewhere near the Hall of Mists.  The magic word
-800    changes frequently, but for now the bird believes it is "%W".  You
-800    thank the bird for this information, and it flies off into the forest.
-9      *rusty door
-000    The way north is barred by a massive, rusty, iron door.
-100    The way north leads through a massive, rusty, iron door.
-10     Velvet pillow
-000    A small velvet pillow lies on the floor.
-11     *snake
-000    A huge green fierce snake bars the way!
-100    %!  (chased away)
-200    The snake is hissing venomously.
-12     *fissure
-000    %!
-100    A crystal bridge now spans the fissure.
-200    The crystal bridge has vanished!
-13     *stone tablet
-000    A massive stone tablet imbedded in the wall reads:
-000    "Congratulations on bringing light into the dark-room!"
-100    "Congratulations on bringing light into the dark-room!"
-14     Giant clam  >GRUNT!<
-000    There is an enormous clam here with its shell tightly closed.
-100    The clam is as tight-mouthed as a, er, clam.
-15     Giant oyster  >GROAN!<
-000    There is an enormous oyster here with its shell tightly closed.
-100    Interesting.  There seems to be something written on the underside of
-100    the oyster.
-200    Even though it's an oyster, the critter's as tight-mouthed as a clam.
-300    It says the same thing it did before.  Hm, maybe it's a pun?
-16     "Spelunker Today"
-000    There are a few recent issues of "Spelunker Today" magazine here.
-100    I'm afraid the magazine is written in dwarvish.  But pencilled on one
-100    cover you see, "Please leave the magazines at the construction site."
-19     Tasty food
-000    There is food here.
-20     Small bottle
-000    There is a bottle of water here.
-100    There is an empty bottle here.
-200    There is a bottle of oil here.
-21     Water in the bottle
-22     Oil in the bottle
-23     *mirror
-000    %!
-24     *plant
-000    There is a tiny little plant in the pit, murmuring "water, water, ..."
-100    There is a 12-foot-tall beanstalk stretching up out of the pit,
-100    bellowing "WATER!! WATER!!"
-200    There is a gigantic beanstalk stretching all the way up to the hole.
-300    The plant spurts into furious growth for a few seconds.
-400    The plant grows explosively, almost filling the bottom of the pit.
-500    You've over-watered the plant!  It's shriveling up!  And now . . .
-600    The plant continues to ask plaintively for water.
-700    The plant continues to demand water.
-800    The plant now maintains a contented silence.
-25     *phony plant (seen in Twopit Room only when tall enough)
-000    %!
-100    The top of a 12-foot-tall beanstalk is poking out of the west pit.
-200    There is a huge beanstalk growing out of the west pit up to the hole.
-26     *stalactite
-000    %!
-27     *shadowy figure and/or window
-000    The shadowy figure seems to be trying to attract your attention.
-28     Dwarf's axe
-000    There is a little axe here.
-100    There is a little axe lying beside the bear.
-29     *cave drawings
-000    %!
-30     *pirate/genie
-000    %!  (never present)
-31     *dragon
-000    A huge green fierce dragon bars the way!
-100    The blood-specked body of a huge green dead dragon lies to one side.
-200    The body of a huge green dead dragon is lying off to one side.
-300    Congratulations!  You have just vanquished a dragon with your bare
-300    hands!  (Unbelievable, isn't it?)
-400    The dragon's ominous hissing does not bode well for you.
-500    The dragon is, not surprisingly, silent.
-600    The dragon is, not surprisingly, silent.
-32     *chasm
-000    A rickety wooden bridge extends across the chasm, vanishing into the
-000    mist.  A notice posted on the bridge reads, "Stop! Pay troll!"
-100    The wreckage of a bridge (and a dead bear) can be seen at the bottom
-100    of the chasm.
-33     *troll
-000    A burly troll stands by the bridge and insists you throw him a
-000    treasure before you may cross.
-100    The troll steps out from beneath the bridge and blocks your way.
-200    %!  (chased away)
-300    The troll sounds quite adamant in his demand for a treasure.
-34     *phony troll
-000    The troll is nowhere to be seen.
-35     %!  (bear uses rtext 141)
-000    There is a ferocious cave bear eying you from the far end of the room!
-100    There is a gentle cave bear sitting placidly in one corner.
-200    There is a contented-looking bear wandering about nearby.
-300    %!  (dead)
-36     *message in second maze
-000    There is a message scrawled in the dust in a flowery script, reading:
-000    "This is not the maze where the pirate leaves his treasure chest."
-100    "This is not the maze where the pirate leaves his treasure chest."
-37     *volcano and/or geyser
-000    %!
-38     *vending machine
-000    There is a massive and somewhat battered vending machine here.  The
-000    instructions on it read: "Drop coins here to receive fresh batteries."
-100    "Drop coins here to receive fresh batteries."
-200    As you strike the vending machine, it pivots backward along with a
-200    section of wall, revealing a dark passage leading south.
-300    There is a massive vending machine here, swung back to reveal a
-300    southward passage.
-400    "Drop coins here to receive fresh batteries."
-500    The vending machine swings back to block the passage.
-39     Batteries
-000    There are fresh batteries here.
-100    Some worn-out batteries have been discarded nearby.
-40     *carpet and/or moss and/or curtains
-000    %!
-41     *ogre
-000    A formidable ogre bars the northern exit.
-100    The ogre is apparently the strong, silent type.
-42     *urn
-000    A small urn is embedded in the rock.
-100    A small urn full of oil is embedded in the rock.
-200    A small oil flame extrudes from an urn embedded in the rock.
-43     *cavity
-000    %!  (something in it)
-100    There is a small urn-shaped cavity in the rock.
-44     *blood
-000    %!  (described with dragon)
-45     *reservoir
-000    %!
-100    The waters have parted to form a narrow path across the reservoir.
-200    The waters crash together again.
-46     Leporine appendage
-000    Your keen eye spots a severed leporine appendage lying on the ground.
-47     *mud
-000    %!
-100    "MAGIC WORD XYZZY"
-48     *note
-000    %!
-100    "You won't get it up the steps"
-49     *sign
-000    %!
-100    Cave under construction beyond this point.
-100               Proceed at own risk.
-100           [Witt Construction Company]
-200    "Treasure Vault.  Keys in main office."
-50     Large gold nugget
-000    There is a large sparkling nugget of gold here!
-51     Several diamonds
-000    There are diamonds here!
-52     Bars of silver
-000    There are bars of silver here!
-53     Precious jewelry
-000    There is precious jewelry here!
-54     Rare coins
-000    There are many coins here!
-55     Treasure chest
-000    The pirate's treasure chest is here!
-56     Golden eggs
-000    There is a large nest here, full of golden eggs!
-100    The nest of golden eggs has vanished!
-200    Done!
-57     Jeweled trident
-000    There is a jewel-encrusted trident here!
-58     Ming vase
-000    There is a delicate, precious, ming vase here!
-100    The vase is now resting, delicately, on a velvet pillow.
-200    The floor is littered with worthless shards of pottery.
-300    The ming vase drops with a delicate crash.
-59     Egg-sized emerald
-000    There is an emerald here the size of a plover's egg!
-100    There is an emerald resting in a small cavity in the rock!
-60     Platinum pyramid
-000    There is a platinum pyramid here, 8 inches on a side!
-61     Glistening pearl
-000    Off to one side lies a glistening pearl!
-62     Persian rug
-000    There is a persian rug spread out on the floor!
-100    The dragon is sprawled out on a persian rug!!
-200    There is a persian rug here, hovering in mid-air!
-63     Rare spices
-000    There are rare spices here!
-64     Golden chain
-000    There is a golden chain lying in a heap on the floor!
-100    The bear is locked to the wall with a golden chain!
-200    There is a golden chain locked to the wall!
-65     Giant ruby
-000    There is an enormous ruby here!
-100    There is a ruby resting in a small cavity in the rock!
-66     Jade necklace
-000    A precious jade necklace has been dropped here!
-67     Amber gemstone
-000    There is a rare amber gemstone here!
-100    There is an amber gemstone resting in a small cavity in the rock!
-68     Star sapphire
-000    A brilliant blue star sapphire is here!
-100    There is a star sapphire resting in a small cavity in the rock!
-69     Ebony statuette
-000    There is a richly-carved ebony statuette here!
--1
-6
-1      Somewhere nearby is Colossal Cave, where others have found fortunes in
-1      treasure and gold, though it is rumored that some who enter are never
-1      seen again.  Magic is said to work in the cave.  I will be your eyes
-1      and hands.  Direct me with commands of 1 or 2 words.  I should warn
-1      you that I look at only the first five letters of each word, so you'll
-1      have to enter "northeast" as "ne" to distinguish it from "north".
-1      You can type "help" for some general hints.  For information on how
-1      to end your adventure, scoring, etc., type "info".
-1                                    - - -
-1      This program was originally developed by Willie Crowther.  Most of the
-1      features of the current program were added by Don Woods.  Contact Don
-1      if you have any questions, comments, etc.
-2      A little dwarf with a big knife blocks your way.
-3      A little dwarf just walked around a corner, saw you, threw a little
-3      axe at you which missed, cursed, and ran away.
-4      There are %1 threatening little dwarves in the room with you.
-5      There is a threatening little dwarf in the room with you!
-6      One sharp nasty knife is thrown at you!
-7      A hollow voice says "PLUGH".
-8      It gets you!
-9      It misses!
-10     I am unsure how you are facing.  Use compass points or nearby objects.
-11     I don't know in from out here.  Use compass points or name something
-11     in the general direction you want to go.
-12     I don't know how to apply that word here.
-13     You're quite welcome.
-14     I'm game.  Would you care to explain how?
-15     Sorry, but I am not allowed to give more detail.  I will repeat the
-15     long description of your location.
-16     It is now pitch dark.  If you proceed you will likely fall into a pit.
-17     If you prefer, simply type w rather than west.
-18     Are you trying to catch the bird?
-19     Something about you seems to be frightening the bird.  Perhaps you
-19     might figure out what it is.
-20     Are you trying to somehow deal with the snake?
-21     You can't kill the snake, or drive it away, or avoid it, or anything
-21     like that.  There is a way to get by, but you don't have the necessary
-21     resources right now.
-22     Do you really want to quit now?
-23     You fell into a pit and broke every bone in your body!
-24     You are already carrying it!
-25     You can't be serious!
-26     The bird seemed unafraid at first, but as you approach it becomes
-26     disturbed and you cannot catch it.
-27     You can catch the bird, but you cannot carry it.
-28     There is nothing here with a lock!
-29     You aren't carrying it!
-30     The little bird attacks the green snake, and in an astounding flurry
-30     drives the snake away.
-31     You have no keys!
-32     It has no lock.
-33     I don't know how to lock or unlock such a thing.
-34     It was already locked.
-35     The grate is now locked.
-36     The grate is now unlocked.
-37     It was already unlocked.
-38     The urn is empty and will not light.
-39     Your lamp is now on.
-40     Your lamp is now off.
-41     There is no way to get past the bear to unlock the chain, which is
-41     probably just as well.
-42     Nothing happens.
-43     Where?
-44     There is nothing here to attack.
-45     The little bird is now dead.  Its body disappears.
-46     Attacking the snake both doesn't work and is very dangerous.
-47     You killed a little dwarf.
-48     You attack a little dwarf, but he dodges out of the way.
-49     With what?  Your bare hands?
-50     Good try, but that is an old worn-out magic word.
-51     I know of places, actions, and things.  Most of my vocabulary
-51     describes places and is used to move you there.  To move, try words
-51     like forest, building, downstream, enter, east, west, north, south,
-51     up, or down.  I know about a few special objects, like a black rod
-51     hidden in the cave.  These objects can be manipulated using some of
-51     the action words that I know.  Usually you will need to give both the
-51     object and action words (in either order), but sometimes I can infer
-51     the object from the verb alone.  Some objects also imply verbs; in
-51     particular, "inventory" implies "take inventory", which causes me to
-51     give you a list of what you're carrying.  Some objects have unexpected
-51     effects; the effects are not always desirable!  Usually people having
-51     trouble moving just need to try a few more words.  Usually people
-51     trying unsuccessfully to manipulate an object are attempting something
-51     beyond their (or my!) capabilities and should try a completely
-51     different tack.  One point often confusing to beginners is that, when
-51     there are several ways to go in a certain direction (e.g., if there
-51     are several holes in a wall), choosing that direction in effect
-51     chooses one of the ways at random; often, though, by specifying the
-51     place you want to reach you can guarantee choosing the right path.
-51     Also, to speed the game you can sometimes move long distances with a
-51     single word.  For example, "building" usually gets you to the building
-51     from anywhere above ground except when lost in the forest.  Also, note
-51     that cave passages and forest paths turn a lot, so leaving one place
-51     heading north doesn't guarantee entering the next from the south.
-51     However (another important point), except when you've used a "long
-51     distance" word such as "building", there is always a way to go back
-51     where you just came from unless I warn you to the contrary, even
-51     though the direction that takes you back might not be the reverse of
-51     what got you here.  Good luck, and have fun!
-52     There is no way to go that direction.
-53     Please stick to 1- and 2-word commands.
-54     OK
-55     You can't unlock the keys.
-56     You have crawled around in some little holes and wound up back in the
-56     main passage.
-57     I don't know where the cave is, but hereabouts no stream can run on
-57     the surface for long.  I would try the stream.
-58     I need more detailed instructions to do that.
-59     I can only tell you what you see as you move about and manipulate
-59     things.  I cannot tell you where remote things are.
-60     The ogre snarls and shoves you back.
-61     Huh?
-62     Are you trying to get into the cave?
-63     The grate is very solid and has a hardened steel lock.  You cannot
-63     enter without a key, and there are no keys nearby.  I would recommend
-63     looking elsewhere for the keys.
-64     The trees of the forest are large hardwood oak and maple, with an
-64     occasional grove of pine or spruce.  There is quite a bit of under-
-64     growth, largely birch and ash saplings plus nondescript bushes of
-64     various sorts.  This time of year visibility is quite restricted by
-64     all the leaves, but travel is quite easy if you detour around the
-64     spruce and berry bushes.
-65     Welcome to Adventure!!  Would you like instructions?
-66     Digging without a shovel is quite impractical.  Even with a shovel
-66     progress is unlikely.
-67     Blasting requires dynamite.
-68     I'm as confused as you are.
-69     Mist is a white vapor, usually water, seen from time to time in
-69     caverns.  It can be found anywhere but is frequently a sign of a deep
-69     pit leading down to water.
-70     Your feet are now wet.
-71     I think I just lost my appetite.
-72     Thank you, it was delicious!
-73     You have taken a drink from the stream.  The water tastes strongly of
-73     minerals, but is not unpleasant.  It is extremely cold.
-74     The bottle of water is now empty.
-75     Rubbing the electric lamp is not particularly rewarding.  Anyway,
-75     nothing exciting happens.
-76     Peculiar.  Nothing unexpected happens.
-77     Your bottle is empty and the ground is wet.
-78     You can't pour that.
-79     Watch it!
-80     Which way?
-81     Oh dear, you seem to have gotten yourself killed.  I might be able to
-81     help you out, but I've never really done this before.  Do you want me
-81     to try to reincarnate you?
-82     All right.  But don't blame me if something goes wr......
-82                         --- POOF!! ---
-82     You are engulfed in a cloud of orange smoke.  Coughing and gasping,
-82     you emerge from the smoke and find....
-83     You clumsy oaf, you've done it again!  I don't know how long I can
-83     keep this up.  Do you want me to try reincarnating you again?
-84     Okay, now where did I put my orange smoke?....  >POOF!<
-84     Everything disappears in a dense cloud of orange smoke.
-85     Now you've really done it!  I'm out of orange smoke!  You don't expect
-85     me to do a decent reincarnation without any orange smoke, do you?
-86     Okay, if you're so smart, do it yourself!  I'm leaving!
-90     >>> messages 81 thru 90 are reserved for "obituaries". <<<
-91     Sorry, but I no longer seem to remember how it was you got here.
-92     You can't carry anything more.  You'll have to drop something first.
-93     You can't go through a locked steel grate!
-94     I believe what you want is right here with you.
-95     You don't fit through a two-inch slit!
-96     I respectfully suggest you go across the bridge instead of jumping.
-97     There is no way across the fissure.
-98     You're not carrying anything.
-99     You are currently holding the following:
-100    It's not hungry (it's merely pinin' for the fjords).  Besides, you
-100    have no bird seed.
-101    The snake has now devoured your bird.
-102    There's nothing here it wants to eat (except perhaps you).
-103    You fool, dwarves eat only coal!  Now you've made him *REALLY* mad!!
-104    You have nothing in which to carry it.
-105    Your bottle is already full.
-106    There is nothing here with which to fill the bottle.
-107    Your bottle is now full of water.
-108    Your bottle is now full of oil.
-109    You can't fill that.
-110    Don't be ridiculous!
-111    The door is extremely rusty and refuses to open.
-112    The plant indignantly shakes the oil off its leaves and asks, "Water?"
-113    The hinges are quite thoroughly rusted now and won't budge.
-114    The oil has freed up the hinges so that the door will now move,
-114    although it requires some effort.
-115    The plant has exceptionally deep roots and cannot be pulled free.
-116    The dwarves' knives vanish as they strike the walls of the cave.
-117    Something you're carrying won't fit through the tunnel with you.
-117    You'd best take inventory and drop something.
-118    You can't fit this five-foot clam through that little passage!
-119    You can't fit this five-foot oyster through that little passage!
-120    I advise you to put down the clam before opening it.  >STRAIN!<
-121    I advise you to put down the oyster before opening it.  >WRENCH!<
-122    You don't have anything strong enough to open the clam.
-123    You don't have anything strong enough to open the oyster.
-124    A glistening pearl falls out of the clam and rolls away.  Goodness,
-124    this must really be an oyster.  (I never was very good at identifying
-124    bivalves.)  Whatever it is, it has now snapped shut again.
-125    The oyster creaks open, revealing nothing but oyster inside.  It
-125    promptly snaps shut again.
-126    You have crawled around in some little holes and found your way
-126    blocked by a recent cave-in.  You are now back in the main passage.
-127    There are faint rustling noises from the darkness behind you.
-128    Out from the shadows behind you pounces a bearded pirate!  "Har, har,"
-128    he chortles, "I'll just take all this booty and hide it away with me
-128    chest deep in the maze!"  He snatches your treasure and vanishes into
-128    the gloom.
-129    A sepulchral voice reverberating through the cave, says, "Cave closing
-129    soon.  All adventurers exit immediately through main office."
-130    A mysterious recorded voice groans into life and announces:
-130       "This exit is closed.  Please leave via main office."
-131    It looks as though you're dead.  Well, seeing as how it's so close to
-131    closing time anyway, I think we'll just call it a day.
-132    The sepulchral voice intones, "The cave is now closed."  As the echoes
-132    fade, there is a blinding flash of light (and a small puff of orange
-132    smoke). . . .    As your eyes refocus, you look around and find...
-133    There is a loud explosion, and a twenty-foot hole appears in the far
-133    wall, burying the dwarves in the rubble.  You march through the hole
-133    and find yourself in the main office, where a cheering band of
-133    friendly elves carry the conquering adventurer off into the sunset.
-134    There is a loud explosion, and a twenty-foot hole appears in the far
-134    wall, burying the snakes in the rubble.  A river of molten lava pours
-134    in through the hole, destroying everything in its path, including you!
-135    There is a loud explosion, and you are suddenly splashed across the
-135    walls of the room.
-136    The resulting ruckus has awakened the dwarves.  There are now several
-136    threatening little dwarves in the room with you!  Most of them throw
-136    knives at you!  All of them get you!
-137    Oh, leave the poor unhappy bird alone.
-138    I daresay whatever you want is around here somewhere.
-139    I don't know the word "stop".  Use "quit" if you want to give up.
-140    You can't get there from here.
-141    You are being followed by a very large, tame bear.
-142    For a summary of the most recent changes to the game, say "news".
-142    If you want to end your adventure early, say "quit".  To suspend your
-142    adventure such that you can continue later, say "suspend" (or "pause"
-142    or "save").  To see how well you're doing, say "score".  To get full
-142    credit for a treasure, you must have left it safely in the building,
-142    though you get partial credit just for locating it.  You lose points
-142    for getting killed, or for quitting, though the former costs you more.
-142    There are also points based on how much (if any) of the cave you've
-142    managed to explore; in particular, there is a large bonus just for
-142    getting in (to distinguish the beginners from the rest of the pack),
-142    and there are other ways to determine whether you've been through some
-142    of the more harrowing sections.  If you think you've found all the
-142    treasures, just keep exploring for a while.  If nothing interesting
-142    happens, you haven't found them all yet.  If something interesting
-142    *DOES* happen (incidentally, there *ARE* ways to hasten things along),
-142    it means you're getting a bonus and have an opportunity to garner many
-142    more points in the Master's section.  I may occasionally offer hints
-142    if you seem to be having trouble.  If I do, I'll warn you in advance
-142    how much it will affect your score to accept the hints.  Finally, to
-142    save time, you may specify "brief", which tells me never to repeat the
-142    full description of a place unless you explicitly ask me to.
-143    Now let's see you do it without suspending in mid-Adventure.
-144    There is nothing here with which to fill it.
-145    The sudden change in temperature has delicately shattered the vase.
-146    It is beyond your power to do that.
-147    I don't know how.
-148    It is too far up for you to reach.
-149    You killed a little dwarf.  The body vanishes in a cloud of greasy
-149    black smoke.
-150    The shell is very strong and is impervious to attack.
-151    What's the matter, can't you read?  Now you'd best start over.
-152    The axe bounces harmlessly off the dragon's thick scales.
-153    The dragon looks rather nasty.  You'd best not try to get by.
-154    The little bird attacks the green dragon, and in an astounding flurry
-154    gets burnt to a cinder.  The ashes blow away.
-155    On what?
-156    Okay, from now on I'll only describe a place in full the first time
-156    you come to it.  To get the full description, say "look".
-157    Trolls are close relatives with the rocks and have skin as tough as
-157    that of a rhinoceros.  The troll fends off your blows effortlessly.
-158    The troll deftly catches the axe, examines it carefully, and tosses it
-158    back, declaring, "Good workmanship, but it's not valuable enough."
-159    The troll catches your treasure and scurries away out of sight.
-160    The troll refuses to let you cross.
-161    There is no longer any way across the chasm.
-162    Just as you reach the other side, the bridge buckles beneath the
-162    weight of the bear, which was still following you around.  You
-162    scrabble desperately for support, but as the bridge collapses you
-162    stumble back and fall into the chasm.
-163    The bear lumbers toward the troll, who lets out a startled shriek and
-163    scurries away.  The bear soon gives up the pursuit and wanders back.
-164    The axe misses and lands near the bear where you can't get at it.
-165    With what?  Your bare hands?  Against *HIS* bear hands??
-166    The bear is confused; he only wants to be your friend.
-167    For crying out loud, the poor thing is already dead!
-168    The bear eagerly wolfs down your food, after which he seems to calm
-168    down considerably and even becomes rather friendly.
-169    The bear is still chained to the wall.
-170    The chain is still locked.
-171    The chain is now unlocked.
-172    The chain is now locked.
-173    There is nothing here to which the chain can be locked.
-174    There is nothing here to eat.
-175    Do you want the hint?
-176    Do you need help getting out of the maze?
-177    You can make the passages look less alike by dropping things.
-178    Are you trying to explore beyond the plover room?
-179    There is a way to explore that region without having to worry about
-179    falling into a pit.  None of the objects available is immediately
-179    useful in discovering the secret.
-180    Do you need help getting out of here?
-181    Don't go west.
-182    Gluttony is not one of the troll's vices.  Avarice, however, is.
-183    Your lamp is getting dim.  You'd best start wrapping this up, unless
-183    you can find some fresh batteries.  I seem to recall there's a vending
-183    machine in the maze.  Bring some coins with you.
-184    Your lamp has run out of power.
-185    Please answer the question.
-186    There are faint rustling noises from the darkness behind you.  As you
-186    turn toward them, the beam of your lamp falls across a bearded pirate.
-186    He is carrying a large chest.  "Shiver me timbers!" he cries, "I've
-186    been spotted!  I'd best hie meself off to the maze to hide me chest!"
-186    With that, he vanishes into the gloom.
-187    Your lamp is getting dim.  You'd best go back for those batteries.
-188    Your lamp is getting dim.  I'm taking the liberty of replacing the
-188    batteries.
-189    Your lamp is getting dim, and you're out of spare batteries.  You'd
-189    best start wrapping this up.
-190    You sift your fingers through the dust, but succeed only in
-190    obliterating the cryptic message.
-191    Do you need help dealing with the ogre?
-192    Hmmm, this looks like a clue, which means it'll cost you 10 points to
-192    read it.  Should I go ahead and read it anyway?
-193    It says, "There is a way out of this place.  Do you need any more
-193    information to escape?  Sorry, but this initial hint is all you get."
-194    There is nothing the presence of which will prevent you from defeating
-194    him; thus it can't hurt to fetch everything you possibly can.
-195    I'm afraid I don't understand.
-196    Your hand passes through it as though it weren't there.
-197    You strike the mirror a resounding blow, whereupon it shatters into a
-197    myriad tiny fragments.
-198    You have taken the vase and hurled it delicately to the ground.
-199    You prod the nearest dwarf, who wakes up grumpily, takes one look at
-199    you, curses, and grabs for his axe.
-200    Is this acceptable?
-201    This adventure is already over.  To start a new adventure, or to
-201    resume an earlier adventure, please run a fresh copy of the program.
-202    The ogre doesn't appear to be hungry.
-203    The ogre, who despite his bulk is quite agile, easily dodges your
-203    attack.  He seems almost amused by your puny effort.
-204    The ogre, distracted by your rush, is struck by the knife.  With a
-204    blood-curdling yell he turns and bounds after the dwarves, who flee
-204    in panic.  You are left alone in the room.
-205    The ogre, distracted by your rush, is struck by the knife.  With a
-205    blood-curdling yell he turns and bounds after the dwarf, who flees
-205    in panic.  You are left alone in the room.
-206    The bird flies about agitatedly for a moment.
-207    The bird flies agitatedly about the cage.
-208    The bird flies about agitatedly for a moment, then disappears through
-208    the crack.  It reappears shortly, carrying in its beak a jade
-208    necklace, which it drops at your feet.
-209    The urn is now lit.
-210    The urn is now dark.
-211    You empty the bottle into the urn, which promptly ejects the water
-211    with uncanny accuracy, squirting you directly between the eyes.
-212    Your bottle is now empty and the urn is full of oil.
-213    The urn is already full of oil.
-214    There's no way to get the oil out of the urn.
-215    The urn is far too firmly embedded for your puny strength to budge it.
-216    As you rub the urn, there is a flash of light and a genie appears.
-216    His aspect is stern as he advises: "One who wouldst traffic in
-216    precious stones must first learn to recognize the signals thereof."
-216    He wrests the urn from the stone, leaving a small cavity.  Turning to
-216    face you again, he fixes you with a steely eye and intones: "Caution!"
-216    Genie and urn vanish in a cloud of amber smoke.  The smoke condenses
-216    to form a rare amber gemstone, resting in the cavity in the rock.
-217    I suppose you collect doughnut holes, too?
-218    The gem fits easily into the cavity.
-219    The persian rug stiffens and rises a foot or so off the ground.
-220    The persian rug draped over your shoulder seems to wriggle for a
-220    moment, but then subsides.
-221    The persian rug settles gently to the ground.
-222    The rug hovers stubbornly where it is.
-223    The rug does not appear inclined to cooperate.
-224    If you mean to use the persian rug, it does not appear inclined to
-224    cooperate.
-225    Though you flap your arms furiously, it is to no avail.
-226    You board the persian rug, which promptly whisks you across the chasm.
-226    You have time for a fleeting glimpse of a two thousand foot drop to a
-226    mighty river; then you find yourself on the other side.
-227    The rug ferries you back across the chasm.
-228    All is silent.
-229    The stream is gurgling placidly.
-230    The wind whistles coldly past your ears.
-231    The stream splashes loudly into the pool.
-232    You are unable to make anything of the splashing noise.
-233    You can hear the murmuring of the beanstalks and the snoring of the
-233    dwarves.
-234    A loud hissing emanates from the snake pit.
-235    The air is filled with a dull rumbling sound.
-236    The roar is quite loud here.
-237    The roaring is so loud that it drowns out all other sound.
-238    The bird eyes you suspiciously and flutters away.  A moment later you
-238    feel something wet land on your head, but upon looking up you can see
-238    no sign of the culprit.
-239    There are only a few drops--not enough to carry.
-240    Your head buzzes strangely for a moment.
-241    (Uh, y'know, that wasn't very bright.)
-242    It's a pity you took so long about it.
-243    Are you wondering what to do here?
-244    This section is quite advanced.  Find the cave first.
-245    Upstream or downstream?
-246    Wizards are not to be disturbed by such as you.
-247    Would you like to be shown out of the forest?
-248    Go east ten times.  If that doesn't get you out, then go south, then
-248    west twice, then south.
-249    The waters are crashing loudly against the shore.
-250    %1 of them throw knives at you!
-251    %1 of them get you!
-252    One of them gets you!
-253    None of them hits you!
-254    Sorry, I don't know the word "%W".
-255    What do you want to do with the %L?
-256    I see no %L here.
-257    %C what?
-258    Okay, "%W".
-259    You have garnered %3 out of a possible %3 points, using %5 turn%S.
-260    I can suspend your Adventure for you so that you can resume later, but
-260    it will cost you 5 points.
-261    I am prepared to give you a hint, but it will cost you %1 point%S.
-262    You scored %3 out of a possible %3, using%5 turn%S.
-263    To achieve the next higher rating, you need %2 more point%S.
-264    To achieve the next higher rating would be a neat trick!
-264    Congratulations!!
-265    You just went off my scale!!
-266    To resume your Adventure, start a new game and then say "RESUME".
-267    Table space used:
-267    %6 of %6 words of messages   %6 of %6 travel options
-267    %6 of %6 vocabulary words    %6 of %6 locations
-267    %6 of %6 objects             %6 of %6 action verbs
-267    %6 of %6 "random" messages   %6 of %6 "class" messages
-267    %6 of %6 hints               %6 of %6 turn threshholds
-268    To resume an earlier Adventure, you must abandon the current one.
-269    I'm sorry, but that Adventure was begun using Version%2.%1 of the
-269    program, and this is Version%2.%1.  You must find the other version
-269    in order to resume that Adventure.
-270    A dark fog creeps in to surround you.  From somewhere in the fog you
-270    hear a stern voice.  "This Adventure has been tampered with!  You have
-270    been dabbling in magic, knowing not the havoc you might cause thereby.
-270    Leave at once, before you do irrevocable harm!"  The fog thickens,
-270    until at last you can see nothing at all.  Your vision then clears,
-270    and you find yourself back in The Real World.
-271    Guess again.
-272    You're missing only one other treasure.  Do you need help finding it?
-273    Once you've found all the other treasures, it is no longer possible to
-273    locate the one you're now missing.
-274    Sorry, but the path twisted and turned so much that I can't figure
-274    out which way to go to get back.
-275    Version 2.5 is essentially the same as Version II; the cave and the
-275    hazards therein are unchanged, and top score is still 430 points.
-275    There are a few more hints, especially for some of the more obscure
-275    puzzles.  There are a few minor bugfixes and cosmetic changes.  You
-275    can now save a game and resume it at once (formerly you had to wait a
-275    while first), but it now costs you a few points each time you save the
-275    game.  Saved games are now stored in much smaller files than before.
-276    You don't have to say "go" every time; just specify a direction or, if
-276    it's nearby, name the place to which you wish to move.
--1
-7
-1      3
-2      3
-3      8       9
-4      10
-5      11
-6      0
-7      14      15
-8      13
-9      94      -1
-10     96
-11     19      -1
-12     17      27
-13     101     -1
-14     103
-15     0
-16     106
-17     0       -1
-18     0
-19     3
-20     3
-21     0
-22     0
-23     109     -1
-24     25      -1
-25     23      67
-26     111     -1
-27     35      110
-28     0
-29     97      -1
-30     0       -1
-31     119     121
-32     117     122
-33     117     122
-34     0       0
-35     130     -1
-36     0       -1
-37     126     -1
-38     140     -1
-39     0
-40     96      -1
-41     143     -1
-42     6       -1
-43     0       -1
-44     0       -1
-45     113     169
-46     166
-47     11      -1
-48     18      -1
-49     106     -1
-50     18
-51     27
-52     28
-53     29
-54     30
-55     0
-56     92
-57     95
-58     97
-59     100
-60     101
-61     0
-62     119     121
-63     127
-64     130     -1
-65     144
-66     0
-67     0
-68     167
-69     177
--1
-8
-1      24
-2      29
-3      0
-4      33
-5      0
-6      33
-7      195
-8      195
-9      42
-10     14
-11     43
-12     110
-13     29
-14     110
-15     73
-16     75
-17     29
-18     61
-19     59
-20     59
-21     174
-22     109
-23     67
-24     61
-25     147
-26     155
-27     195
-28     146
-29     110
-30     61
-31     61
-32     14
-33     195
-34     42
-35     61
--1
-9
-0      1       2       3       4       5       6       7       8       9       10
-0      100     115     116     126     145     146     147     148     149     150
-0      151     152     153     154     155     156     157     158     159     160
-0      161     162     163     164     165     166     167
-2      1       3       4       7       38      95      113     24      168     169
-1      24
-3      46      47      48      54      56      58      82      85      86
-3      122     123     124     125     126     127     128     129     130
-4      6       145     146     147     148     149     150     151     152
-4      153     154     155     156     157     158     159     160     161
-4      162     163     164     165     166     42      43      44      45
-4      49      50      51      52      53      55      57      80      83
-4      84      87      107     112     131     132     133     134     135
-4      136     137     138     139     108
-11     8
-12     13
-13     19
-14     42      43      44      45      46      47      48      49      50      51
-14     52      53      54      55      56      80      81      82      86      87
-15     99      100     101
-16     108
-17     6
-18     145     146     147     148     149     150     151     152     153     154
-18     155     156     157     158     159     160     161     162     163     164
-18     165     166
-19     143
-20     8       15      64      109     126
--1
-10
-45     You are obviously a rank amateur.  Better luck next time.
-120    Your score qualifies you as a novice class adventurer.
-170    You have achieved the rating: "Experienced Adventurer".
-250    You may now consider yourself a "Seasoned Adventurer".
-320    You have reached "Junior Master" status.
-375    Your score puts you in Master Adventurer Class C.
-410    Your score puts you in Master Adventurer Class B.
-426    Your score puts you in Master Adventurer Class A.
-429    All of Adventuredom gives tribute to you, Adventurer Grandmaster!
-9999   Adventuredom stands in awe -- you have now joined the ranks of the
-9999          W O R L D   C H A M P I O N   A D V E N T U R E R S !
-9999   It may interest you to know that the Dungeon-Master himself has, to
-9999   my knowledge, never achieved this threshhold in fewer than 330 turns.
--1
-11
-1      4       2       62      63
-2      5       2       18      19
-3      8       2       20      21
-4      75      4       176     177
-5      25      5       178     179
-6      20      3       180     181
-7      8       2       243     244
-8      25      2       247     248
-9      10      4       191     194
-10     1       4       272     273
--1
-13
-8      3       -1
-11     2       -1
-13     -1      1
-14     1       -1
-15     2       -1
-16     -1      1
-24     6       -1
-31     4       -1
-33     3       -1
-36     -1      1
-38     -1      1
-41     1       -1
-47     -1      1
-48     -1      1
-49     -1      1
-1      229
-3      229
-4      229
-7      229
-15     230
-38     229
-64     230
-94     230
-95     231
-98     232
-109    230
-113    231
-115    233
-116    234
-123    235
-124    235
-125    236
-126    -237
-127    235
-168    -237
-169    249
--1
-14
-200350 Tsk!  A wizard wouldn't have to take 350 turns.  This is going to cost
-200350 you a couple of points.
-300500 500 turns?  That's another few points you've lost.
-501000 Are you still at it?  Five points off for exceeding 1000 turns!
-1002500 Good grief, don't you *EVER* give up?  Do you realize you've spent
-1002500 over 2500 turns at this?  That's another ten points off, a total of
-1002500 twenty points lost for taking so long.
--1
-0
diff --git a/database/compile.c b/database/compile.c
deleted file mode 100644 (file)
index 9906f08..0000000
+++ /dev/null
@@ -1,547 +0,0 @@
-#define LINESIZE 100
-#define RTXSIZ 277
-#define CLSMAX 12
-#define LOCSIZ 185
-#define LINSIZ 12500
-#define TRNSIZ 5
-#define TABSIZ 330
-#define VRBSIZ 35
-#define HNTSIZ 20
-#define TRVSIZ 885
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdbool.h>
-#include <unistd.h>
-
-const char advent_to_ascii[] = {0, 32, 33, 34, 39, 40, 41, 42, 43, 44, 45, 46, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 37, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 35, 36, 38, 47, 58, 59, 60, 61, 62, 63, 64, 91, 92, 93, 94, 95, 96, 123, 124, 125, 126, 0};
-/* Rendered from the now-gone MPINIT() function */
-const char ascii_to_advent[] = {0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 0, 0, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 0, 1, 2, 106, 107, 63, 108, 3, 4, 5, 6, 7, 8, 9, 10, 109, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 110, 111, 112, 113, 114, 115, 116, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 117, 118, 119, 120, 121, 122, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 123, 124, 125, 126, 83};
-
-// Global variables for use in functions below that can gradually disappear as code is cleaned up
-long LNLENG;
-long LNPOSN;
-signed char INLINE[LINESIZE+1];
-long I;
-long K;
-long KK;
-long L;
-long LOC;
-long NEWLOC;
-long OBJ;
-long OLDLOC;
-long SECT;
-long VERB;
-
-// Storage for what comes out of the database
-long LINUSE;
-long TRVS;
-long CLSSES;
-long TRNVLS;
-long TABNDX;
-long HNTMAX;
-long PTEXT[101];
-long RTEXT[RTXSIZ + 1];
-long CTEXT[CLSMAX + 1];
-long OBJSND[101];
-long OBJTXT[101];
-long STEXT[LOCSIZ + 1];
-long LTEXT[LOCSIZ + 1];
-long COND[LOCSIZ + 1];
-long KEY[LOCSIZ + 1];
-long LOCSND[LOCSIZ + 1];
-long LINES[LINSIZ + 1];
-long CVAL[CLSMAX + 1];
-long TTEXT[TRNSIZ + 1];
-long TRNVAL[TRNSIZ + 1];
-long TRAVEL[TRVSIZ + 1];
-long KTAB[TABSIZ + 1];
-long ATAB[TABSIZ + 1];
-long PLAC[101];
-long FIXD[101];
-long ACTSPK[VRBSIZ + 1];
-long HINTS[HNTSIZ + 1][5];
-
-bool is_set(long, long);
-long GETTXT(long, long, long);
-void BUG(long);
-void MAPLIN(FILE*);
-long GETNUM(FILE*);
-int read_database(FILE*);
-void write_0d(FILE*, FILE*, long, char*);
-void write_1d(FILE*, FILE*, long[], long, char*);
-void write_hints(FILE*, FILE*, long[][5], long, long, char*);
-void write_files(FILE*, FILE*);
-
-bool is_set(long var, long position)
-{
-  long mask = 1l << position;
-  bool result = (var & mask) == mask;
-  return(result);
-}
-
-long GETTXT(long SKIP,long ONEWRD, long UPPER) {
-/*  Take characters from an input line and pack them into 30-bit words.
- *  Skip says to skip leading blanks.  ONEWRD says stop if we come to a
- *  blank.  UPPER says to map all letters to uppercase.  If we reach the
- *  end of the line, the word is filled up with blanks (which encode as 0's).
- *  If we're already at end of line when GETTXT is called, we return -1. */
-
-  long CHAR;
-  long GETTXT;
-  static long SPLITTING = -1;
-
-  if(LNPOSN != SPLITTING)
-    SPLITTING = -1;
-  GETTXT= -1;
- L10:
-  if(LNPOSN > LNLENG)
-    return(GETTXT);
-  if((!SKIP) || INLINE[LNPOSN] != 0)
-    goto L11;
-  LNPOSN=LNPOSN+1;
-  goto L10;
-
- L11:
-  GETTXT=0;
-  for (int I=1; I<=5; I++) {
-    GETTXT=GETTXT*64;
-    if(LNPOSN > LNLENG || (ONEWRD && INLINE[LNPOSN] == 0))
-      continue;
-    CHAR=INLINE[LNPOSN];
-    if(CHAR >= 63)
-      goto L12;
-    SPLITTING = -1;
-    if(UPPER && CHAR >= 37)
-      CHAR=CHAR-26;
-    GETTXT=GETTXT+CHAR;
-    goto L14;
-
-  L12:
-    if(SPLITTING == LNPOSN)
-      goto L13;
-    GETTXT=GETTXT+63;
-    SPLITTING = LNPOSN;
-    continue;
-
-  L13:
-    GETTXT=GETTXT+CHAR-63;
-    SPLITTING = -1;
-  L14:
-    LNPOSN=LNPOSN+1;
-  }
-
-  return(GETTXT);
-}
-
-void BUG(long NUM) {
-
-/*  The following conditions are currently considered fatal bugs.  Numbers < 20
- *  are detected while reading the database; the others occur at "run time".
- *     0       Message line > 70 characters
- *     1       Null line in message
- *     2       Too many words of messages
- *     3       Too many travel options
- *     4       Too many vocabulary words
- *     5       Required vocabulary word not found
- *     6       Too many RTEXT messages
- *     7       Too many hints
- *     8       Location has cond bit being set twice
- *     9       Invalid section number in database
- *     10      Too many locations
- *     11      Too many class or turn messages
- *     20      Special travel (500>L>300) exceeds goto list
- *     21      Ran off end of vocabulary table
- *     22      Vocabulary type (N/1000) not between 0 and 3
- *     23      Intransitive action verb exceeds goto list
- *     24      Transitive action verb exceeds goto list
- *     25      Conditional travel entry with no alternative
- *     26      Location has no travel entries
- *     27      Hint number exceeds goto list
- *     28      Invalid month returned by date function
- *     29      Too many parameters given to SETPRM */
-
-  fprintf(stderr, "Fatal error %ld.  See source code for interpretation.\n", NUM);
-  exit(EXIT_FAILURE);
-}
-
-void MAPLIN(FILE *OPENED) {
-/*  Read a line of input, from the specified input source,
- *  translate the chars to integers in the range 0-126 and store
- *  them in the common array "INLINE".  Integer values are as follows:
- *     0   = space [ASCII CODE 40 octal, 32 decimal]
- *    1-2  = !" [ASCII 41-42 octal, 33-34 decimal]
- *    3-10 = '()*+,-. [ASCII 47-56 octal, 39-46 decimal]
- *   11-36 = upper-case letters
- *   37-62 = lower-case letters
- *    63   = percent (%) [ASCII 45 octal, 37 decimal]
- *   64-73 = digits, 0 through 9
- *  Remaining characters can be translated any way that is convenient;
- *  The "TYPE" routine below is used to map them back to characters when
- *  necessary.  The above mappings are required so that certain special
- *  characters are known to fit in 6 bits and/or can be easily spotted.
- *  Array elements beyond the end of the line should be filled with 0,
- *  and LNLENG should be set to the index of the last character.
- *
- *  If the data file uses a character other than space (e.g., tab) to
- *  separate numbers, that character should also translate to 0.
- *
- *  This procedure may use the map1,map2 arrays to maintain static data for
- *  the mapping.  MAP2(1) is set to 0 when the program starts
- *  and is not changed thereafter unless the routines on this page choose
- *  to do so. */
-
-  do {
-    fgets(INLINE + 1, sizeof(INLINE) - 1, OPENED);
-  }
-  while (!feof(OPENED) && INLINE[1] == '#');
-  
-  LNLENG = 0;
-  for (int i = 1; i <= sizeof(INLINE) && INLINE[i] != 0; ++i)
-    {
-      char val = INLINE[i] + 1;
-      INLINE[i] = ascii_to_advent[val];
-      if (INLINE[i] != 0)
-       LNLENG = i;
-    }
-  LNPOSN = 1;
-}
-
-long GETNUM(FILE *source) {
-/*  Obtain the next integer from an input line.  If K>0, we first read a
- *  new input line from a file; if K<0, we read a line from the keyboard;
- *  if K=0 we use a line that has already been read (and perhaps partially
- *  scanned).  If we're at the end of the line or encounter an illegal
- *  character (not a digit, hyphen, or blank), we return 0. */
-  
-  long DIGIT, GETNUM, SIGN;
-
-  if(source != NULL) MAPLIN(source);
-  GETNUM = 0;
-
-  while (INLINE[LNPOSN] == 0)
-    {
-      if (LNPOSN > LNLENG) return(GETNUM);
-      ++LNPOSN;
-    }
-
-       SIGN=1;
-       if(INLINE[LNPOSN] != 9) goto L32;
-       SIGN= -1;
-L30:   LNPOSN=LNPOSN+1;
-L32:   if(LNPOSN > LNLENG || INLINE[LNPOSN] == 0) goto L42;
-       DIGIT=INLINE[LNPOSN]-64;
-       if(DIGIT < 0 || DIGIT > 9) goto L40;
-       GETNUM=GETNUM*10+DIGIT;
-        goto L30;
-
-L40:   GETNUM=0;
-L42:   GETNUM=GETNUM*SIGN;
-       LNPOSN=LNPOSN+1;
-       return(GETNUM);
-}
-
-int read_database(FILE* database) {
-       
-/*  Clear out the various text-pointer arrays.  All text is stored in array
- *  lines; each line is preceded by a word pointing to the next pointer (i.e.
- *  the word following the end of the line).  The pointer is negative if this is
- *  first line of a message.  The text-pointer arrays contain indices of
- *  pointer-words in lines.  STEXT(N) is short description of location N.
- *  LTEXT(N) is long description.  PTEXT(N) points to message for PROP(N)=0.
- *  Successive prop messages are found by chasing pointers.  RTEXT contains
- *  section 6's stuff.  CTEXT(N) points to a player-class message.  TTEXT is for
- *  section 14.  We also clear COND (see description of section 9 for details). */
-
-  for (int I=1; I<=300; I++) {
-    if(I <= 100) PTEXT[I] = 0;
-    if(I <= RTXSIZ) RTEXT[I] = 0;
-    if(I <= CLSMAX) CTEXT[I] = 0;
-    if(I <= 100) OBJSND[I] = 0;
-    if(I <= 100) OBJTXT[I] = 0;
-    if(I > LOCSIZ) break;
-    STEXT[I] = 0;
-    LTEXT[I] = 0;
-    COND[I] = 0;
-    KEY[I] = 0;
-    LOCSND[I] = 0;
-  }
-
-  LINUSE = 1;
-  TRVS = 1;
-  CLSSES = 0;
-  TRNVLS = 0;
-
-/*  Start new data section.  Sect is the section number. */
-
- L1002: SECT=GETNUM(database);
-  OLDLOC= -1;
-  switch (SECT) {
-  case 0: return(0);
-  case 1: goto L1004;
-  case 2: goto L1004;
-  case 3: goto L1030;
-  case 4: goto L1040;
-  case 5: goto L1004;
-  case 6: goto L1004;
-  case 7: goto L1050;
-  case 8: goto L1060;
-  case 9: goto L1070;
-  case 10: goto L1004;
-  case 11: goto L1080;
-  case 12: break;
-  case 13: goto L1090;
-  case 14: goto L1004;
-  default: BUG(9);
-  }
-
-/*  Sections 1, 2, 5, 6, 10, 14.  Read messages and set up pointers. */
-
-L1004: KK=LINUSE;
-L1005: LINUSE=KK;
-       LOC=GETNUM(database);
-       if(LNLENG >= LNPOSN+70)BUG(0);
-       if(LOC == -1) goto L1002;
-       if(LNLENG < LNPOSN)BUG(1);
-L1006: KK=KK+1;
-       if(KK >= LINSIZ)BUG(2);
-       LINES[KK]=GETTXT(false,false,false);
-       if(LINES[KK] != -1) goto L1006;
-       LINES[LINUSE]=KK;
-       if(LOC == OLDLOC) goto L1005;
-       OLDLOC=LOC;
-       LINES[LINUSE]= -KK;
-       if(SECT == 14) goto L1014;
-       if(SECT == 10) goto L1012;
-       if(SECT == 6) goto L1011;
-       if(SECT == 5) goto L1010;
-       if(LOC > LOCSIZ)BUG(10);
-       if(SECT == 1) goto L1008;
-
-       STEXT[LOC]=LINUSE;
-        goto L1005;
-
-L1008: LTEXT[LOC]=LINUSE;
-        goto L1005;
-
-L1010: if(LOC > 0 && LOC <= 100)PTEXT[LOC]=LINUSE;
-        goto L1005;
-
-L1011: if(LOC > RTXSIZ)BUG(6);
-       RTEXT[LOC]=LINUSE;
-        goto L1005;
-
-L1012: CLSSES=CLSSES+1;
-       if(CLSSES > CLSMAX)BUG(11);
-       CTEXT[CLSSES]=LINUSE;
-       CVAL[CLSSES]=LOC;
-        goto L1005;
-
-L1014: TRNVLS=TRNVLS+1;
-       if(TRNVLS > TRNSIZ)BUG(11);
-       TTEXT[TRNVLS]=LINUSE;
-       TRNVAL[TRNVLS]=LOC;
-        goto L1005;
-
-/*  The stuff for section 3 is encoded here.  Each "from-location" gets a
- *  contiguous section of the "TRAVEL" array.  Each entry in travel is
- *  NEWLOC*1000 + KEYWORD (from section 4, motion verbs), and is negated if
- *  this is the last entry for this location.  KEY(N) is the index in travel
- *  of the first option at location N. */
-
-L1030: LOC=GETNUM(database);
-       if(LOC == -1) goto L1002;
-       NEWLOC=GETNUM(NULL);
-       if(KEY[LOC] != 0) goto L1033;
-       KEY[LOC]=TRVS;
-        goto L1035;
-L1033: TRVS--; TRAVEL[TRVS]= -TRAVEL[TRVS]; TRVS++;
-L1035: L=GETNUM(NULL);
-       if(L == 0) goto L1039;
-       TRAVEL[TRVS]=NEWLOC*1000+L;
-       TRVS=TRVS+1;
-       if(TRVS == TRVSIZ)BUG(3);
-        goto L1035;
-L1039: TRVS--; TRAVEL[TRVS]= -TRAVEL[TRVS]; TRVS++;
-        goto L1030;
-
-/*  Here we read in the vocabulary.  KTAB(N) is the word number, ATAB(N) is
- *  the corresponding word.  The -1 at the end of section 4 is left in KTAB
- *  as an end-marker. */
-
-L1040:
-       for (TABNDX=1; TABNDX<=TABSIZ; TABNDX++) {
-       KTAB[TABNDX]=GETNUM(database);
-       if(KTAB[TABNDX] == -1) goto L1002;
-       ATAB[TABNDX]=GETTXT(true,true,true);
-       } /* end loop */
-       BUG(4);
-
-/*  Read in the initial locations for each object.  Also the immovability info.
- *  plac contains initial locations of objects.  FIXD is -1 for immovable
- *  objects (including the snake), or = second loc for two-placed objects. */
-
-L1050: OBJ=GETNUM(database);
-       if(OBJ == -1) goto L1002;
-       PLAC[OBJ]=GETNUM(NULL);
-       FIXD[OBJ]=GETNUM(NULL);
-        goto L1050;
-
-/*  Read default message numbers for action verbs, store in ACTSPK. */
-
-L1060: VERB=GETNUM(database);
-       if(VERB == -1) goto L1002;
-       ACTSPK[VERB]=GETNUM(NULL);
-        goto L1060;
-
-/*  Read info about available liquids and other conditions, store in COND. */
-
-L1070: K=GETNUM(database);
-       if(K == -1) goto L1002;
-L1071: LOC=GETNUM(NULL);
-       if(LOC == 0) goto L1070;
-       if(is_set(COND[LOC],K)) BUG(8);
-       COND[LOC]=COND[LOC] + (1l << K);
-        goto L1071;
-
-/*  Read data for hints. */
-
-L1080: HNTMAX=0;
-L1081: K=GETNUM(database);
-       if(K == -1) goto L1002;
-       if(K <= 0 || K > HNTSIZ)BUG(7);
-       for (int I=1; I<=4; I++) {
-       HINTS[K][I] =GETNUM(NULL);
-       } /* end loop */
-       HNTMAX=(HNTMAX>K ? HNTMAX : K);
-        goto L1081;
-
-/*  Read the sound/text info, store in OBJSND, OBJTXT, LOCSND. */
-
-L1090: K=GETNUM(database);
-       if(K == -1) goto L1002;
-       KK=GETNUM(NULL);
-       I=GETNUM(NULL);
-       if(I == 0) goto L1092;
-       OBJSND[K]=(KK>0 ? KK : 0);
-       OBJTXT[K]=(I>0 ? I : 0);
-        goto L1090;
-
-L1092: LOCSND[K]=KK;
-        goto L1090;
-}
-
-/*  Finish constructing internal data format */
-
-/*  Having read in the database, certain things are now constructed.  PROPS are
- *  set to zero.  We finish setting up COND by checking for forced-motion travel
- *  entries.  The PLAC and FIXD arrays are used to set up ATLOC(N) as the first
- *  object at location N, and LINK(OBJ) as the next object at the same location
- *  as OBJ.  (OBJ>100 indicates that FIXED(OBJ-100)=LOC; LINK(OBJ) is still the
- *  correct link to use.)  ABB is zeroed; it controls whether the abbreviated
- *  description is printed.  Counts modulo 5 unless "LOOK" is used. */
-
-void write_0d(FILE* c_file, FILE* header_file, long single, char* varname)
-{
-  fprintf(c_file, "long %s = %ld;\n", varname, single);
-  fprintf(header_file, "extern long %s;\n", varname);
-}
-
-void write_1d(FILE* c_file, FILE* header_file, long array[], long dim, char* varname)
-{
-  fprintf(c_file, "long %s[] = {\n", varname);
-  for (int i = 0; i < dim; ++i)
-    {
-      if (i % 10 == 0)
-       {
-         if (i > 0)
-           fprintf(c_file, "\n");
-         fprintf(c_file, "  ");
-       }
-      fprintf(c_file, "%ld, ", array[i]);
-    }
-  fprintf(c_file, "\n};\n");
-  fprintf(header_file, "extern long %s[%ld];\n", varname, dim);
-}
-
-void write_hints(FILE* c_file, FILE* header_file, long matrix[][5], long dim1, long dim2, char* varname)
-{
-  fprintf(c_file, "long %s[][%ld] = {\n", varname, dim2);
-  for (int i = 0; i < dim1; ++i)
-    {
-      fprintf(c_file, "  {");
-      for (int j = 0; j < dim2; ++j)
-       {
-         fprintf(c_file, "%ld, ", matrix[i][j]);
-       }
-      fprintf(c_file, "},\n");
-    }
-  fprintf(c_file, "};\n");
-  fprintf(header_file, "extern long %s[%ld][%ld];\n", varname, dim1, dim2);
-}
-
-void write_files(FILE* c_file, FILE* header_file)
-{
-  // preprocessor defines for the header
-  fprintf(header_file, "#define RTXSIZ 277\n");
-  fprintf(header_file, "#define CLSMAX 12\n");
-  fprintf(header_file, "#define LOCSIZ 185\n");
-  fprintf(header_file, "#define LINSIZ 12500\n");
-  fprintf(header_file, "#define TRNSIZ 5\n");
-  fprintf(header_file, "#define TABSIZ 330\n");
-  fprintf(header_file, "#define VRBSIZ 35\n");
-  fprintf(header_file, "#define HNTSIZ 20\n");
-  fprintf(header_file, "#define TRVSIZ 885\n");
-  fprintf(header_file, "\n");
-
-  // include the header in the C file
-  fprintf(c_file, "#include \"database.h\"\n");
-  fprintf(c_file, "\n");
-  
-  // content variables
-  write_0d(c_file, header_file, LINUSE, "LINUSE");
-  write_0d(c_file, header_file, TRVS, "TRVS");
-  write_0d(c_file, header_file, CLSSES, "CLSSES");
-  write_0d(c_file, header_file, TRNVLS, "TRNVLS");
-  write_0d(c_file, header_file, TABNDX, "TABNDX");
-  write_0d(c_file, header_file, HNTMAX, "HNTMAX");
-  write_1d(c_file, header_file, PTEXT, 100 + 1, "PTEXT");
-  write_1d(c_file, header_file, RTEXT, RTXSIZ + 1, "RTEXT");
-  write_1d(c_file, header_file, CTEXT, CLSMAX + 1, "CTEXT");
-  write_1d(c_file, header_file, OBJSND, 100 + 1, "OBJSND");
-  write_1d(c_file, header_file, OBJTXT, 100 + 1, "OBJTXT");
-  write_1d(c_file, header_file, STEXT, LOCSIZ + 1, "STEXT");
-  write_1d(c_file, header_file, LTEXT, LOCSIZ + 1, "LTEXT");
-  write_1d(c_file, header_file, COND, LOCSIZ + 1, "COND");
-  write_1d(c_file, header_file, KEY, LOCSIZ + 1, "KEY");
-  write_1d(c_file, header_file, LOCSND, LOCSIZ + 1, "LOCSND");
-  write_1d(c_file, header_file, LINES, LINSIZ + 1, "LINES");
-  write_1d(c_file, header_file, CVAL, CLSMAX + 1, "CVAL");
-  write_1d(c_file, header_file, TTEXT, TRNSIZ + 1, "TTEXT");
-  write_1d(c_file, header_file, TRNVAL, TRNSIZ + 1, "TRNVAL");
-  write_1d(c_file, header_file, TRAVEL, TRVSIZ + 1, "TRAVEL");
-  write_1d(c_file, header_file, KTAB, TABSIZ + 1, "KTAB");
-  write_1d(c_file, header_file, ATAB, TABSIZ + 1, "ATAB");
-  write_1d(c_file, header_file, PLAC, 100 + 1, "PLAC");
-  write_1d(c_file, header_file, FIXD, 100 + 1, "FIXD");
-  write_1d(c_file, header_file, ACTSPK, VRBSIZ + 1, "ACTSPK");
-  write_hints(c_file, header_file, HINTS, HNTSIZ + 1, 5, "HINTS");
-}
-
-int main(int argc, char** argv)
-{
-  argc = argc;
-  argv = argv;
-
-  FILE* database = fopen("adventure.text", "r");
-  read_database(database);
-  fclose(database);
-
-  FILE* c_file = fopen("database.c", "w");
-  FILE* header_file = fopen("database.h", "w");
-  write_files(c_file, header_file);
-  fclose(c_file);
-  fclose(header_file);
-  
-  return(EXIT_SUCCESS);
-}
diff --git a/funcs.h b/funcs.h
index 468bc3f28f21128add444352d82dd08c8d33b0f2..34f69cdfc261d6c2502b890abca3539c9a20e0fc 100644 (file)
--- a/funcs.h
+++ b/funcs.h
@@ -1,5 +1,5 @@
 #include <stdbool.h>
-#include "database/database.h"
+#include "database.h"
 
 /*  Statement functions
  *
diff --git a/init.c b/init.c
index 36c82b1bfa04af9671d1ebd7cf89551c70d6a83e..69901c1c8b91d39e16b25d553ae7d02035b700a9 100644 (file)
--- a/init.c
+++ b/init.c
@@ -7,7 +7,7 @@
 #include "main.h"
 #include "share.h"
 #include "funcs.h"
-#include "database/database.h"
+#include "database.h"
 
 /*
  * Initialisation
diff --git a/main.c b/main.c
index 53aff69af94fd7088b4c1a1425da42a954527ab4..e2c24e59847abc01b035fecc4432fd93da044e3e 100644 (file)
--- a/main.c
+++ b/main.c
@@ -9,7 +9,7 @@
 #include <getopt.h>
 #include <signal.h>
 #include "main.h"
-#include "database/database.h"
+#include "database.h"
 #include "misc.h"
 
 long ABB[186], ATLOC[186], BLKLIN = true, DFLAG,
diff --git a/misc.c b/misc.c
index 40bb1b91e0519a81ec922b8e03092c331b3ecb82..111848e1d5231eb7a9d00b59f3b9dfe4485e9bc4 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -6,7 +6,7 @@
 #include "share.h"     /* for SETUP */
 #include "misc.h"
 #include "funcs.h"
-#include "database/database.h"
+#include "database.h"
 
 /* hack to ignore GCC Unused Result */
 #define IGNORE(r) do{if(r){}}while(0)
diff --git a/score.c b/score.c
index 9bfca648fa52759e035fa258b311a23d94aa3c53..4ef68adda45949738704be1b78d8fdbb8b7e8d41 100644 (file)
--- a/score.c
+++ b/score.c
@@ -2,7 +2,7 @@
 #include "misc.h"
 #include "main.h"
 #include "share.h"
-#include "database/database.h"
+#include "database.h"
 
 /*
  * scoring and wrap-up