Serial "000818"; Release 0; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Got Toast? !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 2000.??.?? 0101 Initial attempt to release. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !fill out the version information ... Constant Story "Got Toast?^"; Constant Headline "^Copyright (c) 2000: Jim Fisher^Created for the 2000 Speed-IF contest (Toaster Theme)^"; Constant MAX_SCORE 100; Constant NUMBER_TASKS 1; Constant OBJECT_SCORE 5; Array task_scores -> 5; Include "Parser"; Constant USEOBJ_NUMBERED; Constant USEOBJ_STANDARDDOOR; Constant USEOBJ_KNOWLEDGE; Constant USEOBJ_DISPENSOR; Include ">JimsExtensions.h"; Include "VerbLib"; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Attributes !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Attribute flying; Attribute pluggable; Attribute mounted; attribute mountable; attribute bread; attribute biggerthanbreadbox; attribute fooditem; attribute stoned; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Object Templates !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Class LuminousSalt(100) with name "luminous" "salt" "glowing" , short_name "handful of luminous salt" , plural "handfuls of luminous salt" , plural_many "several" , many_number 2 , description "The salt glows very dimly giving off no usable light." ; class powercord with name "power" "electric" "cord" "short" "black" "plug" , pluggedinto null , description [; print "@@9This is a short, black power cord that is attached to ",(the) parent(self),"."; if(self.pluggedinto~=null) print" It is plugged into ",(the)self.pluggedinto,"."; return; ] , plug [o; if(self.pluggedinto==o) print_ret (The)self," is already plugged into ",(the)o,"."; if(self.pluggedinto~=null) { print "(unplugging it from ",(the)self.pluggedinto," first)"; ; } self.pluggedinto=o; print_ret "^You plug ",(the)self," into ",(the)o,"."; ] , unplug [; print "^With momentary resistance, ",(the)self," pulls away from ",(the)self.pluggedinto,"."; self.pluggedinto=null; ] , before [; insert: self.plug(second); return true; ] has static scenery ; class outlet(3) with name "outlet" "power" "electric" "electrical" "wall" , short_name "electrical outlet" has pluggable static scenery on ; class breadtoast(5) with name "bread" "toast" "piece" , toastness 0 , bethname "toast" , plural [; if(self.toastness==0) print "pieces of bread"; else { print "pieces of toast ("; self.howtoasted(); print ")"; } ] , short_name [; if(self.toastness==0) print "piece of bread"; else { print "piece of toast ("; self.howtoasted(); print ")"; } return true; ] , howtoasted [; switch(self.toastness) { 1 : print "lightly toasted"; 2 : print "toasted to perfection"; 3 : print "dark brown"; 4 : print "burnt black"; } ] , before [; Take: if(self in Toaster && ToasterLever.isdown==true) print_ret (The)self," is way down in the Toaster. You can't reach it."; ] has bread edible ; class dial with name "dial" , setting 0 , printsetting [set; switch(set) { 0:print "raw"; 1:print "light"; 2:print "medium"; 3:print "dark"; 4:print "black"; } ] , description [t; print "The dial has five settings labled"; for(t=0:t<5:t++) { if(t==4) print" and"; print" ~"; self.printsetting(t); if(t==4) print"."; else print ","; print "~"; } print " The dial is currently turned to the ~"; self.printsetting(self.setting); print "~ setting."; ] has static scenery ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Variables !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! array sites-->ApartmentLivingRoom CaveKitchen SchoolClassroom MaxxiosBasement WizardsLaboratory; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! World map !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Realm Zero: Aparment !----------------------------------------------------------------------------- Object ApartmentKitchen "Your Kitchen" with description "@@9This is your kitchen. Like most kitchens it has a refrigerator and counters. A small electrical outlet is centered in the wall just above the counter tops. You also have a table centered neatly in this room." , realm 0 , w_to ApartmentLivingRoom has light ; object refrigerator "refrigerator" ApartmentKitchen with name "refrigerator" "fridge" , description "It is a a 1970's vintage refrigerator. Like all fridges of that era, it is lime green." has static container openable ~open scenery ; object ApartmentKitchenCounters "counters" ApartmentKitchen with name "counter" "counters" has static supporter scenery ; Object ApartmentLivingRoom "Your Living Room" with description "@@9You feel very much at home in this living room (possibly because this is the living room of your home). You have a knot in your stomach when you think about Beth, waiting at your kitchen table (to the east) for the breakfast you promised her but cannot deliver. You want to hide in your closet rather than admit this to her, but you know that she'll find you. The mysterious knocking sound that comes from the closet will give you up in moments. You have a passing desire to run through the southern door into your bedroom and bury your head under your pillow, but dismiss this idea knowing that you do at least have one thing in that kitchen of yours to cook for breakfast. " , realm 0 , e_to ApartmentKitchen , s_to ApartmentBedroomDoor , n_to "@@9You consider leaving for a moment and going to the store to buy Beth breakfast. Then you think better of. You would feel pretty foolish going to the grocery store considering you have no money. You vaguely remember having some bread somewhere. Although Toast wouldn't nearly be the breakfast that you promised her, it would still be better that nothing." has light ; Object ApartmentCloset "closet" ApartmentLivingRoom with name "closet" , each_turn [; if(self hasnt open && broom in self) { if(random(10)==1) print_ret"^You hear a slight bumping noise coming from the closet."; } ] has container openable ~open static scenery ; Object ApartmentBedroomDoor "bedroom door" class StandardDoor with name "door" "bedroom" , found_in ApartmentBedroom ApartmentLivingRoom has scenery open ; Object ApartmentBedroom "Your Bedroom" with description "@@9This is your bedroom. That is, it is the room you keep your bed in. Once, for a passing moment, you considered keeping your bed in the kitchen, but being a social sheep, you decided to opt for conformity." , realm 0 , n_to ApartmentBedroomDoor , w_to ApartmentBathroomDoor has light ; object ApartmentBed "bed" ApartmentBedroom with name "bed" , article 'your' has supporter enterable static scenery ; Object ApartmentBathroomDoor "bathroom door" class StandardDoor with name "door" "bathroom" , found_in ApartmentBedroom ApartmentBathroom has scenery open ; Object ApartmentBathroom "Your Bathroom" with description "@@9This is your bathroom" , realm 0 , e_to ApartmentBathroomDoor has light ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Realm One: Medusa's Caverns !----------------------------------------------------------------------------- Object CaveKitchen "Cavern Kitchen" with description "@@9Simply put, this is a cave. To leave the description there, however, would be to do the room an injustice. As you look around, it is obvious to you that it is a beautifully decorated place used to prepare food. In fact, the décor is so elegantly done that you feel slightly embarrassed thinking about your girlfriend sitting in your not-so-elegantly decorated kitchen. There is a passageway leading north." , initial [; print "@@9The first thing you notice, as you appear in this new location, is a woman in an apron. Her back is turned toward you and she is setting a bowl of hot, steaming, scrambled eggs on a stone counter top. The most startling thing about the woman is the top of her head. Where one would expect hair, instead is a writhing nest of living snakes, hissing and snapping at one another. ~Cy, sweetheart!~ The snake-woman, who you cannot help but think of as Medusa from Greek mythology, has a lovely, soft voice. She appears to be calling to someone in another room to the north. ~Breakfast is almost ready!~^@@9~I'm coming Medie, love!~ is the harsh, guttural response."; self.initial=null; ] , realm 1 , n_to CaveLivingRoom has light ; object CaveKitchenCounters "stone counters" CaveKitchen with name "counter" "counters" "stone" , description "The counters sparkle with cleanliness, quite unlike what you would expect from a stone surface." has static supporter scenery ; Object CaveLivingRoom "Cavern Living Room" with description "@@9This section of the cave appears to be fashioned into some sort of living room. There is a very large couch and a coffee table here. Two exits leave this room. One leads north, the other south. " , initial [; print "@@9@@9You step out of the kitchen into a plainly decorated cavern room. There is a huge axe hanging on the wall. There is a huge man-like creature, with only one eye centered on his face, sitting on what appears to be a sofa. A look of fear comes across the creature's face when he sees you and for a fleeting moment you think that he is afraid of you for some reason. ~Medie? Sweetheart?~ Hollers the Cyclops into the kitchen. When there is no answer, a look of anger comes across the creature's face. You dismiss your initial impression that he was afraid of you as ~Cy~ stands up. He is easily nine feet tall and grabs the massive axe off of the wall with careless ease. ~What have you done to her?~ he screams as he prepares himself to lunge at you."; self.initial=null; ] , s_to CaveKitchen , n_to CaveTunnelSouth , realm 1 has light ; object CaveSofa "sofa" CaveLivingRoom with name "couch" "sofa" has static supporter scenery ; Object CaveTunnelSouth "Cave Tunnel (South of Chasm)" with description "@@9This is a short, north-south cavern tunnel. Light from the medusa and the cyclop's living room trickles in here barely giving enough illumination to see that passage to the north is blocked by a large chasm. On the other side of the chasm you can see that the path resumes. Obviously huge cyclops had no problem steping over this chasm, but it is obviously too far for you to jump." , s_to CaveLivingRoom , realm 1 , n_to [; if(broom has flying) return CaveOverChasm; else print_ret "The chasm, which stretches far down into the darkness, blocks travel in that direction."; ] has light ; Object CaveTunnelNorth "Cave Tunnel (North of Chasm)" with description "@@9This is a short, north-south cavern tunnel. The walls all seem to give off a dim glowing. To the south is a deep, dark chasm which block travel in that direction. The tunnel continues in a northwardly direction." , realm 1 , n_to CaveSaltBeds , s_to [; if(broom has flying) return CaveOverChasm; else print_ret "The chasm, which stretches far down into the darkness, blocks travel in that direction."; ] has light ; Object CaveSaltBeds "Luminous Salt Beds" with description "@@9Here, the north-south tunnel you have been following ends at a huge boulder. From the worn path, you take it that the boulder is being used as some huge, clumsy door to this cave. Obviously that cyclops and medusa valued their privacy. A small vein of glowing crystal has been unearthed in this section of the cave." , s_to CaveTunnelNorth , n_to "A huge boulder blocks travel in that direction." , realm 1 has light ; Object Boulder "boulder" CaveSaltBeds with name "boulder" "rock" , description "The boulder blocks the cavern entrance/exit to the north." has static scenery ; Object SaltVein "luminous salt vein" CaveSaltBeds class Dispensor with name "vein" , description "@@9This appears to be an unearthed vien of rock salt. In mass, the dimly glowing salt gives illumination to this section of the cave, but you doubt that anything but a significant amount would shed light elsewhere." , item LuminousSalt has static scenery open ; object CaveChasmBottom "Bottom of Chasm" with description "@@9What appeared to be a chasm from above is now shown to be, in fact, only a pit. Sheer walls of rock, too steep to climb, surround you in all directions. On one of the walls is a small damp hole. Small crackling pulses of electricity burst from the hole." , d_to "You are already down as far as you can go." , cant_go "The walls are far too steep to climb and they surround you on all sides." , realm 1 ; object electrichole "hole" CaveChasmBottom with name "power" "electric" "electrical" "hole" "worm" "worms" , short_name "electrical hole" , description "As you look at the hole, a tiny spark of what appears to be static electricity shoots out. Deep inside the hole appears to be several tiny worms. The worms alternate releasing momentary electrical charges. On the whole, the worms appear to produce a constant electrical charge." has pluggable static scenery on ; object CaveOverChasm "Over Chasm" with description "@@9The cavern tunnel, running north and south, is broken by this chasm (over which you are floating). Far below you can see only the darkness which extends down into the depths of the chasm." , s_to CaveTunnelSouth , n_to CaveTunnelNorth , d_to "You think hard about the broom going down, but to no avail. When the broom is up, it is up. When the broom is down, it is down. There doesn't appear to be anything in between." , realm 1 has light ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Realm Two: Elementary School !----------------------------------------------------------------------------- Object SchoolClassroom "Classroom" with description "@@9This is a nearly empty school classroom. Someone attempted to board up all of the windows here, but several gaps in the patchwork show the night sky clearly. In the center of the room sits a lone student desk. The door, which would lead east, has been removed from its hinges. In the corner is a small electrical outlet." , initial [n count; if(schoolfuse hasnt on) { count=0; n=parent(flashlight); while(n~=nothing) { if(n provides realm && n.realm==2) count++; n=parent(n); } if(count==0) CantWin(); } ] , realm 2 , e_to SchoolHallway has light ; object SchoolDesk "small childrens desk" SchoolClassroom with name "desk" , description "The desk is covered in graffiti." , before [; rub: print_ret "After much effort, you step back to review your work. The desk looks no cleaner."; ] has static supporter scenery ; object Graffiti "graffiti" SchoolDesk with name "graffiti" "writings" , description [; print "^@@9The desk, showing the affects of years of kids and classes, is almost completely covered in graffiti. You can make out clear scribbles like ~Don't be a Wade!~ and ~JF+LM4EVR~ by nameless authors.^@@9Other older scribbles can only be made out in part. For instance, there is a long poem entitled ~The Yarn of Ciron Deeddoog~ which was apparently written by a child who had the misfortune of being named ~Pinky Kim.~ The poem begins as:"; center("^^~Ciron Deeddoog the Great! That's who you are,^~famous throughout the land.^~A formidable Vikin..~"); print "^^but other newer graffiti smothers out the rest of the writing.^@@9One of the most recent scribbles is a picture, apparently a self-portrait of a child who called himself ~Mr. Stud-Muffin: (the coolest kid in locker 531!).~ The picture is of a boy wearing sunglasses."; ] , before [; rub: <>; ] has static scenery ; Object SchoolBasement "school basement" with description "@@9This is the basement of the school. On the wall is a small fuse box with a single switch labled ~PRIMARY POWER CUTOFF~. There are stairs here that lead upwards." , realm 2 , u_to SchoolStairs ; object SchoolFuse "fuse box" SchoolBasement with name "fuse" "box" "cutoff" "power" , before[o; SwitchOn:if(self has on) print_ret "The fuse box is already on."; print "With a resounding sound of engagment, the lights come on. You can hear the hum of the ventalation system come on too. "; objectloop(o ofclass(outlet) && o hasnt on) give o on; objectloop(o provides realm && o.realm==2 && o hasnt light) give o light; SwitchOff: if(self hasnt on) print_ret "The fuse box is already off."; print "It isn't that kind of fuse. Now that it is in the ~ON~ position, it will take some kind of power fluctuation to trip it again."; ] has switchable static scenery ; Object SchoolStairs "stairs" with description "@@9This is a small landing on the school staircase. To the south you can see the main hallway of this school. The stairs continue both up and down." , realm 2 , s_to SchoolHallway , u_to SchoolCafeteria , d_to SchoolBasement ; Object SchoolHallway "Soixxam Elementary School (Hallway)" with description "@@9This is an exceptionally long school hallway. There are hundreds of lockers that line all of the walls, top and bottom. They are only separated by the sprinkling of a few dozen of classroom doors. All of the doors are closed, except for one that is conspicuously missing from its hinges to the west. It is very dark here, and only the dim light filtering through the missing door makes it possible to see here. On the wall is mounted a sign." , realm 2 , w_to SchoolClassRoom , e_to "That direction is blocked with lines of lockers and closed, locked classroom doors." , s_to "That direction is blocked by a closed door. On the front of this particular door is painted the words are printed the words: ~This way to the: Attendance Office, Gymnasium, Teacher's lounge, and School Exit.~" , n_to SchoolStairs has light ; Object sign "sign" SchoolHallway with name "sign" , description "@@9The sign points to the opposite ends of the hallway (north and south). Next to the northern arrow is printed ~Stairs, Cafeteria, and Janitor's Quarters.~ Next to the southern arrow is printed ~Attendance Office, Gymnasium, Teachers lounge, and Exit.~" has static scenery ; Object halldoors "doors" SchoolHallway with name 'door' 'doors' , description "@@9All the doors in this hall appear to be locked." has static scenery openable door ~open locked ; array lockerstate table 1000; object insidelocker; !to hide the contents of closes lockers object SchoolLockers "lockers" SchoolHallway class numbered_object with name "lockers" "locker" , singular_name "locker" , state lockerstate , inside insidelocker , description [; print "This is a long line of lockers. "; self.numbered_description(); ] ; Object SchoolCafeteria "Cafeteria" with description "@@9This is the school cafeteria. You imagine that when the school is not in recess, that this room if filled with tables for the students to eat at. Indeed, on the floor there are stains indicating where that tables were positioned. Currently, however, the room is empty. You can see the kitchen to the west and a set of stairs lead down." , d_to SchoolStairs , w_to SchoolKitchen , realm 2 ; Object SchoolKitchen "Kitchen" with description "@@9The kitchen sure is empty. You are certain that during the school year, this place is stocked full of food. But then, this isn't the school year. Cabinets lie under neath the counter tops." , e_to SchoolCafeteria , realm 2 ; object SchoolKitchenCounters "counters" SchoolKitchen with name "counter" "counters" has static supporter scenery ; object SchoolKitchenCabinet "cabinet" SchoolKitchen with name "cabinet" "cabinets" has static container scenery openable ~open ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Realm Three: !----------------------------------------------------------------------------- Object MaxxiosBasement "Maxxio's Pizza Palace/Closed Garage: Basement" with description "@@9This is obviously the basement of a closed down garage. Littering the floor in every direction are car parts in various states of dismantlement. There also seem to be signs that someone may have lived here at one time as various pieces of automobiles are joined together in inventive ways to make other objects: A fender is pulled up to an elevated hood in such a way that they could only have been used as a table and chair; the cab of an old taxi sits in the corner of the garage, the inside of which is covered in ice. It was obviously somehow fashioned into a refrigerator. In the center of the room is what once must have been a huge machine, but bricks apparently fell from the ceiling onto the machine crushing it. There are several dark electrical burns on the machine where there was probably once a cord that plugged into the wall outlet, but the cord is now gone. Far above, you can see from where the bricks must have fallen, but they have been replaced recently. Beyond the bricks you can hear voices and people moving about, but as you look around you realize that there are no exits what so ever in this basement. There is more dust, dirt and grime than you have ever seen in your entire life and you cannot quite shake the feeling that this room once served as a prison." , realm 3 , cant_go "There are no exits from this room, just brick walls in every direction." has light ; object machine "large machine" MaxxiosBasement with name "big" "large" "gigantic" "huge" "machine" "box" , description "@@9This is a huge machine which takes up most of the room." has static supporter scenery ; object cab "yellow taxicab/refrigerator" MaxxiosBasement with name "yellow" "taxi" "refrigerator" "fridge" "cab" "taxicab" , description "This was obviously once a taxicab. The windows are all fogged up, but you can easily tell that inside the door it is very cold." , after [; enter : print_ret "Most interior of the cab is now taken up by a bunch of car parts which are all working together to make the cab cold. There simply is not enough room for a person."; ] has container openable ~open static scenery enterable ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Realm Four: !----------------------------------------------------------------------------- Object WizardsLaboratory "Wizards Laboratory" with description "@@9This is obviously a laboratory for the man-in-blue. There are various knick-knacks on the work bench, but the most noticeable of all the items is the picture frame with a dial that is attached to the wall." , initial [; print "@@9You appear in a strange room of numerous gadgets and knick-knacks. In front of you is an old man with a long white beard, dressed in blue robes. Although he is obviously surprised by your appearance, he reacts immediately. He picks up a small, rubbery, black ball off of his workbench, and throws it at you. The ball hits you squarely in the face. Although you expect it to bounce off, it instead liquefies and wraps itself around your head. You step back, disoriented. After a second you realize that the black, sticky goo covers most of your head, but one eye is left untouched. You open that one eye and look around.^@@9The man-in-blue is scrutinizing you. ~Hmmm,~ he says. ~I thought you were my arch nemesis Wade for a moment, but you don't even know who he is do you?~ He contemplates you for a moment, and you have a feeling that he is looking at more than just your physical characteristics. Then he seems to make a decision in his mind. ~No, I can tell that you are not the sort that would deal with him. You're here for a different reason. Well, I was just making breakfast and won't interfere. Be about your business,~ he says. Then, ~Oh yes! It is just as well that you are not Wade. That blinder only covered one of your eyes. It must be defective. They generally fall off on their own in a couple of weeks but...~ With a flick of his wrist the black goo turns back into a ball and falls to the floor.@@9~Now,~ he says turning back to his work bench and consulting a piece of paper. ~Darn! I'm fresh out of that last item. I should have checked the ingredients before I started. Well, I'll have to go and get some.~ Then he turns to you again and says, ~I can see that you'll be gone when I return. Good luck with your girlfriend's breakfast!~ Then he vanishes in a cloud of smoke.^"; self.initial=null; ] , realm 4 has light ; object WorkBench "work bench" WizardsLaboratory with name "counter" "bench" "work" has static supporter scenery ; Object FrameDial "dialable picture frame" WizardsLaboratory class dial with name "picture" "dialable" "frame" "dial" , setting 4 , before [; DialTo: print "The image in the frame blurs in and out as you fiddle with the dial.^"; return false; ] , add_to_scope [; switch(self.setting) { 0: AddToScope(ApartmentCloset); 1: AddToScope(ElectricHole); 2: AddToScope(SchoolLockers); 3: AddToScope(cab); 4: return; } ] , description [; print "A little on the odd side, this frame resembles a picture frame with a small dial affixed to it. "; self.dial::description(); switch(self.setting) { 0:print " In the frame you can see your apartment living room!"; 1:print " In the frame looks to be the bottom of a rock pit. In the wall of the rock pit is small hole which occasionally spits out electricity."; 2:print " In the frame you can see a long line of lockers."; 3:print " In the frame you can see an old broken down taxi cab. The windows of the cab are frosted over."; 4:print " The frame contains a mirror."; } ] has static scenery ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Game Objects !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !--The whole purpose of this game.... The TOASTER!---------------------------------------------- Object Toaster "shiny toaster" ApartmentKitchenCounters with name "toaster" "shiny" , number 0 , description [; print "@@9This shiny, metal toaster is somewhat outdated by today's toaster oven standard. It has a single slot for bread and the usual lever to start the toasting process. On the front is a dial to indicate how toasty you want your bread to be and from the back dangles a short electric cord. As you gaze at the toaster, you can see yourself in the reflection."; if(ToasterCord.pluggedinto~=null) print " The toaster is plugged into ",(the) ToasterCord.pluggedinto,"."; if(Locale(self, "In the toaster you can see")==true) print "."; ] , article "your" , before [; receive: if(noun hasnt bread) print_ret "Silly rabbit! Only three things can go in a toaster: bread, Eggos, and Pop-Tarts. Anything else is heresy."; plug: ; return true; ] , react_before [; go: if(ToasterCord.pluggedinto~=null && Toaster in player) { ToasterCord.unplug(); return false; } ] has container open biggerthanbreadbox ; Object ToasterDial "toaster dial" Toaster class dial with name "toaster" "dial" , invent [; return true; ] ; Object ToasterSlot "slot" Toaster with name "slot" , description [; if(Locale(parent(self), "In the toaster you can see")==true) print "."; else print "The toaster is empty."; return true; ] , before [; receive: ; return true; ] , invent [; return true; ] has container open static scenery ; Object ToasterCord "toaster cord" Toaster class powercord with before [; unplug: if(ToasterLever.isdown==true) { stoptimer(ToasterLever); ToasterLever.isdown=false; print "With a half-hearted (and somewhat disappointing) ~click,~ the lever pops back up."; return false; } ] , invent [; return true; ] ; Object ToasterLever "lever" Toaster with name "lever" , isdown false , before [o n; push: if(self.isdown==true) print_ret (The) self ," is already down."; objectloop(o in toaster && o has bread) n=o; !find the piece of bread in the toaster if(n==nothing || location.realm==ToasterDial.setting || ToasterCord.pluggedinto==null || ToasterCord.pluggedinto hasnt on) { print "You try to push the lever down, but it does not catch and pops immediately back up."; if(ToasterCord.pluggedinto==null) print_ret " You ponder for a moment and wonder if these ancient toasters needed electricity just like the modern toaster ovens do."; if(ToasterCord.pluggedinto hasnt on) print_ret " You frown for a moment, pondering the reliability of the outlet the toaster is plugged into."; if(n==nothing) print_ret " Hmmm.. maybe if you put some bread into the toaster?"; print_ret " Silly toaster! Those little sensors on the inside that tell how toasted the bread is must be causing this. Maybe if you set the dial to something else?"; } else { if(n.toastness==0) n.toastness=1; self.isdown=true; starttimer(self,ToasterDial.setting); print "You push the lever down firmly into place and feel a brief jolt of electricity run up your arm. For a moment you feel connected to the toaster in an indescribable way. The toaster warms softly and begins to emanate a soft ticking sound that sounds vaguely like a timer."; } return true; ] , time_left 0 , each_turn [; if(self.isdown==true) print "^tick...^"; ] , time_out [o n; self.isdown=false; if(TestScope(Toaster,player)==true) print "^With a ~click~ the lever pops up. The toast inside flies high into the air, hovers for a moment, then falls."; objectloop(o in toaster && o has bread) n=o; !find the piece of bread in the toaster if(parent(toaster)==player) move n to location; else move n to parent(toaster); if(ToasterDial.setting>n.toastness) n.toastness=ToasterDial.setting; print "^^The world around you bleeds away like melting wax and is replaced by an entirely different world altogether...^^"; PlayerTo(sites-->ToasterDial.setting); if(Toaster notin player) { move Toaster to location; } ToasterCord.pluggedinto=null; ] , invent [; return true; ] has static scenery ; !--End TOASTER definition------------------------------------------------------------------------ Object Broom "broom" ApartmentCloset with name "broom" "broomstick" , description "This old, worn broom was your grandmother's gift to you two years ago. It is an ordinary looking straw broom which doesn't get much use in your carpeted apartment. On the side of the broom is engraved the word ~Ezlwot.~" , number 0 , article "your" , before [; enter: if(self notin player) { print "You must be holding the broom to mount it."; return true; } if(self hasnt mounted) { give self mounted; print_ret "You recall vague, childhood memories as you mount the broom like a stick-horse."; } else print_ret "You are already on the broom."; exit: if(self has mounted) { if(self hasnt flying) { give self ~mounted; print_ret "You get off of the broom."; } else print_ret "While the broom is floating in the air and your feet dangle freely. Dismounting the broom in mid-air is not recommended."; } else print_ret "You are not on the broom."; transfer, give, puton, insert, drop: if(self has mounted) { print "^(dismounting the broom first)^"; ; } ] has mountable biggerthanbreadbox ; Object SunGlasses "pair of dark sunglasses" insidelocker with name "glasses" "sunglasses" "dark" "pair" , number 531 , description "The dark sunglasses are... well, dark." has clothing ; Object BreadBox "breadbox" ApartmentKitchenCounters with name "box" "breadbox" "wooden" , article "your" , description "This is your wooden breadbox. It has served you faithfully as a container for your bread for a number of years." , before [; receive: if(noun has biggerthanbreadbox) print_ret "Yep! That's definately bigger than a breadbox."; ] has container openable ~open ; Object ApartmentKitchenTable "table" ApartmentKitchen with name "table" , article "your" has supporter static scenery ; Object plate "plate" ApartmentKitchenTable with name "plate" , before [count o; letgo, take, remove, insert, transfer: print_ret "As you reach for ",(the)noun,", Beth pushes your hand away playfully. ~Silly!~ she says giggling. ~You can't take that. I haven't even eaten yet!~"; receive: if(noun hasnt fooditem) { print "~Not now, sweetheart,~ says Beth. ~I'm just waiting happiliy for the "; self.foodneeded(); print " that your making me.~ Beth blows you a kiss."; } else { if(noun ofclass breadtoast && noun.toastness==0) { print "~Silly man!~ says Beth. ~You haven't even toasted that bread yet!~"; } else { move noun to plate; count=0; objectloop(o in self && o has fooditem) count++; if(count==5) { score=100; print "~Thank you honey!~ says Beth as you give her the last breakfast item. ~You are so wonderful to me!~ Beth reaches out and gives you long, warm kiss on the mouth. As you watch her eat her breakfast you find yourself wondering what Beth would look like with snakes on her head...^^^"; deadflag=2; return; } print "~Thank you honey,~ says Beth. ~Only "; Beth.foodneeded(); print " left to go.~ Beth sighs happily. "; if(noun ofclass breadtoast && GotAll()==false) CantWin(); else score=score+20; } } return true; ] has supporter static scenery ; object CupOfPowder "cup of powder" WorkBench with name "cup" "powder" , before [; receive: if(noun ofclass(luminoussalt)) { print "@@9A cloud of smoke rises from the cup of powder as you add the salt. It is so thick that your eyes begin to water and for a moment, your vision is obstructed entirely. Yet despite this, the smoke is not altogether unpleasant. It has a somewhat appetizing scent to it. As it clears and your vision is restored, you are able to catch several bright flashes of light, apparently the final stages of a magical reaction. When it is over, the cup of powder (yes, the cup as well as the powder) has been transformed in to a pile of delicious looking pancakes."; remove noun; move pancakes to parent(self); remove self; return true; } else print_ret "You cannot put ",(the)noun," in the cup with the ingredients."; ] ; object Receipe "receipe paper" WorkBench with name "receipe" "paper" , description "The note appears to be a recipe written by hand. It is entitled ~Mortal Pancakes (tastes just like the mortals make 'em)~. The directions to the recipe are as follows: ^^@@9@@9 ~1) grind three dehydrated frog eyes^@@9@@9 2) add two table spoons of dew collected from the leaves of a mint tree^@@9@@9 3) add two drops of hippogriff saliva^@@9@@9 4) add two cups of silver wheat^@@9@@9 5) mix thoroughly and let stand in disposable cup for ten minutes^@@9@@9 6) cast transfiguration spell according to personal preference^@@9@@9 7) add handful of luminous salt crystals~^^@@9Numbes one through six have been marked out." ; Object bacon "strips of bacon" SchoolKitchenCabinet with name "bacon" "strips" "cellophane" , description "The bacon is pre-cooked and rolled up all nice and neat in cellophane. As you look closely at it, you are filled with assuredness that the bacon is well-preserved, and not only edible but probably tastes much better than it would have if you had made it yourself." , bethname "bacon" , before [; drink, eat : print_ret "Hmmm, yes the bacon IS tempting, but you promised bacon to Beth. Better not."; ] has fooditem ; Object eggs "bowl of scrambled eggs" CaveKitchenCounters with name "eggs" "scrambled" "bowl" , bethname "scrambled eggs" , description "This is a bowl of scrambled eggs. They are warm and smell delicious." , before [; drink, eat : print_ret "Nah, you never were an egg person. Besides, you promised some eggs to your girlfriend."; ] has fooditem ; Object pancakes "pancakes" with name "pancakes" , description "The pancakes look so appetizing that you can hardly wait to give them to Beth." , bethname "pancakes" , before [; drink, eat : print_ret "Not a chance! As appetizing as the pancakes may look, they are just the opportunity to make good on a promise to Beth."; ] has fooditem pluralname ; Object syrup "bottle of syrup" cab with name "pancake" "bottle" "syrup" "maple" , bethname "syrup" , description "This is a bottle of maple syrup. There is only about a half-inch left in the bottle, but this is plenty for a single person (like Beth). On the side of the bottle are printed the words: ~Aged to Perfection.~" , before [; open : print_ret "You start to open the bottle of syrup, then decide against it. You promised Beth some syrup and there is only a little left. It is not to be squanderd."; drink, eat : print_ret "You most certainly cannot! In fact you do not even consider drinking the syrup. You promised Beth that she would have syrup and darn it! Syrup she shall have!"; ] has container openable ~open fooditem ; object oneeyedblinder "one-eyed blinder" WizardsLaboratory with name "blinder" "one-eyed" "ball" "black" , description "Currently the ~blinder,~ as the man-in-blue called it, looks like a small, black, rubber ball. You know from experience that it is secretly a magical blindfold that wraps around the head of the target it is thrown at. A working one would effectively blind a person, but this one is defective and only covers one eye." , before [; ThrowAt: switch(second) { Beth: print_ret "Not a chance! This is your GIRLFRIEND were talking about here! That's not the kind of ~new level~ you're trying to bring your relationship up to."; Cyclops: move self to second; print "@@9Although you know that the blinder is defective, you remind yourself that you really only need it to cover one eye anyway so throw the black ball at the Cyclops. Your aim is true and in an instant, the ball wraps cleanly around the creatures head. ~Arrrgh!~ he cries, and drops the axe. Cy then begins to tug harshly at the blinder, but to no avail. After several moments he sits down on the couch to continue his struggle."; move axe to location; return true; Medusa: if (Medusa has stoned) print_ret "No, you feel pretty safe from Medusa in her current state. Better not waste the blinder."; move self to second; print_ret "@@9You throw the black ball at Medusa. Your aim is true and in an instant, the ball wraps cleanly around her head. The tiny snakes writhe around for a moment as Medusa stumbles back. Then she regains her balance and a you have a vague recollection that the blinder is defective...^^"; } print_ret "No, the man-in-blue said that it took two weeks to fall off on its own and that's a long time past breakfast. You decide to save it for later in case you find a use for it."; ] ; Object axe "huge axe" with name "huge" "ax" "axe" "gigantic" "large" "massive" , before [; take, remove, transfer: print_ret "The axe is WAY too large to pick up."; ] has static ; Object flashlight "headlight/car battery contraption" MaxxiosBasement with name "flashlight" "battery" "headlight" "contraption" "light" "lamp" , battery_power 30 , before [; Examine: print "This is a fairly simple looking contraption made of a car battery and a car headlight. It obviously serves as a flashlight and with a little examiniation you determine that it is pretty easily turned on and off. "; if(self has on) { if(self.battery_power<4) print "The dim light flickers on and off. It will be going out any moment now."; else print "The light glows very dimly. This car battery doesn't have much juice left."; } else print "The light is currently off."; return true; SwitchOn: if(self has on) print_ret "The contraption is already on."; if(self.battery_power>0) { startdaemon(self); give self light; } else print_ret "The contraption's battery seems to be dead."; SwitchOff: stopdaemon(self); give self ~light; ] , daemon [count o c; self.battery_power--; if(TestScope(self,player)==false) return; if(self.battery_power==7) print "^The flashlight fades for a moment then brightens again. Still, it is a little dimmer than it was a moment ago."; if(self.battery_power==3) print "^The flashlight flickers off and on twice, but continues to put out a very dim light."; if(self.battery_power==0) { print "^The light from the contraption dies off completely."; give self ~light; stopdaemon(self); if(SchoolFuse hasnt on) { CantWin(); return; } count=0; objectloop(o has fooditem) !number of food items in caverns { c=parent(o); while(c~=0) { if(c provides realm && c.realm==1) count++; c=parent(c); } } if(count>0 && ( ToasterCord.pluggedinto~=electrichole || ToasterLever.isdown==false) ) CantWin(); } ] has transparent switchable ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! NPCs !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Object Beth "Beth" ApartmentKitchen with name "girlfriend" "girlfriend" "Beth" , description "@@9Beth (your girlfriend) sits here with a patient and expectant expression upon her face." , initial "Sitting at the table is your girlfriend Beth. She sits in front of her plate, waiting patiently for the home cooked breakfast that you have promised her." , life [; give: print "(putting it on Beth's plate)^"; ; return true; ] , foodneeded [count c o; c=0; count=0; objectloop(o notin plate && o has fooditem) count++; objectloop(o notin plate && o has fooditem) { c++; if(c>1) print ", "; if(c==count && count >1) print "and "; print (string)o.bethname; } ] , each_turn [count o; if(random(5)==1) { count=0; print "^@@9~Mmmmm!~ Beth says smiling. ~"; objectloop(o notin plate && o has fooditem) count++; if(count<5) print "This looks delicious! Still, I think I'll wait to eat until you've finished preparing the "; else print "I can hardly wait for the wonderful breakfast you're fixing. My aren't you wonderful? Making me "; self.foodneeded(); print ". Beth smiles at you with adoration."; } ] has animate proper static female ; Object Cyclops "cyclops" CaveLivingRoom with name "cyclops" "Cy" , count 0 , initial [; if(oneeyedblinder in self) print_ret "The Cyclops is here, sitting on the couch. He is struggling to pull the one-eyed blinder off of his face."; else print_ret "There is a Cyclops here, armed with a huge axe and prepearing to lunge at you."; ] , react_before [; go: if(oneeyedblinder notin self) print_ret "You begin to flee, but your legs just won't move. Fear has them rooted to the floor."; ] , each_turn [; if(oneeyedblinder in self) return; !don't attack if blinded if(self.count>0) { print "The cyclops jump easily across the cave and knocks you on you back with a flick of the wrist. Your last thought as the creature chops you in half is how cool that axe would look hanging in YOUR livingroom."; deadflag=1; } self.count++; ] has animate static male ; Object Medusa "Medusa" CaveKitchen with name "medusa" "snake-woman" "Medie" "woman" , count 0 , description [; if(self has stoned) print_ret "The statue of Medusa, or rather the statue that IS Medusa, is very beautiful. You would even say that Medusa is flawless save for having snakes on her head instead of hair. Well, that and being made of stone right now."; else { if(sunglasses has worn) print_ret "Through the sunglasses you can see that ~Medie~ is wearing a long, wrap-around apron. Although it is difficult to see directly into her face, you think that if you looked hard enough you could make out her features with more clarity. Of course the presence of the writhing, hissing nest of snakes on her head is evident regardless of visibility."; else print_ret "~Medie~ is wearing a long, wrap-around apron. Although you have not yet looked directly into her face, you cannot help but notice that by all other indications, she is very beautiful. Of course the writhing nest of snakes on her head is somewhat of a distraction."; } ] , react_before [; go: if(self hasnt stoned) print_ret "You begin to flee, but your legs just won't move. Fear has them rooted to the floor."; ] , life [; show: if(self has stoned) print_ret "Medusa is too busy being a statue right now to care."; if(self.count==0) print_ret "Medusa cannot see. Her back it toward you."; if(noun==toaster) { print "@@9Although you are not looking directly at her, you gather that the toaster has perked Medusa's interest, perhaps because she has never before seen one. Then you hear a sharp intake of breath as she realizes that she can see her reflection in the toaster. ~Oh no!~ She cries, and you can hear several snakes hissing simultaneously. ~It took two weeks to un-stone, last time I saw my refl-~ then there is silence. For a moment you hesitate, then gather your nerve and peer at Medusa. She is now simply a beautiful statue."; give self stoned ~animate; return true; } ] , each_turn [; if(self has stoned) return; self.count++; if(self.count==1) { print "@@9Medusa turns and faces you directly. ~Who are you?~ she gasps in surprise. ~What are you doing in my kitchen?~ Medusa's voice is soft and sultry. "; if(sunglasses has worn) { print "Although you cannot currently see her face through the sunglasses, the sound of her tone is almost mesmerizing and you find that your eyes seem to have a will of there own. You struggle to keep them from looking directly into Medusa's silhouetted face.^"; if(broom notin player) CantWin(); return true; } else { if(oneeyedblinder in Medusa) print "For a moment you look into the single eye not covered by the blinder and are stricken by her beauty. "; else print "For a moment your eyes meet, and you are stricken by her beauty. "; } } else print "@@9No longer able to fight your impulses, you glance briefly into Medusa's eyes. "; if(oneeyedblinder in Medusa) print "Then you begin to lose feeling in your legs and arms. ~Darn it!~ says Medusa as she pulls at the defective blinder around her head. ~I try to stay away from you men, but you are so persistent,~ she sighs. Your chest locks up and you no longer can breath. The last words you hear before numbness and death consume you are: ~Cy, honey! We've had another incident. Could you move this statue out into the garden with the others, while I get the blinder-remover?~ "; else print "Then you begin to lose feeling in your legs and arms. ~Oh no,~ says Medusa sadly. ~I try to stay away from you men, but you are so persistent.~ She shakes her head. ~Like moths to a flame!~ Your chest locks up and you no longer can breath. The last words you hear before numbness and death consume you are: ~Cy, honey! We've had another incident. Could you move this statue out into the garden with the others?~ "; deadflag=1; ] has animate static proper female ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Code !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [Initialise o; location = ApartmentLivingRoom; SaltVein.newitem(10); memory.knowledgeof=knowledge; o=breadtoast.create(); give o fooditem; move o to BreadBox; move breadtoast.create() to CaveKitchenCounters; move breadtoast.create() to SchoolKitchenCabinet; move breadtoast.create() to Cab; move breadtoast.create() to Workbench; o=outlet.create(); give o ~on; move o to SchoolClassroom; move outlet.create() to ApartmentKitchen; move outlet.create() to MaxxiosBasement; style bold; center("^^^^^What a bummer birthday!"); style roman; center( "^^Well circumstances aren't all you hoped they'd be right now. ^ It is two days before payday and your funds are non-existent. Yesterday was your birthday ^and you were hoping for money. Instead all you got was an old toaster from your eccentric ^great, great grand mother. Not to be unappreciative (because toast is good), but you had ^really been counting on cash. In an effort to bring your relationship with your ^girlfriend ~Beth~ to a new level, you invited her to stay over and watch movies. She was a ^little hesitant at first, but agreed when you promised her a home cooked breakfast of eggs, ^bacon, toast, pancakes, and syrup. ^That was probably not the smartest move in the world considering you have next to nothing in ^your kitchen, but then that's why you were counting on cash. ^Still, it isn't a total loss. You DID get a toaster, and you think you still have a little ^bread that you can use for toast. ^^^One out of five isn't bad is it?"); eject(); center("[In this game the player has a character knowledge base to consult. For example: REMEMBER GRANDMA]"); center("[It is also worth mentioning that this game breaks one or two of the ~good game design rules.~ For]"); center("[the most part, I like my games to ~play nice,~ but when striving for ~speedy~ development, (as is]"); center("[the case with Speed-IF games) a couple of allowances must be made. A word of advice: There is a]"); center("[point in this game where it is possible to die without advanced warning. Try to SAVE FREQUENTLY!]"); center("[There is also a very meager HINT command. Don't expect very much from it though. Hints are only]"); center("[if they don't give away the game. And this one doesn't! Really.]"); ; print "^^"; return 2; !give player specific_number; ]; [knowledge w; switch(w) { 'knowledge', 'memory' : print "@@9Although you know lots of things, topics that are of particular pertinence right now include:"; print "^@@9@@9@@9your KNOWLEDGE (you know what you know)"; print "^@@9@@9@@9your GRANDMOTHER (great, great)"; print "^@@9@@9@@9your BIRTHDAY"; print "^@@9@@9@@9your BROOM"; print "^@@9@@9@@9your GIRLFRIEND"; print "^@@9@@9@@9your PLAN"; print "^@@9@@9@@9GUILE"; 'grandma', 'grandmother': print "@@9You think about your great, great grandmother. No one knows just how old the eccentric old woman really is, but on occasion she will speak of her childhood back in Salem. It is rumored that she left because of a falling out she had with other people in her town. The story has always been pretty fuzzy, but apparently their problem with her had something to do with the fact that she would not sink in water (pretty silly!). You feel that senility may have something to do with why her story about this doesn't make sense. She claims that her childhood was long before ~modern times~ but also says she ~flew away~ when she left Salem. It couldn't have been too long ago if they had airplanes, could it?^@@9In recently years, your grandmother's mind seems to have taken a turn for the worse. For your last several birthdays she has been wrapping up strange things lying around her house (things you can find no use for) and giving them to you for your birthday presents. For your birthday two years ago you opened her gift only to find her black cat ~Guile~ which you knew had disappeared two months prior. For the week or so that you kept the cat, before finally giving it back to her (on the pretext that it was lonely for her) you became absolutely certain that there was something wrong with it. Not only did it not ~meow~ like other cats, but it often issued a sound that you swear was closer to a ~bark.~"; print "^@@9Last year your grandmother gave you an old broomstick, which, for all appearances, is older than she is. Since all of the floors is your apartment are carpeted, the broom doesn't get much use and you leave it in your closet. Although you have never actually seen it, you secretly think that a mouse came with the broom (perhaps hiding in the straw). It was about the time that you got the broom that you began to hear a regular thumping sound coming from your closet.^@@9This year's gift was an old toaster. Although positively ancient, it is perhaps the first gift ever given to you by your grandmother that you can actually put to use. Two weeks ago your toaster oven short-circuited and died in a horrible cloud of black smoke. You haven't had the opportunity to replace it yet, but your grandmother's little toaster will probably do okay until you get a chance it."; 'birthday' : print "@@9Your birthdays have always been a little strange. For some reason your great, great grandmother has always given you the weirdest things. You had hopped that this past birthday would bring in cash so that you could make good on a promise to your girlfriend. No such luck!"; 'broom' : print "@@9You've never put your grandmother's broom (which she gave to you as a birthday gift sometime ago) to any use simply because all of your floors are carpeted. Despite its advanced age, it is very sturdy. It is because of this sturdiness that you have always found it odd that there is a noticeable warp in the broomstick itself. It is almost as if it was affixed horizontally and used to support something (or someone)."; 'beth', 'girlfriend' : print "@@9Your girlfriend Beth is the most beautiful creature on two legs! You are finally at that point in your life where you want to become serious, and you've decided to follow a distorted version of that age-old saying. That is, the way to a woman's heart is through her stomach. Of course the breakfast you had planned is going to take some work..."; 'breakfast', 'promise', 'plan' : print "@@9Ah yes! Your great plan, which seems to be unattainable. You had planned to make Beth a wonderful breakfast. You had promised her bacon, eggs, toast, pancakes, and syrup. Sadly, your birthday was less profitable than you had hoped and now it is time to make that promised breakfast and the only thing you have for her is toast."; 'cat', 'guile' : print "@@9Guile is your grandmother's black cat. She has had it for as long as you can remember. Once, for your birthday, your grandmother gave wrapped up Guile and gave him to you as a gift. You believe it was done in a passing wave of senility. Still Guile stayed with you for a couple of weeks until you finally gave him back. During that time you came to believe that there was something just not quite right about him. Sometimes it seemed that he was something more than what he appeared to be."; default : print "You don't recall anything unusual about that subject."; } ]; [GotAll o n count allcount; count=0; allcount=0; objectloop(o has fooditem) { allcount++; n=parent(o); while(n~=nothing) { if(n provides realm && n.realm==0) count++; n=parent(n); } } if(count==allcount) return true; else return false; ]; [CantWin; score=-999; print "^Warning!!! Something has just occured that makes it impossible to complete the game. The best advice: restore your last saved position and try again."; ]; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Grammer !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Include "Grammar"; Include ">JimsExtensions.h"; !---- plug/unplug ------------------------------------------------------- Verb "plug" * noun -> Plug * noun "in" -> Plug * "in" noun -> Plug * noun "in"/"into" noun -> PlugInto ; Verb "unplug" * noun -> Unplug * noun "from" noun -> Unplug ; ! - - - - - - - - - - - - - - [PlugIntoSub o count; if((noun provides pluggedinto)==false) { count=0; objectloop(o in noun && o provides pluggedinto) count++; if(count==0) print_ret (The)noun, " cannot be plugged into anything."; if(count>1) print_ret "There are too many things attached to ",(the)noun," that could be plugged in (be more specific)."; objectloop(o in noun && o provides pluggedinto) <>; return true; } if(second hasnt pluggable) print_ret "You cannot plug anything into ",(the)second,"."; !count items plugged into second count=0; objectloop(o provides pluggedinto && o.pluggedinto==second) count++; if(count>1) objectloop(o provides pluggedinto && o.pluggedinto==second) print_ret "There are already two things plugged into ",(the)second,"."; noun.plug(second); ]; [PlugSub o count; count=0; objectloop(o has pluggable && TestScope(o,player)==true) count++; if(count>1) print_ret "What would you like to plug ",(the)noun, " into?"; if(count<1) print_ret "You cannot see anything that you can plug ",(the)noun, " into."; objectloop(o has pluggable && TestScope(o)==true) { print "(into ",(the)o,")^"; ; } ]; [UnplugSub o count; if((noun provides pluggedinto)==false) { count=0; objectloop(o in noun && o provides pluggedinto && o.pluggedinto~=null) count++; if(count==0) print_ret (The)noun, " is not plugged into anything."; if(count>1) print_ret "There are too many things attached to ",(the)noun," that could be plugged in (be more specific)."; objectloop(o in noun && o provides pluggedinto && o.pluggedinto~=null) <>; return true; } if(noun provides pluggedinto && noun.pluggedinto~=null) { noun.unplug(); return true; } else print_ret (The)noun, " is not plugged into anything."; ]; !---- set to ---------------------------------------------- Extend "set" first * noun "to" topic -> DialTo ; Extend "turn" first * noun "to" topic -> DialTo ; ! - - - - - - - - - - - - - - [DialToSub w; if((noun ofclass(dial))==true) { wn=Consult_From; w=NextWord(); switch(w) { 'raw':noun.setting=0; 'light':noun.setting=1; 'medium':noun.setting=2; 'dark':noun.setting=3; 'black':noun.setting=4; default: print_ret "Try as you might, you just can't find a setting like that."; } print "You adjust ",(the) noun," to ",(address)w,"."; } return false; ]; !---- ezlwot ------------------------------------------------------ Verb "ezlwot" * -> Ezlwot ; Extend "answer" first * "ezlwot" -> Ezlwot ; ! - - - - - - - - - - - - - - [EzlwotSub; if(broom has mounted) { if(broom has flying) { give broom ~flying; print "The broom slowly descends to the ground. "; if(player in CaveOverChasm) { print "After a few moments of descent, you land at the bottom of the chasm..."; PlayerTo(CaveChasmBottom); return; } } else { give broom flying; if(player in CaveChasmBottom) { print "@@9The broom leaps into the air and soars to the top of the cavern. "; PlayerTo(CaveOverChasm); return; } print_ret "@@9The broom leaps into the air and hovers. You feel a momentary wave of panic that you will fall to one side or the other, but it passes as you get your balance atop the broom. You can feel tingling pulses transferred through the broom and have the distinct impression that the broom will fly in any direction that you direct your attention toward. "; } } if(TestScope(broom, player)==true) print_ret "The broom lunges momentarily upward. Then, almost as if realizing that it has no rider, drops back down distinctly disappointed."; <>; ]; !---- mount/dismount ---------------------------------------------- Verb "mount" * mountable -> Enter ; Verb "dismount" * mounted -> Exit * noun -> Exit ; Verb "hint" * -> Hint ; [HintSub; print "@@9Okay, although I prefer to leave hints out of the game proper, (I prefer them in the form of a walkthrough), a ~Speed-IF~ piece of work is a slightly different creature and could probably warrant a hint or two to get the player jump started. Here goes:^^"; style bold; center("Hint 1: How To Cook Toast:^"); style roman; center("LIGHT requires RAW, MEDIUM, DARK, and BLACK"); center("MEDIUM requires DARK"); center("DARK requires nothing"); center("BLACK requires LIGHT"); style bold; center("^^Hint 2: Cook Toast in the Proper Direction:^"); style roman; center("There are several methods of cooking toast, but the easiest to remember is reverse order:"); center("BLACK"); center("DARK"); center("MEDIUM"); center("LIGHT"); center("RAW"); print "^@@9Make of that what you will. If there are other questions (as I am sure there will be) I can be contacted by e-amil:^^"; center("aabstraction@@64yahoo.com^^^"); ]; end; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Free form text and notes can go here !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!