Constant Story "Happy Ever After^"; Constant Headline "^An Interactive (Modern) Fairy Tale^ Copyright (c) 2000 by Robert M. Camisa.^ Permisson granted to If-Comp for one CD archive.^"; Constant SACK_OBJECT backpack; Include "Parser"; Include "VerbLib"; Include "Grammar"; Attribute legible; !Can you read it? Attribute melted; !Have you melted the disc? Attribute delivered; !Have you delivered the note? Attribute read; !Have you read the note? Attribute bat; !Drank the bat potion? !---------------------------------------------------------------------------- ! In front of the Museum !---------------------------------------------------------------------------- Object Before_Gates "Before the front gate" with description "Well, you can understand why Uncle Steve certainly doesn't get a lot of visitors. The path here is little more than a dirt track, with weeds and overgrown bushes crowding it from both sides. And the view is less than stellar, the museum looming over you keeps bringing to mind words like ~gloom~ and ~doom~ and other words ending in ~oom~.", n_to Front_Gates, cant_go "You took a cab up here, and don't feel like walking the four miles back to town. Besides, all that's back there is memories of Gwyneth.", has light; Object -> bushes "bushes" with name "bushes" "shrubs" "trees" "weeds", description "A thick mass of vegetation nearly obliterates the path here. If Uncle Steve expects folks to come see his museum, he should really trim this mess.", before[; Examine, Search : "You beat around the bushes for a while. As usual, nothing happens."; ], has scenery; Object -> Front_Gates "front gate" with name "gate" "front" "gates" "iron" "black" "spikes", when_closed "An ominious looking black iron gate bars the way north.", when_open "The gate is open, though you get the disturbing feeling it could snap shut at any moment of its own volition.", description "A large gate, composed of black wrought iron bars. Its well over twelve feet high, and culimates in several extremely sharp looking spikes. A large dial seems to be set directly in the center of the gate.", door_to [; if (location==Before_Gates) return Path_One; return Before_Gates;], door_dir [; if (location==Before_Gates) return n_to; return s_to;], found_in Before_Gates Path_One, has static door openable ~open locked supporter transparent; Object -> dial_lock "combination lock" with name "lock" "combination" "dial", description "A combination lock, with fancy numbers in gothic type appears to be built into the center of the gate.", state 0, before[; Turn: if ((second==0) && (self.state>0)) { self.state=0; "You spin the dial randomly, resetting the combination."; } if (second==0) "You spin the dial randomly. It doesn't seem to help."; switch (self.state) { 0: print "You turn the dial right to ", second,". "; if (second==5) {self.state=self.state+1; "You are rewarded with a loud ~CLICK~."; } "Nothing seems to happen. Guess that's not the right number."; 1: print "You turn the dial left to ",second,". "; if (second==10) {self.state=self.state+1; "You are rewarded with a loud ~CLICK~."; } self.state=0; "Nothing happens. Better start over from the beginning."; 2: print "You turn the dial right to ",second,". "; if (second==1) {give Front_Gates ~locked; "You are rewarded with a loud ~CLICK~, and the gate halves part slightly. You can probably open it now."; }; self.state=0; "Nothing seems to happen. Better start over from the beginning."; }], has scenery; Object Path_One "Before the Museum" with description "Well, that's better. The weeds and bushes give way to a nicely manicured lawn, and soft spotlights highlight the choices you have. Your choices are north to the hotel proper, east to the cemetery, or west to the topiary, or south back the way you came.", n_to Path_Two, s_to Front_Gates, e_to Cemetary, w_to Topiary, has light; Object "spotlights" Path_One with name "spotlight" "spotlights" "light", description "Ow! That is very painful! Dont you know better than to stare at bright lights?", before[; Take: "They're fixed in place."; Attack: "Vandalism accomplishes nothing."; ], has scenery; Object Path_Two "Museum Veranda" with description "The grass and dirt path give way here to a concrete patio with several comfortable chairs and a barbecue. From here, you can look over the front lawn of the hotel, glance at the topiary and the cemetary, and if you squint, even make out the front gate. The veranda continues to the west, or you could simply push through the grand glass doors and enter the hotel to the north.", s_to Path_One, n_to[; print "You push through the grand glass doors and go in."; return Main_Hall;], w_to Rubbish_Tip, has light; Object patio "patio" Path_Two with name "patio" "concrete", description "A giant square of concrete. Rather pedestrain, actually.", before[; Search: "A detailed search turns up a heart carved in one corner of the patio with the cryptic phrase ~R.C. loves J.V.~ inside."; ], has scenery; Object chairs "chairs" Path_Two with name "chair" "chairs", description "Several wicker lounge chairs are scattered about the patio.", before[; PutOn: "Nah. Wicker gives you splinters."; Take: "Why on earth would you want to lug one around?"; ], has scenery supporter; Object barbecue "barbecue" Path_Two with name "barbecue", adjective "rusty", description "You hope to heck Uncle Steve isn't gonna try to cook anything on this barbecue shaped mass of rust. You're afraid to touch it in case the whole thing crumbles.", before[; Touch, Take : "You can't bring yourself to do it. You're too scared it'll fall apart."; ], has scenery; Object "grass" Path_Two with name "grass" "dirt" "path", description "Its a dirt path through some grass.", has scenery; !---------------------------------------------------------------------------- ! Dumpster !-------------------------------------------------------------------------- Object Rubbish_Tip "By the Museum Dumpster" with description "A dank and smelly alley. What little light there is comes from the exit sign over the door to the north, and it casts gloomy shadows over this tiny, cramped, garbage filled alley. All in all, not a pleasant place. You'd be much better off going east to the patio, or heading through the door to the north.", before[; Smell: "You'd really rather not."; Listen: "You hear a faint squeaking. Hopefully that's not rats."; ], e_to Path_Two, n_to[; print "You push through the door and enter the hotel."; return Kitchen;], has light; Object sign "sign" Rubbish_Tip with name "sign" "exit", adjective "glowing" "red", description "A sign hanging over the north doorway says ~EXIT~ in glowing red letters. Which is actually fairly odd, because at least from this side, that's an entrance.", has scenery; Object garbage "garbage" Rubbish_Tip with name "garbage" "trash" "rubbish" "mounds", description "Various mounds of trash lie scattered on the ground here.", before[; Touch, Take, Search: "You want as little contact with that stuff as possible."; ], has scenery; Object dumpster "dumpster" Rubbish_Tip with name "dumpster", initial "A dumpster squats silently in a dark corner.", description "Made from cheerless gray-green steel, this is pretty much where evrything un-needed and unwanted(like your heart, apparently) ends up.", has container openable; Object leather_couch "leather couch" dumpster with name "leather" "couch" "remains", adjective "moldy" "cracked" "peeling", initial "The remains of a leather couch fill the dumpster.", description "Well, this is pretty gross. Patches of mold cover what once must have been a nice couch, and the leather is cracking and peeling.", before[; Take: if (leather_piece notin nothing) "You've already got a piece of leather, and you wouldn't be able to shift the couch anyway, so leave it be."; move leather_piece to player; "As you attempt to get a grip on the couch to move it, a piece of the leather comes off in your hand. Just as well, you probably would have strained your back trying to move it anyway."; ], has static; Object leather_piece "piece of leather", with name "piece" "leather", article "a", description "A cracked piece of leather roughly five inches by five inches."; !-------------------------------------------------------------------------- ! Cemetary !--------------------------------------------------------------------- Object Cemetary "An overgrown Cemetery" with description "Weeds and grass choke this small burial plot although here, at least the effect is quaint. Some tombstones are scattered about, but they are too heavily moss covered to read. Most of the space seems to be taken up by an elaborate marble crypt.", w_to Path_One, n_to Crypt_Door, has light; Object weeds "weeds" Cemetary with name "grass" "weeds", description "It's really a shame. Someone should pull all this stuff out and clean up this cemetary.", before[; Take, Pull : "Of course, when you thought that, you meant someone other than yourself.";], has scenery; Object tomstones "tomstones" Cemetary with name "tombstone" "tombstones" "moss", adjective "mossy", description "You bow your head as a gesture of respect when you look at the tombostones, altough they are too moss covered to read.", before[; Read: "I said they were too moss covered to read.";], has scenery; Object Crypt_Door "door" Cemetary with name "door" "marble" "crypt", when_closed "A marble crypt stands in the corner of the graveyard.", when_open [; if (parent(player)==In_Crypt) return "The doors to the cemetary are open."; return "The crypt in the corner of the yard stands open.";], description " A beautiful marble crypt covered in elaborate design. Some sort of poem seems to be carved in the marble of the front doors.", door_to [; if (location==Cemetary) return In_Crypt; return Cemetary;], door_dir [; if (location==Cemetary) return n_to; return s_to;], found_in Cemetary In_Crypt, before[; Read: "Theres a poem carved in to the marble of the door. It reads: ^~My first and last are both the same, my mystery's begun^ My second adds naught onto my name, my third adds that same sum^ My fourth starts next, you're halfway there to understand the whole^ My fifth begins beginning and my sixth has the final role^ My seventh is a secret that now is told.^ Now put my parts together if you want what I do hold.^ And if you find in any way that I have been unclear^ Focus all your heart, your will and your answer here.~^ A few inches below this cryptic stanza is a carving of a rose.";], has static door openable ~open locked legible; Object In_Crypt "Inside the Crypt" with description "Shadows and dank drip from each corner of this crypt. All in all, not a nice place to be.", s_to Crypt_Door, has light; Object atmosphere "shadows" In_Crypt with name "shadows" "dank", description "Brr! Spooky!", has scenery; Object slab "mortuary slab" In_Crypt with name "slab" "mortuary" "stone", article "a", adjective "cold" "gray" "dank" "shadowed", description "A long slab is the only thing in this crypt. It's about six feet long, made of cold gray stone. Laying on the slab, looking as if she never died, is Gwen!", initial "A single slab in the middle of the floor is the sole object in this crypt.", before[; Take: "Even if you could, you wouldn't want to.";], has static supporter; Object Gwen "Guenevere Rodriguez" slab with name "lady" "girlfriend" "woman" "hair" "gwen" "guenevere", adjective "beautiful" "blonde" "peaceful", initial "Laying on the slab, looking as if she is merely in a deep sleep, is Guenevere.", description "She looks just like her painting, long blonde hair spread out over the slab. She looks peaceful, like she's just sleeping. You can't belive she's real. . . but she is.", life[; Kiss: Deadflag=2; "You bend down and kiss Gwen, a soft, gentle, lingering kiss. She sighs, stirs, and opens her eyes. ~Hello love,~ she says , ~I've been waiting a long time."; default: "She just lays there, peaceful and angelic."; ], has animate; !------------------------------------------------------------------- ! Topiary ! Mongoose has brass key for lab entrance !------------------------------------------------------------------- Object Topiary "Hotel Topiary" with description "This is the topiary of the hotel. Arranged in a neat circle around a small picnic area are bushes clipped into the shape of animals. From here, you can only go back to the main path to the east.", before[; Listen: if (control_dial.state ==3 && hiss_tape has general) "You hear a loud angry hissing. It seems to be coming from the shrubbery."; "You hear nothing unexpected."; ], e_to Path_One, has light; Object picnic_area "picnic area" Topiary with name "picnic" "area", description "A small cleared area, perfect for having picnics on.", has scenery; Object tbushes "bushes" Topiary with name "bushes" "animals" "lion" "rabbit", description "The bushes around here have been carved into animals, most of which are unrecgonizable, resembling a cross between a lion and a rabbit.", has scenery; Object mongoose "small mongoose" Topiary with name "mongoose" "caboose" "something" "collar", adjective "small" "quick" "furry" "golden" , initial[; if (control_dial.state == 3 && hiss_tape has general) "A mongoose is vibrating in place here."; "Something small and quick and furry is darting around here. Probably a mongoose.";], description[; if (control_dial.state == 3 && hiss_tape has general) print"The mongoose is standing in one place, swaying from side to side, vibrating slightly. It seems to be hypnotized by the angry hiss pouring out of the speakers."; else print "It seems to be a mongoose, darting around almost faster than you can see. "; if (parent(brass_key) ~= mongoose) "It has a fine golden collar on."; "It has a fine golden collar on, but that's not as interesting as whats hanging from it- a brass key!";], life[; default: if (control_dial.state ==3 && hiss_tape has general) "The mongoose just sways there, vibrating slightly."; "The mongoose zips away, too fast to catch."; ], has container animate open static transparent; Object fruit_tree "Pwanga fruit tree" with name "tree" "pwagana", article "a", adjective "large" "gnarled" "venerable" "ancient", description "A venerable old tree is here, its gnarled branches low and heavey with fruit. Its trunk is so thick you cant get your arms around it. It must have been here for hundreds of years.", before[; Climb: "Even the lowest branches are well out of your reach."; Take: "Not even if you had a spare five hours and a backhoe."; ], has static; Object fruit "pwagna fruit" with name "fruit" "pwagna", adjective "small" "dark" "fuzzy", article "a", initial "A single pwagna fruit lays at the foot of the tree.", description " A small fruit covered in dark fuzz. It reminds you of a peach, actually.", before[; Smell: "Smells like a plum."; Eat: "After all you went through to get this fruit, you aren't even tempted."; ]; Object brass_key "brass key" mongoose with name "key" "brass", adjective "small", article "a", description "A small brass key.", before[; Take: if (control_dial.state ~=3 || hiss_tape hasnt general) "The mongoose runs away whenever you get close."; move brass_key to player; "You take the key from the oblivious mongoose."; ]; !-------------------------------------------------------------------------- ! Inside the Museum !-------------------------------------------------------------------------- Object Main_Hall "Inside the Museum (First Floor)" with description "You have to crane your neck to take in the entirety of this room. It is that vast. And it is that beautiful, polished hardwood floors, supporting neat and orderly rows of display cases. A tasteful sign above the north exit reads ~To the Hall of Alchemy~, while the one above the west exit reads ~Resturant~. The most intriguing sign is above the alcove to the northwest, which is labeled simply ~Diamond Room~. There's a small door in the west wall labelled ~Employees Only~, or you can go back outside to the south. Not to mention the stairs leading up.", s_to[; print "You push open the grand glass doors and leave the hotel.^"; return Path_Two;], n_to Alchemy_Hall, w_to Resturant, e_to Business_Office, u_to[; print "You climb the stairs to the second floor."; return Bedroom;], nw_to Diamond_Room, has light; Object msign "sign" Main_Hall with name "sign", adjective "south" "north" "east" "west" "northwest", description "Check the room description. I can't type all that again!", has scenery; Object souvenir_stand "souvenir stand" Main_Hall with name "souvenir" "stand", initial "A small souvenir stand is in the corner of the room.", description "This is a small stand sellling those annoying glow-sticks. You know, the kind where you shake them and they glow for hours?", has supporter static; Object glowstick "glowstick" souvenir_stand with name "glow" "stick" "glowstick", adjective "glowing" "annoying", article "a", description[; print "A yellow stick. It is "; if (self has light) "glowing."; "a dull yellow color.";], before[; Shake: if (self has light) "Nothing else happens."; give self light; "You shake the stick, and it begins emitting a dull yellow light."; ]; Object books_exhibit "table" Main_Hall with name "exhibit" "table", description "A long table on which lie two books.", initial "The only finished exhibit in this room seems to be a table running along the wall.", has supporter static; Object diary "small diary" books_exhibit with name "diary" "first" "book", description "A small leather-bound diary, with the initials G.R. on the front.", before[; Read: if (note_1 hasnt delivered) { print "You flip through the pages. It seems to be a rather boring account of life in the 1750's. It paints a portrait of an intelligent, beautiful woman who was constrained by her time and family relations. then you get to the entry for exactly five hundred years ago today, and your jaw drops as you read. ~Dear Diary: A strange and wonderful thing has happened. Rather than marry the fat toad father has picked out for me in two days, I had decided to end my life. I say had decided, for on the tray with my dinner came the most wonderful note. It is from someone I do not know, but he claims to love me, and implores me not to lose hope, that he will find me a solution to my dilemma before the wedding day. I will tuck the note in your pages for safekeeping, dear diary, and pray that my mysterious savior keeps his word.~^^^"; if (note_1 hasnt general) { move note_1 to Main_Hall; give note_1 general; print "As you read those very words, a note flutters from the pages of the diary to the floor.^^^^"; }; "You read on, to the next entry, dated five hundred years ago tomorrow.^ ~Dear Diary: I despair. My savior has not contacted me again nor provided key or spell or any means for me to escape my father's prison. And so, I must return to my original escape plan, rather than marry the toad. I have taken poison, and I feel the blessed sleep creeping through my veins. My one regret is that I never saw my would-be knight in shining armor.~"; }; print "You flip through the pages. It seems to be a rather boring account of life in the 1750's. It paints a portrait of an intelligent, beautiful woman who was constrained by her time and family relations. Again, you get to the entry for 250 years ago:^ ~Dear Diary: A strange and wonderful thing has happened. Rather than marry the fat toad father has picked out for me in two days, I had decided to end my life. I say had decided, for on the tray with my dinner came the most wonderful note. It is from someone I do not know, but he claims to love me, and implores me not to lose hope, that he will find me a solution to my dilemma before the wedding day. I will tuck the note in your pages for safekeeping, dear diary, and pray that my mysterious savior keeps his word.~^^ You keep reading. ^^Waiting.^^Hoping.^^ And this time, the next entry, the one for today has changed. ~Dear Diary: My savior has made good his word. Tonight, along with my supper, there was a little botttle, and a second note.~"; if (note_2 hasnt general) { move note_2 to Main_Hall; give note_2 general; remove note_1; print "^^^As you read those very words, a note flutters from the pages of the diary to the floor.^^^"; }; "~I shall do as he asks, and drink his potion. He tells me it shall not kill me, just make all think I am dead. Either way I am free. I look forward to meeting my knight, and returning the feelings he has, for as impossible as it may seem, I have grown to love him as well. There, it is done. I have drunk, and feel the sleep claim me..~ The writing trails off."; Take: "The book seems tethered to the table somehow."; ], has legible; Object note_1 "note" with name "note", description "A brief note on a single sheet of paper.", before[; Read: print "The note reads as follows:^ ~My Dearest Gwen: Despair no longer, for I have found you. I love you with a passion far beyond anything I have ever known. I know you do not want to marry at your father's bequest. Hold on tight my darling, I promise I will find a way for us to be together.^~"; if (note_1 hasnt read) "^You recgonize the signature affiexed to the bottom of the note, and your mind reels. It's your name!"; give note_1 read; "^The note is signed with your signature."; ], has legible; Object note_2 "note" with name "note", description "A brief note on a single sheet of paper.", before[; Read: "The note reads: ~Dearest Gwen:^ Despair no longer, my love. I have found the answer. With this note, I have included a little vial. Drink the contents, and you will fall into a sleep so deep, it will be mistaken for death. Your father will put you in your crypt, and I will come and wake you as soon as I can.~^^As with the other note, this one is signed with your signature."; ], has legible; Object alchemy_book "book of alchemy" books_exhibit with name "book" "second" "alchemy", description "A small black book, labeled ~Ye Alchemic Seyrcets~.", before[; Read: "You really can't make head or tail of it."; Search: "You notice that a page has been torn out."; Take: "The book seems tethered to the table somehow."; ], has legible; Object bar "bar" Main_Hall with name "mini" "bar" "mini-bar", initial "In the corner across from the souvenir stand, there is a small mini-bar.", description "Well, actually its more of a cooler with a price-list on it then an actual bar. Good call; the guests will probably need something to get them through this deadly dull place.", before[; Take: "You really don't want to lug around a heavy cooler."; ], has container openable; Object absinthe "bottle of absinthe" bar with name "bottle" "absinthe", description "A bottle of a strong absinthe liquer.", before[; Open:"You open the bottle, and the alcohol content alone is enough to make your eyes water, so you close it again."; Drink: "Nah. Absinthe just makes the heart grow fonder."; ]; !-------------------------------------------------------------------- ! Diamond Room !------------------------------------------------------------------- Object Diamond_Room "Diamond Room" with description [; print "A large room marked only by a single exhibit in the middle of the floor. The lights are dim, the shades drawn, the better to highlight the sole exhibit."; if (lasers notin nothing) "A network of lasers is throughout the room, protecting the exhibt."; ], se_to Main_Hall; Object Pedestal "pedestal" Diamond_Room with name "pedestal" "display" "stand", article "a", initial [; if (lasers notin nothing) "In the middle of the room, guarded by lasers, sits a lone pedestal."; "In the middle of the room sits a lone pedestal.";], description "A simple pedestal of sculpted marble sits here, about 4 feet tall.", has static supporter; Object diamond "diamond" Pedestal with name "diamond" "jewel", article "a", adjective "sparkling" "blue", initial "On the pedestal rests a sparkling blue diamond.", description "A beautiful blue diamond. As you twist and turn it in your hands, the light glints and sparkles off its many facets.", before[; Take: if (lasers notin nothing) "The lasers would sever your hand if you tried. That fact takes most of your enthusiam away."; move diamond to player; "Taken."; ]; Object lasers "lasers" Diamond_Room with name "laser" "lasers" "network" "lines", article "a", adjective "red" "shimmering", initial "A network of shimmering red lines, presumably lasers, guards the sole exhibit.", description "A shimmering network of red lines form an intersecting grid here; kind of a fence of light. No section is more than 6 inches away from any other section - there's no way you could get through.", before[; Take: "The laser would cut off your hand if you tried."; default: "It's a laser beam. Not much else to say, really.";], has static; Object laser_button "button" Diamond_Room with name "button", article "a", adjective "small" "white", initial "A small white button gleams in the darkness, high in the corner of the room. You'd have to be able to fly to get there.", description "A small white button.", before[; Push: if (player hasnt bat) "The lasers would slice you to ribbons before you could get far."; remove lasers; Diamond_Room.se_to=Main_Hall; "You fly up through the lasers and push the button, and the net of lasers blinks off. Just in time, it seems, for the potion converting you to a bat seems to have worn off, and you plummet to the floor landing with a loud ~Whoomp~. You get up, shaken, not stirred, and resume your quest.";], has static; !------------------------------------------------------------------------- ! Bedroom and Bathroom !------------------------------------------------------------------------- Object Bedroom "A small bedroom" with description "This must be Uncle Steve's bedroom. Its fairly small and spartan, just a bed and a dresser. The stairs lead back down to the main hall, as well as up to the attic and there is a small bathroom to the south.", d_to Main_Hall, s_to Bathroom, u_to Attic, has light; Object bed "bed" Bedroom with name "bed" "cot", description "More like a cot than a bed. No sheets, no pillow. No wonder there's been no cousins.", has scenery; Object Gwens_Picture "picture of Guenevere" Bedroom with name "picture" "Guenevere" "Gwen", article "a", adjective "first", initial "A picture hanging on the far wall catches your eye.", description[; print "On the far wall hangs a painting of a young woman. Her beauty and grace seem to radiate outwards from the canvas. Her skin is fair, with just a hint of freckling, her hair long and blonde, framing a heart shaped face with eyes of blue and red lips curved in a small smile. A small plaque on the frame reads ~Guenevere Rominal 1755-1775~.^"; if (self hasnt general) { give self general; "^One gaze at this picture and you're lost in those eyes. You hear something in the background that sounds like angels singing. The Earth shifts a bit under your feet, and you realize you are completely, totally in love with Guenevere. Fleeting thoughts of Gwyneth pass through your mind and are burned away in an instant by your new passion."; } ], has scenery; Object dresser "dresser" Bedroom with name "dresser" "drawer", article "a", adjective "small", initial "A small dresser is next to the bed.", description "A small wood dresser with a single drawer.", has container openable ~open; Object hair_grow "sample of ~Bottle'O'Hair~" dresser with name "bottle" "hair" "sample" "label" "liquid" "potion", article "a", adjective "small" "glass", description "A small glass bottle, whose label proclaims it to be a free sample of something called ~Bottle'O'Hair~.", before[; Open: "Why? You aren't bald. Yet, anyway."; ]; Object Bathroom "A small bathroom" with description "Its a typical bathroom, black and white checked tile and all. Toilet, shower, medicine chest, etc. The only exit is back to the north to the bedroom.", n_to Bedroom, has light; Object tile "tile" Bathroom with name "black" "white" "tile", description "You stare at the tile and suddnly feel like a game of chess.", before[; Clean: "You don't even clean your own bathroom, let alone someone elses.";], has scenery; Object toilet "toilet" Bathroom with name "toilet", description "Its an ordinary toilet. Needs a cleaning, actually.", has scenery; Object shower "shower" Bathroom with name "shower", description "Its an ordinary shower. Needs a cleaning, actually.", has scenery; Object medicine_chest "medicine chest" Bathroom with name "medicine" "chest", article "a", description "A small wooden chest on the wall.", before[; Receive: "There's not much point in that, I'm afraid."; ], has container openable scenery; Object sleeping_pill "sleeping pill" medicine_chest with name "pill" "white", article "a", description "A small white pill designed to induce sleep.", before[; Eat: "You really don't want to sleep right now."; ]; !------------------------------------------------------------------------- ! Attic !------------------------------------------------------------------------- Object Attic "Attic" with description "An old dusty attic, nearly empty. Guess Uncle Steve hauled all the usual stuff down to begin his museum exhibits. There's a skylight in the roof, and a window on the far wall.", d_to Bedroom; Object skylight "skylight" Attic with name "skylight" "glass" "panes", description "A large open skylight made of may panes of glass.", before[; Open, Close: "Its too high for you to reach.";], has scenery; Object window "window" Attic with name "window", description "A quite ordinary window.", before[; Open, Close: "You can't bduge it from its current position.";], has scenery; Object telescope "telescope" Attic with name "telescope" "end", article "a", adjective "brass" "shiny" "small" "large", initial "A brass telescope is fixed to the floor so it points out the far window.", description[; print "A shiny brass telescope, bolted to the floor here."; if (self hasnt general) "The small end is pointing out the window."; "The large end is pointing out the window."; ], before[; Search, Examine: if (self hasnt general) "You peer through the large end of the telescope. Because the telescope is flipped backwards, all you can see is a rose carved in some sort of stone."; "You get a nice view of the crypt in the cemetary."; Take: "It's bolted down."; Push: if (self hasnt general) { give self general; if (moonbeam notin nothing) { "You flip the telescope, interrupting the beam momentarily. The beam now goes through the small end of the telescope and seems to dissipate a few inches away from the large end."; }; "You flip the telescope so the large end points out the window."; } else { if (mirror has general) { if (moonbeam notin nothing) { give Crypt_Door ~locked; move moonbeam to Cemetary; give self ~general; "The moonbeam bounces off the mirror, and through the large end of the telescope. You see it come out of the small end of the telescope, but you've no idea where it goes.";}; give self ~general; "You flip the telescope so the small end points out the window."; }; }; ], has static; Object mirror "full-length mirror" Attic with name "mirror" "frame", article "a", adjective "full-length" "silvery" "ornate" "gilt", initial "A full-length mirror is underneath the skylight.", description[; print "A full-length mirror in an ornate gilt frame is sitting under the skylight."; if (self has general) "It's titled toward the telescope."; "It's tilted away from the telescope."; ], before[; Search, Examine: if (self hasnt general) " You look in the mirror, which is tilted away from the telescope. You see a pretty nice guy."; "You look in the mirror, which is titled towards the telescope. You see a pretty nice guy."; Take: "It's bolted down."; Push: if (self hasnt general) { give self general; print "You flip the mirror so that it is tilted toward the telescope."; if (telescope has general) { if (moonbeam notin nothing) { give Crypt_Door ~locked; move moonbeam to Cemetary; "The moonbeam bounces off the mirror, and through the large end of the telescope. You see it come out of the small end of the telescope, but you've no idea where it goes."; }; }; } else { give self ~general; if (moonbeam notin nothing) { "You flip the mirror, cutting the beam off."; }; print "You flip the mirror, so it faces away from the telescope."; rtrue; }; ], has static; Object moonbeam "moonbeam" with name "moonbeam", article "a", adjective "single" "solitary" "lone" "luminous", description "A lone moonbeam shines down here.", initial "A lone moonbeam shines down through the skylight.", before[; Search, Examine, Take: "It's only an insubstantial shaft of light."; ], has static; !----------------------------------------------------------------------- ! Business office !----------------------------------------------------------------------- Object Business_Office "Business Office" with description[; print "This looks like your uncle's office. There's a desk, and a two small control panels. One labeled ~Lights~ and one labeled ~Sound~. The only exit seems to be back to the west."; if (Iron_Door notin nothing) "Theres a doorway in the northwest corner."; "Theres an exit to your Uncle's lab to the northwest.";], w_to Main_Hall, nw_to [; if (Iron_Door notin nothing) "There's a door blocking the way."; return Lab;], has_light; Object Gold_Door "gold door" Business_Office with name "door", adjective "gold", description "Wow. No wonder Uncle Steve always seemed to be loaded. This appears to be a door made out of solid gold!", before[; Take: "While tempting, your sense of morality wins out and you decide to leave the door where it is. Besides, there's no way you'd be able to shift it."; Attack: "You can't even make a mark on it."; Open: if (self has locked) "It seems to be locked."; remove self; move Brass_Door to Business_Office; "As you pull open the gold door, there is a puff of smoke, and it VANISHES! Standing it its place is a completely identical door, only this one is made of brass."; ], with_key Gold_Key, has door lockable locked; Object Brass_Door "brass door" with name "door", adjective "brass", description " Exactly like the first door, except this one is brass.", before[; Take: "While tempting, your sense of morality wins out and you decide to leave the door where it is. Besides, there's no way you'd be able to shift it."; Attack: "You can't even make a mark on it."; Open: if (self has locked) "It seems to be locked."; remove self; move Iron_Door to Business_Office; "As you pull open the brass door, there is a puff of smoke, and it VANISHES! Standing it its place is a completely identical door, only this one is made of iron."; ], with_key brass_key, has door lockable locked; Object Iron_Door "iron door" with name "door", adjective "iron", description "Dang, after the first two doors, you were expecting something a little more valuable. But this door just seems to be made out of Iron.", before[; Take: "Why? It's not worth much."; Attack: "You can't even make a mark on it."; Open: if (self has locked) "It seems to be locked."; remove self; "As you pull open the iron door, there is a puff of smoke, and it VANISHES! There seems to be some sort of lab now visible to the northwest."; ], with_key Iron_Key, has door lockable locked; Object sound_panel Business_Office with name "sound" "panel", description "Well, this looks simple enough. Slot for a tape, green button and a dial to show where the tape output goes.", has supporter scenery; Object control_dial "control dial" sound_panel with name "control" "dial", description[; print "The dial can be set from 0 to 3. It currently points to "; print_ret self.state;], state 0, before[; Turn: if (sound_panel_slot hasnt general) "You can probably only turn the dial when there's a tape to be played."; if (second <0 || second>3) "The dial can only be set from 0 to 3."; self.state=second; "You turn the dial. It is now set at ", self.state, "."; ], has scenery; Object sound_panel_slot "slot" sound_panel with name "slot", description "This is where whatever music you want to be played goes.", before[; Receive: if (self has general) "There's already a tape in there, so putting anything else in would probably be a bad idea."; if (noun ~=hiss_tape) "The slot is designed only to accept cassette tapes."; give self general; give hiss_tape general; "You pop the tape in with a CLICK."; LetGo: if (self hasnt general) "There's nothing in there!"; if (sound_panel_button has general) "You can't take the tape out while it is playing."; move hiss_tape to player; give self ~general; give hiss_tape ~general; "Removed."; ], has scenery; Object sound_panel_button "button" sound_panel with name "button", adjective "green" "medium" "medium-sized", description "A medium-sized green button.", before[; Push: if (hiss_tape hasnt general) "You push the button to start the tape playing. Of course, since there's no tape in the system, nothing happens."; if (self has general) { give self ~general; "You press the button and the tape stops."; }; give self general; "You press the button and the tape starts."; ], has scenery; Object BOlights_panel "lights panel" Business_Office with name "lights", description "The lights panel doesn't seem to do much of anything. Must not be hooked up yet.", has scenery; !--------------------------------------------------------------------- ! The Hall of Alchemy ! This is where the one of the three keys to get in the lab is !___________________________________________________________________ Object Alchemy_Hall "Hall of Alchemy" with description "As the name implies, this hall is dedicated to Alchemy. Not that there is much in the way of exhibits, just the odd poster and artifact. A plaque above the exit in the west wall reads ~To Presses of the Ages~, the one above the exit in the east wall reads ~Precious gems and stones~, and the one above the south exit reads ~Main Hall~.", s_to Main_Hall, w_to Presses_Ages, e_to Science_Hall, has light; Object asign "sign" Alchemy_Hall with name "sign", adjective "south" "west" "east", description "Read the room description. I can't be bothered typing all that stuff again.", has scenery; Object poster "poster" Alchemy_Hall with name "poster" "artifact", description "Odd. Very odd.", before[; Take: "Nah."; ], has scenery; Object Merlin_Machine "Merlin's Alchemy Machine" Alchemy_Hall with name "machine" "dome" "lab" "banner", initial "An odd looking machine is in the corner under a banner reading ~Merlin's Mysterious Alchemikal Magik~.", description "An odd machine. It looks like an air-hockey table base, but insted of the familiar surface, there appears to be a glass dome containing a minature lab and a figure in wizard's robes. On the front of the machine is a panel, and in the top of the glass dome there appears to be a slot which is connected to some sort of spiral ramp.", before[; Open, Close: "There's no way you can see to do that to the glass dome.";], has static container open transparent; Object slot "slot" Merlin_Machine with name "slot" "ramp", description "A coin sized slot on the top of the glass dome is connected to a spiral ramp leading to the crucible.", before[; Receive: if (noun ~= lead_disc) "A little light you hadn't noticed before lights up, reading ~Coins only, please!~. After a minute, it winks out."; give crucible general; remove lead_disc; "The lead disc spirals around and around the ramp and finally comes to rest in the crucible."; LetGo: "There's no way to open the dome around the machine. Sorry."; ], has scenery; Object lead_disc "lead disc" with name "lead" "disc", article "a", description "A small disc of lead, about the size of a quarter."; Object Merlin "small figure of merlin" Merlin_Machine with name "figure" "Merlin", adjective "small" "bearded", article "a", state 0, description[; print "A small, bearded figure in blue robes adorned with symbols for stars and planets stands in the middle of the minature lab. He holds a wand, and its difficult to tell from this distance, but his eyes appear to be twinkling. "; switch (self.state) { 0: "He is facing the front of the machine, and therefore, you."; 1: "He is facing a small crucible hanging above a mold."; 2: "He is facing a shelf on which sits a small bottle."; };], has static; Object panel "panel" Alchemy_Hall with name "panel", description "On the panel are six buttons: one red, one black, one white, one green, one blue, and one purple.", has scenery supporter transparent; Object black_button "black button" panel with name "black" "button", description "A small black button.", before[; Push: switch (Merlin.state) { 0: Merlin.state=Merlin.state+1; "Merlin bows to you before turning to face the crucible."; 1: Merlin.state=Merlin.state+1; "Merlin turns to face the shelf with the small bottle."; 2: "Nothing seems to happen. Perhaps he's turned as far as he can."; };], has scenery; Object green_button "green button" panel with name "green" "button", description "A small green button.", before[; Push: switch (Merlin.state) { 0: "Nothing seems to happen."; 1: Merlin.state=Merlin.state-1; "Merlin turns to face the front of the machine and therefore you."; 2: Merlin.state=Merlin.state-1; "Merlin turns from the shelf with the bottle to the crucible."; };], has scenery; Object red_button "red button" panel with name "red" "button", description "A small red button.", before[; Push: switch (Merlin.state) { 0: "A jet of flame gouts from the end of Merlin's wand, and splashes on the glass close to your face, making you jump back in surprise."; 1: if (crucible has general) {give crucible melted; give crucible ~general; "A jet of flame gouts from the end of Merlin's wand, and the crucible glows red for a moment. After that, you see a stream of molten liquid pour into the mold below."; }; "A jet of flame gouts from the end of Merlin's wand. The crucible glows red for a moment, but quickly cools back to black."; 2: "A jet of flame gouts from the end of Merlin's wand, narrowly missing the tiny bottle that sits there."; };], has scenery; Object blue_button "blue button" panel with name "blue" "button", description "A small blue button.", before[; Push: switch (Merlin.state) { 0: "A jet of ice gouts from the end of Merlin's wand, and splashes on the glass close to your face, making you jump back in surprise."; 1: if (crucible has melted && white_button has general) { give self general; "A jet of ice gouts from the end of Merlin's wand, and frosts up the glass of the dome momentarily. When the frost dissipates a moment later, you can see a shiny gold key in the mold!"; } if (crucible has melted) "Merlin shakes his head, and you have the uncanny sensation he is trying to tell you you missed a step."; "A jet of ice gouts from the end of Merlin's wand, turning the crucible blue with cold, though it quickly returns to room tempature."; 2: "A jet of ice gouts from the end of Merlin's wand, narrowly missing the tiny bottle that sits there."; };], has scenery; Object white_button "white button" panel with name "white" "button", description "A small white button.", before[; Push: switch (Merlin.state) { 0: "Merlin waves his wand. Nothing seems to happen, though the glass in front of your face does vibrate a little."; 1: "Merlin waves his wand, and the crucible moves! It tilts as if some unseen hand were pulling at it. After a moment, it returns to its normal position, as if the owner of the invisible hand realized that the crucible was far too heavy to move."; 2: if (self has general) "Merlin turns around and waves his wand at you in a ~tsk~-ing fashion."; else give self general; "Merlin waves his wand, and the white bottle floats across to the crucible, tipping just enough to send a single drop inside before gracefully floating back to its prior position on the shelf."; };], has scenery; Object shelf "shelf" Alchemy_Hall with name "bottle" "shelf" "label", description "Inside the minature lab, a small white bottle rests on a shelf. you can almost make out the label, but not quite.", has scenery; Object purple_button "purple button" panel with name "purple" "button", description "A small purple button.", before[; Push: if (blue_button has general) { move gold_key to player; give gold_key general; give white_button ~general; give blue_button ~general; Merlin.state=0; "The mold flips over, and the key falls onto this little platform which slides out of the machine. You pocket the key, and the platform slides back in, apparently causing the machine to reset itself."; }; "The mold flips over, but as it is empty, nothing happens."; ], has scenery; Object mold "mold" Alchemy_Hall with name "mold", adjective "small", description[; print "It's a small mold, vaguely key shaped. "; if (blue_button has general && crucible has melted && white_button has general) " There's a shiny gold key in the mold."; "It's empty."; ], has scenery; Object gold_key "gold key" with name "key" "gold", article "a", adjective "tiny" "small", description "A small golden key."; Object crucible "crucible" Merlin_Machine with name "iron" "crucible", article "a", description [; print "A small iron crucible is inside the miniature lab, directly under the spiral ramp leading from the slot in the top. It "; if (self has general) "contains a lead disc."; if (self has melted) "contains a small quantity of molten lead."; "is empty.";], has scenery; !--------------------------------------------------------------------- ! Presses through the Ages !_____________________________________________________________________ Object Presses_Ages "Presses through the Ages" with description "Pretty much as the sign you saw entering the room indicated, this room is about the history of presses, although the only press you seem to see is the one rusting in the corner. The only exit is back through the archway to the east, below (Yes, you guessed it) a sign reading ~Hall of Alchemy~.", e_to Alchemy_Hall, has light; Object psign "sign" Presses_Ages with name "sign", adjective "south" "west" "east", description "Read the room description. I can't be bothered typing all that stuff again.", has scenery; Object lead_press "lead press" Presses_Ages with name "press" "machine" "contraption" "biter", adjective "strange", initial "A strange looking contraption sits in the corner.", description "All sharp corners and angles, this odd looking machine is billed as a ~Lead Press~ or a ~Biter~ by the placard. It seems to take little bite sized chunks out of a lead sheet, and spits out the resulting little piece. As much as you rack your brain, you really cant come up with a single practical use for it.", before[; Take: "This thing must way between three and five tons. So, no.";], has static supporter; Object yellow_lever "yellow lever" lead_press with name "yellow" "lever" "handle", initial "Sticking out of the middle of the contraption is a big yellow lever.", description "The lever is big and long, with a yellow handle. You could probably push or pull it.", before[; Push: if (self has general) "Nope. Stuck firmly. Boy, when you break a machine, it stays broken."; "It won't move any further. Maybe pulling it would help?"; Pull: if (self has general) "Nope. Stuck firmly. Boy, when you break a machine, it stays broken."; move lead_bar to Presses_Ages; move lead_disc to Presses_Ages; give self general; lead_press.description="It's pretty much a useless pile of scrap metal, now."; "You grunt and heave, and eventually manage to pull the lever to what you can only hope is an on position. It groans and grumbles, and then jagged metal jaws begin to chomp up and down rapidly as a lead sheet is fed to them. However, something seems to go wrong from the first bite; the jaws tangle and break, sending a small disc bouncing off the walls. You throw yourself on the ground as it whizzes over your head and lay there quivering until the lack of noise tells you its safe to get up. The machine is pretty much scrap metal at this point, but there's a perfect quarter sized disc of lead in front of it on the floor next to a long lead bar which you can only assume was a vital part of the machine.";], has static; Object lead_bar "lead bar" with name "lead" "bar", initial "A long bar of some grey metal, presumably lead, lies here.", description "This seems to have been ejected from the ~biter~. Its a lead bar, about 3 feet long and fairly round."; !-------------------------------------------------------------------------- ! Science Hall - Iron key !-------------------------------------------------------------------------- Object Science_Hall "Hall of Science" with description "If you judged the technological process of man by the artifacts in this room, you'd swear we were still stuck in the stone age. The exhibits on the walls here don't go much past arrowheads, and the rest of the display isnt much more recent than that.", w_to Alchemy_Hall, has light; Object artifacts "artifacts" Science_Hall with name "artifacts" "arrowheads" "display", description "Yawn. Some boring stone artifacts. If you have to look at ancient stuff, you prefe to look at things like obscene cave paintings.", before[; Take: "What on Earth for?"; ], has scenery; Object Iron_Key "iron key" Science_Hall with name "key" "iron", adjective "small" "grey", initial "A small iron key dangles from a thread in the cieling, high above reach.", description "A small iron key", before[; Take: if (self hasnt general) "The key is much too high for you to reach."; rtrue; ]; Object generator "Voltage generator" Science_Hall with name "generator" "voltage" "machine", adjective "large" "scary", description "The centerpiece of the room, this machine reminds you of Saturday afternoon movies about mad scientists. They always had one of these machines in a corner of their lair, playing happily with the dials, causing an electric arc to travel up the two pylons.", before[; Receive, LetGo: "That won't accomplish anything.";], has static supporter; Object pylons " a pair of pylons" generator with name "pylons", description[; print "Two long pylons, one on each end of the machine, jut into the air. Each terminates in a small fork. The forks "; if (self hasnt general) "are empty."; "have an iron bar connecting them."; ], before[; Examine:if (self hasnt general) "It looks like you could rest something on the two pylons, one end on each fork."; "There is an iron bar laying across the pylons, connecting them."; Receive: if (noun ~= lead_bar) "I'm afraid that will never fit."; if (generator_dial has general) "Probably best not to mess with the thing while it's on."; give self general; move lead_bar to pylons; "You drop the iron bar across the pylons. It's a perfect fit."; LetGo: "Nah. It fits so nice, why remove it."; ], has supporter scenery; Object generator_dial "generator dial" generator with name "dial" "control", description "A small dial, marked in increments from one to five. It seems to control the voltage produced by the machine.", before[; Turn: if (self has general) "Nope. Nothing. Boy, when you break something it stays broken."; if (pylons hasnt general) "A crackling arc of purple electricty travels up both pylons before dissipating into the air."; if (second ~= 5) { print "A crackling arc of purple electricty travels up both pylons and wraps around the iron bar, sparking briefly."; if (Iron_Key hasnt general) " The key seems to sway slightly! Maybe if you gave it more power."; rtrue; } move Iron_Key to player; give self general; give Iron_Key general; "The arc of electricity moves up the plyons, and when it reaches the top, it seems to jump along the iron bar, wrapping around it building strenght, and power. Some instinct tells you to shield your eyes, and you fling your hand in front of your eyes. You hear a building whine, then a clink, then a descending whine. You open your eyes, and see the iron key laying on the now-broken machine, and you pocket it."; ], has scenery; !-------------------------------------------------------------------- ! Resturant and stage !___________________________________________________________________ Object Resturant "Museum Resturant" with description "More of a bistro, or small cafe, the museum's resturant is merely a collection of a dozen tables, hapazhardly grouped together. There's a kitchen to the south, and to the north is a stage, where you assume some sort of productions will be put on once the museum is finished and open to the public. Of course, you can always go west to the main hall.", n_to Stage, s_to Kitchen, e_to Main_Hall, has light; Object tables "table" Resturant with name "table" "tables", description "A kind mand would say that the tables here are an ecletic mix of styles. An unkind man would say that your uncle had raided every thrift shop in town and bought the cheapest table from each one.", before[; Take: "You don't even want to look at them, let alone take them."; ], has scenery; Object Stage "Theatre Stage" with description "You're standing on the stage in front of the small resturant. The stage is bare, not overly surprising, since the Museum isn't open yet. You can go back south to the resturant, and a ladder here leads upwards.", before[; Listen: if (theatre_green_button has general) "You hear a loud angry hissing."; "You hear nothing unexpected."; ], s_to Resturant, u_to Theatre_Control, has light; Object ladder "ladder" Stage with name "ladder", description "A metal ladder is fastened to the back wall of the stage. It leads up into darkness.", before[; Take, Push, Pull : "The ladder is fastened and does not move."; Climb: print "You grit your teeth, as you've never liked heights, and climb the ladder.^^^"; PlayerTo(Theatre_Control,2); new_line;new_line;rtrue; ], has scenery; Object hammer "hammer" Stage with name "hammer" "handle", adjective "red" "hellish", article "a", initial "Some careless workman must have left a hammer here on the stage.", description "It's a fairly nice hammer with a red handle with the word ~Hellish~ engraved on it. It seems oddly familiar."; Object Theatre_Control "Theatre Control booth" with description "Ah, at last. A room that is actually smaller than your apartment! These cramped quarters hold the control panel that run the lights and sounds for the stage below. The only exit is down to the stage.", d_to Stage; Object dladder "ladder" Theatre_Control with name "ladder", description "A metal ladder is fastened to the back wall of the control booth. It leads down to the lit stage below.", before[; Take, Push, Pull : "The ladder is fastened and does not move."; Climb: print "You grit your teeth, as you never liked heights, and descend the ladder.^^^"; PlayerTo(Stage,1); new_line;rtrue; ], has scenery; Object theatre_panel "panel" Theatre_Control with name "panel" "lights" "buttons", description[; print "A complicated looking control panel with many lights and buttons, this runs the lights and sound for the stage below. There's a slot "; if (child(panel_slot)==hiss_tape) print "containing a cassette tape. Below which is a large green button."; print "which is empty. Below that is a large green button.";], before[; Take: "You'd break your back trying."; Push: "You amuse yourself for a few moments making the lights dance around the stage."; ], has scenery supporter; Object panel_slot "slot" theatre_panel with name "slot", description "Its a slot for a cassete tape. Presumably related to whatever production is being mounted.", before[; Receive: if (noun ~= hiss_tape) "Though it isn't explicitly labeled, the slot is for cassette tapes only."; move hiss_tape to panel_slot; "You insert the tape with a click."; LetGo: if (theatre_green_button has general) "You can't remove the tape while it's playing."; ], has scenery container openable open; Object theatre_green_button "button" theatre_panel with name "button" "green", adjective "large", description "A large green button.", before[; Push: if (self has general) { if (parent(hiss_tape) ~= panel_slot) "Nothing happens."; give self ~general; "There's a click, and the tape stops playing."; }; if (parent(hiss_tape) ~= panel_slot) "Nothing happens."; give self general; "There's a click, and the tape begins to play.";], has scenery; Object hiss_tape "cassette tape" panel_slot with name "cassette" "tape", article "a", description "A casette tape labeled ~Audience sounds 3: Hisses~"; !---------------------------------------------------------------------- ! Kitchen !---------------------------------------------------------------------- Object Kitchen "Museum Kitchen" with description "A small, but fully functional kitchen which serves the resturant to the north. Its got a small stove, fridge and sink. There's a door to the south that is clearly marked with an exit sign, or you could return to the resturant to the north.", n_to Resturant, s_to[; print "You push open the door and step out of the hotel."; return Rubbish_tip;], has light; Object kscenery "scenery" Kitchen with name "scenery" "stove" "fridge" "refridgerator" "sink", description "Just like the one you have in your apartment. Except this one is clean.", has scenery; Object fridge_note "note" Kitchen with name "note", initial "There's a note on the front of the fridge under a magnet.", description "A scribbled note on a piece of notebook paper.", before[; Read: "The note reads: ~Steve: Can you run the hisses through the topiary speakers (setting 3) to scare of the mongoose? He's driving the picnicers nuts.~ The signature is illegeible."; Take: "No need.";], has legible; Object magnet "magnet" Kitchen with name "magnet", description "A magnet on the fridge holds down a note.", before[; Take: "Nah. You have a habit of losing things like that. Leave it where it is.";], has scenery; !--------------------------------------------------------------------------- ! ! At long last, the lab! !--------------------------------------------------------------------------- Object Lab "Inside the Lab" with description "Looking around at the shelves and lab tables, you realize that your Uncle Steve was either an alchemist, or a certified nut. Since beliving the latter is no fun, you decide to stick with the former.", se_to Business_Office, n_to [; print "You step through the swirling, crackling energy portal."; return Cellar;], has light; Object lab_scenery "scenery" Lab with name "shelves" "shelf" "table" "tables" "equipment" "glassware", description "Wow. Just like every movie you've ever seen about a mad alchemist, the these are loaded with glassware and odd equipment.", before[; Take: "What if it explodes when you try to pick it up? Best not to."; ], has scenery; Object bat_vial "vial of Insta-bat potion" with name "vial" "potion" "Insta-bat", article "a", adjective "small" "crystal" "murky", description "A small crystal vial containing a murky potion. As hard as it is to believe, if the note on the Alchemtronic 5000 is correct, this potion will temporarliy turn someone into a bat.", before[; Open, Drink : if (location ~= Diamond_Room) "There's too much light here. You'd be blind as a bat (no pun intended)."; give player bat; remove self; Diamond_Room.se_to ="Too much light in the main hall. Your bat-senses would overload."; "You open the vial, and quickly gulp down the murky potion. With a shiver and a full body shudder, your legs quickly shrink, your arms spread wide and turn into bat wings, covered in fur (oddly enough, your possesions seem to shrink and are clearly visible in little pouches on the inside of your wings.";]; Object sleep_vial "vial of sleep potion" with name "vial" "potion", article "a", adjective "small" "crystal" "green", description "A small crystal vial containing a green potin. If the note on the Alchemtronic 5000 is correct, this potion will put someone into a death-like sleep until kissed by their true love.", before[; Open, Drink : "After all you went through to get those ingredients, you have no intention of wasting the resulting potion on yourself."; ]; Object growth_vial "vial of growth potion" with name "vial" "potion", article "a", adjective "small" "crystal" "brown", description "A small crystal vial containing a brown potion. If the note on the Alchemtronic 5000 is correct, this potion will make organic things suchs as trees and seeds grow.", before[; Open, Drink : "After all you went through to get those ingredients, you have no intention of wasting the resulting potion.";]; Object Alchemotron5000 "Alchemotron 5000" Lab with name "Alcemotron" "5000" "machine" "pipes" "tubes" "hopper" "keyboard", article "the", adjective "big" "scary" "complicated" "huge", initial "The vast majority of the room is taken up by a huge machine.", description "A huge hopper painted with the word ~Alchemotron 5000~ (Yes, technically that's a word and a number, I know.) stands here, connected to all sorts of tubes(which are themselves labeled things like ~Bat's Breath~). Wires lead from the machine to a control panel on a nearby bench.", state 0, before[; Receive: switch (self.state) { 1: if ((noun ~=manure_pile) && (noun ~=hair_grow)) "A pleasant computerized voice says. ~That is an unnecessary ingredient. Please try again."; else if (noun== manure_pile && hair_grow notin nothing) {remove manure_pile; "You drop the manure in the hopper, which spins for a moment, and then the same pleasant computerized voice says ~Ingreident accepted.~"; } else {move growth_vial to player; remove noun; "The machine spins, the tubes shake, the whole thing makes lights and noise in a suitably scary fashion, and the end result of all that sound and fury is a small glass vial, which you pocket."; }; if (noun ==hair_grow && manure_pile notin nothing) {remove hair_grow; "You drop the hair tonic, bottle and all in the hopper, which spins for a moment, and then the same pleasant computerized voice says ~Ingreident accepted.~"; } else {move growth_vial to player; remove noun; "The machine spins, the tubes shake, the whole thing makes lights and noise in a suitably scary fashion, and the end result of all that sound and fury is a small glass vial, which you pocket."; }; 2: if ((noun ~=feather) && (noun ~=leather_piece)) "A pleasant computerized voice says. ~That is an unnecessary ingredient. Please try again."; if (noun == feather && leather_piece notin nothing) {remove feather; "You drop the feather in the hopper, which spins for a moment, and then the same pleasant computerized voice says ~Ingreident accepted.~"; } else {move bat_vial to player; remove noun; "The machine spins, the tubes shake, the whole thing makes lights and noise in a suitably scary fashion, and the end result of all that sound and fury is a small glass vial, which you pocket."; }; if (noun == leather_piece && feather notin nothing) {remove leather_piece; "You drop the leather in the hopper, which spins for a moment, and then the same pleasant computerized voice says ~Ingreident accepted.~"; } else {move bat_vial to player; remove noun; "The machine spins, the tubes shake, the whole thing makes lights and noise in a suitably scary fashion, and the end result of all that sound and fury is a small glass vial, which you pocket."; }; 3 to 7: if (noun ~=diamond && noun ~=fruit && noun ~=wine && noun ~=sleeping_pill) "A pleasant computerized voice says ~Invalid ingredient. Please try again."; self.state=self.state+1; remove noun; print "You drop it into the hopper, and the pleasant computerized voice says ~Ingreident accepted.~^ "; if (self.state==7) { move sleep_vial to player; "The machine spins, the tubes shake, the whole thing makes lights and noise in a suitably scary fashion, and the end result of all that sound and fury is a small glass vial, which you pocket."; }; rtrue; default: "A pleasant computerized voice says. ~That is an unnecessary ingredient. Please try again."; }; Take, Push, Pull : "You doubt you'd be able to budge it."; ], has static; Object bench "bench" Lab with name "bench", adjective "long" "wood", description "It's a wooden bench, much like the one you knocked together for ninth grade shop class.", initial "Next to the huge machine is a small wooden bench.", before[; Push, Pull, Take: "Its fixed to the floor somehow.";], has static supporter; Object control_gizmo "control box" bench with name "gizmo" "control" "box" "remote", article "a", description "Judging from the massive wire connecting this to the Alchemotron, you'd wager this was the control panel. It has three buttons on it : an indigo one, a peach one, and a maroon one.", has supporter; Object indigo_button "button" control_gizmo with name "button" "indigo", article "an", adjective "blue" "first", description "An indigo button labeled ~growth~.", before[; Push: Alchemotron5000.state=1; "You push the button. ~Click~.";], has scenery; Object peach_button "button" control_gizmo with name "button" "peach", article "a", adjective "second", description "An peach button labeled ~bat~.", before[; Push: Alchemotron5000.state=2; "You push the button. ~Click~.";], has scenery; Object maroon_button "button" control_gizmo with name "button" "maroon", article "a", adjective "red" "third", description "An maroon button labeled ~sleep~.", before[; Push: if (Alchemotron5000.state >=3) "Better not. Dont want to risk resetting the machine"; Alchemotron5000.state=3; "You push the button. ~Click~.";], has scenery; Object page1 "page from an Alchemy book" bench with name "page" "vellum", article "a", adjective "soft" "first", description "A soft page of vellum, neatly razored out of a book.", before[; Read :"The page is filled with cramped, spidery handwriting. Well, except in the margins,where you recoginze your uncle's small, compulisvley neat handwriting. As far as you can make out, a dash of manure, and something else that makes things grow (here, your Uncle has a scribbled reference to Viagra?) added to the potion stock already in the Alchemotron will be all that's necessary to produce a potion to make things grow. In addition, something with the leathery consistency of a bat's wing and a feather will be enough to make a potion to turn someone into a bat, and a diamond, wine, sleep medicine and a pwagana fruit (which according to your Uncle's notes has been extinct since 1800) will make a potion to put someone to sleep till kissed by their true love."; ], has legible; Object portal "portal" Lab with name "portal" "vortex" "energy" "wall", adjective "multicolored", initial "A swirling portal of energy hisses and crackles here.", description[; print "A swirling portal of multicolored energy is embedded in the "; if (location ==Lab) "north wall."; "south wall."; ], door_to [; if (location==Lab) return Cellar; return Lab;], door_dir [; if (location==Lab) return n_to; return s_to;], found_in Lab Cellar, has static door openable; Object grafitti "grafitti" Lab with name "grafitti" "writing" "paint", article "some", adjective "scrawled", initial "Some curious grafitti is scrawled on the back wall.", description "It appears to be the number 1750 and an arrow pointing to the portal.", before[; Read: <>; ], has legible static; !--------------------------------------------------------------------- ! Back in the Past !--------------------------------------------------------------------- Object Cellar "Wine Cellar" with description "This seems to be the cellar of the museum. Well, not so much the museum, but the of the chateau that became the museum. Judging from the construction, and the roughness (and emptiness) of the wine racks, you'd guess you were back in 1750, when the chateau was new. You can go back to the present to the south or up to the kitchen.", s_to Lab, u_to First_Floor; Object racks "wine racks" Cellar with name "rack" "racks", article "many", description "Many wine racks line the cellar here. Too bad most of them are empty.", has scenery; Object wine "bottle of wine" Cellar with name "wine" "bottle" "glass", article "a", adjective "dusty" "green", description "A dusty green glass bottle full of what you assume is wine.", initial "A single dusty bottle is on an otherwise empty wine rack.", before[; Open, Drink: "You really consider yourself more of the wine-cooler type."; ]; Object First_Floor "Chateau Kitchen" with description "A simple kitchen with an old-fashioned fireplace. There are a few simple pots and pans hung along the walls. A hallway leads east, a small door to the west leads outside, and stairs lead down to the cellar you came from.", e_to First_Hall, w_to Outside, d_to Cellar, has light; Object past_scenery "scenery" First_Floor with name "fireplace" "pots" "pans", description "Just like your apartment. Well, except for the honkin huge fireplace.", before[; Take: "Better not. Don't want anyone to notice you were here.";], has scenery; Object dumbwaiter "dumbwaiter" First_Floor with name "dumbwaiter", description "In the north wall, there is a small dumbwaiter. This rough elevator is used for delivering food to the second floor. Its about a foot across.", Before[; Enter: "It wouldn't hold your weight. Besides, it'd be a tad noticeable."; Receive : if ((noun ~= note_1) && (noun ~=note_2) && (noun ~=sleep_vial) ) "No, that would raise too many suspicions."; if (noun == note_1) { give note_1 delivered; move noun to dumbwaiter; "You slip the note onto the dumbwaiter. Success! You can't wait to get back to the present and read the diary again."; }; if (noun == note_2) { if (sleep_vial has general) { move moonbeam to attic; give note_2 delivered; move noun to dumbwaiter; "You put the vial on the dumbwaiter. Now to go back to the present and meet Gwen for the first time."; }; give note_2 delivered; move moonbeam to Attic; move noun to dumbwaiter; "You slip the note onto the dumbwaiter. Halfway there! Just give her the vial she mentions in the note, and you'll have won your love."; } if (noun == sleep_vial) { if (note_2 has delivered) {move moonbeam to Attic; give sleep_vial general; move noun to dumbwaiter; "You put the vial on the dumbwaiter. Now to go back to the present and meet Gwen for the first time."; }; give sleep_vial general; move noun to dumbwaiter; "Well the vial is there, but you better put the note there as well. You wouldn't want to cause a paradox."; } ], has container static openable open; Object seed "small seed" dumbwaiter with name "seed" "pwagana" "thorns", article "a", adjective "small" "dark", description "A small dark seed, with thorns sprouting from it at odd intervals. You think this might be a pwagana seed, it looks like the picture you saw once."; Object First_Hall "Hallway" with description "A small hallway off the kitchen. Hardwood floor, simple, unadorned, walls. You can return to the kitchen to the west, explore the rest of the house to the north, or go up a small flight of stairs.", w_to First_Floor, u_to, n_to "You decide not to risk exploring more of the house. You don't want to get caught and lose any chance of helping Gwen.", has light; Object Outside "The front lawn" with description "Wow. As far as the eye can see in front of you , nothing but grass. There's a forest off to your west, and off to the northeast, there's some sort of stables. The house is back to the east", w_to Forest, e_to First_Floor, ne_to Stables, s_to Outside_2, has light; Object Outside_2 "The front lawn" with description "A sea of green stretching off in every direction, as far as the eye can see. Well, ok, not in every direction- you can go back towards the house to the north, and there's a cemetary to the west.", w_to Cemetary_1750, n_to Outside, has light; Object Cemetary_1750 "A small family cemetary" with description "Several small graves dot the landscape here, and there is a large tomb nearly finished. It actually doesn't look all that different from it does in your time. You can go back to the lawn to the east.", e_to Outside_2, has light; Object graves "graves" Cemetary_1750 with name "grave" "graves", description "You bow your head for a moment over the grave. How sad.", has scenery; Object past_tomb "tomb" Cemetary_1750 with name "tomb" "rubble" "building" "supplies" "pile", adjective "unfinished", description "It gives you the shivers to think that this pile of rubble and building supplies will be Gwen's tomb in your time.", has scenery; Object Stables "Family Stables" with description "A single stall, crudley constructed out of roughly hewn logs stands here. It looks intended to house a single horse. There's a small exercise circle to the south, and you can go back to the lawn in front of the house to the west.", sw_to Outside, s_to Exercise_Area, has light; Object manure "pile of manure" Stables with name "manure" "pile", adjective "high" "stinking", initial "A pile of manure leans against the back wall.", description "Manure is piled high against the back wall here.", before[; Take: if (manure_pile notin nothing) "Once was enough, thanks."; move manure_pile to player; "Gritting your teeth, you scoop a small portion of the manure pile up."; ]; Object manure_pile "bit of manure" with name "manure" "bit", adjective "stinking" "brown", description "A bit of manure from the stables.", before[; Smell: "You'd really rather not."; ]; Object Exercise_Area "Exercise Area" with description "This is where they exercise the horses, presumably.", n_to Stables; Object Exercise_Circle "circle of earth" Exercise_Area with name "circle" "earth", description "A rough circle of earth is all that is in this spot, presumably to exercise the horse.", initial "A rough circle of earth is all that is in this spot.", before[; Search, Examine: "It's fairly loose earth."; Receive: if ((noun ~=seed) && (noun ~=growth_vial)) "Not much point burying that. Sorry."; if ((noun == seed) && (growth_vial notin nothing)) { remove seed; "You plant the seed in the loose earth, digging a small hole and tamping it over. It's a good start, but you can't help feeling there's something more you can do to ensure the tree grows."; } if (noun == growth_vial && seed notin nothing) {remove growth_vial; "You pour the growth potion on the ground. Now, if you only had something to plant."; } move sapling to Exercise_Circle; remove noun; move fruit_tree to Topiary; move fruit to Topiary; Topiary.description= "A few tables and chairs are scattered about the lawn here. Arranged in a neat circle around an extremely large tree are bushes clippes into the shape of animals."; "Some instinct tells you you need to step back after you add the final ingredient. There is a rumble of thunder, the earth shakes, and a before your eyes a young sapling sprouts, grows for a few moments at a frantic pace, and then stabilizes."; ], has static; Object sapling "sapling" with name "sapling" "tree" "pwanga" "branches", adjective "young" "slender", initial "A young sapling spreads its eager branches to the sky here.", description "A young slender tree has sprouted in the middle of the circle, spreading its eager branches towards the sky. Too bad it won't bear fruit for another hundred years or so.", before[; Take, Attack: "Seeing all the trees around here has given you new respect for nature. You don't want to do anything to hurt the tree."; ], has static; Object Forest "Forest" with description "In your time, all this has been cut down and built over, so it takes your breath away to see so many trees, branches locked together to form a soothing canopy overhead. You can depart this vale of trangulity to the east.", e_to Outside, has light; Object maple_tree "Maple Tree" Forest with name "tree" "maple" "bark" "branches", article "a", adjective "smooth", initial "A young maple tree stands at the center of the clearing here.", description "This is a baby maple tree, with smooth bark and few branches. On one of the branches you can see a nest.", before[; Climb: "The branches are too high, and you can't get a grip on the smooth bark."; Take: "Not even if you had a spare five hours and a backhoe."; ], has static; Object nest "bird's nest" Forest with name "nest" "sticks" "stick" "twigs" "twig", article "a", initial "In the tree, there is a nest.", description "A simple bird's nest, made out of sticks and twigs. In the nest is a some sort of bird. A magpie, you think.", has static; Object magpie "magpie" Forest with name "bird" "magpie", article "a", description "A ragged bird sits in her nest here, carefully picking at her feathers. She appears to be molting.", life[; Show, Give: if (noun ~=gold_key) "The magpie chitters at you, apparently uninterested."; move feather to Forest; remove gold_key; nest.description = "A simple nest made of sticks and twigs, and a single gold key."; "The magpie, attracted by the gold key, swoops down and snatches it from your hand, shedding a feather in the process."; default: "The magpie chitters at you, apparently uninterested."; ], has animate scenery; Object feather "magpie feather" with name "feather", article "a", adjective "single", description "A single feather, dropped by a lone magpie."; [Initialise; TitlePage(); move backpack to player; move hiss_tape to panel_slot; give telescope general; location=Before_gates; "^^^^^ She dumped you. After all that you've been through; after literally going to Hell for her, after that horrid business with Dr. N'Gen N. Ani, Gwyneth dumped you. And even worse, she dumped you for some musclebound moron she met at the gym. Frankly, you don't know what you would've done if you hadn't gotten that letter from your Uncle Steve offering you the job of looking after his hotel nee museum while he goes on vacation. It was lonely and isolated and seemed the perfect place to heal a broken heart. So you stuffed the letter and a few supplies in your backpack, and here you are..."; ]; Object backpack "backpack" with description "Your trusty battered black backpack. It's served you well.", name "backpack" "knapsack", adjective "black" "battered", article "your", has container openable; Object ->letter "letter from Uncle Steve" with name "letter" "page", article "a", description "A letter from Uncle Steve, taking up about half of a sheet of paper. You vaguely recognize the handwriting from years of (often late) birthday and Christmas cards.", before[; Read: "The letter is short, and to the point: ~Dear Nephew:^ Through means of my own, I have discovered your present situation. As it happens, I am called away suddenly on business, and need someone to museum sit for a few days. Some time away may give you some perspective on your situation. And always remember, that there is no problem on Earth that cannot be solved by applying your five senses, your ten fingers and your brain.~^^The letter is signed simply ~Steve~.";], has legible; [TitlePage i; @erase_window -1; print "^^^^^^^^^^^^^"; i = 0->33; if (i==0) i=80; i=(i-50)/2; style bold; font off; spaces(i); print " HAPPY EVER AFTER^"; style roman; print "^^"; spaces(i); print" [Please press SPACE to begin.]^"; font on; box "~Now, what were those words you use?~" "~Ah yes - Once Upon a Time. . .~" "" "The Countess to the Brothers Grimm -~Ever After~"; do { @read_char 1 0 0 i; } until (i==32 or 10 or 13); @erase_window -1; ]; [ReadSub;<>; ]; [XyzzySub; "Though you're not entirely sure why, merely saying that brings a smile to your face.";]; [PicnicSub; "You dont have the necessary ingredients. Maybe after you find a jug (not a bottle) of wine and a loaf of bread.";]; [ShakeSub; if (noun has animate) "That's not very nice."; "You shake it. Nothing overly interesting happens.";]; ![PourSub; <>;]; [CleanSub; "You don't even clean your own house, you've no interest in cleaning someone elses.";]; Extend "turn" * noun "to" number ->Turn; Extend "read" first * legible ->Read; Verb "xyzzy" * ->Xyzzy; Verb "picnic" * ->Picnic; Verb "shake" * noun ->Shake; !Verb "clean" * noun ->Clean; !Verb "pour" ! *noun ->Pour; ! !Verb "plant" * noun ->Insert; ! !Extend "plant" *noun "in" noun ->Insert; ! !Extend "pour" *noun "in" noun ->Pour; !Extend "pour" *noun "on" noun ->Pour;