| !******************************************************************************* | |
| !** The Awakening - Copyright (c) 1998 by Dennis Matheson | |
| !** | |
| !** Distribution: ~The Awakening~ may be distributed freely by any means | |
| !** so long as a) This notice remains intact and b) no charge other than a nominal | |
| !** fee to cover the cost of distribution is made. It may be included as part of | |
| !** a commercial distribution provided that my permission is given first. | |
| !** | |
| !** Derivative Works: ~The Awakening~ is distributed with its source code. | |
| !** Derivative works are permitted of ~The Awakening~ so long as a) They are clearly | |
| !** identified as such and reference is made back to this original version and b) | |
| !** such works must freely redistributable under the same terms as stated above. | |
| !** | |
| !** Support: ~The Awakening~ is distributed without any support of any | |
| !** kind. Feel free to contact me at the address given, but I make no guarantee that | |
| !** I will respond. | |
| !** | |
| !** Warranty: ~The Awakening~ is distributed totally without any warranty of any | |
| !** kind. The entire risk of using this program is totally assumed by the user. | |
| !** | |
| !** As of July 1998 | |
| !** Dennis Matheson | |
| !** Dennis_Matheson@compuserve.com | |
| !** | |
| !** 4068 Maxanne Dr. | |
| !** Kennesaw, GA 30144 | |
| !******************************************************************************* | |
| Constant Story "The Awakening"; | |
| Constant Headline "^Copyright (c) 1998 by Dennis Matheson^ | |
| (For more information type ~HELP~, for hints type ~HINTS~)^^"; | |
| Constant DEATH_MENTION_UNDO; | |
| Constant TASKS_PROVIDED; | |
| Global hint_menu = Hint_Top; | |
| Global help_menu = Help_Top; | |
| Replace DoMenu; | |
| Replace LowKey_Menu; | |
| Include "Parser"; | |
| Constant NUMBER_TASKS = 7; | |
| Array task_scores -> 10 5 5 5 10 5 10; | |
| Constant MAX_SCORE = 50; | |
| Object LibraryMessages | |
| with before [; | |
| Miscellany: | |
| if (lm_n == 19) | |
| "You find you cannot look down at yourself. It is almost as if you | |
| know what you might find and are afraid to have your fears | |
| confirmed.";]; | |
| Include "VerbLib"; | |
| Include "Center"; | |
| Include "DoMenu"; | |
| Include "AltMenu"; | |
| Include "Hints"; | |
| !******************************************************************************* | |
| !*** Class Descriptions | |
| !******************************************************************************* | |
| Class Fake_Object | |
| has static; | |
| Class Bottle | |
| with | |
| color "colorless", | |
| name | |
| "heavy" "glass" "bottle" "lead" "leaded" "stopper" "stoppered" "cork", | |
| description [; | |
| "The bottle is made of a heavy, leaded glass and closed with a cork | |
| stopper sealed with wax. Inside the bottle, an oddly shaped lead weight | |
| hangs like a pendulum from a string. The bottle glows with a ", | |
| (string) self.color, " light.";], | |
| before [; | |
| Take: | |
| move self to player; | |
| if (self hasnt general) { | |
| move Bottles to Limbo; | |
| give Blue_Bottle ~concealed; | |
| give Green_Bottle ~concealed;} | |
| if (self == Blue_Bottle) { | |
| if (self hasnt general) { | |
| give self general; | |
| "The blue bottle is warm to your touch as you pick it up. The | |
| warmth seems to travel up your arm and into the center of your | |
| being. It is almost as if you have found a missing part of | |
| yourself.";} | |
| else | |
| "You savor the warmth of the blue bottle as you pick it up.";} | |
| else { | |
| if (self hasnt general) { | |
| give self general; | |
| "The green bottle has a sickly feel which matches its color. It | |
| feels like ice, cold and burning at the same time. It is all you | |
| can do to keep from throwing it down."; } | |
| else | |
| "You gingerly pick up the green bottle again.";} | |
| ThrownAt: | |
| move noun to location; | |
| print (The) noun, " shatters ", (the) self, ". "; | |
| self.open_bottle(); | |
| rtrue; | |
| Open: | |
| print "You peel the wax away from the mouth of the bottle and pull out | |
| the cork. "; | |
| self.open_bottle(); | |
| rtrue; | |
| Attack: | |
| print "You shatter ", (the) self, ". "; | |
| self.open_bottle(); | |
| rtrue;], | |
| has light; | |
| !******************************************************************************* | |
| !*** Hidden Game Locations and Things That Don't Start Anywhere | |
| !******************************************************************************* | |
| Object Limbo "Limbo"; | |
| !******************************************************************************* | |
| !*** The start | |
| !******************************************************************************* | |
| Object Grave "In the Mud" | |
| with description | |
| "Rain and muddy water are pouring down on you, making it difficult to | |
| see or even breathe. Sodden earth and mud surrounds you on all sides | |
| except overhead, where flashes of lightning illuminate a storm tossed | |
| sky.", | |
| before [; | |
| Listen: | |
| "Howling winds and the crashing of thunder assault your senses.";], | |
| u_to [;print "As you scramble out of the hole the mud collapses downward, | |
| filling in the hole behind you.^"; return Graveyard;], | |
| cant_go "You claw helplessly at the mud.", | |
| has light; | |
| Object Muddy_Water "muddy water" Grave | |
| with name | |
| "muddy" "water", | |
| description | |
| "Torrents of muddy water are pouring in from the opening overhead onto | |
| you.", | |
| before [; | |
| Take: | |
| "The muddy water trickles through your fingers.";], | |
| has scenery; | |
| Object Mud "mud" Grave | |
| with name | |
| "mud" "earth" "sodden", | |
| description | |
| "The sides of the hole are made of dark, rich earth, now soaked through | |
| by the torrential downpour. As you watch, more and more mud is washed | |
| away and into the hole with you.", | |
| before [; | |
| Take: | |
| "You take a handful of muddy soil, but the rain washes it away.";], | |
| has scenery; | |
| !******************************************************************************* | |
| !*** The outside | |
| !******************************************************************************* | |
| Class Outside | |
| with | |
| before [; | |
| Smell: | |
| "You would expect the storm to have cleared the air, but over the whole | |
| area hangs a fetid odor of decay.";], | |
| u_to "It is not yet that time...", | |
| d_to "That is no longer your place.", | |
| cant_go "You feel that you are unable to. Some force on you increases | |
| as you try to leave the area.", | |
| each_turn [; | |
| if (random(5) == 1) { | |
| switch (random(5)) { | |
| 1: "^A blast of thunder rattles the ground."; | |
| 2: "^With a loud CRACK, a bolt of lightning strikes the steeple of | |
| the church."; | |
| 3: "^Momentarily, the wind and rain slacken then return with renewed | |
| force."; | |
| 4: "^Lightning arcs overhead, followed instantly by a blast of | |
| thunder."; | |
| 5: "^For a brief moment, hail pounds against you then subsides.";}}], | |
| has light; | |
| Outside Graveyard "Graveyard" | |
| with description | |
| "Dozens of stone markers stand here, oblivious to the wind and the rain. | |
| Huge, twisted oaks, their limbs tossed by the wind, draw an unmentionable | |
| sustenance from the moss-covered, moldy ground. An odor of decay, which | |
| even the storm cannot dissipate, hangs over everything. An iron barred | |
| fence surrounds the graveyard, an ivy-covered barrier separating it from | |
| the world of the living. The only exit is through the gate to the east.", | |
| before [; | |
| Smell: | |
| "You smell the odors of wet earth, the wild scent of the storm, and, | |
| under it all, the lingering charnel odor of decay.";], | |
| e_to West_Church, | |
| cant_go "The graveyard is surrounded on all sides by an iron-barred fence. | |
| The only exit is through the gate to the east."; | |
| Object Graves "stone markers" Graveyard | |
| with name | |
| "stone" "markers" "graves" "slabs" "graveyard", | |
| description | |
| "Dozens of stone slabs mark the final resting places of those who have | |
| departed. All are old, the inscriptions worn away and covered with moss | |
| and mold, they tilt at odd angles. Many have fallen and are now half | |
| buried in the mud.", | |
| before [; | |
| Read: | |
| "Few of the inscriptions are legible. Those that remain contain only | |
| those sentiments that are placed there for the benefit of those who | |
| gaze upon the stones, not those buried beneath them."; | |
| Push, Pull: | |
| "The stone topples over into the mud."; | |
| Take: | |
| "You strain and lift the stone slightly from the mud, then it slips and | |
| falls over with a splash.";], | |
| has static scenery pluralname; | |
| Object Branch "oak branch" Graveyard | |
| with name | |
| "oak" "branch", | |
| description [; | |
| print "This large branch has broken off from one of the trees and fallen | |
| on one of the graves, shattering it's marker."; | |
| if ((Limb hasnt moved) && (self has general)) | |
| " A smaller limb has broken off of the branch and is lying nearby."; | |
| else | |
| new_line;rtrue;], | |
| describe [; | |
| print "^A large branch has been broken from one of the trees and has | |
| crushed the grave marker below it."; | |
| if ((Limb hasnt moved) && (self has general)) { | |
| " A smaller limb has broken off of the branch and is lying nearby.";} | |
| else | |
| new_line;rtrue;], | |
| before [; | |
| Take: | |
| if (Limb hasnt moved) { | |
| give self general; | |
| "The branch is too large to move, but a smaller limb has broken off | |
| and is lying nearby."; } | |
| else | |
| "The branch is too large to take."; | |
| Push, Pull: | |
| "You shove the branch around, to no real effect.";], | |
| has static; | |
| Object Limb "broken limb" Graveyard | |
| with name | |
| "broken" "limb", | |
| description | |
| "A stout oak limb, about as long as you are tall.", | |
| before [; | |
| Take: | |
| give self ~concealed;], | |
| has concealed; | |
| Object Disturbed_Grave "disturbed grave" Graveyard | |
| with name | |
| "broken" "shattered" "marker" "grave", | |
| description | |
| "The marker for this grave has been shattered by the fall of a large | |
| branch from the overhanging tree. The grave itself has been disturbed; | |
| the soil has fallen in to form a shallow pit.", | |
| before [; | |
| Take: | |
| "There is no need to collect the shattered remains of the marker."; | |
| Read: | |
| "The inscription is no longer legible.";], | |
| has scenery; | |
| Object Moss_Mold "moss and mold" Graveyard | |
| with name | |
| "moss" "mold" "mould", | |
| description | |
| "Mosses and molds cover the ground and the grave markers. There is | |
| something sickly looking about them, as if they are the physical | |
| manifestations of some kind of poisons in the soil. At any rate, they | |
| are alone in the graveyard, as no grasses or weeds grow within its | |
| boundaries.", | |
| before [; | |
| Take: | |
| "You pull up a handful and examine it briefly before tossing it | |
| back down. You see no use in carrying it with you."; | |
| Burn: | |
| "The moss and mold is far too wet to burn.";], | |
| has scenery; | |
| Outside West_Church "West Side of the Church" | |
| with description | |
| "This side of the church is untended and grasses and weeds have run | |
| rampant. A muddy trail leads back to the graveyard to the west and on to | |
| the southeast and a faint path continues around the church to the | |
| northeast.", | |
| w_to Graveyard, | |
| e_to "There is no entrance into the church on this side.", | |
| ne_to North_Church, | |
| n_to North_Church, | |
| se_to Front_Church, | |
| s_to Front_Church; | |
| Object Trail "muddy trail" West_Church | |
| with name | |
| "muddy" "trail" "faint" "path", | |
| description | |
| "Simply a worn trail through the grass, it leads around the church | |
| to the northeast and southeast and west to the graveyard.", | |
| has scenery; | |
| Outside North_Church "North Side of the Church" | |
| with description | |
| "The trees close in here, their storm-tossed branches seeming to reach | |
| clawing limbs towards the back of the church. The weeds have run wild | |
| here and ivy climbs its way up the back of the building. A faint path | |
| continues around the church to the southeast and the southwest.", | |
| se_to East_Church, | |
| e_to East_Church, | |
| sw_to West_Church, | |
| w_to West_Church, | |
| s_to "There is no entrance into the church on this side."; | |
| Object Path "faint path" North_Church | |
| with name | |
| "faint" "path" "trail", | |
| description | |
| "A barely visible rut in the grass leads around the church to the | |
| southeast and southwest.", | |
| has scenery; | |
| Outside East_Church "East Side of the Church" | |
| with description | |
| "This wide, graveled clearing may have once been where the worshippers at | |
| the church left their vehicles while attending services inside. If so, it | |
| seems that the last service was held long ago. Weeds and grasses grow up | |
| through the gravel, which is littered with debris. Dark, looming trees | |
| surround the clearing except for the driveway, which leads to the | |
| southwest, and for a narrow opening to the northwest.", | |
| sw_to Front_Church, | |
| s_to Front_Church, | |
| nw_to North_Church, | |
| n_to North_Church, | |
| w_to "There is no entrance into the church on this side."; | |
| Object Parking_Lot "graveled clearing" East_Church | |
| with name | |
| "gravel" "graveled" "clearing" "parking" "lot", | |
| description | |
| "Dirty chunks of rock mix with mud to create a more or less level | |
| surface.", | |
| before [; | |
| Take: | |
| if (Gravel notin player) { | |
| move Gravel to player; | |
| "You pick up a handful of gravel.";} | |
| else | |
| "You already have a handful of gravel."; | |
| Dig: | |
| "You dig a small hole in the gravel which the storm immediately | |
| fills in with rain and mud.";], | |
| has scenery; | |
| Object Gravel "handful of gravel" Limbo | |
| with name | |
| "handful" "of" "gravel", | |
| description | |
| "A handful of loose, muddy gravel.", | |
| before [; | |
| Drop: | |
| move self to Limbo; | |
| if (location ofclass Outside) | |
| "You toss down the gravel which scatters across the ground."; | |
| else | |
| "You toss down the gravel which scatters among the debris on the | |
| floor.";], | |
| after [; | |
| ThrowAt: | |
| move self to Limbo; | |
| "The gravel scatters across the ground and is lost.";]; | |
| Object Lot_Debris "debris" East_Church | |
| with name | |
| "debris" "sticks" "leaves" "trash", | |
| description | |
| "Scattered sticks, leaves and bits of trash cover the gravel clearing.", | |
| before [; | |
| Take: | |
| "You see no need to carry the trash around with you.";], | |
| has scenery pluralname; | |
| Outside Front_Church "Front of the Church" | |
| with description | |
| "Two massive oak trees which flank the cracked sidewalk dominate the front | |
| of the church. The facade of the church itself rises beyond them, its | |
| steeple silhouetted against the sky. The storm lashes at its faded white | |
| facade, almost as if the storm is trying to wash the church clean; | |
| something you somehow realize will take more than mere water to accomplish. | |
| To the north, a sidewalk leads to the front of the church. A weed-choked | |
| driveway runs to the northeast and down a hill to the south, and a muddy | |
| path leads around the church to the northwest.", | |
| e_to East_Church, | |
| ne_to East_Church, | |
| w_to West_Church, | |
| nw_to West_Church, | |
| n_to [;if (Dog hasnt general) | |
| "Bristling and growling, the dog blocks your path"; | |
| else { | |
| Achieved(0); | |
| return Porch;}], | |
| u_to [;if (Railing_Section.is_under ~= Top_Of_Tree) | |
| "The tree trunks are too slick with rain to climb."; | |
| else | |
| return Railing_Section;]; | |
| Object Oak_Trees "oak trees" Front_Church | |
| with name | |
| "massive" "oak" "trees" "tree", | |
| description | |
| "These massive trees are easily hundreds of years old. They tower over | |
| the front of the church, climbing almost as high as the steeple. Unlike | |
| the forest surrounding other parts of the grounds they are almost | |
| unnaturally healthy, their branches clean and straight and their leaves | |
| a deep rich green.", | |
| before [; | |
| Climb: | |
| if (Railing_Section.is_under == Top_Of_Tree) | |
| <<Go Railing_Section>>; | |
| else | |
| "The trunk is too rain-slick to climb.";], | |
| has pluralname static scenery; | |
| Object Dog "guard dog" Front_Church | |
| with | |
| is_mad false, | |
| is_following false, | |
| temper 0, | |
| chain_length 0, | |
| name | |
| "guard" "dog" "fido" "rover", | |
| description [; | |
| if (self.is_mad) | |
| "The dog is slavering and barking wildly as it throws itself at you | |
| again and again."; | |
| else | |
| "This large, solid black dog is chained to one of the oak trees. There | |
| is something disturbing about the shape of it's head; it seems to be | |
| too large and slightly misshapen and an unnatural intelligence can | |
| be seen behind its red eyes.";], | |
| describe | |
| "A formidable looking guard dog stands here.", | |
| orders [; | |
| "The dog growls threateningly.";], | |
| before [; | |
| Touch: | |
| "^The dog snarls and snaps at you as you reach for it and you draw | |
| your hand back hurriedly.";], | |
| life [; | |
| Attack: | |
| self.is_mad = true; | |
| "^Angered at your attack, the dog charges at you!"; | |
| ThrownAt: | |
| move noun to location; | |
| <<Attack self>>; | |
| default: | |
| "The dog snarls and barks at you.";], | |
| daemon [d p x; | |
| d = parent(self); | |
| p = location; | |
| if (p == d) { | |
| give self ~general; | |
| self.is_following = true; | |
| if (self.is_mad) { | |
| switch(self.temper++) { | |
| 0: "^The dog growls and snarls angrily, snapping at your legs."; | |
| 1: "^The dog leaps at you, raking your chest with its claws and | |
| leaving a trail of red."; | |
| 2: "^You feel a flash of searing pain as the dog latches onto | |
| your side with its teeth."; | |
| 3: deadflag = 1; | |
| "^The dog finally manages to latch onto your throat. Your | |
| last sight is of your blood splattering onto its face.";}} | |
| "^The dog growls at you threateningly.";} | |
| else { | |
| if (self.temper > 0) self.temper--; | |
| if (self.is_following) { | |
| if ((self.is_mad) || | |
| (p == Front_Church or East_Church or West_Church)) { | |
| switch(d) { | |
| Front_Church: | |
| if (p == West_Church) x = 1; | |
| if (p == East_Church) x = -1; | |
| West_Church: | |
| if (p == North_Church) x = 1; | |
| if (p == Front_Church) x = -1; | |
| North_Church: | |
| if (p == East_Church) x = 1; | |
| if (p == West_Church) x = -1; | |
| East_Church: | |
| if (p == Front_Church) x = 1; | |
| if (p == North_Church) x = -1; | |
| default: | |
| x = 0;} | |
| self.chain_length = self.chain_length + x; | |
| if ((self.chain_length > -4) && (self.chain_length < 4)) { | |
| move self to p; | |
| if (self.is_mad) | |
| "^The dog chases madly after you!"; | |
| "^Growling faintly, the dog follows you to ", (the) p, | |
| ", dragging its chain behind it.";} | |
| else { | |
| if (self hasnt general) { | |
| give self general; | |
| self.is_following = false; | |
| self.chain_length = self.chain_length - x; | |
| "^The dog lunges after you, but is suddenly jerked to | |
| a stop with a yelp. The dog has been brought up short | |
| by it's chain, which is now completely wrapped around | |
| the church. It barks wildly but ineffectually at you | |
| as you continue on around the corner.";}}} | |
| else { | |
| self.is_following = false; | |
| move self to Front_Church; | |
| self.chain_length = 0; | |
| "^Satisfied, the dog wanders off back to the Front of the | |
| Church.";}}} | |
| rtrue;], | |
| has male animate; | |
| Fake_Object Chain "chain" | |
| with name | |
| "chain", | |
| description | |
| "A heavy steel chain. It has rusted slightly but is still more than | |
| sturdy enough to hold the dog.", | |
| describe [; | |
| if (Dog has general) { | |
| switch (location) { | |
| Front_Church: | |
| if (Dog notin location) { | |
| print "^The heavy chain stretches from one of the oak trees and around | |
| the corner of the church to the "; | |
| if (Dog.chain_length > 0) "northwest."; "northeast.";} | |
| East_Church: | |
| if (Dog notin location) | |
| "^A heavy chain stretches around the church to the northwest | |
| and southwest."; | |
| West_Church: | |
| if (Dog notin location) | |
| "^A heavy chain is wrapped around the church, disappearing to | |
| the northeast and southeast."; | |
| North_Church: | |
| "^A heavy chain disappears around the east and west corners.";}} | |
| rtrue;], | |
| before [; | |
| Take, Pull: | |
| "The dog probably wouldn't like you to be pulling on its chain.";], | |
| found_in Front_Church East_Church West_Church North_Church, | |
| has static; | |
| Outside Top_Of_Tree "Top of Oak Tree" | |
| with description | |
| "The limbs of the tree are swaying violently from the storm, but near the | |
| trunk it is a little more stable. You have an excellent view from here | |
| of the church grounds and surrounding area. The church seems to be in | |
| a clearing on a hill surrounded by a forest. At the base of the hill a | |
| small town can be seen, its lights glimmering faintly through the storm. | |
| ^^One of the branches of the tree reaches out to the north towards the | |
| steeple of the church. An open frame can be seen in the steeple near | |
| where the branch ends.", | |
| before [; | |
| Jump: | |
| deadflag = 1; | |
| "Throwing caution to the winds, you leap out of the tree and into | |
| space. The wind howls around you as you plummet to the ground. Your | |
| last sight is the church steeple, silhouetted by the lightning against | |
| the sky."; | |
| Climb: | |
| if (noun == Railing_Top) rfalse; | |
| if (noun == Tree_Branch) rfalse; | |
| if (Railing_Top.is_over ~= Front_Church) | |
| "You cannot climb any further up and the trunk of the tree is | |
| too slick to climb down."; | |
| else | |
| <<Climb Railing_Top>>; | |
| Drop: | |
| move noun to Front_Church; | |
| print_ret (The) noun, " tumbles through the branches to the | |
| ground.";], | |
| n_to Belfry, | |
| d_to [;if (Railing_Top.is_over ~= Front_Church) | |
| "The drop to the ground below is too far for you to jump safely, | |
| and the trunk of the tree is too slick to climb."; | |
| else | |
| return Front_Church;]; | |
| Object Tree_Branch "tree branch" | |
| with name | |
| "oak" "tree" "branch", | |
| description | |
| "The tree branch sways alarmingly in the wind but seems quite sturdy. It | |
| passes very close to the open window frame in the steeple.", | |
| before [; | |
| Take: | |
| "The branch is securely attached to the tree."; | |
| Climb: | |
| PlayerTo(Belfry,2);], | |
| found_in Top_Of_Tree Belfry, | |
| has scenery; | |
| Object Sidewalk "sidewalk" Front_Church | |
| with name | |
| "walk" "sidewalk" "path" "flagstone" "flagstones", | |
| description | |
| "A wide flagstone path leads between the two oak trees to the front of | |
| the church. The earth has shifted, causing the stones to tilt at odd | |
| angles, and weeds and grass grow in the cracks between the flagstones.", | |
| before [; | |
| Take: | |
| "You attempt to lift one of the flagstones, but it slips and falls | |
| back with a squishing splash.";], | |
| has scenery; | |
| Object Driveway "driveway" | |
| with name | |
| "drive" "driveway", | |
| description | |
| "A rutted, gravel covered path.", | |
| found_in East_Church Front_Church, | |
| has scenery; | |
| Object Ivy "ivy" | |
| with name | |
| "ivy" "vine" "creepers", | |
| description [; | |
| if (location == Graveyard) | |
| "The ivy is thick and luxuriant and somehow disturbing. The shapes | |
| of the leaves are not quite wholesome and you wonder what strange | |
| sustenance it is drawing from beneath the moldering ground."; | |
| else | |
| "The ivy is sick and yellowed looking but somehow clings to the side | |
| of the church as if it is trying to distance itself from the rocky | |
| soil.";], | |
| before [; | |
| Climb: | |
| "The rain-soaked vines tear loose in your hands, covering you with | |
| wet leaves and sticky sap."; | |
| Take: | |
| "The vines pull away easily enough, but maintain a tenacious hold on | |
| the ground that you are unable to break."; | |
| Burn: | |
| "The vines are too wet to burn.";], | |
| found_in Graveyard North_Church, | |
| has scenery; | |
| Object Forest "oak trees" | |
| with name | |
| "oak" "oaks" "tree" "trees" "forest" "limbs" "twisted" "ancient", | |
| description [; | |
| if (location == Graveyard) | |
| "These ancient, twisted trees surround and even invade the graveyard. | |
| Now tossed wildly by the storm, their branches reach skyward while | |
| their roots suck unholy nourishment from between the broken slabs."; | |
| else | |
| "The trees wave wildly in the wind, their twisted limbs seeming to | |
| reach out to claw at the side of the church. No birds or forest | |
| animals inhabit their branches; a repellent air surrounds them that | |
| seems inimical to any such invasion.";], | |
| before [; | |
| Climb: | |
| "The trunk is too wet and rain-slick to do that safely.";], | |
| found_in Graveyard North_Church East_Church Top_Of_Tree Belfry, | |
| has scenery pluralname; | |
| Object Outside_Storm "storm" | |
| with name | |
| "storm" "clouds" "sky" "wind" "thunder" "lightning", | |
| description | |
| "The howling wind sends the clouds racing across the sky. The almost | |
| constant flashing of lightning illuminates the landscape in stark black | |
| and white contrast, while the barrage of thunder joins with the wind in | |
| a mad concaphony.", | |
| before [; | |
| Take: | |
| "You can't take the wind!";], | |
| found_in [; if ((location ofclass Outside) || (location == Grave) || | |
| (location == Belfry)) rtrue;], | |
| has scenery; | |
| Object Rain "rain" | |
| with name | |
| "rain", | |
| description | |
| "The rain pours downward, pelting you painfully and almost blinding you | |
| with its intensity.", | |
| before [; | |
| Take: | |
| "You are already soaked.";], | |
| found_in [; if ((location ofclass Outside) || (location == Grave)) rtrue;], | |
| has scenery; | |
| Object Muddy_Ground "mud" | |
| with name | |
| "mud" "muddy" "earth" "sodden" "ground", | |
| description | |
| "A thin layer of mud covers the rocky soil.", | |
| before [; | |
| Take: | |
| "You take a handful of muddy soil, but the rain washes it away."; | |
| Dig: | |
| "You are only able to dig a few inches before striking rock, and the | |
| rain rapidly washes more mud in to fill up the hole you make.";], | |
| found_in [; if (location ofclass Outside) rtrue;], | |
| has scenery; | |
| Object Grass_Weed "grasses and weeds" | |
| with name | |
| "grass" "grasses" "weed" "weeds", | |
| description | |
| "Diseased looking grasses and weeds surround the church. In clumps it | |
| rises to your knees, while in other places it has been beaten to the | |
| ground by the force of the storm.", | |
| before [; | |
| Take: | |
| "You pull up a handful and examine it briefly before tossing it | |
| back down. You see no use in carrying it with you."; | |
| Burn: | |
| "The grass and weeds are far too wet to burn.";], | |
| found_in [; if ((location ofclass Outside) && (location ~= Graveyard)) | |
| rtrue;], | |
| has scenery; | |
| Fake_Object Church "church" | |
| with name | |
| "church" "building", | |
| description | |
| "The old church has seen better days. Formerly painted white, the boards | |
| are now faded, peeling and rotted. Most of the windows are boarded up, | |
| and those that aren't have long since been broken out. The shingles have | |
| fallen from the roof, which sags alarmingly. A broken-tipped steeple rises | |
| from one end of the building, and a faint miasma of decay seems to rise | |
| from the structure.", | |
| describe [; | |
| switch (location) { | |
| Graveyard: | |
| "^A church rises to the east, its boarded up windows giving the | |
| impression that it is covering its eyes from the sight of the | |
| graveyard."; | |
| West_Church: | |
| "^To the east, the wall of the church breaks some of the force of | |
| the wind."; | |
| North_Church: | |
| "^The south wall of the church looms blankly overhead."; | |
| East_Church: | |
| "^To the west, the church stares out over the clearing."; | |
| Front_Church: | |
| "^The church and steeple loom to the north, the open window frames | |
| seeming to stare with judgment upon anyone standing before it."; | |
| Top_Of_Tree: | |
| "^The steeple of the church looms to the north.";}], | |
| found_in [; if ((location ofclass Outside) && (location ~= Porch)) rtrue;], | |
| has static; | |
| Object Steeple "steeple" | |
| with name | |
| "steeple", | |
| description | |
| "Pointing heavenward like some broken, accusing finger, the steeple rises | |
| from the front of the church. The steeple ends in a ragged, blunt tip; | |
| whatever decoration may have once surmounted it is long gone.", | |
| found_in [;if (location ofclass Outside) rtrue;], | |
| has scenery; | |
| Object Windows "windows" | |
| with name | |
| "stained" "glass" "broken" "window" "windows" "board" "boards" "frame", | |
| description | |
| "Once, the windows were probably told stories of hope and redemption | |
| in brightly colored stained glass. Now, they are boarded up as if the | |
| church has closed it's eyes to the world outside.", | |
| before [; | |
| Take, Push, Pull, Open, Close: | |
| "The boards are nailed firmly in place.";], | |
| found_in [;if (location ofclass Outside) rtrue;], | |
| has scenery pluralname; | |
| !******************************************************************************* | |
| !*** The Porch | |
| !******************************************************************************* | |
| Outside Porch "Church Porch" | |
| with name | |
| "wide" "covered" "porch", | |
| description | |
| "This wide, covered porch spans the width of the church front. A white | |
| picket railing surrounds the porch on three sides, except to the south | |
| where a short flight of steps leads down to the sidewalk. Two large | |
| windows have been boarded up but the main doors stand slightly ajar.", | |
| n_to Vestibule, | |
| s_to Front_Church, | |
| d_to "The floor here is old, but still pretty solid.", | |
| u_to "The railing is too rickety to climb.", | |
| cant_go "There is no way off the porch in that direction."; | |
| Object Railing "white picket railing" Porch | |
| with name | |
| "white" "picket" "railing" "rail", | |
| description [; | |
| print "The railing consists of two parallel lengths of wood about an | |
| arm's span apart connected by wooden pickets. "; | |
| if (self hasnt general) | |
| "One section of the railing seems fairly unsteady."; | |
| else | |
| "One section of the railing is missing.";], | |
| before [; | |
| Take, Push, Pull: | |
| if (self hasnt general) { | |
| give self general; | |
| if (action == ##Take) | |
| move Railing_Section to player; | |
| else | |
| move Railing_Section to location; | |
| "With a jerk, you tear free the loose section of railing.";} | |
| else | |
| "The rest of the railing seems fairly steady.";], | |
| has static scenery; | |
| Object Railing_Section "broken length of railing" Limbo | |
| with | |
| is_under 0, | |
| name | |
| "broken" "section" "of" "white" "picket" "railing" "ladder" "rail", | |
| description | |
| "The railing consists of two parallel lengths of wood about an arm's span | |
| apart connected by wooden pickets. If stood on end, the rail would be | |
| about twice your height.", | |
| describe [; | |
| switch (self.is_under) { | |
| Steeple_Chamber: | |
| "^The broken length of railing is propped up under the trap door"; | |
| Top_Of_Tree: | |
| "^The broken length of railing is propped up against the side of the | |
| oak tree."; | |
| Near_Painting: | |
| "^The broken length of railing is propped against the wall near the | |
| painting."; | |
| default: | |
| "The broken length of porch railing is lying here.";}], | |
| before [; | |
| PutUnder: | |
| if (self notin player) | |
| "You don't have ", (the) self, "."; | |
| move self to location; | |
| if ((location == Vestibule) && (second == Trap_Door)) { | |
| give self door; | |
| self.is_under = Steeple_Chamber; | |
| move Railing_Top to Steeple_Chamber; | |
| Railing_Top.is_over = Vestibule; | |
| "You carefully place the length of railing under the trap door in | |
| the ceiling.";} | |
| if ((location == Front_Church) && (second == Oak_Trees)) { | |
| give self door; | |
| self.is_under = Top_Of_Tree; | |
| move Railing_Top to Top_Of_Tree; | |
| Railing_Top.is_over = Front_Church; | |
| "You lean the length of railing against the side of the oak tree.";} | |
| if ((location == Sanctuary) && (second == Painting)) { | |
| give self door; | |
| self.is_under = Near_Painting; | |
| move Railing_Top to Near_Painting; | |
| Railing_Top.is_over = Sanctuary; | |
| "You lean the length of railing against the wall near the | |
| painting.";} | |
| "You put ", (the) self, " under ", (the) second, "."; | |
| Take: | |
| give self ~door; | |
| self.is_under = 0; | |
| move Railing_Top to Limbo; | |
| Railing_Top.is_over = 0; | |
| Climb: | |
| if (self.is_under ~= 0) { | |
| print "You carefully climb up the length of railing, using the | |
| pickets like a ladder.^"; | |
| <<Go self>>;} | |
| else | |
| "The railing doesn't lead anywhere.";], | |
| door_dir u_to, | |
| door_to [; | |
| if (self.is_under ~= 0) { | |
| if (self.is_under == Steeple_Chamber) Achieved(1); | |
| return self.is_under;} | |
| "The railing doesn't lead anywhere.";], | |
| has open; | |
| Object Railing_Top "top of railing" Limbo | |
| with | |
| is_over 0, | |
| name | |
| "top" "broken" "section" "of" "white" "picket" "railing" "ladder" "rail", | |
| description | |
| "The railing consists of two parallel lengths of wood about an arm's span | |
| apart connected by wooden pickets. If stood on end, the rail would be | |
| about twice your height.", | |
| describe [; | |
| switch (self.is_over) { | |
| Vestibule: | |
| "^The top of the broken section of railing is visible sticking up | |
| through the trap door in the floor."; | |
| Front_Church: | |
| "^The broken length of railing is propped up against a nearby | |
| branch."; | |
| Sanctuary: | |
| "^You are precariously balanced on the top of the broken section of | |
| railing."; | |
| default: | |
| "You are standing on a bug!";}], | |
| before [; | |
| Take: | |
| "You attempt to pull the railing up after you, but you cannot get | |
| enough leverage to do so."; | |
| Climb: | |
| <<Go self>>;], | |
| door_dir d_to, | |
| door_to [; return self.is_over;], | |
| has open door; | |
| !******************************************************************************* | |
| !*** The inside | |
| !******************************************************************************* | |
| Class Inside | |
| with | |
| u_to "It is not yet that time...", | |
| d_to "That is no longer your place.", | |
| cant_go "There is no passage in that direction.", | |
| each_turn [; | |
| if (random(5) == 1) { | |
| switch (random(5)) { | |
| 1: "^A blast of thunder rattles the building."; | |
| 2: "^You hear a loud crash and see a flash of light through the | |
| cracks in the boards covering the windows."; | |
| 3: "^The building shudders under a sudden gust of wind."; | |
| 4: "^A flash of lightning can be seen through the cracks between | |
| the boards, followed by a sudden blast of thunder."; | |
| 5: "^There is a brief rattle of hail on the roof.";}}], | |
| has light; | |
| Inside Vestibule "Vestibule" | |
| with description | |
| "This small room is the entryway for the church. The years of neglect | |
| are obvious; the floorboards are rotten and warped and what were probably | |
| once stained glass windows are shattered and boarded up. Dirt and debris | |
| covers the floor. A set of double doors leads south back to the outside | |
| while a large archway leads north into the sanctuary. Overhead, there is | |
| an open trap door in the ceiling at about twice your height.", | |
| n_to Sanctuary, | |
| s_to Porch, | |
| u_to [;if (Railing_Section.is_under ~= Steeple_Chamber) | |
| "The opening in the ceiling is too far up for you to reach."; | |
| else | |
| return Railing_Section;]; | |
| Object Trap_Door "trap door" Vestibule | |
| with name | |
| "trap" "door" "hole" "ceiling" "opening", | |
| description | |
| "The opening in the ceiling seems to lead to another room overhead, but | |
| there doesn't seem to be any way to get to it.", | |
| has scenery; | |
| Inside Sanctuary "Sanctuary" | |
| with description | |
| "Once the heart of the church this room is now cold, dark and empty. | |
| Debris is scattered among the sagging pews and only shards of broken | |
| glass remain of the stained glass windows. Most of the interior | |
| fixtures have been removed, but a large portrait of Christ stares down | |
| at you from above the archway to the south. The pulpit still stands to | |
| the north.", | |
| before [; | |
| Pray: | |
| "You pray, with no result. You sense somehow that your prayers are not | |
| so much being unheard as they are ignored.";], | |
| n_to Pulpit, | |
| s_to Vestibule, | |
| u_to [;if (Railing_Section.is_under == Near_Painting) | |
| return Railing_Section;]; | |
| Fake_Object Distant_Pulpit "pulpit" | |
| with name | |
| "pulpit" "podium", | |
| description | |
| "A simple raised platform at the front of the church, it supports a simple | |
| wooden podium.", | |
| found_in Sanctuary Near_Painting, | |
| has static scenery; | |
| Object Pews "pews" Sanctuary | |
| with name | |
| "sagging" "pews" "seats", | |
| description | |
| "Once, these rows would have been filled with worshippers. Now, they | |
| only contain dust and debris.", | |
| after [; | |
| Enter: | |
| "You sit in the pew. For a moment, the storm seems to retreat and | |
| you are blessed with a brief moment of peace.";], | |
| has static scenery enterable open transparent pluralname; | |
| Inside Near_Painting "Near Painting" | |
| with description | |
| "You are standing on top of the railing section near the large painting | |
| of Christ. From this location, you notice that the eyes in the painting | |
| are cut out and there are holes behind them.", | |
| before [; | |
| Drop: | |
| move noun to Sanctuary; | |
| print_ret (The) noun, " falls to the floor below.";], | |
| d_to Railing_Top, | |
| cant_go "~Down~ is really your only option."; | |
| Object Eyes "eyes of painting" Near_Painting | |
| with name | |
| "eye" "eyes" "hole" "holes", | |
| description | |
| "The eyes of the painting are cutouts. There are holes and an open space | |
| behind the eyes.", | |
| before [; | |
| Search: | |
| if (Curtain has general) | |
| "You are looking into the small room in the steeple. You can see | |
| past a faded purple curtain to a small table which is holding | |
| two heavy glass bottles."; | |
| else | |
| "You find yourself looking into a small enclosed space covered | |
| with a faded purple curtain.";], | |
| has pluralname scenery; | |
| Fake_Object Distant_Bottles Near_Painting | |
| with name | |
| "heavy" "glass" "bottles", | |
| description | |
| "The two bottles of heavy glass are sitting on the table. One glows with | |
| a vivid green light and the other with a pale blue light.", | |
| has scenery; | |
| Bottle Distant_Green_Bottle "green bottle" Near_Painting | |
| with | |
| color "vivid green", | |
| name | |
| "vivid" "green", | |
| before [; | |
| Take, Attack, Open, ThrownAt: | |
| "You can't do anything to the green bottle from here.";], | |
| has scenery; | |
| Bottle Distant_Blue_Bottle "blue bottle" Near_Painting | |
| with | |
| color "pale blue", | |
| name | |
| "pale" "blue", | |
| before [; | |
| Take, Attack, Open, ThrownAt: | |
| "You can't do anything to the blue bottle from here.";], | |
| has scenery; | |
| Inside Pulpit "Pulpit" | |
| with name | |
| "pulpit", | |
| description | |
| "From this raised platform you can see the entire inside of the church. | |
| The pulpit is empty except for the podium which rises from the center. | |
| A small door is visible behind the podium to the north.", | |
| before [; | |
| Pray: | |
| "You pray, with no result. You sense somehow that your prayers are not | |
| so much being unheard as they are ignored.";], | |
| s_to Sanctuary, | |
| n_to Office; | |
| Object Podium "podium" Pulpit | |
| with name | |
| "podium" "stand" "lectern" "carved" "wooden", | |
| description [; | |
| print "This carved wooden podium is where the leader of this church would | |
| have addressed his or her followers. Now, from the podium, you can only | |
| see rows of empty pews and a lone painting of Christ, staring blankly down | |
| from the south wall."; | |
| if (parent(Book) == self) | |
| " A large black book is resting open on the podium."; | |
| else | |
| new_line; rtrue;], | |
| has supporter static scenery; | |
| Object Book "large black book" Podium | |
| with name | |
| "large" "black" "book", | |
| description | |
| "At first you thought this book was a Bible, but now you realize that you | |
| were mistaken. The large, black, leather-bound tome contains passages | |
| you find disturbing, and uncomfortably familiar.", | |
| before [; | |
| Read: | |
| "Much of the book has been damaged by moisture and rats, but some of | |
| the passages are still legible. One in particular sticks in your | |
| mind... ~The way to understand another is through their eyes, because | |
| the eyes are the windows of the soul. Through the eyes the soul may | |
| seen by those who are sensitive, and through the eyes the soul my be | |
| taken by those who have pledged themselves to the ones who wait | |
| beyond.~"; | |
| Take: | |
| give self ~concealed;], | |
| has concealed; | |
| Object Painting "painting" | |
| with name | |
| "painting" "portrait" "of" "Christ", | |
| description | |
| "As you look at the painting, a memory seems to float to the surface of | |
| your mind. You remember standing in this church and looking at that | |
| painting. And you remember it staring back at you, with malevolent, | |
| vivid green eyes...", | |
| before [; | |
| Take: | |
| "The painting is too high up on the wall to do anything with.";], | |
| found_in Sanctuary Pulpit Near_Painting, | |
| has scenery; | |
| Object Distant_Eyes "eyes in painting" | |
| with name | |
| "eyes", | |
| description | |
| "There is something unusual about the eyes of the painting, but it is | |
| too far away to see clearly.", | |
| found_in Sanctuary Pulpit, | |
| has scenery; | |
| Inside Office "Small Office" | |
| with description | |
| "This small office has the same run-down appearance of the rest of the | |
| church. Debris covers the floor and a trickle of water comes in around | |
| the boards covering a broken window. A desk stands in the middle of the | |
| room and an empty bookshelf sits against one wall. A pile of ashes marks | |
| where a fire once burned in the middle of the floor. A door to the south | |
| leads back to the sanctuary.", | |
| s_to Pulpit; | |
| Object Desk "desk" Office | |
| with name | |
| "old" "wooden" "desk", | |
| description | |
| "An old wooden desk. Scarred and water-damaged, it has been here for | |
| some time.", | |
| has supporter static scenery transparent; | |
| Object Bookshelf "bookshelf" Office | |
| with name | |
| "bookshelf" "shelf" "shelves" "bookcase", | |
| description | |
| "A warped, wooden bookshelf.", | |
| before [; | |
| Push, Pull: | |
| if (self hasnt general) { | |
| move Grimoire to location; | |
| give self general; | |
| "You push the bookshelf to one side, revealing an old book bound | |
| in a strange reddish cover.";} | |
| Search: | |
| if (self hasnt general) | |
| "There seems to be something between the bookshelf and the | |
| wall.";], | |
| has container static scenery transparent; | |
| Object Grimoire "old grimoire" | |
| with name | |
| "book" "volume" "grimoire" "old" "red" "reddish" "spellbook", | |
| description | |
| "A very old volume, bound in some strange reddish material. At first you | |
| thought it was leather but it seems to be more closely akin to | |
| snakeskin. The book seems to be a weird grimoire or spellbook and mostly | |
| concerns the soul or spirit.", | |
| before [; | |
| Read: | |
| "The book contains several rituals and procedures all involving the | |
| soul or spirit. The first describes a ritual through which the soul | |
| can be removed from a person's body and placed in a specially prepared | |
| container. The soul remains in the container even if the person's | |
| body dies.^^A second ritual can be employed to use the stored soul as | |
| a receptacle for the sin of another person. This allows the possessor | |
| of another's soul to perform any acts they wish without having to answer | |
| for those acts in the next world.";], | |
| has; | |
| Object Journal "journal" Desk | |
| with name | |
| "old" "book" "journal" "diary" "page" "pages", | |
| initial | |
| "An old book lies on the desk.", | |
| description [; | |
| if (self hasnt general) | |
| "A book of blank pages, the kind that would be used to keep a ledger | |
| or a journal. Unfortunately, someone has torn out most of the | |
| pages and only blank sheets remain."; | |
| else | |
| "A book of blank pages, the kind that would be used to keep a ledger | |
| or a journal. Someone has torn out most of the pages, but the ashes | |
| have made the indentations from the last entry legible.";], | |
| before [; | |
| Search: | |
| "Looking carefully at the book you notice that the last entry must | |
| have been made with great force. The entry has left indentations on | |
| the first blank page in the book."; | |
| Read: | |
| if (self hasnt general) | |
| "But, the pages are all blank!"; | |
| else | |
| Achieved(3); | |
| "You read the last entry from the journal... ~I cannot continue. | |
| The more I come to know her the more I realize that I cannot | |
| continue to corrupt her. She was pure and innocent before I took | |
| her, and that innocence allows her to continue to trust me even | |
| after what I have done. I only hope that the taint of that which | |
| I have done has not stained her irrevocably and that she will go | |
| to her proper place after I release her... and that I shall go to | |
| mine.~";], | |
| has; | |
| Object Pile_of_Ash "pile of ash" Office | |
| with name | |
| "pile" "of" "ash" "ashes" "fire", | |
| description | |
| "It seems as if a good sized fire once burned here; it is amazing that the | |
| entire room did not catch fire. From the occasional bit of unburned | |
| material it seems as if whoever built the fire was burning books, | |
| probably from the now empty bookcase. Mixed in with the ashes you find | |
| a number of jagged shards of glass.", | |
| before [; | |
| Take: | |
| if (Ash notin player) { | |
| move Ash to player; | |
| "You pick up a handful of ashes.";} | |
| else | |
| "You already have a handful of ashes."; | |
| Search: | |
| <<Examine Broken_Bottle>>;], | |
| has scenery; | |
| Object Ash "handful of ashes" Limbo | |
| with name | |
| "handful" "of" "ashes" "ash", | |
| description | |
| "A handful of old ashes.", | |
| before [; | |
| Drop, ThrowAt: | |
| move self to Limbo; | |
| if (location ofclass Outside) | |
| "You toss down the ashes, which scatter in the wind."; | |
| else | |
| "You toss down the ashes, which scatter among the debris on the | |
| floor."; | |
| Rub, Insert, PutOn: | |
| if (second == Journal) { | |
| give Journal general; | |
| "As you rub the ashes against the page, the indentations fill in | |
| and the last entry becomes visible.";}]; | |
| Object Broken_Bottle "broken shards of glass" Office | |
| with name | |
| "broken" "jagged" "bottle" "shards" "glass", | |
| description [; | |
| print "A number of shards of broken glass lies mixed in with the ashes. | |
| From the look of the fragments, it was some kind of thick walled bottle | |
| that was smashed into the floor."; | |
| if (Stopper hasnt moved) | |
| print " A curious object lies in with the shards of glass. It looks like | |
| a heavy rubber stopper with a chain hanging from it."; | |
| new_line; rtrue;], | |
| before [; | |
| Take: | |
| "You cut your finger on the glass as you attempt to pick it up.";], | |
| has pluralname scenery; | |
| Object Stopper "heavy stopper" Office | |
| with name | |
| "heavy" "stopper" "rubber" "chain" "object" "lead" "weight", | |
| description | |
| "A heavy rubber stopper, such as would be used to close a bottle. Bits of | |
| wax still cling to the edge showing where the bottle was sealed with the | |
| stopper in place. A fine chain hangs from the stopper and ends in an oddly | |
| carved lead weight.", | |
| before [; | |
| Take: | |
| give self ~concealed;], | |
| has concealed; | |
| Object Robe "embroidered robe" Office | |
| with name | |
| "embroidered" "red" "robe" "robes", | |
| initial | |
| "A richly embroidered robe hangs beside the door.", | |
| description | |
| "Richly embroidered red robes, such as might be worn for ceremonial | |
| purposes.", | |
| has clothing; | |
| Inside Steeple_Chamber "Steeple Chamber" | |
| with description | |
| "This small chamber is about halfway up the steeple of the church. Rain | |
| and wind from the storm outside blows in through an open window frame and | |
| water collects in puddles on the warped floor, mixing with the droppings | |
| of the birds, or perhaps bats, which can be heard fluttering around | |
| overhead. Looking up, you can see a maze of beams and supports that form | |
| the interior of the steeple. Rain pours in from an opening higher in the | |
| steeple and trickles out through a trap door in the floor.", | |
| n_to Steeple_Door, | |
| u_to [;if (parent(Rope) ~= location) | |
| "There is no good way to climb upwards from here."; | |
| else | |
| return Rope;], | |
| d_to [;if (Railing_Top.is_over ~= Vestibule) | |
| "The drop to the floor of the vestibule below is too far for you | |
| to jump safely."; | |
| else | |
| return Vestibule;]; | |
| Inside Inner_Chamber "Inner Chamber" | |
| with description | |
| "Even with the door open and the wind from the storm blowing in this room | |
| is rank with a fetid odor. The floor is piled high with trash and half | |
| eaten scraps of food. There are no windows, only the broken door frame | |
| to the south. An old sofa is pushed against one wall and a heavy table | |
| sits in the middle of the room. A curtained archway is to the north.", | |
| before [; | |
| Smell: | |
| "The room smells of urine, sweat and rotting food.";], | |
| s_to Steeple_Door, | |
| n_to Curtain; | |
| Object Steeple_Door | |
| with name | |
| "heavy" "wooden" "door" "barred" "handle" "knob" "splintered", | |
| short_name [; | |
| if (self hasnt open) | |
| print "heavy wooden door"; | |
| else | |
| print "splintered frame"; | |
| rtrue;], | |
| description [; | |
| if (self hasnt open) | |
| "This heavy wooden door looks to be newer and of more sturdy | |
| construction than the rest of the church. A large, heavy handle is | |
| set into the door."; | |
| else | |
| "The door has been wrenched from its opening. Only the splintered | |
| remains of the frame remain.";], | |
| when_open [; | |
| print "A gaping splintered opening lies to the "; | |
| if (location == Steeple_Chamber) | |
| "north."; | |
| else | |
| "south.";], | |
| when_closed | |
| "The heavy wooden door to the north is closed.", | |
| door_to [; if (location == Steeple_Chamber) { | |
| Achieved(2); | |
| return Inner_Chamber;} | |
| else | |
| return Steeple_Chamber;], | |
| door_dir [; if (location == Steeple_Chamber) return n_to; | |
| return s_to;], | |
| found_in Steeple_Chamber Inner_Chamber, | |
| has door static openable ~open locked; | |
| Object Curtain "curtain" Inner_Chamber | |
| with name | |
| "curtain" "curtained" "archway" "cloth" "purple", | |
| description [; | |
| if (self hasnt general) | |
| "The curtain is an old and faded purple. It looks as if it may have | |
| been a tablecloth initially."; | |
| else | |
| <<Examine Mirror>>;], | |
| describe | |
| "^A curtain of purple cloth hangs in the archway.", | |
| door_to [; | |
| if (self hasnt general) { | |
| give self general; | |
| move Mirror to location; | |
| Achieved(5); | |
| "You push the curtain aside and pause. On the other side of the | |
| curtain is a room much like the one you are in. A figure stands in | |
| the archway, apparently about to enter your room, and it is the sight | |
| of this figure which has brought you up short. It is, or was, human... once. | |
| Now, it is a withered mass of decaying flesh. It's clothing hangs | |
| in tatters and it is caked in mud and grave mold. Patches of hair | |
| hang from it's scalp and bones are visible in places through it's skin. | |
| The only thing that remains intact are it's eyes; pale blue and now | |
| wide open and staring.^^The creature raises its hand to you, and you | |
| find yourself doing the same. You reach out your arm and touch... | |
| ^^^^...a cold unyielding surface of polished glass.^^^^Suddenly, the | |
| realization of what you are seeing comes home to you, and you step back | |
| from the mirror with a cry.";} | |
| else | |
| "You glance towards the mirror but realize that there is no need to | |
| enter its reality, for the reality in the mirror is your own.";], | |
| door_dir n_to, | |
| has door static open; | |
| Object Mirror "mirror" Limbo | |
| with name | |
| "mirror" "glass" "frame", | |
| description [; | |
| if (self hasnt open) | |
| "A highly polished mirror in a plain wooden frame. The mirror reflects | |
| the contents of the room you are in and you find yourself averting | |
| your gaze from what you see there. You note that the mirror frame | |
| is hinged on one side."; | |
| else | |
| "A highly polished mirror in a plain wooden frame. The mirror has | |
| been swung away from the wall, revealing two holes at about eye | |
| level.";], | |
| before [; | |
| Open, Pull: | |
| if (self has open) | |
| "The mirror doesn't swing any further from the wall."; | |
| move Inner_Holes to location; | |
| give self open; | |
| "You swing the mirror away from the wall, revealing a pair of holes | |
| cut in the wall behind it."; | |
| Close, Push: | |
| if (self hasnt open) | |
| "The mirror is firmly against the wall."; | |
| move Inner_Holes to Limbo; | |
| give self ~open; | |
| "You swing the mirror back against the wall.";], | |
| has static scenery; | |
| Object Inner_Holes "holes in the wall" Limbo | |
| with name | |
| "eye" "hole" "holes", | |
| description | |
| "The holes are small, about the size of your thumb, and are at about eye | |
| level.", | |
| before [; | |
| Search: | |
| if (Sanctuary has visited) | |
| "You look through the holes and find yourself looking down into the | |
| sanctuary of the church with a clear view of the pulpit. From the | |
| angle, you realize that you are looking down through the eyes of the | |
| painting of Christ."; | |
| else | |
| "You find yourself looking down into the sanctuary of a church. | |
| Rows of dust covered benches face a raised pulpit and podium.";], | |
| has pluralname scenery; | |
| Object Table "heavy wooden table" Inner_Chamber | |
| with name | |
| "heavy" "wooden" "table", | |
| description | |
| "A heavy table of rough cut wooden planks. Curious symbols are carved | |
| into the wood and the top is oddly stained.", | |
| before [; | |
| Take, Push, Pull: | |
| "The table is too heavy for you to move."; | |
| Turn: | |
| "A sudden desire to rearrange the furniture?";], | |
| has static supporter; | |
| Object Lamp "oil lantern" Table | |
| with name | |
| "flickering" "oil" "lantern" "lamp", | |
| description | |
| "A old oil-burning lantern. Possibly brass, but very tarnished. The | |
| glass chimney is almost opaque with soot and grime.", | |
| has light; | |
| Fake_Object Bottles "pair of glass bottles" Table | |
| with name | |
| "pair" "of" "bottles", | |
| initial | |
| "A pair of heavy glass bottles sit on the table.", | |
| description | |
| "The bottles are made of a heavy, leaded glass and closed with a cork | |
| stopper sealed with wax. Inside the bottles, an oddly shaped lead weight | |
| hangs like a pendulum from a string. The bottles glow faintly.", | |
| before [; | |
| Take: | |
| <Take Blue_Bottle>; | |
| <Take Green_Bottle>; | |
| Attack: | |
| if (random(2) == 1) | |
| <<Attack Blue_Bottle>>; | |
| else | |
| <<Attack Green_Bottle>>;], | |
| has static; | |
| Bottle Blue_Bottle "blue bottle" Table | |
| with name | |
| "pale" "blue", | |
| color "pale blue", | |
| open_bottle [; | |
| deadflag = 1; | |
| "A cloud of faintly glowing blue mist rises from the bottle and hangs in | |
| the air before you. You feel a brief moment of freedom, of release.^^ | |
| Then, you realize that ", (the) Old_Man, " has started chuckling to | |
| himself. The first jolt of pain hits. The cloud suddenly jerks and | |
| starts moving downward, as if drawn by a strong suction. The pain | |
| intensifies and you drop first to your knees, then flat onto the ground | |
| as if trying to follow the mist, which is now soaking into the earth. | |
| The pain becomes excruciating. The last thing you see, as everything | |
| fades to black, is ", (the) Old_Man, " standing over you, laughing...";], | |
| has concealed; | |
| Bottle Green_Bottle "green bottle" Table | |
| with name | |
| "vivid" "green", | |
| color "vivid green", | |
| open_bottle [; | |
| deadflag = 2; | |
| Achieved(6); | |
| print (The) Old_Man, " suddenly realizes what you are doing. With a | |
| scream of ~Noooo!~, he throws himself towards you"; | |
| if (((location == Inner_Chamber) && (parent(Lamp) == Table)) || | |
| ((location ofclass Inside) && (parent(Lamp) == location))) { | |
| give Lamp general; | |
| print " knocking over the lantern in the process";} | |
| if ((location ofclass Inside) && (parent(Lamp) == Player)) { | |
| give Lamp general; | |
| print " knocking the lantern from your hands in the process";} | |
| print ". As he collapses at your feet, a glowing green mist rises from | |
| the bottle and hangs before him. ~No!~, he whispers.^^Then, the mist | |
| starts moving slowly downward as he doubles over and screams in agony. | |
| As the mist soaks into the ground, he looks up at you and screams, | |
| ~I'll get my revenge~ I'll see you in hell. I'LL SEE YOU IN HELL! | |
| Ia! Ia! Fthagn... Aaaaagh...!~^^His body collapses to the ground. As | |
| you watch the body blackens and decays until, within only a few moments, | |
| what is left appears to be a many-months old corpse.^^"; | |
| if (Lamp has general) | |
| print "You hear a sudden *Whumph!* and look around. The spilled oil | |
| from the broken lantern has ignited. "; | |
| else | |
| print "With a loud *CRAK*, lightning strikes the steeple of the | |
| church. With a roar, the wooden structure catches fire. "; | |
| if ((parent(Blue_Bottle) == player) && (location ofclass Inside)) | |
| print "Clutching the second bottle to you, you race outside. "; | |
| if ((parent(Blue_Bottle) == Table) && (location == Inner_Chamber)) | |
| print "You grab the blue bottle from the table and race outside. "; | |
| if ((parent(Blue_Bottle) == location) && (location ofclass Inside)) | |
| if (parent(Blue_Bottle) ~= player) | |
| print "Responding to an urge you cannot explain, you run to ", | |
| (the) parent(Blue_Bottle), ", grab it, and then run away from the | |
| church. "; | |
| "You watch for a moment as flames consume the church. With a crackling | |
| roar, the steeple collapses inward and a plume of flame shoots skyward.^^ | |
| Clutching the bottle to you, you make your way down the hill.";], | |
| has concealed; | |
| Object Sofa "old sofa" Inner_Chamber | |
| with name | |
| "old" "sofa" "furniture" "lounge" "bed", | |
| description | |
| "An old sofa, so patched, faded and stained that its original color can no | |
| longer be determined. An unidentifiable odor rises from it.", | |
| has static scenery supporter enterable; | |
| Object Old_Man Sofa | |
| with | |
| is_following false, | |
| name | |
| "old" "man" "silas" "wingate", | |
| short_name [; | |
| if (self hasnt general) | |
| print "old man"; | |
| else | |
| print "Silas"; | |
| rtrue;], | |
| description [; | |
| "An old, extremely gaunt man. ", (The) self, " is drawn and pale, his | |
| hair long and wild and his clothing filthy, torn and unkempt. But, an | |
| active intelligence burns behind the vivid green eyes with which he | |
| watches you; eyes which also contain a taint of madness.";], | |
| react_before [; | |
| if ((action == ##Tie) && (second == self)) | |
| print_ret (The) self, " draws back as you approach. ~Don't be | |
| foolish!~ he hisses.";], | |
| life [; | |
| Answer, Tell: | |
| print_ret (The) self, " laughs softly. ~Do you think your opinions | |
| matter to me anymore?~"; | |
| Ask: | |
| switch(second) { | |
| 'church', 'here', 'home': | |
| print_ret (The) self, " looks around. ~Yes.. I knew you would | |
| return here. This is your home... only one you have left. The | |
| villagers would not have welcomed you before; they certainly | |
| will not now. And besides, the bottle will keep you here. *I* | |
| will keep you here.~"; | |
| 'village', 'villagers': | |
| "~Fools! Pathetic weaklings! They cannot understand. *Will* | |
| not understand. They would rather stay with their pathetic, | |
| safe god than open their eyes to the true masters of the | |
| universe. You understood. You saw. Then, they caused you to | |
| doubt yourself. Caused you to doubt your decision.~"; | |
| 'decision', 'happened', 'result': | |
| "~Why, to become immortal, of course! But, you changed your | |
| mind. You freed her; freed her soul. But she had already | |
| absorbed too much of your sin, hadn't she? She went to | |
| eternal punishment, for *your* sins. And so, you tried to | |
| to kill yourself. But, you forgot about this, didn't you? | |
| You forgot where *your* soul was."; | |
| 'she', 'her', 'woman': | |
| "~I still don't know what your fascination with her was. | |
| Certainly the other villagers never approved of your | |
| 'relationship'.~"; | |
| 'me', 'myself', 'i': | |
| print_ret (The) self, " laughs. ~What did you expect? After you | |
| saw what happened to *her* and realized that *you* were the one | |
| responsible you went, shall we say, mad? You always were weak. | |
| There was only one thing to be done, wasn't there?~"; | |
| 'bottle', 'bottles': | |
| "~Beautiful, aren't they? That's what *you* used to say. I | |
| remember how you used to stare at them for hours. How you | |
| used to try to understand them..."; | |
| 'blue': | |
| "~Yes. That is you. Or, should I say, *was* you. It's *mine* | |
| now. The receptacle for *my* sin."; | |
| 'green': | |
| "~You see, I am safe now... I have transferred my sin to your | |
| soul. *If* I ever decide to release it, I will go to *your* | |
| reward, while you will go to *my* punishment.~"; | |
| 'soul': | |
| "Safe, I promise you. They are safe."; | |
| 'book': "You never had the stomach to read it before. Why the | |
| interest now?"; | |
| 'dog': | |
| "A useful creature. Quite intelligent, you know."; | |
| 'man', 'him', 'himself': | |
| give self general; | |
| give self proper; | |
| "What? You've forgotten me? How could you forget Silas? | |
| Your servant... your colleague... your... teacher...?";} | |
| print_ret (The) self, " giggles uncontrollably."; | |
| Attack: | |
| print_ret (The) self, " easily avoids your blows. He stares at you | |
| with his vivid green eyes. ~You were no match for me before... You | |
| are certainly no match for me now!~"; | |
| ThrownAt: | |
| move noun to location; | |
| print_ret (The) self, " easily avoids ", (the) noun, ". ~Pathetic!~ | |
| he says."; | |
| Show, Give: | |
| print_ret (The) self, " isn't interested.";], | |
| daemon [d p; | |
| d = parent(self); | |
| p = location; | |
| if ((location == Inner_Chamber) || (p == d)) { | |
| self.is_following = true;} | |
| else { | |
| if (self.is_following) { | |
| move self to p; | |
| "^Babbling to himself, ", (the) self, " wanders after you.";}} | |
| rtrue;], | |
| has male animate; | |
| Inside Belfry "Belfry" | |
| with description | |
| "The belfry of the church, high up inside the steeple. You are hanging | |
| from a maze of support beams and trusses with the nearest solid floor | |
| far below you. Large open frames give a view of the surrounding forest | |
| and of the town at the base of the hill. They also allow the fury of the | |
| storm to pass in unimpeded. You can see the branch of an oak tree just | |
| outside the southern frame.", | |
| before [; | |
| Jump: | |
| deadflag = 1; | |
| "You leap off of the support and plummet to the floor below. The last | |
| thing you hear is the peal of thunder outside."; | |
| Climb: | |
| if (noun ~= Rope) | |
| "You climb around on the supports a bit, but are unable to move much | |
| further up or down the steeple."; | |
| Drop: | |
| if (noun ~= Rope) { | |
| move noun to Steeple_Chamber; | |
| print_ret (The) noun, " tumbles through the beams to the floor | |
| below.";} | |
| else { | |
| move Rope to location; | |
| "The rope swings freely from the bell again.";}], | |
| s_to Top_Of_Tree, | |
| u_to "There doesn't seem to be any way to climb higher into the steeple.", | |
| d_to [; if (Rope in location) | |
| return Rope; | |
| else | |
| "The drop to the floor below is too far for you to climb | |
| safely.";], | |
| cant_go "You climb around on the supports a bit, but are unable to make much | |
| progress in that direction."; | |
| Object Bell "bell" Belfry | |
| with name | |
| "bell", | |
| description [; | |
| if (self hasnt general) | |
| "This massive bell once summoned worshippers to the church. Now, it | |
| only serves as the home for birds and rodents. The mount for the bell | |
| has broken on one side, and the other is barely holding on. You are | |
| surprised that it has not broken free and plummeted from the steeple | |
| before this."; | |
| else | |
| "The bell lies half buried in the mud. The fall has cracked and dented | |
| it to the point where it will obviously never ring again.";], | |
| describe [; | |
| if (self hasnt general) { | |
| print "^A massive bell hangs here, from a damaged mount."; | |
| print "^A heavy rope is attached to the bell and "; | |
| if ((Rope.is_tied_to ~= 0) && (Rope.is_tied_to in location)) | |
| print "tied to ", (the) Rope.is_tied_to, "."; | |
| else | |
| print "hangs through the beams to the room below."; | |
| new_line; rtrue;} | |
| else | |
| "^A broken bell lies half-buried in the mud.";], | |
| before [; | |
| Take: | |
| "The bell is far too heavy to move."; | |
| Push, Pull: | |
| if (Rope.is_tied_to == Steeple_Door) { | |
| Achieved(4); | |
| give self general; | |
| give Steeple_Door open ~openable; | |
| move Bell to Front_Church; | |
| move Rope to Limbo; | |
| Rope.is_tied_to = 0; | |
| give Rope absent; | |
| "You shove against the bell. For a few seconds, the support takes | |
| the strain. Then, with a loud cracking noise, the bell tears loose | |
| from the beam and falls from the steeple. You hear the sound of | |
| splintering wood from below and then duck aside as the splintered | |
| remains of the door are pulled past you and out the open window. A | |
| metallic crash is heard from the ground outside."; } | |
| else { | |
| if (self hasnt general) | |
| "A good shove would probably cause the bell to plummet from the | |
| steeple. Of course, if it did, you would never be able to get it | |
| back up here again so you decide against it for now."; | |
| else | |
| "The bell has buried itself too far in the mud to move.";} | |
| Ring: | |
| if (self hasnt general) | |
| "The bell makes a muted ~CLANK~."; | |
| else | |
| "This bell will never ring again.";], | |
| has static; | |
| Object Rope "heavy rope" | |
| with | |
| is_tied_to 0, | |
| name | |
| "heavy" "worn" "frayed" "hanging" "sturdy" "rope", | |
| describe [; | |
| if (location == Steeple_Chamber) { | |
| print "^A frayed but heavy rope hangs from somewhere overhead."; | |
| if (self.is_tied_to ~= 0) { | |
| if (self.is_tied_to ~= Steeple_Door) | |
| print " There is ", (a) self.is_tied_to, " hanging from the end | |
| of the rope."; | |
| else | |
| print " The rope is tied to the handle of the door.";} | |
| new_line;} | |
| rtrue;], | |
| description [; | |
| print "A frayed but heavy section of rope."; | |
| if (self.is_tied_to ~= 0) | |
| print " ", (The) self.is_tied_to, " is tied to the rope."; | |
| new_line; rtrue;], | |
| before [; | |
| Tie: | |
| if (second == player) | |
| "Trust me, suicide is *not* the answer here..."; | |
| if (second == self) | |
| "Practicing your knot tying?"; | |
| if (second == Bell) | |
| "The rope is already securely attached to the bell."; | |
| self.is_tied_to = second; | |
| if (parent(second) ~= player) move Rope to parent(second); | |
| "You tie the rope securely to ", (the) second, "."; | |
| UnTie: | |
| if (self.is_tied_to == 0) | |
| "But, the rope isn't tied to anything!"; | |
| if (second ~= 0) { | |
| if (second == Bell) | |
| "You are unable to loosen the rope from where it is attached to | |
| the bell."; | |
| if (second ~= self.is_tied_to) | |
| "But, the rope isn't tied to ", (the) second, ".";} | |
| print "You untie the rope from ", (the) self.is_tied_to, "."; | |
| self.is_tied_to = 0; | |
| new_line; rtrue; | |
| Drop: | |
| if (parent(self.is_tied_to) == player) | |
| "You release the rope, but it remains attached to ", | |
| (the) self.is_tied_to, " which you are holding and doesn't fall | |
| very far."; | |
| Climb: | |
| <<Go self>>; | |
| Pull: | |
| if (location == Steeple_Chamber) | |
| "You hear a metallic <CLANK> from somewhere overhead."; | |
| else | |
| "The bell moves slightly in its mount and emits a metallic | |
| <CLANK>.";], | |
| react_before [; | |
| if (action == ##Go) { | |
| if (self in player) { | |
| "The rope is securely attached and you can't go very far while | |
| holding it.";} | |
| if (self.is_tied_to in player) { | |
| print_ret (The) self.is_tied_to, ", which you are holding, is tied | |
| to the rope which prevents you from moving very far.";}}], | |
| react_after [; | |
| if (noun == self.is_tied_to) { | |
| if ((action == ##Drop) || (action == ##Insert) || | |
| (action == ##ThrowAt) || (action == ##PutOn) || | |
| (action == ##PutUnder)) { | |
| move self to parent(self.is_tied_to); | |
| if (location == Belfry) move self to Belfry;} | |
| if ((action == ##Take) || (action == ##Remove)) { | |
| move self to player;}}], | |
| door_to [; if (location == Steeple_Chamber) return Belfry; | |
| return Steeple_Chamber;], | |
| door_dir [; if (location == Steeple_Chamber) return u_to; | |
| return d_to;], | |
| found_in Steeple_Chamber Belfry, | |
| has door ~openable open; | |
| Object Beams "beams" Belfry | |
| with name | |
| "support" "supports" "beam" "beams" "truss" "trusses", | |
| description | |
| "Rough hewn from wood, the beams and trusses are dirty and covered with | |
| bird and animal droppings which make footing treacherous.", | |
| has pluralname static scenery; | |
| Object Town "town" | |
| with name | |
| "town" "village" "city" "base" "hill" "lights", | |
| description | |
| "The small town huddles at the base of the hill. A few lights shine | |
| defiantly against the storm but for the most part it seems quiet, as if | |
| its inhabitants are waiting inside their homes for the fury to pass them | |
| by.", | |
| found_in Top_Of_Tree Belfry, | |
| has scenery; | |
| Object Debris "debris" | |
| with name | |
| "trash" "debris" "junk" "stuff" "litter" "dirt", | |
| description | |
| "Sticks, leaves, unidentifiable trash and scraps of paper litter the | |
| floor. Some of it looks as if it has been here for years and none of | |
| it appears useful.", | |
| before [; | |
| Take: | |
| "You have no use for any of the trash.";], | |
| found_in [; if (location ofclass Inside) rtrue;], | |
| has scenery; | |
| Object Inside_Windows "broken windows" | |
| with name | |
| "stained" "glass" "broken" "window" "windows" "board" "boards" "frame", | |
| description | |
| "Once these frames may have contained magnificent stained glass windows, | |
| each showing in imagery some tale of religious significance. Now, only | |
| fragments of colored glass remain. The frames are boarded up and the | |
| wind whistles mournfully through the cracks.", | |
| before [; | |
| Take, Push, Pull, Open, Close: | |
| "The boards are nailed firmly in place.";], | |
| found_in Vestibule Sanctuary Pulpit, | |
| has scenery pluralname; | |
| !******************************************************************************* | |
| !*** Menus | |
| !******************************************************************************* | |
| Menu Help_Top "The Awakening"; | |
| !** with description | |
| !** "Make a selection..."; | |
| Option -> "For new players" | |
| with description [; | |
| print "~The Awakening~ is a text adventure game. You interact with the game by | |
| typing phrases like EXAMINE CHAIR or OPEN DOOR and the game responds by | |
| describing the world around you and the results of your actions.^^"; | |
| print "There are certain commands which are common to all adventure games. You | |
| move around by giving the compass direction in which you want to go; for example | |
| NORTH or SOUTHEAST. All directions can be shortened to one or two letters; in | |
| this case N or SE. You can also go UP or DOWN (U or D). In some locations IN or | |
| OUT work. You can also ENTER or CLIMB things.^^"; | |
| print "When you first enter a location, the game will describe the location to | |
| you. After that, it will only tell you the name of the location. You can see the | |
| full description at any time by typing LOOK (or L). You can tell the game to | |
| always give the full description by entering VERBOSE.^^"; | |
| print "You interact with the environment in many ways. You GET items to pick them | |
| up and DROP items to put them down. You can also PUT items IN things or GET items | |
| FROM others. Fairly complex sentences are possible, for example GET THE RED BRICK | |
| AND THE BLUE BALL FROM THE METAL BOX THEN THROW THE BRICK AT THE WINDOW is a valid | |
| input.^^"; | |
| print "You may encounter people or other creatures while exploring the world of | |
| the game. You can ask these people questions by typing ASK person ABOUT topic and | |
| tell them things by saying TELL person ABOUT topic. You can also SHOW them things. | |
| You can ask them to do things with PERSON, COMMAND. For example, to ask Bob to pick | |
| up the book, type BOB, GET THE BOOK.^^"; | |
| print "To look at an item more closely, EXAMINE it. (EXAMINE can be abbreviated | |
| as X) To get a list of everything you are carrying type INVENTORY (or I). Some | |
| other useful commands you can try are PUSH, SEARCH, SHAKE, THROW, RUB, KICK, CLIMB | |
| or READ. A part of any text adventure is learning what words the game knows. ~The | |
| Awakening~ knows hundreds of words, so feel free to try anything.^^"; | |
| "If you get really stuck, you can access a hint menu at any time by typing HINTS. | |
| If you would rather not be tempted, you can turn the hint feature off by entering | |
| HINTS OFF.";]; | |
| Option -> "About this game" | |
| with description [; | |
| print "~The Awakening~ is my first piece of interactive fiction. It is based | |
| (very) loosely on several stories by H.P. Lovecraft, most notably ~The Outsider~, | |
| ~The Terrible Old Man~ and ~The Two Black Bottles~.^^"; | |
| print "I mainly wrote ~The Awakening~ as a learning exercise. I had started several | |
| other games, but they were all too big and I found myself becoming overwhelmed by | |
| the scope of the game along with learning the language. I was inspired to try a | |
| smaller game by the Textfire games which came out in April of 1998. ~The Awakening~ | |
| became much larger than any Textfire, but the inspiration was there.^^"; | |
| print "It took longer to finish the game than I expected. My main problem involved | |
| the rope that is encountered in the game. Originally, it was far more complex than | |
| what is now implemented. Even what is there now doesn't work quite as well as I | |
| would have liked.^^"; | |
| "I hope you enjoy the game. Since it is my first game, feedback is especially | |
| welcome. At this time (July 1998) my most stable e-mail address is:^^ | |
| Dennis_Matheson@@64compuserve.com^^ | |
| or, you can reach me by snail mail at:^^ | |
| Dennis Matheson^ | |
| 4068 Maxanne Dr.^ | |
| Kennesaw, GA 30144^^ | |
| Enjoy!";]; | |
| Option -> "Credits and Acknowledgments" | |
| with description [; | |
| print "This game would not exist without the help and efforts of several people^^"; | |
| print "First, credit must be given to Graham Nelson for developing the Inform | |
| compiler without which this game would not have been possible. Inform, a language | |
| for developing interactive fiction games, is available via ftp from:^^ | |
| ftp.gmd.de/if-archive/inform^^"; | |
| print "Second, the menus used in this game (including this one) are developed | |
| using L. Ross Raszewski's menu libraries. These libraries (AltMenu.h, DoMenu.h and | |
| Hints.h) are also available from ftp.gmd.de.^^"; | |
| "And finally, thanks must be given to the many fine people on | |
| rec.arts.int-fiction who have answered so many of my questions. Thanks go to | |
| Andrew Plotkin, L. Ross Raszewski, Joe Mason, Joyce Haslam, Mary Kuhner, | |
| Michael Gentry, ~FemaleDeer/Doeadeer3~ and all the others whose names I have | |
| misplaced. Thanks, all of you.";]; | |
| Option -> "License and Copyright info" | |
| with description [; | |
| print "1) Copyright: ~The Awakening~ is copyright 1998 by Dennis Matheson.^^"; | |
| print "2) Distribution: ~The Awakening~ may be distributed freely by any means | |
| so long as a) This notice remains intact and b) no charge other than a nominal | |
| fee to cover the cost of distribution is made. It may be included as part of | |
| a commercial distribution provided that my permission is given first.^^"; | |
| print "3) Derivative Works: ~The Awakening~ is distributed with its source code. | |
| Derivative works are permitted of ~The Awakening~ so long as a) They are clearly | |
| identified as such and reference is made back to this original version and b) | |
| such works must freely redistributable under the same terms as stated above.^^"; | |
| print "4) Support: ~The Awakening~ is distributed without any support of any | |
| kind. Feel free to contact me at the address given, but I make no guarantee that | |
| I will respond.^^"; | |
| "5) Warranty: ~The Awakening~ is distributed totally without any warranty of any | |
| kind. The entire risk of using this program is totally assumed by the user.";]; | |
| Option -> "Hints..." | |
| with description [;hint_menu.select();return 2;]; | |
| Option -> "Walkthru" | |
| with description [; | |
| print "Well, things could be starting off better here. Let's start by | |
| going UP to get out of this hole. Now, let's take a look around. Hmmm... | |
| Not much here. Maybe the church to the east has something. So, let's go | |
| EAST.^^"; | |
| print "Not much here either. The main path seems to go to the southeast | |
| so let's follow it to the SOUTHEAST.^^"; | |
| print "Nice doggie! Head NORTH to the front door. Oops! Guess that won't | |
| work. How can we get past this dog? Maybe if we ATTACK THE DOG it will | |
| leave.^^"; | |
| print "That wasn't our best idea, was it? Better get out of here! Head off | |
| to the NORTHEAST. The dog is still following us so let's go on around the | |
| church to the NORTHWEST, SOUTHWEST and SOUTHEAST.^^"; | |
| print "Hey, that worked pretty well! While the dog is tangled up let's | |
| take the opportunity and go NORTH.^^"; | |
| print "All right! Our first points! Let's look around here a bit then | |
| go NORTH again. Not much better inside than out, is it? What's that trap | |
| door in the ceiling for? Doesn't seem to be any way to get up there so | |
| let's explore down here some more. Go on NORTH into the sanctuary.^^"; | |
| print "What a dump. Not much left except a painting so let's EXAMINE THE | |
| PAINTING. That's interesting; apparently we've been here before. Head on | |
| to the NORTH some more and let's see what else we can remember.^^"; | |
| print "EXAMINE THE PODIUM. Ah, a book. READ THE BOOK and see what else we | |
| can discover. I don't know about you, but I'm getting the impression that | |
| this is an unusual church. Let's head NORTH and check out the rest of the | |
| ground floor.^^"; | |
| print "This room looks interesting. EXAMINE THE JOURNAL on the desk then try | |
| to READ THE JOURNAL. Well, somebody didn't like something they had written. | |
| SEARCH THE JOURNAL and see if we can find out anything. Indentations... Well, | |
| I've seen enough detective movies to know what to do next. EXAMINE THE ASHES | |
| then GET THE ASHES. OK, now RUB THE ASHES ON THE JOURNAL. Now we're getting | |
| somewhere! READ THE JOURNAL again.^^"; | |
| print "Starting to get a bad feeling about this? Too bad those books were | |
| burned, they might have told us something. Think they (whoever ~they~ were) | |
| missed anything? SEARCH THE BOOKCASE. Ah ha! PUSH THE BOOKCASE then READ | |
| THE BOOK we have found.^^"; | |
| print "I'm starting to get a feel for what is happening here. EXAMINE THE | |
| GLASS on the floor. Wonder what that was for? Well, there doesn't seem to | |
| be much more to do here so let's go back SOUTH a few times until we reach | |
| the Vestibule again. That trap door still looks inviting but we haven't | |
| found a ladder. Or have we?^^"; | |
| print "Go SOUTH again to the Porch. EXAMINE THE RAILING. Well, it looks kind | |
| of ladder-like, doesn't it? GET THE RAILING. Good thing this church is in | |
| such bad shape. Now, go back NORTH and PUT THE RAILING UNDER THE TRAP | |
| DOOR. Now, CLIMB THE RAILING.^^"; | |
| print "Hey, that worked! Let's see what we have here. Another door, let's | |
| try and OPEN THE DOOR. Locked? Now what? Not much here except for this rope. | |
| I guess it's a bell rope. PULL THE ROPE. Yep, a bell. I wonder if there's | |
| anything else up there? CLIMB THE ROPE and find out.^^"; | |
| print "EXAMINE THE BELL. Well, maybe climbing that rope wasn't the best | |
| idea. I mean, the rope seem sturdy enough but this bell seems ready to fall | |
| at any point. PUSH THE BELL. Yes, fairly unstable. And that gives me an | |
| idea.^^"; | |
| print "First we need another way out of here. Let's check to the SOUTH. OK, | |
| we're out on a limb. We can't get down from here without a ladder but we | |
| know where one of those is, don't we?^^"; | |
| print "Let's go back NORTH then CLIMB THE ROPE again. Now, TIE THE ROPE | |
| TO THE DOOR. Good idea, huh? Go DOWN then GET THE RAILING. Now, go SOUTH | |
| twice and PUT THE LADDER AGAINST THE TREE. CLIMB THE LADDER and go NORTH.^^"; | |
| print "Now, PUSH THE BELL and duck. That worked better than I had hoped! Go | |
| back SOUTH then DOWN. GET THE LADDER, go NORTH twice and PUT THE LADDER UNDER | |
| THE TRAP DOOR again. Now go back UP. Looks like we can go NORTH now.^^"; | |
| print "Well, *this* is an interesting room, isn't it? Let's talk to the man in | |
| here for a while. ASK THE MAN ABOUT... a few things. Doesn't seem too helpful, | |
| does he? Well, let's do some more exploring on our own. Let's start by going | |
| NORTH.^^^^"; | |
| print "Let's stop and reflect on this latest discovery a bit. Things are | |
| apparently a little worse than we thought. Let's EXAMINE THE MIRROR again then | |
| OPEN THE MIRROR. Now, LOOK THROUGH THE HOLES. Well, we know what was going on | |
| with that painting now.^^"; | |
| print "OK, now let's EXAMINE THE BOTTLES on the table. EXAMINE THE BLUE BOTTLE | |
| and EXAMINE THE GREEN BOTTLE. Now, think about what we've read, the broken | |
| bottle we found, our ~condition~ and the distinctive feature of our ~friend~ | |
| on the sofa. Well, there seems to be only one thing to do; OPEN THE GREEN | |
| BOTTLE or BREAK THE GREEN BOTTLE.^^"; | |
| "Guess he wasn't expecting *that*! Now, what do we do about *our* situation? | |
| Looks like that will have to wait for the next game for that...^^";]; | |
| Menu Hint_Top "Hints" | |
| with description | |
| "Select a hint...", | |
| title_bar | |
| "The Awakening"; | |
| Menu -> "In the Mud"; | |
| HintTopic -> -> "How do I get out of here?"; | |
| Hint -> -> -> "Try going up."; | |
| Menu -> "Outside the Church"; | |
| HintTopic -> -> "What can I do in the graveyard?"; | |
| Hint -> -> -> "Not much..."; | |
| Hint -> -> -> "Look around some."; | |
| Hint -> -> -> "You could pick up the broken limb."; | |
| Hint -> -> -> "But there really isn't anything to do here."; | |
| HintTopic -> -> "How do I get past the dog?"; | |
| Hint -> -> -> "You could try leading it away."; | |
| Hint -> -> -> "But it doesn't seem to want to follow you very far."; | |
| Hint -> -> -> "Maybe if you gave it a reason to follow you?"; | |
| Hint -> -> -> "You could feed it something."; | |
| Hint -> -> -> "If you had any food, that is."; | |
| Hint -> -> -> "Maybe if you did something to make it mad?"; | |
| Hint -> -> -> "Try attacking the dog."; | |
| Hint -> -> -> "OK, it's following you. Now what?"; | |
| Hint -> -> -> "It's dragging that chain. Maybe you can tangle it up somewhere."; | |
| Hint -> -> -> "With the dog following you, walk completely around the church."; | |
| HintTopic -> -> "How do I get into the hearse?"; | |
| Hint -> -> -> "You'll need the keys."; | |
| Hint -> -> -> "And a ward to get past the spirit."; | |
| Hint -> -> -> "Can't find a ward? Some garlic might work."; | |
| Hint -> -> -> "Oh yes, you will need a game that actually has a hearse in it!"; | |
| HintTopic -> -> "Is there anything special about the oak trees?"; | |
| Hint -> -> -> "Yes."; | |
| Hint -> -> -> "Try climbing them."; | |
| Hint -> -> -> "Too slippery? Maybe you need something like a ladder."; | |
| Hint -> -> -> "Can't find a ladder? Is there something that looks like | |
| a ladder that might work instead?"; | |
| Hint -> -> -> "Look around on the Porch."; | |
| Hint -> -> -> "Examine the porch railing."; | |
| Hint -> -> -> "GET THE RAILING then PUT RAILING AGAINST TREE then CLIMB | |
| RAILING."; | |
| Menu -> "Inside the Church"; | |
| HintTopic -> -> "How do I get into the trap door?"; | |
| Hint -> -> -> "Well, you can't fly up there."; | |
| Hint -> -> -> "So you will have to climb."; | |
| Hint -> -> -> "There is nothing here to climb, so you need to find a ladder."; | |
| Hint -> -> -> "No ladder? Is there something that looks like a ladder that | |
| might work instead?"; | |
| Hint -> -> -> "Look around on the Porch."; | |
| Hint -> -> -> "Examine the porch railing."; | |
| Hint -> -> -> "GET THE RAILING then PUT RAILING UNDER TRAP DOOR then CLIMB | |
| RAILING."; | |
| HintTopic -> -> "How do I get past the locked door?"; | |
| Hint -> -> -> "Well, it would be polite to knock first."; | |
| Hint -> -> -> "Well, that doesn't help. Look for a key maybe?."; | |
| Hint -> -> -> "OK, so no key. How about breaking it down."; | |
| Hint -> -> -> "Tough door! I guess we need something heavy."; | |
| Hint -> -> -> "Have you been to the belfry yet?"; | |
| Hint -> -> -> "That bell sure looks heavy. I bet it could damage the door."; | |
| Hint -> -> -> "Or, better yet, it could be used to pull the door from it's | |
| frame."; | |
| Hint -> -> -> "Go to the Steeple Chamber and TIE THE ROPE TO THE DOOR. Then, | |
| go to the Belfry and PUSH BELL."; | |
| Hint -> -> -> "Oh yeah, make sure you have another way to climb down from the | |
| Belfry before you do..."; | |
| HintTopic -> -> "What's with the eyes of this painting?"; | |
| Hint -> -> -> "The painting is too far away to get a good look at."; | |
| Hint -> -> -> "So you need to get closer."; | |
| Hint -> -> -> "Have you found your ~ladder~ yet?"; | |
| Hint -> -> -> "PUT RAILING UNDER PAINTING then CLIMB RAILING. Now, take a | |
| better look at the painting."; | |
| HintTopic -> -> "What's that thing in the belfry."; | |
| Hint -> -> -> "Uhh.. A bell?"; | |
| !******************************************************************************* | |
| !*** And awaaay we go! | |
| !******************************************************************************* | |
| [Initialise; | |
| location = Grave; | |
| StartDaemon(Dog); | |
| StartDaemon(Old_Man); | |
| "^^You remember darkness. And the cold. Cold and darkness. And silence. | |
| Those memories are all that you have. That, and a feeling that something | |
| you never knew you possessed has been lost.^^Suddenly, oblivion is split | |
| by a blinding light and a crash of sound. You awaken to the roar of a | |
| storm and a deluge of rain and mud.^";]; | |
| [ChooseObjects obj code prty; | |
| if (code < 2) | |
| {if ((obj ofclass Fake_Object) || (obj has scenery)) | |
| return 2; | |
| else | |
| rfalse;} | |
| else | |
| {prty = 2; | |
| if (obj has scenery) prty = prty - 1; | |
| if (parent(player) == parent(obj)) prty = prty + 1; | |
| if (parent(obj) == player) prty = prty + 2; | |
| if ((action_to_be == ##SwitchOn) && (parent(player) == obj)) | |
| prty = prty + 1; | |
| return prty;}]; | |
| [PrintTaskName achievement; | |
| switch(achievement) | |
| {0: "for getting past the guard dog"; | |
| 1: "for entering the steeple"; | |
| 2: "for entering the sealed room"; | |
| 3: "for reading the journal"; | |
| 4: "for opening the door"; | |
| 5: "for discovering the truth"; | |
| 6: "for extracting your revenge";}]; | |
| Include "Grammar"; | |
| [ReadSub; | |
| <<Examine noun>>;]; | |
| [PutUnderSub; | |
| move noun to location; | |
| "You put ", (the) noun, " under ", (the) second, ".";]; | |
| [UnTieSub; | |
| print_ret (The) noun, " isn't attached to anything.";]; | |
| [RingSub; | |
| "You don't know how to ring ", (a) noun, ".";]; | |
| [XyzzySub; | |
| "A word comes to you, and you shout it out... ~XYXXY!~. The storm responds | |
| with a roar and a crash of thunder. It is a word of power. Once, you | |
| feel, you knew many such words. Now, only this one remains.";]; | |
| [HelpSub; | |
| help_menu.select();]; | |
| Verb "pet" = "touch"; | |
| Verb "kick" = "attack"; | |
| Extend "read" first | |
| * noun -> Read; | |
| Extend "put" first | |
| * noun "under"/"below"/"beneath"/"against" noun | |
| -> PutUnder; | |
| Extend "rub" | |
| * noun "with" noun -> Rub reverse | |
| * noun "on" noun -> Rub; | |
| Verb "untie" "detach" | |
| * noun -> UnTie | |
| * noun "from" noun -> UnTie; | |
| Verb "ring" | |
| * noun -> Ring; | |
| Verb "xyzzy" | |
| * -> Xyzzy; | |
| Verb meta "help" "about" | |
| * -> Help; | |
Xet Storage Details
- Size:
- 93.2 kB
- Xet hash:
- 96fd0c282b19e2bf4dd2b99bdde6b7af26fd532e10a12a60b93008d0c1533e28
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.