!!! added sw_to exit to mm_copse for travel symmetry from mm_building !!! fixed missing periods at the end of descriptions !!! added pluralname to mm_wires !!! added handling for 'twist wires' !!! added more synonyms to mm_cylinder ! IF Whispers, Segment 11: written by markm ! ! Edited with hard tab stops at 8 characters. !ident "@(#)segment11.inf 1.1 05/08/16" Extend 'attack' * noun 'with' held -> AttackWith; Extend 'tie' * noun 'together' -> Tie; Extend 'twist' * noun 'together' -> Tie; [AttackWithSub; L__M(##Attack,1,noun); ]; Object mm_spanner "spanner" machine_room with author "markm", name 'spanner' 'wrench', description "A large, heavy spanner with adjustable jaws.", initial [; if (self hasnt general) { cetaphenyl.before = self.tricksy; give self general; } "Peeking out from behind one of the old machines is the tip of what appears to be a spanner."; ], tricksy [; Open: "A vague recollection of the poisonous gas that cetaphenyl gives off stops you."; Take: if (cetaphenyl has general) { rfalse; } give cetaphenyl general; move pharma_sign to mm_pharma_closet; move cabinet to mm_pharma_closet; PlayerTo(mm_pharma_closet, true); print "As you reach out to take the cetaphenyl, a sudden chill passes through your soul. A flicker in the corner of your eye catches your attention and you spin round to see a ghostly apparition before you!^ The image settles into your stunned awareness and you can see that it's of a thin, balding man wearing a white lab coat. It starts to make a vague, rasping sound. You strain your ears to hear.^ "; print "~Dr Foxtrot?~ it says.^ ~Er, no, I'm...~ you start to respond, but it cuts you off.^ ~If you're not Dr Foxtrot, then how did you get into the cabinet?~ it rasps angrily. ~And what do you want the cetaphenyl for?~^ "; print "You start to explain, but it cuts you off again. ~Wrong!~ it hisses in a burst of nearly-unintelligible static. ~Wrong wrong wrong! It's all a pack of lies!~^ ~But I'm telling the truth!~ you respond hotly.^ "; print "The apparition stares at you, and it's only now that you realize that it hadn't been moving its mouth when it spoke.^ "; print "~I believe you,~ it rasps quietly. ~Pass through this doorway.~^ "; print "The cabinet slides to one side and the image of a door appears before you. To the north.^"; move cetaphenyl to player; rtrue; ] ; Object mm_pharma_closet "Pharmaceutical Supplies, C-H" with author "markm", describe [; print "The supply closet is dimly lit with a light bulb hanging on a string, just out of your reach. Cabinets rise up from the floors to the ceiling and line all four walls, making the room seem even more cramped than it really is. The dinged-up aluminum doors on the cabinets are tightly shut. There is a door leading back to the corridor to the south.^"; if (self hasnt visited) { print "^You quickly rummage around and find the cabinet that should contain the cetaphenyl.^"; } rtrue; ], s_to [; if (self hasnt general) { print "~Er, no, I reckon that might be a mistake,~ you say hurriedly, backing out the way you came.^ The apparition looks almost apologetic. ~I'm sorry you feel that way.~^ As you start to step backwards through the door to the corridor, a massive bolt of electricity surges through you and you're hurled into a corner of the closet.^ ~Please don't do that again,~ the apparition cautions.^"; give self general; rtrue; } deadflag = 1; "You try again to go back into the corridor, but this time you don't even feel the electric jolt."; ], n_to [; print "You step up to the wall and pass through it. The last thing you hear is the apparition saying, ~When you get down here, bring the bottle to me.~ before your mind goes black...^^^^^"; return mm_field; ], has light ; Object mm_apparition "apparition" mm_pharma_closet with author "markm", name 'apparition' 'ghost' 'ghostly', description "The apparition is of a thin, balding man wearing a white lab coat.", orders [; default: "The apparition says nothing in response, as though it can't hear you."; ], life [; default: "The apparition says nothing in response, as though it can't hear you."; ], has animate ; Object mm_field "Out Standing In A Field" with author "markm", describe [; print "A broad, flat meadow surrounds you. "; if (~~self.surprised) { print "It's not entirely clear how you got here. "; self.surprised = true; } if (self has general) { print "A massive explosion must have taken place here, based on the scorch marks you see. "; } "To the east, you can see a small copse of trees, and to the south is a squat brick building. "; ], surprised false, n_to "You walk a bit to the north, but don't find anything interesting.", ne_to "You walk a bit to the northeast, but don't find anything interesting.", nw_to "You walk a bit to the northwest, but don't find anything interesting.", w_to "You walk a bit to the west, but don't find anything interesting.", sw_to "You walk a bit to the southwest, but don't find anything interesting.", se_to [; if (mm_explosive has general) { return mm_great_huge_hole; } else { return mm_circle; } ], s_to mm_building, e_to mm_copse, has light ; Object mm_copse_far "copse" with author "markm", name 'copse' 'small' 'tree' 'trees', description "The copse is too far away to make out any detail.", found_in mm_field mm_circle mm_building, has scenery ; Object mm_building_far "building" with author "markm", name 'squat' 'brick' 'building', description [; print "It's off to the "; if (location == mm_circle) { print "west"; } else { print "south"; } " and appears featureless."; ], found_in mm_field mm_circle, has scenery ; Object mm_great_huge_hole "A Hole In The Grass" with author "markm", describe [; "There used to be a circular slab of concrete here, around 20m in diameter. It has apparently been replaced with an enormous and extremely deep hole."; ], w_to mm_building, n_to mm_copse, nw_to mm_field has light ; Object mm_deep_hole "hole" mm_great_huge_hole with author "markm", name 'hole' 'great' 'huge' 'deep', description "It is so deep that you can't really see the bottom of it at all.", before [; Jump, JumpOver: "It's far too wide to jump across, and you're not about to jump in. Ever."; ], has static scenery ; Object mm_circle "A Circle In The Grass" with author "markm", describe [; print "The ground here has been paved over with concrete in the shape of a large circle, about 20m in diameter. "; if (self has general) { print "A smaller circular scorch mark, maybe 10m in diameter or so, graces a portion of it. "; } " You can see the building off to the west, and a small copse of trees to the north."; ], w_to mm_building, n_to mm_copse, nw_to mm_field, has light ; Object mm_cylinder "cylinder" ! with author "markm", name 'cylinder' 'switch' 'drawing' 'of' 'rectangle' 'etching', description [; self.initial(); ], initial [; print "Rising up about three meters from the exact center of the concrete is a cylindrical pillar between one and two meters wide. "; if (self hasnt open) { "Etched into the side of it is what appears to be a drawing of a rectangle but, on closer inspection, turns out to be a switch. "; } else { "It's been opened up and inside is the body of a man. A thin, balding man in a white lab coat. He is covered in a blue shimmering light. "; } ], before [; Push: if (self hasnt open) { move mm_deadman to mm_circle; give self open; "You push the switch on the side of the cylinder, and the side slides open, revealing a body inside!"; } "It does nothing more."; ], has ~open container static ; Object mm_deadman "dead man" mm_cylinder with author "markm", name 'man' 'body', description [; "The body is of a thin, balding man in a white lab coat, bathed in a blue shimmering light. As you start to examine him, his dead eyes pop open. A rasping sound full of static comes from unseen speakers.^ ~Where is it? Where is the cetaphenyl?~^ His eyes shut tight again and all goes quiet."; ], life [; Show, Give: if (noun == cetaphenyl) { if (self.wasHard) { print "Although other things were difficult for this body to react to, this one seems to have sparked it back to life. "; } remove cetaphenyl; print "As the hand with the bottle passes through the shimmering light, the dead body's eyes pop back open. Once again, you hear a rasping sound as the expressionless face stares at you.^ ~Ah, thank you,~ it says.^ You quickly draw your now-empty hand back as the cylinder's door slams shut. The cylinder itself sinks back into the ground and a deep rumbling vibration knocks you off your feet. You scramble backwards to the edge of the concrete circle as the entire thing opens up, and a missile or rocket starts to emerge! But it doesn't appear to be launching, for once its tip is around 10 or 20 meters up in the air, it suddenly stops with a loud echoing boom. A hatchway opens up on the side, and you step through...^^^"; PlayerTo(mm_bridge, false); rtrue; } default: self.wasHard = true; "It's difficult for a dead man to react to his surroundings."; ], wasHard false, has static scenery animate ; Object mm_copse "Small Copse Of Trees" with author "markm", describe [; print "As you look around you, all you can see are trees. If you didn't know that just beyond the trees was a large meadow, you could easily think you were in a large forest. "; if (self has general) { "A large forest with a massive blackened scorch mark in the middle. "; } "A vague path leads south and west from here."; ], w_to mm_field, s_to [; if (mm_explosive has general) { return mm_great_huge_hole; } else { return mm_circle; } ], sw_to [; print "You walk south along the path for a bit, and then head southwest towards...^"; return mm_building; ], has light ; Object mm_container "container" mm_copse with author "markm", name 'container' 'large', description "A large container is wedged in amongst a couple of the trees.", has static ~open openable container ; Object mm_remote "remote" mm_container with author "markm", name 'remote' 'button', description "A single-button remote control device.", before [; Push: if (mm_explosive in nothing) { "You click the remote, but nothing happens."; } if (location ~= mm_bridge) { mm_explosive.esplode(); rtrue; } "~Heh, nice try,~ says the doctor, more amused than anything else. ~That won't work in here.~"; ] ; Object mm_explosive "small box" mm_container with author "markm", name 'box' 'small' 'black', description "A small black box with no apparent means to open it. ", esplode [ isOutside canSee; if (IndirectlyContains(player, self) || IndirectlyContains(location, self)) { deadflag = 1; switch (random(3)) { 1: "The small black box explodes with violent energy. The bits of your body which aren't immediately turned into vapor end up as a great fertilizer for the surrounding meadow."; 2: "The small black box explodes with a deafening roar. You, of course, hear none of it as you are dead before the sound reaches your ears which, in turn, don't reach the ground for a minute or two. The majority of your body, however, reaches the ground with amazing speed. "; 3: "The small black box erupts in a gigantic explosion. You get to see the first split-second of it before your eyes are drawn elsewhere - in fact, most of your head is drawn elsewhere much to the chagrin of the rest of your body."; } } isOutside = false; canSee = false; print "A muffled explosion sounds in the distance"; if (location == mm_copse or mm_building or mm_field or mm_circle) { isOutside = true; } if (location == mm_building or mm_field or mm_circle) { canSee = true; } if (IndirectlyContains(mm_copse, self)) { self.adjust_world(mm_copse); if (canSee) { ". You see some smoke rising through the trees which blows gently away."; } else { "."; } } if (IndirectlyContains(mm_building, self)) { self.adjust_world(mm_metal_door); if (canSee) { ". You see smoke rising from the area near the building."; } else { "."; } } if (IndirectlyContains(mm_circle, self)) { if (mm_wires has general) { ! player is exploding the rocket print ", followed by a too-eerie silence. "; if (isOutside) { deadflag = 1; "Suddenly, an enormous mushroom cloud bursts from the area by the circle, sending debris of all shapes and sizes into the air. One piece of the debris gains an extra stain after it lands on you."; } else { give self general; "Without warning, a second, more powerful, explosion knocks you on your feet and you listen as, for several minutes, chunks of debris of varying sizes land around you. "; } } self.adjust_world(mm_circle); ". Dirt and grass float gently down to the ground."; } if (IndirectlyContains(mm_inside_building, self)) { self.adjust_world(mm_inside_building); ". Nothing obvious happens, though. "; } if (IndirectlyContains(mm_field, self)) { self.adjust_world(mm_field); if (canSee) { ". Dirt and grass float gently down to the ground."; } else { "."; } } "The remote plays some jazzy country music. [BUG]"; ], adjust_world [ item loc oldloc; give item general; oldloc = self; loc = parent(self); while (parent(loc) ~= nothing) { oldloc = loc; loc = parent(loc); } remove oldloc; ], ; Object mm_trees "trees" mm_copse with author "markm", name 'tree' 'trees', description "Tall gangly trees surround you.", has scenery ; Object mm_building "Outside Building" with author "markm", describe [; print "A small brick building is built, inexplicably, in the middle of this vast meadow. "; if (mm_metal_door has general) { print "The door has been forced open and is hanging loosely on its hinges. "; } else { print "There is a small door on one side, padlocked shut. "; } "To the northeast you can see a small copse of trees, and an overgrown path leads eastwards. "; ], e_to [; if (mm_explosive has general) { return mm_great_huge_hole; } else { return mm_circle; } ], ne_to mm_copse, in_to [; <>; ], w_to [; if (mm_metal_door has general) { return mm_inside_building; } "The door is locked."; ], has light ; Object mm_building_up_close "building" mm_building with author "markm", name 'building', description "The building is windowless with brick walls and a slab of concrete for a roof. Set into one side is a small metal door.", before [; Enter: PlayerTo(mm_inside_building, false); rtrue; ], has scenery ; Object mm_roof "roof" mm_building with name 'roof', author "markm", description "A single slab of concrete makes up the roof." has scenery; Object mm_metal_door "metal door" mm_building with name 'metal' 'door' 'small' 'padlock' 'lock', author "markm", description [; if (self has general) { "The door has been forced open and is hanging loosely by its hinges."; } else { "A small metal door is set into one side of the building, a padlock holding it shut."; } ], before [; Open: if (self has general) { "The door isn't going to open or close ever again. But there's enough of a gap for you to sneak by."; } else { "You jiggle and shake the padlock, but it doesn't come off."; } Attack: "With your bare hands?"; AttackWith: if (self has general) { "Show what's left of the door some mercy!"; } if (second == mm_spanner) { give self general; "You strike the padlock over and over again, venting all your anger and frustration on it. The padlock smashes to bits and the door is wrenched from its hinges before you stop, breathing heavily."; } "That would never work. "; ], has scenery static ; Object mm_inside_building "Inside Building" with author "markm", describe "The interior of this building is cool and damp. A little bit of light streams in through the smashed-open door to the east, casting jagged shadows everywhere. A small, dark hole is in the northern wall.", e_to mm_building has light ; Object mm_hole "hole" mm_inside_building with author "markm", name 'hole' 'dark', description "Feeling around inside the hole, you discover a pair of bare wires.", before [; Search: PrintOrRun(self, description); rtrue; ], has scenery ; Object mm_wires "wires" mm_inside_building with author "markm", name 'wires' 'wire', description [; print "A pair of wires"; if (self has general) { print ", recently attached"; } ". Touching them gave no sensation, so they're either dead or have very little current. They feel spirally, as if they had been tied together."; ], before [; !!! I just thought that 'twist wires' should probably do the trick. -Rob Turn: if ( verb_word == 'twist' ) <>; "You'll have to be more specific about what you want to do. "; Tie: if (self has general) { "They're already tied together."; } if (second == nothing || second == mm_wires) { give self general; move mm_cylinder to mm_circle; "You attach the wires together. A deep rumbling sensation vibrates through the floor at you, and then stops. You sense nothing else. "; } "You can't do that."; ] has static scenery pluralname ; Object mm_rocket_debris "rocket debris" with author "markm", name 'rocket' 'debris', description "Various bits of debris, which appear to be from a missile or rocket of some kind.", found_in [; if (mm_explosive has general) { if (location == mm_building or mm_copse or mm_field) { rtrue; } } rfalse; ], has static proper ; Object mm_bridge "Control Room" with author "markm", describe "This is a smallish room lined with several computer consoles. A pair of chairs are bolted to one wall, and a closed hatchway is set into another..", has light ; Object mm_chairs "chairs" mm_bridge with author "markm", name 'chair' 'chairs', description [; if (~~self.lookedat) { self.lookedat = true; "^ The doctor sees you eyeing the chairs. ~Go ahead and get in,~ he says. It's the only wise choice to make."; } "Chairs for sitting in when taking off and landing. "; ], lookedat false, before [; Enter: deadflag = 2; "You make your choice and sit in a seat. The doctor takes the other one and commands the rocket to launch. What brave new world will you help him to popula... ugh, that needs rephrasing, doesn't it?"; ], has static scenery enterable ; Object mm_hatch "hatch" mm_bridge with author "markm", name 'hatch' 'hatchway', description "This is the way you came in, and appears to be the only way out.", before [; Open: "It clanks softly but fails to open.^ ~Yeah, well,~ says the doctor. ~I guess that wasn't really an option.~^ He waves the gun in what is intended to be a threatening manner."; ], has ~open static scenery ; Object mm_dr_delta "Dr Delta" mm_bridge with author "markm", name 'man' 'delta' 'doctor', description [; "Dr Delta stands about 6 feet tall, a thin, balding man wearing a white lab coat."; ], infodump false, initial [; if (self.infodump) { self.description(); rtrue; } self.infodump = true; print "Dr Delta turns to you as you walk in. "; print "^ ~Ah, there you are! Thank you again for the cetaphenyl! As you can see, it has restored me to life. And now everything is ready and we shall depart!~^ ~What's ready?~ you demand. ~And why do you think I would go with you?~^ ~In order: the rocket, and you've got no choice. The rocket is carrying the seeds of my clone-brothers and is going to populate a new world! Just imagine a world full of people as brilliant as myself!~^ "; print "~Boggles the mind,~ you mutter.^ ~Quite!~ he exclaims. ~And as you've helped me achieve this goal, you are now a criminal on *this* world. Your real choices are: come with me, go back outside to be tried for treason, or simply die now.~^ He pulls a gun out of his pocket and aims it at you. ~So,~ he says quietly. ~What'll it be?~^"; rtrue; ], life "~Never mind that, now. Just make a choice.~", orders "~Never mind that, now. Just make a choice.~", before [; ShootAt: print "Before you can fire the gun, Dr Delta instinctively dodges. Luckily for him, your shot is wide of the mark.^ He brings his own gun to bear on you and squeezes the trigger... but nothing happens! Enraged, he charges at you"; return mm_gun.struggle(); ], has animate proper transparent ; Object mm_gun "Delta's gun" mm_dr_delta with author "markm", name 'delta^s' 'gun', safety false, description [; print "It's Dr Delta's gun. He's pointing in your direction the bit where the bullets come out"; if (self.safety) { ". He still hasn't switched off the safety."; } else { self.safety = true; " but, to your surprise, the safety appears to be engaged."; } ], before [; ShootAt: print "Aiming carefully, you fire your ray gun at Dr Delta's gun, and you hit it! It is completely vaporized. Enraged, he charges at you"; return self.struggle(); Take: print "With a lightning-quick motion, you reach for the gun"; return self.struggle(); ], struggle [; deadflag = 2; " and, in the ensuing struggle, the doctor bangs his head hard against one of the chairs and falls to the ground, unconscious.^ You quickly search his pockets and find the key to the hatchway. When you step back outside, the authorities are already gathered around - apparently they were just as surprised as you when a rocket emerged from the ground.^ You explain the situation to them and they take Dr Delta into custody. Weeks later, when the media begin to start reporting on the events, you find yourself disappointed as to how little credit you get for capturing the evil doctor."; ], has proper ;