!---------------------------------------------------------------------------- !**************************************** CUSTOM "OPEN/MOVE OBJECT" MESSAGES !---------------------------------------------------------------------------- routine PrintText12(val1,val2) { select val1 case 1 { !Usage: (12,1,obj) !The object moves a little -- pulling rope while it's attached. print CThe(val2); " moves a little." } case barn_doors { !Usage: (12,obj) if (location = house) { "You walk over to the big barn doors and push them open." } else { "You pull the big barn doors open." } } case hatch { !Usage: (12,obj) "You pull on the handle, lifting the hatch open." if (bees.found_in = cellar) { ! We can also rely on the northwest exit being open, ! since the only way to block it is with the wheel ! that's down in the cellar. "\nAlmost instantly, a cloud of small black bees shoot up and out of the opening, forcing you back from the cellar entrance. They swarm circles around you, then "; ! Will anybody notice that they go where the girl is? ! probably not... but at least they're consistent. if (girl in location) { "dart toward the girl. In moments, they are like a cloak around her, shifting and moving at her command." bees.misc #1 = true !The bees are around the girl. } else { "dart out and away through small gaps in the "; if (girl in orchard) { "southern "; } if (girl in hill) { "northern "; } if (girl in house) { "western "; } "wall slats." } } } case storage_bin { select val2 case 1 { !Usage: (12,obj,1) !This gets called in the "storage_bin.after" routine. !In other words, "open" succeeded. The only reason I want !to override the default is so I can avoid the blank line !that appears before the content listings. "You lift open the storage bin."; if child(val1) { print " Inside, you see"; SetListCount(val1) ListObjects(val1) if (grain in storage_bin) { set_pronoun_to = grain } } else { print newline !Just end the line. } } case 2 { !Usage: (12,obj,2) !Player is trying to move the bin. print CThe(val1); " is secured to the wall. It can't be moved." } } case barn_cabinet { !Usage: (12,obj) !This gets called in the "barn_cabinet.after" routine. !In other words, "open" succeeded. The only reason I want !to override the default is so I can avoid the blank line !that appears before the content listings. "You pull the cabinet open."; if child(val1) { print " Inside, you see"; SetListCount(val1) ListObjects(val1) if (gate_key in barn_cabinet) { set_pronoun_to = gate_key } } else { " It's empty." !Nothing is inside. } } case grain { !Usage: (12,obj) "Rather than risk spilling grain here, you leave the burlap bag closed." } case flask { !Usage: (12,obj) !Player just tried to "open the flask." "It's best to leave it closed until you're ready to drink from it." } case barn_cask { select val2 case 1 { !Usage: (12,obj,1) !We move the cask out of the way. Don't end line, because !we'll follow it up with "you see a cabinet" there. if (verbroutine = &DoGet) { "You lift the barrel in both arms. It's heavy and full. You can't take it anywhere, but you do manage to set it to the side, revealing what's behind it." } else { print CThe(val1); " is heavy and full, but you manage to rock and slide it over enough to reveal what's behind it." } print "" !A blank line before mentioning the cabinet. PrintMessage(12,val1,2) !A cabinet is back there. set_pronoun_to = barn_cabinet } case 2 { !Usage: (12,obj,2) !This is called both when initially finding it, and also !when we look at the cask again after it's been moved. "A small cabinet "; PrintOpenClosed(barn_cabinet,false,false) " is built into the wall where the cask was." } case 3 { !Usage: (12,obj,3) print "You already moved "; The (val1); ". Nothing is to be gained by moving it any farther." } } case barn_southexit { select val2 case 1 { !Usage: (12,obj,1) !No longer used. We can't jam the pulley in any way. !change this if we disable it in some other way... !!!! "You can't. The pulley system has been jammed." } case 2 { !Usage: (12,obj,2) ! Player is trying to close the barn door from inside. ! But, That's not possible from inside. print CThe(val1); " can't be closed from inside." } case 3 { !Usage: (12,obj,3) ! Player is trying to close the barn door from inside. ! But, it's already closed (blocked by the panel). print CThe(val1); " is already blocked by the panel." } case 4 { !Usage: (12,obj,4) ! Player is trying to open the southwest barn door, either ! from the inside or the outside. print "You try moving the panel"; if (location = barn) { print " to unblock "; The(val1); } ", but it won't budge. From the way it's built, you see that it can only be "; if (location = barn) { "lifted from outside." } else { if (val1 is open) { "lowered "; } else { "lifted "; } "with the chain and pulley system." !I don't think this condition ever happens, but in case. pulley_system.misc #1 = true !Flag that we saw it. } } } case pulley_system { select val2 case 1 { !Usage: (12,obj,1) !Turn the pulley and open the panel. if (not pulley_system.misc #1) { "You notice a pulley system beside the panel. "; pulley_system.misc #1 = true !Flag that we saw it now. } "With some effort, you turn the pulley so that its chain lifts the bulky panel from the barn's entrance." } case 2 { !Usage: (12,obj,2) !Turn the pulley and close the panel. if (not pulley_system.misc #1) { "You notice a pulley system beside the panel. "; pulley_system.misc #1 = true !Flag that we saw it now. } "You turn the pulley the other way, and the bulky panel slides down to cover the barn's entrance."; !Don't end the line. Check for more at caller level. } case 3 { !Usage: (12,obj,3) ! We can assume the bees are out too, because otherwise ! the barn's northwest exit would not be blocked. " The girl is trapped inside the barn now, but she's sure to find a way out eventually. You face the panel, considering the situation. To end this"; ! If we've read the tapestry, mention the curse. if (tapestry.misc #1): " and stop the curse"; ", you must confront her. Without another way in, though, you will have to let her out so you can corner her from the inside." } } case apple_tree { select val2 case 1,2 { !Player hits or chops or throws something at the tree. if (verbroutine = &DoCut) { !We've already said "the tree" before here. "It "; } else { !We haven't, so mention the tree to begin. "The tree "; } "shakes a little"; } case 1 { !Usage: (12,obj,1) !Player hits/cuts apple tree after the apple already gone. print ", "; "but nothing else happens." !fragment re-used. } case 2 { !Usage: (12,obj,2) !Player hits/kicks/cuts the tree, and an apple falls out. if (apple in apple_tree) { ", and the apple falls to the ground." } else { ", and a single apple falls to the ground from its otherwise barren foliage." } } case 3 { !Usage: (12,obj,3) !Player attempting to climb the tree for the first time. "You reach for the lower limbs to hoist yourself upward, but the tree can't support you. You manage to shake it a little, "; if (apple is moved) { "but nothing else happens." !sentence frag re-used. } else { if (apple in apple_tree) { "and the green apple drops to the ground." } else { "and a single green apple drops from the otherwise barren foliage." } } } case 4 { !Usage: (12,obj,4) !Player attempting to climb the tree after the first time. "It just won't support you. Nothing is gained by trying." } case 5 { !Usage: (12,obj,5) !Player tries to touch or tap the tree. Nothing happens. print "Nothing happens when you "; VerbWord; " "; print the(val1); ". Nothing happened when the girl did it, either." } case 6 { !Usage: (12,obj,6) - "Throw (object) at apple" - normal obj. print CThe(object); " hit"; MatchSubject(object); print " "; The(apple); ". "; if (object is plural): "They all "; else: "They both "; "fall from the tree, onto the ground." } case 7 { !Usage: (12,obj,7) - "Throw (object) at apple" - large obj. print "It doesn't reach "; The(apple); ", but it hits the tree. That's enough. The apple shakes loose, and it falls to the ground." } case 8 { !Usage: (12,obj,8) - "Throw (object) at apple" - small obj. print CThe(object); " misses the apple, hits the branches, and falls to the ground." } } case wheel { select val2 case 1 { !Usage: (12,obj,1) !Player pulls the wheel off the contraption, using rope. "With a steady tug, you dislodge the wheel from the contraption. It falls to the side, with the rope still tied around it." } case 2 { !Usage: (12,obj,2) !We climbed out of the cellar, pulling the wheel along. !Note that a lead-in bit of text was already printed first. "pulling the wagon wheel along with you. When you are out, you hoist the wheel up the last bit, stand it upright beside you, and untie the rope." ObjectDetach(rope, wheel) !Untie the rope. Acquire(player,wheel) !And then we'll pick it up. RemoveProp(wheel,nouns,"rigging") !No more "rigging" noun. RemoveProp(wheel,adjectives,"control") !No more "control". AddScore(15) !For pulling the wheel up with us. } } case flat_lever { select val2 case 1 { !Usage: (12,obj,1) !Player throws the apple to hit the lever. PrintMessage(3,2,25) !"A good throw" or other random. "The apple shatters on impact, but the lever releases the ladder. It falls on rails, slamming the ground just as the top end catches on the side of the loft. The ladder leads up at a sharp angle." } case 2 { !Usage: (12,obj,2) ! Can't throw the apple. The ladder is already down. ! Note that this is already said if player tries to ! push the lever while at the loft, if ladder is down. print "No need. "; "The ladder is already down." } case 3 { !Usage: (12,obj,3) !Can't throw anything heaver than the apple. print "You can't throw "; The(object); " high enough. "; "It falls to the ground, not quite hitting the lever." } case 4 { !Usage: (12,obj,4) !Can't throw anything. We're already in the loft. print "No need. "; "You can reach the lever fine from here." } case 5 { !Usage: (12,obj,5) !Player pushes the lever to lower the ladder, up in loft. "The lever releases the ladder. It falls on rails, slamming the ground just as the top end catches. The ladder leads down now, at a sharp angle." } } case loft_ladder { select val2 case 1 { !Usage: (12,obj,1) !Player is trying to "move" or "lift" the ladder. !The ladder may or may not already be down, so check. "It won't budge. "; if (val1.misc #1) { "Now that it reaches from "; if (location = loft) { "the loft to the floor below, "; } else { "the floor to the loft above, "; } "you don't need to move it." } else { "A flat lever holds it up." } } } case beam { select val2 case 1 { !Usage: (12,obj,1) !This is what happens when we push the beam over the side. "You push the beam toward the edge of the loft, and over. "; } case 2 { !Usage: (12,obj,2) !This happens when we "throw" the beam down from the loft. "It's too heavy to throw, but you do manage to drop it from the edge of the loft. "; } case 3 { !Usage: (12,obj,3) !This happens when we "drop" the beam over the edge. "You step to the edge and let the beam go. "; } case 1,2,3 { "It falls to the ground below." } case 4 { !Usage: (12,obj,4) - player is trying to put beam in windows. !May also be trying to move or push it towards the windows, !so this message will handle that condition generically enough. "The roof outside the windows looks unstable. You can't risk doing that, nor is there a good reason to try."; if (wagon.found_at #1 = hill) and (hill is visited) { " Anyway, it would make for poor leverage. If you intend to right the wagon, its weight added to the beam's weight would likely prove that impossible." } else { print newline !Nothing else to add. } } } case red_spider, black_spider, gray_spider { select val2 case 1 { !Usage: (12,obj,1) - pushing doesn't work. "You shove the spider toward the edge of the deck, but it twists and forces its way back. For that to work, the spider would have to be less aggressive and already near the side." } } case mast_handles { select val2 case 1 { !Usage: (12,obj,1) !Player is attempting to turn the handles, but they're lowered. "The grooves, through which the handles extend, run straight up the pillar. The handles are currently at deck level, and you can't turn them." } case 2 { !Usage: (12,obj,2) !Player is attempting to lower the handles, but already down. "The handles are already at deck level. They can't be lowered any farther." } case 3 { !Usage: (12,obj,3) !Player is attempting to raise the handles, but already up. "The handles are already held by the dips at the top of the grooves, around one-third of the way up the pillar. They can't be raised any farther." } case 4 { !Usage: (12,obj,4) !Player successfully lowers the handles. if (mast_handles.misc #2) { "You lower the handles again, and the bounding rails drop." } else { "The handles slide down the grooves with far less effort than was required to raise them. The wooden rails sink into the lip of the deck, opening the sides once again." } } case 5 { !Usage: (12,obj,5) !Player successfully raises the handles. if (mast_handles.misc #1) { "You raise the handles again, bringing the wooden rails up around the edges of the barge." } else { PrintMessage(7,7) !Cutscene for raising the rails. } } case 6 { !Usage: (12,obj,6) !Player is trying to lower rails, but spiders still outside. "Spiders still bang the side rails and scurry about outside. Lowering the mast handles (thereby lowering the rails) would be a bad idea at the moment." } case 7 { !Usage: (12,obj,7) ! Player tries to raise the handles, when blocked by sail arm. "One handle is behind the sail arm, and the groove on that side is blocked. You can't lift the handles." } case 8 { !Usage: (12,obj,8) ! The handles are now broken. Can't raise them. "One handle was broken by the sail arm. It is no longer possible to lift the handles and raise the side rails." } } case cabin_door { select val2 case 1 { !Usage: (12,obj,1) "It's just an "; if (location = deck): "entrance."; else: "exit."; print " There is nothing to "; VerbWord; "." } } case cargo { select val2 case 1 { !Usage: (12,obj,1) - Just randomly moving some crates. !The player moves cargo, but to no spot in particular. print "You "; VerbWord; " a few crates, but "; if (verbroutine = &DoArrange): "near "; else: "toward "; "nothing in particular. To organize them all in a general manner would take the remainder of the afternoon, and you haven't the time for that." } case 2 { !Usage: (12,obj,2) - You see no good way to move them. if (xobject = player ) { print "No need. There is cargo all around you." } else { print "You can find no good way to "; VerbWord; " any cargo "; if (verbroutine = &DoArrange): "near "; else: "toward "; print The(xobject); "." !Because xobject should be set. } } case 3 { !Usage: (12,obj,3) - trying to "open" the crates. print CThe(val1); " are nailed shut, without hinges or handles of any kind. You have no way to open any of them, but as they give off the smell of rotten apples, "; !Sentence ends in a combined case, below. } case 4 { !Usage: (12,obj,3) - trying to "break" the crates. "These are thick wooden cargo crates. You can't break them open. Given the smell of rotten apples, though, "; !Sentence ends in a combined case, below. } case 3,4 { !Continued from the two prior cases. "you can guess what's inside. You don't need that." } case else { !Everything else is treated as an xobject. if InList(val1,misc,val2) { "You already moved a few crates over by "; print The(val2); "."; if (val2 = mast) { " Three are stacked step-like, making for an easy climb to put the top of the post within reach." } else { print newline !Nothing else to add. } } else { print "You "; VerbWord; " some crates "; if (verbroutine = &DoArrange): "near "; else: "toward "; print The(val2); "."; select val2 case captain { " He gives you a questioning look, but that's all." } case mast { " You arrange three of them in a step-like stack, making it possible now to climb the cargo and reach the top of the post." } case else: print newline !Nothing more to be said here. } } } case rusty_lock { select val2 case 1 { !Usage: (12,obj,1) !This probably isn't an accurate enough depiction of what an !old lock would be like, but it'll have to do the job. "It takes time and a steady hand, but you use the fish bones to pick the lock. It pops open"; if (val1 in mill_latch) { " and falls to the ground, leaving the mill door unlocked." } else { "." !Nothing else to be added. } } } case chest_of_drawers, simple_bed { !This is for moving the dresser *or* the bed. Generic for both. select val2 case 1,2 { !Usage: (12,obj,1) - move it over a little. if (val1.misc #1) { "You already moved "; print The(val1); " as much as seems necessary." } else { "It's very heavy, but you slide it over a little."; if (val2=1) { " This exposes a loose length of lead pipe, which you take." } else { " It seems to be an effort wasted, as you discover nothing behind it." } } } } case fleece_rug { select val2 case 1 { !Usage: (12,obj,1) !Player is trying to move or look under it. "It won't move, but you see no indication that it needs to." } } case port_slot { select val2 case 1 { !Usage: (12,obj,1) - It's broken, we can't move it. "The lever beside the port-side slot won't budge. It may have been damaged during the spider raid. Since the wing on that side looks to be fine, though, you have no reason to release it." } case 2 { !Usage: (12,obj,2) - Don't do it while flying. "You would be remiss to mess with "; print The(val1); " while the barge is flying." } } case starboard_slot { select val2 case 1 { !Usage: (12,obj,1) - It's already raised. Nothing in slot. "The lever beside the starboard wing slot is already raised. The damaged wing has fallen off the side of the barge." } case 2 { !Usage: (12,obj,2) - We release the damaged wing. "You raise the lever, which pulls pressure from the vice-like wing slot. The damaged starboard wing falls to the ground below." } case 3 { !Usage: (12,obj,3) - Trying to release the sail arm? !This also comes from trying to move it or whatever. "Now that the sail arm serves as a replacement wing, it would be better to leave it clamped into the starboard slot." } case 4 { !Usage: (12,obj,4) - Can't, without a replacement wing. "You lower the lever, but it won't stay down. Without a wing to jut out and hold pressure on the slot, you can't lower the starboard lever." } case 5 { !Usage: (12,obj,5) - The lever is already down. "The lever is already lowered. "; if (sail_arm in starboard_slot) { "The mill's sail arm "; } else { "A damaged wing "; } "is clamped into the starboard wing slot." } case 6 { !Usage: (12,obj,6) - Don't do it while flying. "You would be remiss to mess with "; print The(val1); " while the barge is flying." } } case starboard_wing { select val2 case 1 { !Usage: (12,obj,1) - We move it toward nothing in particular. ! We'll use the generic "drag" (a real verb) in place of move, ! push, and pull, to better imply the way that he's doing it. "You drag the wing a little ways, toward nothing in particular." } case 2 { !Usage: (12,obj,2) - We drag toward something specific. ! XObject contains the thing we dragged it toward. print "You drag the wing toward "; The(xobject); ", but "; "find no use for it there." } case 3 { !Usage: (12,obj,3) - Success. We drag it toward the steps. "You drag the wing over to the windmill's steps, and with some effort, prop it upright against the side. It reaches high enough to cover the eroded lower steps, while providing access to the undamaged upper ones." } } case mast { select val2 case 1 { ! Trying to shake the mast "It's solid. You can't shake it at all." } } case sail_arms { ! Multiples on the windmill. select val2 case 1 { !Usage: (12,obj,1) - trying to turn the jammed sail arms. "The axle is jammed from inside. The sail arms won't turn now." } } case mill_switchables { select val2 case 1 { !Usage: (12,obj,1) - trying to turn "on" the windmill. "The windmill is already working fine." } case 2 { !Usage: (12,obj,1) - trying to turn "off" the windmill. ! This is also shown if player tries to "break gears". "That seems reasonable, but how?" if (verbroutine = &DoBreak) { !Allow the player to answer "with pipe" or whatever. LookForAnswer(true,true) !So that user replies "with held" } } } case sail_arm { ! Single, after it's cut loose. select val2 case 1 { !Usage: (12,obj,1) - Stuck on post, trying to move it. ! I was tempted to say "without assistance" but I just know ! players are going to try getting the captain to help... "Even though it's heavy, you're able to move this end. The other end, however, remains caught on the top of the post. You push and pull, but the only way to dislodge it must be above, at the top of the mast." } case 2 { !Usage: (12,obj,2) - Try moving it toward nothing. print "You drag "; The(sail_arm); ", but toward nothing in particular." } case 3 { !Usage: (12,obj,3) - Try moving its toward bad xobject. print "You drag "; The(sail_arm); " toward "; The(xobject); ", even though it would probably fit in the starboard wing slot." } case 4 { !Usage: (12,obj,3) - We put the wing into the slot. print "You drag "; The(sail_arm); " over to the starboard side. You heft the end into the wing slot, then push, so that the sail arm slides through the slot. When only the near end remains on this side of the edge, you lower the lever, putting pressure on the slot, clamping it firmly in place." print "\nThe captain hurries into the cabin. In a moment, the barge lifts from the ground. It seems steady and stable now. The barge gains altitude, heading again on a"; if (game_fore_dir = e_obj): "n"; !say "an" instead of "a". print " "; game_fore_dir.name; "erly course." print "\nThe captain looks out a window and motions you back into the cabin." } } case helm_wheel, instruments { select val2 case 1 { !Usage: (12,obj,1) - Can't turn the wheel if captain is here. "A panicked look from the captain stays your hand." } case 2 { !Usage: (12,obj,2) - Nothing happens on ground. if (val1 = instruments) { !Not using verbword because certain versions wouldn't make !sense in this context. Build it from the verbroutine now. print "You "; if (verbroutine = &DoMove, &DoPull): "pull"; elseif (verbroutine = &DoPush): "push"; elseif (verbroutine = &DoLift): "lift"; else: print VerbWord; " several levers, "; } else { "You turn the wheel, "; } "but nothing happens. It probably only works while airborne." } case 3 { !Usage: (12,obj,3) - Interacting with instruments ! This is only called when moving instruments or gauges. "The workings of the other instruments remain a mystery to you, although the levers and the wheel are obvious." } case 4 { !Usage: (12,obj,n) - Success, pull the levers or turn wheel. ! Intro text, before the cutscene that divides the chapters. "With a last confirming look toward the captain, you "; if (val1 = instruments): "pull two of the levers. "; else: "turn the wheel sharply. "; } } case river_panel { select val2 case 1 { !Usage: (12,obj,1) - Can't open it from outside. "From this side, you find no way to open the panel." } case 2 { !Usage: (12,obj,2) - Player lifts by the handle. "You strain to lift the door upward by its handle. For the moment, it remains open." } case 3 { !Usage: (12,obj,3) - Player trying to hit/break door. "Your efforts are unsuccessful. The panel won't budge." } } case slab { select val2 case 1 { !Usage: (12,obj,1) - It's too heavy to lift. if (verbroutine = &DoGet) { "It's too heavy for you to lift." } else { "You stoop down to try lifting it. It almost moves, but not quite." } } case 2,3 { !Usage: (12,obj,2/3) - Removing the lid or putting it back. !This is just the beginning section. Continues in 2 & 3 below. "You crank the winch, which is difficult given the weight of the slab." } case 2 { "\nThe large stone slab is lifted by its handle. You swing it to the side and let it down against the side of the well." ! We need to "slide" things off, if anything was sitting on it. while Child(slab) { print "\n"; CArt(Child(slab)); " slides off the slab, onto the ground." move Child(slab) to location !It slides off onto ground. } "\nThe well is now uncovered. "; ! Player may need a hint that they can down down into it. if (east_tunnel is visited) { "It's as dry as the river, and it leads down to a tunnel." } else { "You see no water down there. Instead of a simple bottom, it looks as though an underground tunnel runs through." } } case 3 { "\nWith some effort, you bring the slab back up to cover the well." } } case chain { select val2 case 1 { !Usage: (12,obj,1) !For lifting the chain back up out of well. "After several turns of the crank, the end of the chain rises from the well." } case 2 { !Usage: (12,obj,2) !For lowering chain back into the well. "You crank the winch so that the chain is lowered into the well." } case 3 { !Usage: (12,obj,3) !Lid is on and chain attached to nothing. ! This will be difficult to describe without giving too much ! away, and without being too vague and misleading. Here goes. "You turn the winch so that the chain drops in a coil over the stone slab.\n" "This seems pointless, so you turn and wind it back." } case 4 { !Usage: (12,obj,4) !Chain already extended into the well. print CThe(val1); " already reaches down into the well." } } case well { select val2 case 1 { !Usage: (12,obj,1) !Trying to put stuff on/in blocked well. "You can't. A stone slab covers the well's opening." } case 2 { !Usage: (12,obj,2) !Trying to put the net "on" the well. ! Now, I would like to be able to leave it there. But then I ! would have to trap for several other things -- making sure ! the chain isn't lowered already, having the net fall if you ! lower the chain later, having the net trapped under the slab ! if you move it back, etc. Players might be lead astray by ! thinking they're *supposed* to put the net over the well, so ! I need to be careful about what I say here. Make sure players ! know that the action was anticipated, but it isn't right. ! You can't trap the tyrant this way because you'd have to get ! it off the well to descend, so it doesn't really help anyway. print "You stretch "; The(fishnet); " over the opening to "; print The(well); ". Years of experience lead you believe the net can still serve a purpose, but this isn't it." "\nYou take the net back." } } case plate { select val2 case 0 { !Usage: (12,obj,0) - Printed when the doors are lifted. if (location = east_tunnel) { if (val1.misc #1) { ! We've seen this before, so let's shorten it. "Both doors slide quickly upward, but they begin to close "; if (saplings.misc #1 >= 2) { "a little more slowly than before." } else { "almost immediately." } } else { ! This is our first time pressing the plate. "The door to the northwest slides quickly upward, opening the way to a side room. "; "You also notice that the ornate door at the west end of the hall is now open.\n" "Both doors begin to close "; if (saplings.misc #1 >= 2) { "a little more slowly than before." } else { "almost immediately." } } } elseif (location = west_tunnel) { "You turn and watch the door to the west, as it slides quickly upward. "; if (saplings.misc #1 >= 2) { "Slower now, "; } else { "Almost immediately, "; } "it starts to close." } } case 1 { !Usage: (12,obj,1) - we stand on the plate. "You stand on the plate, and it sinks two or three inches into the ground.\n" } case 2 { !Usage: (12,obj,2) - we push the plate. "You push the plate"; if (val1.misc #1) { " again.\n" } else { ". Despite some resistance, it sinks two or three inches into the ground.\n" } } case 3 { !Usage: (12,obj,3) - we throw something from nearby. print "You throw "; The(object); " at "; The(val1); ". "; "The plate sinks two or three inches into the ground.\n" } case 4 { !Usage: (12,obj,4) - we throw something from the west end. print "You "; VerbWord; " "; The(object); " as far as you can."; print MatchPlural(object, "It", "They"); " appear"; print MatchSubject(object); " to hit "; The(plate); ", "; "at the east end of the tunnel.\n" } case 5 { !Usage: (12,obj,5) - we step back off the plate. "\nContinued pressure makes no difference, so you step back off." } case 6 { !Usage: (12,obj,6) - when throwing too small an object. ! Note that the "you throw it" message is already printed. ! this comes afterwards, and includes a blank line. ! This also comes when putting something light "on" the plate. print "\n"; MatchPlural(object,"It doesn't","They don't"); " seem heavy enough to press down the plate." } case 7 { !Usage: (12,obj,7) - The plate is already down. Nothing happens. "The plate is already held down. Nothing else happens." } case 8 { !Usage: (12,obj,8) - After putting something on the plate. "\nContinued pressure makes no difference. The doors seem to open only after the plate is pressed." } case 9 { !Usage: (12,obj,9) - Like 3, but skip the "sinks" part. print "You throw "; The(object); " at "; The(val1); ".\n" } case 10 { !Usage: (12,obj,10) print "It appears that "; The(ornate_door); " will only open when the plate at the other end of the tunnel is pressed down, and only for a few moments even then." } case 11 { !Usage: (12,obj,11) - Touching the plate doesn't work. if (verbroutine = &DoTouch) { print "The plate shifts slightly when you touch it. "; } else { print "It's embedded in the floor, and it won't move. "; } "With more pressure, it might sink like a big button." } } case doors_down { select val2 case east_tunnel { !Usage: (12,obj,0) - The doors have closed again. if (ornate_door is open) { "\nBoth doors have completely closed again." } else { "\nThe northwest door falls closed again." } } case west_tunnel { if (prev_location = location) { print "\n"; "You turn, just as "; The(ornate_door); " falls closed to the west." } else { print "\n"; CThe(ornate_door); " fell closed well before you spanned the distance from east to west."; if (saplings.misc #1 < 2) { " You aren't fast enough to get from there to here in time." } else { !We are fast enough. Player must have waited a turn. print newline !Nothing else to be added. } } } case chamber { "\nThe ornate door closes behind you." } case hall { if (prev_location = location) { !We've been here at least one turn, so say this. "\nThe exit is now closed." } else { !We just entered the room, so say this. "\nThe door to the southeast falls closed behind you." } } !Anywhere else, and we wouldn't actually see them close. } case simple_door { select val2 case 1 { !Usage: (12,self,1) - open the simple door from inside. "You strain to lift the door upward by its handle." "\nThe moment you get it open, it begins to close again." } } }