!!! Fixes applied after submission: !!! Moved shootable_weapon stuff into this file (see below) !!! changed 'n' to 'n//' !!! fixed two places where the white button is referred to as a black button !!! trapped Remove and Transfer actions on quantity_of_kernels !!! fixed backwards description toggle on monorail_track !!! added 'corpse' and 'corpses' to scenery_dead_bodies !!! cheated and added terminal_information to the severed hand ! IF-Whispers 1 ! Segment 4 ! by J. Robinson Wheeler ! Started: 07-21-05 - Finished: 07-24-05 ! Begin added section ! When segment4.h was submitted, it was returned with ! an altered copy of whispers.h that contained the following ! code. I moved it into segment4.h. ! -- Carl Muckenhoupt Attribute shootable_weapon; [ ShootAtSub; "There's no reason to fire at ", (thatOrThose) noun, ". "; ]; Verb 'shoot' 'fire' 'blast' 'zap' * shootable_weapon 'at' noun -> ShootAt reverse * noun 'with' shootable_weapon -> ShootAt ; ! End added section Object kludge_redirector "kludge" crossroad with author "Rob", description "I can't figure out how to add new door exits to segment3 rooms without altering segment3.h. So I'm building copies of those rooms with different names and exit links to my doors, and relinking from the 'crossroad' location to my replacement rooms. You can either leave this object here, or change the crossroad location's exits. While I have kept the descriptive text written by the author of the previous segment for these copied rooms, I have split off some of the text from room descriptions into the when_open and when_closed properties of the new door objects, so the replacement rooms have to supersede the segment3 versions or things will look funny. ", react_after [; crossroad.n_to = undercomplex_north; crossroad.w_to = transport_platform; remove self; ], has scenery ; Object series_of_small_windows "small windows" with name 'series' 'of' 'small' 'window' 'windows', author "Rob", description [; if ( player in crossroad ) { "The windows are situated along the top of the dome. You'll be able to see out them much better from up on the catwalk. "; } if ( displays has general ) { "Through the windows ringing the upper dome, you see a similar sight to that on the display screens. Grey haze, endless fields of corn under a glassy ceiling. Distantly, the huge metallic cube.^^ Fortunately, you cannot make out enough detail at this distance to recognize the dead bodies amid the rows of corn. You just know they're there. "; } else { print "Through the windows ringing the upper dome, you see the endless rows of corn growing outside under a ceiling of glass. It is almost enough to give you the illusion that you're looking outside, but you're too far underground for that. In the distance, looking smaller than you expected, the huge metallic cube, a strange monument standing in the corn.^"; if ( displays in location ) "^Your attention is drawn to the display screens behind you, which show the same exterior views in greater detail. "; rtrue; } ], before [; Open, Close: "You can't reach the windows. "; Search: <>; Attack, ThrowAt: "That won't help. "; ! ShootAt: ], found_in crossroad catwalk_room, has scenery pluralname ; Object scenery_cube "metallic cube" catwalk_room with name 'huge' 'metallic' 'cube' 'monument', author "Rob", description [; "The metallic cube stands in the corn fields. "; ], before [; Examine: rfalse; default: "It's too far away. "; ], has scenery ; Object scenery_fields_of_corn "fields of corn" catwalk_room with name 'field' 'fields' 'of' 'corn' 'rows' 'row' 'endless', author "Rob", description [; if ( displays in location && displays has general ) print "On the display screens, "; else print "Through the windows, "; "you see the endless fields of corn. "; ], before [; Examine: rfalse; default: "They're too far away. "; ], has scenery pluralname ; Object scenery_dead_bodies "dead bodies" catwalk_room with name 'dead' 'body' 'bodies' 'arm' 'arms' 'foot' 'feet' 'face' 'half' 'eye' 'eyes' 'leg' 'legs' 'part' 'parts' 'corpse' 'corpses', author "Rob", description [; if ( displays notin location || displays hasnt general ) "You can't see any such thing. "; if ( self hasnt general ) { give self general; "There are bodies among the corn ... dead bodies. Seeming almost as countless as the corn itself, all concentrated about one side of the glass dome. The disturbing thing is that you can never see an entire body, only hints. An arm here. A foot there. Half a face stares up out of the corn at you. Eyes locked on yours. You feel fear, and turn away. "; } "There are dead bodies among the corn, parts of so many bodies. You can't bring yourself to look at them any more. "; ], has scenery pluralname ; Complex undercomplex_north "Undercomplex, northern corridor" with author "Rob", description [; if ( lights has general ) { "A corridor, featuring the same tubular, round construction as the rest of the undercomplex. A line of light along either wall lends a warm, white glow to the corridor, lighting your way without problem. To the south is the main apex. "; } else { "As the two lines of red light along either wall above your head pulse in and out, you make out what appears to be a tubular corridor. To the south is the main apex. "; } ], n_to vault_door, s_to crossroad, ; Object -> sound_of_breathing "sound of breathing" with name 'sound' 'of' 'breathing' 'noise', author "Rob", description [; if ( lights hasnt general ) "It's very faint, and probably your imagination. "; "You can't hear it any more. "; ], react_before [; Listen: <>; ], has scenery ; Object -> vault_door "vault door" with name 'truely' 'truly' 'huge' 'vault' 'heavy' 'door', author "Rob", description [; if ( lights hasnt general ) { "The strobing red lights make it hard to see any details on the door, or how to open it. "; } if ( self has open ) "The door stands wide open. "; if ( thumbscan_oval hasnt general ) "In the warm, white light, you can see a red oval just to the right of the door, about the size of your thumb. "; "The door is shut tight, and slightly seared. The thumbscan oval has been obliterated, leaving a scorched, melted spot just to the right of the door. "; ], when_closed [; if ( lights has general ) { print "North stands a very heavy door, one almost like some sort of vault. Just at the foot of it is a large symbol, cut into the floor. "; if ( thumbscan_oval hasnt general ) "To the right of the door, a red oval is now visible. " ; "To the right of the door is a scorched and melted spot where the thumbscan oval used to be. "; } else { "To the north is a truly huge door, like some sort of vault. As you stare at it, the red light pulsing in and out, you feel as if you can almost hear the sound of breathing."; } ], when_open [; "The door to the north is unsealed, revealing a wide opening. "; ], door_dir n_to, door_to inside_vault, before [; Open, Unlock: if ( self has open ) rfalse; if ( lights hasnt general ) "Distracted by the pulsing red light, you cannot see any way to gain entry. "; if ( thumbscan_oval has general ) "The thumbscan oval has been obliterated, leaving no way to open the door from this side. "; Lock: if ( self has locked ) "The door seems already to be locked. "; "You don't see any way of locking the door again. "; Close: if ( self hasnt open ) rfalse; "You don't see any way of closing the door again. "; ShootAt: "The door absorbs the energy of the blast. "; ], after [; Unlock: give self open; give inner_vault_door open; if ( inside_vault hasnt visited ) { "Grimly, you touch the thumb of the dead hand to the red oval. With a clank and a pneumatic hiss, the door unlocks and slides upward, revealing a wide opening.^^ A wispy haze with a sharp, burnt smell escapes from the room ahead. It dissipates slowly. "; } "Grimly, you again touch the dead hand to the thumbscan oval. With a clank and a pneumatic hiss, the door unlocks and slides open. "; ], with_key disembodied_hand, has static door openable enterable lockable locked ; Object -> thumbscan_oval with name 'thumbscan' 'oval' 'red' 'scorched' 'melted' 'spot', author "Rob", short_name [; if ( self has general ) print "melted spot"; else if ( self has moved ) print "thumbscan oval"; else print "red oval"; rtrue; ], description [; if ( self has general ) "Whoever that figure was, they really did a number on this mechanism. It's hard to tell whether they just wanted to buy time to escape, or if they were hoping you'd starve to death in there. "; if ( self has moved ) "The red oval seems to be the mechanism for opening the door by scanning a thumbprint. "; "The red oval is about the size of your thumb, and is located just to the right of the door. "; ], before [; if ( lights hasnt general ) "You can't see any such thing. "; Push, Touch: if ( self has general ) "All there is now is a melted spot next to the door. Pushing it now only makes your thumb warm. "; if ( self has moved ) "You put your thumb on the red oval. Once again, a light flashes across it, but nothing happens. "; give self moved; "You touch your thumb to the red oval. A light flashes across it, and there is a slight buzzing sound. The door fails to open, but it seems clear that you have learned that this is the mechanism for gaining entry. "; Receive: if ( noun == disembodied_hand ) <>; "You can't put ", (ThatOrThose) noun, " on ", (the) self, ". "; ], has scenery supporter ; Object -> vault_door_symbol "symbol" with name 'symbol' 'markings' 'large' 'floor', author "Rob", description [; "You make out a symbol that is marked in the floor, like a giant signpost of what might lie ahead; ($). It's like the other strange signs you have seen here. If only you had a means of translating it effectively. "; ], before [; Touch: "It feels almost slightly warm, as if it were more than just painted on. "; Push: "Pushing the symbol on the floor has no effect. "; ], has scenery ; Object inside_vault "Inner chamber" with author "Rob", description [; print "Scorch marks. Cracked glass. Monitors showing only lines and snow. A coppery tang to the air, of melted wiring and fused components. Perhaps this was another control station once, or a central computer area. "; inner_vault_door.description(); rtrue; ], out_to inner_vault_door, s_to inner_vault_door, before [; Smell: if ( noun == 0 || noun ~= dead_body ) "Burnt and acrid, but not pungent. The dead body can't have been here very long. "; ], has light ; Object -> dead_body "dead body" with name 'dead' 'body' 'man' 'old' 'jacket', author "Rob", description [; "It's an old man, wearing a jacket that sports multiple burn holes in the back and front. His face looks pained, creased with lines, not at all at rest. His skin is ashen and somewhat dried out. In fact, as you look closely, it crosses your mind that this man might not be old -- just dried out like a piece of fruit, making him look much older than he really is. "; ], describe [; "^Crumpled on the ground is a dead body, its back riddled with blackened blast marks. "; ], before [; ShootAt: "That would be a really tacky thing to do. He's had enough of that treatment already. "; Search: if ( charred_notes in self ) { move charred_notes to player; give self moved; "Taking care to be respectful, you give his jacket pockets a quick search. You retrieve from him a slightly charred but still readable notebook. "; } "You find nothing else. "; Pull, Push: if ( self hasnt moved ) { give self moved; if ( charred_notes in self ) { move charred_notes to location; "You prod the old man a little bit, just to make sure he's dead. As you do, a slightly charred notebook falls from his jacket. "; } "No need to be disrespectful. "; } Take, PushDir: "It's a little too awkward to move him anywhere. You'll probably have to leave him for now, and send help later. "; Listen: "He's not breathing, if that's what you mean. "; Touch: "He's cold to the touch. "; Smell: "He smells burnt. He doesn't smell like he's rotting, though, which is fortunate. It also means he was killed very recently. "; ], has static ; Object -> -> charred_notes "charred notebook" with name 'charred' 'notebook' 'note' 'book' 'notes' 'symbols', author "Rob", description [; "Most of the pages are burned, unfortunately, but there are a few surviving notes. A drawing of a corn stalk, what looks like a map of the complex. A sketch of a cube, a scrap of a chemical formula. Random sentences: ~Must stop them. How?~ ~One blast would take out this whole complex.~ ~Monorail, monorail, monorail...~ One mysterious word: ~KARAKTUS.~^^ On the last whole page is a set of symbols. You recognize them from this complex, and from the controls upstairs. He was evidently trying to figure them out as well. $ = energy, power, control?? >>> = ? [|||] = ? "; ], before [; Consult: "There's nothing further to look up in the charred notebook besides the surviving notes. "; ], ; Object -> blast_marks "blast marks" with name 'blast' 'wound' 'scorch' 'mark' 'burn' 'hole' 'holes' 'marks' 'holes', author "Rob", description "Marks left by some sort of energy gun or blaster. ", has scenery pluralname ; Object -> cracked_glass "cracked glass" with name 'glass' 'cracked' 'broken' 'shard' 'shards', author "Rob", description "Just more evidence that someone thought violence was the answer here. ", has scenery ; Object -> snowy_monitors "monitors" with name 'monitor' 'monitors' 'snow' 'screen' 'screens' 'lines' 'wavy' 'image' 'monorail' 'track' 'video''signal', author "Rob", description [; switch( self.number ) { 0: "On the monitors that haven't been completely burned out, all you see is snow and random patterns of lines. "; 1: "One of the snowy monitors changes to show a wavy view of the fleeing attacker, as she opens a door to a monorail track. "; 2: "One of the monitors shows a view of the fleeing figure climbing aboard some sort of flatbed car mounted on the track. The freight car starts to move along the track. "; 3 to 9: "One of the monitors shows a view of the fleeing figure piloting some sort of freight car down the monorail track. "; 10: "One of the monitors shows a view of the figure disembarking at another monorail station. The video signal breaks up at that point, becoming lines and snow again. "; default: "On the monitors that haven't been completely burned out, all you see is snow and random patterns of lines. "; } ], number 0, daemon [; if ( self hasnt general ) { give self general; rfalse; } self.number++; if ( player notin inside_vault ) rtrue; switch( self.number ) { 1: print "^You hear a mechanical whirring noise through the west wall. "; 3: print "^You hear a deep rumble through the wall, and the muted sound of something moving past from south to north. "; 11: StopDaemon(self); default: if ( action == ##Examine && noun == self ) rfalse; else new_line; } if ( action == ##Examine && noun == self ) { if ( self.number == 1 or 3 ) new_line; rfalse; } self.description(); rtrue; ], before [; Examine: self.number++; ], after [; Examine: self.number--; ], has scenery pluralname ; Object -> inner_vault_door "door" with name 'door', author "Rob", description [; if ( self has open ) "The door opens south, back to the corridor that leads to the dome apex. "; if ( self has locked ) "The door leading out is shut tight and locked. "; "The door leading out is still shut tight. "; ], door_dir s_to, door_to [; if ( self hasnt general ) { StartDaemon( snowy_monitors ); move fleeing_figure to location; give self general; give self ~open; give self locked; give vault_door ~open; give vault_door locked; give thumbscan_oval general; give door_in_north_wall open; give door_in_north_wall ~locked; print "As you turn to leave, you are startled to see movement in the distance. A figure, cloaked in some sort of dark uniform, has just emerged from the distant lift. The figure has spotted you, too, and lets out a screech -- her voice is female -- as she raises some sort of weapon. You duck behind the doorway as bolts of blue light come scorching in, adding to the blast marks already present.^^"; if ( head_of_corn in player ) { remove head_of_corn; print "The next shot nearly takes your hand clean off, as a crackling burst of energy vaporizes the head of corn you were carrying! "; } if ( head_of_corn in location ) { remove head_of_corn; print "The next shot seems to be aimed at the head of corn lying here. It is instantly vaporized by a crackling burst of energy right at your feet. "; } if ( head_of_corn in crossroad || head_of_corn in undercomplex_north ) { remove head_of_corn; print "For some reason, the figure wastes her next shot vaporizing the head of corn you left lying on the floor out there. "; } "With one final shot, something explodes just outside the door, causing a shower of sparks from a panel on the inside as well. Your last fleeting view of the figure is of her dashing off to the west as, with a crash, the door comes slamming down, sealing you inside. "; } else return( undercomplex_north ); ], before [; Open: if ( vault_door_panel hasnt general ) { give vault_door_panel general; "Casting your eyes around for some way to open and close the door, you notice a panel set to the left of the door. It has a black button and a white button. "; } <>; Close: if ( vault_door_panel hasnt general ) { give vault_door_panel general; "Casting your eyes around for some way to open and close the door, you notice a panel set to the left of the door. It has a black button and a white button. "; } <>; ShootAt: if ( self has open ) "The door is open, which means there's nothing to fire at. "; if ( parent(vault_door_panel) == nothing ) { give vault_door ~locked; give vault_door open; give self open; "Boom! Electrified by the blast, the door shoots open, clearing the way out to the south. "; } "The door absorbs the energy of the blast. "; ], has scenery door enterable openable ; Object -> vault_black_button "black button" with name 'black' 'button', author "Rob", description "The black button is part of the panel. ", before [; Push: print "You push the black button. "; if ( inner_vault_door has open ) { give inner_vault_door ~open; give vault_door ~open; give vault_door locked; "Clang! The door closes itself. "; } "Nothing happens. "; ShootAt: <>; ], has scenery ; Object -> vault_white_button "white button" with name 'white' 'button', author "Rob", description "The white button is part of the panel. ", before [; Push: print "You push the white button. "; if ( inner_vault_door hasnt open ) { give vault_door ~locked; give vault_door open; give inner_vault_door open; "Whoosh! The door opens itself. "; } "Nothing happens. "; ShootAt: <>; ], has scenery ; Object -> vault_door_panel "panel" with name 'panel', author "Rob", description "The panel has a black button and a white button. ", describe [; if ( self hasnt general ) rtrue; "A panel set next to the door has a black button and a white button. "; ], before [; Push: "Pushing the panel itself has no effect. "; ShootAt: remove self; remove vault_black_button; remove vault_white_button; if ( inner_vault_door hasnt open ) { give inner_vault_door open; give vault_door open; "You fire ", (the) second, " at the panel. It explodes in a shower of sparks, and the door flies open. "; } "You fire ", (the) second, " at the panel. It explodes in a shower of sparks. "; ], has static ; Object fleeing_figure "fleeing figure" with name 'female' 'her' 'woman' 'fleeing' 'figure' 'attacker', author "Rob", description [; switch( snowy_monitors.number ) { 1 to 10: "She's only an image on the monitors. "; default: "She's no longer in sight. "; } ], before [; default: self.description(); rtrue; ], has female scenery ; Complex transport_platform "Undercomplex, transport platform" with author "Rob", description [; if ( lights has general ) { "You find yourself in what appears to be a much wider tubular construct than the corridors that connect this undercomplex. The same line of light circles the walls, far up above you, casting a warm white light upon metallic walls. The gouges that mark the floor from the small lift terminate at what appears to be a platform of some sort. "; } else { "The slowly brightening and fading red light continues to light your surrounds. Here is what appears to be much of the same, but the tubular construct here is oblonged. It's hard to make out much more features here. "; } ], e_to crossroad, n_to door_in_north_wall, has light ; Object -> monorail_track "monorail track" with name 'monorail' 'track', author "Rob", description [; if ( door_in_north_wall hasnt open ) "The track disappears through an imposing, sealed door in the northern wall. "; else "The track disappears through a vast opening in the northern wall. "; ], found_in transport_platform monorail_load_station, has scenery ; Object -> door_in_north_wall "door in the northern wall" with name 'north' 'n//' 'wall' 'door' 'northern' 'opening', author "Rob", description [; if ( self has open ) "The door is open. "; "The door in the northern wall is closed. "; ], when_closed [; if ( lights has general ) "A large monorail track disappears into the northern wall, where there looks to be a heavy door of sorts. "; "What appears to be some sort of monorail track takes up the bulk of the chamber, disappearing into the northern wall. "; ], when_open "A monorail track leads away from the platform, through a vast opening in the northern wall. ", door_dir n_to, door_to monorail_load_station, before [; Close: if ( self hasnt open ) rfalse; "There doesn't seem to be any way to close the door. "; Open: if ( self has open ) rfalse; "You aren't sure how to open it. A mechanized loading dock like this could be controlled from somewhere else nearby in the complex. "; ], has static door enterable locked ; Object -> metal_crate "metal crate" with name 'metal' 'crate' 'box' 'lid' 'heavy', author "Rob", description [; "A heavy metal crate, about a cubic meter in size. From the gouges in the floor, it looks as if it would take a lot to lift. A lot more than you could manage alone. "; ], before [; Open: if ( self hasnt general ) { give self general; quantity_of_kernels.Fill(); move quantity_of_kernels to self; } Push, Pushdir, Take: "You try it, but this crate wasn't meant to be moved by a mere man. "; Empty: "The metal crate is too heavy for you to pick up and empty out. "; ], has static container openable ; Object quantity_of_kernels "quantity of dried corn kernels" with name 'quantity' 'of' 'corn' 'kernel' 'kernels' 'dried', author "Rob", description "The dried corn kernels fill the metal crate nearly to the rim. ", before [ i; Transfer: if ( second == kettle ) <>; else print_ret "There's no point putting corn kernels in ", (the) second, "."; Take, Remove: print "You lift a handful of kernels and let them drop back into the crate. "; if ( child(self) ~= 0 ) { if ( self hasnt general ) { give self general; "It looks like there is something hidden in the kernels. "; } "It seems like there is still something hidden in the kernels. "; } new_line; rtrue; Search: ! Add anything else you want the PC to find in the corn ! by making an object of class HiddenInCorn (see below) ! with a FindMe() routine. ! i = child(self); if ( i == 0 ) "You find nothing else in the kernels. "; return( i.FindMe() ); ], Fill [ i j; ! Extra contortions here to force object tree ordering is the ! same as the order objects are declared. This is so that if the ! next person decides to put more things in the crate, they come ! after the ones I'm putting in here; also, so that the ones I'm ! putting in here are found in a certain order. objectloop(i) { if ( i ofclass HiddenInCorn ) move i to metal_crate; } j = child(metal_crate); while ( j ~= 0 ) { move j to self; j = child(metal_crate); } ], ; Class HiddenInCorn with FindMe [; ! Generic routine in case you want to add some things to the ! crate of corn and don't feel like writing a special find description ! or action. ! move self to player; "Hidden in the corn you find ", (a) self, ", which you take. "; ], ; HiddenInCorn ray_gun "ray gun" with name 'ray' 'gun' 'blaster' 'pistol', author "Rob", description "It's some sort of weird ray gun, by the looks of it. It feels cold and slick like metal, but is vaguely translucent, revealing strange tube-like circuits inside, some of which are glowing. ", before [; ShootAt: "You can't fire the ray gun at itself. "; ], FindMe [; move self to player; "You push your hand down into the dried kernels and sweep back and forth until your fingers brush against something solid. You get a grip on it with your fingertips and tug it to the surface. It appears to be a pistol, but not an ordinary one. "; ], has shootable_weapon ; HiddenInCorn toxin_vial "vial of toxin" with name 'vial' 'of' 'toxin' 'cap' 'glass', author "Rob", description [; print "A glass vial with a cap. "; if ( milky_poison in self ) "Inside swirls a milky, poisonous-looking liquid. "; ], FindMe [; move self to player; "Your hand closes around a small tube. Retrieving it from the dried corn, you see that it is a small, capped vial. "; ], before [; Receive: "You can't fit that into the vial. "; Drink: "The vial isn't open. "; Open: "You open the cap a little bit, and the toxin within immediately starts to bubble and turn into an acrid curl of expanding gas that smells like burning plastic death. You clamp the cap back on immediately, feeling slightly woozy. You hope whatever little bit of it you breathed wasn't enough to harm you. "; ], after [; Empty: <>; ], has container openable transparent ; Object -> milky_poison "milky poison" with name 'milky' 'poison' 'liquid' 'poisonous', author "Rob", description "It just somehow looks toxic. And alien. Antithetical to life. ", before [; Drink: "You can't make yourself do that. "; ], ; HiddenInCorn disembodied_hand "severed hand" with name 'gray' 'grey' 'human' 'hand' 'severed' 'claw' 'thumb' 'finger' 'fingers' 'dead', author "Rob", description "The hand is desiccated, the skin taut and gray. The severed end looks cauterized and almost clean, if you can call it that, rather than ragged and fleshy. It is still horrifying. ", FindMe [; move self to location; "You rummage through the dried corn, delving deep into the bottom of the crate. Your fingers close around something stiff and oddly shaped. With a tug, it comes loose from the kernels. A severed human hand!^^ With a shriek, you reflexively toss it away and wipe your own hand off on your pant leg. It clangs against the wall and falls to the floor, fingers extended in a curled claw shape. "; ], before [; Take: if ( self has general ) rfalse; if ( thumbscan_oval has moved ) { give self general; move self to player; "You have to overcome your revulsion to do so, but you pick up the dried-out dead hand. All of the hairs stand up on the back of your neck, and your stomach squirms. "; } "You are not touching that thing again without a good reason. It gives you the shivers just thinking about it. "; ], terminal_information [; !!! Added after the fact print "Decayed human tissues saturated with di-emelyne tetra-zytrate and covered with trace amounts of genetically modified corn. Fingerprint analysis matches no known entry in community records."; ], ; Object floor_gouges "gouges in the floor" with name 'gouge' 'gouges' 'tracks' 'floor' 'scrape' 'scrapes', author "Rob", description "Something heavy was dragged along here. ", found_in shed corridor crossroad transport_platform, has scenery pluralname ; Object monorail_load_station "Monorail loading station" with author "Rob", description "The monorail track extends from here into a dark, straight tunnel that goes farther than your eyes can see. A huge mechanical arm with a claw grip twenty feet wide hangs overhead. To the south, a loading platform is visible. ", initial [; move flatbed_car to location; !!! changed "the" to "a" mechanical arm in the first sentence "^As you enter the area, a mechanical arm comes to life, grasping an empty flatbed freight car from a storage rack. It lowers it onto the track, and the car stabilizes itself with heavy metallic clicks and a hiss. The arm then retracts into its resting position near the high ceiling. "; ], s_to transport_platform, has light ; Object flatbed_car "flatbed car" with name 'flatbed' 'freight' 'car', author "Rob", description [; print "It mainly looks like a slab of scratched-up metal, about twelve feet by twenty. At the front end is a post with a lever, about the simplest control you could imagine.^"; SayWhatsOn( self ); rtrue; ], describe "^Sitting on the monorail track is a flatbed freight car. ", add_to_scope [; if ( player in self ) AddToScope( flatbed_control_post ); else AddToScope( unreachable_post_and_lever ); ], has static enterable supporter ; Object unreachable_post_and_lever "post and lever" with name 'post' 'lever', author "Rob", description "The post holds the single control for the car: a lever with two settings. ", before [; Examine: rfalse; default: "You'll have to climb onto the flatbed car first. "; ], has scenery pluralname ; Object flatbed_control_post "post" with name 'post', author "Rob", description "The post holds the single control for the car: a lever. ", has scenery transparent ; ! Object control_lever "lever" flatbed_control_post ! with name 'lever', ! ; ! - This control lever is left as an exercise for the author of segment 5. ! !