/* Generated from adventure.yaml - do not hand-hack! */ #include "dungeon.h" const char* arbitrary_messages[] = { NULL, "Somewhere nearby is Colossal Cave, where others have found fortunes in\ntreasure and gold, though it is rumored that some who enter are never\nseen again. Magic is said to work in the cave. I will be your eyes\nand hands. Direct me with commands of 1 or 2 words. I should warn\nyou that I look at only the first five letters of each word, so you\'ll\nhave to enter \"northeast\" as \"ne\" to distinguish it from \"north\".\nYou can type \"help\" for some general hints. For information on how\nto end your adventure, scoring, etc., type \"info\".\n\t\t\t - - -\nThis program was originally developed by Willie Crowther. Most of the\nfeatures of the current program were added by Don Woods.", "A little dwarf with a big knife blocks your way.", "A little dwarf just walked around a corner, saw you, threw a little\naxe at you which missed, cursed, and ran away.", "There are %d threatening little dwarves in the room with you.", "There is a threatening little dwarf in the room with you!", "One sharp nasty knife is thrown at you!", "A hollow voice says \"PLUGH\".", "It gets you!", "It misses!", "I am unsure how you are facing. Use compass points or nearby objects.", "I don\'t know in from out here. Use compass points or name something\nin the general direction you want to go.", "I don\'t know how to apply that word here.", "I\'m game. Would you care to explain how?", "Sorry, but I am not allowed to give more detail. I will repeat the\nlong description of your location.", "It is now pitch dark. If you proceed you will likely fall into a pit.", "If you prefer, simply type w rather than west.", "Do you really want to quit now?", "You fell into a pit and broke every bone in your body!", "You are already carrying it!", "You can\'t be serious!", "The bird seemed unafraid at first, but as you approach it becomes\ndisturbed and you cannot catch it.", "You can catch the bird, but you cannot carry it.", "There is nothing here with a lock!", "You aren\'t carrying it!", "The little bird attacks the green snake, and in an astounding flurry\ndrives the snake away.", "You have no keys!", "It has no lock.", "I don\'t know how to lock or unlock such a thing.", "It was already locked.", "It was already unlocked.", "There is no way to get past the bear to unlock the chain, which is\nprobably just as well.", "Nothing happens.", "Where?", "There is nothing here to attack.", "The little bird is now dead. Its body disappears.", "Attacking the snake both doesn\'t work and is very dangerous.", "You killed a little dwarf.", "You attack a little dwarf, but he dodges out of the way.", "With what? Your bare hands?", "There is no way to go that direction.", "Please stick to 1- and 2-word commands.", "OK", "You can\'t unlock the keys.", "You have crawled around in some little holes and wound up back in the\nmain passage.", "I don\'t know where the cave is, but hereabouts no stream can run on\nthe surface for long. I would try the stream.", "I need more detailed instructions to do that.", "I can only tell you what you see as you move about and manipulate\nthings. I cannot tell you where remote things are.", "The ogre snarls and shoves you back.", "Huh?", "Welcome to Adventure!! Would you like instructions?", "Blasting requires dynamite.", "Your feet are now wet.", "I think I just lost my appetite.", "Thank you, it was delicious!", "Peculiar. Nothing unexpected happens.", "Your bottle is empty and the ground is wet.", "You can\'t pour that.", "Which way?", "Sorry, but I no longer seem to remember how it was you got here.", "You can\'t carry anything more. You\'ll have to drop something first.", "You can\'t go through a locked steel grate!", "I believe what you want is right here with you.", "You don\'t fit through a two-inch slit!", "I respectfully suggest you go across the bridge instead of jumping.", "There is no way across the fissure.", "You\'re not carrying anything.", "You are currently holding the following:", "It\'s not hungry (it\'s merely pinin\' for the fjords). Besides, you\nhave no bird seed.", "The snake has now devoured your bird.", "There\'s nothing here it wants to eat (except perhaps you).", "You fool, dwarves eat only coal! Now you\'ve made him *REALLY* mad!!", "You have nothing in which to carry it.", "Your bottle is already full.", "There is nothing here with which to fill the bottle.", "Don\'t be ridiculous!", "The door is extremely rusty and refuses to open.", "The plant indignantly shakes the oil off its leaves and asks, \"Water?\"", "The plant has exceptionally deep roots and cannot be pulled free.", "The dwarves\' knives vanish as they strike the walls of the cave.", "Something you\'re carrying won\'t fit through the tunnel with you.\nYou\'d best take inventory and drop something.", "You can\'t fit this five-foot clam through that little passage!", "You can\'t fit this five-foot oyster through that little passage!", "I advise you to put down the oyster before opening it. >WRENCH!<", "You don\'t have anything strong enough to open the clam.", "You don\'t have anything strong enough to open the oyster.", "A glistening pearl falls out of the clam and rolls away. Goodness,\nthis must really be an oyster. (I never was very good at identifying\nbivalves.) Whatever it is, it has now snapped shut again.", "The oyster creaks open, revealing nothing but oyster inside. It\npromptly snaps shut again.", "You have crawled around in some little holes and found your way\nblocked by a recent cave-in. You are now back in the main passage.", "There are faint rustling noises from the darkness behind you.", "Out from the shadows behind you pounces a bearded pirate! \"Har, har,\"\nhe chortles, \"I\'ll just take all this booty and hide it away with me\nchest deep in the maze!\" He snatches your treasure and vanishes into\nthe gloom.", "A sepulchral voice reverberating through the cave, says, \"Cave closing\nsoon. All adventurers exit immediately through main office.\"", "A mysterious recorded voice groans into life and announces:\n \"This exit is closed. Please leave via main office.\"", "It looks as though you\'re dead. Well, seeing as how it\'s so close to\nclosing time anyway, I think we\'ll just call it a day.", "The sepulchral voice intones, \"The cave is now closed.\" As the echoes\nfade, there is a blinding flash of light (and a small puff of orange\nsmoke). . . . As your eyes refocus, you look around and find...", "There is a loud explosion, and a twenty-foot hole appears in the far\nwall, burying the dwarves in the rubble. You march through the hole\nand find yourself in the main office, where a cheering band of\nfriendly elves carry the conquering adventurer off into the sunset.", "There is a loud explosion, and a twenty-foot hole appears in the far\nwall, burying the snakes in the rubble. A river of molten lava pours\nin through the hole, destroying everything in its path, including you!", "There is a loud explosion, and you are suddenly splashed across the\nwalls of the room.", "The resulting ruckus has awakened the dwarves. There are now several\nthreatening little dwarves in the room with you! Most of them throw\nknives at you! All of them get you!", "Oh, leave the poor unhappy bird alone.", "I daresay whatever you want is around here somewhere.", "You can\'t get there from here.", "You are being followed by a very large, tame bear.", "Now let\'s see you do it without suspending in mid-Adventure.", "There is nothing here with which to fill it.", "The sudden change in temperature has delicately shattered the vase.", "It is beyond your power to do that.", "I don\'t know how.", "It is too far up for you to reach.", "You killed a little dwarf. The body vanishes in a cloud of greasy\nblack smoke.", "The shell is very strong and is impervious to attack.", "What\'s the matter, can\'t you read? Now you\'d best start over.", "Well, that was remarkably pointless.", "The axe bounces harmlessly off the dragon\'s thick scales.", "The dragon looks rather nasty. You\'d best not try to get by.", "The little bird attacks the green dragon, and in an astounding flurry\ngets burnt to a cinder. The ashes blow away.", "Okay, from now on I\'ll only describe a place in full the first time\nyou come to it. To get the full description, say \"look\".", "Trolls are close relatives with the rocks and have skin as tough as\nthat of a rhinoceros. The troll fends off your blows effortlessly.", "The troll deftly catches the axe, examines it carefully, and tosses it\nback, declaring, \"Good workmanship, but it\'s not valuable enough.\"", "The troll catches your treasure and scurries away out of sight.", "The troll refuses to let you cross.", "There is no longer any way across the chasm.", "With what? Your bare hands? Against *HIS* bear hands??", "The bear is confused; he only wants to be your friend.", "For crying out loud, the poor thing is already dead!", "The bear is still chained to the wall.", "The chain is still locked.", "The chain is now unlocked.", "The chain is now locked.", "There is nothing here to which the chain can be locked.", "Do you want the hint?", "Gluttony is not one of the troll\'s vices. Avarice, however, is.", "Your lamp is getting dim. You\'d best start wrapping this up, unless\nyou can find some fresh batteries. I seem to recall there\'s a vending\nmachine in the maze. Bring some coins with you.", "Your lamp has run out of power.", "Please answer the question.", "There are faint rustling noises from the darkness behind you. As you\nturn toward them, the beam of your lamp falls across a bearded pirate.\nHe is carrying a large chest. \"Shiver me timbers!\" he cries, \"I\'ve\nbeen spotted! I\'d best hie meself off to the maze to hide me chest!\"\nWith that, he vanishes into the gloom.", "Your lamp is getting dim. You\'d best go back for those batteries.", "Your lamp is getting dim. I\'m taking the liberty of replacing the\nbatteries.", "Your lamp is getting dim, and you\'re out of spare batteries. You\'d\nbest start wrapping this up.", "You sift your fingers through the dust, but succeed only in\nobliterating the cryptic message.", "Hmmm, this looks like a clue, which means it\'ll cost you 10 points to\nread it. Should I go ahead and read it anyway?", "It says, \"There is a way out of this place. Do you need any more\ninformation to escape? Sorry, but this initial hint is all you get.\"", "I\'m afraid I don\'t understand.", "Your hand passes through it as though it weren\'t there.", "You prod the nearest dwarf, who wakes up grumpily, takes one look at\nyou, curses, and grabs for his axe.", "Is this acceptable?", "The ogre doesn\'t appear to be hungry.", "The ogre, who despite his bulk is quite agile, easily dodges your\nattack. He seems almost amused by your puny effort.", "The ogre, distracted by your rush, is struck by the knife. With a\nblood-curdling yell he turns and bounds after the dwarves, who flee\nin panic. You are left alone in the room.", "The ogre, distracted by your rush, is struck by the knife. With a\nblood-curdling yell he turns and bounds after the dwarf, who flees\nin panic. You are left alone in the room.", "The bird flies about agitatedly for a moment.", "The bird flies agitatedly about the cage.", "The bird flies about agitatedly for a moment, then disappears through\nthe crack. It reappears shortly, carrying in its beak a jade\nnecklace, which it drops at your feet.", "You empty the bottle into the urn, which promptly ejects the water\nwith uncanny accuracy, squirting you directly between the eyes.", "Your bottle is now empty and the urn is full of oil.", "The urn is already full of oil.", "There\'s no way to get the oil out of the urn.", "The urn is far too firmly embedded for your puny strength to budge it.", "As you rub the urn, there is a flash of light and a genie appears.\nHis aspect is stern as he advises: \"One who wouldst traffic in\nprecious stones must first learn to recognize the signals thereof.\"\nHe wrests the urn from the stone, leaving a small cavity. Turning to\nface you again, he fixes you with a steely eye and intones: \"Caution!\"\nGenie and urn vanish in a cloud of amber smoke. The smoke condenses\nto form a rare amber gemstone, resting in the cavity in the rock.", "I suppose you collect doughnut holes, too?", "The gem fits easily into the cavity.", "The persian rug stiffens and rises a foot or so off the ground.", "The persian rug draped over your shoulder seems to wriggle for a\nmoment, but then subsides.", "The persian rug settles gently to the ground.", "The rug hovers stubbornly where it is.", "The rug does not appear inclined to cooperate.", "If you mean to use the persian rug, it does not appear inclined to\ncooperate.", "Though you flap your arms furiously, it is to no avail.", "You board the persian rug, which promptly whisks you across the chasm.\nYou have time for a fleeting glimpse of a two thousand foot drop to a\nmighty river; then you find yourself on the other side.", "The rug ferries you back across the chasm.", "All is silent.", "The stream is gurgling placidly.", "The wind whistles coldly past your ears.", "The stream splashes loudly into the pool.", "You are unable to make anything of the splashing noise.", "You can hear the murmuring of the beanstalks and the snoring of the\ndwarves.", "A loud hissing emanates from the snake pit.", "The air is filled with a dull rumbling sound.", "The roar is quite loud here.", "The roaring is so loud that it drowns out all other sound.", "The bird eyes you suspiciously and flutters away. A moment later you\nfeel something wet land on your head, but upon looking up you can see\nno sign of the culprit.", "There are only a few drops--not enough to carry.", "(Uh, y\'know, that wasn\'t very bright.)", "It\'s a pity you took so long about it.", "Upstream or downstream?", NULL, "The waters are crashing loudly against the shore.", "%d of them throw knives at you!", "%d of them get you!", "One of them gets you!", "None of them hits you!", "Sorry, I don\'t know the word \"%s\".", "What do you want to do with the %s?", "I see no %s here.", "%s what?", "Okay, \"%s\".", "You have garnered %d out of a possible %d points, using %d turn%S.", "I can suspend your Adventure for you so that you can resume later, but\nit will cost you 5 points.", "I am prepared to give you a hint, but it will cost you %d point%S.", "You scored %d out of a possible %d, using %d turn%S.", "To achieve the next higher rating, you need %d more point%S.", "To achieve the next higher rating would be a neat trick!\nCongratulations!!", "You just went off my scale!!", "To resume your Adventure, start a new game and then say \"RESUME\".", "To resume an earlier Adventure, you must abandon the current one.", "I\'m sorry, but that Adventure was begun using Version %d.%d of the\nsave file format, and this program uses Version %d.%d. You must find an instance\nusing that other version in order to resume that Adventure.", "Sorry, but the path twisted and turned so much that I can\'t figure\nout which way to go to get back.", "You don\'t have to say \"go\" every time; just specify a direction or, if\nit\'s nearby, name the place to which you wish to move.", "This command requires a numeric argument.", }; const class_t classes[] = { { .threshold = 0, .message = NULL, }, { .threshold = 45, .message = "You are obviously a rank amateur. Better luck next time.", }, { .threshold = 120, .message = "Your score qualifies you as a novice class adventurer.", }, { .threshold = 170, .message = "You have achieved the rating: \"Experienced Adventurer\".", }, { .threshold = 250, .message = "You may now consider yourself a \"Seasoned Adventurer\".", }, { .threshold = 320, .message = "You have reached \"Junior Master\" status.", }, { .threshold = 375, .message = "Your score puts you in Master Adventurer Class C.", }, { .threshold = 410, .message = "Your score puts you in Master Adventurer Class B.", }, { .threshold = 426, .message = "Your score puts you in Master Adventurer Class A.", }, { .threshold = 429, .message = "All of Adventuredom gives tribute to you, Adventurer Grandmaster!", }, { .threshold = 9999, .message = "\'Adventuredom stands in awe -- you have now joined the ranks of the\n W O R L D C H A M P I O N A D V E N T U R E R S !\nIt may interest you to know that the Dungeon-Master himself has, to\nmy knowledge, never achieved this threshhold in fewer than 330 turns.\'", }, }; const turn_threshold_t turn_thresholds[] = { { .threshold = 350, .point_loss = 2, .message = "Tsk! A wizard wouldn\'t have to take 350 turns. This is going to cost\nyou a couple of points.", }, { .threshold = 500, .point_loss = 3, .message = "500 turns? That\'s another few points you\'ve lost.", }, { .threshold = 1000, .point_loss = 5, .message = "Are you still at it? Five points off for exceeding 1000 turns!", }, { .threshold = 2500, .point_loss = 10, .message = "Good grief, don\'t you *EVER* give up? Do you realize you\'ve spent\nover 2500 turns at this? That\'s another ten points off, a total of\ntwenty points lost for taking so long.", }, }; const location_t locations[] = { { // 0: LOC_NOWHERE .description = { .small = NULL, .big = NULL, }, .sound = SILENT, .loud = false, }, { // 1: LOC_START .description = { .small = "You\'re in front of building.", .big = "You are standing at the end of a road before a small brick building.\nAround you is a forest. A small stream flows out of the building and\ndown a gully.", }, .sound = STREAM_GURGLES, .loud = false, }, { // 2: LOC_HILL .description = { .small = "You\'re at hill in road.", .big = "You have walked up a hill, still in the forest. The road slopes back\ndown the other side of the hill. There is a building in the distance.", }, .sound = SILENT, .loud = false, }, { // 3: LOC_BUILDING .description = { .small = "You\'re inside building.", .big = "You are inside a building, a well house for a large spring.", }, .sound = STREAM_GURGLES, .loud = false, }, { // 4: LOC_VALLEY .description = { .small = "You\'re in valley.", .big = "You are in a valley in the forest beside a stream tumbling along a\nrocky bed.", }, .sound = STREAM_GURGLES, .loud = false, }, { // 5: LOC_ROADEND .description = { .small = "You\'re at end of road.", .big = "The road, which approaches from the east, ends here amid the trees.", }, .sound = SILENT, .loud = false, }, { // 6: LOC_CLIFF .description = { .small = "You\'re at cliff.", .big = "The forest thins out here to reveal a steep cliff. There is no way\ndown, but a small ledge can be seen to the west across the chasm.", }, .sound = SILENT, .loud = false, }, { // 7: LOC_SLIT .description = { .small = "You\'re at slit in streambed.", .big = "At your feet all the water of the stream splashes into a 2-inch slit\nin the rock. Downstream the streambed is bare rock.", }, .sound = STREAM_GURGLES, .loud = false, }, { // 8: LOC_GRATE .description = { .small = "You\'re outside grate.", .big = "You are in a 20-foot depression floored with bare dirt. Set into the\ndirt is a strong steel grate mounted in concrete. A dry streambed\nleads into the depression.", }, .sound = SILENT, .loud = false, }, { // 9: LOC_BELOWGRATE .description = { .small = "You\'re below the grate.", .big = "You are in a small chamber beneath a 3x3 steel grate to the surface.\nA low crawl over cobbles leads inward to the west.", }, .sound = SILENT, .loud = false, }, { // 10: LOC_COBBLE .description = { .small = "You\'re in cobble crawl.", .big = "You are crawling over cobbles in a low passage. There is a dim light\nat the east end of the passage.", }, .sound = SILENT, .loud = false, }, { // 11: LOC_DEBRIS .description = { .small = "You\'re in debris room.", .big = "You are in a debris room filled with stuff washed in from the surface.\nA low wide passage with cobbles becomes plugged with mud and debris\nhere, but an awkward canyon leads upward and west. In the mud someone\nhas scrawled, \"MAGIC WORD XYZZY\".", }, .sound = SILENT, .loud = false, }, { // 12: LOC_AWKWARD .description = { .small = NULL, .big = "You are in an awkward sloping east/west canyon.", }, .sound = SILENT, .loud = false, }, { // 13: LOC_BIRD .description = { .small = "You\'re in bird chamber.", .big = "You are in a splendid chamber thirty feet high. The walls are frozen\nrivers of orange stone. An awkward canyon and a good passage exit\nfrom east and west sides of the chamber.", }, .sound = SILENT, .loud = false, }, { // 14: LOC_PITTOP .description = { .small = "You\'re at top of small pit.", .big = "At your feet is a small pit breathing traces of white mist. An east\npassage ends here except for a small crack leading on.", }, .sound = SILENT, .loud = false, }, { // 15: LOC_MISTHALL .description = { .small = "You\'re in Hall of Mists.", .big = "You are at one end of a vast hall stretching forward out of sight to\nthe west. There are openings to either side. Nearby, a wide stone\nstaircase leads downward. The hall is filled with wisps of white mist\nswaying to and fro almost as if alive. A cold wind blows up the\nstaircase. There is a passage at the top of a dome behind you.", }, .sound = WIND_WHISTLES, .loud = false, }, { // 16: LOC_CRACK .description = { .small = NULL, .big = "The crack is far too small for you to follow. At its widest it is\nbarely wide enough to admit your foot.\'", }, .sound = SILENT, .loud = false, }, { // 17: LOC_EASTBANK .description = { .small = "You\'re on east bank of fissure.", .big = "You are on the east bank of a fissure slicing clear across the hall.\nThe mist is quite thick here, and the fissure is too wide to jump.", }, .sound = SILENT, .loud = false, }, { // 18: LOC_NUGGET .description = { .small = "You\'re in nugget-of-gold room.", .big = "This is a low room with a crude note on the wall. The note says,\n\"You won\'t get it up the steps\".", }, .sound = SILENT, .loud = false, }, { // 19: LOC_KINGHALL .description = { .small = "You\'re in Hall of Mt King.", .big = "You are in the Hall of the Mountain King, with passages off in all\ndirections.", }, .sound = SILENT, .loud = false, }, { // 20: LOC_NECKBROKE .description = { .small = NULL, .big = "You are at the bottom of the pit with a broken neck.", }, .sound = SILENT, .loud = false, }, { // 21: LOC_NOMAKE .description = { .small = NULL, .big = "You didn\'t make it.", }, .sound = SILENT, .loud = false, }, { // 22: LOC_DOME .description = { .small = NULL, .big = "The dome is unclimbable.", }, .sound = SILENT, .loud = false, }, { // 23: LOC_WESTEND .description = { .small = "You\'re at west end of Twopit Room.", .big = "You are at the west end of the Twopit Room. There is a large hole in\nthe wall above the pit at this end of the room.", }, .sound = SILENT, .loud = false, }, { // 24: LOC_EASTPIT .description = { .small = "You\'re in east pit.", .big = "You are at the bottom of the eastern pit in the Twopit Room. There is\na small pool of oil in one corner of the pit.", }, .sound = SILENT, .loud = false, }, { // 25: LOC_WESTPIT .description = { .small = "You\'re in west pit.", .big = "You are at the bottom of the western pit in the Twopit Room. There is\na large hole in the wall about 25 feet above you.", }, .sound = SILENT, .loud = false, }, { // 26: LOC_CLIMBSTALK .description = { .small = NULL, .big = "You clamber up the plant and scurry through the hole at the top.", }, .sound = SILENT, .loud = false, }, { // 27: LOC_WESTBANK .description = { .small = "You\'re on west bank of fissure.", .big = "You are on the west side of the fissure in the Hall of Mists.", }, .sound = SILENT, .loud = false, }, { // 28: LOC_FLOORHOLE .description = { .small = "You\'re in n/s passage above e/w passage.", .big = "You are in a low n/s passage at a hole in the floor. The hole goes\ndown to an e/w passage.", }, .sound = SILENT, .loud = false, }, { // 29: LOC_SOUTHSIDE .description = { .small = NULL, .big = "You are in the south side chamber.", }, .sound = SILENT, .loud = false, }, { // 30: LOC_WESTSIDE .description = { .small = "You\'re in the west side chamber.", .big = "You are in the west side chamber of the Hall of the Mountain King.\nA passage continues west and up here.", }, .sound = SILENT, .loud = false, }, { // 31: LOC_BUILDING1 .description = { .small = NULL, .big = "", }, .sound = SILENT, .loud = false, }, { // 32: LOC_SNAKEBLOCK .description = { .small = NULL, .big = "You can\'t get by the snake.", }, .sound = SILENT, .loud = false, }, { // 33: LOC_Y2 .description = { .small = "You\'re at \"Y2\".", .big = "You are in a large room, with a passage to the south, a passage to the\nwest, and a wall of broken rock to the east. There is a large \"Y2\" on\na rock in the room\'s center.", }, .sound = SILENT, .loud = false, }, { // 34: LOC_JUMBLE .description = { .small = NULL, .big = "You are in a jumble of rock, with cracks everywhere.", }, .sound = SILENT, .loud = false, }, { // 35: LOC_WINDOW1 .description = { .small = "You\'re at window on pit.", .big = "You\'re at a low window overlooking a huge pit, which extends up out of\nsight. A floor is indistinctly visible over 50 feet below. Traces of\nwhite mist cover the floor of the pit, becoming thicker to the right.\nMarks in the dust around the window would seem to indicate that\nsomeone has been here recently. Directly across the pit from you and\n25 feet away there is a similar window looking into a lighted room. A\nshadowy figure can be seen there peering back at you.", }, .sound = SILENT, .loud = false, }, { // 36: LOC_BROKEN .description = { .small = "You\'re in dirty passage.", .big = "You are in a dirty broken passage. To the east is a crawl. To the\nwest is a large passage. Above you is a hole to another passage.", }, .sound = SILENT, .loud = false, }, { // 37: LOC_SMALLPITBRINK .description = { .small = "You\'re at brink of small pit.", .big = "You are on the brink of a small clean climbable pit. A crawl leads\nwest.", }, .sound = SILENT, .loud = false, }, { // 38: LOC_SMALLPIT .description = { .small = "You\'re at bottom of pit with stream.", .big = "You are in the bottom of a small pit with a little stream, which\nenters and exits through tiny slits.", }, .sound = STREAM_GURGLES, .loud = false, }, { // 39: LOC_DUSTY .description = { .small = "You\'re in dusty rock room.", .big = "You are in a large room full of dusty rocks. There is a big hole in\nthe floor. There are cracks everywhere, and a passage leading east.", }, .sound = SILENT, .loud = false, }, { // 40: LOC_PARALLEL1 .description = { .small = NULL, .big = "You have crawled through a very low wide passage parallel to and north\nof the Hall of Mists.", }, .sound = SILENT, .loud = false, }, { // 41: LOC_MISTWEST .description = { .small = "You\'re at west end of Hall of Mists.", .big = "You are at the west end of the Hall of Mists. A low wide crawl\ncontinues west and another goes north. To the south is a little\npassage 6 feet off the floor.", }, .sound = SILENT, .loud = false, }, { // 42: LOC_ALIKE1 .description = { .small = NULL, .big = "You are in a maze of twisty little passages, all alike.", }, .sound = SILENT, .loud = false, }, { // 43: LOC_ALIKE2 .description = { .small = NULL, .big = "You are in a maze of twisty little passages, all alike.", }, .sound = SILENT, .loud = false, }, { // 44: LOC_ALIKE3 .description = { .small = NULL, .big = "You are in a maze of twisty little passages, all alike.", }, .sound = SILENT, .loud = false, }, { // 45: LOC_ALIKE4 .description = { .small = NULL, .big = "You are in a maze of twisty little passages, all alike.", }, .sound = SILENT, .loud = false, }, { // 46: LOC_DEADEND1 .description = { .small = NULL, .big = "Dead end", }, .sound = SILENT, .loud = false, }, { // 47: LOC_DEADEND2 .description = { .small = NULL, .big = "Dead end", }, .sound = SILENT, .loud = false, }, { // 48: LOC_DEADEND3 .description = { .small = NULL, .big = "Dead end", }, .sound = SILENT, .loud = false, }, { // 49: LOC_ALIKE5 .description = { .small = NULL, .big = "You are in a maze of twisty little passages, all alike.", }, .sound = SILENT, .loud = false, }, { // 50: LOC_ALIKE6 .description = { .small = NULL, .big = "You are in a maze of twisty little passages, all alike.", }, .sound = SILENT, .loud = false, }, { // 51: LOC_ALIKE7 .description = { .small = NULL, .big = "You are in a maze of twisty little passages, all alike.", }, .sound = SILENT, .loud = false, }, { // 52: LOC_ALIKE8 .description = { .small = NULL, .big = "You are in a maze of twisty little passages, all alike.", }, .sound = SILENT, .loud = false, }, { // 53: LOC_ALIKE9 .description = { .small = NULL, .big = "You are in a maze of twisty little passages, all alike.", }, .sound = SILENT, .loud = false, }, { // 54: LOC_DEADEND4 .description = { .small = NULL, .big = "Dead end", }, .sound = SILENT, .loud = false, }, { // 55: LOC_ALIKE10 .description = { .small = NULL, .big = "You are in a maze of twisty little passages, all alike.", }, .sound = SILENT, .loud = false, }, { // 56: LOC_DEADEND5 .description = { .small = NULL, .big = "Dead end", }, .sound = SILENT, .loud = false, }, { // 57: LOC_PITBRINK .description = { .small = "You\'re at brink of pit.", .big = "You are on the brink of a thirty foot pit with a massive orange column\ndown one wall. You could climb down here but you could not get back\nup. The maze continues at this level.", }, .sound = SILENT, .loud = false, }, { // 58: LOC_DEADEND6 .description = { .small = NULL, .big = "Dead end", }, .sound = SILENT, .loud = false, }, { // 59: LOC_PARALLEL2 .description = { .small = NULL, .big = "You have crawled through a very low wide passage parallel to and north\nof the Hall of Mists.", }, .sound = SILENT, .loud = false, }, { // 60: LOC_LONGEAST .description = { .small = "You\'re at east end of long hall.", .big = "You are at the east end of a very long hall apparently without side\nchambers. To the east a low wide crawl slants up. To the north a\nround two foot hole slants down.", }, .sound = SILENT, .loud = false, }, { // 61: LOC_LONGWEST .description = { .small = "You\'re at west end of long hall.", .big = "You are at the west end of a very long featureless hall. The hall\njoins up with a narrow north/south passage.", }, .sound = SILENT, .loud = false, }, { // 62: LOC_CROSSOVER .description = { .small = NULL, .big = "You are at a crossover of a high n/s passage and a low e/w one.", }, .sound = SILENT, .loud = false, }, { // 63: LOC_DEADEND7 .description = { .small = NULL, .big = "Dead end", }, .sound = SILENT, .loud = false, }, { // 64: LOC_COMPLEX .description = { .small = "You\'re at complex junction.", .big = "You are at a complex junction. A low hands and knees passage from the\nnorth joins a higher crawl from the east to make a walking passage\ngoing west. There is also a large room above. The air is damp here.", }, .sound = WIND_WHISTLES, .loud = false, }, { // 65: LOC_BEDQUILT .description = { .small = "You\'re in Bedquilt.", .big = "You are in Bedquilt, a long east/west passage with holes everywhere.\nTo explore at random select north, south, up, or down.", }, .sound = SILENT, .loud = false, }, { // 66: LOC_SWISSCHEESE .description = { .small = "You\'re in Swiss Cheese Room.", .big = "You are in a room whose walls resemble swiss cheese. Obvious passages\ngo west, east, ne, and nw. Part of the room is occupied by a large\nbedrock block.", }, .sound = SILENT, .loud = false, }, { // 67: LOC_EASTEND .description = { .small = "You\'re at east end of Twopit Room.", .big = "You are at the east end of the Twopit Room. The floor here is\nlittered with thin rock slabs, which make it easy to descend the pits.\nThere is a path here bypassing the pits to connect passages from east\nand west. There are holes all over, but the only big one is on the\nwall directly over the west pit where you can\'t get to it.", }, .sound = SILENT, .loud = false, }, { // 68: LOC_SLAB .description = { .small = "You\'re in Slab Room.", .big = "You are in a large low circular chamber whose floor is an immense slab\nfallen from the ceiling (Slab Room). East and west there once were\nlarge passages, but they are now filled with boulders. Low small\npassages go north and south, and the south one quickly bends west\naround the boulders.", }, .sound = SILENT, .loud = false, }, { // 69: LOC_SECRET1 .description = { .small = NULL, .big = "You are in a secret n/s canyon above a large room.", }, .sound = SILENT, .loud = false, }, { // 70: LOC_SECRET2 .description = { .small = NULL, .big = "You are in a secret n/s canyon above a sizable passage.", }, .sound = SILENT, .loud = false, }, { // 71: LOC_THREEJUNCTION .description = { .small = "You\'re at junction of three secret canyons.", .big = "You are in a secret canyon at a junction of three canyons, bearing\nnorth, south, and se. The north one is as tall as the other two\ncombined.", }, .sound = SILENT, .loud = false, }, { // 72: LOC_LOWROOM .description = { .small = "You\'re in large low room.", .big = "You are in a large low room. Crawls lead north, se, and sw.", }, .sound = SILENT, .loud = false, }, { // 73: LOC_DEADCRAWL .description = { .small = NULL, .big = "Dead end crawl.", }, .sound = SILENT, .loud = false, }, { // 74: LOC_SECRET3 .description = { .small = "You\'re in secret e/w canyon above tight canyon.", .big = "You are in a secret canyon which here runs e/w. It crosses over a\nvery tight canyon 15 feet below. If you go down you may not be able\nto get back up.", }, .sound = SILENT, .loud = false, }, { // 75: LOC_WIDEPLACE .description = { .small = NULL, .big = "You are at a wide place in a very tight n/s canyon.", }, .sound = SILENT, .loud = false, }, { // 76: LOC_TIGHTPLACE .description = { .small = NULL, .big = "The canyon here becomes too tight to go further south.", }, .sound = SILENT, .loud = false, }, { // 77: LOC_TALL .description = { .small = NULL, .big = "You are in a tall e/w canyon. A low tight crawl goes 3 feet north and\nseems to open up.", }, .sound = SILENT, .loud = false, }, { // 78: LOC_BOULDERS1 .description = { .small = NULL, .big = "The canyon runs into a mass of boulders -- dead end.", }, .sound = SILENT, .loud = false, }, { // 79: LOC_SEWER .description = { .small = NULL, .big = "The stream flows out through a pair of 1 foot diameter sewer pipes.\nIt would be advisable to use the exit.", }, .sound = SILENT, .loud = false, }, { // 80: LOC_ALIKE11 .description = { .small = NULL, .big = "You are in a maze of twisty little passages, all alike.", }, .sound = SILENT, .loud = false, }, { // 81: LOC_DEADEND8 .description = { .small = NULL, .big = "Dead end", }, .sound = SILENT, .loud = false, }, { // 82: LOC_DEADEND9 .description = { .small = NULL, .big = "Dead end", }, .sound = SILENT, .loud = false, }, { // 83: LOC_ALIKE12 .description = { .small = NULL, .big = "You are in a maze of twisty little passages, all alike.", }, .sound = SILENT, .loud = false, }, { // 84: LOC_ALIKE13 .description = { .small = NULL, .big = "You are in a maze of twisty little passages, all alike.", }, .sound = SILENT, .loud = false, }, { // 85: LOC_DEADEND10 .description = { .small = NULL, .big = "Dead end", }, .sound = SILENT, .loud = false, }, { // 86: LOC_DEADEND11 .description = { .small = NULL, .big = "Dead end", }, .sound = SILENT, .loud = false, }, { // 87: LOC_ALIKE14 .description = { .small = NULL, .big = "You are in a maze of twisty little passages, all alike.", }, .sound = SILENT, .loud = false, }, { // 88: LOC_NARROW .description = { .small = "You\'re in narrow corridor.", .big = "You are in a long, narrow corridor stretching out of sight to the\nwest. At the eastern end is a hole through which you can see a\nprofusion of leaves.", }, .sound = SILENT, .loud = false, }, { // 89: LOC_NOCLIMB .description = { .small = NULL, .big = "There is nothing here to climb. Use \"up\" or \"out\" to leave the pit.", }, .sound = SILENT, .loud = false, }, { // 90: LOC_PLANTTOP .description = { .small = NULL, .big = "You have climbed up the plant and out of the pit.", }, .sound = SILENT, .loud = false, }, { // 91: LOC_INCLINE .description = { .small = "You\'re at steep incline above large room.", .big = "You are at the top of a steep incline above a large room. You could\nclimb down here, but you would not be able to climb up. There is a\npassage leading back to the north.", }, .sound = SILENT, .loud = false, }, { // 92: LOC_GIANTROOM .description = { .small = "You\'re in Giant Room.", .big = "You are in the Giant Room. The ceiling here is too high up for your\nlamp to show it. Cavernous passages lead east, north, and south. On\nthe west wall is scrawled the inscription, \"FEE FIE FOE FOO\" [sic].", }, .sound = SILENT, .loud = false, }, { // 93: LOC_CAVEIN .description = { .small = NULL, .big = "The passage here is blocked by a recent cave-in.", }, .sound = SILENT, .loud = false, }, { // 94: LOC_IMMENSE .description = { .small = NULL, .big = "You are at one end of an immense north/south passage.", }, .sound = WIND_WHISTLES, .loud = false, }, { // 95: LOC_WATERFALL .description = { .small = "You\'re in cavern with waterfall.", .big = "You are in a magnificent cavern with a rushing stream, which cascades\nover a sparkling waterfall into a roaring whirlpool which disappears\nthrough a hole in the floor. Passages exit to the south and west.", }, .sound = STREAM_SPLASHES, .loud = false, }, { // 96: LOC_SOFTROOM .description = { .small = "You\'re in Soft Room.", .big = "You are in the Soft Room. The walls are covered with heavy curtains,\nthe floor with a thick pile carpet. Moss covers the ceiling.", }, .sound = SILENT, .loud = false, }, { // 97: LOC_ORIENTAL .description = { .small = "You\'re in Oriental Room.", .big = "This is the Oriental Room. Ancient oriental cave drawings cover the\nwalls. A gently sloping passage leads upward to the north, another\npassage leads se, and a hands and knees crawl leads west.", }, .sound = SILENT, .loud = false, }, { // 98: LOC_MISTY .description = { .small = "You\'re in misty cavern.", .big = "You are following a wide path around the outer edge of a large cavern.\nFar below, through a heavy white mist, strange splashing noises can be\nheard. The mist rises up through a fissure in the ceiling. The path\nexits to the south and west.", }, .sound = NO_MEANING, .loud = false, }, { // 99: LOC_ALCOVE .description = { .small = "You\'re in alcove.", .big = "You are in an alcove. A small nw path seems to widen after a short\ndistance. An extremely tight tunnel leads east. It looks like a very\ntight squeeze. An eerie light can be seen at the other end.", }, .sound = SILENT, .loud = false, }, { // 100: LOC_PLOVER .description = { .small = "You\'re in Plover Room.", .big = "You\'re in a small chamber lit by an eerie green light. An extremely\nnarrow tunnel exits to the west. A dark corridor leads ne.", }, .sound = SILENT, .loud = false, }, { // 101: LOC_DARKROOM .description = { .small = "You\'re in dark-room.", .big = "You\'re in the dark-room. A corridor leading south is the only exit.", }, .sound = SILENT, .loud = false, }, { // 102: LOC_ARCHED .description = { .small = "You\'re in arched hall.", .big = "You are in an arched hall. A coral passage once continued up and east\nfrom here, but is now blocked by debris. The air smells of sea water.", }, .sound = SILENT, .loud = false, }, { // 103: LOC_SHELLROOM .description = { .small = "You\'re in Shell Room.", .big = "You\'re in a large room carved out of sedimentary rock. The floor and\nwalls are littered with bits of shells imbedded in the stone. A\nshallow passage proceeds downward, and a somewhat steeper one leads\nup. A low hands and knees passage enters from the south.", }, .sound = SILENT, .loud = false, }, { // 104: LOC_SLOPING1 .description = { .small = NULL, .big = "You are in a long sloping corridor with ragged sharp walls.", }, .sound = SILENT, .loud = false, }, { // 105: LOC_CULDESAC .description = { .small = NULL, .big = "You are in a cul-de-sac about eight feet across.", }, .sound = SILENT, .loud = false, }, { // 106: LOC_ANTEROOM .description = { .small = "You\'re in anteroom.", .big = "You are in an anteroom leading to a large passage to the east. Small\npassages go west and up. The remnants of recent digging are evident.\nA sign in midair here says \"Cave under construction beyond this point.\nProceed at own risk. [Witt Construction Company]\"", }, .sound = SILENT, .loud = false, }, { // 107: LOC_DIFFERENT1 .description = { .small = NULL, .big = "You are in a maze of twisty little passages, all different.", }, .sound = SILENT, .loud = false, }, { // 108: LOC_WITTSEND .description = { .small = "You\'re at Witt\'s End.", .big = "You are at Witt\'s End. Passages lead off in *ALL* directions.", }, .sound = SILENT, .loud = false, }, { // 109: LOC_MIRRORCANYON .description = { .small = "You\'re in Mirror Canyon.", .big = "You are in a north/south canyon about 25 feet across. The floor is\ncovered by white mist seeping in from the north. The walls extend\nupward for well over 100 feet. Suspended from some unseen point far\nabove you, an enormous two-sided mirror is hanging parallel to and\nmidway between the canyon walls. (The mirror is obviously provided\nfor the use of the dwarves who, as you know, are extremely vain.) A\nsmall window can be seen in either wall, some fifty feet up.", }, .sound = WIND_WHISTLES, .loud = false, }, { // 110: LOC_WINDOW2 .description = { .small = "You\'re at window on pit.", .big = "You\'re at a low window overlooking a huge pit, which extends up out of\nsight. A floor is indistinctly visible over 50 feet below. Traces of\nwhite mist cover the floor of the pit, becoming thicker to the left.\nMarks in the dust around the window would seem to indicate that\nsomeone has been here recently. Directly across the pit from you and\n25 feet away there is a similar window looking into a lighted room. A\nshadowy figure can be seen there peering back at you.", }, .sound = SILENT, .loud = false, }, { // 111: LOC_TOPSTALACTITE .description = { .small = "You\'re at top of stalactite.", .big = "A large stalactite extends from the roof and almost reaches the floor\nbelow. You could climb down it, and jump from it to the floor, but\nhaving done so you would be unable to reach it to climb back up.", }, .sound = SILENT, .loud = false, }, { // 112: LOC_DIFFERENT2 .description = { .small = NULL, .big = "You are in a little maze of twisting passages, all different.", }, .sound = SILENT, .loud = false, }, { // 113: LOC_RESERVOIR .description = { .small = "You\'re at reservoir.", .big = "You are at the edge of a large underground reservoir. An opaque cloud\nof white mist fills the room and rises rapidly upward. The lake is\nfed by a stream, which tumbles out of a hole in the wall about 10 feet\noverhead and splashes noisily into the water somewhere within the\nmist. There is a passage going back toward the south.", }, .sound = STREAM_SPLASHES, .loud = false, }, { // 114: LOC_DEADEND12 .description = { .small = NULL, .big = "Dead end", }, .sound = SILENT, .loud = false, }, { // 115: LOC_NE .description = { .small = "You\'re at ne end.", .big = "You are at the northeast end of an immense room, even larger than the\nGiant Room. It appears to be a repository for the \"Adventure\"\nprogram. Massive torches far overhead bathe the room with smoky\nyellow light. Scattered about you can be seen a pile of bottles (all\nof them empty), a nursery of young beanstalks murmuring quietly, a bed\nof oysters, a bundle of black rods with rusty stars on their ends, and\na collection of brass lanterns. Off to one side a great many dwarves\nare sleeping on the floor, snoring loudly. A notice nearby reads: \"Do\nnot disturb the dwarves!\" An immense mirror is hanging against one\nwall, and stretches to the other end of the room, where various other\nsundry objects can be glimpsed dimly in the distance.", }, .sound = MURMURING_SNORING, .loud = false, }, { // 116: LOC_SW .description = { .small = "You\'re at sw end.", .big = "You are at the southwest end of the repository. To one side is a pit\nfull of fierce green snakes. On the other side is a row of small\nwicker cages, each of which contains a little sulking bird. In one\ncorner is a bundle of black rods with rusty marks on their ends. A\nlarge number of velvet pillows are scattered about on the floor. A\nvast mirror stretches off to the northeast. At your feet is a large\nsteel grate, next to which is a sign that reads, \"Treasure Vault.\nKeys in main office.\"", }, .sound = SNAKES_HISSING, .loud = false, }, { // 117: LOC_SWCHASM .description = { .small = "You\'re on sw side of chasm.", .big = "You are on one side of a large, deep chasm. A heavy white mist rising\nup from below obscures all view of the far side. A sw path leads away\nfrom the chasm into a winding corridor.", }, .sound = SILENT, .loud = false, }, { // 118: LOC_WINDING .description = { .small = "You\'re in sloping corridor.", .big = "You are in a long winding corridor sloping out of sight in both\ndirections.", }, .sound = SILENT, .loud = false, }, { // 119: LOC_SECRET4 .description = { .small = NULL, .big = "You are in a secret canyon which exits to the north and east.", }, .sound = SILENT, .loud = false, }, { // 120: LOC_SECRET5 .description = { .small = NULL, .big = "You are in a secret canyon which exits to the north and east.", }, .sound = SILENT, .loud = false, }, { // 121: LOC_SECRET6 .description = { .small = NULL, .big = "You are in a secret canyon which exits to the north and east.", }, .sound = SILENT, .loud = false, }, { // 122: LOC_NECHASM .description = { .small = "You\'re on ne side of chasm.", .big = "You are on the far side of the chasm. A ne path leads away from the\nchasm on this side.", }, .sound = SILENT, .loud = false, }, { // 123: LOC_CORRIDOR .description = { .small = "You\'re in corridor.", .big = "You\'re in a long east/west corridor. A faint rumbling noise can be\nheard in the distance.", }, .sound = DULL_RUMBLING, .loud = false, }, { // 124: LOC_FORK .description = { .small = "You\'re at fork in path.", .big = "The path forks here. The left fork leads northeast. A dull rumbling\nseems to get louder in that direction. The right fork leads southeast\ndown a gentle slope. The main corridor enters from the west.", }, .sound = DULL_RUMBLING, .loud = false, }, { // 125: LOC_WARMWALLS .description = { .small = "You\'re at junction with warm walls.", .big = "The walls are quite warm here. From the north can be heard a steady\nroar, so loud that the entire cave seems to be trembling. Another\npassage leads south, and a low crawl goes east.", }, .sound = LOUD_ROAR, .loud = false, }, { // 126: LOC_BREATHTAKING .description = { .small = "You\'re at breath-taking view.", .big = "You are on the edge of a breath-taking view. Far below you is an\nactive volcano, from which great gouts of molten lava come surging\nout, cascading back down into the depths. The glowing rock fills the\nfarthest reaches of the cavern with a blood-red glare, giving every-\nthing an eerie, macabre appearance. The air is filled with flickering\nsparks of ash and a heavy smell of brimstone. The walls are hot to\nthe touch, and the thundering of the volcano drowns out all other\nsounds. Embedded in the jagged roof far overhead are myriad twisted\nformations composed of pure white alabaster, which scatter the murky\nlight into sinister apparitions upon the walls. To one side is a deep\ngorge, filled with a bizarre chaos of tortured rock which seems to\nhave been crafted by the devil himself. An immense river of fire\ncrashes out from the depths of the volcano, burns its way through the\ngorge, and plummets into a bottomless pit far off to your left. To\nthe right, an immense geyser of blistering steam erupts continuously\nfrom a barren island in the center of a sulfurous lake, which bubbles\nominously. The far right wall is aflame with an incandescence of its\nown, which lends an additional infernal splendor to the already\nhellish scene. A dark, foreboding passage exits to the south.", }, .sound = TOTAL_ROAR, .loud = true, }, { // 127: LOC_BOULDERS2 .description = { .small = "You\'re in Chamber of Boulders.", .big = "You are in a small chamber filled with large boulders. The walls are\nvery warm, causing the air in the room to be almost stifling from the\nheat. The only exit is a crawl heading west, through which is coming\na low rumbling.", }, .sound = DULL_RUMBLING, .loud = false, }, { // 128: LOC_LIMESTONE .description = { .small = "You\'re in limestone passage.", .big = "You are walking along a gently sloping north/south passage lined with oddly shaped limestone formations.", }, .sound = SILENT, .loud = false, }, { // 129: LOC_BARRENFRONT .description = { .small = "You\'re in front of Barren Room.", .big = "You are standing at the entrance to a large, barren room. A notice\nabove the entrance reads: \"Caution! Bear in room!\"", }, .sound = SILENT, .loud = false, }, { // 130: LOC_BARRENROOM .description = { .small = "You\'re in Barren Room.", .big = "You are inside a barren room. The center of the room is completely\nempty except for some dust. Marks in the dust lead away toward the\nfar end of the room. The only exit is the way you came in.", }, .sound = SILENT, .loud = false, }, { // 131: LOC_DIFFERENT3 .description = { .small = NULL, .big = "You are in a maze of twisting little passages, all different.", }, .sound = SILENT, .loud = false, }, { // 132: LOC_DIFFERENT4 .description = { .small = NULL, .big = "You are in a little maze of twisty passages, all different.", }, .sound = SILENT, .loud = false, }, { // 133: LOC_DIFFERENT5 .description = { .small = NULL, .big = "You are in a twisting maze of little passages, all different.", }, .sound = SILENT, .loud = false, }, { // 134: LOC_DIFFERENT6 .description = { .small = NULL, .big = "You are in a twisting little maze of passages, all different.", }, .sound = SILENT, .loud = false, }, { // 135: LOC_DIFFERENT7 .description = { .small = NULL, .big = "You are in a twisty little maze of passages, all different.", }, .sound = SILENT, .loud = false, }, { // 136: LOC_DIFFERENT8 .description = { .small = NULL, .big = "You are in a twisty maze of little passages, all different.", }, .sound = SILENT, .loud = false, }, { // 137: LOC_DIFFERENT9 .description = { .small = NULL, .big = "You are in a little twisty maze of passages, all different.", }, .sound = SILENT, .loud = false, }, { // 138: LOC_DIFFERENT10 .description = { .small = NULL, .big = "You are in a maze of little twisting passages, all different.", }, .sound = SILENT, .loud = false, }, { // 139: LOC_DIFFERENT11 .description = { .small = NULL, .big = "You are in a maze of little twisty passages, all different.", }, .sound = SILENT, .loud = false, }, { // 140: LOC_DEADEND13 .description = { .small = NULL, .big = "Dead end", }, .sound = SILENT, .loud = false, }, { // 141: LOC_ROUGHHEWN .description = { .small = NULL, .big = "You are in a long, rough-hewn, north/south corridor.", }, .sound = SILENT, .loud = false, }, { // 142: LOC_BADDIRECTION .description = { .small = NULL, .big = "There is no way to go that direction.", }, .sound = SILENT, .loud = false, }, { // 143: LOC_LARGE .description = { .small = NULL, .big = "You are in a large chamber with passages to the west and north.", }, .sound = SILENT, .loud = false, }, { // 144: LOC_STOREROOM .description = { .small = NULL, .big = "You are in the ogre\'s storeroom. The only exit is to the south.", }, .sound = SILENT, .loud = false, }, { // 145: LOC_FOREST1 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 146: LOC_FOREST2 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 147: LOC_FOREST3 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 148: LOC_FOREST4 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 149: LOC_FOREST5 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 150: LOC_FOREST6 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 151: LOC_FOREST7 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 152: LOC_FOREST8 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 153: LOC_FOREST9 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 154: LOC_FOREST10 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 155: LOC_FOREST11 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 156: LOC_FOREST12 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 157: LOC_FOREST13 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 158: LOC_FOREST14 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 159: LOC_FOREST15 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 160: LOC_FOREST16 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 161: LOC_FOREST17 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 162: LOC_FOREST18 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 163: LOC_FOREST19 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 164: LOC_FOREST20 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 165: LOC_FOREST21 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 166: LOC_FOREST22 .description = { .small = NULL, .big = "You are wandering aimlessly through the forest.", }, .sound = SILENT, .loud = false, }, { // 167: LOC_LEDGE .description = { .small = "You\'re on ledge.", .big = "You are on a small ledge on one face of a sheer cliff. There are no\npaths away from the ledge. Across the chasm is a small clearing\nsurrounded by forest.", }, .sound = SILENT, .loud = false, }, { // 168: LOC_RESBOTTOM .description = { .small = "You\'re at bottom of reservoir.", .big = "You are walking across the bottom of the reservoir. Walls of water\nrear up on either side. The roar of the water cascading past is\nnearly deafening, and the mist is so thick you can barely see.", }, .sound = TOTAL_ROAR, .loud = true, }, { // 169: LOC_RESNORTH .description = { .small = "You\'re north of reservoir.", .big = "You are at the northern edge of the reservoir. A northwest passage\nleads sharply up from here.", }, .sound = WATERS_CRASHING, .loud = false, }, { // 170: LOC_TREACHEROUS .description = { .small = NULL, .big = "You are scrambling along a treacherously steep, rocky passage.", }, .sound = SILENT, .loud = false, }, { // 171: LOC_STEEP .description = { .small = NULL, .big = "You are on a very steep incline, which widens at it goes upward.", }, .sound = SILENT, .loud = false, }, { // 172: LOC_CLIFFBASE .description = { .small = "You\'re at base of cliff.", .big = "You are at the base of a nearly vertical cliff. There are some\nslim footholds which would enable you to climb up, but it looks\nextremely dangerous. Here at the base of the cliff lie the remains\nof several earlier adventurers who apparently failed to make it.", }, .sound = SILENT, .loud = false, }, { // 173: LOC_CLIFFACE .description = { .small = NULL, .big = "You are climbing along a nearly vertical cliff.", }, .sound = SILENT, .loud = false, }, { // 174: LOC_FOOTSLIP .description = { .small = NULL, .big = "Just as you reach the top, your foot slips on a loose rock and you\ntumble several hundred feet to join the other unlucky adventurers.", }, .sound = SILENT, .loud = false, }, { // 175: LOC_CLIFFTOP .description = { .small = NULL, .big = "Just as you reach the top, your foot slips on a loose rock and you\nmake one last desperate grab. Your luck holds, as does your grip.\nWith an enormous heave, you lift yourself to the ledge above.", }, .sound = SILENT, .loud = false, }, { // 176: LOC_CLIFFLEDGE .description = { .small = "You\'re at top of cliff.", .big = "You are on a small ledge at the top of a nearly vertical cliff.\nThere is a low crawl leading off to the northeast.", }, .sound = SILENT, .loud = false, }, { // 177: LOC_REACHDEAD .description = { .small = NULL, .big = "You have reached a dead end.", }, .sound = SILENT, .loud = false, }, { // 178: LOC_GRUESOME .description = { .small = NULL, .big = "There is now one more gruesome aspect to the spectacular vista.", }, .sound = SILENT, .loud = false, }, { // 179: LOC_FOOF1 .description = { .small = NULL, .big = ">>Foof!<<", }, .sound = SILENT, .loud = false, }, { // 180: LOC_FOOF2 .description = { .small = NULL, .big = ">>Foof!<<", }, .sound = SILENT, .loud = false, }, { // 181: LOC_FOOF3 .description = { .small = NULL, .big = ">>Foof!<<", }, .sound = SILENT, .loud = false, }, { // 182: LOC_FOOF4 .description = { .small = NULL, .big = ">>Foof!<<", }, .sound = SILENT, .loud = false, }, { // 183: LOC_FOOF5 .description = { .small = NULL, .big = ">>Foof!<<", }, .sound = SILENT, .loud = false, }, { // 184: LOC_FOOF6 .description = { .small = NULL, .big = ">>Foof!<<", }, .sound = SILENT, .loud = false, }, }; const object_t objects[] = { { // 0: NO_OBJECT .words = { .strs = NULL, .n = 0, }, .inventory = NULL, .plac = LOC_NOWHERE, .fixd = LOC_NOWHERE, .is_treasure = false, .descriptions = (const char* []) { NULL, }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 1: KEYS .words = { .strs = (const char* []) {"keys", "key"}, .n = 2, }, .inventory = "Set of keys", .plac = LOC_BUILDING, .fixd = 0, .is_treasure = false, .descriptions = (const char* []) { "There are some keys on the ground here.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 2: LAMP .words = { .strs = (const char* []) {"lamp", "lante"}, .n = 2, }, .inventory = "Brass lantern", .plac = LOC_BUILDING, .fixd = 0, .is_treasure = false, .descriptions = (const char* []) { "There is a shiny brass lamp nearby.", "There is a lamp shining nearby.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { "Your lamp is now off.", "Your lamp is now on.", }, }, { // 3: GRATE .words = { .strs = (const char* []) {"grate"}, .n = 1, }, .inventory = "*grate", .plac = LOC_GRATE, .fixd = LOC_BELOWGRATE, .is_treasure = false, .descriptions = (const char* []) { "The grate is locked.", "The grate is open.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { "The grate is now locked.", "The grate is now unlocked.", }, }, { // 4: CAGE .words = { .strs = (const char* []) {"cage"}, .n = 1, }, .inventory = "Wicker cage", .plac = LOC_COBBLE, .fixd = 0, .is_treasure = false, .descriptions = (const char* []) { "There is a small wicker cage discarded nearby.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 5: ROD .words = { .strs = (const char* []) {"rod"}, .n = 1, }, .inventory = "Black rod", .plac = LOC_DEBRIS, .fixd = 0, .is_treasure = false, .descriptions = (const char* []) { "A three foot black rod with a rusty star on an end lies nearby.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 6: ROD2 .words = { .strs = (const char* []) {"rod"}, .n = 1, }, .inventory = "Black rod", .plac = LOC_NOWHERE, .fixd = 0, .is_treasure = false, .descriptions = (const char* []) { "A three foot black rod with a rusty mark on an end lies nearby.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 7: STEPS .words = { .strs = (const char* []) {"steps"}, .n = 1, }, .inventory = "*steps", .plac = LOC_PITTOP, .fixd = LOC_MISTHALL, .is_treasure = false, .descriptions = (const char* []) { "Rough stone steps lead down the pit.", "Rough stone steps lead up the dome.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 8: BIRD .words = { .strs = (const char* []) {"bird"}, .n = 1, }, .inventory = "Little bird in cage", .plac = LOC_BIRD, .fixd = 0, .is_treasure = false, .descriptions = (const char* []) { "A cheerful little bird is sitting here singing.", "There is a little bird in the cage.", "A cheerful little bird is sitting here singing.", }, .sounds = (const char* []) { "The bird\'s singing is quite melodious.", "The bird does not seem inclined to sing while in the cage.", "It almost seems as though the bird is trying to tell you something.", "To your surprise, you can understand the bird\'\'s chirping; it is\nsinging about the joys of its forest home.", "The bird does not seem inclined to sing while in the cage.", "The bird is singing to you in gratitude for your having returned it to\nits home. In return, it informs you of a magic word which it thinks\nyou may find useful somewhere near the Hall of Mists. The magic word\nchanges frequently, but for now the bird believes it is \"%s\". You\nthank the bird for this information, and it flies off into the forest.", }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 9: DOOR .words = { .strs = (const char* []) {"door"}, .n = 1, }, .inventory = "*rusty door", .plac = LOC_IMMENSE, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { "The way north is barred by a massive, rusty, iron door.", "The way north leads through a massive, rusty, iron door.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { "The hinges are quite thoroughly rusted now and won\'t budge.", "The oil has freed up the hinges so that the door will now move,\nalthough it requires some effort.", }, }, { // 10: PILLOW .words = { .strs = (const char* []) {"pillo", "velve"}, .n = 2, }, .inventory = "Velvet pillow", .plac = LOC_SOFTROOM, .fixd = 0, .is_treasure = false, .descriptions = (const char* []) { "A small velvet pillow lies on the floor.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 11: SNAKE .words = { .strs = (const char* []) {"snake"}, .n = 1, }, .inventory = "*snake", .plac = LOC_KINGHALL, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { "A huge green fierce snake bars the way!", "", }, .sounds = (const char* []) { "The snake is hissing venomously.", "", }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 12: FISSURE .words = { .strs = (const char* []) {"fissu"}, .n = 1, }, .inventory = "*fissure", .plac = LOC_EASTBANK, .fixd = LOC_WESTBANK, .is_treasure = false, .descriptions = (const char* []) { "", "A crystal bridge spans the fissure.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { "The crystal bridge has vanished!", "A crystal bridge now spans the fissure.", }, }, { // 13: OBJ_13 .words = { .strs = (const char* []) {"table"}, .n = 1, }, .inventory = "*stone tablet", .plac = LOC_DARKROOM, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { "A massive stone tablet imbedded in the wall reads:\n\"Congratulations on bringing light into the dark-room!\"", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { "\"Congratulations on bringing light into the dark-room!\"", }, .changes = (const char* []) { NULL, }, }, { // 14: CLAM .words = { .strs = (const char* []) {"clam"}, .n = 1, }, .inventory = "Giant clam >GRUNT!<", .plac = LOC_SHELLROOM, .fixd = 0, .is_treasure = false, .descriptions = (const char* []) { "There is an enormous clam here with its shell tightly closed.", }, .sounds = (const char* []) { "The clam is as tight-mouthed as a, er, clam.", }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 15: OYSTER .words = { .strs = (const char* []) {"oyste"}, .n = 1, }, .inventory = "Giant oyster >GROAN!<", .plac = LOC_NOWHERE, .fixd = 0, .is_treasure = false, .descriptions = (const char* []) { "There is an enormous oyster here with its shell tightly closed.", "Interesting. There seems to be something written on the underside of\nthe oyster.", }, .sounds = (const char* []) { "Even though it\'s an oyster, the critter\'s as tight-mouthed as a clam.", "It says the same thing it did before. Hm, maybe it\'s a pun?", }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 16: MAGAZINE .words = { .strs = (const char* []) {"magaz", "issue", "spelu", "\"spel"}, .n = 4, }, .inventory = "\"Spelunker Today\"", .plac = LOC_ANTEROOM, .fixd = 0, .is_treasure = false, .descriptions = (const char* []) { "There are a few recent issues of \"Spelunker Today\" magazine here.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { "I\'m afraid the magazine is written in dwarvish. But pencilled on one\ncover you see, \"Please leave the magazines at the construction site.\"", }, .changes = (const char* []) { NULL, }, }, { // 17: DWARF .words = { .strs = (const char* []) {"dwarf", "dwarv"}, .n = 2, }, .inventory = NULL, .plac = LOC_NOWHERE, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { NULL, }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 18: KNIFE .words = { .strs = (const char* []) {"knife", "knive"}, .n = 2, }, .inventory = NULL, .plac = LOC_NOWHERE, .fixd = 0, .is_treasure = false, .descriptions = (const char* []) { NULL, }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 19: FOOD .words = { .strs = (const char* []) {"food", "ratio"}, .n = 2, }, .inventory = "Tasty food", .plac = LOC_BUILDING, .fixd = 0, .is_treasure = false, .descriptions = (const char* []) { "There is food here.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 20: BOTTLE .words = { .strs = (const char* []) {"bottl", "jar"}, .n = 2, }, .inventory = "Small bottle", .plac = LOC_BUILDING, .fixd = 0, .is_treasure = false, .descriptions = (const char* []) { "There is a bottle of water here.", "There is an empty bottle here.", "There is a bottle of oil here.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { "Your bottle is now full of water.", "The bottle of water is now empty.", "Your bottle is now full of oil.", }, }, { // 21: WATER .words = { .strs = (const char* []) {"water", "h2o"}, .n = 2, }, .inventory = "Water in the bottle", .plac = LOC_NOWHERE, .fixd = 0, .is_treasure = false, .descriptions = (const char* []) { NULL, }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 22: OIL .words = { .strs = (const char* []) {"oil"}, .n = 1, }, .inventory = "Oil in the bottle", .plac = LOC_NOWHERE, .fixd = 0, .is_treasure = false, .descriptions = (const char* []) { NULL, }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 23: MIRROR .words = { .strs = (const char* []) {"mirro"}, .n = 1, }, .inventory = "*mirror", .plac = LOC_MIRRORCANYON, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { "", "", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { "", "You strike the mirror a resounding blow, whereupon it shatters into a\nmyriad tiny fragments.", }, }, { // 24: PLANT .words = { .strs = (const char* []) {"plant", "beans"}, .n = 2, }, .inventory = "*plant", .plac = LOC_WESTPIT, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { "There is a tiny little plant in the pit, murmuring \"water, water, ...\"", "There is a 12-foot-tall beanstalk stretching up out of the pit,\nbellowing \"WATER!! WATER!!\"", "There is a gigantic beanstalk stretching all the way up to the hole.", }, .sounds = (const char* []) { "The plant continues to ask plaintively for water.", "The plant continues to demand water.", "The plant now maintains a contented silence.", }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { "You\'ve over-watered the plant! It\'s shriveling up! And now . . .", "The plant spurts into furious growth for a few seconds.", "The plant grows explosively, almost filling the bottom of the pit.", }, }, { // 25: PLANT2 .words = { .strs = (const char* []) {"plant"}, .n = 1, }, .inventory = "*phony plant", .plac = LOC_WESTEND, .fixd = LOC_EASTEND, .is_treasure = false, .descriptions = (const char* []) { "", "The top of a 12-foot-tall beanstalk is poking out of the west pit.", "There is a huge beanstalk growing out of the west pit up to the hole.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 26: OBJ_26 .words = { .strs = (const char* []) {"stala"}, .n = 1, }, .inventory = "*stalactite", .plac = LOC_TOPSTALACTITE, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { "", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 27: OBJ_27 .words = { .strs = (const char* []) {"shado", "figur", "windo"}, .n = 3, }, .inventory = "*shadowy figure and/or window", .plac = LOC_WINDOW1, .fixd = LOC_WINDOW2, .is_treasure = false, .descriptions = (const char* []) { "The shadowy figure seems to be trying to attract your attention.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 28: AXE .words = { .strs = (const char* []) {"axe"}, .n = 1, }, .inventory = "Dwarf\'s axe", .plac = LOC_NOWHERE, .fixd = 0, .is_treasure = false, .descriptions = (const char* []) { "There is a little axe here.", "There is a little axe lying beside the bear.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { "", "The axe misses and lands near the bear where you can\'t get at it.", }, }, { // 29: OBJ_29 .words = { .strs = (const char* []) {"drawi"}, .n = 1, }, .inventory = "*cave drawings", .plac = LOC_ORIENTAL, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { NULL, }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 30: OBJ_30 .words = { .strs = (const char* []) {"pirat", "genie", "djinn"}, .n = 3, }, .inventory = "*pirate/genie", .plac = LOC_NOWHERE, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { NULL, }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 31: DRAGON .words = { .strs = (const char* []) {"drago"}, .n = 1, }, .inventory = "*dragon", .plac = LOC_SECRET4, .fixd = LOC_SECRET6, .is_treasure = false, .descriptions = (const char* []) { "A huge green fierce dragon bars the way!", "The blood-specked body of a huge green dead dragon lies to one side.", "The body of a huge green dead dragon is lying off to one side.", }, .sounds = (const char* []) { "The dragon\'s ominous hissing does not bode well for you.", "The dragon is, not surprisingly, silent.", "The dragon is, not surprisingly, silent.", }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { "", "Congratulations! You have just vanquished a dragon with your bare\nhands! (Unbelievable, isn\'t it?)", "Your head buzzes strangely for a moment.", }, }, { // 32: CHASM .words = { .strs = (const char* []) {"chasm"}, .n = 1, }, .inventory = "*chasm", .plac = LOC_SWCHASM, .fixd = LOC_NECHASM, .is_treasure = false, .descriptions = (const char* []) { "A rickety wooden bridge extends across the chasm, vanishing into the\nmist. A notice posted on the bridge reads, \"Stop! Pay troll!\"", "The wreckage of a bridge (and a dead bear) can be seen at the bottom\nof the chasm.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { "", "Just as you reach the other side, the bridge buckles beneath the\nweight of the bear, which was still following you around. You\nscrabble desperately for support, but as the bridge collapses you\nstumble back and fall into the chasm.", }, }, { // 33: TROLL .words = { .strs = (const char* []) {"troll"}, .n = 1, }, .inventory = "*troll", .plac = LOC_SWCHASM, .fixd = LOC_NECHASM, .is_treasure = false, .descriptions = (const char* []) { "A burly troll stands by the bridge and insists you throw him a\ntreasure before you may cross.", "The troll steps out from beneath the bridge and blocks your way.", "", }, .sounds = (const char* []) { "The troll sounds quite adamant in his demand for a treasure.", "The troll sounds quite adamant in his demand for a treasure.", "", }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { "", "", "The bear lumbers toward the troll, who lets out a startled shriek and\nscurries away. The bear soon gives up the pursuit and wanders back.", }, }, { // 34: TROLL2 .words = { .strs = (const char* []) {"troll"}, .n = 1, }, .inventory = "*phony troll", .plac = LOC_NOWHERE, .fixd = LOC_NOWHERE, .is_treasure = false, .descriptions = (const char* []) { "The troll is nowhere to be seen.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 35: BEAR .words = { .strs = (const char* []) {"bear"}, .n = 1, }, .inventory = NULL, .plac = LOC_BARRENROOM, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { "There is a ferocious cave bear eying you from the far end of the room!", "There is a gentle cave bear sitting placidly in one corner.", "There is a contented-looking bear wandering about nearby.", "", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { "", "The bear eagerly wolfs down your food, after which he seems to calm\ndown considerably and even becomes rather friendly.", "", "", }, }, { // 36: MESSAG .words = { .strs = (const char* []) {"messa"}, .n = 1, }, .inventory = "*message in second maze", .plac = LOC_NOWHERE, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { "There is a message scrawled in the dust in a flowery script, reading:\n\"This is not the maze where the pirate leaves his treasure chest.\"", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { "\"This is not the maze where the pirate leaves his treasure chest.\"", }, .changes = (const char* []) { NULL, }, }, { // 37: VOLCANO .words = { .strs = (const char* []) {"volca", "geyse"}, .n = 2, }, .inventory = "*volcano and/or geyser", .plac = LOC_BREATHTAKING, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { NULL, }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 38: VEND .words = { .strs = (const char* []) {"machi", "vendi"}, .n = 2, }, .inventory = "*vending machine", .plac = LOC_DEADEND13, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { "There is a massive and somewhat battered vending machine here. The\ninstructions on it read: \"Drop coins here to receive fresh batteries.\"", "There is a massive vending machine here, swung back to reveal a\nsouthward passage.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { "\"Drop coins here to receive fresh batteries.\"", "\"Drop coins here to receive fresh batteries.\"", }, .changes = (const char* []) { "The vending machine swings back to block the passage.", "As you strike the vending machine, it pivots backward along with a\nsection of wall, revealing a dark passage leading south.", }, }, { // 39: BATTERY .words = { .strs = (const char* []) {"batte"}, .n = 1, }, .inventory = "Batteries", .plac = LOC_NOWHERE, .fixd = 0, .is_treasure = false, .descriptions = (const char* []) { "There are fresh batteries here.", "Some worn-out batteries have been discarded nearby.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 40: OBJ_40 .words = { .strs = (const char* []) {"carpe", "moss"}, .n = 2, }, .inventory = "*carpet and/or moss and/or curtains", .plac = LOC_SOFTROOM, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { NULL, }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 41: OGRE .words = { .strs = (const char* []) {"ogre"}, .n = 1, }, .inventory = "*ogre", .plac = LOC_LARGE, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { "A formidable ogre bars the northern exit.", }, .sounds = (const char* []) { "The ogre is apparently the strong, silent type.", }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 42: URN .words = { .strs = (const char* []) {"urn"}, .n = 1, }, .inventory = "*urn", .plac = LOC_CLIFF, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { "A small urn is embedded in the rock.", "A small urn full of oil is embedded in the rock.", "A small oil flame extrudes from an urn embedded in the rock.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { "The urn is empty and will not light.", "The urn is now dark.", "The urn is now lit.", }, }, { // 43: CAVITY .words = { .strs = (const char* []) {"cavit"}, .n = 1, }, .inventory = "*cavity", .plac = LOC_NOWHERE, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { "", "There is a small urn-shaped cavity in the rock.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 44: BLOOD .words = { .strs = (const char* []) {"blood"}, .n = 1, }, .inventory = "*blood", .plac = LOC_NOWHERE, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { "", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 45: RESER .words = { .strs = (const char* []) {"reser"}, .n = 1, }, .inventory = "*reservoir", .plac = LOC_RESERVOIR, .fixd = LOC_RESNORTH, .is_treasure = false, .descriptions = (const char* []) { "", "The waters have parted to form a narrow path across the reservoir.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { "The waters crash together again.", "The waters have parted to form a narrow path across the reservoir.", }, }, { // 46: OBJ_46 .words = { .strs = (const char* []) {"appen", "lepor"}, .n = 2, }, .inventory = "Leporine appendage", .plac = LOC_FOREST22, .fixd = 0, .is_treasure = false, .descriptions = (const char* []) { "Your keen eye spots a severed leporine appendage lying on the ground.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 47: OBJ_47 .words = { .strs = (const char* []) {"mud"}, .n = 1, }, .inventory = "*mud", .plac = LOC_DEBRIS, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { "", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { "\"MAGIC WORD XYZZY\"", }, .changes = (const char* []) { NULL, }, }, { // 48: OBJ_48 .words = { .strs = (const char* []) {"note"}, .n = 1, }, .inventory = "*note", .plac = LOC_NUGGET, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { "", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { "\"You won\'t get it up the steps\"", }, .changes = (const char* []) { NULL, }, }, { // 49: SIGN .words = { .strs = (const char* []) {"sign"}, .n = 1, }, .inventory = "*sign", .plac = LOC_ANTEROOM, .fixd = -1, .is_treasure = false, .descriptions = (const char* []) { "", "", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { "Cave under construction beyond this point.\n Proceed at own risk.\n [Witt Construction Company]", "\"Treasure Vault. Keys in main office.\"", }, .changes = (const char* []) { NULL, }, }, { // 50: NUGGET .words = { .strs = (const char* []) {"gold", "nugge"}, .n = 2, }, .inventory = "Large gold nugget", .plac = LOC_NUGGET, .fixd = 0, .is_treasure = true, .descriptions = (const char* []) { "There is a large sparkling nugget of gold here!", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 51: OBJ_51 .words = { .strs = (const char* []) {"diamo"}, .n = 1, }, .inventory = "Several diamonds", .plac = LOC_WESTBANK, .fixd = 0, .is_treasure = true, .descriptions = (const char* []) { "There are diamonds here!", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 52: OBJ_52 .words = { .strs = (const char* []) {"silve", "bars"}, .n = 2, }, .inventory = "Bars of silver", .plac = LOC_FLOORHOLE, .fixd = 0, .is_treasure = true, .descriptions = (const char* []) { "There are bars of silver here!", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 53: OBJ_53 .words = { .strs = (const char* []) {"jewel"}, .n = 1, }, .inventory = "Precious jewelry", .plac = LOC_SOUTHSIDE, .fixd = 0, .is_treasure = true, .descriptions = (const char* []) { "There is precious jewelry here!", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 54: COINS .words = { .strs = (const char* []) {"coins"}, .n = 1, }, .inventory = "Rare coins", .plac = LOC_WESTSIDE, .fixd = 0, .is_treasure = true, .descriptions = (const char* []) { "There are many coins here!", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 55: CHEST .words = { .strs = (const char* []) {"chest", "box", "treas"}, .n = 3, }, .inventory = "Treasure chest", .plac = LOC_NOWHERE, .fixd = 0, .is_treasure = true, .descriptions = (const char* []) { "The pirate\'s treasure chest is here!", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 56: EGGS .words = { .strs = (const char* []) {"eggs", "egg", "nest"}, .n = 3, }, .inventory = "Golden eggs", .plac = LOC_GIANTROOM, .fixd = 0, .is_treasure = true, .descriptions = (const char* []) { "There is a large nest here, full of golden eggs!", "The nest of golden eggs has vanished!", "Done!", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 57: TRIDENT .words = { .strs = (const char* []) {"tride"}, .n = 1, }, .inventory = "Jeweled trident", .plac = LOC_WATERFALL, .fixd = 0, .is_treasure = true, .descriptions = (const char* []) { "There is a jewel-encrusted trident here!", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 58: VASE .words = { .strs = (const char* []) {"vase", "ming", "shard", "potte"}, .n = 4, }, .inventory = "Ming vase", .plac = LOC_ORIENTAL, .fixd = 0, .is_treasure = true, .descriptions = (const char* []) { "There is a delicate, precious, ming vase here!", "The floor is littered with worthless shards of pottery.", "The floor is littered with worthless shards of pottery.", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { "The vase is now resting, delicately, on a velvet pillow.", "The ming vase drops with a delicate crash.", "You have taken the vase and hurled it delicately to the ground.", }, }, { // 59: EMERALD .words = { .strs = (const char* []) {"emera"}, .n = 1, }, .inventory = "Egg-sized emerald", .plac = LOC_PLOVER, .fixd = 0, .is_treasure = true, .descriptions = (const char* []) { "There is an emerald here the size of a plover\'s egg!", "There is an emerald resting in a small cavity in the rock!", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 60: PYRAMID .words = { .strs = (const char* []) {"plati", "pyram"}, .n = 2, }, .inventory = "Platinum pyramid", .plac = LOC_DARKROOM, .fixd = 0, .is_treasure = true, .descriptions = (const char* []) { "There is a platinum pyramid here, 8 inches on a side!", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 61: PEARL .words = { .strs = (const char* []) {"pearl"}, .n = 1, }, .inventory = "Glistening pearl", .plac = LOC_NOWHERE, .fixd = 0, .is_treasure = true, .descriptions = (const char* []) { "Off to one side lies a glistening pearl!", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 62: RUG .words = { .strs = (const char* []) {"rug", "persi"}, .n = 2, }, .inventory = "Persian rug", .plac = LOC_SECRET4, .fixd = LOC_SECRET6, .is_treasure = true, .descriptions = (const char* []) { "There is a persian rug spread out on the floor!", "The dragon is sprawled out on a persian rug!!", "There is a persian rug here, hovering in mid-air!", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 63: OBJ_63 .words = { .strs = (const char* []) {"spice"}, .n = 1, }, .inventory = "Rare spices", .plac = LOC_BOULDERS2, .fixd = 0, .is_treasure = true, .descriptions = (const char* []) { "There are rare spices here!", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 64: CHAIN .words = { .strs = (const char* []) {"chain"}, .n = 1, }, .inventory = "Golden chain", .plac = LOC_BARRENROOM, .fixd = -1, .is_treasure = true, .descriptions = (const char* []) { "There is a golden chain lying in a heap on the floor!", "The bear is locked to the wall with a golden chain!", "There is a golden chain locked to the wall!", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 65: RUBY .words = { .strs = (const char* []) {"ruby"}, .n = 1, }, .inventory = "Giant ruby", .plac = LOC_STOREROOM, .fixd = 0, .is_treasure = true, .descriptions = (const char* []) { "There is an enormous ruby here!", "There is a ruby resting in a small cavity in the rock!", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 66: JADE .words = { .strs = (const char* []) {"jade", "neckl"}, .n = 2, }, .inventory = "Jade necklace", .plac = LOC_NOWHERE, .fixd = 0, .is_treasure = true, .descriptions = (const char* []) { "A precious jade necklace has been dropped here!", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 67: AMBER .words = { .strs = (const char* []) {"amber", "gemst"}, .n = 2, }, .inventory = "Amber gemstone", .plac = LOC_NOWHERE, .fixd = 0, .is_treasure = true, .descriptions = (const char* []) { "There is a rare amber gemstone here!", "There is an amber gemstone resting in a small cavity in the rock!", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 68: SAPPH .words = { .strs = (const char* []) {"sapph"}, .n = 1, }, .inventory = "Star sapphire", .plac = LOC_LEDGE, .fixd = 0, .is_treasure = true, .descriptions = (const char* []) { "A brilliant blue star sapphire is here!", "There is a star sapphire resting in a small cavity in the rock!", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, { // 69: OBJ_69 .words = { .strs = (const char* []) {"ebony", "statu"}, .n = 2, }, .inventory = "Ebony statuette", .plac = LOC_REACHDEAD, .fixd = 0, .is_treasure = true, .descriptions = (const char* []) { "There is a richly-carved ebony statuette here!", }, .sounds = (const char* []) { NULL, }, .texts = (const char* []) { NULL, }, .changes = (const char* []) { NULL, }, }, }; const obituary_t obituaries[] = { { .query = "Oh dear, you seem to have gotten yourself killed. I might be able to\nhelp you out, but I\'ve never really done this before. Do you want me\nto try to reincarnate you?", .yes_response = "All right. But don\'t blame me if something goes wr......\n --- POOF!! ---\nYou are engulfed in a cloud of orange smoke. Coughing and gasping,\nyou emerge from the smoke and find....", }, { .query = "You clumsy oaf, you\'ve done it again! I don\'t know how long I can\nkeep this up. Do you want me to try reincarnating you again?", .yes_response = "Okay, now where did I put my orange smoke?.... >POOF!<\nEverything disappears in a dense cloud of orange smoke.", }, { .query = "Now you\'ve really done it! I\'m out of orange smoke! You don\'t expect\nme to do a decent reincarnation without any orange smoke, do you?", .yes_response = "Okay, if you\'re so smart, do it yourself! I\'m leaving!", }, }; const hint_t hints[] = { { .number = 1, .penalty = 2, .turns = 4, .question = "Are you trying to get into the cave?", .hint = "The grate is very solid and has a hardened steel lock. You cannot\nenter without a key, and there are no keys nearby. I would recommend\nlooking elsewhere for the keys.", }, { .number = 2, .penalty = 2, .turns = 5, .question = "Are you trying to catch the bird?", .hint = "Something about you seems to be frightening the bird. Perhaps you\nmight figure out what it is.", }, { .number = 3, .penalty = 2, .turns = 8, .question = "Are you trying to somehow deal with the snake?", .hint = "You can\'t kill the snake, or drive it away, or avoid it, or anything\nlike that. There is a way to get by, but you don\'t have the necessary\nresources right now.", }, { .number = 4, .penalty = 4, .turns = 75, .question = "Do you need help getting out of the maze?", .hint = "You can make the passages look less alike by dropping things.", }, { .number = 5, .penalty = 5, .turns = 25, .question = "Are you trying to explore beyond the plover room?", .hint = "There is a way to explore that region without having to worry about\nfalling into a pit. None of the objects available is immediately\nuseful in discovering the secret.", }, { .number = 6, .penalty = 3, .turns = 20, .question = "Do you need help getting out of here?", .hint = "Don\'t go west.\n", }, { .number = 7, .penalty = 2, .turns = 8, .question = "Are you wondering what to do here?", .hint = "This section is quite advanced. Find the cave first.\n", }, { .number = 8, .penalty = 2, .turns = 25, .question = "Would you like to be shown out of the forest?", .hint = "Go east ten times. If that doesn\'t get you out, then go south, then\nwest twice, then south.", }, { .number = 9, .penalty = 4, .turns = 10, .question = "Do you need help dealing with the ogre?", .hint = "There is nothing the presence of which will prevent you from defeating\nhim; thus it can\'t hurt to fetch everything you possibly can.", }, { .number = 10, .penalty = 4, .turns = 1, .question = "You\'re missing only one other treasure. Do you need help finding it?", .hint = "Once you\'ve found all the other treasures, it is no longer possible to\nlocate the one you\'re now missing.", }, }; long conditions[] = { 0, // LOC_NOWHERE (1<