Constant Story "THE INCREDIBLE SHRINKING WOMAN, TOO!"; Constant Headline "^A Post-Feminist Kitchen Fable^ Copyright (c) 2000 by David Dyte.^"; Release 1; Replace PrintRank; Replace PrintTaskName; Include "Parser"; Constant TASKS_PROVIDED = 0; Constant MAX_CARRIED = 1; ! Constant SACK_OBJECT = big_bag; Constant MAX_SCORE = 2; Constant NUMBER_TASKS = 2; ! Constant AMUSING_PROVIDED; Array task_scores -> 1 1; ! attributes go here !arrays and globals here Object LibraryMessages with before [; Burn: "Only a toaster can truly burn something."; ]; Object Vortex "Vortex" with description "Where disappearing items go."; ! some objects can go here Include "VerbLib"; ! class definitions go here Class Region has light; Region on_the_bench "Kitchen Bench" with description "You stand atop the kitchen bench, surveying what was once a happy home, but now seems full of terror. Your family toaster stands before you, chrome faintly glimmering through years of baked on grime. A precipitous drop to the south overshadows the hard, tiled floor. To the east lies the sink, with its unwashed dishes appearing more menacing by the moment. Beyond the sink you can see the phone - perhaps your only chance to seek help.", s_to "A fall of that magnitude would kill a woman of your size.", e_to "Suicide, it is often said, is not the answer."; Object sink "sink" on_the_bench with name "sink" "dish" "dishes", description "So you were busy last night. And the night before. The dishes have been sitting here a while now, once clear water gradually becoming a sort of pale green. The way looks impassable.", before [; Examine: rfalse; default: "Don't even think about it.";], has concealed static; Object phone "phone" on_the_bench with name "phone" "telephone", description "The phone seems a long way off, now, sitting as it does on the wrong side of a fetid pile of dishes.", before [; Examine: rfalse; default: "The phone remains out of reach, shorty.";], has concealed static; Object toaster "toaster" on_the_bench with name "toaster", description [; print "Old and faithful, the toaster has served you well through two marriages and five children."; if (bread.number == 0) {print " The edge of a single piece of untoasted bread juts out from the top, awaiting its fate.";} else {print " The edge of a single piece of "; switch (bread.number) { 1 : print "medium brown"; 2 : print "well burnt"; 3 : print "thoroughly nuked";} print " toast juts out from the top.";} print " At the side of the toaster are a lever, for cooking the toast, and a dial, for setting the colour."; if (self has general) {print " Also, the toaster is currently lying on its side.";} print "^";], before [; Push, Pull, Attack, AttWith : if (self has general) {"Haven't you done enough damage?";} else {give self general; Achieved(0); "It's a huge effort, but with a mighty heave you bring the toaster down. A deafening clang echoes throughout the kitchen, and, as it dies away, the faintest sproing. It seems you broke a spring in there somewhere.";} Take : "The toaster is about four times as tall as you. So, no."; Climb, Enter : "The threat of electric shock stops you in your tracks."; ], has concealed static transparent; Object bread "bread" toaster with name "bread" "toast", description [; switch (self.number) { 0 : "Untoasted bread."; 1 : "Mmm, toasted just right. Yummy."; 2 : "Looking rather too burnt for good eating."; 3 : "Don't look, it's a disaster.";}], before [; Eat, Take : "Much too big for you, in your condition.";], number 0; Object lever "lever" toaster with name "lever", description "A simple lever. Push it to make your toast.", before [; Push, Pull: print "You wrench the lever down, and lie, exhausted, as the toaster does its stuff. "; if (toaster hasnt general) {print "Soon, the bread pops back up, "; switch (bread.number) { 0 : bread.number = 1; "nice and toasty brown."; 1 : bread.number = 2; "rather badly burnt."; default : bread.number = 3; "an unrecognisable mess.";}} else {print "Time passes, and soon you wonder where the toast has gone. The toaster begins to shake ever so slightly. Smoke plumes rise, but you are too tired now even to care. Soon it rocks back and forth, and eventually the bread, or what charcoal is left, shoots out of the top, heading for the sink. Seeing your last chance for survival fly by, you cling to a small ember. Even as it burns your ever shrinking hands, the ember's momentum carries you over the sink and crashing into the phone. With your last ounce (literally) of strength, you fall on the buttons: 9 1 1. ^^Next thing you know, you are awake, alive, and growing to near normal size in the local hospital. The media pack is waiting outside, waiting to hear your incredible story. The world will soon know of a small, faithful toaster and the day it saved a life...^"; Achieved(1); deadflag = 2; rtrue;}], ; Object dial "dial" toaster with name "dial", before [; Turn, Push, Pull, Take : "The dial has long since rusted into place.";]; [ Initialise; TitlePage(); location = on_the_bench; player.orders = UglyHackFix; thedark.description = DarkDescFix; player.description = "Looks like you, but smaller. And smaller! HELP!"; player.before = HackFix; "^^"; ]; [ TitlePage; @erase_window -1; print "^^^"; style bold; print "Bathroom"; style roman; print "^^>spray hair with spray^"; print "Moisturiser gently seeps into your follicles, leaving your hair bouncy, full of life, and ready to face the day. But something feels odd... as if the hairspray can is growing in your hand... soon it is as long as your arm, and you run in terror as it crashes to the floor. You turn for the door, only to realise it's receding into the distance...^^"; style bold; print "Bathroom (much bigger than before)"; style roman; print "^^>w^"; print "It seems forever till you make the door, and when you do, you wish you hadn't. With an AWWWK that sends chills through your spine, Peter, the family parrot, descends. It's a dizzying ride... somewhere long the way, you lose consciousness... then, as you awake in the kitchen, you realise, perhaps too late, that you are...^^"; ! font off; print " [Please press SPACE to begin.]"; font on; ! do { @read_char 1 0 0 i; } until (i==32 or 10 or 13); ! @erase_window -1; ]; [DarkDescFix; "It is pitch dark, and you can't see a thing."; ]; [UglyHackFix; default: rfalse; ]; [HackFix; Wave, Push, Pull, Turn, Lock, Open, Insert, Blow: "I'm not sure I understand your intention."; Attack, Burn, Cut: "Suicide is not the answer."; SwitchOn, SwitchOff: "You don't require batteries."; Squeeze: "From deep within you hear a cute honking sound."; Eat, Taste, Touch, Smell, Listen, Rub: "Is there a point to this?"; PutOn: if (parent(player) == second) print_ret "You are already on ", (the) second, "."; if (second has supporter) "That sounds like quite a feat. Try climbing."; "That sounds like quite a feat."; PushDir: "Wouldn't it be easier to walk there?"; default: rfalse;]; [DeathMessage; switch(deadflag) { 3: print "You have lost some way"; rtrue; 4: print "You have lost a different way"; rtrue; 5: print "You have not won"; rtrue;} ]; Include "Grammar"; Verb "pat" "pet" "stroke" = "kiss"; Verb "shake" = "wave"; Extend "transfer" replace * held "to" noun -> Transfer; Verb "clamber" = "climb"; Extend "climb" last * "on" "to" noun -> Climb * "on" noun -> Climb * "onto" noun -> Climb; [RideSub; "What a curious idea.";]; Verb "ride" * animate -> Climb * noun -> Ride; Verb "roll" = "push"; Verb "quaff" = "drink"; [HelpSub; "If you could get to the phone...";]; Verb meta "help" "info" "about" "hint" "hints" * -> Help; Verb "leap" = "jump"; [JumpOnSub; if (noun has supporter) <>; "What a curious idea.";]; Extend "jump" last * "off" -> Exit * "off" noun -> GetOff * "on" "to" noun -> JumpOn * "on" noun -> JumpOn * "onto" noun -> JumpOn; [WaylaySub; print "(jumping on then attacking ", (the) noun, ")^^Jump on: "; ; print "^Attack: "; <>;]; Verb "waylay" * noun -> Waylay; [AttWithSub; print "(throwing ", (the) second, " at ", (the) noun, ")^"; <>;]; Extend "attack" last * noun "with" held -> AttWith; Verb "kick" * noun -> Attack; Extend "swing" replace * held -> Wave; Extend "wave" replace * -> WaveHands * held -> Wave; [DiagnoseSub; "Shrinking fast! There might not be much time left!";]; [OddDiagSub; "Obviously you lack a medical background.";]; Verb "diagnose" * -> Diagnose * "me" -> Diagnose * animate -> Examine * noun -> OddDiag; [MagicWordSub; "No magic can help you now.";]; Verb "xyzzy" "plugh" "away" "yoho" "zork" "plover" * -> MagicWord; [HelloSub; "Hi. Is that really you? Lily Tomlin? Can I have your autograph?";]; [HelloToSub; <>;]; Verb "hi" "greetings" * -> Hello * animate -> HelloTo * noun -> WaveHands; Verb "hello" * -> Hello * animate -> HelloTo * noun -> WaveHands * "sailor" -> MagicWord; [ PrintTaskName ach; switch(ach) { 0: "for being pushy"; 1: "for getting a grip";} ]; [ PrintRank; print ", giving you the rank of "; switch(score) { 0: "The Incredible Shrinking Woman, Too."; 1: "The Incredible Shrinking Woman, Too, now with some small hope of survival."; 2: "a minor celebrity formerly known as The Incredible Shrinking Woman, Too.";} ];