From: Eric S. Raymond Date: Mon, 29 May 2017 05:33:59 +0000 (-0400) Subject: Simplify build: nested makefiles considered harmful. X-Git-Tag: seed~25 X-Git-Url: https://jxself.org/git/?p=open-adventure.git;a=commitdiff_plain;h=5ae76995d2e8d412f565481505e4c7bc37260bb1 Simplify build: nested makefiles considered harmful. --- diff --git a/Makefile b/Makefile index 435adc4..5eab9d5 100644 --- 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 diff --git a/actions1.c b/actions1.c index 802a130..0cf8e97 100644 --- a/actions1.c +++ b/actions1.c @@ -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 index 0000000..5ec4034 --- /dev/null +++ b/adventure.text @@ -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 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 +#include +#include +#include + +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 index 18795ed..0000000 --- a/database/Makefile +++ /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 index 5ec4034..0000000 --- a/database/adventure.text +++ /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 index 9906f08..0000000 --- a/database/compile.c +++ /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 -#include -#include -#include - -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 468bc3f..34f69cd 100644 --- a/funcs.h +++ b/funcs.h @@ -1,5 +1,5 @@ #include -#include "database/database.h" +#include "database.h" /* Statement functions * diff --git a/init.c b/init.c index 36c82b1..69901c1 100644 --- 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 53aff69..e2c24e5 100644 --- a/main.c +++ b/main.c @@ -9,7 +9,7 @@ #include #include #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 40bb1b9..111848e 100644 --- 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 9bfca64..4ef68ad 100644 --- 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