!!! Fixes applied after submission: !!! examining hole_in_ceiling now works the way it's supposed to !!! added newlines after some responses !!! added some synonyms for Lamp, HydraulicLiftBase ! Initial segment by Carl Muckenhoupt ! Basic wake-up-with-amnesia-in-strange-environment scenario. ! One main puzzle: to reach Roof. This segment does not ! provide any actual reward for doing this. Object SteelRoom "Steel Cube" with description [; print "Somehow, you've wound up inside an apparently seamless cube of polished steel, about 20 feet on a side"; if (Slab in self) ", with a stone slab near the center."; else ". Near the center, a stone slab is flush with the ceiling, supported by a hydraulic lift that disappears into a dark hole in the floor."; ], d_to false, ! need this so we can change it later author "baf", ; Object Lamp "halogen torchiere" SteelRoom with name 'floor' 'lamp' 'black' 'halogen' 'torchiere' 'torch', initial "A black floor lamp stands near the slab, illuminating the whole space.", description "It's one of those ubiquitous halogen torchieres. Oddly, there's no cord.", before [; ThrowAt: "That would be very dangerous! These halogen units are delicate, and tossing them around like that is liable to break it and set something on fire."; ], after [; Take: if (self hasnt moved) "You heft it in both hands like a quarterstaff."; SwitchOn: give self light; SwitchOff: give self ~light; ], author "baf", has switchable on light; Object Slab "slab" SteelRoom with name 'stone' 'grey' 'gray' 'slab', description "A slab of grey stone, two feet thick. ", before [; Push, PushDir, Pull, Turn: "It's far too heavy to move by hand."; ], author "baf", has enterable supporter static scenery; Object HydraulicLift "hydraulic lift" with name 'hydraulic' 'lift' 'shaft' 'stone' 'grey' 'gray' 'slab', description "A circular shaft, wider around than you can reach with both arms, stretches from a dark hole in the floor to the stone slab now flush with the ceiling.", after [; Climb, Enter: "You try to shimmy up the shaft, but it's far too awkward."; ], author "baf", has scenery; Object HoleUnderSlab "hole under the slab" with name 'hole', description "It looks like you could fit through.", door_to Crawlspace, door_dir d_to, author "baf", has scenery door open; Object Crawlspace "Crawlspace" with name 'dust' 'concrete', description "You are in a cramped niche of poured concrete underneath the steel cube.", u_to HoleInCeiling, author "baf", ; Object HoleInCeiling "hole in the ceiling" Crawlspace with name 'hole' 'slab' 'grey' 'gray' 'stone', short_name [; !!! added by Rob, perhaps illegally if ( self has open ) print "hole in the ceiling"; else print "slab of stone"; rtrue; ], description [; if (self has open) print_ret (string)self.when_open; print_ret (string)self.when_closed; ], when_closed "A slab of grey stone blocks the way back to the steel room.", when_open "A hole in the ceiling leads back to the steel room.", door_dir u_to, door_to SteelRoom, author "baf", has static door ~open; Object HydraulicLiftBase "hydraulic lift" Crawlspace with name 'hydraulic' 'lift' 'shaft' 'box' 'metal', description "The base of the lift is a squat box of impenetrable metal set immovably into the floor, with a thick shaft rising from it. Apart from an inviting green button, it's completely featureless.", author "baf", has static transparent; Object GreenButton "green button" HydraulicLiftBase with name 'green' 'button', description "Inviting!", time_left 0, time_out [; ToggleSlab(); ], before [; Push: StartTimer(self, 1); "A muffled beep emanates from the hidden machinery."; ], author "baf", has scenery; Object Baseball "baseball" Crawlspace with name 'baseball' 'ball' 'grimy', initial "An abandoned baseball lies in the dust.", description "Slightly grimy, but otherwise in good condition.", author "baf", ; Object Roof "Roof" with name 'cube' 'cornfield' 'steel' 'corn' 'field', description [; print "You're on top of a 20-foot steel cube in the middle of a vast cornfield."; if (Slab in self) " A stone slab forms part of the roof."; rtrue; ], d_to "The walls are sheer. You'd fall and break your neck.", author "baf", has light; [ RaiseSlab; move Slab to Roof; move HydraulicLift to SteelRoom; move HoleUnderSlab to SteelRoom; SteelRoom.d_to = HoleUnderSlab; give HoleInCeiling open; if (location == thedark) rtrue; if (IndirectlyContains(Slab, player)) { print "^The slab zooms upward. Just before you hit the ceiling, an otherwise undetectable panel slides open and you emerge into the open air.^"; PlayerTo(parent(player)); rtrue; } switch (location) { SteelRoom: "^With an unassuming wheeze, the massive slab soars upward, supported by a hydraulic lift."; Crawlspace: "^The slab quietly lifts away from the ceiling."; Roof: "^That invisible panel slides open again and the slab emerges into view."; ! Note: This will not happen given only the code for this segment. } ]; [ LowerSlab; move Slab to SteelRoom; remove HydraulicLift; remove HoleUnderSlab; SteelRoom.d_to = false; give HoleInCeiling ~open; if (location == thedark) rtrue; if (IndirectlyContains(Slab, player)) { print "^Without warning, the slab plunges back into the steel room, the ceiling closing up behind it."; PlayerTo(parent(player)); rtrue; } switch (location) { SteelRoom: print "^The slab drops with alarming speed, but comes to a gentle stop, snugly covering the hole in the floor."; if (child(Slab) ~= 0) " Oddly, even though the slab was flush with the ceiling, its contents are undamaged."; print_ret ""; Crawlspace: "^The lift silently lowers the slab over the ceiling, blocking your route back to the steel room."; Roof: "^The slab drops away and is quickly covered by a sliding panel. Once it's closed, you can't see the edges of the panel any more."; ! Note: This will not happen given only the code for this segment. } ]; [ ToggleSlab; if (Slab in SteelRoom) RaiseSlab(); else LowerSlab(); rtrue; ]; Object LongLever "lever" SteelRoom with name 'lever' 'long' 'rubber' 'grip' 'bearing' 'bearings' 'grip' 'black' 'rubber', initial [; print "A long lever "; if (self has on) "lies against one wall."; "juts out from the wall at eye level."; ], description [; print "The lever is about a yard long, with a black rubber grip on the end. It's set into the wall at eye level, in a bearing that pivots horizontally. It is currently "; if (self has on) "flat against the wall."; "perpendicular to the wall."; ], before [; Touch: if (IndirectlyContains(Slab, player)) "You can't reach it from the slab."; "It moves at your slightest touch. Clearly the bearings are well-oiled."; Push, Pull: if (IndirectlyContains(Slab, player)) "You can't reach it from the slab."; if (self has on) { give self ~on; print "The lever swings out effortlessly until it's perpendicular to the wall."; } else { give self on; print "The lever pivots smoothly back towards the wall. "; } ToggleSlab(); rtrue; ThrownAt: if (noun == Baseball) { if (self has on) print "You peg it with the baseball, but since it's already against the wall, it doesn't move.^"; else { print "The ball sends the lever spinning backwards. "; give self on; ToggleSlab(); } move Baseball to parent(self); rtrue; } else "You can't throw that accurately enough to hit something the size of the lever."; ], author "baf", has static on;