! ------------------------------------------------------------------------------ ! ATROX.INF Version 3 ! ! Story of cat related terror ! ! Last Modified: David Cornelson ! ! ------------------------------------------------------------------------------ Constant Story "Cattus Atrox"; !Constant Debug; Constant Headline "^An Interactive Fiction Story - The 4th Annual Interactive Fiction Competition^ Author: David A. Cornelson (dcornelson@@64placet.com) Rel: 3.980930^ Helpers: Christopher Huang*, Trevor Mendham, Mary Kuhner*, Vincent Lynch, Bernd Schmidt^^ This work of IF contains strong language, violence, and sexual descriptions. It is not intended for children or anyone with a distaste for such things.^^"; Serial "980930"; Release 3; Replace DrawStatusLine; Include "Parser"; Include "VerbLib"; Include "YesNo"; Global sccount=0; Global lscount=0; Global suemove=0; Global drcount=0; Global SCAttack; Global straycat; Global wounds; Global endgame=false; Global dwcount=0; Global pRow; Global pCol; Global lattack=0; Global stcount; Global KarlTalk=0; Global YaFuckG=false; Global YFCount=0; Global scc=0; Global myname=false; Global FuckLook=false; Global igcount=0; Attribute looseropes; Attribute freehands; Attribute offhook; Attribute escape; Attribute legible; Attribute seen; Attribute living; Attribute manattack; Attribute lastlion; Attribute lmoved; Attribute callable; Property to_street; Property verse; Property cRow; Property cCol; Property index; Property lives; ! ! No score or turns...this is FICTION baby ! [ DrawStatusLine width posa posb; @split_window 1; @set_window 1; @set_cursor 1 1; style reverse; width = 0->33; posa = width-26; posb = width-13; spaces width; @set_cursor 1 2; print (name) location; @set_cursor 1 1; style roman; @set_window 0; ]; !------------------------------------------------------------------------------- ! Initialise !------------------------------------------------------------------------------- [ Initialise; lookmode=2; location = sw1; move napkin to player; move mancar to sw2; StartDaemon(catman); StartDaemon(resetdaemon); "^^Muddled from wine, you walk into the cold and damp night, hugging yourself. Looking back for a moment, you reflect on the evening, wondering why you felt unnerved. Everyone's attention was on Susan, the new marketing rep at work. Despite the fact that everyone thought she was interested in Scott, you were the one to capture her attention and her phone number. It all felt rather odd, and yet exhilarating at the same time. Looking up the street, you see fog and flickering lights in the moonless night.^"; ]; ! Poetry Object poetry with verse [v; switch (v) { 1: return "When the tea is brought at five o'clock^ And all the neat curtains are drawn with care,^ The little black cat with bright green eyes^ Is suddenly purring there."; ! Harold Monro, Milk for the Cat 2: return "She walks in beauty, like the night^ Of cloudless climes and starry skies;^ And all that's best of dark and bright^ Meet in her aspect and her eyes:^ Thus mellow'd to that tender light^ Which heaven to gaudy day denies."; ! Lord Byron, She Walks in Beauty 3: return "The day is done, and the darkness^ Falls from the wings of night,^ As a feather is wafted downward^ From an eagle in his flight."; ! Henry Wadsworth Longfellow, The Day Is Done 4: return "As soon as there is life there is danger."; ! Ralph Waldo Emerson 5: return "The path is smooth that leadeth on to danger."; ! William Shakespeare 6: return "The safest road to Hell is the gradual^ one - the gentle slope, soft underfoot,^ without sudden turnings, without^ milestones, without signposts."; ! C. S. Lewis 7: return "Those who will play with cats must expect to be scratched."; ! Cervantes 8: return "All cats are grey in the dark!"; ! Thomas Lodge } ]; ! ---------------------------------------------------------------------------- ! General objects ! ---------------------------------------------------------------------------- Object napkin "napkin" with name 'napkin' 'number', description "It's a plain white napkin with writing on it.", before [; Consult,Read: "You see Susan's phone number."; Drop: "It's far to valuable to leave laying around."; ], has legible; [ ReadSub; <>; ]; ! ---------------------------------------------------------------------------- ! Classes ! ---------------------------------------------------------------------------- Class sidewalk with name 'sidewalk', description [; print "On a sidewalk"; if (location == sw1) print ", in front of"; else print ", up the street from"; print " Scott's house, a thick fog moves through the neighborhood like a misty white river"; if (mancar in self) print ", and a faded green station wagon cruises nearby in the street."; else print "."; if (location == sw1) " Your home is to the north."; else " Home is north and Scott's house is back to the south."; ], n_to [; if (susan in location) return NoSusan(); switch (location) { sw1: return sw2; sw2: if (mancar in sw2) { move mancar to sw3; print "The station wagon follows you slowly up the street."; print "^"; } return sw3; sw3: if (mancar in sw3) { move mancar to sw4; print "The station wagon continues to follow you."; print "^"; } return sw4; sw4: if (mancar in sw4) { move mancar to dw; print "The station wagon turns in from the street and blocks the sidewalk in front of you.^"; } return dw; } ], s_to [; if (susan in location) return NoSusan(); switch (location) { sw1: print "The wine must be getting to you, because you suddenly remember your house is to the north, in the opposite direction.^"; return 1; sw2: return sw1; sw3: return sw2; sw4: return sw3; } ], sw_to [; if (location == sw1) { BackDoor(); rtrue; } rfalse; ], cant_go [; if (susan in location) return NoSusan(); switch (noun) { w_obj: if (location == sw1) return BackDoor(); "The houses are fenced and forboding."; e_obj: "Closely parked cars prevent entering the street."; default: "You're not sure about going there and spin around, disoriented."; } ], before [; GoToBD: return BackDoor(); ], after [; if (self hasnt seen) { switch (self) { sw1: print "^You notice the lights going out in the house.^"; sw2: print "A faded green station wagon appears from out of nowhere and slows down next to you.^"; } give self seen; } ], has static ~seen; [ NoSusan; "~No you don't,~ Susan says and grabs you by the arm, ~We're going in Scott's house...remember? Now let's go."; ]; [ BackDoor; if (endgame == false) { print "Shivering from the cold, you look at the house and wonder if you could get back in to call a cab. Then you remember the napkin and Susan's number. You think to yourself, he's probably pissed, better just leave him alone tonight.^"; rtrue; } PlayerTo(bd,2); ]; Class street with name 'street' 'road', description [; if (player in suecar) return; print ""; switch (location) { st1: print "You're in the street parallel to the sidewalk, lined with tightly parked cars. The street runs north-south and an intersection can be seen to the north."; st5: print "You're in the street in the middle of a t-intersection that leads north, south, and east."; st6: print "You're in the street, where the fog seems to have dissipated and the street is visible. The north portion of the street ends in a cul-de-sac."; st15: print "You're in the street, where the fog seems to have dissipated and the street is visible."; st7,st8,st10,st11: print "You're on a side street, narrower than before, yet still jammed with parked cars and running east-west."; st9: print "You're in the street near entrances to alleys to the north and south. The street runs east and west from here."; st17: print "You're in the street next to a park. The main street runs north-south and a side street heads west."; st12: print "You're in the street near an alley. The street is a dead-end and stretches south from here."; default: print "You're in the street, fog rolling around your feet."; } switch (random(9)) { 1: print " Flickering street lamps and thick fog hamper your vision."; 2: print " The fog rolls through the neighborhood like a shiny white sea of mist."; 3: print " Street lights blink out and the night closes in on you."; 4: print " The neighborhood seems to be silenced by the haze of descending fog."; 5: print " You stop for a moment to catch your breath and notice a terrorized reflection of yourself in a car window."; 6: print " You hear a muffled scream in the distance."; 7: print " You hide by a car while nervously squinting through the fog."; 8: print " The fog billows nearby, a large shape passing through it."; 9: print " Nearby, a street light sizzles and sparks, dims, then continues flickering."; } Dlions(); give self seen; ], n_to [; switch (location) { st1: return st5; st2: return st1; st3: return st2; st4: return st3; st5: return st6; st9: return a5; st13: return st12; st14: return st13; st15: return st14; st16: give susan ~offhook; return st15; st17: return st16; st18: return st17; st19: return st18; st20: return st19; st21: return st20; } ], s_to [; switch (location) { st1: return st2; st2: return st3; st3: return st4; st4: "Thick fog blocks any view to the south so you decide to stay where you are. You notice a small opening to the east though, through a couple of parked cars."; st5: return st1; st6: return st5; st9: return a4; st12: return st13; st13: return st14; st14: return st15; st15: return st16; st16: give susan ~offhook; return st17; st17: return st18; st18: return st19; st19: return st20; st20: return st21; } ], e_to [; switch (location) { st4: return fh; st5: return st7; st7: return st8; st8: return st9; st9: return st10; st10: return st11; st11: return st17; st13: return p11; st14: return p12; st15: return p13; st16: give susan ~offhook; return p14; st17: return p15; st18: return p16; st19: return p17; st20: return p18; } ], w_to [; switch (location) { st1: return dw; st7: return st5; st8: return st7; st9: return st8; st10: return st9; st11: return st10; st12: return a11; st17: return st11; } ], cant_go [; switch (location) { st6: if (noun == n_obj) "It's a dead end."; "The parked cars are too close together and with the bad leg, you won't be able to leap over cars."; st12,st21: "The street is pitch black that way and you balk at tempting fate."; default: "The parked cars are too close together and with the bad leg, you won't be able to leap over cars."; } return 1; ], before [; Look: if (player notin suecar) rfalse; switch (location) { st21,st20,st19,st18: "You see the park on the right and dark houses on the left."; st11, st10, st9, st8, st7: "You see parked cars, fog, and very little else."; st1: "You look in the driveway again, shake your head, and point for Susan, ~That's where it all began,~ you whisper."; st2, st3: "The fog is too thick to see anything but brief glimpses of parked cars and houses."; } Exit: if (player in suecar) "The car's moving and you're safe. You don't want to get out."; "You stand."; ], add_to_scope mlion flion c1lion c2lion c3lion c4lion catman, has scenery; Class alley with description [; print "You're in a dark alley, fog flowing from rooftops down to the ground,"; switch (location) { a1: print " that leads north. This part of the alley is a dead-end except for a western path into someone's backyard."; a2,a3,a4,a5,a6,a7,a8: print " that runs north and south."; a9: print " that turns south and east from here."; default: print " running east and west."; } if (location == a4) print " A narrow street can be seen to the north."; if (location == a5) print " A narrow street can be seen to the south."; if (location == a11) print " A street can be seen to the east."; Dlions(); ], n_to [; switch (location) { a1: return a4; a4: return st9; a5: return a9; } ], s_to [; switch (location) { a1: "A shadow runs across the alley to the south. You look to the north and the fog is thinner and the alley is vacant in that direction."; a4: return a1; a5: return st9; a9: return a5; } ], e_to [; switch (location) { a9: return a11; a11: return st12; } ], w_to [; switch (location) { a1: return bh; a11: return a9; } ], has scenery; Class sewer with name 'sewer' 'tunnel', description [; print "It's nearly pitch black down here."; if (location == s1) { if (sc1 has open) print " A bit of light can be seen through the entrance above."; } if (location == s10) { if (sc2 has open) print " A bit of light can be seen through the entrance above."; } switch (location) { s1,s2,s10,s11: print " The tunnel runs north-south, parallel with the street above."; s3: print " The tunnel bends south and east here."; s18: print " The tunnel bends north and east here."; s9: print " The tunnel bends south and west here."; s12: print " The tunnel bends north and west here."; default: print " The tunnel runs east-west here."; } if (self == s1 || self == s10) { if ((self == s1 && sc1 has open) || (self == s10 && sc2 has open)) print " Light from the entrance shines on an iron ladder."; print " An iron ladder leads up to a closed sewer grate."; } if (c4lion in location && c4lion has living) print " There is a female lion cub here."; if (c4lion in location && c4lion hasnt living) print " The carcass of a female lion cub is laying nearby."; switch (random(5)) { 1: " A rat scurries past your feet, squealing at you for invading its territory."; 2: " A rush of sewage runs down the tunnel, probably infecting your bleeding leg."; 3: " You hear a splash and movement behind you."; 4: " A group of rats hover nearby, then scamper off in all directions."; 5: " The water seems to be rising for a moment, then tapers off."; } ], n_to [; switch (location) { s1: return s2; s2: return s3; s10: return s9; s11: return s10; s12: return s11; s18: return s1; } ], s_to [; switch (location) { s1: return s18; s2: return s1; s3: return s2; s9: return s10; s10: return s11; s11: return s12; } ], e_to [; switch (location) { s3: return s4; s4: return s5; s5: return s6; s6: return s7; s7: return s8; s8: return s9; s13: return s12; s14: return s13; s15: return s14; s16: return s15; s17: return s16; s18: return s17; } ], w_to [; switch (location) { s4: return s3; s5: return s4; s6: return s5; s7: return s6; s8: return s7; s9: return s8; s12: return s13; s13: return s14; s14: return s15; s15: return s16; s16: return s17; s17: return s18; } ], u_to [; switch (location) { s1: give sc1 seen; return ld1; s10: give sc2 seen; return ld2; default: "You climb the side of the tunnel, then slide back down."; } ], add_to_scope mlion flion c1lion c2lion c3lion c4lion catman, has scenery light ~seen; Class park with name 'park', description "Bushes and trees surround the landscape and a street can be seen to the west.", n_to [; switch (location) { p2: return p1; p3: return p2; p4: return p3; p6: return p5; p7: return p6; p8: return p7; p9: return p8; p10: return p9; p12: return p11; p13: return p12; p14: return p13; p15: return p14; p16: return p15; p17: return p16; p18: return p17; } ], s_to [; switch (location) { p1: return p2; p2: return p3; p3: return p4; p5: return p6; p6: return p7; p7: return p8; p8: return p9; p9: return p10; p11: return p12; p12: return p13; p13: return p14; p14: return p15; p15: return p16; p16: return p17; p17: return p18; } ], e_to [; switch (location) { p6: return p1; p7: return p2; p8: return p3; p9: return p4; p12: return p5; p13: return p6; p14: return p7; p15: return p8; p16: return p9; p17: return p10; } ], w_to [; switch (location) { p1: return p6; p2: return p7; p3: return p8; p4: return p9; p5: return p12; p6: return p13; p7: return p14; p8: return p15; p9: return p16; p10: return p17; p11: return st13; p12: return st14; p13: return st15; p14: return st16; p15: return st17; p16: return st18; p17: return st19; p18: return st20; } ], cant_go [; "The trees are too thick in that direction."; ], has scenery; Class lion with list_together "lions", parse_name [w i; for(::) { w=nextword(); if (w=='lion') i++; else if (w=='carcass' && self hasnt living) i++; else if (w=='lioness' && self==fLion) i++; else if (w=='cub' && (self==c1Lion || self==c2Lion || self==c3Lion || self==c4Lion)) i++; else return i; } ], article "the", description [ c; if (self notin location) "A large shadow moves nearby."; if (self hasnt living) "The ", (name) self, " is dead, the carcass already beginning to gather flies."; switch (self) { mlion: "The lion is huge, with a thick mane and bright golden eyes."; flion: "The lioness is large, her sinewy body strolls nearby."; c1lion,c2lion,c3lion,c4lion: c=0; if (c1lion in location) c++; if (c2lion in location) c++; if (c3lion in location) c++; if (c4lion in location) c++; if (c==1) "The lion cub is about two hundred pounds and nearly as dangerous as the adult lions."; if (c==2) "Both of the lion cubs look very dangerous to you."; "All of the lion cubs look menacing as they circle you."; } ], before [; Attack: if (location ofclass sewer) rtrue; if (self notin location) "The ", (the) self, " isn't close enough to attack."; if (crowbar notin player && crowbar2 notin player) "You look around for something to use as a weapon, finding nothing."; if (second ~= crowbar && second ~= crowbar2) print "(with crowbar)^"; if (self has lastlion) { give self ~lastlion; if (crowbar in player) move crowbar to location; if (crowbar2 in player) move crowbar2 to location; print "You try to attack ", (the) self, " but "; if (self has female) print "she"; else print "he"; " roars at you and slaps the crowbar out of your hands."; } give self lastlion; self.lives--; if (self.lives == 0) give self ~living; switch (random(8)) { 1: print "Adrenaline pumps through your veins as you swing hard at ", (the) self, " and rip a gash in "; if (self has female) print "her side."; else print "his side."; 2: print "The crobar connects with ", (the) self, "'s head and "; if (self has female) print "she"; else print "he"; print " shawdow boxes you for a moment before backing down."; 3: print "The crobar rakes across ", (the) self, "'s shoulder, opening a wound."; 4: print "You stab ", (the) self, ", barely penetrating "; if (self has female) print "her"; else print "his"; print " fur, but drawing blood."; 5: print "The claw-end catches ", (the) self, " in the jaw and blood splashes outward."; 6: print "You roll away from ", (the) self, "'s attack and slam the crowbar across "; if (self has female) print "her"; else print "his"; print " stomach."; 7: print "With all your strength you hammer at ", (the) self, " again and again."; 8: print "As ", (the) self, " approaches, you swing the crowbar and hit "; if (self has female) print "her"; else print "him"; print " in the head."; } switch (self.lives) { 1: switch (random(2)) { 1: if (self has female) print " She"; else print " He"; " walks away, staggering from the attack."; 2: if (self has female) print " She"; else print " He"; " stumbles and retreats slowly."; } 0: switch (self) { mlion: " The great lion kneels, dizzy from your last blow, then slumps to the side. Blood froths from his mouth for a moment before he exhales his last breath.^^ Karl falls on top of the lion crying, ~What have you done? How could this have happened?~"; flion: print " The lioness slips and falls on her shoulder, then down completely, listless from your attacks. She roars half-heartedly, slowly breathing her life away."; if (mlion in location && mlion has living) print " The lion lumbers to her broken body and licks her face, purring, as if to comfort her departure."; " After a few moments, she shudders one last time, and despite the rush of a successful defense, you mourn the passing of such a beautiful creature.^^ Karl angrily shouts, ~Damn you! Damn you, you motherfucker,~ then in a voice of mourning he says to her still corpse, ~Goodbye my love. I avenge your death.~"; default: " The lion cub falls down suddenly and after a few convulsions, dies.^^ Karl says angrily, ~You're going to die a very painful death, my friend.~"; } default: switch (random(3)) { 1: " The ", (name) self, " turns and walks away for the moment."; 2: " The ", (name) self, " swipes at you and misses before retreating."; 3: " The ", (name) self, " roars in frustration and backs away."; } } ], cRow 10, cCol 7, has scenery concealed animate living ~lmoved; Class car has static; [ Dlions lc lh; lc=0; lh=false; if (c1lion in location) { lc++; lh=true; } if (c2lion in location) { lc++; lh=true; } if (c3lion in location) { lc++; lh=true; } if (c4lion in location) { lc++; lh=true; } if (mlion in location) lh=true; if (flion in location) lh=true; if (catman in location) { if (myname) print " Karl is here."; else print " The blonde-haired man is here."; } if (lh==true) { print " You also see "; if (mlion in location) { print "a lion"; if (flion in location) { if (lc>0) print ", a lioness"; else " and a lioness."; if (lc==1) ", and a lion cub."; if (lc>1) ", and ", (number) lc, " lion cubs."; else "."; } if (lc==1) " and a lion cub."; if (lc>1) " and ", (number) lc, " lion cubs."; else "."; } else { if (flion in location) { print "a lioness"; if (lc==1) " and a lion cub."; if (lc>1) " and ", (number) lc, " lion cubs."; else "."; } } if (lc==1) "a lion cub."; if (lc>1) " ", (number) lc, " lion cubs."; } print "^"; ]; Class SCover with name 'sewer' 'cover' 'grating' 'grate' 'entrance', description [; if (self has open) self.when_open(); else self.when_closed(); ], when_closed "The sewer entrance is blocked by a round iron grate.", when_open "The sewer entrance is open.", door_to [; if(location == ld1) { give sc1 seen; return st6; } if(location == st6) return s1; if(location == ld2) { give sc2 seen; return st15; } if(location == st15) return s10; ], door_dir [; if (location ofclass street) return d_to; else return u_to; ], before [; Open,Push: if (self hasnt seen && location ofclass street) "Huh?"; if (self has open) { give self ~open; "You move the iron grate onto the sewer entrance."; } give self open; "You move the grate away from the entrance."; Take: "It's way too heavy to carry."; ], has scenery door enterable ~open ~seen openable concealed; Object StraySong with daemon [; straycat=straycat+1; if (straycat < 3 || straycat > 9) return; if (location ofclass sewer) { print "^You hear Karl through the sewer entrance, singing..."; } else { if (catman in location) { if (straycat==3) print "^Karl looks at you with an odd humor in his eyes and bgins to sing..."; else print "^Karl continues singing..."; } else { move catman to location; print "^Karl appears behind you"; if (straycat==3) print " and begins to sing..."; else print " and continues singing..."; } } switch (straycat) { 3: "^^~Black and orange stray cat sittin' on a fence,^Ain't got enough dough to pay the rent,^I'm flat broke but I don't care,^I strut right by with my tail in the air...~"; 4: "^^~Stray cat strut, I'm a ladies' cat^I'm a feline casanova, hey, man, that's that^Get shoes thrown at me from a mean old man^Get my dinner from a garbage can...~"; 5: "^^~I don't bother chasin' mice around^I slink down the alley, lookin' for a fight^Howlin' to the moonlight on a hot summer night~"; 6: "^^~Singin' the blues while the lady-cats cry^Wow, stray cat, you're a real gone guy^I wish I could be as carefree and wild^But I got cat class and I got cat style~"; 7,8,9: "~I got cat class and I got cat style...~"; 10: StopDaemon(StraySong); } ]; ! ---------------------------------------------------------------------------- ! Objects that are everywhere you look ! ---------------------------------------------------------------------------- Global lch=0; [ ChooseObjects obj code; if (code<2) rfalse; if (action == ##Attack && obj ofclass lion) { if (obj in location && obj hasnt lastlion) { lch++; return (lch+9); } if (obj has lastlion) { give obj ~lastlion; return 1; } } if (obj == mancar) return 9; if (obj == mlion) return 8; if (obj == flion) return 7; return 0; ]; Object resetdaemon "reset" with daemon [; if (FuckLook==true && YaFuckG==false) { yfcount++; if (yfcount>1) Fucklook==false; } lch=0; give catman ~manattack; give catman ~lmoved; give mlion ~lmoved; give flion ~lmoved; give c1lion ~lmoved; give c2lion ~lmoved; give c3lion ~lmoved; give c4lion ~lmoved; ] has animate; Object Appear "appear" with daemon [; LAppear(); ] has animate; [ LAppear lc lh isare; lc=0; lh=false; if (c1lion has lmoved) { lc++; lh=true; } if (c2lion has lmoved) { lc++; lh=true; } if (c3lion has lmoved) { lc++; lh=true; } if (c4lion has lmoved) { lc++; lh=true; } if (mlion has lmoved) lh=true; if (flion has lmoved) lh=true; if ((lc==0 && mlion hasnt lmoved && flion has lmoved) || (lc==0 && flion hasnt lmoved && mlion has lmoved) || lc>0) isare=false; else isare=true; if (lh==true) { if (catman has lmoved) { switch (random(5)) { 1: print "^Out of the fog, Karl appears. Walking with him"; 2: print "^From the shadows, Karl appears. Standing near him"; 3: print "^As if from nowhere, Karl approaches. With him"; 4: print "^Coming through the darkness, Karl advances. Next to him"; 5: print "^From behind, Karl surprises you. In front of him"; } if (isare==true) print " are"; else print " is"; } else { switch (random(5)) { 1: print "^Out of the fog,"; 2: print "^From the shadows,"; 3: print "^As if from nowhere,"; 4: print "^Coming through the darkness,"; 5: print "^From behind,"; } } if (mlion has lmoved) { print " a lion"; if (flion has lmoved) { if (lc>0) print ", a lioness"; else { if (catman has lmoved) " and a lioness."; else " and a lioness approach."; } if (lc==1) { print ", and a lion cub"; if (catman has lmoved) "."; else " approach."; } if (lc>1) { print ", and ", (number) lc, " lion cubs"; if (catman has lmoved) "."; else " approach."; } } if (lc==1) { print " and a lion cub"; if (catman has lmoved) "."; else " approach."; } if (lc>1) print " and ", (number) lc, " lion cubs"; if (catman has lmoved) "."; else " approaches."; } else { if (flion has lmoved) { print " a lioness"; if (lc==1) { print " and a lion cub"; if (catman has lmoved) "."; else " approach."; } if (lc>1) { print " and ", (number) lc, " lion cubs"; if (catman has lmoved) "."; else " approach."; } else if (catman has lmoved) "."; else " approaches."; } } if (lc==1) { print " a lion cub"; if (catman has lmoved) "."; else " approaches."; } if (lc>1) print " ", (number) lc, " lion cubs"; if (catman has lmoved) "."; else " approach."; } ]; Object mylight "light" with found_in [; rtrue; ], has light concealed; Object fog "fog" with name 'fog', description "The fog is unusually thick, blocking the flickering street lights above you.", found_in [; if (location ofclass street || location ofclass alley || location ofclass park || location==bh || location==fh || location==dw || location ofclass sidewalk) rtrue; ], has scenery concealed; Object pcar "parked cars" with name 'parked' 'cars', description [; if (self hasnt seen) { give self seen; "The neighborhood has always frustrated you. The population is so thick here that it's nearly impossible to find a parking spot and when you do, your car ends up jammed between two other cars. Tonight's no different, the cars are bumper to bumper."; } print "The cars are bumper to bumper, parked on both sides of the street."; if (location == dw || location == st4) " There's a slight opening between cars to the east."; ""; ], found_in [; if (location ofclass street || location ofclass sidewalk || location == dw) rtrue; rfalse;], has scenery concealed ~seen; Object strees "trees" with name 'tree' 'trees', description "The trees that line the street are tall and in full bloom. Fog creeps through the leaves and branches, casting an eery luminescence.", before [; Climb: "None of the trees offers a low branch to start your climb."; ], found_in [; if (location ofclass street || location ofclass sidewalk || location == dw) rtrue; else rfalse; ], has scenery concealed; Object ptrees "trees" with name 'tree' 'trees', description "The trees are tall and in full bloom. Fog creeps through the leaves and branches, casting an eery luminescence.", before [; Climb: "None of the trees offers a low branch to start your climb."; ], found_in [; if (location ofclass park) rtrue; else rfalse; ], has scenery concealed; Object pbushes "bushes" with name 'bush' 'bushes' 'shrubs', description "There are bushes everywhere.", before [; HideIn: "You can't hide in any of the bushes."; ], found_in [; if (location ofclass park) rtrue; else rfalse; ], has scenery concealed; Object lstreet with name 'street' 'road', parse_name [ i; while (NextWord()=='street') i++; return i; ], description [; if (location ofclass street) "The fog flows past your feet, eerily blanketing the street like a plague from above."; switch (location) { sw1: "Beyond the parked cars, the street is blanketed in thick white fog."; sw2,sw3,sw4: "Surrounding the faded green station wagon, parked cars float in thick white fog."; dw: "Between the tightly parked cars you see dense white fog flow down the street."; fh: "The fog is higher now, almost covering the parked cars and completely obliterating and view of the street."; a4,a5,a11: "The fog flows past you, along the street and through the neighborhood."; default: "At the edge of the park you see the fog fill the street like a spiritual blockade."; } ], before [; Enter: switch (location) { sw1,sw2,sw3,sw4: "You're too drunk to climb over the cars and there's no way in between."; dw: location.e_to(); fh: location.w_to(); a4: location.n_to(); a5: location.s_to(); default: location.w_to(); } ], found_in sw1 sw2 sw3 sw4 dw fh a4 a5 a11 p1 p7 p8 p12 p14 p15, has scenery concealed; Object slight "street lights" with name 'street' 'lights', parse_name [ i; while (NextWord()=='street' or 'lights') i++; return i; ], description "The street lights flicker and buzz with misty fog swirling by.", before [; Examine, Search: "The street lights flicker and buzz with misty fog swirling by."; ], found_in sw1 sw2 sw3 sw4 dw fh a4 a5 a11 p1 p7 p8 p12 p14 p15, has scenery concealed; Object lsidewalk with name 'sidewalk', description "Trying to shake off the wine, you line yourself up with the sidewalk, hoping you're not too drunk to get home.", found_in sw1 sw2 sw3 sw4, has scenery concealed; ! ---------------------------------------------------------------------------- ! Objects from Classes ! ---------------------------------------------------------------------------- car mancar "green station wagon" with name 'green' 'station' 'wagon' 'car' 'auto', description [; switch (parent(self)) { sw2,sw3,sw4: "It's a faded green station wagon with darkly tinted windows and a man driving. The man smiles at you."; dw: "It's parked in the driveway, blocking your way home."; } ], before [; Search: if (location ~= dw) "An older model, the station wagon has seen better days. A blonde-haired man is sitting in the driver's seat smiling at you and the rest of the car remains hidden behind tinted windows."; "You can't see anything inside the car."; Enter: if (location == dw) { if (catman in location) "Karl blocks your way."; print "You look around for signs of Karl then quietly slip into the driver's seat...^"; PlayerTo(inmancar,2); rtrue; } "You can't enter the car while it's moving."; Open: if (location == dw) "Karl moves between you and the car door."; "You can't open the car door while the car is moving."; ], has scenery container open openable; Object -> reardoor "rear door" with name 'rear' 'door' 'handle', description [; print "The rear door folds down from the car with a glass window that folds upward. "; if (self has open) "The door and window are open."; "The door and window are closed."; ], before [; Search: "You can't see anything from this angle."; Open: "Karl refuses to let you near the car."; ], has scenery container ~open; [ resetlions; mlion.lives=20; flion.lives=15; c1lion.lives=10; c2lion.lives=10; c3lion.lives=10; c4lion.lives=3; ]; lion -> mlion "lion" with name 'lion', lives 20, daemon [; if (self in location) CatAttack(self); else if (random(3)==2) CatMove(self); ]; lion -> flion "lioness" with name 'lion' 'lioness', lives 15, daemon [; if (self in location) CatAttack(self); else if (random(3)==2) CatMove(self); ], has female; lion -> c1lion "lion cub" with name 'lion' 'cub' 'cubs', lives 10, daemon [; if (self in location) CatAttack(self); else if (random(5)==1) CatMove(self); ]; lion -> c2lion "lion cub" with name 'lion' 'cub' 'cubs', lives 10, daemon [; if (self in location) CatAttack(self); else if (random(5)==2) CatMove(self); ], has female; lion -> c3lion "lion cub" with name 'lion' 'cub' 'cubs', lives 10, daemon [; if (self in location) CatAttack(self); else if (random(5)==3) CatMove(self); ]; lion -> c4lion "lion cub" with name 'lion' 'cub' 'cubs', lives 3, before [; Attack: if (self hasnt living) "The lion cub is already dead."; if (crowbar notin player && crowbar2 notin player) { print "With what, your bare hands?"; return CubAttack(); } if (crowbar notin NoWhere) { move crowbar to NoWhere; move crowbar2 to player; } if (second ~= crowbar && second ~= crowbar2) print "(with crowbar)^"; self.lives--; give self manattack; switch (self.lives) { 2: "^The crobar swings down hard on the lion cub's head, eliciting a dulled roar."; 1: "^As the lion cub approaches, you catch her neck with the claw end of the crowbar before she can attack."; default: give self ~living; StopDaemon(SewerCat); "The crowbar catches her in the ear and with the power of fear and adrenaline, you hit her again and again until she collapses."; } Push,Take: if (self has living) { print "As you near the lion cub..."; return CubAttack(); } "The carcass is too heavy."; ], daemon [; if (self in location) CatAttack(self); else if (random(5)==4) CatMove(self); ], has female ~manattack; Attribute anger; Object -> catman "man" with name 'man' 'Karl' 'stranger', description [; if (YaFuckG) "The man stares at you with black eyes and a determined look."; switch (parent(parent(self))) { sw2: give self seen; if (YaFuckG) "The man stares at you with black eyes and a determined look."; "With blonde hair, light glasses, and an easy smile, the man looks relatively friendly, which eases your fears."; default: if (self has seen) { if (self in location) "Dark eyes and an odd smile force you to look down, the man does not invite close scrutiny."; "Karl is nowhere to be seen."; } if (self in location && location ~= sw1) { if (YaFuckG) "The man stares at you with black eyes and a determined look."; give self seen; if (self hasnt anger) "With blonde hair, light glasses, and an easy smile, the man looks relatively friendly."; "Karl returns your look with a manevolent gaze."; } "Huh?"; } ], daemon [; if (location ~= dw || self has manattack) rfalse; print "^The man slowly gets out of the car and leans against it. He lights a cigarette, inhales, and says, ~Fuckin' strange night.~^"; self.daemon=daemon_1; ], life [; Answer: if (noun == 'hello' or 'hi') "The man smiles at you and nods."; Attack: give self manattack; switch (location) { sw2,sw3,sw4: "It's not in your nature to attack strangers in their cars."; dw: if (mlion in mancar) "Frightened by Karl's aggressiveness, you decide to take matters further. You approach Karl slowly and then quickly try to tackle him. Karl, surprised by your boldness, evades your attack and slams you into the side of the car.^^~Fucking asshole!~ he says, and kicks you in the stomach."; if (flion in mancar) "Against better judgement, you try to attack Karl, but the lion flashes a claw in your direction and you back off just in time. The lion roars your direction and Karl says, ~Not wise my friend.~"; "Surrounded by six lions, you decide to refrain from attacking Karl."; } if (crowbar in player || crowbar2 in player) "Karl backs away before you can get close enough to strike."; "Karl blocks your punch and hits you in the side, knocking the wind out of you."; Kiss: "You flirt with the man, but he resists, laughing and saying to himself, ~I think we found a live one tonight!~"; Ask: switch (second) { 'cat','lion','cats','lions': switch (location) { sw1,sw2,sw3,sw4: "~Funny, how did you know I loved cats?~ he says."; dw: if (mlion in car) "~It just so happens I have a litter in the car,~ he replies."; "He looks at you and smiles, ~You're going to learn a lot about lions tonight.~"; default: "Karl replies, ~lions are beautiful creatures, aren't they?~"; } 'car': "~What about it?~ he asks rhetorically."; 'cigarette','smoke','cig': "~Sorry, all out,~ he shrugs."; 'night': "~Yeah, it's a pretty perfect night,~ he replies."; default: if (location ofclass sidewalk) "He ignores you."; igcount++; switch (igcount) { 1: "He looks at you and mumbles something, but ignores what you said."; 2: "~Whatever,~ he replies."; 3: "~No one's listening to you,~ Karl says sarcastically."; 4: "Karl shakes his head, ~You're a fucking idiot, ya know that?~"; 5: igcount=0; "~Shut the fuck up!~ he yells."; } } ], has animate scenery ~seen supporter ~manattack callable ~anger; Object -> cig with name 'cigarette' 'smoke', description "You've never been much of a cigarette smoker and generally avoid them at all costs.", before [; Take: "You don't smoke."; ], has scenery concealed; Object -> bhair with name 'blonde' 'hair', description "It's blonde.", has scenery concealed; Object -> glasses with name 'glasses', description "They're wire-rimmed and fashionable.", has scenery concealed; Object -> msmile with name 'smile', description "It's seems forced.", has scenery concealed; [ daemon_1; if (self has manattack) rfalse; print "^~My name is Karl,~ he says, puffing further on his cigarette. ~With all of this fog tonight, a guy could get mugged...or worse.~^"; myname=true; self.daemon=daemon_2; ]; [ daemon_2; if (self has manattack) rfalse; print "^~You look a little bit worried my friend,~ Karl says. He moves closer, blows smoke in your face, then flicks his cigarette into the street.^"; self.daemon=daemon_3; ]; [ daemon_3; if (self has manattack) rfalse; print "^~I know someone that would like to meet you,~ he says, while moving to the back of the station wagon. Careful not to let you out of his sight, he turns the handle on the rear door and pauses to listen to something inside, smiling all the time.^"; self.daemon=daemon_4; ]; [ daemon_4; if (self has manattack) rfalse; print "^~Well hello,~ he whispers inside the car as he opens the rear door (and window). ^^Not knowing what to think, you crane your neck to the right, trying to get a glimpse of what's inside. A moment passes before an extraordinarily loud roar shatters the quiet, fog-filled night.^"; give reardoor open; self.daemon=daemon_5; ]; [ daemon_5; if (self has manattack) rfalse; print "^Karl stands aside, raises an arm and bows, as if someone important was about to appear....^^ Then, as if on cue, a large male lion drops from the rear of the car and rubs up against Karl's legs. He bends down to pet the lion and whispers in its ear.^^ Cold sweat causes you to shake uncontrollably.^"; move mlion to dw; give catman anger; StartDaemon(mlion); self.daemon=daemon_6; ]; [ daemon_6; if (self has manattack) rfalse; print "^One by one, a female lion and four younger ones leap from the rear of the car until you're surrounded. The lioness licks her paws while her golden eyes stare right through you. Karl says, ~A little tidbit about lions. If you're worried about the large male, he's not likely to attack you first. The lioness is the hunter, but the male does eat first. The whole pride needs about 75 pounds a day,~ he eyes you up and down and adds, ~That would make you about two days worth of food.~^"; move flion to dw; move c1lion to dw; move c2lion to dw; move c3lion to dw; move c4lion to dw; StartDaemon(flion); StartDaemon(c1lion); StartDaemon(c2lion); StartDaemon(c3lion); StartDaemon(c4lion); StartDaemon(Appear); self.daemon=daemon_7; ]; [ daemon_7; if (self has manattack) rfalse; print "^Karl quietly approaches you. ~My children are hungry and you,~ he pokes you in the chest, ~look,~ and again, ~like....dinner.~^"; give dw escape; self.daemon=daemon_8; ]; [ daemon_8; if (location == st1) { print "^The man leaps onto a parked car and bends to one knee, staring at you with black eyes and a feral grin. He whispers to you, ^^~"; print (string) poetry.verse(3), "~^^~I am Longfellow!~ he yells, ~and you will feed my pride.~^"; move self to location; StartDaemon(StraySong); } self.daemon=daemon_9; ]; [ daemon_9; if (catman in location && cgun in player && cgun hasnt concealed) { move cgun to NoWhere; "^Karl notices the gun in your hand and quickly grabs it away from you. He clicks it open and says, ~Damn lucky there weren't any bullets in here. I wasn't even sure.~^"; } if (catman in location && player in inmancar) { print "^Karl pulls you out of his car yells, ~What the hell are you doing in my car?~^"; PlayerTo(dw,2); } ]; Object -> windows "windows" with name 'tinted' 'window' 'windows', description "The windows are darkly tinted, almost painted black, leaving the back of the car completely hidden, leaving you feeling very uncomfortable.", before [; Search: if (location ~= dw) "You search the windows for something to focus on but it's just too dark outside."; if (mlion notin mancar && flion notin mancar && c1lion notin car && c2lion notin car && c3lion notin car && c4lion notin car) "You search the car for further signs of movement, seeing nothing but darkness."; "You're too distracted by the blonde-haired man to care about the car."; ], has scenery container; Object inmancar "Inside Karl's Car" with name 'inside' 'car' 'station' 'wagon', description "You're inside of Karl's car and it's a disaster. The seats are shredded from cat claws, an overwhelmingly foul odor eminates from the back and the seat and floor are covered with rotting garbage.", out_to dw, add_to_scope catman mLion fLion c1Lion c2Lion c3Lion c4Lion, has scenery; Object -> carstuff "car stuff" with name 'garbage' 'seat' 'dash' 'steering' 'wheel' 'window', description "You don't need to refer to that in the game.", has scenery; Object -> gcomp "glove compartment" with name 'glove' 'box' 'compartment', description [; if (self hasnt open) "It's closed."; else "It's open."; ], before [; Open: if (self has locked) "It's locked."; ], with_key ckey, has container openable locked lockable scenery; Object -> -> cgun "gun" with name 'gun' 'pistol', description "The gun is a small revolver, probably a .38.", invent [; if (inventory_stage==2) { if (self has concealed) print " (hidden in clothes)"; rtrue; } ], before [; Open: "You check the cylinder and the gun is empty."; Take: if (self in player && self has concealed) { if (location==tdopen) { if (lropes hasnt looseropes) "The rope is too tight to free your hands."; if (lropes hasnt freehands) "Your hands aren't free."; give cgun ~concealed; ""; } give cgun ~concealed; if (location==lrc && suemove>5) { "Despite your drugged state, you manage to pull the pistol out from under your clothes and wave it aimlessly about."; } if (catman in location) { move cgun to NoWhere; "As you pull the gun out, Karl recognizes it and grabs it out of your hand. He flicks it open and says, ~I didn't even know if it was loaded or not. I guess I'm lucky it wasn't!~"; } if (lropes hasnt freehands) "You pull the gun out from under your clothes.^"; } rfalse; ], has container openable ~open ~concealed; Object -> khole "ignition" with name 'ignition', description [; if (self hasnt seen) { give self seen; move ckey to khole; } if (ckey in self) "There is a key in the ignition."; else "There is no key in the ignition."; ], has scenery open container ~seen; Object ckey "car key" with name 'car' 'key' 'chain' 'ring', description [; if (khole hasnt seen) "You don't see any key here."; "It's a small ring with a single key on it."; ], before [; Take: if (khole hasnt seen) "You don't immediately see a key anywhere."; ]; car parkedCar; Object NoWhere; [ CatAttack catobj ra ic rc; if (self hasnt living) return; if (st1 hasnt seen) return; ic=11; ! ! Increasing odds you will get attacked if you've already been attacked. ! if (wounds & 1) ic--; if (wounds & 2) ic--; if (wounds & 4) ic--; if (wounds & 8) ic--; if (wounds & 16) ic--; if (wounds & 32) ic--; if (wounds & 64) ic--; if (wounds & 128) ic--; if (wounds & 256) ic--; if (wounds & 512) ic--; rc=random(ic); ! if ((rc==1 || rc==2) && lattack<2) { lattack++; ra=random(10); if (ra==1) rfalse; print "^The ", (name) catobj; switch (ra) { 2: print " rushes you and knocks you down"; if (wounds & 2) return CatDistract(catobj); wounds = wounds + 2; print ". "; if (catobj has female) print "She "; else print "He "; print " claws your face, cutting a long gash across your cheek and ripping through one of your eyes sockets. Karl whistles from nearby and the lion retreats."; 3: print " suddenly leaps at you"; if (wounds & 4) return CatDistract(catobj); wounds = wounds + 4; print " and tackles you hard to the ground. The ", (name) catobj," slashes your side open before being called off by Karl."; 4: print " slowly walks up to you"; if (wounds & 8) return CatDistract(catobj); wounds = wounds + 8; print ". As you back away, the ", (name) catobj, " rises up on "; if (catobj has female) print "her"; else print "his"; print " back claws and knocks you down, cracking your head hard on the ground. You hear Karl order "; if (catobj has female) print "her"; else print "him"; print " away from you and say, ~Not your day, I guess.~"; 5: print " bounds at you from the side"; if (wounds & 16) return CatDistract(catobj); wounds = wounds + 16; print " and slashes your head, leaving your ear torn and bleeding. Karl calls the ", (name) catobj, " off of you before any more harm is done."; 6: print " crawls toward you as if on the hunt"; if (wounds & 32) return CatDistract(catobj); wounds = wounds + 32; print ". When "; if (catobj has female) print "she"; else print "he"; print " gets near enough, "; if (catobj has female) print "she"; else print "he"; print " slaps low at your leg, putting a gash in your left ankle. You hear Karl say, ~Here kitty kitty,~ and the ", (name) catobj, " walks away."; 7: print " charges you head on"; if (wounds & 64) return CatDistract(catobj); wounds = wounds + 64; print " and rams you in the chest, knocking the wind out of you. Laying on the ground, you feel overwheling pain in your chest, probably broken ribs.^^ Karl whistles to the ", (name) catobj, " and "; if (catobj has female) print "she"; else print "he"; print " roars loudly in your face, forcing sobs from your throat. The ", (name) catobj, " reluctantly turns away from you."; 8: print " lumbers close to you"; if (wounds & 128) return CatDistract(catobj); wounds = wounds + 128; print " and circles. You spin with "; if (catobj has female) print "her"; else print "him"; print " watchfully and as you try to back away, "; if (catobj has female) print "she"; else print "he"; print " rakes "; if (catobj has female) print "her"; else print "his"; print " claws over your right quadracep."; 9: print " trots up to you"; if (wounds & 256) return CatDistract(catobj); wounds = wounds + 256; print " and pushes you down playfully. "; if (catobj has female) print "She"; else print "He"; print " kneads your stomach, claws partially extended and rips through your abdomen while licking your face. The pain is overwhelming and you black out for a moment. Karl walks up and chastises the ", (name) catobj, ". He slaps you a few times saying, ~Come'on, isn't this fun?~"; 10: print " attacks you head on"; if (wounds & 512) return CatDistract(catobj); wounds = wounds + 512; print ", going for your jugular and barely missing. Blood flows from the wound albeit slowly.^^Karl apologizes, ~"; if (catobj has female) print "She"; else print "He"; print " didn't mean to get so rough and I wasn't paying attention. You'll be okay.~"; } if (ic>=7) ""; deadflag=1; "^^Then another lion attacks and soon they're pounding you from all sides. Karl yells, ~KILL!~ and the lions tear at your flesh ferociously, somehow missing enough vital organs to keep you from dying quickly. But eventually one of the lions clamps down on your neck and as the light fades you hear Karl recite another poem,^^~", (string) poetry.verse(6), "~"; } if (lattack==2) lattack=0; ]; [ CatDistract catobj; print ", but something distracts "; if (catobj has female) print "her and "; else print "him and "; if (catobj has female) print "she walks away."; else print "he walks away."; KarlTalk++; switch (KarlTalk) { 1: " Karl pets the ", (name) catobj, " and says, ~He's had enough for now...let's play with him a bit more.~"; 2: " Karl kneels and talks to the ", (name) catobj, " saying, ~That's okay. I know you're hungry, but daddy has to have some fun too.~"; 3: " Karl looks at you and says, ~You're lucky they're in a playful mood.~"; 4: " Karl says, ~", (string) poetry.verse(7), "~"; 5: " Karl says, ~How about a little Monro?~ he asks and recites a poem, ~", (string) poetry.verse(1), "~"; 6: " Karl lies on the ground and looks up at the sky, ~It's such a beautiful evening. It reminds me of Lord Byron...~^^", (string) poetry.verse(2); 7: KarlTalk=0; } ]; ! ! The wounded functions ! [ DiagnoseSub; if (wounds == 0) "You're a little drunk, but otherwise healthy."; if (wounds & 1) print "Your right leg is bleeding badly. "; if (wounds & 2) print "Your face is torn open and you can't see out of one eye. "; if (wounds & 4) print "There is a large gash in your side. "; if (wounds & 8) print "You have a bruise on the back of your head. "; if (wounds & 16) print "Your right ear is torn and bleeding. "; if (wounds & 32) print "Your left ankle is ripped to shreads. "; if (wounds & 64) print "Your ribs are probably broken. "; if (wounds & 128) print "Your left quadracep is clawed open. "; if (wounds & 256) print "Your stomach is cut and bleeding. "; if (wounds & 512) print "Your neck is sliced open, just shy of your jugular. "; print "^"; ]; Object wound "wound" with name 'wound' 'injury' 'wounds' 'imjuries', description [; DiagnoseSub(); ], found_in [; if (wounds > 0) rtrue; else rfalse; ], has scenery concealed; Object leg "leg" with name 'leg' 'legs', description "Your right leg is bleeding badly.", found_in [; if (wounds & 1) rtrue; else rfalse; ], has scenery concealed; Object face "face" with name 'face' 'eye' 'eyes', description "Your face is torn open and you can't see out of one eye.", found_in [; if (wounds & 2) rtrue; else rfalse; ], has scenery concealed; Object side "side" with name 'side', description "There is a large gash in your side.", found_in [; if (wounds & 4) rtrue; else rfalse; ], has scenery concealed; Object head "head" with name 'head', description "You have a bruise on the back of your head.", found_in [; if (wounds & 8) rtrue; else rfalse; ], has scenery concealed; Object ear "ear" with name 'ear', description "Your right ear is torn and bleeding.", found_in [; if (wounds & 16) rtrue; else rfalse; ], has scenery concealed; Object ankle "ankle" with name 'ankle' 'ankles' 'feet' 'foot', description "Your left ankle is ripped to shreads.", found_in [; if (wounds & 32) rtrue; else rfalse; ], has scenery concealed; Object ribs "ribs" with name 'chest' 'ribs', description "Your ribs are probably broken.", found_in [; if (wounds & 64) rtrue; else rfalse; ], has scenery concealed; Object quad "quad" with name 'quadracep' 'quad', description "Your left quadracep is clawed open.", found_in [; if (wounds & 128) rtrue; else rfalse; ], has scenery concealed; Object stomach "stomach" with name 'gut' 'guts' 'stomach', description "Your stomach is cut and bleeding.", found_in [; if (wounds & 256) rtrue; else rfalse; ], has scenery concealed; Object neck "neck" with name 'neck', description "Your neck is sliced open, just shy of your jugular.", found_in [; if (wounds & 512) rtrue; else rfalse; ], has scenery concealed; [ CatMove catobj; ! ! The headstart... ! if (st1 has seen) { stcount++; if (stcount < 5) return; } else return; ! if (location == st21) return; ! No lions in pickup spot.... if (catobj in location) return; if (catobj hasnt living) return; if (location ofclass sewer) return; ! Not sure what to do with lions while in sewer... ! ! Get Players Grid Location ! PGrid(); ! ! Randomly stay put... ! if (random(2) == 2) return; CalcCatMove(catobj); move catobj to NewCatLoc(catobj); !print (name) catobj," is now in the ", (name) parent(catobj), ".^"; if (parent(catobj) == location) { give catobj lmoved; if (catman notin location) give catman lmoved; move catman to location; } ]; [ NewCatLoc catobj; switch (catobj.cRow) { 0: switch (catobj.cCol) { 4: return p1; 5: return p2; 6: return p3; 7: return p4; } 1: switch (catobj.cCol) { 3: return p5; 4: return p6; 5: return p7; 6: return p8; 7: return p9; 8: return p10; } 2: switch (catobj.cCol) { 2: return p11; 3: return p12; 4: return p13; 5: return p14; 6: return p15; 7: return p16; 8: return p17; 9: return p18; } 3: switch (catobj.cCol) { 1: return st12; 2: return st13; 3: return st14; 4: return st15; 5: return st16; 6: return st17; 7: return st18; 8: return st19; 9: return st20; 10: return st21; } 4: switch (catobj.cCol) { 1: return a11; 6: return st11; } 5: switch (catobj.cCol) { 1: return a10; 6: return st10; } 6: switch (catobj.cCol) { 1: return a9; 2: return a8; 3: return a7; 4: return a6; 5: return a5; 6: return st9; 7: return a4; 8: return a3; 9: return a2; 10: return a1; } 7: switch (catobj.cCol) { 6: return st8; 10: return bh; } 8: switch (catobj.cCol) { 6: return st7; 10: return fh; } 9: switch (catobj.cCol) { 5: return st6; 6: return st5; 7: return st1; 8: return st2; 9: return st3; 10: return st4; } 10: switch (catobj.cCol) { 7: return dw; 8: return sw4; 9: return sw3; 10: return sw2; 11: return sw1; } 11: if (catobj.cCol == 11) return bd; } return NoWhere; ]; [ CalcCatMove catobj; if (pRow < catobj.cRow) { if (pCol < catobj.cCol) { ! ! Cat moves northeast ! catobj.cRow--; catobj.cCol--; return; } if (pCol == catobj.cCol) { ! ! Cat moves east ! catobj.cRow--; return; } ! ! Cat moves southeast ! catobj.cRow--; catobj.cCol++; return; } if (pRow == catobj.cRow) { if (pCol < catobj.cCol) { ! ! Cat moves north ! catobj.cCol--; return; } ! ! Cat moves south ! catobj.cCol++; return; } if (pCol < catobj.cCol) { ! ! Cat moves northwest ! catobj.cRow++; catobj.cCol--; return; } if (pCol == catobj.cCol) { ! ! Cat moves west ! catobj.cRow++; return; } ! ! Cat moves southwest ! catobj.cRow++; catobj.cCol++; ]; [ PGrid; switch (location) { bd: pRow=11; pCol=11; sw1: pRow=10; pCol=11; sw2: pRow=10; pCol=10; sw3: pRow=10; pCol=9; sw4: pRow=10; pCol=8; dw: pRow=10; pCol=7; st1: pRow=9; pCol=7; st2: pRow=9; pCol=8; st3: pRow=9; pCol=9; st4: pRow=9; pCol=10; fh: pRow=8; pCol=10; bh: pRow=7; pCol=10; st5: pRow=9; pCol=6; st6: pRow=9; pCol=5; st7: pRow=8; pCol=6; st8: pRow=7; pCol=6; st9: pRow=6; pCol=6; st10: pRow=5; pCol=6; st11: pRow=4; pCol=6; st12: pRow=3; pCol=1; st13: pRow=3; pCol=2; st14: pRow=3; pCol=3; st15: pRow=3; pCol=4; st16: pRow=3; pCol=5; st17: pRow=3; pCol=6; st18: pRow=3; pCol=7; st19: pRow=3; pCol=8; st20: pRow=3; pCol=9; st21: pRow=3; pCol=10; a1: pRow=6; pCol=10; a2: pRow=6; pCol=9; a3: pRow=6; pCol=8; a4: pRow=6; pCol=7; a5: pRow=6; pCol=5; a6: pRow=6; pCol=4; a7: pRow=6; pCol=3; a8: pRow=6; pCol=2; a9: pRow=6; pCol=1; a10: pRow=5; pCol=1; a11: pRow=4; pCol=1; p1: pRow=0; pCol=4; p2: pRow=0; pCol=5; p3: pRow=0; pCol=6; p4: pRow=0; pCol=7; p5: pRow=1; pCol=3; p6: pRow=1; pCol=4; p7: pRow=1; pCol=5; p8: pRow=1; pCol=6; p9: pRow=1; pCol=7; p10: pRow=1; pCol=8; p11: pRow=2; pCol=2; p12: pRow=2; pCol=3; p13: pRow=2; pCol=4; p14: pRow=2; pCol=5; p15: pRow=2; pCol=6; p16: pRow=2; pCol=7; p17: pRow=2; pCol=8; p18: pRow=2; pCol=9; } ]; ! ---------------------------------------------------------------------------- ! Locations ! ! In this section we will define our locations. These are "Objects" to Inform. ! ! ---------------------------------------------------------------------------- sidewalk sw1 "Sidewalk" with in_to [; <>; ]; Object -> "backdoor" with name 'back' 'door', description [; BackDoor(); ], has scenery concealed; Object -> jhouse "Scott's House" with name 'Scott~s' 'house', description "It's a three-flat apartment, with a screen porch and a walkway along the left side, southwest you could say, that leads to the back door. All of the lights are out.", before [; Enter: if (endgame==false) "The screen porch is locked, the lights are all out...you decide it's best to head home."; "Susan says, ~I think he always leaves the back door open. Let's try that.~"; ], has scenery concealed; Object -> porch "porch" with name 'screen' 'porch', description "The porch is dimly lit by a yellow light bulb with mosquitoes flitting about. Patio furniture can be seen inside and a beer barrel from the party.", has scenery supporter concealed; Object -> -> furniture "patio furniture" with name 'patio' 'furniture', description "The furniture looks old and uncomfortable.", before [; Open,Take,Search,Examine: "It's locked inside the screen porch. You can't get to it."; ], has scenery concealed; Object -> -> barrel "beer barrel" with name 'beer' 'barrel' 'keg', description "It's a half barrel beer keg.", before [; Open,Take,Search,Examine: "It's locked inside the screen porch. You can't get to it."; ], has scenery container concealed; Object -> mosquitoes "mosquitoes" with name 'mosquitoes' 'bugs', description "The mosquitoes are intent on drawing blood from the yellow light bulb.", before [; Attack: "They aren't bothering you."; Take: "Really?"; ], has scenery concealed; Object -> bulb "light bulb" with name 'light' 'bulb', description "It's a dimly lit yellow light bulb, just like the one your parents had when you were a kid, offering little or no protection from predators.", before [; Open,Take,Search,Examine: "It's locked inside the screen porch. You can't get to it."; ], has scenery concealed; Object -> walkway "Walkway" with name 'walk' 'way' 'side' 'path' 'walkway', description "The walkway curves away from the front porch to the left and turns around to the side of the house.", has scenery concealed; Object -> lights "lights in Scott's windows" with name 'lights' 'Scott^s' 'window' 'windows', parse_name [ i; while (NextWord()=='lights' or 'in' or 'Scott^s' or 'windows') i++; return i; ], description "The lights are out...Scott must have gone to sleep by now.", has scenery concealed; Object bd "Back Door of Scott's House" with name 'back' 'door', description "You're on the south side of Scott's house in front of the back door. A screen door hangs loosely open and the inner door is closed.", in_to [; print "You open the screen door and check the inner door, finding it unlocked. You push it open and lock it behind you, running up the stairs to the top floor, relieved to be out of danger.^"; return oja; ], n_to [; <>; ], before [; BangDoor: "You pound on the door and realize it's open."; ], has static; Object -> innerd "inner door" with name 'inner' 'door', description [; <>; ], has scenery; Object -> jhouse2 "Scott's House" with name 'Scott~s' 'house', description "The house is all brick and windows from this angle, but you notice that the kitchen light is on.", has scenery; Object oja "Outside Scott's Apartment" with name 'scott^s' 'apartment' 'door', description "You're outside the door to Scott's apartment.", in_to [; print "You push through the door and into Scott's kitchen.^"; return jk; ], before [; BangDoor: <>; ], has static; Object -> ojadoor "door" with name 'door', description "It's a simple wooden door.", before [; Open,Enter: <>; ], has scenery enterable open; Object jk "Scott's Kitchen" with name 'kitchen', description [; if (self hasnt seen) { print "You're in the Scott's kitchen and in your present state, you fail to discern any detail aside from a chair, which you fall into with a sigh.^"; give self seen; StartDaemon(scott); rfalse; } "You're in the Scott's kitchen and in your present state, you fail to discern any detail. Scott and Susan are sitting across from you at the kitchen table."; ], has static ~seen; Object -> scott "Scott" with name 'scott', describe [; rtrue; ], daemon [ic; ic=Attacks(); sccount++; switch (sccount) { 1: if (ic>1) "^~Hey guys, what's going on?~ Scott says. He then takes a closer look at you and says, ~Jesus man, what the fuck happened to you?~"; "^~Hey guys, what's going on?~ Scott says."; 5: PlayerTo(lrc,1); "^Suddenly, you hear someone coming up the back stairs.^^~Who's that?~ you ask Scott and Susan, but Scott just smiles and says, ~Don't worry, it's just a friend of mine.~^^ He thinks for a second and then says, ~Listen, why don't you go into the living room and lay down on the sofa for a few minutes, Okay?~^^Without a chance to see who's at the door, Susan pulls you out of your chair and leads you into the living room.^^~Just lay down and I'll get you a drink, okay sweetie?~ she says, pushing you nicely down on the couch. ~It's probably the police. I'll go check,~ she adds, then walks back towards the kitchen."; default: if (sccount>14 && lscount==0) <>; } if (suemove==3) { drcount++; switch (drcount) { 3: "^You're starting to feel a little light-headed."; 4: "^The alcohol is making you very sleepy."; 5: if (player in lr) { PlayerTo(lrc,1); "^The drink is overwhelming you now and you sit back down on the sofa."; } "^The drink is really taking it's toll on you now as you sink deeper into the sofa."; 6: suemove=4; } } ], life [lc; Tell: lc=0; if (mLion hasnt living) lc++; if (fLion hasnt living) lc++; if (c1Lion hasnt living) lc++; if (c2Lion hasnt living) lc++; if (c3Lion hasnt living) lc++; if (c4Lion hasnt living) lc++; switch (second) { 'man','karl': "You tell Scott about the madman that cornered you in the driveway up the street and then chased you through the neighborhood with his lions.^^ Scott says, ~Shit! Lions? What the hell is some guy running around with lions for? All of these wounds are from lions? That's really unbelievable.~"; 'lions': print "You tell Scott about each of the lions "; if (lc>0) print "and how you killed ", (number) lc, " of them."; else print "and how they chased you relentlessly."; "^^He says, ~You're incredibly lucky! I can't fucking believe someone would do this!~"; 'susan': "You tell Scott about the phone call to Susan and how she picked you up.^^Scott looks at Susan and says, ~That was very lucky that you found him. He could have been killed out there.~"; } ], orders [; GoHospital: "Susan is about to speak but Karl interrupts, ~You're not hurt that bad, and besides, if that man is still out there with those lions, we should stay here for awhile.~"; GoPolice: "~You don't want to call the police. They'll just make things worse,~ Scott says shaking head."; GoHome: "Susan says, ~You should just stay here tonight and go home tomorrow,~ looking at Karl and he nods in agreement."; ], has callable proper animate static; Object lr "Living Room" with name 'living' 'room' 'art', description [; print "You're in the living room of Scott's apartment. Although somewhat disheveled from the party earlier, the room is artfully decorated and bears the mess well. Bay windows lie to the east, a burning fireplace takes up part of the south wall while the remainder supports an array of african wall hangings. A beautiful persian rug tastefully decorates the center of the room, while a variety of paintings fill in the other walls. A western hallway leads to the rear of the apartment.^"; if (suemove < 5) rfalse; if (suemove>4 && suemove<10) { if (susan in location) { if (scott in location) { if (karl in location) { "^Susan, Scott, and Karl are entwined in an animalistic threesome in the middle of the room."; } "^Susan and Scott are embraced in the middle of the room."; } "^Susan is standing nearby, looking at you grimly."; } } if (lropes hasnt freehands) "^Your three captures are here and more determined than ever to kill you."; if (cgun has concealed) "^Your free, but your captives are intent on murdering you."; print "^You're holding a gun on "; if (karl in lr) { print "Karl"; if (scott in lr) { if (susan in lr) ", Scott, and Susan."; else " and Scott."; } else if (susan in lr) " and Susan."; } else { if (scott in lr) { if (susan in lr) "Scott and Susan."; else "Scott."; } else "Susan."; } ], w_to [; if (lropes has freehands) { if (karl in lr) { deadflag=1; "Karl takes a chance and charges you. Before you can escape to the kitchen, he wrestles you to the ground and takes the gun away. He slams the butt of the gun against your head, knocking you senseless, then drags you over to the trap door, pushing you in.^^ The lions quickly rip you to shreads and the last thing you see is Karl, through the trap door, with a grim look on his face."; } if (scott in lr) { deadflag=1; "Scott takes a chance and charges you. Before you can escape to the kitchen, he wrestles you to the ground and takes the gun away. He slams the butt of the gun against your head, knocking you senseless, then drags you over to the trap door, pushing you in.^^ The lions quickly rip you to shreads and the last thing you see is Scott, through the trap door, with a look of relief on his face."; } if (susan in lr) { deadflag=1; "Susan takes a chance and charges you. Before you can escape to the kitchen, she wrestles you to the ground and takes the gun away. She slams the butt of the gun against your head, knocking you senseless, then drags you over to the trap door, pushing you in.^^ The lions quickly rip you to shreads and the last thing you see is Susan, through the trap door, with a look of relief on her face."; } } "You start down the hallway, but hear people talking in hushed tones so you decide to just stay in the living room."; ], d_to [; if (lropes has freehands) { deadflag=1; "Your mind ravaged from the nightmarish evening, you walk over to the trap door and fling yourself in. The lions, finally smelling their evenings prey, fall on you with cold blooded fury."; } if (suemove>11) { deadflag=1; "Unhinged by your predicament, you roll yourself through the trap door, and into the waiting jaws of the lions."; } "You can't go that way!"; ], before [; ShootGun: if (cgun has concealed) "It wouldn't be wise to shoot the gun while it's hidden."; if (lropes has freehands) { print "The cylinder clicks.^^"; <>; } Listen: if (player in lrc) "You can't hear anything from the couch."; lscount++; print "You move a little closer to the hallway and try to eavesdrop on the conversation. "; switch (lscount) { 1: " It sounds like an argument, but you can't be sure."; 2: PlayerTo(lrc,1); suemove=1; " The voices are becoming louder and you hear Scott say, ~Just wait a few minutes while he relaxes. Susan, take this drink out to him and help him out, okay?~^^ And before she replies, you hurry back to the couch, closing your eyes, embarrassed by the spying."; } Exit: if (suemove==2 && player in lrc) "You're trying to hide the fact that you were eavesdropping, so you close your eyes and remain on the sofa."; if (suemove>2 && player in lrc) "The alcohol is preventing you from moving a single muscle. You're way too relaxed to budge."; Sleep: if (player notin lrc) "It's pretty tough to sleep while standing up."; "You nod off for a few seconds, dreaming of a nice hot bath and a glass of wine. Then you're in your king size bed, stretched out, relaxed. You feel something next to you, licking your leg, then pulling on it, and as you awaken, a lion is chewing on it! WHAM! You sit bolt upright and look around, finding yourself on the sofa in Scott's apartment."; Push: if (lropes hasnt freehands) "Huh?"; switch (noun) { susan: move susan to NoWhere; print "You grab Susan by the hair and toss her through the trap door. She screams over and over as the starving lions rip her apart. Very suddenly, the screaming stops.^"; karl: move karl to NoWhere; print "Not taking any chances, you pistol whip Karl until he buckles to his knees. Then you grab his hair and drag him to the edge of the trap door. The lions don't seem to recognize him as you push him over the edge. You watch as they sever his limbs and begin to devour his flesh and his screams echo through the house.^"; scott: move scott to NoWhere; print "Scott cowers from the gun. He moves towards the trap door on his own, not sure what to do, and before he can change his mind, you push him down. He gasps out loud, ~NO!~ and the lions catch him by the jugular almost instantly as he hits the floor below. One of the lions roars loudly as Scott's body is devoured savagely.^"; } if (karl in NoWhere && scott in NoWhere && susan in NoWhere) doendgame(); rtrue; ], has static; Object -> lrcars "cars" with name 'station' 'wagon' 'susan^s' 'car' 'cars', description [; if (player in lrc) "You can't see anything from the sofa."; if (lrw has seen) "The cars are double parked on the street below."; "Huh?"; ], has scenery concealed; Object -> lrc "sofa" with name 'couch' 'sofa', description "The couch is genuine suede leather and one the more beautiful pieces in the room.", before [; Receive: if (noun==player) "Exhausted, you lay down on the sofa.^"; ], has scenery supporter enterable open; Object -> pr "Persian Rug" with name 'persian' 'rug', description "It's an antique and beautiful persian rug. For the first time you notice that the central figures in the pattern are lions.", before [; LookUnder: "You begin to look under the carpet, but voices from the kitchen distract you."; ], has scenery; Object -> lrw "window" with name 'window' 'windows', description [; if (player notin lrc) { give self seen; "You walk over to the window and look outside. As you peer through the fog, you see Susan's car with her hazard lights on, and a station wagon parked just behind it."; } "You look out the windows from the sofa and see fog drifting through tree branches."; ], has scenery ~seen; Object -> lrfp "fireplace" with name 'fireplace' 'mantel', description "The fireplace is made of brick and supports a beautiful mantel, on which are several pictures.", has scenery supporter; Object -> -> lrpics "pictures" with name 'pictures', description [; if (player in lrc) "You squint at the pictures from the sofa, but they're too far away to see any detail."; "You peruse the pictures on the mantel one by one, having reviewed most of them earlier at the party. This time, for some reason, you take a closer look. In the back near the wall, you find a small picture with a man and several lions. The man in the picture is Karl."; ], has scenery; Object -> lrhang "hangings" with name 'african' 'wall' 'hangings', description "Although you were appreciative of the decor during the party, you didn't notice the nature of these wall hangings. Each one is a scene of a warrior and a beast side by side. In each case, the beast is a lion.", has scenery; Object -> lrpaint "paintings" with name 'paintings', description "The paintings are all modern and very expensive. One in particular catches your eye. It's a rendition of a lion and his pride.", has scenery; sidewalk sw2 "Sidewalk"; sidewalk sw3 "Sidewalk"; sidewalk sw4 "Sidewalk"; ! ! Major Scene...man stops player, introduces himself and cats...escape to street after a few turns... ! Object dw "Driveway" with name 'driveway', description [; if (st1 hasnt seen) print "You're standing at the end of a driveway with a light green station wagon blocking your way home."; else print "You're standing at the end of a driveway. There is a faded green station wagon here."; Dlions(); if (self hasnt seen) { give self seen; move catman to dw; } ], e_to [; return self.to_street(); ], in_to [; <>; ], before [; GoInST: return self.to_street(); ], to_street [; if (self has escape) { if (st1 hasnt seen) { print "Finally, you build up the nerve and run into the street. You dive between two lions, getting your right leg raked by a claw, before landing in the street....^"; wounds = 1; PlayerTo(st1,2); rtrue; } return st1; } else { dwcount++; switch (dwcount) { 1: print "Looking around you see enough space leading to the street, but something keeps you from moving.^"; 2: print "You want to run into the street, but you just can't move your legs.^"; 3: print "The street beckons, but your nerves remain too shattered to move.^"; 4: print "You feel your nerves calming, but you're not ready to run yet.^"; 5: print "Adrenaline is giving you further resolve. You should be able to get away any minute.^"; 6: print "You step towards the street but a lion brushes past you, stopping you in your tracks.^"; 7: print "Another lion moves in front of you, preventing escape. You mumble ~Dammit!~ and Karl laughs at you.^"; 8: print "Just one last look around at the lions and now your ready.^"; default: print "^"; } rtrue; } ], s_to [; if (st1 has seen) "You look down the sidewalk towards Scott's house and see a large shadow approaching, looking very much like a lion."; ], cant_go [; print "Your eyes dart around but the only exit is east, to the street. "; return self.to_street(); ], has scenery ~escape ~seen; street st1 "Street" with initial [; give self seen; ], has ~seen; Object -> "sidewalk" with name 'sidewalk' 'driveway', description "You look back towards the driveway but thick fog rolls past and blocks a clear view.", has scenery; street st2 "Street"; street st3 "Street"; street st4 "Street"; Object fh "Front of a House" with name 'front' 'house', description [; print "You're in front of a house across the street from Scott's place. The fog rolls past your feet toward the backyard and beyond."; Dlions(); ], e_to bh, w_to st4, has scenery; Object -> fhouse "house" with name 'house', description "You're in front of a house. Fog rolls past it and obscures most of its features.", has scenery concealed; Object bh "Back of House" with name 'back' 'house', description [; print "This is the backyard. An alley can be seen to the east and the front of the house is west."; Dlions(); ], e_to a1, w_to fh, has scenery; Object -> bhouse "house" with name 'back' 'house', description "You're at the back corner of the house on a path that leads from the street to the alley. The house is dark except for a hall light that can be seen through the back door.", has scenery concealed; Object -> bdoor "back door" with name 'back' 'door', description "It's solid wood and it seems to be closed. You can see a light through the small window at the top of the door.", before [; Enter: "You turn the knob and pound as loud as you can but the door is locked and no one answers."; ], has scenery concealed door locked openable enterable; Object -> bwindow "small window" with name 'small' 'window' 'tabby' 'inner', description "You look through the small window and see a back stairs and an inner door, which is slightly ajar. A tabby pokes its head out for a moment, listening, then bolts back into the house.", has scenery concealed; street st5 "Intersection"; street st6 "Street" with d_to [; if (sc1 hasnt seen) { print "Go down where?^"; return 1; } if (sc1 hasnt open) { print "The grate is closed.^"; return 1; } print "After sitting on the edge of the hole, you leap downward into blackness...^"; PlayerTo(s1,2); if (s1 hasnt seen && c4Lion has living) { give s1 seen; StartDaemon(SewerCat); } return 1; ]; Object -> "street" with name 'street', description [; give sc1 seen; "The street is barren except for a sewer entrance a few feet away."; ], has scenery concealed; SCover -> sc1 "sewer cover", with found_in st6 ld1; street st7 "Street"; street st8 "Street"; street st9 "Street"; street st10 "Street"; street st11 "Street"; street st12 "Street"; street st13 "Street"; street st14 "Street"; street st15 "Street" with d_to [; if (sc2 hasnt seen) { print "Go down where?"; return 1; } if (sc2 hasnt open) { print "The grate is closed."; return 1; } print "After sitting on the edge of the hole, you leap downward into blackness...^"; PlayerTo(s10,2); if (s10 hasnt seen && c4Lion has living) { give s10 seen; StartDaemon(SewerCat); } return 1; ]; Object -> "street" with name 'street', description [; give sc2 seen; "The street is barren except for a sewer entrance a few feet away."; ], has scenery concealed; SCover -> sc2 "sewer cover", with found_in st15 ld2; Object p911 "emergency" with name 'emergency' '911' '999' has callable; Object operator "operator" with name 'operator' '0//' has callable; Object help "hospital" with name 'hospital' has callable; street st16 "Street", with before [rn; Dial: if (catman in location) { if (susan has offhook) { give susan ~offhook; "Karl walks up to you, takes the phone away and hangs it up."; } "Karl pushes you away from the phone."; } rn=random(2); if (susan has offhook) "You're talking to Susan on the phone!"; switch (noun) { home: "Your answering machine picks up. You leave a message that you're being chased by some nutcase and lions. You scream, ~LIONS!~, into the phone and hang up."; susan: if (susan has lmoved) "She's meeting you down the street. Remember?"; give susan offhook; move susan to st16; "Susan answers, ~Hello?~^^ You explain the entire situation. Although disbelieving, she listens to you and offers comfort."; operator: print "You dial 0 and wait for a moment. An operator answers and listens to your story for a moment and connects you to 911. "; <>; p911,police: print "An operator immediately answers. You explain that you're being chased by a man and lions and the operator tells you it's against the law to make prank 911 phone calls. "; if (rn==1) print "She"; else print "He"; " tells you to go home and stop drinking, then hangs up."; scott: if (rn==1) "His line is busy."; else "There is no answer."; catman: if (cphone hasnt seen) "You don't know his number."; if (rn==1) "His line is busy."; "~Yeah,~ he answers, as if expecting someone to call. You really didn't expect him to answer and you're not sure what to say. He hears your heavy breathing and laughs, ~Oh, it's you, isn't it? Well, we're coming for ya...just wait right there and you'll see us comin' around the cor...~ and you hang up the phone."; } "You don't know how."; Hangup: if (susan has offhook) "You really don't want to hangup on Susan."; "You're not taling to anybody at the moment."; ]; Object -> phone "phone" with name 'phone', description "It's a typical public pay phone with graffiti scratched on it.", has static supporter; Object -> cphone "Karl's number" with name 'karl^s' 'number' 'graffiti' 'scratch', description [; if (self has seen) "Just 'Call Karl'....there are no 'numbers' to read..."; give self seen; "Scrawled in large black magic-marker is the name 'Karl' and a number beside it."; ], has scenery ~seen container proper; Object tdopen "Next to Open Trap Door" with name 'trap' 'door', description [lc; if (mLion has living) lc++; if (fLion has living) lc++; if (c1Lion has living) lc++; if (c2Lion has living) lc++; if (c3Lion has living) lc++; if (c4Lion has living) lc++; "You're laying next to an open trap door. You can see ", (number) lc, " lions roaming around the room below, waiting to be fed."; ], before [; Exit: "You try to stand, but Karl pushes you back down."; Loosen: if (lropes has freehands) "You're free!"; if (lropes hasnt looseropes) { give lropes looseropes; "You wriggle your hands feverishly and the rope loosens up!"; } else "The rope is pretty loose around your wrists now."; Free: if (lropes hasnt looseropes) "The ropes aren't loose enough to free your hands."; if (lropes hasnt freehands) { give lropes freehands; "You quietly free your hands from the ropes!"; } "Your hands are free!"; ], found_in [; if (lropes has freehands) rtrue; else rfalse; ], add_to_scope susan karl scott mlion flion c1lion, has scenery open enterable concealed; Object -> lropes "ropes" with name 'rope' 'ropes', description [; if (self hasnt looseropes) "The ropes seem to be tied pretty tight."; if (self hasnt freehands) "The ropes are pretty loose. You can probably free your hands now."; "The rope around your wrists is off and your hands are free."; ], has scenery ~looseropes ~freehands concealed; Object susan "Susan" with name 'susan' 'sue', description [; if (susan has offhook) "You can't see her, she's on the phone!"; if (susan notin suecar && suecar notin st4 && susan notin jk && susan notin lr) "Susan is nowhere to be seen."; if (suemove<8) "Susan looks tired and rattled. She's wearing jeans and a t-shirt, obviously not her first choice."; "Despite your predicament, you can't help but notice how physically beautiful her naked body is."; ], describe [; if (location==lr) rtrue; ], life [ic lc; Ask: if (suemove>4) "~Please honey, don't talk to me anymore, you'll only make it more difficult,~ she interupts you."; if (susan has offhook) { switch (second) { 'karl': "~I don't know anybody named Karl,~ she says."; 'car': return DoCar(); 'scott': "~Scott never answers his phone, you know that,~ she replies."; 'police': "~I can't imagine the police would want to hear about lions and a crazy man,~ she says doubtfully."; } } if (player in suecar) { switch (second) { 'car': "~It's pretty nice, although the old ones got much better gas mileage,~ she says."; 'police': "~I tried to call them too,~ she says shaking her head."; 'karl','man': "She looks at you for a moment and says, ~That's really creepy you know. I dated a guy named Karl a few times. He had blonde hair, wire-rimmed glasses, and a huge chip on his shoulder. Real touchy.~"; 'scott': "~We should be there in a minute,~ she nods."; 'lions': "~Well I was skeptical on the phone, but you look pretty bad,~ she says shaking her head."; 'hospital': "~Well, you look bad, but it's probably just bruises,~ she says, obviously trying to avoid a night in the hospital."; 'gun': if (cgun in susan) "She says, ~I'm not giving it back to you so just forget about it.~"; "She looks at you worriedly and says, ~What are you talking about?~"; } } Tell: if (suemove>4) "~Please honey, don't talk to me anymore, you'll only make it more difficult,~ she interupts you."; if (susan has offhook) { switch (second) { 'karl': "~That's wierd. He's trying to kill you and feed you to his lions?~ she says skeptically."; 'lions','lion': "~That's very hard to believe. Are you sure you haven't been passed out this whole time and having a nightmare?~ she asks."; 'scott': "~Yeah, Scott was pretty jealous of you tonight, but I'd made up my mind that you were the one I wanted to get to know better,~ she says."; 'gun': "She looks at you worriedly and says, ~If you have a gun, show it to me.~"; } } if (player in suecar) { switch (second) { 'scott': "~Yeah, that's where I'm headed. I called him after I talked to you and he said to come over. He's worried about you too,~ she replies."; 'hospital': "~No, we're going to Scott's,~ she says firmly."; 'karl': print "You explain everything that happened back at the driveway, and then running off."; if (cgun in player && cgun has concealed) print " For some reason, you decide not to tell her about the gun you have hidden."; " ~Do you think he's still around somewhere~, she says looking outside the car fertively."; 'lions': lc=(6-DeadLions()); ic=Attacks(); print "You tell Susan about the lions chasing you"; if (ic>0) print " and attacking you."; else print "."; if (lc>0) " Then you tell her about killing ", (number) lc, " of them before getting to her car.^^Susan looks at you strangely, almost angrily, and says ~You KILLED some of the lions?~ and then looks straight ahead and says quietly, ~That was very courageous of you.~"; "~Susan consoles you by saying, ~Well we're in the car so we should be okay. I think going to Scott's and getting off the street will help you calm down.~"; } } if (player in jk) { switch (second) { 'karl','lions','lion': "You look at susan and tell her about the lions. She says, ~That's so awful.~"; } } if (player in sw1 || player in bd || player in oja) "Susan ignores you and says, ~Let's get inside. I'm really nervous about your story.~"; Order: if (suecar has seen) "Huh?"; if (noun==shelp) return DoCar(); Kiss,Attack: if (suemove>4) "You're not interested."; "Susan playfully pushes you away and says, ~Geez, you get attacked by lions and now you're being aggresive. Why weren't you like this earlier?~"; ], orders [; GoHospital: if (suecar notin st4) "~No. I'm taking you to Scott's first because it's closer,~ she replies more strongly than you would expect."; GoPolice: if (suecar notin st4) "She looks at you strangely for a moment, then says, ~Why don't we just get to Scott's and have them come there? It would be much more comfortable than the police station.~"; GoHome: if (suecar notin st4) "~My home or yours? Either way, I already woke Scott up and told him we're coming,~ she says."; GoSusans: if (suecar notin st4) "~You want to go to my place?~, she asks rhetorically. ~Maybe we should just keep driving to Scott's place,~ she adds, hoping you won't argue."; GoScott: if (suecar notin st4) "~That's where we're headed,~ she says matter of factly."; ], daemon [lc; if (cgun hasnt concealed && cgun in player && suemove>5 && suemove<12) { move cgun to NoWhere; "^Just as you're pulling the gun out, Susan grabs it out of your hands saying, ~Holy shit! Where did he get this?~"; } if (cgun hasnt concealed && cgun in player && suemove>11 && suemove<16 && lropes has freehands) { print "Despite your drugged state, you pull the gun free. Your three kidnappers immediately back away from you. You struggle to your feet and away from the trap door.^"; self.daemon=sdaemon2; PlayerTo(lr,1); rfalse; } if (cgun in player && cgun hasnt concealed && susan in location) { move cgun to NoWhere; "^Susan suddenly notices the gun in your hand and grabs it away from you saying, ~What the hell is wrong with you and where did you get this?~"; } if ((self notin location) && (location == bd || location == oja || location == jk)) { move susan to location; print "^Susan follows you...^"; } if (suemove==1) { suemove=2; return; } if (suemove==2) { suemove=3; print "^Susan walks into the room with a large drink in her hand. She sits on the edge of the couch and says, ~Here, I've got something to help you relax, okay?~"; if (cgun in player && cgun hasnt concealed) " Susan notices the gun in your hand and takes it away saying, ~What are you doing with this?~"; "^^You take a sip of the drink and wince from the amount of alcohol, then take a bigger swig.^^Susan says, ~That should help a lot. I'll be back in a minute to see how you're doing,~ then takes the unfinished drink back into the kitchen."; } if (suemove==4) { move susan to lr; suemove=5; "^The voices from the kitchen get louder then begin moving towards you. Susan appears first, smoking a joint. She looks at you and shakes her head, ~You're such a fucking jerk. I tell you, you've caused more grief than anybody we've chased before.~"; } if (suemove==5) { move scott to lr; suemove=6; "^Scott walks into the living room and looks at you grimly. ~I can't fucking believe you made it as far as you did!~ and shaking his head he continues, ~It's a good thing Susan gave you her number tonight or we'd have gotten caught.~^^He puts his arm around Susan and while looking at you gives her a deep, passionate kiss."; } if (suemove==6) { move karl to lr; suemove=7; if (mLion hasnt living) lc++; if (fLion hasnt living) lc++; if (c1Lion hasnt living) lc++; if (c2Lion hasnt living) lc++; if (c3Lion hasnt living) lc++; if (c4Lion hasnt living) lc++; if (lc > 0) print "^Karl storms into the room and dives at you, screaming, ~You sonofabitch! You sonofabitch! You fucking killed ", (number) lc, " of my lions!~^^Before he can hurt you too badly, Susan and Scott pull him off of you. "; else print "^Karl saunters into the room and looks you over wistfully. "; "With his shirt off and his chest painted red, he becomes the center of attention. He says, ~Nice painkillers, aren't they. But don't worry, we won't let you sleep just yet. We have plans for you. He turns towards Scott and Susan and they embrace each other, all the while looking at you. With a ritualistic fervor, each one extends a hand and marks your face with red paint. Then they begin to claw and bite at each other in a sexual frenzy."; } if (suemove==7) { suemove=8; "^The threesome falls to the rug in front of you. You're forced to watch helplessly, as they disrobe and continue with their open display of lust."; } if (suemove==8) { suemove=9; "^Susan stares at you as Karl and Scott roam about her body, forcing you to watch her animalistic rapture. She bends her head and closes her eyes as her body shakes from lust-filled orgasms. When her eyes open, a cold, black emptyness pervades them and she whispers to her partners, ~It's time.~"; } if (suemove==9) { suemove=10; "^The three lovers disentangle and Scott begins to roll the persian rug up, revealing a trap door. ~Are they hungry Karl?~, Scott asks, to which Karl replies, ~They're very hungry, my friend.~ And he lifts the inset handle of the trapdoor."; } if (suemove==10) { suemove=11; "^Susan disappears for a moment while Karl reveals two small ropes, which he uses to bind your ankles and wrists. When she reappears, she's carrying a longer, thicker rope.^^ She says, ~He's actually kind of cute. Do you think I could play with him for awhile?~ and Karl replies, ~Sorry my love, but the children are hungry.~^^Susan lets out a wistful sigh and shrugs her shoulders, ~Too bad.~"; } if (suemove==11) { suemove=12; PlayerTo(tdopen,1); "^The three of them lift you from the sofa and carry you next to the edge of the trap door. Looking down, you can see a straw-lined room, with several lions circling. One of them looks up and roars, leaping for the opening and barely missing.^^Karl says, ~That's right my child, it's dinner time.~"; } if (suemove==12) { suemove=13; "^Another lion leaps for you, catching a claw on the edge before slipping and falling back down."; } if (suemove==13) { suemove=14; "^You watch dazedly as the lions circle below."; } if (suemove==14) { suemove=15; "^Susan kneels over you, still naked, and in a sultry voice says, ~I really wish you could hang around with us. Scott says you were getting too hard to work with,~ and then she leans in and kisses you, taking you by surprise. Scott and Karl edge closer, forcing her to end her goodbye's."; } if (suemove==15) { suemove=16; if (cgun has concealed && cgun in player) { move cgun to NoWhere; print "^Scott bends down to tie the larger rope to your ankles and accidently discovers the gun hidden in your clothes. ~Where the hell did this come from?~ he shouts."; } else print "^Scott bends down to tie the larger rope to your ankles."; " He says, ~All set.~^^A black lustful stare eminates from all three of your murderers as they slowly push you head first through the opening in the floor."; } if (suemove==16) { suemove=17; "^One of the lions leaps and rakes your head. Pain is absent now, dulled from adrenaline, alcohol, and painkillers. Your body moves slowly down and one after another, the lions grip you in their teeth, pulling you to the floor."; } if (suemove==17) { deadflag=1; "^Your last view of the world is upside down, staring up at Susan, Scott, and Karl in a naked embrace, while the lions slowly begin to devour your flesh. Spasms and defense reactions only serve to excite the lions as they slap at your feeble attempts to survive.^^ The painkiller's effects fade and bone-crunching pain racks your body a few last times before a sympathetic lion takes your neck into its jaws and clamps down, blackness and death follow shortly thereafter."; } ], has animate callable ~lmoved proper female scenery ~offhook supporter; Object -> shelp "help" with name 'help' has scenery concealed; [ sdaemon2; ]; [ DeadLions lc; if (mlion has living) lc++; if (flion has living) lc++; if (c1lion has living) lc++; if (c2lion has living) lc++; if (c3lion has living) lc++; if (c4lion has living) lc++; return lc; ]; Object karl "Karl" with name 'karl', description "Karl is tall with blonde hair, wire-rimmed glasses, and dark eyes.", describe [; rtrue; ], has static proper animate; [ DoCar; give susan ~offhook; give self lmoved; move susan to suecar; give suecar seen; "~Yeah, I have a car. I'm really worried about you. Let's do this. Why don't I meet you down the street from where you are. Just start walking south and I should be there in a few minutes. Okay?~ and she hangs up."; ]; street st17 "Street"; street st18 "Street"; street st19 "Street"; street st20 "Street"; street st21 "Street", with before [; if (susan in suecar) StartDaemon(suecar); ]; car suecar "Sue's red VW Beetle", with name 'Sue^s' 'car', daemon [ic; scc++; if (scc>1 && location == st21 && player notin self) { move suecar to st21; print "^Sue's red VW Beetle slows in front of you. With a sigh of relief, you walk up to the car and lean in the window. Susan is wearing jeans and a t-shirt but she's the most beautiful person you've ever seen. She says, ~Get in,~ and you open up the door and squeeze into the passenger seat.^"; PlayerTo(suecar,2); StopDaemon(mlion); StopDaemon(flion); StopDaemon(c1lion); StopDaemon(c2lion); StopDaemon(c3lion); StopDaemon(c4lion); ic=Attacks(); if (ic==1) "Sue looks at you, seeing a tear in your pants leg, but little or no blood. ~I thought you said you were mauled by lions? You must be pretty fast to have escaped with that little scratch on your leg.~"; "~Hey,~ Sue says and kisses you on the cheek, despite the bloody mess. ~Geez! You look terrible. I really didn't believe you on the phone, but you look like you have been eaten by lions.~"; } if (player in self) { if (location ~= st4) print "^Susan continues to drive...^"; switch (location) { st21: move suecar to st20; st20: move suecar to st18; print "Susan says, ~I'm taking you to Scott's house. I called him and he's waiting for us.~^"; st18: move suecar to st11; print "She makes a left at the intersection...^"; st11: move suecar to st10; st10: move suecar to st7; print "Susan looks left and right and says, ~I think I saw something down that alley!~^"; st7: move suecar to st1; print "She makes another left towards Scott's house. You look in the driveway where the station wagon was and it's gone now.^"; st1: move suecar to st3; print "Susan says, ~Almost there...~^"; st3: move suecar to st4; st4: print "^You arrive in front of Scott's and get out...^"; move susan to sw1; give susan ~concealed; give susan ~scenery; give susan static; endgame=true; StopDaemon(suecar); StartDaemon(susan); PlayerTo(sw1,2); return; } move susan to suecar; PlayerTo(suecar,1); } ], has scenery concealed container open proper ~seen; [ Attacks ic; if (wounds & 1) ic++; if (wounds & 2) ic++; if (wounds & 4) ic++; if (wounds & 8) ic++; if (wounds & 16) ic++; if (wounds & 32) ic++; if (wounds & 64) ic++; if (wounds & 128) ic++; if (wounds & 256) ic++; if (wounds & 512) ic++; return ic; ]; alley a1 "Alley"; alley a2 "Alley"; alley a3 "Alley"; alley a4 "Alley"; alley a5 "Alley"; alley a6 "Alley"; alley a7 "Alley"; alley a8 "Alley"; alley a9 "Alley"; alley a10 "Alley"; alley a11 "Alley"; sewer s1 "Sewer" with index 1, has supporter; Object -> ldr1 "ladder" with name 'ladder', describe [; rfalse; ], description "It's a thick iron ladder that leads up to the sewer entrance.", door_to ld1, door_dir u_to, has static door open; Object ld1 "Top of Ladder" with name 'ladder', description [; print "You're at the top of an iron ladder, just below"; if (sc1 has open) print " an open sewer entrance."; else print " a closed sewer grate."; " Sewer water runs down the tunnel and you hear splashing in the distance."; ], u_to [; if (sc1 has open) return st6; else "The grate is closed."; ], d_to s1, has scenery light; Object SewerCat "sewer cat" with daemon [cl ci pi cd; if (~~(location ofclass sewer) && location ~= ld1 && location ~= ld2) rfalse; if ((location == s3 && s3 hasnt seen) || (location == s17 && s17 hasnt seen) || (location == s8 && s8 hasnt seen) || (location == s12 && s12 hasnt seen)) { if (parent(c4Lion) ofclass sewer) rfalse; give location seen; if (s1 has seen) move c4lion to s1; else move c4Lion to s10; StopDaemon(c4lion); "^You hear Karl's voice echo through the tunnel, ~Down there! Go!~ and then a SPLASH afterwords."; } cl=parent(c4lion); if (~~(cl ofclass sewer)) return; ci=cl.index; pi=location.index; if (location == ld1) pi=1; if (location == ld2) pi=10; if (ci==pi || (ci==1 && player in ld1) || (ci==10 && player in ld2)) return CubAttack(); if (pi>=10) { if (ci>=10) { if (pi>ci) cd=1; else cd=-1; } else { if (pi>ci) { if (pi-ci<10) cd=1; else cd=-1; } else cd=-1; } } else { if (ci>pi) { if ((ci-pi)>9) cd=1; else cd=-1; } else cd=1; } switch (cl) { s1: if (cd==1) move c4lion to s2; else move c4lion to s18; s2: if (cd==1) move c4lion to s3; else move c4lion to s1; s3: if (cd==1) move c4lion to s4; else move c4lion to s2; s4: if (cd==1) move c4lion to s5; else move c4lion to s3; s5: if (cd==1) move c4lion to s6; else move c4lion to s4; s6: if (cd==1) move c4lion to s7; else move c4lion to s5; s7: if (cd==1) move c4lion to s8; else move c4lion to s6; s8: if (cd==1) move c4lion to s9; else move c4lion to s7; s9: if (cd==1) move c4lion to s10; else move c4lion to s8; s10: if (cd==1) move c4lion to s11; else move c4lion to s9; s11: if (cd==1) move c4lion to s12; else move c4lion to s10; s12: if (cd==1) move c4lion to s13; else move c4lion to s11; s13: if (cd==1) move c4lion to s14; else move c4lion to s12; s14: if (cd==1) move c4lion to s15; else move c4lion to s13; s15: if (cd==1) move c4lion to s16; else move c4lion to s14; s16: if (cd==1) move c4lion to s17; else move c4lion to s15; s17: if (cd==1) move c4lion to s18; else move c4lion to s16; s18: if (cd==1) move c4lion to s1; else move c4lion to s17; } cl=parent(c4lion); ci=cl.index; if ((ci-pi)==1 || (pi-ci)==1) "^Something is splashing, very closely, through the water."; if ((ci-pi)==2 || (pi-ci)==2) "^You a hear a splash in the water of the tunnel."; if ((ci-pi)==3 || (pi-ci)==3) "^You a hear a faint splash in the water."; if (c4lion in location) "^One of the lion cubs bounds through the tunnel towards you."; ]; [ CubAttack lc; if (c4lion has manattack) { give c4lion ~manattack; return; } SCAttack++; if (location == ld1) PlayerTo(s1,1); if (location == ld2) PlayerTo(s10,1); switch (SCAttack) { 1: "^The lion cub leaps towards you and knocks you down, ripping at your clothes. You struggle for a moment and knock the cat away."; 2: print "^The lion cub slashes your leg open further and you stumble to the ground."; 3: print "The lion cub jumps on your back, biting down hard on your shoulder, tearing flesh and breaking bones. You fall to your knees. The lion's grip tightens and she shakes her jaws viciously until finally you succumb. Paralyzed and feeling your life ebb, the lion cub cries out and you hear a distant response. As you slowly bleed to death, the lion cub begins knawing at your stomach, ripping apart your intestines. She stops to listen as someone in the tunnel approaches. A familiar face appears...it's Karl.^^"; if (mlion has living) lc++; if (flion has living) lc++; if (c1lion has living) lc++; if (c2lion has living) lc++; if (c3lion has living) lc++; deadflag=1; "~Good girl~, he says to the lion cub, and you see the other ", (number) lc, " lions approach.^^ Soon, all of the lions are pulling your body apart with Karl gleaming in the background, ~Good night my friend...~^^Lions tear at your limbs, thrashing their heads back and forth, fighting over your dying body. Your last vision is of several pairs of golden eyes and blood soaked fangs."; } ]; sewer s2 "Sewer" with index 2; sewer s3 "Sewer" with index 3; sewer s4 "Sewer" with index 4; Object -> crowbar "crowbar" with name 'crowbar', description "Heavy and thick, it would make a good weapon."; Object crowbar2 "blood-encrusted crowbar" with name 'crowbar', description "Heavy and thick, it would make a good weapon, the blood on it is clear evidence that it's been used for just such a purpose."; sewer s5 "Sewer" with index 5; sewer s6 "Sewer" with index 6; sewer s7 "Sewer" with index 7; sewer s8 "Sewer" with index 8; sewer s9 "Sewer" with index 9; sewer s10 "Sewer" with index 10; Object -> ldr2 "ladder" with name 'ladder', describe [; rfalse; ], description "It's a thick iron ladder that leads up to the sewer entrance.", door_to ld2, door_dir u_to, has static door open; Object ld2 "Top of Ladder" with name 'ladder', description [; print "You're at the top of an iron ladder, just below"; if (sc2 has open) print " an open sewer entrance."; else print " a closed sewer grate."; " Sewer water runs down the tunnel and you hear splashing in the distance."; ], u_to [; if (sc2 has open) return st15; else "The grate is closed."; ], d_to s10, has scenery light; sewer s11 "Sewer" with index 11; sewer s12 "Sewer" with index 12; sewer s13 "Sewer" with index 13; sewer s14 "Sewer" with index 14; sewer s15 "Sewer" with index 15; sewer s16 "Sewer" with index 16; sewer s17 "Sewer" with index 17; sewer s18 "Sewer" with index 18; park p1 "The Park"; park p2 "The Park"; park p3 "The Park"; park p4 "The Park"; park p5 "The Park"; park p6 "The Park"; park p7 "The Park"; park p8 "The Park"; park p9 "The Park"; park p10 "The Park"; park p11 "The Park"; park p12 "The Park"; park p13 "The Park"; park p14 "The Park"; park p15 "The Park"; park p16 "The Park"; park p17 "The Park"; park p18 "The Park"; Object police "police" with name 'police' 'cops' 'pigs', has animate callable; Object home "Home" with name 'home', has callable; ! ---------------------------------------------------------------------------- ! Grammar ! ! The grammar section includes the file "Grammar" and will later include ! extensions to the standard grammar library. ! ! ---------------------------------------------------------------------------- [ doendgame; deadflag=2; "^^You stare at the trap door for a few moments, watching the lions feed. Feeling drained, you toss the unloaded pistol through the hole and walk slowly towards the front door in a daze. When you reach the sidewalk again, the sun is rising and the fog is slowly burning away. You alternately weep and laugh. A small black cat comes up to you and rubs up against your legs. You lean down and slowly strangle the helpless animal. You start to think of ways of killing other cats..."; ]; [ InfoSub; "No score. Just a story."; ]; [ XyzzySub; "A small black cat struts by, rubs up against your legs, meows, then scampers off."; ]; [ GoToBDSub; PlayerTo(bd,2); ]; [ GoInSTSub; "The cars are parked too close together, you can't see a way through them."; ]; [ FixedSub; print " - 'Despite' was spelled incorrectly.^"; print " - Extra quote in one of Karl's replies has been removed.^"; print " - it's ear is now its ear.^"; print " - Added nearby items to first location, porce, etc.^"; print " - Allow 'left' at first location.^"; print " - Removed 'the host' from intoduction.^"; print " - Movement is being 'helped' in the first few scenes.^"; print " - Fixed quote+comma mistakes.^"; ]; [ SmileSub; if (catman in location || mancar in location) { if (YaFuckG) "The man ignores you now..."; Fucklook=true; "You smile at the man and his face quickly darkens, ~What the fuck are you looking at?~"; } "You practice smiling for Susan."; ]; [ SSmileSub; if (player in suecar || susan in location) "Susan smiles back."; "Huh?"; ]; [ NodSub; if (catman in location || mancar in location) "You nod at the man and he looks away."; "Your neck is stiff, so you stretch it back and forth and it cracks."; ]; [ FoldSub; if (noun == napkin) "You try to fold the napkin in order to protect the delicate information within, but it just opens back up, leaving you fearful that it will somehow get erased."; "You don't need to fold ", (the) noun, "."; ]; [ DialScope i; if (scope_stage==1) return 1; if (scope_stage==2) { if (location ~= st16) { "Exactly how would like to accomplish this feat?"; } objectloop (i has callable) PlaceInScope(i); rtrue; } if (scope_stage==3 && location == st16) "You don't know how."; ]; [ DialSub; "You can't dial the ", (name) noun, "."; ]; [ YaFuckSub; if (YaFuckG==true) "Huh?"; YaFuckG=true; give catman seen; give catman anger; "~Hah!~ the man laughs, ~Scared ya, didn't I?~"; ]; [ GoRunSub rd; if (YaFuckG==false && dw hasnt seen) "You don't feel a need to run anywhere at the moment."; if (location == dw && st1 hasnt seen) <>; print "Disoriented and scared, you run away and find yourself in...^"; switch (location) { sw1: <>; sw2,sw3,sw4,st2,st3,s1,s2,s10,s11,a2,a3,a4,a5,a6,a7,a8: if (random(2)==1) <>; else <>; dw,s3: if (random(2)==1) <>; else <>; fh,bh,st7,st8,st11,a10,a11,s4,s5,s6,s7,s8,s13,s14,s15,s16,s17: if (random(2)==1) <>; else <>; st1: rd=random(3); switch (rd) { 1: <>; 2: <>; 3: <>; } st4,s18: if (random(2)==1) <>; else <>; st5,st13,st14,st15,st16,st18,st19,st20: rd=random(3); switch (rd) { 1: <>; 2: <>; 3: <>; } st6: if (sc1 has open) { if (random(2)==1) <>; else <>; return; } <>; st10: if (sc2 has open) { rd=random(4); switch (rd) { 1: <>; 2: <>; 3: <>; 4: <>; } } else { rd=random(3); switch (rd) { 1: <>; 2: <>; 3: <>; } } st9,st17,p6,p7,p8,p9,p12,p13,p14,p15,p16,p17: rd=random(4); switch (rd) { 1: <>; 2: <>; 3: <>; 4: <>; } st12,s9,a9: if (random(2)==1) <>; else <>; st21: <>; s12,a1: if (random(2)==1) <>; else <>; } ]; [ HideInSub; "You'd like to hide somewhere, wouldn't you?"; ]; [ HideGunSub; if (cgun has concealed && cgun in player) "It's already hidden."; if (cgun in player) { give cgun concealed; "You hide the gun underneath your clothes."; } "Huh?"; ]; [ HangupSub; "Huh?"; ]; [ BangDoorSub; if (location==bd || location==bh) "You pound on the door but no one answers."; "What door?"; ]; [ GoScottSub; return; ]; [ GoSusansSub; return; ]; [ GoHomeSub; return; ]; [ GoPoliceSub; return; ]; [ GoHospitalSub; return; ]; [ ScreamSub; if (susan has offhook) "That wouldn't be polite."; if (location ofclass sidewalk && YaFuckG==false) "It's a quiet neighborhood. There's no reason to yell.^"; if (location ofclass sidewalk) "Feeling threatened by the man in the car, you call out for help. A light goes on in a house up the street, but it immediately goes out, and you have a sinking feeling that you're on your own.^"; if (location == dw || location == fh || location == bh) "You call for help but there seems to be a spell cast on the neighborhood and no one answers.^"; if (location ofclass street || location ofclass alley) "Your screams die in the heavy fog.^"; if (location ofclass sewer || location == ld1 || location == ld2) "Your screams echo uselessly off the walls of the tunnels.^"; if (location ofclass park) "You yell at the trees, frustrated and afraid.^"; if (player in suecar) "That wouldn't be polite.^"; if (player in lrc && susan in lr) "You begin to scream, realizing that you've been lead directly into the proverbial lions den.^"; "There doesn't seem to be any point to yelling."; ]; [ FindPhoneSub; if (location == st15) <>; "You don't see a payphone but you remember one being on a street next to a park and north of an intersection."; ]; [ StartSub; if (location == inmancar) "You turn the key and the engine begins to turn, then putters out."; "Huh?"; ]; [ ShootGunSub; "The cylinder clicks, but nothing happens. You must be out of bullets."; ]; [ PointGunSub; if (cgun in player) { if (cgun has concealed) "The gun is hidden at the moment."; "You wave the gun around for no reason."; } "Huh?"; ]; [ LoosenSub; "Huh?"; ]; [ FreeSub; "Huh?"; ]; Include "Grammar"; verb 'info' * -> Info; verb 'xyzzy' * -> Xyzzy; verb 'fixed' * -> Fixed; verb 'start' * 'car' -> Start; verb 'smile' * -> Smile; extend 'smile' * 'at' 'man' -> Smile; extend 'smile' * 'at' 'Karl' -> Smile; extend 'smile' * 'at' 'Susan' -> SSmile; verb 'diagnose' * -> Diagnose; verb 'nod' * -> Nod; verb 'loosen' 'untie' * 'rope' -> Loosen; extend 'loosen' * 'ropes' -> Loosen; verb 'free' * 'hands' -> Free; verb 'fire' 'shoot' * -> ShootGun; extend 'fire' * 'at' noun -> ShootGun; extend 'fire' * 'gun' 'at' noun -> ShootGun; verb 'fold' * noun -> Fold; verb 'you' * -> YaFuck; verb 'run' * -> GoRun; verb 'hide' * -> HideIn; extend 'hide' * 'in' -> HideIn; extend 'hide' * 'gun' -> HideGun; verb 'hangup' * -> Hangup; extend 'hangup' * 'phone' -> Hangup; verb 'yell' 'scream' 'holler' * -> Scream; extend 'yell' * 'for' 'help' -> Scream; verb 'call' * -> Dial; extend 'call' * 'for' 'help' -> FindPhone; extend 'call' * scope=DialScope -> Dial; verb 'dial' * -> Dial; extend 'dial' * scope=DialScope -> Dial; verb 'phone' * -> Dial; extend 'phone' * scope=DialScope -> Dial; verb 'point' 'wave' * 'gun' -> PointGun; extend 'point' * 'gun' 'at' noun -> PointGun; verb 'knock' 'bang' 'pound' * -> BangDoor; extend 'knock' * 'on' 'door' -> BangDoor; extend 'read' first * legible -> Read; extend 'go' * 'to' 'back' 'door' -> GoToBD; extend 'go' * 'in' 'street' -> GoInST; extend 'go' * 'to' 'hospital' -> GoHospital; extend 'take' * 'me' 'to' 'the' 'hospital' -> GoHospital; extend 'go' * 'to' 'scott^s' -> GoScott; extend 'take' * 'me' 'to' 'scott^s' -> GoScott; extend 'go' * 'back' 'to' 'scott^s' -> GoScott; extend 'go' * 'to' 'police' -> GoPolice; extend 'take' * 'me' 'to' 'the' 'police' -> GoPolice; extend 'go' * 'to' 'your' 'house' -> GoSusans; extend 'go' * 'to' 'your' 'place' -> GoSusans; extend 'go' * 'home' -> GoSusans; extend 'go' * 'to' 'my' 'house' -> GoHome; extend 'go' * 'to' 'my' 'place' -> GoHome; extend 'take' * 'me' 'home' -> GoHome; extend 'attack' * noun 'with' held -> Attack;