Constant Story "Phlegm"; Constant Headline "^An Interactive Interactive^\ Copyright 1996-1997 by Adjacent Drooler^"; ! No warranty provided. Feel free to steal snippets of code. Release 3; !Constant DEBUG; !Constant USE_MODULES; ! These three are needed for our spiffy "no blink" status line: Replace DrawStatusLine; Replace PlayerTo; Replace GoSub; Replace BurnSub; ! Used for unusual gender behavior: Replace ResetVagueWords; !Replace Low_KeyMenu; !Replace DoMenu; Include "Parser"; Attribute male; ! no male or female for an animale will make "undefined" Attribute is_crayon; Attribute popper; Property counter; ! an extra number Global change_sta = 0; Global the_word = 0; Object LibraryMessages "lm" with before [; Think: "Don't hurt yourself trying."; Dig: "Digging here won't get you anywhere."; Jump: "Enjoying yourself?"; Sorry: "Oh, don't apologize."; Mild: "Not quite."; Strong: "[Your intelligence just went down.]"; Attack: "Suppress your primal urges for a later time."; Sleep: "You haven't slept in years. You let Leo do all the sleeping for for you."; ]; [ ResetVagueWords i; if (i has animate && i~=player) { if (i has male) himobj=i; if (i has female) herobj=i; if ((i hasnt male) && (i hasnt female)) { ! undefined gender himobj=i; herobj=i; itobj=i; } } else itobj=i; ]; ! change_sta is set whenever the player moves somewhere, so ! the status line will erase and the new location name will be written. [ DrawStatusLine width posa posb; if (deadflag~=2) { @split_window 1; @set_window 1; @set_cursor 1 1; style reverse; width = 0->33; posa = width-26; posb = width-13; if (change_sta == 1) { spaces (width); @set_cursor 1 2; PrintShortName(location); } if (width > 76) { ! @set_cursor 1 posa; print "Score: ", sline1; @set_cursor 1 posb; print "Moves: ", sline2; } if (width > 63 && width <= 76) { ! @set_cursor 1 posb; print sline1, "/", sline2; @set_cursor 1 posb; print sline2; } @set_cursor 1 1; style roman; @set_window 0; change_sta = 0; } ]; Include "VerbLib"; Include "Ph_Hint"; [ PlayerTo newplace flag; change_sta = 1; move player to newplace; while (parent(newplace)~=0) newplace=parent(newplace); location=newplace; real_location=location; AdjustLight(1); if (flag==0) ; if (flag==1) { NoteArrival(); ScoreArrival(); } if (flag==2) LookSub(1); ]; [ GoSub i j k df movewith thedir; movewith=0; i=parent(player); if ((location~=thedark && i~=location) || (location==thedark && i~=real_location)) { j=location; if (location==thedark) location=real_location; k=RunRoutines(i,before); if (k~=3) location=j; if (k==1) { movewith=i; i=parent(i); jump gotroom; } if (k==0) L__M(##Go,1,i); rtrue; } .gotroom; thedir=noun.door_dir; if (ZRegion(thedir)==2) thedir=RunRoutines(noun,door_dir); j=i.thedir; k=ZRegion(j); if (k==3) { print (string) j; new_line; rfalse; } if (k==2) { j=RunRoutines(i,thedir); if (j==1) rtrue; } if (k==0 || j==0) { if (i.cant_go ~= 0) PrintOrRun(i, cant_go); rfalse; } if (j has door) { if (j has concealed) return L__M(##Go,2); if (j hasnt open) { if (noun==u_obj) return L__M(##Go,3,j); if (noun==d_obj) return L__M(##Go,4,j); return L__M(##Go,5,j); } if (ZRegion(j.door_to)==2) j=RunRoutines(j,door_to); else j=j.door_to; if (j==0) return L__M(##Go,6,j); if (j==1) rtrue; } if (movewith==0) move player to j; else move movewith to j; df=OffersLight(j); if (df~=0) { location=j; lightflag=1; } else { if (location==thedark) DarkToDark(); real_location=j; location=thedark; lightflag=0; } if (AfterRoutines()==1) rtrue; if (keep_silent==1) rtrue; change_sta = 1; LookSub(1); ]; Include "Grammar"; ! ---------------------------------------------------------------------------- ! The revenge of the verbs ! ---------------------------------------------------------------------------- [ GazeSub; "You gaze for a while. Nothing happens."; ]; [ ShakeSub; "Nothing happens."; ]; [ ShakeHandsSub; if (noun hasnt animate) "No hands to shake."; "Your attempt at friendliness is ignored."; ]; [ InfoSub; "This is a ludicrous game. It is impossible to make mistakes that will prevent you from winning. Common sense should be avoided whenever possible.^^ My apologies (somewhat) to Graham Nelson, Andrew Plotkin, and anyone who loves disco music. (Play to find out why.)^^ Special thanks to Admiral Jota and Bernd Schmidt for beta testing. Also thanks to Dave Gatewood and Mark Tilford for finding post-beta bugs, and all the people who pointed out the idiotic bug in release 2 that kept the player from winning.^^ Help is available through the HINT command, but if you want to avoid temptation type HINTS OFF. The hints cannot be turned on again if you turn them off."; ]; [ JumpOffSub; "That isn't something you can jump off."; ]; [ XyzzySub; print "Your senses are assaulted by a vision...^^"; style bold; print "You are in a misty little haze of massages, all alike.^^"; style roman; "The vision passes."; ]; Fake_action Torch; [ TorchSub; "That isn't something you need to burn."; ]; [ FireSub; if (noun==cannon) { if (second==flamethrower) <>; if (second==0) "The cannon is supposed to be fired by lighting up the fuse."; } if (noun~=Flamethrower) "That's not something you can fire."; if (((Flamethrower hasnt general)&&(second==0))||(second==cart)) { move Flamethrower to Market; give Flamethrower general; remove cart; "You push the trigger (colored green), and a large part of the cart catches on fire. The cart decides to not go through the the ~burning away slowly~ bit and skips right to disappearing in a puff of smoke. The flamethrower (slightly charred) falls to the ground. It plays a charming tune indicating it has annihilated a target."; } if (noun notin player) { print "[first taking ", (the) noun, "]^"; ; if (noun notin player) "Unless you are torching whatever it is pointing at, you need to be holding the flamethrower to fire it."; <>; } if (second==0) "You amuse yourself by briefly firing the flamethrower in a random direction."; <>; ]; [ FireRevSub; <>; ]; [ BurnSub; if ((second==Powder) || (second==mpowder)) "That's not something you can start fires with. Not all by itself, at least."; if (second~=Flamethrower) "That's not something you can start fires with."; <>; ]; [ BlobSub; ! the secret word "Phlegm Copyright 1996 Jason Dyer"; ]; [ FindSub; "That isn't going to be too productive."; ]; [ FneedSub; "That isn't going to be too productive."; ]; [ MvoiceSub; "Leo's the one talented at throwing his voice."; ]; [ OvoiceSub; "I don't understand what you mean."; ]; [ GvoiceSub; "Leo's the one talented at throwing his voice."; ]; [ LickSub; if (noun has animate) "This is the wrong game for that sort of thing."; "There's no point in licking that."; ]; [ PlaySub; "That won't play."; ]; [ FillTSub; "That isn't going to work."; ]; [ PlayWithSub; if (noun has animate) "That would be somewhat rude."; "You fiddle with ", (the) noun, " for a while."; ]; [ TalkSub; "The proper way of talking to someone is like this: ~Leo, Hello.~"; ]; [ AnyWord; the_word=wn++; return noun; ]; Global zobj; [ HelpMenu; if (menu_item==0) { item_width=3; item_name="Phlegm"; return 11; ! if (deadflag==2) return 4; else return 3; } switch (menu_item) { 1: zobj = Chest_Puzzle; 2: zobj = Cannon_Puzzle; 3: zobj = End_Puzzle; 4: zobj = Mcrayon_Puzzle; 5: zobj = Lunatic_Puzzle; 6: zobj = Record_Puzzle; 7: zobj = Crayon_Puzzle; !switching order 8: zobj = Moose2_Puzzle; 9: zobj = Moose_Puzzle; 10: zobj = Flamethrower_Puzzle; 11: zobj = Haystack_Puzzle; } item_width=zobj.number-1; item_name=zobj.short_name; ]; [ HelpInfo i zz kp; ! if (menu_item==1) zz=zobj.counter; print "(Press ENTER to return to menu, or H for another hint.)^^"; for (i=1:i<=zz:i++) { print "(",i,"/",zz,") ", (string) (zobj.&the_hints)--> (i-1); if (i==zz) print_ret "^"; new_line; new_line; @read_char 1 0 0 kp; if ((kp~='H') && (kp~='h')) return 2; } ]; global hoff = 0; [ HelpSub; if (hoff==1) "The hints have been turned off."; change_sta = 1; DoMenu("There is information provided on the following:^\ ^ How do I get at the chest? ^ What do I do with the cannon? ^ What should I do at the End of the World? ^ How do I get the maroon crayon? ^ Is the lunatic useful for anything? ^ How do I get the record? ^ Where do I find the Magic Crayons of Destiny? ^ What am I supposed to do at the Moose Headquarters? ^ How do I get rid of the crowd listening to the speaker? ^ How do I get the flamethrower out of the cart? ^ What can I do with the haystack?^", HelpMenu, HelpInfo); ]; [ HswiSub; hoff=1; "The hints are now off."; ]; [ PopSub; if (second hasnt popper) "That's not the proper tool for the job."; "That wouldn't be too useful."; ]; [ PopRSub; <>; ]; [ DanceSub; "Your last attempt resulted in having five stitches. Don't push your luck."; ]; verb "gaze" "stare" * "longingly" "at" noun -> Gaze * "at" noun -> Gaze * noun -> Gaze; verb "lick" * noun -> Lick; Extend "drink" * "from" noun -> Drink; verb "shake" * noun -> Shake * "hands" "with" noun -> ShakeHands; verb "shoot" "fire" * noun -> Fire * noun "at" noun -> Fire * noun "with" noun -> FireRev * "at" noun "with" noun -> FireRev; verb "kick" "bash" * noun -> Attack; verb "xyzzy" "yoho" "plugh" "lagach" "plover" * -> Xyzzy * noun -> Xyzzy; verb "blob" * -> Blob; verb "info" "information" "starting" "credits" "about" * -> Info * noun -> Info; Extend "fill" * held "with" noun -> FillT; verb "pour" * noun -> Empty * noun "into" noun -> EmptyT; Extend "search" * "needle" "in" noun -> Fneed * "for" "needle" "in" noun -> Fneed * "for" "a" "needle" "in" noun -> Fneed * "for" Anyword "in" noun -> Find * "for" "a" Anyword "in" noun -> Find; verb "find" * "a" "needle" "in" noun -> FNeed * "needle" "in" noun -> Fneed * "a" AnyWord "in" noun -> Find * AnyWord "in" noun -> Find; Extend "jump" * "off" noun "of" "world" -> JumpOff * "off" noun -> JumpOff; ! Ovoice (Leo's); Mvoice (yours); Gvoice (either) Extend "throw" * "voice" "at" noun -> Gvoice * "your" "voice" "at" noun -> Ovoice * "my" "voice" -> Mvoice * "my" "voice" "at" noun -> Mvoice; Verb "talk" * "to" animate -> Talk * "through" noun -> Gvoice; Verb "make" "cause" * noun "talk" -> Gvoice * noun "to" "talk" -> Gvoice; Extend "answer" * "through" noun -> Gvoice; Verb meta "help" "hint" "hints" * "off" -> Hswi * -> Help; Extend "burn" replace * "up" noun "with" noun -> Burn * noun "with" noun -> Burn; Verb "untie" * noun -> Open; Verb "play" * "with" noun -> PlayWith * held -> Play * held "with" held -> Play; Verb "poke" "pop" "stick" * held "in" held -> PopR * held "with" held -> Pop; Verb "dance" * -> Dance * "with" animate -> Dance; ! ---------------------------------------------------------------------------- ! The real star of the show ! ---------------------------------------------------------------------------- Class cray has is_crayon with before [; Take, Remove: if ((parent(self)==d1)||(parent(self)==d2)|| (parent(self)==d3)||(parent(self)==d4)) "The crayon is fixed into place."; ], after [; Insert: if ((second~=d1)&&(second~=d2)&&(second~=d2)&&(second~=d4)) rfalse; writing.number=writing.number+1; if (writing.number<4) print_ret (The) noun, " clicks neatly into place."; move compartment to Ruins; give compartment general; if (leo.number==0) Leo.number=30; print_ret (The) noun, " clicks neatly into place. A deep throbbing resonates as a secret compartment opens in the wall."; ]; Object limbo "limbo" with name "limbo"; Object Leo "Leo" has proper animate, with name "leo" "lemming", number 1, counter 0, ! 0 indicates normal ! 1 indicates dozing ! 2-5 indicates script starting at disco ! 6-7 indicates moose script ! 30 indicates quip invent [ i; if (inventory_stage==2) { i=self.number; if (i==1) print " (dozing away)"; } ], before [; Eat, Torch: "This game will admittedly let you sink to some pretty low moral values. This is not one of them."; ], life [; ! tell, give, order, show, throwat Ask: if (self.number==1) "Leo needs to be awake for you to do that."; switch (second) { 'Leo': "~I'm not very good at talking about myself.~"; 'player': "~You're my partner in crime, what else can I say?~"; 'brother': "~He was a good brother. He died when he got pushed off a cliff by some film people trying to make a film about lemmings jumping off cliffs. Horrible.~ Leo shudders at the memory."; 'flamethrower': "~Very nice. Useful for making bread products.~"; 'lunatic': "~He seems to be a fine chap to me. Probably had too much sugar in his cereal one day and snapped.~"; 'chest', 'treasure', 'phlegm': "~It's a chest, it's high up, and we can't reach it. Have I covered everything?~"; 'disco', 'music': "~Disco music is the basic building block of all matter. Scientists just haven't looked deep enough yet.~"; 'coat', 'pocket': "~Very cozy. Certainly better than that hotel we stayed at on our last trip. It had ants the size of gorillas.~ Leo is exaggerating, of course, but only slightly."; 'wibble': "~Speaking in tongues, maybe?~"; 'lemming', 'lemmings': "~Lemmings? What? Where? Who are you talking about?~"; 'rubble': "~I like rubble. It invigorates me.~"; 'moose': "~I never liked moose. I used to have nightmares of them chasing me.~"; 'edge', 'end', 'world': "~Great place. This town should advertise it more. There could be an entire theme park based around it.~"; default: switch (random(3)) { 1: "~Can't help you there, sorry.~"; 2: "~I can't think of anything meaningful to say about that.~"; 3: "~Nothing witty comes to mind about that, sorry.~"; } } Answer: if (self.number==1) "Leo needs to be awake for you to do that."; switch(noun) { 'hello', 'hallo', 'hi': "~Hello. I'd ask about the weather or something, but I hardly pay attention to that sort of thing.~"; default: "~Can't help you there, sorry.~"; } Order: if (self.number==1) "Leo needs to be awake for you to do that."; switch (random(3)) { 1: "~That isn't in my job description.~"; 2: "~Sorry, I have this bad back, you see.~"; 3: "~I think that's in your department.~"; } Kiss: if (self.number==1) { self.number=0; self.counter=0; if ((location==Disco)&&(Disco hasnt general)) { give Disco general; self.number = 2; } ! if at disco start script "Leo wakes suddenly, barely missing your face with his paw. ~What's the big idea, huh? Trying to make some sort of sentimental movie?~"; } "Leo avoids you, watching suspiciously."; Attack: "This game will admittedly let you sink to some pretty low moral values. This is not one of them."; WakeOther: if (self.number==1) "You prod Leo for awhile, and he responds by turning his body a little."; rfalse; ], orders [; Yes, No: if (self.number==1) "Leo needs to be awake for you to do that."; 'yes', 'no': "~It wasn't that kind of question.~"; Ovoice, Gvoice: if (self.number==1) "Leo needs to be awake for you to do that."; if (noun~=Giant_Head) "~I don't quite follow what you're getting at there.~"; if (HQ has general) "~I don't need to mess with that anymore.~"; give HQ general; Leo.number=6; move Leo to limbo; "Leo pauses for a moment, then his eyes light up. He pops out of your pocket and disappears between the rows."; Mvoice: if (self.number==1) "Leo needs to be awake for you to do that."; "Leo looks just a bit confused."; Sing: if (self.number==1) "Leo needs to be awake for you to do that."; "Leo briefly sings part of an aria from a Mozart opera. ~Sorry, that's all the words I know.~ Leo knows many songs, but only the first few phrases of each."; ], daemon [; if (self.number==1) { ! if dozing if (self.counter < 10) self.counter++; else { self.counter = 0; self.number = 0; ! wake up if ((location==Disco)&&(Disco hasnt general)) { give Disco general; self.number = 2; } ! if at disco start script if (HQ hasnt general) print "^You feel something twisting in your pocket as Leo ~the Lemming~ pokes his head out of your pocket and sniffs around. ~So, what trouble have you got us into now?~ Leo is using his British accent at the moment.^"; if (HQ has general) print "^You feel Leo suddenly wake up and poke his head partway out of your pocket, yawning. ~There, much better. Nothing like a quick nap to get rid of. . .ow!~ Leo scratches his back painfully.^"; } if (self.number~=2) rfalse; } if (self.number==2) { ! if disco script move self to End_Of_World; self.number=3; if (pole hasnt general) { give pole general; move mcrayon to End_Of_World; } "^Leo squeals with delight. ~Look, disco!~ He leaps onto the dance floor and starts spinning around.^^ The scene of a furry animal dancing on a grid of multicolored lights is not a scene seen by many; you now understand what horror story writers mean by ~forbidden knowledge.~^^ Your thoughts are diverted by three sounds, in quick succession: ~plop~, ~aaah!~, and ~dong!~. It seems that one of the dancers has sent Leo airborne."; } if (self.number==3) { ! disco script part 2 if (location~=End_Of_World) rfalse; self.number=4; "^Leo is staggering around here, the pole still vibrating (which was apprently Leo's landing spot.)"; } if (self.number==4) { ! disco script part 3 if (location~=End_Of_World) rfalse; move self to limbo; self.number=5; "^Leo walks crookedly back and forth a bit more before plummeting off the end of the world.^^ ~AAAaaaaahhh....!~"; } if (self.number==5) { ! disco script part 4 if (location~=Normalcy) rfalse; self.number=0; move self to Coat; print "^!....hhhaaaaaAAA~ "; style bold; print ""; style roman; "^^Leo lands upside down in your pocket, then rights himself. ~That was great! I haven't ridden a roller coaster like that in years!~"; } if (self.number==6) { ! Moose script part 1 self.number=7; rfalse; } if (self.number==7) { if (location~=HQ) rfalse; remove Lady; remove Crowd; give HQ general; move Leo to Coat; self.number=1; self.counter=6; style bold; print "^~Fools! You invoke the great curse of Nuag'gatoa!~"; style roman; print "^^All heads turn to the booming voice coming from the giant moose head.^^"; style bold; print "~One of you has dared to attempt to destroy me, the mighty moose god of ages, but I am here, and ready for vengeance!~^^"; style roman; print "With that last word a stampede suddenly sends you sprawling against the wall as the members of the Secret Society of the Moose run for their lives.^^ Leo rolls on the floor laughing uncontrollably, noticeably battered from being steamrollered by a crowd of moose fanatics. ~Well,~ he says, ~painful but great fun,~ immediately before jumping into your pocket and falling asleep instantly.^"; rfalse; } if (self.number==30) { self.number=0; "^Leo says, ~That's it? I excepted something more impressive, with fireworks and loud music or something.~"; } ! if awake, and normal if (random(4)==1) { if ((Flamethrower in player) && (limbo hasnt general)) { give limbo general; "^Leo peers at the flamethrower, saying, ~I used to have one of those when I was a kid. My brother and I would make cinnamon toast with it.~"; } print "^Leo "; switch(random(5)) { 1: "peers around with curiosity."; 2: print "practices his ventriloquist skills, throwing his voice to a distant spot: ~"; switch(random(6)) { 1: "Rosebud. . .~"; 2: "The first meeting of Onion Lovers Anonymous will begin at midnight.~"; 3: "I haven't seen giblets like that in years.~"; 4: "Why, when I was your age we had to walk twenty miles in the snow for one stalk of celery!~"; 5: "One milkshake, hold the cup.~"; 6: "I knew he was trouble. People wearing bells on their hats always were.~"; } 3: "does a few back flips, popping in and out of your pocket."; 4: "hums the first few bars of a composition by someone obscure whose name you can't pronounce."; 5: "wiggles both his ears at the same time."; } } ], description [; print "You first met Leo ~the Lemming~ hitchhiking near Interstate 10. He has been a semiconstant companion ever since, being on the whole an agreeable sort of lemming."; if (self.number==1) " Presently, Leo is dozing away in your pocket."; new_line; rfalse; ]; Object Map "treasure map" with name "treasure" "map" "scrap" "of" "paper", description "This scrap of paper contains many lines and scribblings from your travels, the most prominent being large X next to the words ~Treasure located here!~"; ! An object that was omitted from the game. I leave in the ! code for the curious types. ! Object Guide "tourist guide" ! with name "tourist" "guide" "yellow", ! !parse name everything..etc ! description "Grabbed from a rack of the tourist center you found just ! upon arriving here, ~Everything You Ever Wanted to Know About Phlegm ! and a Few Things You Didn't~ features a yellow cover, strong binding, nice ! fonts, and articles arranged in reverse alphabetical order. [To look ! something up, type, for example, CONSULT GUIDE ABOUT FISH.]", ! before [ w1 w2 w3; ! Consult: ! if (consult_words == 0) "Zen philosophy isn't covered in the guide."; ! wn = consult_from; ! w1 = NextWord(); w2 = NextWord(); w3 = NextWord(); ! if (consult_words == 1 && w1 == 'fish') ! "That topic isn't covered in the guide. (It's not a very good ! example, is it?)"; ! if (consult_words == 2 && w1 == 'town' && w2 == 'square') ! "Rumor has it that the landscape decorator was ! set upon by wild dogs shortly after doing this section."; ! if ((consult_words == 3 && w1 == 'treasure' && w2 == 'of' ! && w3 == 'phlegm')||(consult_words == 1 && w1 == 'treasure')) ! "Hmm. This page has been ripped out. Mysterious."; ! "That topic isn't covered in the guide."; ! ]; Object Coat "blue overcoat" has container worn transparent open, with name "blue" "overcoat" "coat" "pocket", capacity 300, before [; Disrobe: print "Let me get this straight: you're wearing a coat passed down from generation to generation since 1829, and you want to "; style bold; print "take it off?"; style roman; " Very-Great-Grampa Darby must be rolling in his grave."; ], description [; "Aye, this brings back memories. Dates back all the way to the winter of 1829 when Very-Great-Grampa Darby was hunting moose. It's been passed down from generation to generation ever since, hardly washed, and now has the general appearance of something a private eye might wear after being roughed up by a few IRS agents. Especially useful is the pocket that looks like it could hold enough to feed an entire army. (The edible parts, that is, although Leo has developed a theory that anything is edible as long as you swallow hard enough.)"; ]; Object Square "Town Square" with description "Tasteful pastels and neons form a concrete square around an anomalous growth in the form of a large tree. The odd walls and spires surrounding give the impression of exits in many directions.", name "pastels" "neons" "tasteful" "square" "concrete" "ambient" "light" "walls" "spires" "exits", sw_to End_Of_World, ne_to Market, n_to Market, se_to Normalcy, u_to [; <>; ], e_to "After proceeding a short while, you are stopped at a road block that reads: ~Closed for Construction, Use South Route.~", s_to "After proceeding a short while, you are stopped at a road block that reads: ~Closed for Construction, Use East Route.~"; Nearby Tree "tree" has scenery static, with description [; print "It's the sort of thing you would normally find in a park, but this tree seems to have found itself among tasteful concrete pastels."; if (chest hasnt general) " A chest has somehow managed to lodge itself in the tree's upper branches."; new_line; rtrue; ], name "tree" "large" "anomalous" "growth" "branches", before [; Attack: "The tree gives you a somber look. How a tree can look somber is left to the imagination of the reader."; Climb: "The tree refuses to cooperate; none of its branches have grown into a position convenient to climbing."; Shake: "You grip the tree firmly with both arms, shake vigorously, wail loudly, and gain nothing but the respect and admiration of a crowd of spectators who just passed by."; ]; Nearby Chest "chest" has static openable, with initial "A chest has somehow managed to lodge itself in the tree's upper branches.", name "chest" "solid" "wooden" "treasure" "of" "phlegm", description [; print "A solid wooden chest, with the words ~"; style bold; print "The Treasure of Phlegm"; style roman; print "~ printed on the side."; if (self hasnt general) " It's currently lodged in the upper branches of the tree in a particularly embarrassing position."; new_line; rtrue; ], before [; if (self hasnt general) { if (action==##Examine) rfalse; if (action==##Gaze) "After drying your eyeballs for quite some time, you glimpse the chest shift close to half a millimeter, but nothing else happens."; "The chest is too high up to do anything but gaze longingly at it."; } Push, PushDir, Take, LookUnder: "The chest is far too heavy to lift."; ]; Nearby Cannon "cannon" has static container open, with name "cannon" "loose" "old-style" "fuse", initial "A cannon sits nearby.", capacity 2, before [ i; Receive: if (noun==Grail) "And deface a important artifact? Shame on you."; Torch: print "You light the fuse, and it starts burning. . .^^"; if (parent(mpowder)~=Cannon) "The fuse burns out with no gunpowder to light. A cannon fairy magically appears and puts on a new fuse before disappearing in a puff of smoke."; if (children(Cannon)==1) { remove mpowder; "The cannon makes a loud pop but has no projectile to launch. A cannon fairy magically appears and puts on a new fuse before disappearing in a puff of smoke."; } objectloop (i in Cannon) { if (i~=mpowder) { if (i==water_balloon) { move i to limbo; remove mpowder; print_ret (The) i, " launches at the tree, exploding in a burst of water. A cannon fairy magically appears and puts on a new fuse before disappearing in a puff of smoke."; } if (i~=elephant) { move i to Square; remove mpowder; print_ret (The) i, " launches at the tree, but bounces off it and to the ground, hardly making any impression on the tree at all. A cannon fairy magically appears and puts on a new fuse before disappearing in a puff of smoke."; } if (i==elephant) { ! WIN Game deadflag=2; print "After a brief dramatic pause and drumroll sounding somewhere in the distance, the pink elephant launches directly at the tree, making an indistinct ~plong~ sound before vaporizing into dust.^^ The chest falls to the ground and pops open.^^"; if (Leo.number==0) print "Leo leaps at the chest with his usual squeal of delight, fainting in mid-air when he sees the contents of the chest and bouncing off the tree with a rather more distinct ~plong~ sound than the elephant made.^^"; print "You peer fearfully into the chest. It contains...it contains...a...^^ ~Yes, You Too Can Find Hidden Treasure With This Handy Treasure Kit, Guaranteed to Work or Your Money Back.~^^ You faint, landing on top of Leo.^^"; style bold; print "[Press any key to continue]"; style roman; @read_char 1 0 0 i; @erase_window $ffff; style bold; print "^^^~yyyyeeeoooWWWWW!!!~"; style roman; " Leo flees to the southwest, where in the distance you can hear the ~clang~ of something hitting a metal pole."; } } } ], description "One of those old-style cannons, aimed directly at the tree; it has apparently been made after hours of painstaking research. For those unfamiliar with late 4th century Zilodaxian technology: a projectile and gunpowder go in the cannon, and the fuse is lit."; Object water_balloon "water balloon" with name "water" "balloon" "green", description "It's a green water balloon.", before [; Eat: move self to limbo; give self ~general; "You gulp down the water balloon. A few moments later you spit out a huge gush of water onto the ground."; ]; Object End_Of_World "The End of the World" with description [; print "Stars, galaxies, and fruits of various flavors tumble through the void. Quite romantic, really, and it seems someone else had the same idea; some restaurant-style tables are scattered near the edge so customers can take in the view. A sign leans heavily on a nearby pole. Roads lead off to the northeast, east, and southeast."; if (lunatic has general) " There's also a large hole you can enter to the south."; new_line; rtrue; ], number 0, name "roads" "pole" "stars" "galaxies" "fruits" "various" "flavors" "void", before [; Jump: <>; ], se_to [; if (self.number==0) { self.number=self.number+1; "The most horrific mind-numbing terror ever created in the history of man is in that direction. I urge you to reconsider."; } if (self.number==1) { self.number=self.number+1; "Please, think carefully about the value you put on your sanity before continuing."; } if (self.number==2) { print "You win, but I am exempted from responsibility for any damage this might cause...^"; self.number=self.number+1; return Disco; } if (self.number==3) return Disco; ], s_to [; if (lunatic has general) return Wall; "Paths lead in easterly directions."; ], cant_go [; if (lunatic has general) "Paths lead in easterly directions. There's also a hole in the wall to the south you can enter."; "Paths lead in easterly directions."; ], w_to "That's the edge. You can jump off it if you feel reckless today.", e_to Square, ne_to Square; Nearby tables "tables" has static scenery, with article "some", description "All the tables are the same style, circular with four legs and a smooth finish."; Nearby Edge "edge" has static scenery, with name "edge" "end" "of" "world", before [ temp; JumpOff: print "You leap into the void. . .^^ A supernova spins by followed by a flock of cows. An astronaut lands on a watermelon somewhere in the distance, plants some sort of flag, and is promptly flattened by a large, juicy tomato. You sail through a hail of water balloons, past a bunch of electric sparks that look like bad special effects, and...^^"; style bold; print "[Press any key to continue]"; style roman; @read_char 1 0 0 temp; @erase_window $ffff; print "^^...find yourself falling far higher above the earth than you would like. After about five seconds of waiting the distance becomes a bit more comfortable as you embed yourself into the ground, somehow still intact."; if (Water_balloon hasnt general) { move water_balloon to player; give water_balloon general; print " Mysteriously, you sense you've gathered a new object along the way."; } if ((Leo.number==0) && (Edge hasnt general)) { give Edge general; print "^^Leo says, ~Nice landing.~"; } new_line; PlayerTo(Normalcy); rtrue; ], description "It ends abruptly, as most edges are apt to do."; Nearby Sign_1 "sign" ! One of many signs. It must be an omen. has static scenery, with name "sign" "heavy", before [; Take, Push, PushDir: "It's too heavy."; ], description "~The End of the World Grill - Closed.~ Also underneath, in bold print: ~No jumping off the edge! It may be hazardous to your health.~"; Nearby Pole "pole" has static scenery, with name "tall" "metal" "pole", number 0, initial 0, before [; Attack, Shake: print "The pole shakes and rings loudly."; if ((self has general)&&(mcrayon hasnt general)) { give mcrayon general; " The crayon falls off the pole to the ground."; } if (self hasnt general) { move mcrayon to End_Of_World; give self general; give mcrayon general; " A crayon falls off the pole to the ground."; } new_line; rtrue; Lick: "Disappointingly, your tongue does not stick to the pole."; ], description [; print "It's a tall, metal pole."; if ((self has general)&&(mcrayon hasnt general)) " You notice a crayon situated on the top of the pole."; new_line; rtrue; ]; Nearby Lunatic "lunatic" has animate, with name "lunatic", number 0, ! 0 indicates gurgling ! 1 indicates wibbling ! 2 indicates plucking strings initial [i; i==random(3); print "A nondescript lunatic holding a guitar is on the ground here, "; if (i==0) "gurgling."; if (i==1) "wibbling."; if (i==2) "plucking strings."; ], before [; Eat: "Really not all that tasty looking."; ], each_turn [i; i=random(14); if (i==5) "^The lunatic plucks a few chords."; if (i==6) "^The lunatic rolls along the floor for a few seconds."; if (i==7) "^The lunatic says, ~Wibble.~"; if (i==8) "^The lunatic gurgles."; ], description "The lunatic shows the classic symptoms: wild eyes, foamy mouth, and a tendency to say ~wibble~ every once in a while. The guitar under the arm doesn't seem standard, but hey, whatever works."; Nearby Guitar "guitar" has static scenery, with name "guitar", before [; Examine: rfalse; default: "The lunatic turns away protectively."; ], description [; if (self has general) "It could be the one Jimi Hendrix played at Woodstock, or it could be your imagination."; give self general; "It could be the one Jimi Hendrix played at Woodstock, or it could be your imagination. Large bananas float gaily by."; ]; Cray mcrayon "maroon crayon" with description [; if (writing hasnt general) "It is a maroon crayon."; "It is a maroon crayon, one of the Magic Crayons of Destiny."; ], initial [; if (self hasnt general) "You see a maroon crayon situated on top of the pole."; "You can see a maroon crayon here."; ], name "maroon" "crayon" "magic" "destiny" "of", before [; if (action==##Examine) rfalse; if ((pole has general) && (self hasnt general) && (action==##ThrowAt)) { if (noun==Water_balloon) { give water_balloon ~general; move water_balloon to limbo; "Your aim is off, and the water balloon explodes on the ground, lightly splashing your face."; } if (noun==Grail) { "The Holy Grail isn't something you want to throw around, even if it was made in Taiwan."; } if (noun==mpowder) { "That won't work too well."; } move noun to End_Of_World; print_ret "Your aim is off, and ", (the) noun, " lands back on the ground."; } if (self hasnt general) "You can't reach it from here."; if (action==##Eat) { print "Recalling your childhood years, you gulp down the crayon, only to have it spit itself out again."; if (writing has general) print "Magic Crayons apparently don't like being eaten."; new_line; rtrue; } ]; Cray gcrayon "green crayon" with description [; if (writing hasnt general) "It is a green crayon."; "It is a green crayon, one of the Magic Crayons of Destiny."; ], name "green" "crayon" "magic" "destiny" "of", before [; Eat: print "Recalling your childhood years, you gulp down the crayon, only to have it spit itself out again."; if (writing has general) print "Magic Crayons apparently don't like being eaten."; new_line; rtrue; ]; Object Disco "Outdoor Disco Club" with name "outdoor" "disco" "club" "crowd" "twisting" "undulating" "raised" "floor", description "A raised floor with an undulating and twisting crowd makes the whole scene defy further description.", nw_to End_Of_World, before [; Listen: "The music is quite hearable as it is."; ], initial [; if ((self hasnt general)&&(Leo.number==0)) { give self general; Leo.number=2; } ], cant_go "You can only go out the way you came in.", each_turn [ i; i=random(8); if (i==3) "^Loud throbbing in the bass strains and stretches your ears."; if (i==4) "^The music kicks up to a faster tempo."; if (i==5) "^The music slows down a notch."; ]; Nearby Chair "tall chair" has static, with name "tall" "chair" "legs", describe [; "^A chair with very tall legs looms before you."; ], description "It's a chair with very tall legs. How grandpa got up there is one of those mysteries shelved next to the aerosol deodorant."; Nearby Old_Man "old man" has animate male, with name "old" "man" "grandfather" "grandpa" "elbow", describe [; "^An old man is perched on top of the chair."; ], counter 0, before [; Push, PushDir: "You're really not in a good position to do that."; Torch: "That's not very sporting, annihilating an unarmed man like that."; ], life [; ThrowAt: if (noun==water_balloon) { give water_balloon ~general; move water_balloon to limbo; self.counter=2; "Your weapon strikes true, splattering the old man's face with water. He seemed to enjoy the experience, but immediately begins wiping his face dry."; } if (noun==Grail) { "The Holy Grail isn't something you want to throw around, even if it was made in Taiwan."; } if (noun==mpowder) { "That won't work too well."; } print_ret (The) noun, " just bounces off the man's head, who hardly notices."; ], each_turn [; if (self.counter>0) { self.counter=self.counter-1; if (self.counter==0) print "^The old man has finished drying his face and resumes his normal position.^"; } if (random(5)==1) { print "^The old man "; switch (random(3)) { 1: "fiddles with something out of your view."; 2: "sighs and shifts his position in the chair."; 3: "briefly does a ~Thinker~ sort of pose before relaxing again."; } } ], description [; print "He looks like he could be someone's grandfather, albiet a very energetic one. Every once in a while he twiddles some device too far away for you to see."; if (record hasnt general) "His hand is resting on a record that is just within reach."; new_line; rfalse; ]; Nearby Record "record" has scenery, with name "record", description "Looks like a disco record.", before [; Take: if (self hasnt general) { if (Old_Man.counter>0) { ! man distracted with water balloon move record to player; give record general; "You manage to grab the record while the old man is distracted."; } else "The old man's elbow is leaning on the record, holding it down."; } Push, PushDir: "I don't quite follow."; Play: if (second==0) "Your fingernail doesn't play the music on the record very well."; if (second==needle) { print "You move the needle along the record, and a few seconds of disco music erupt and die away.^"; if ((location==End_Of_World) && (lunatic hasnt general)) { give lunatic general; move lunatic to limbo; move hole to End_Of_World; "^The lunatic's eyes widen with fear, his hands tremble in fear, and his body is running with fear -- straight through the wall to the south, leaving an unusually large hole."; } rtrue; } "That isn't an effective tool for playing the record."; ]; Object hole "hole" has scenery static, with name "hole", description "It's a hole in the south wall.", before [; Enter: PlayerTo(Wall); ]; Object Needle "needle" has popper, with name "needle"; Object Market "A Market, of Sorts" with name "market" "pastel" "motif" "corner" "roads", description [; print "One man's market is another man's somewhat dilapidated looking corner with the word ~Market~ on a sign hanging above. "; if (Flamethrower hasnt general) print "Other than that, the only indicator of such is a cart that probably held items once but looks pretty barren at the moment. "; "The pastel motif does do a bit to lighten things up, though. Roads wind their way west and southeast."; ], cant_go "The exits are west and southeast.", w_to Square, se_to Normalcy; Nearby Sign_126 "sign" has static scenery, with name "sign" "hanging" "above", before [; Take, Push, PushDir: "It's too high up for you to reach, even if you jumped."; ], description "~Market.~ Very profound stuff. You mark a note to do a literary analysis sometime."; Nearby Flamethrower "L'il Terrorist Flamethrower" with name "l^il" "terrorist" "flamethrower" "weapon" "trigger" "slightly" "flame" "thrower" "little" "charred", initial [; if (self hasnt general) "Jammed into the frame of the cart is an official ~L'il Terrorist Flamethrower.~"; "There is a flamethrower (slightly charred) here."; ], description [; print "Every kid's favorite toy, for ages 3 and up."; if (self has general) { new_line; return 0; } " The only reason it hasn't been taken already seems to be that it is jammed solid into the frame of the cart."; ], before [; Take, Push, PushDir: if (self hasnt general) "The flamethrower is stuck in the frame of the cart."; SwitchOn, SwitchOff: "The flamethrower works by saying something like ~Fire flamethrower at haystack.~"; ]; Nearby Haystack "haystack" has static, with name "haystack" "hay" "stack", before [ ; Fneed: if (needle has general) "Only one is enough."; move needle to player; give needle general; "Never being one to take things literally, you actually do find a needle."; Search: "You find nothing of interest. Perhaps a more specific search would help."; Torch: "A glowing force field briefly appears around the haystack with a distant voice saying, ~This haystack protected by the Acme Anti-Arson System. Please call 1-800-ACME-FUN for more information. Thank you.~"; ], description "Haystacks are stacks composed of primarily hay. People also find needles in them (metaphorically, or course.)"; Nearby c_bag "bag of llama feed" has openable, with name "bag" "of" "llama" "feed", before [; Take, Push, PushDir: "It's too heavy."; Open: move o_bag to Market; remove self; itobj=o_bag; "The bag bursts open, revealing some giraffe food. It seems the bag was mislabeled."; Search: "Kind of tricky with the bag closed."; ], description "It is a bag of Uncle Joe's World-Class Llama Feed, Guaranteed to Make Your Llama Grow Faster. Also Included in Every Bag Absolutely Free is a Green Crayon. The bag is closed."; Nearby Cart "cart" has static scenery container open, with name "cart" "frame", description "It has ~Each item $1~ scrawled on the front. This has been crossed off and replaced with ~Each item 50 cents~ followed by ~Each item 25 cents~ and finally ~Everything free.~ This last one seems to have brought the customers, because the cart looks pretty barren."; Object o_bag "bag of giraffe feed" has openable open container transparent, with name "bag" "of" "giraffe" "feed" "llama", capacity 1, before [; Take, Push, PushDir: "It's too heavy."; Open: "The bag is already open."; Close: "The bag is ripped open. It isn't going to close."; Search: if (gcrayon has general) "You don't find any more prizes hidden in the bag."; if (feed has general) { move gcrayon to Market; give gcrayon general; "Another search reveals prize at the bottom: the green crayon!"; } give feed general; "You dig through the food but find nothing."; ], description "It is a bag of Uncle Joe's World-Class Llama Feed, Guaranteed to Make Your Llama Grow Faster. Also Included in Every Bag Absolutely Free is a Green Crayon. The bag is open, revealing some giraffe food."; Object feed "giraffe food" with name "giraffe" "food", article "some", before [; Take, Push, PushDir: "There's too much to carry, and it really isn't needed later."; Eat: style bold; print " "; style roman; "^^Actually tastes kind of good."; Search: if (self has general) { move gcrayon to Market; "Another search reveals prize at the bottom: the green crayon!"; } give self general; "You dig through the food but find nothing."; ], description "Loads of giraffe food."; Object Normalcy "Relatively Normal Street" with name "relatively" "normal" "street" "browns" "yellows" "pastel" "door" "doors", w_to Square, e_to Market, n_to HQ, s_to Ruins, cant_go "Paths lead east and west, and doors are to the north and south.", description "You've come across a relatively normal-looking section of town; the pastel motif and been traded in favor of dull browns and yellows. A building to the north has a sign and a door. A building to the south has a sign and a place that used to have a door. Paths to the east and west have neither signs nor doors."; Nearby Sign_49i "south sign" has static scenery, with name "south" "sign", description "~Come see the authentic Mayan ruins! Satisfaction guaranteed!~ Between the words ~the~ and ~authentic~ you can see in fine print ~slightly.~"; Nearby Sign_12345 "north sign" has static scenery, with name "north" "sign", description "~Official Headquarters of the Secret Society of the Moose.~"; Object HQ "The Secret Society of the Moose" with name "secret" "society" "dimmed" "light", s_to Normalcy, cant_go "The only exit is south.", before [; Listen: if (self hasnt general) "You are somewhat baffled by the speech, but it seems to have something to do with the inherent connections between moose, iguanas and electric light bulbs."; ], description [; if (self hasnt general) "The dimmed light and assorted decorations here were probably done to set a mysterious atmosphere, but you can never tell with people wearing costumes depicting famous moose throughout history sitting cross-legged on the ground engrossed in a speech being given by a fierce-looking lady who occasionally beats on the large bowl in front of her for emphasis. There is an exit to the south."; "The dimmed light and assorted decorations in here were probably done to set a mysterious atmosphere. The rest of the room is now abandoned, making the large bowl in the front of the room even more prominent."; ]; Nearby decorations "decorations" has scenery with name "decorations" "assorted" "pictures" "certificates" "other" "objects", description "Pictures, certificates, and other objects of mysterious import. One picture in particular stands particularly prominent."; Nearby picture "picture" has scenery with name "picture" "painting" "figure" "ship" "ancient", description [; print "The scene is on an ancient ship, where a strange figure totally in black except for a moose hat on its head is fending off a horde of Vikings with "; if (vcrayon hasnt concealed) "a blank space that used to have a weapon."; "a mauve crayon as a weapon. The crayon seems to stand out three-dimensionally from the rest of the picture."; ], before [; if (action==##Examine) { if (vcrayon in limbo) move vcrayon to HQ; rfalse; } ]; Nearby Giant_Head "giant moose head" has static with name "giant" "moose" "head", before [; if (action==##Examine) rfalse; if (HQ hasnt general) "There's a huge crowd and a speaker blocking your access."; Take, Push, PushDir: "This is a really big moose head. You can't budge it."; ], describe [; if (HQ has general) "^A huge moose head is hung on the wall."; "^A huge moose head is hung on the wall behind the speaker."; ], description "Fierce, embalmed, and very dead."; Nearby Lady "lady" has animate scenery female, with name "fierce" "fierce-looking" "lady" "outfit" "speaker" "orator", before [; Listen: "You are somewhat baffled by the speech, but it seems to have something to do with the inherent connections between moose, iguanas and electric light bulbs."; Torch: "Tempting, but not tempting enough."; ], each_turn [ i; i=random(15); if ((i<5) && (self hasnt general)) { give self general; "^The speaker takes some powder out of the bowl and sets it on the ground while taking out a lighted match. She puts the match to the powder, and it explodes. Apparently this illustrates some point in the lecture, but you can't fathom what."; } if (i>10) { switch (random(4)) { 1: "^The speaker beats on the bowl for emphasis."; 2: "^The speaker makes what seems to be an important point about the inherent connections between moose and electric light bulbs."; 3: "^The speaker makes what seems to be an important point about the inherent connections between iguanas and electric light bulbs."; 4: "^The speaker makes what seems to be an important point about the inherent connections between moose and iguanas."; } } ], description "Black hair, tanned body, outrageous outfit, and eyes with a color so odd they can't really be described."; Nearby Crowd "crowd" has animate scenery, with name "crowd" "people" "costumes" "famous" "history" "sitting" "cross-legged" "engrossed", article "the", before [; Torch: "That's not very sporting, annihilating an unarmed crowd like that."; ], description "The people are paying painfully close attention to the lady who is speaking. They are also paying equal attention to the huge moose head on the wall, as if they are expecting that to start giving a speech, too."; Nearby Bowl "bowl" has static scenery container open, with name "bowl" "carved" "marble", capacity 1, before [; if (action==##Examine) rfalse; if (HQ hasnt general) "There's a huge crowd and a speaker blocking your access."; if ((action==##Take)||(action==##Push)||(action==##PushDir)) "The bowl is much larger and heavier than you are."; ], description "Nicely carved out of marble, containing some sort of powder."; Object powder "dark powder" with name "powder" "dark", description "It's a dark, mysterious powder.", before [; if (action==##Examine) rfalse; if (HQ hasnt general) "There's a huge crowd and a speaker blocking your access."; if (action==##Take) "The powder streams between the gaps in your fingers. You need some sort of container."; if ((action==##Push) || (action==##PushDir) || (action==##LookUnder)) "It's only powder."; if (action==##Insert) { if (second==Coat) "The powder immediately slips through the seams at the bottom of your pocket and vanishes."; if (second~=Grail) "That won't work as a container."; move mpowder to Grail; "You fill the Grail with a quantity of powder."; } ]; Object mpowder "quantity of powder" with name "quantity" "of" "powder", before [; Insert: if (noun==Coat) "The powder immediately slips through the seams at the bottom of your pocket and vanishes in the air."; if (second==bowl) { remove mpowder; "You pour the powder back into the large bowl."; } if (second~=cannon) "That won't hold the powder too well."; move mpowder to cannon; "You put the powder into the cannon."; ], description "It's a dark, mysterious powder."; Cray vcrayon "mauve crayon" has concealed with description [; if (writing hasnt general) "It is a mauve crayon."; "It is a mauve crayon, one of the Magic Crayons of Destiny."; ], name "mauve" "crayon" "magic" "destiny" "of", before [; Take: give self ~concealed; rfalse; Eat: print "Recalling your childhood years, you gulp down the crayon, only to have it spit itself out again."; if (writing has general) print "Magic Crayons apparently don't like being eaten."; new_line; rtrue; ]; Object Ruins "Ancient Mayan Ruins" with name "ancient" "mayan" "ruins" "walls" "rubble" "statues" "statue" "old" "tire" "tires", n_to Normalcy, cant_go "The only exit is north.", description "This place does have an antique flavor to it, although you never knew the Mayans made statues made entirely of old tires. The electric light also seems to detract somewhat from the atmosphere. Still, if you like piles of rubble this tourist spot is quite a photo opportunity. The only exit is north."; Nearby rubble "rubble" has scenery, with name "rubble", before [; Search, LookUnder: if (bcrayon in limbo) { move bcrayon to Ruins; give bcrayon general; "You notice a black crayon under the rubble."; } ], description "It's rubble. Not too exciting, is it?"; Nearby elight "electric light" has scenery, with name "electric" "light" "bulb", description "A regular light bulb, currently on, and too high up to reach.", before [; if (action==##Examine) rfalse; "The light bulb is too high to reach."; ]; Nearby rock "bulky rock" has static, with name "bulky" "rock", before [; Take, Push, PushDir: "It's a lot bigger than you are."; ], each_turn [; if (child(d1)~=0 && child(d2)~=0 && child(d3)~=0 && child(d4)~=0 && d1 hasnt general) { give d1 general; move compartment to Ruins; "A secret compartment opens in the wall."; } ], initial [; "A bulky rock with writing scrawled on it is near one of the walls."; ], description "Big and rocklike. Also of note is the writing and the four depressions nearby."; Nearby writing "writing" has scenery static, with name "writing", number 0, before [; if (action==##Examine) { give self general; rfalse; } ], description [; print "On second glance, it isn't blood but merely red crayon. It reads: ~Insert the Magic Crayons of Destiny into the depressions to open the vault.~"; if (bcrayon hasnt general) { move bcrayon to Ruins; give bcrayon general; "^^You notice a black crayon under the rubble that you hadn't seen before."; } new_line; rtrue; ]; Class depression has scenery static container open transparent, with capacity 1, before [; Receive: if (noun hasnt is_crayon) "That won't fit."; ], description [; if (child(self)==0) "Depressing."; print_ret "Depressing. It contains ", (a) (child(self)), "."; ]; depression d1 "first depression" with name "depression" "first"; depression d2 "second depression" with name "depression" "second"; depression d3 "third depression" with name "depression" "third"; depression d4 "fourth depression" with name "depression" "fourth"; Cray bcrayon "black crayon" with description [; if (writing hasnt general) "It is a black crayon."; "It is a black crayon, one of the Magic Crayons of Destiny."; ], name "black" "crayon" "magic" "destiny" "of", before [; Eat: print "Recalling your childhood years, you gulp down the crayon, only to have it spit itself out again."; if (writing has general) print "Magic Crayons apparently don't like being eaten."; new_line; rtrue; ]; Object compartment "compartment" has container open static transparent, with capacity 1, name "compartment" "secret", initial [; if (child(self)==0) "A secret compartment is open."; print_ret "A secret compartment is open, containing ", (a) (child(self)), "."; ], before [; Take, Push, PushDir, LookUnder: "The compartment is part of the wall."; ], description [; if (child(self)==0) "It's a compartment in the wall."; print_ret "It's a compartment in the wall, containing ", (a) (child(self)), "."; ]; Object Grail "Holy Grail" has container open transparent, with capacity 1, name "holy" "grail" "stamp", before [; Receive: if ((noun~=powder) || (noun~=mpowder)) "You don't need to use the Grail for that."; Empty, EmptyT: if (child(self)==0) "There's nothing in the Grail."; if (second==0) "You pour the powder out of the Grail, and it slowly vanishes into the air."; <>; Fill, FillT: if (child(self)~=0) "The Grail is already full with powder."; if ((second==0) && (location==HQ)) second=powder; if ((second==0) && (location==Square) && (mpowder in Cannon)) second=powder; if (second==0) "There's nothing you can fill from here."; <>; Drink: if (child(self)==0) "The grail is empty."; if (child(self)==mpowder) "Powder is a solid, not a liquid."; "You don't need to do that, since you plan to live forever anyway."; ], description "The Holy Grail is supposed to grant anyone who drinks from it immortality, or at least that's what the movies say. You notice a ~Made in Taiwan~ stamp on the bottom."; Object Wall "In the Wall" with name "wall" "shadows" "shadow" "exit", description "Odor permeates this place, which seems to be the inside of a large wall. Shadows are positioned to look like they are ready to jump at you. The only exit is north.", n_to End_Of_World, cant_go "The only exit is north.", before [; Smell: "Death. Decay. Stench. Bubblegum."; ]; Nearby skeleton "skeleton" with name "skeleton" "bones" "skeleton^s" "arms", initial [; "A skeleton is leaning against the wall here."; ], before [; Take, Push, PushDir: "Have some respect for the dead."; ], description [; if (self hasnt general) "Poor fellow. He has a package cradled lovingly in its arms."; "The skeleton actually looks quite peaceful, now that it has been relieved of its package."; ]; Nearby package "brown package" has openable, with name "brown" "package", initial [; "A package is cradled in the skeleton's arms."; ], description [; if (skeleton hasnt general) "It's a brown package, cradled in the skeleton's arms."; "It's a brown package. There is a label on it marked ~To: Balances.~ Looks like the delivery boy got sent to the wrong address."; ], before [; Take: give skeleton general; rfalse; Open: remove package; move elephant to player; "You open the package and the wrapping disappears in a puff of smoke. You now have the pink cuddly toy elephant that was inside."; ]; Object elephant "prize elephant" with name "prize" "elephant" "cuddly" "toy", description "Pink, cuddly, toy, elephant. Says it all, really. Strange that it got sent here. Must be all the pastel motifs."; [ Initialise; ! The British are coming give player light; ! Darkness? We don't need no steenkin' darkness. ! These lines are to avoid some of the odder things that can ! happen in debugging Inform code. move Map to player; ! move Guide to player; move Coat to player; move Leo to Coat; move vcrayon to limbo; move Grail to compartment; move bcrayon to limbo; move feed to o_bag; move d1 to Ruins; move powder to Bowl; move d2 to Ruins; move d3 to Ruins; move d4 to Ruins; StartDaemon(Leo); location = Square; change_sta = 1; "^^Life. Death. Aerosol deodorant. ^^For many years, philosophers have pondered these great mysteries. Now, you are about to ponder the greatest mystery of all. . .^"; ]; end;