!---------------------------------------------------------------------------- !****************************************************** SCENERY DESCRIPTIONS !---------------------------------------------------------------------------- routine PrintText02(val1,val2) { select val1 !---------------------- ! SCENERY FOR PROLOGUE !---------------------- case distant_grassy_patch { !Usage: (2,obj,1) "A patch of thicker grass stands above the otherwise even surface, farther ahead. As best you can tell, whatever you saw glimmer briefly in the sunlight is concealed there." } case distant_glinting_thing { !Usage: (2,obj,1) "Whatever it was is probably concealed in a taller, thicker grassy patch a ways ahead." } case near_glinting_thing { !Usage: (2,obj,1) "Whatever it was is probably concealed in this taller patch of grass." } case grassy_meadow { !Usage: (2,obj,1) "The meadow is vast and open, and it stretches like a green fleece to the horizon in all directions." } !-------------------- ! SCENERY FOR PART 1 !-------------------- case dusty_path { !Usage: (2,obj,1) "The dusty path looks well traveled." } case north_fence, south_fence, fences { !Usage: (2,obj,1) ! This will describe either individual fence *or* the fences ! when taken as a pair. if (location = orchard) { "Bounding the orchard, "; } else { print "Decrepit though"; print MatchPlural(val1,"it","they"); " may be, "; } if (location = farm_path, house) { print The(val1); !Mention which one we're dealing with. } else { "the fence"; !Only one is here, so don't need exact name. } print " stand"; MatchSubject(val1); " a head taller than you, with wide wooden slats that remain deceptively strong." } case gates { !Usage: (2,obj,1) print CThe(south_gate); " "; PrintOpenClosed(val1,false,false) " looks solid, but the northern one is broken." !I don't want to make players think they can fix it though. } case south_gate { !Usage: (2,obj,1) select val2 case 1 { !Usage: (2,obj,1) "It's a sturdy wooden gate "; PrintOpenClosed(val1,false,false) ", leading "; if (location = orchard) { "back to the farm house."; } else { ! But if I say this, am I going to have to implement ! the orchard as distant scenery? Yeah... probably. "south to an orchard."; } if (val1.misc #1) { !I was tempting to track notching of *both* sides, just !to make it more realistic. Nobody is ever going to see !this anyway, so it really doesn't matter. It's fluff. " The gate is a little notched up now." } else { print newline !Nothing else to be said. } } } case north_gate { !Usage: (2,obj,1) select val2 case 1 { !Usage: (2,obj,1) if (location = house) { ! Considered cluing the player that they *would* be able ! to get a better look on the other side, but I have ! decided against it. This is only one way to get key. ! There is no need to emphasize this way over the other. "You can only just see it from here. The northern gate has been rent from its hinges, leaving a gap in the fence. The gate itself lies crushed and decaying on the other side." } else { "The wooden gate lies broken and decaying on the ground, near the fence to the south." if (gate_key is not moved) and \ (not ObjectIsKnown(gate_key)) { print "" : PrintMessage(2,val1,2) !Notice the key. AddScore(22) !For discovering the key. } } } case 2 { !Usage: (2,obj,2) ! This gets called after looking at the gate if the key ! has not already been found, *or* stand-alone if searching ! and the key isn't already found. "You notice a rusted key beside it." !Key beside gate. set_pronoun_to = gate_key !So "get it" will work. } } case fence_gap { !Usage: (2,obj,1) "A gap in the fence leads "; if (location = house) { print n_obj.name; } else { print s_obj.name; } print "." !End the line. } case big_barn { !Usage: (2,obj,1) "It's a large gray barn."; if (location = house, hill) { !If we decide to add something to the "hill" version, then !this part should really only be said when at the house. " Its wood-planked sides are weathered and faded, but it seems to be in fine shape otherwise."; } if (location = house) { " Two small windows look out from its loft, above very wide double doors "; PrintOpenClosed(barn_doors,true,true) } elseif (location = orchard) { pulley_system.misc #1 = true !Flag that we saw it. " A large panel "; PrintOpenClosed(barn_southexit,false,false) if (barn_southexit is open) { " is held above an entrance (leading northeast into the barn) by a chain and pulley." } else { " is attached by a chain to a pulley." } !Make sure we know about the panel now. if not InList(barn_southexit,found_in,barn) { barn_southexit.found_in #1 = barn barn_southexit is known !We see it. } } else { print newline !Nothing else to be added. } } case pulley_system { !Usage: (2,obj,1) "The pulley system can be turned, to open or close the panel." pulley_system.misc #1 = true !Flag that we saw it. } case barn_windows { select val2 case 1 { !Usage: (2,obj,1) ! This should work whether we're looking inside *or* outside. ! At least, the way it's currently worded, it should work. "Two small windows "; if (location = loft) { PrintOpenClosed(val1) : print " "; } "look out from the barn's loft." } case 2 { !Usage: (2,obj,2) - player trying to look through the windows. if (location = loft) { ! Adding this on the last day before deadline. I would have ! mentioned the house and all, but then I'd have to work on ! implementing that as scenery from here, so not worth it. "Outside, it's a pleasant day." } else { "From down here, you can't see in through the windows." } } } case barn_doors { select val2 case 1 { !Usage: (2,obj,1) !Long description for looking at the doors. "The wide double doors "; PrintOpenClosed(val1,false,false) " lead "; if (location = house) { "in to the barn." } else { "out to the yard. "; if (barn_doors is locked) { "A heavy beam sits across the cleats, barring the door." } else { !This should be a dead give-away what the beam is for. !But that's okay. The puzzles should be too hard here. "Large cleats (one on either door), can support a locking crossbar, but the crossbar is missing." } } } case 2 { !Usage: (2,obj,2) !The doors can only be barred from inside. print CThe(val1); " can be barred"; if (location = house) { ", but only from the inside, and"; } " only with an appropriately heavy crossbar." } case 3 { !Usage: (2,obj,3) !The barn doors are already barred by the heavy wooden beam. print CThe(val1); " are already barred by "; The(beam); "." } case 4 { !Usage: (2,obj,4) if (val1.misc #1) { "You slide the beam into the cleats, barring the doors." } else { "With muscles straining, you heft the beam into the two barn door cleats. It slides down and in, fitting fairly well across both doors. With effort, you could probably remove the beam to unbar the door, but anyone of lesser strength may find it impossible." AddScore(21) !Barring the door gets points first time. } } case 5 { !Usage: (2,obj,5) print CThe(val1); " can only be unbarred from inside." } case 6 { !Usage: (2,obj,6) print CThe(val1); " are not currently barred." } case 7 { !Usage: (2,obj,7) if (val1.misc #2) { "You lift the beam from the cleats, unbarring the doors." } else { "You strain to lift the beam from the cleats, and manage it after a moment. You hold it across both arms, and the barn doors are now unbarred." } } } case door_cleats { !Usage: (2,obj,1) select val2 case 1 { !This should also tip the player toward using the "bar" verb. "Hook-like cleats are built into the barn doors, to hold a large crossbar in place. "; if (barn_doors is locked) { print CArt(beam); "is currently serving that purpose." } else { "Currently, the doors are not barred." } } case 2 { ! Trying to tie the rope to the door cleats. "The cleats are widely spaced. The rope won't work, but a heavy crossbar will." } } case livestock { !Usage: (2,obj,1) !Livestock runs away from the hill *and* from the barn, although !it was only chickens and pigs in the barn. So, we'll just refer !to them generally as "livestock" or "farm animals." if (location = barn) { print CThe(livestock); " are "; !Prints "Farm Animals" } else { "The livestock is "; } "gone and away to the open pasture." } case farm_house { !Usage: (2,obj,1) "It's a modest two-story dwelling, built on the dusty ground where the western path meets the eastern barn." } case house_yard { !Usage: (2,obj,1) "It's really not much to look at. No grass. Dry dirt. Dust." } case hatch { !Usage: (2,obj,1) "A square hatch "; if (location = barn) { if (hatch is open) or (not IsAttached(rope,hatch_handle)) { !We only need to say this when it's not closed w/rope. PrintOpenClosed(hatch,false,false) print " "; !Space before the next bit. } "provides an entrance to the cellar below."; } else { "provides an exit into the barn above."; } if IsAttached(rope,hatch_handle) { " Strong rope is looped through the handle, tying it closed." } else { if (hatch is not open) { " It can be lifted open by its handle." } else { " Ladder-like steps lead "; if (location = barn) { "down." } else { "up." } } } } case hatch_handle { !Usage: (2,obj,1) if IsAttached(rope,hatch_handle) { "The hatch has been tied closed with a thick rope around its handle." } else { "Its only purpose is in lifting the hatch open." } } case sunlight { select val2 case 1 { !Usage: (2,obj,1) "Sunlight shines through the narrow gaps." } } case barn_walls, barn_gaps { select val2 case 1 { !Usage: (2,obj,1) ! Both objects can share the same description, for ! simplicity. Plus, that *might* help clue playes to the fact ! that they're not all that important. "The barn walls are tall and sturdy, and built with plain slats of gray wood. Here and there, small gaps let slices of sunlight in, where the wood has weathered and warped in minor ways."; if InList(barn_southexit,found_in,barn) { print newline !Just end the line. } else { print " "; !Spacer before the next bit of text. PrintMessage(2,val1,2) !Print that there is a door. } } case 2 { !Usage: (2,obj,2) "You notice a thin rectangular outline on one wall, southwest of where you stand. On closer inspection, you discover that it's a third exit, like the one to the northwest, but blocked from the outside by a panel that looks exactly like the rest of the wall." ! Tempted to say something like "you push, pull, and pound on ! it, but it won't open. I think I'll not. If the player does ! try any of those things, we can react as needed. barn_southexit.found_in #1 = barn barn_southexit is known !We see it. } } case tackle { !Usage: (2,obj,1) if (harness is moved) { PrintMessage(10,self) !None of the rest of it interests you. } else { AddScore(23) !For discovering the harness. "A cattle harness hanging among the gear might be useful." } } case wagon { select val2 case 1 { !Usage: (2,obj,1) "The large wagon is tipped to one side, resting flat against two wheels. "; if (wheel in wagon) { if IsAttached(rope, wheel) { "One end of the thick rope is tied to the wheel you put back. "; } } else { "Two axles point straight up from the underside, but one wheel at the top is missing. "; } "A wide hitch at the front is built for yoke attachments." } case 2 { !Usage: (2,obj,2) - player is trying to "attach wheel" ! but the wheel is *already* attached to the wagon, fixed. "You have already fixed the wagon." } } case wagon_wheels { !Usage: (2,obj,1) if (wheel in wagon) { "The wagon is fixed with all four wheels." } else { "The wagon has three of its four wheels." } } case wagon_hitch { !Usage: (2,obj,1) "It's a wide hitch at the front of the wagon. When in use, a pair of yokes worn by oxen would be attached to it." } case wagon_axles { !Usage: (2,obj,1) "The wagon has two axles, but at the moment they're completely vertical. "; if (wheel in wagon) { "The wagon rests uselessly on one side." } else { "One wheel is missing." } } case distant_wagon { !Usage: (2,obj,1) "It's really broken now. The wagon is against the barn at the bottom of the sloping hill, to the southeast. On its side, it reaches about two-thirds of the way up the side, and it completely blocks the barn's northwestern exit." } case storage_bin { !Usage: (2,obj,1) print CThe(val1); " "; PrintOpenClosed(val1,false,false) " is a long and narrow wooden box secured to the eastern wall."; if (val1 is not open) or not child(val1) { ! We only do this if nothing is inside the bin, or if ! the bin is closed. The reason is, it's going to print ! the contents of the bin (the bin isn't "quiet"), after the ! description, with a leading blank line. I want to supress ! the blank line, so I end the description with ";" any time ! I can see that it contains one or more things. print newline !End the line. } } case trough { !Usage: (2,obj,1) "It's a long wooden basin, suitable for a large number of farm animals to stand around side by side at feeding time." } case distant_orchard { !Usage: (2,obj,1) "You can make out the tops of apple trees beyond the fence to the south, but little else." } case barn_cask { select val2 case 1 { !Usage: (2,obj,1) ! In my effort to insist that the barrel can't be opened, ! I think I'm just going to make the player try all the ! more harder. Well, the answer is easy. Just cut it. It'll ! get notched, and a pool of cider will form. What's it for? "It's a tall wooden barrel, and it smells a lot like cider. It has no obvious lid, spout, or hinging compartments. "; if (val1 is moved) { PrintMessage(12,val1,2) !There is a cabinet where it was. } else { PrintMessage(2,val1,2) !Something may be behind it. } } case 2 { !Usage: (2,obj,2) !Search result, or "looking at" it when something's behind. "It looks like something may be behind it, but you can't see what it is." } case 3 { !Usage: (2,obj,3) !A specific trap for "Look Behind" cask. "Yes, something is definitely back there, but the cask itself is in the way." !VERY clear clue to move the cask! :) } } case barn_cabinet { !Usage: (2,obj,1) print CArt(val1); " "; PrintOpenClosed(val1,false,false) print " is set into the wall where the cask used to be."; if (val1 is not open) { print newline !End the line. } elseif not child(val1) { print " Keys were probably kept here, but "; if (gate_key.misc #1 = location) { "you already took the only one." } else { "it's empty now." } } } case bull { !Usage: (2,obj,1) "It's a large black bull, currently "; if (harness in bull) { "wearing a harness and "; } if (grain in trough) { "eating grain. "; } else { "confused by an empty feeding trough. "; } if (grain in trough) and (harness not in bull) { !If the player hasn't put the harness on yet, we shouldn't !warn them to stay away. Otherwise they might think they !can't put the harness on at all. "For the moment, it seems to be ignoring you." } else { "Unless you're trying to excite or provoke it, staying a safe distance away is a smart idea." } } case bull_horns { !Usage: (2,obj,1) print CThe(val1); " are long, pointed, and curved." } case barn_northexit { !Usage: (2,obj,1) if InList(wagon,found_on,hill) { "An exit leads northwest, to the outside and up a slope." } else { "The northwest exit is completely blocked from outside." } } case rocking_chair { !Usage: (2,obj,1) "It's an old wooden rocking chair"; if (widow in location) { ", as weathered as the old woman herself." } else { print "." ! Nothing else to be said about the chair. } } case porch { !Usage: (2,obj,1) "The porch is little more than a short wooden platform jutting out from the front of the farm house. "; if (widow in location) { "The old woman sits rocking in a chair, slowly back and forth, on the porch." } else { "The old woman has abandoned her rocking chair, and gone inside the house." } } case apple_trees { !Usage: (2,obj,1) print CThe(val1); " are abloom in whites and pinks"; if (apple is moved) { ", but you notice no fruit among the foliage." } else { ! Sort of like the implied search, but we say ! "A single tree" instead of "one tree" here. ". A single tree "; PrintMessage(2,apple_tree,2) print newline !To end the line. } } case apple_tree { select val2 case 1 { !Usage: (2,obj,1) !Player looks at one specific tree, where the girl is/was. !Even so, it doesn't matter. It's easy to find it other ways !such as hitting or shaking the tree, searching the ground. if (apple is moved) { print CThe(val1); " sways gently in the breeze. "; "From time to time, pink and white blossoms drift from its branches and fall slowly to the ground." } else { !Say that there's an apple found in the tree. PrintMessage(2,val1,3) !Do an implied search. print newline !End the line from above. } } case 2 { !Usage: (2,obj,2) - but not called directly by verbs. !This gets called when mentioning the apple in the tree. if (girl in location) and (not girl.misc #1) { "(where the girl still stands) "; } else { "(where the girl was) "; } "holds a single green apple, high in its branches."; if (apple is concealed) or (apple not in apple_tree) { if (verbroutine ~= &DoLook) or (object ~= apple_tree_foliage) { !If we're looking at the foliage, don't say this, because !when initially looking at it and finding the apple, it has !already been said that the rest of the trees are bare. " You notice no fruit in any of the other trees."; } apple is not concealed !Just in case, now apple is visible. move apple to apple_tree !But it's still "not moved" here. } !Assume we'll end the line in whatever called us, if needed. } case 3 { !Usage: (2,obj,3) ! Searching the tree and finding the apple. print "One tree "; PrintMessage(2,val1,2) !It contains an apple. !Don't end the line from the above. Let caller do it. } } case apple_tree_foliage, apple_tree_branches { !Usage: (2,obj,1) if (apple in apple_tree) { "A single tree "; PrintMessage(2,apple_tree,2) !A single tree holds an apple. } else { if (apple is concealed) or (apple not in apple_tree) { "The foliage has thinned enough to reveal a lack of apples throughout the orchard."; } if (apple is concealed) { " No, not quite. "; PrintMessage(2,apple_tree,3) !An implied search. } } print newline !To end the line from prior text. } case orchard_ground, blossoms { !Usage: (2,obj,1) "Pink and white apple blossoms have begun to fall from the trees. The ground is dotted with them." } case barn_southexit { !Usage: (2,obj,1) !Player is examining the panel, from inside *or* outside. "It's a "; : if (location = orchard): "solid "; "wooden panel, matched perfectly to the barn walls. "; if (location = barn) { "The panel is currently "; if (val1 is open) { "open." } else { "closed." } } else { pulley_system.misc #1 = true !Flag that we saw it. if (val1 is open) { "It is suspended by a chain and pulley system above the barn's side entrance, to the northeast." } else { "Grooves on both sides of the panel hold it in place, although its chain and pulley system will raise it." } } !Be sure it's now shown as being in the barn, too. if not InList(barn_southexit,found_in,barn) { barn_southexit.found_in #1 = barn barn_southexit is known !We see it. } } case cellar_steps { !Usage: (2,obj,1) if (location = barn) { "Steps attached to the wall below lead down to the cellar." } else { "Steps on one wall lead back up to the barn." } } case cellar_floor { !Usage: (2,obj,1) "It's just a dirt floor." } case contraption { select val2 case 1,2 { !Usage: Long Desc = (2,obj,1) or Inline Desc = (2,obj,2) "It is a jumble of wood paneling, reed hoses, steel springs and thick cords of woven horse's hair. "; if (val2 = 1) { if (val1 is broken) { "You have damaged the contraption beyond any hope of repair although, considering how it was hidden away down here, it probably wasn't in use anyway. "; } else { "Even given its unknown nature, it seems strange to find such a large contraption hidden away in such a deep cellar. "; } } if (wheel is moved) { "Its central wheel has been removed."; } else { "Mounted in the center of it all is a single wagon's wheel, perhaps serving now as a control rigging."; } if (val2 = 1): print newline !We're doing the normal long_desc. } case 3 { !Usage: (2,obj,3) !Attempting to switch on/off the contraption. if (val1 is broken) { "You have thoroughly damaged it." } else { "Its purpose and function are a mystery. You can see no way to make it work." } } } case wood_paneling { !Usage: (2,obj,1) ! Man- If I say this then I'll need to support "remove" attempts. ! I was going to say that they hide the inner workings, but that ! would be even worse. Players would be mis-clued I think. if (contraption.misc #1) { "Deep slices now adorn the wood panels." } else { "Panels of wood cover much of the contraption." } } case reed_hoses { !Usage: (2,obj,1) if (contraption.misc #1) { "The reed hoses have been sliced and punctured." } else { "Tubes and hoses made of flexible reeds wind through the guts of the machine, entering holes in the paneling and emerging through springs at both ends. It's not a configuration you are likely to understand, nor can you really fathom the need to." } } case steel_springs { !Usage: (2,obj,1) "Like the entire contraption, their purpose remains a mystery." } case thick_cords { !Usage: (2,obj,1) if (contraption.misc #1) { "The cords have been sliced, chopped, and shredded." } else { "Woven fibers form cords that hold and route the assorted springs, hoses, and panels to the base of the large contraption. It's difficult to tell, but they may not be made of horse's hair after all." } } case tapestry { !There is a different case for the same object, in different rooms. if (location = cellar) { !Usage: (2,obj,1) "It's written in an ancient language of symbols and glyphs, only some of which you can comprehend. This seems odd, considering that the tapestry itself is of modern design. "; "It appears to be a set of instructions, or perhaps a warning. No, that connecting swirl beside the angular loop may mean \"agreement\" or \"pact\". The circles within circles could mean \"plague\" or \"curse\".\n" "Much of the writing adorns crude but more recognizable illustrations. There, you see a mug of liquid with an ethereal glow drawn around it. You see trees before that, and the eerie faces of smiling, satisfied people after. But what does this other part mean? Depicted is a baby, which becomes a monster, and then a happy little girl holding a heart in her hand. Is that part of the pact, or part of the curse?\n" "One thing, toward the bottom, is abundantly clear. A tyrant's mark is scrawled in red." val1.misc #1 = true !Flag that we have read the tapestry. } } case tapestry_markings1 { !Usage: (2,obj,1) "Markings of all sorts adorn the tapestry: glyphs and symbols, swirls and loops, illustrations of trees and a mug of liquid, eerie faces, a baby that transforms, and a tyrant's red mark." } case distant_loft { !Usage: (2,obj,1) if (location = house) { "You can't see the loft from out here." } else { "Above you is a loft partition. It reaches from the western side (well above the doors) to about half-way across the barn. "; if (loft_ladder is distant) { "A ladder is suspended out of reach, held in place by a flat lever." } else { "A ladder leads up to the edge." } } } case flat_lever { !Usage: (2,obj,1) if (loft_ladder.misc #1) { "The lever no longer holds the ladder aloft." } else { "A flat lever, set into the edge of the loft partition, "; if (location = loft) { "holds a ladder up. It hinges in a way that suggests "; ! No, I can't say "easy release" in this version, because ! I can't really work "push" into the text like when you ! look from below. Players would try "release" as a verb, ! and I don't want that. So, I need to say something else. ! They made it up here by climbing the wagon, so there is ! no real need to make releasing the ladder a puzzle, the ! way it was from below. So, I'll just give the answer. "a good push would probably release the ladder." } else { "holds a ladder well above your reach. It hinges in a way that suggests easy release, but you can't push it from down here. Like the ladder itself, the lever is out of reach." } } } case loft_ladder { select val2 case 1 { !Usage: (2,obj,1) if (val1.misc #1) { if (location = loft) { "A ladder reaches from the loft down to the floor of the barn." } else { "A ladder reaches from the floor up to the loft." } } else { print CThe(loft_ladder); if (location = loft) { " is held up by a flat lever." } else { " is out of reach. A flat lever holds it aloft." } } } } case loft_dust { !Usage: (2,obj,1) "Dust has collected here over the years." } case distant_roof { !Usage: (2,obj,1) "The barn's roof is in poor shape. It looks unstable." } case loft_floor { select val2 case 1 { !Usage: (2,obj,1) "The floor extends from the west wall (where two windows let in light) to about half the depth of the barn. The east edge is a drop-off to the ground below." } case 2 { !Usage: (2,obj,2) !This is what happens if we look DOWN form here. "Over the edge of the loft, you can see part of the barn below."; if (girl in barn) { " The girl is there, standing perfectly still." } else { print newline !Nothing else we need to add. } } } case bees { select val2 case 1 { !Usage: (2,obj,1) !Long (normal) description for the bees. !If the bees are here, then so is the girl. "Black bees swarm around the girl, like a living, writhing cloak." } case 2 { !Usage: (2,obj,2) !Response for trying to anger the bees. "It would be best not to "; if (verbroutine = &DoProvoke): print VerbWord; else: "provoke"; " the swarm." } case 3 { !Usage: (2,obj,3) !When trying to talk to them, or show things to them. "They lack the intelligence to comprehend your actions. They can only obey the girl's bidding." } } case rock_outcroppings, farm_stream { !Usage: (2,obj,1) print "You passed "; The(val1); " a ways back." } case jutting_boulders { !Usage: (2,obj,1) "The tops of boulders peek up from the ground, between you and the broken gate to the south." } !-------------------- ! SCENERY FOR PART 2 !-------------------- case stream { !Usage: (2,obj,1) select location case campsite { "The stream joined your quest several miles back. Slowly widening, it seems to follow a course that leads "; print game_fore_dir.name; "ward, toward the fishing village that is your destination." } case trawl { "The stream is below, but not directly below. The barge "; PrintMessage(2,forest,2) !Is the captain asleep at the wheel? } } case shallow_pit { select val2 case 1 { !Usage: (2,obj,1) print CThe(val1); " is nothing more than a depression in the ground, where logs (now charred by a fire that no longer burns) are stacked to lean inward."; if (bones is not moved) { print " "; : PrintMessage(1,bones,2) } else { print newline !Just end the paragraph. } } } case logs { !Usage: (2,obj,1) "As best you can tell, this was someone's campsite several days ago. It's certainly an ideal place for it. Evening is several hours away and you have much ground to cover, but this would otherwise be a perfect spot to rest the night." if (bones is not moved) { print "" !Blank line to offset finding the bones. PrintMessage(1,bones,2) !And then mention bones here. } } case forest { select val2 case 1 { !Usage: (2,obj,1) select location case campsite { "A forest of trees just as tall as this one surrounds the clearing in all directions." } case trawl { "You can just see the treetops as they race by below. It's all becoming a green blur, but a blur that grows a little closer as the barge descends. It "; PrintMessage(2,val1,2) !Is the captain asleep at the wheel? } } case 2 { "seems to be following an erratic course, as if the captain has fallen asleep at the wheel." } } case maple_tree { !Usage: (2,obj,1) "Like the trees beyond the clearing, this maple must be very old to have grown to such a height. It's unusual, too, in that there are a few lower branches, leading up to larger limbs and thick green foliage above." } case maple_roots { !Usage: (2,obj,1) "Spreading out from the tree are the exposed tops of its base roots. As old as this maple seems to be, they probably grow deep beneath the soil. You also notice that the rectangular shadow, cast by something high above, grows a little larger and a littler closer moment by moment, as it approaches the spot on the ground where your gaze has fallen." } case maple_limbs { !Usage: (2,obj,1) "Lower limbs and higher branches wind their way up the maple tree at interesting angles." } case maple_foliage { !Usage: (2,obj,1) "Distinctive star-like maple leaves make a thick canopy overhead." } case shadow { !Usage: (2,obj,1) "Judging by the rectangular shadow on the ground, something high overhead is approaching from the "; print game_fore_dir.name; "." } case clearing_ground { !Usage: (2,obj,1) "It's fertile forest ground." } case barge_bottom { select val2 case 1 { !Usage: (2,obj,1) "You can see a dark, rectangular blot against the brightness of the sky. It hangs inexplicably in the air, and it moves across the sky on a course that will soon pass directly overhead.\n" "From down here, you can't get a good enough look to identify what it might be. One thing is certain, though. It isn't natural." } } case distant_barge { !Usage: (2,obj,1) "You can't really tell what it is from down here. Although you've never encountered such a thing, it could be a flying "; if IsWord("boat"): "boat "; else: "barge "; "just as easily as anything else. Whatever it is appears as a rectangular blot against the bright sky." } case trawl_net { select val2 case 1 { !Usage: (2,obj,1) "You're caught on a trawl net, which hangs on hooks over the side of the flying barge. Fortunately, the net itself is spread out and hooked. If it hung down any farther, you would have already smacked into the treetops." } case 2 { !Usage: (2,obj,2) !Result of player trying to hit or attack without sword. "You try, but succeed only in jiggling the net a little." } case 3 { !Usage: (2,obj,3) !Result of trying to shake, jiggle, pull, remove the net. "The net is old and weathered. It supports your weight for now, but it seems foolhardy to risk breaking it loose from the hooks. At any rate, you need off soon. Much longer, and you'll be slammed into the ever-approaching treetops." } } case below_barge { !Usage: (2,obj,1) "You notice nothing unusual about the bottom of the barge, which is all you can see of it from down here. That in itself is a little unusual, since the hull has every indication of an oceangoing design." } case deck_edge { !Usage: (2,obj,1) "From here, you can just see the edge of the deck, where the trawl net on which you hang is attached to hooks." } case net_hooks { !Usage: (2,obj,1) "Iron hooks hold one side of the trawl net to the edge of the barge's deck, above. The net seems out of place on a barge (especially a flying one), but you hang from it nonetheless." } case spiders { select val2 case 1 { !Usage: (2,obj,1) if (deck.misc #1 = 0) { "Huge hairy spiders infest the deck of the barge. "; select count_spiders case 3 { !All spiders are here, and barge isn't low enough yet. "They scurry about, tipping and moving the cargo crates. A few of them hold crates in their hairy front legs. Those few are perched near the sides, seemingly waiting to jump at a lower altitude." } case 2: { !One spider is gone, and barge is almost low enough. "Most of them are gathered around the edges. As the barge descends, they prepare to jump out, each with a cargo crate held in its hairy front legs." } case 1: { !The captain has gone inside to land. We're very low now. "Only a few remain. All but one are perched at the edge, and every few moments another makes away with a crate. They roll away when they hit the ground, left behind by the barge." } } else { if (mast.misc #1) { "Huge spiders beat their hairy legs against the outside of the rails, but they are unable to come aboard the barge. Unless the captain lifts off soon, though, they may find a way over." } else { "Huge spiders approach from the "; print barge_aft_dir.name; ", leaping and crawling over one another. They will arrive soon, unless the captain takes the barge up again." } } } } case spider_legs { select val2 case 1 { !Usage: (2,obj,1) "The spiders stand on long, thick, hairy, multi-jointed legs. They move with remarkable speed." } } case spider_eyes { select val2 case 1 { !Usage: (2,obj,1) "Each spider has several beady red eyes." } } case mandibles { select val2 case 1 { !Usage: (2,obj,1) "The spiders have mandibles that are best described as hairy pincers over a jagged maw." } } case red_spider, black_spider, gray_spider { select val2 case 1 { !Usage: (2,obj,1) - long_desc handling. if IsWord("hair") { !Player probably intended to examine spider's hair. print "The spider has thick "; val1.adjectives #1; " hair." } elseif (attacker = val1) { print "It's a huge, hairy, eight-legged "; val1.name; ". "; if (spider_stunned) { print CThe(val1); " is busy protecting itself, perched precariously near one edge of the barge." } else { "It's larger than you, with deadly mandibles that open wide and glassy red eyes that seem trained on you."; if (val1 = gray_spider) { ! This is the "boss" of the spiders, more or less. ! Give a slight clue (scars) that maybe we need to ! attack it in specific points, not just in general. " This one seems larger, older, and meaner. Its thick hair is matted, partially covering the scars of prior battles." } else { print newline !Nothing else to add. } } } else { print "The large "; val1.name; " ignores you for the moment." } } case 2 { !Usage: (2,obj,2) - Said by daemon when spider first attacks. !Distance with a linebreak, so it's set off daemon-like. select val1 case red_spider { print "A "; val1.name; " turns away from its comrades and scurries over to you. It rears up on its four hind legs and paws at the air with its front ones. It smacks you squarely across the face, nearly knocking you down." } case black_spider { print "After a moment, a very "; val1.name; " sidesteps from its position near the entrance to the aft cabin. It turns to face you, then bounds toward you. It stops short, preparing to strike." } case gray_spider { print "A single "; val1.name; " has yet to join the others as they leap away with cargo crates. It approaches slowly, as if stalking you. Its deadly mandibles open and close. It seems a little larger and a little older than the others, with matted hair over the scars of prior battles." } } case 3 { !Usage: (2,obj,3) - Daemon-based aggressive action. rnd = random(13) select rnd case 1 { print CThe(val1); " presses you toward the edge of the barge. You scoot around, to avoid falling off." } case 2 { print CThe(val1); " rears up and shoves you backward with the force of its two front legs." } case 3 { print CThe(val1); " takes a snap at your arm. You narrowly avoid its powerful bite." } case 4 { print CThe(val1); " scurries sideways, hoping to trap you against a pile of crates. You step away." } case 5 { "With a multitude of glassy red eyes, the spider watches you intently." } case 6 { "With breath that stinks of rotted meat, "; print The(val1); " tries to reach your face with its powerful jaws. You react, holding it back until it backs away." } case 7 { print CThe(val1); " jumps toward you, crashing into crates just as you dodge its attack." } case 8 { print CThe(val1); " takes a swipe at you with two of its side legs." } case 9 { print CThe(val1); " attempts to knock your "; if (sword.misc #1) { "sheathed sword off your hip, but you evade." } else { "sword from your grip, but you turn and hold fast." } } case 10 { print CThe(val1); " rushes you, knocking you over and pinning you to the deck. You kick out and regain your footing. It backs away." } case 11 { print CThe(val1); " slips and nearly falls from the edge of the barge. It clambers back, a little shaken but more set in its resolve to make a meal of you." } case 12 { print CThe(val1); " shoots webbing at you. Just in time, you duck, and the webbing flies over the edge and down." } case 13 { print CThe(val1); " slams the deck with its two front legs, missing you barely as you duck and step to the side." } } case 4 { !Usage: (2,obj,4) - Picking a spider to target somehow. !Note that the actual "attack" text comes directly after. if (verbroutine = &DoHit, &DoCut, &DoStab, &DoKick, \ &DoPunch, &DoKill, &DoAttack) { ! Fighting will begin with this text. print "You engage the nearest spider (a large and hairy "; print val1.adjectives #1; " monster) in combat. "; } else { ! Other interactions get this text. "The nearest spider is a large, hairy "; print val1.adjectives #1; " monster. "; } } case 5 { !Usage: (2,obj,5) - Picking a spider and it's not its turn. !This happens for attacking, for pushing, anything physical. print "You advance toward "; The(val1); ", but it's too far away. Other spiders are of more immediate concern." } case 6 { !Usage: (2,obj,6) - Daemon-based stunned gray spider messages. rnd = random(4) select rnd case 1 { print "Now that "; The(val1); " is busy protecting itself, you seem to have an advantage. It is perched at one edge of the barge, with open air behind." } case 2 { print CThe(val1); " stumbles and evades, even when you don't attack. Two legs block its mandibles and eyes, while the others are wounded and shaky. It stands near the edge." } case 3 { print CThe(val1); " hunches down near the edge, trying to maintain its balance while avoiding any continued attacks." } case 4 { "All the while, you keep a close watch on "; print The(val1); ". Its attacks are feeble now. It seems more focused on keeping out of your sword's reach, and this brings it nearer to the edge of the barge." } } } case aft_cabin { select val2 case 1 { !Usage: (2,obj,1) "A two-story cabin is to aft (currently "; print barge_aft_dir.name; "). An open entrance leads into the cabin, while side steps lead to its upper level." } } case mast { select val2 case 1 { !Usage: (2,obj,1) if (location = deck) { if (sail_arm in mast) { "The post is about three times your height, rising from the center of the deck. A wooden sail arm from the windmill leans closely to the side. It seems to be caught on the top of the post."; } else { "It doesn't appear to be a real mast. It has no sail, and none of the rigging that would be necessary to support one. It's about three times your height; a thick post rising from the center of the deck. Two tall grooves (one on each side) run partway up from deck level. Handles protrude from both sides "; if (val1.misc #1) { "about one-third of the way up, where the grooves end."; } else { "near the bottom."; } } if InList(cargo,misc,mast) { if (player in cargo) { " You are standing on cargo crates, beside it." } else { " Three crates have been stacked step-like beside the mast." } } else { print newline !Nothing else to add. } } else { "A thick post is outside the cabin, in the center of the long, flat deck." } } } case mast_grooves { select val2 case 1 { !Usage: (2,obj,1) "Tall grooves are set into either side of the central pillar. They run from deck level to about one-third of the way up, where they take a semicircle turn and a slight dip. "; if (mast.misc #1) { "Handles protrude from both sides, at rest in the dips and holding up side rails around the edges of the barge." } else { "A handle protrudes from both grooves at deck level, seemingly attached to an inner post that can be lifted by the handles." } } } case mast_handles { !Usage: (2,obj,1) "Handles protrude from both sides of the pillar, "; if (mast.misc #1) { "a little above your head. With a turn of the handles, the rails that block the edges of the barge can be lowered." } else { "at deck level. "; if (val1 is broken) { "One has been snapped down, broken by the sail arm." } else { "They are attached to an inner post, which can be lifted by the handles." } } } case side_steps { !Usage: (2,obj,1) "Wooden steps lead up to the cabin's upper floor." } case deck_lip { select val2 case 1 { !Usage: (2,obj,1) "A short ridge bounds the barge's flat deck."; if (mast.misc #1) { " Wooden rails are extended from the lip, forming a bounding wall that stands a little taller than you. The starboard-side ladder is blocked off now." } else { print newline !Nothing else to be added. } } } case quarters_door { select val2 case 1 { !Usage: (2,obj,1) if (location = deck) { !When viewed from the deck. "At the top of the side steps, a door "; PrintOpenClosed(val1,false,false) " faces forward from the cabin's upper floor." } else { !When viewed from inside. "A door is forward (currently "; print barge_fore_dir.name; "). "; if (val1 is locked) { "It's locked with a simple slide-bolt." } elseif (val1 is not open) { "It's unlocked, but closed." } else { "It leads out to the side steps, which lead down to the main deck." } } } case 2 { !Usage: (2,obj,2) !Player tries to lock the door from the outside. "The door can only be locked from the inside"; if (val1 is open): ", and only when it's closed. "; else: ". "; "Anyway, you see no reason to do that." } } case slide_bolt { select val2 case 1 { !Usage: (2,obj,1) "It's a locking bolt, which works only from the inside." } } case deck_rails { select val2 case 1 { !Usage: (2,obj,1) "Wooden rails extend from the lip that surrounds the edges of the barge, providing a fence-like wall." } } case cabin_door { select val2 case 1 { !Usage: (2,obj,1) "An open doorway leads "; if (location = deck) { "aft (currently "; print barge_aft_dir.name; "), into the cabin." } else { "forward (currently "; print barge_fore_dir.name; "), back to the deck." } } } case cabin_windows { select val2 case 1 { !Usage: (2,obj,1) "The windows are essentially small cut-outs in the walls of the cabin."; if (location = deck) and \ (captain in cabin) and \ (deck.misc #1 >= 2) { " The captain stands there looking forward, probably at the helm." } else { print newline !That's all we need to say about windows. } } case 2 { !Usage: (2,obj,1) { if (location = deck) { PrintMessage(2,val1,1) !A simple redirection. } else { "You can see the deck through the windows." } } } case flat_deck { !Usage: (2,obj,1) !This is only printed when looking from inside the cabin. !Otherwise, the room_object class will re-display the room. "The deck of the barge extends forward (currently "; print barge_fore_dir.name; "), beyond the cabin's exit." } case cargo { select val2 case 1 { !Usage: (2,obj,1) "Crates and large wooden boxes are scattered around the deck"; if (deck.misc #1 = 0) { if (count_spiders > 1) { ". Huge spiders move them and knock them over, in an effort to make away (perhaps when the barges descends) with the largest ones. "; } else { ". Some are held by the front legs of other spiders, as they perch at the edges and prepare to leap away. "; } } else { ", as a result of the spiders' raid. "; } "The cargo must be very important to the captain."; if (cargo.misc #1 = mast) { " You have stacked three crates step-like near the mast." } else { print newline !Nothing else to add. } } case 2 { !Usage: (2,obj,2) "You climb up onto the crates stacked beside the mast." } case 3 { !Usage: (2,obj,3) "You step down from the cargo crates, back onto the deck." } case 4 { !Usage: (2,obj,4) - Trying to look inside the crates. "The crates and boxes are nailed shut, and you can't see inside any of them. From the smell, it seems like most of them probably contain rotten apples." } } case distant_captain { select val2 case 1 { !Usage: (2,obj,1) "The captain stands at the cabin's forward window, looking out over the deck."; if (deck.misc #1 = 2) { if (mast.misc #1) { " He nods at the mast, clearing indicating that the handles should come down." } else { " He seems increasingly worried. He motions for you to come back to the cabin." } } elseif (deck.misc #1 = 4) { " He looks white and a little wispy as he motions you back to the cabin." } else { !We don't need to comment on his mood. print newline !Nothing else to add. } } } case mill_door { select val2 case 1 { !Usage: (2,obj,1) "The door to the mill "; PrintOpenClosed(val1,false,false) " is to the west."; if (val1 is locked) { " It is large, wooden, and held shut by a big rusty lock."; } if (val1.misc #1) and (location = mill) { " The door has been "; if (val1.misc #2) { "notched and "; "dented in spots." } else { "notched in spots." } } elseif (val1.misc #2) and (location = mill) { " The door has been "; "dented in spots." } else { print newline !Nothing else to be said. } } case 2 { !Usage: (2,obj,2) ! Player is trying to lock the door again (with rusty_lock). ! But, there is no need. At least give an appropriate response. if (mill_latch is broken) { "The latch is broken. You can't put the rusty lock back." } elseif (location ~= mill) { "You see no way to lock the door from inside." } else { "The rusty lock is closed. You can't put it back on the door's latch that way." } } case 3 { !Usage: (2,obj,3) ! Said whenever the player wants to break the door down... ! if the lock is already off. if (val1 is open) { "The door is open. You haven't the need to "; print verbword; " it." } else { "The door isn't locked." } } case 4 { ! Usage: (2,obj,3) !Called from multiple places, to list the door. "A single wooden door "; PrintOpenClosed(mill_door,false,false) " leads in."; } } case mill_latch { select val2 case 1 { !Usage: (2,obj,1) if (val1 is broken) { "The door's latch is broken." } else { if (mill_door is locked) { "A rusty lock hangs from the latch." } else { "It's the latch for the mill's door." } } } } case deck_ladder { select val2 case 1 { !Usage: (2,obj,1) if (location = deck) { "A ladder leads down off the starboard side, to the "; print barge_starboard_dir.name; "." } else { "A ladder leads up to the barge's deck, to the south." } } } case tapestry { !There is a different case for the same object, in different rooms. if (location = quarters) { !Usage: (2,obj,1) "It's written in an ancient language of symbols and glyphs, only some of which you can comprehend. This seems odd, considering that the tapestry itself is of modern design. "; if (val1.misc #1) { !We read the original one. "Unlike a similar tapestry you read earlier today, this one shows no symbols of a warning or curse. "; } "It appears to be a simple pact or agreement"; if (val1.misc #1) { ".\n" !Don't need to say more, if we saw original. } else { ", if you interpret that swirl beside the angular loop correctly.\n" } "Much of the writing adorns crude but more recognizable illustrations. There, you see the wavy lines of an ocean. A boat is shown to rise from the water, embodied with... does this rendering of an ethereal glow represent an enchantment? Lines point inward, representing wings, but they seem to exist only to sustain the enchantment. A man is drawn sideways above the waves, and then again upright as a mere outline above the boat itself. These other markings may mean \"to sail beyond your days, for as long as your purpose is,\" but you can't be sure.\n" "One thing, toward the bottom, is abundantly clear. A tyrant's mark is scrawled in red." val1.misc #2 = true !Flag that we have read the tapestry. } } case tapestry_markings2 { !Usage: (2,obj,1) "Markings of all sorts adorn the tapestry: glyphs and symbols, swirls and loops, illustrations of an ocean, a sideways man that becomes an upright outline, an enchantment, a boat with wings, and a tyrant's red mark." } case furnishings { select val2 case 1 { !Usage: (2,obj,1) "The captain's quarters are sparsely furnished with a simple bed, an aged chest of drawers, and a threadbare rug of green fleece." } } case simple_bed { select val2 case 1 { !Usage: (2,obj,1) if IsWord("mattress") or IsWord("thin") or IsWord("dingy") { "The mattress shows an ongoing lack of use." } elseif IsWord("frame") { "It's a simple wooden bed frame holding a thin, dingy mattress." } else { "It's just a mattress on a wooden frame; a simple bed without sheets, blankets or pillows. More than that, it also looks unused, as though it was merely abandoned here." } } } case chest_of_drawers { select val2 case 1 { !Usage: (2,obj,1) "The captain's chest of drawers looks old and unused." } case 2 { !Usage: (2,obj,2) - Look inside, when nothing is there. "You find that all the drawers are empty." } } case fleece_rug { select val2 case 1 { !Usage: (2,obj,1) "The green fleece rug looks worn and beaten." } } case wing_slots { select val2 case 1 { !Usage: (2,obj,1) if (mast.misc #1) { "Wooden rails are raised around the edges, in front of the wing slots. You can't get a very close look right now." } else { "Both slots (to starboard and port) have a lever to one side. The slots themselves are long, grooved, and vice-like. "; if InList(starboard_wing,found_in,location) { "It looks as though the lever can be raised to release the wing, or lowered to clamp it down. "; } "This seems to be a more recent arrangement, not part of the barge's original design." } } } case starboard_slot { select val2 case 1 { !Usage: (2,obj,1) if (mast.misc #1) { PrintMessage(2,wing_slots,1) !The rails are in the way. } else { if InList(starboard_wing,found_in,location) { "The near end of a very damaged wing is clamped into the starboard-side slot. "; } elseif (sail_arm in starboard_slot) { "One end of the sail arm is now clamped into the starboard-side slot, and it extends outward in a way that makes it almost indistinguishable from the port-side wing. "; } else { "The starboard-side wing has been released. "; } "The slot itself is long and grooved, with a lever to the side (currently "; if InList(starboard_wing,found_in,location) or \ (sail_arm in starboard_slot) { "lowered), which keeps the wing secured and sturdy." } else { "raised)." } } } } case port_slot { select val2 case 1 { !Usage: (2,obj,1) if (mast.misc #1) { PrintMessage(2,wing_slots,1) !The rails are in the way. } else { "The near end of a wing is clamped into the port-side slot. The slot itself is long and grooved. A lever beside it is lowered, keeping the wing secured and sturdy." } } } case barge_wings { select val2 case 1 { !Usage: (2,obj,1) if (mast.misc #1) { "Wooden rails are raised around the edges, blocking your view of the wings." } else { if InList(starboard_wing,found_in,location) { "Wooden wings are clamped into slots at the port and starboard sides. The starboard wing looks heavily damaged." } elseif (sail_arm in starboard_slot) { "The original port-side wing remains, but the starboard one has been replaced by a sail arm from the windmill." } else { ! Actually, it won't matter. "x wings" will just say ! That there is only one wing to examine. } } } } case starboard_wing { select val2 case 1 { !Usage: (2,obj,1) if (location = deck) { if (mast.misc #1) { "Wooden rails are raised around the edges, blocking your view of the starboard wing." } else { "The starboard wing is still clamped into the vice-like slot, although it looks heavily damaged. Much of its exterior has been stripped away, leaving a long rib-like structure along most of its length.\n" "A lever is beside the slot." } } else { if (val1.misc #1) { "The wing is leaning against the towering windmill, offering substitute steps to replace the crumbling lower ones." } else { ! I'm tempted to say it looks like a ladder, but I ! think this is a good enough clue, and will hope- ! fully let the player have a sense of "solving" it. "The barge's starboard wing is on the ground. Most of its exterior has been stripped away, leaving wooden crossbars that resemble a long, flat ribcage." } } } } case port_wing { select val2 case 1 { !Usage: (2,obj,1) if (mast.misc #1) { "Wooden rails are raised around the edges, blocking your view of the port-side wing." } else { "The near end of a wooden wing is clamped into the port-side slot." } } } case windmill { select val2 case 1 { !Usage: (2,obj,1) !Visible from (distant) deck, (not distant) mill and steps. select location case deck { ! Here, I won't comment that the wings don't seem large ! enough to support the barge. I'll do that when working ! with the wings themselves. "A tall windmill of brown and green stone is north of the barge, off the starboard side. Its wooden sail arms look profoundly similar to the wings of the barge." } case mill { "The windmill is a brown and green stone structure that towers above you. "; PrintMessage(2,sail_arms,3) !Describe arms as spinning. print " "; !Offset the next part, using a space. PrintMessage(2,mill_door,4) !Describe door leading in. " Stone bricks form steps that lead up the outer wall"; if (starboard_wing.misc #1) { ". The barge's starboard wing, now just a damaged rib-like structure, is leaned against the side, effectively replacing the lower steps." } else { ", although most of the lower ones have eroded beyond the possibility of safe use." } } case steps { "You can see little but its brown and green stone side, and the ground below." } } case 2 { !Usage: (2,obj,2) !Player "looks up" inside the windmill. "The drive shaft go straight upward. It connects to a set of gears near the top." } case 3 { !Usage: (2,obj,3) if (sail_arms.misc #1) { "The sail arms are still"; if (sail_arm is moved) { ", and one is missing." } else { "." !Just end the sentence. } } else { "Near the top of the steps, the sail arms spin slowly in the wind." } } } case mill_steps { select val2 case 1 { !Usage: (2,obj,1) "Stone brick steps lead up the side of the windmill and end "; if (location = mill): "near the top, "; else: "here at the top, "; "where the sail arms are connected. "; if (starboard_wing.misc #1) { "The barge's starboard wing now serves as a replacement for the lower steps." } else { "The upper steps seem fine, but the lower ones have been damaged or eroded to an unusable state." } } } case sail_arms { select val2 case 1 { !Usage: (2,obj,1) !Visible from (distant) deck and mill, (not distant) steps. if (val1.misc #1) { "The sail arms have stopped."; if (sail_arm is moved) { " One has been cut loose"; if (val1 is distant) { ", leaving the windmill in a sorry state." } else { "." !Nothing else is important now. } } else { print newline !That's all we need to say. } } else { !The blades are still spinning. if (val1 is distant) { "Four wooden sail arms face east and spin lazily in the mild wind, near the top of the windmill. "; if (location = deck) { "From this distance, they bear a resemblance to the barge's wings." } else { "From below, they're more difficult to see. They definitely look similar to the barge's wings." } } else { "The sail arms spin dangerously close, just an arm's reach away. They're of a design very similar to the wings of the barge, making it likely that the wings originally served an altogether different purpose." } } } case 2,3 { !Usage: (2,obj,2/3) - When 3, we say "attached near top". ! This gets said in multiple places, to describe the arms. ! No linefeed at the end. It can fit in with other text. if (sail_arms.misc #1) { if (sail_arm is moved) { "It looks awkward with one sail arm missing."; } else { "Its four wooden sail arms have been stilled."; } } else { "Its four wooden sail arms "; if (val2 = 3): "(attached near the top) "; "spin lazily in the mild wind."; } } case 4 { !Usage: (2,obj,4) ! Attempting to untie the sail arms from something foreign. print CThe(val1); " do not appear to be attached to "; print The(xobject); "." } case 5 { !Usage: (2,obj,5) ! Trying to do something construed as "touching" the wings. ! And, while the wings are moving no less. Dangerous. "While the sail arms turn in the wind, it would be too dangerous to get that close." } } case big_barge { select val2 case 1 { !Usage: (2,obj,1) if (val1 is distant) { !Viewed from atop the windmill. "You can see the barge below, down and to the south."; if InList(starboard_wing, found_on, deck) { print newline !Nothing else to add. } elseif (sail_arm in starboard_slot) { " The sail arm now serves as a replacement wing." } elseif (sail_arm in mast) { ! The player should know what center post I mean. " The sail arm is caught on its center post." } else { ! Of course the player knows this, since they used the ! wing to get up here. But, it's worth a reminder. " Its starboard wing is missing." } } else { !Viewed from nearby. "The barge looks out of place in the grassy lowland. It's a massive wooden structure with obvious seagoing origins. A ladder leads up the starboard side, to the south." } } } case main_axle { select val2 case 1 { !Usage: (2,obj,1) if (location = steps) { "An axle from within the mill extends outward, overhead. "; if (sail_arm is moved) { "Three wooden sail arms remain."; } else { "Four wooden sail arms are wedged into the end and bound securely with strong cords."; } } else { "An axle near the top of the interior links the sail arms outside to the set of gears that drive the central shaft."; } if (sail_arms.misc #1) { " The axle no longer turns." } else { print newline !Nothing more to say. } } } case basin { select val2 case 1 { !Usage: (2,obj,1) "At one time, this basin was probably used to grind grain into flour. A large millstone is bound to a wooden drive shaft, which runs straight up to a set of gears near the top of the mill. The millstone "; if (sail_arms.misc #1) { if (rusty_lock in basin) and (pipe not in gears) { "is jammed by the rusty lock and "; } "no longer turns."; if Child(basin) { print newline !Nothing else to say. } } else { "turns steadily, still working despite years of disuse."; if Child(basin) { print newline !Nothing else to say. } else { !Nothing is in the basin. " The effort seems wasted, as the basin is empty." } } } } case basin_dust { select val2 case 1 { !Usage: (2,obj,1) "Dust has collected in the grain basin." } } case millstone { select val2 case 1 { !Usage: (2,obj,1) "It's probably buhrstone. "; if (sail_arms.misc #1) { "It no longer turns"; if (rusty_lock in basin) and (not pipe in gears) { ", since a rusty lock is jammed under it." } else { "." !Just end the sentence. } } else { "It turns in the basin, at the end of the central drive shaft." } } } case drive_shaft { select val2 case 1 { !Usage: (2,obj,1) "The wooden drive shaft runs straight up, from the millstone to the gears high overhead. "; if (sail_arms.misc #1) { "It no longer turns." } else { "It turns slowly, moving the millstone around in the basin." } } } case gears { select val2 case 1 { !Usage: (2,obj,1) "A set of gears, near the top of the mill, connect the drive shaft to the main axle. "; if (sail_arms.misc #1) { if (pipe in gears) { print CArt(pipe); " is stuck in the gears, jamming the entire system." } else { "They remain motionless, now that the millstone is jammed." } } else { "They turn together, as the sail arms outside drive the system." } } } case mill_hole { select val2 case 1 { !Usage: (2,obj,1) "The main axle connects the sail arms to the gears inside, through the hole in the side of the mill." } } case axle_cords { select val2 case 1 { !Usage: (2,obj,1) "Thick cords of woven fiber lash the sail arms securely to deep notches in the main axle."; if (sail_arm is moved) { " One blade is now missing, where the cords have been cut." } else { print newline !Nothing to add. } } case 2 { !Usage: (2,obj,4) ! Attempting to untie the cords from something foreign. print CThe(val1); " aren't tied to "; The(xobject); "." } case 3 { !Usage: (2,obj,3) ! Trying to do something construed as "untying" the cords. ! But we can't, because the axle is turning. "The axle is turning, making it impossible to untie the cords." } case 4 { !Usage: (2,obj,4) ! We're trying to hit/attack the cords while blades spinning. "With the sail arms still turning in the wind, you would risk unnecessary injury." } } case axle_notches { select val2 case 1 { !Usage: (2,obj,1) "The sail arms fit snugly in the notches. They are held in place by thick wrappings of cord."; if (sail_arm is moved) { " The cords around one notch have been cut away, and its sail arm is gone." } else { print newline !Nothing to add. } } } case helm { select val2 case 1 { !Usage: (2,obj,1) "The barge's helm consists of a wooden steering wheel, levers, gauges, and other instruments." } } case instruments { select val2 case 1 { !Usage: (2,obj,1) "You're no sailor. Even though the term seems ill-suited given that the barge flies, it means you can't make sense of the various gauges, levers, and other instruments of the helm." } } case helm_wheel { select val2 case 1 { !Usage: (2,obj,1) "A large wooden wheel is mounted on the helm. Eight ornate spokes spread from the center, providing handles all the way around." } } case cabin_ladder { select val2 case 1 { !Usage: (2,obj,1) "A wooden ladder leads "; if (location = cabin): "up." else: "down." } } case mill_ground { !Usage: (2,obj,1) "The ground is soft and the grass is short." } !-------------------- ! SCENERY FOR PART 3 !-------------------- case wharf_ladder { select val2 case 1 { !Usage: (2,obj,1) if (location = wharf) { "A ladder leads down off the north side, to the riverbed below." } else { "A ladder leads up to the wharf." } } } case pilings { select val2 case 1 { !Usage: (2,obj,1) "The wharf stands on long wooden pilings; thick legs that are driven into the dry, cracked soil." } } case distant_village { select val2 case 1 { !Usage: (2,obj,1) if (village is visited) { "The village is east of here." } else { "You are nearly there. Just a long walk to the east, and you will arrive at your destination." } } } case long_wharf { select val2 case 1 { !Usage: (2,obj,1) "It's a long wooden wharf, running parallel to the waterless river. It stands on long pilings." if (fishnet in location) and (fishnet is not moved) { print "" !A blank line before describing it. run fishnet.initial_desc } } } case river_ground { select val2 case 1 { !Usage: (2,obj,1) if (location = wharf) { "The river is dry. The ground is cracked along the riverbed, below and beyond the wharf." } else { ! ?? Right now, this only is seen when on wharf. ! ?? When at the riverbed, it does a LookAround. } } } case river_panel { select val2 case 1 { !Usage: (2,obj,1) if (location = riverbed) { "A solid panel is set into the river wall, "; if (chamber is visited) { "on this side of the tyrant's chamber. "; } else { "presumably leading into an underground room or passage. "; } "You see no way to open it from this side."; if (val1.misc #1) { " Even an attack with your sword left it marked but otherwise unharmed." } else { print newline !Nothing else to add. } } else { "A door-sized panel in the north wall is "; if (val1 is open) { "open." } else { "closed. A handle near the bottom can lift it open." } } } case 2 { !Usage: (2,obj,2) - when the panel auto-closes at riverbed. "\nThe door-sized panel falls closed, behind you." } } case panel_handle { select val2 case 1 { !Usage: (2,obj,1) "A handle near the bottom of the panel can be lifted, to open the door from this side." } } case panel_hooks { select val2 case 1 { !Usage: (2,obj,1) "Several thick metal fishing hooks have been driven into the dry river wall, above the panel."; if Child(val1) { !The hooks have a custom listing prop, so no double-line. print newline !Because the net will be listed. } else { if (val1.misc #1) { " A fishing net was hung from the hooks, but you have removed it." } else { " Perhaps something suspended from the hooks once covered or hid the panel, but whatever it may have been is gone." } } } case 2 { !Usage (2,obj,2) - contents listing for the fishing hooks. if (fishnet in val1) { "A fishing net hangs from the hooks, draping over the panel." } elseif (val1.misc #1) { "A fishing net was hung from the hooks, but you have removed it." } else { "Perhaps something suspended from the hooks once covered or hid the panel, but whatever it may have been is gone." } } } case river_wall { select val2 case 1 { !Usage (2,obj,1) "The sloping river wall to the south is dry, like the rest of the riverbed. A door-sized panel is set into the wall." } } case well { select val2 case 1 { !Usage (2,obj,1) "Brown and green stone encircles the opening to a water well. A wooden frame with a peaked roof is built above it, supporting a windlass with a winch crank at one end." if (chain.misc #1) { "\nA chain is linked to the windlass, and it hangs down into the well." } "\nA large round slab of stone "; if InList(slab,found_on,well) { "covers the top of the well." } else { "leans against the well, no longer blocking it." } if IsAttached(chain,slab_handle) { "\nOne end of a chain is wrapped around the windlass, and the other is attached to the slab's handle." } else { "\nA chain is wrapped around the windlass." } if InList(slab,found_at,location) { ! It occurs to me that players might not figure out to ! enter the well, without a little bit of a hint. print "" !A blank line before the next portion, first. PrintMessage(2,val1,2) !Mention the tunnel down there. } } case 2 { !Usage (2,obj,2) - Looking in the well. if InList(slab,found_on,well) { "A stone slab blocks the opening." } else { "The well is dry. "; if (east_tunnel is visited) { "It leads down to a tunnel." } else { "It looks as though a tunnel is down there." } } } } case slab { select val2 case 1 { !Usage (2,obj,1) "A large stone slab "; if InList(val1,found_on,well) { "covers the opening to the water well. "; } else { "rests against the well, no longer covering the top. "; } if IsAttached(chain,slab_handle) { "A chain is looped around its handle."; } else { "A piece of bent metal serves as a handle."; } ! To avoid a double blank line when auto-listing children, ! don't print a linebreak after slab description unless ! there are no children to be printed. if not Child(val1): print newline } } case slab_handle { select val2 case 1 { !Usage (2,obj,1) "The handle is just a rounded piece of metal, bent and embedded in the middle of the stone slab." if IsAttached(chain,val1) { "\nOne end of the chain is wrapped around the handle." } } } case frame { select val2 case 1 { !Usage (2,obj,1) "The wooden frame over the well seems sturdy. A peaked roof rests atop it, and a windlass across the middle has a winch handle at one end." if (chain.misc #1) { "\nA chain is linked to the windlass, and it hangs down into the well." } else { "\nA chain is wrapped around the windlass." } } } case frame_roof { select val2 case 1 { !Usage (2,obj,1) "A miniature roof is above the well." } } case windlass { select val2 case 1 { !Usage (2,obj,1) if (east_tunnel is visited) { "A windlass is supported by the well's wooden frame. "; } else { "The apparatus seems far stronger than would be necessary to raise buckets of water from the well. "; } "A winch extends from one end, and a strong chain is "; if (chain.misc #1) { "linked to the barrel." } else { "wrapped around the barrel." } if (AttachedCount(chain)>1) { "\nThe chain's other end is attached to "; print The(chain.attached_to #2); "." } } } case winch { select val2 case 1 { !Usage: (2,obj,1) "The winch is for cranking the windlass. This will raise or lower the chain." } } case huts { select val2 case 1 { !Usage: (2,obj,1) "Several small, abandoned huts form a line to the north, distanced from the near edge of the dry river." } } case dry_river { select val2 case 1 { !Usage: (2,obj,1) "Beyond the row of huts, the dry riverbed stretches east to west. It is cracked, parched, and empty for as far as you can see in both directions." } } case dead_trees { select val2 case 1 { !Usage: (2,obj,1) "In earlier times, these tall trees probably shaded the entire village. Now they are gray and black; lifeless. Their gnarled "; print "limbs "; "twist and bend in unnatural ways." } case 2 { !Usage: (2,obj,2) Print CThe(val1); " are beyond saving. The saplings seem more in need of water." } } case gnarled_limbs { !Usage: (2,obj,1) print "They "; "twist and bend in unnatural ways." } case saplings { select val2 case 1 { !Usage: (2,obj,1) "The tallest of them are only a head or two taller than you, and the shortest come barely to your knee."; ! I'm not expecting players to look at the saplings multiple ! times to get this clue. However, if they do, it's probably ! because they're trying to figure them out. After some turns, ! mention that they seem alive and thirsty. if (val1.misc >= 2) { ! We've already watered them twice, so say this. " The saplings are still now." } elseif (val1.misc #2 = 0) { ! First time looking at the trees. " A few are planted around the village in a seemingly random manner: blocking huts, close to the dry riverside, by the well, and at the outskirts of the little village. You can't identify their type." } elseif (val1.misc #2 = 1,2) { " As they sway in a breeze, they seem almost alive." } elseif (val1.misc #2 = 3) { print newline !End the prior line print "" !And then a blank line before this part here. "You sense movement, and you turn, but the saplings are momentarily still. For a moment, it seemed as if one was reaching toward your hip." } else { val1.misc #3 = true !Flag that we've seen them thirsty. " The saplings won't last long in this dry, parched ground." } val1.misc #2 ++ !Increment the number of times we've looked. } } case plate { select val2 case 1 { !Usage: (2,obj,1) "A rounded metal plate is embedded in the dry tunnel floor"; if (location = east_tunnel) { ". "; !End the sentence before saying more. if plate_is_down(0) { "The plate is currently held down."; } else { if (val1.misc #1) { "The plate is not currently pressed down."; } else { ! A slight hint that maybe it can be pushed down. "It stands just above the ground, about one inch from being flush with it."; } } ! The purpose of this is to prevent a double-line, whenever ! the lib is going to auto-list the plate's contents. if not Child(val1): print newline } else { !This continues from "embedded..." text earlier. ", at the east end of the tunnel." } } } case ornate_door { select val2 case 1 { !Usage: (2,obj,1) "The door "; if (location = east_tunnel) { "at the west end "; } elseif (location = west_tunnel) { "to the west "; } "is large and ornate, carved from a dark hardwood that makes it seem sinister. "; if (val1 is open) { "You stand watching as it lowers." } else { "It has no knob or handle; no obvious way to lift, pull, or push it open." } } case 2 { !Usage (2,obj,2) "If the ornate door can be opened from inside, only the tyrant knows how. You see no knob or handle; no obvious way to lift it open." } } case simple_door { select val2 case 1 { !Usage: (2,obj,1) "A simple iron door is to the "; if (location = east_tunnel) { "northwest. It has no knob or obvious handle."; } else { "southeast. On this side, a handle is near the bottom."; } if (val1 is open) { " You stand watching as it lowers." } else { print newline !Nothing else to add here. } } } case simple_handle { select val2 case 1 { !Usage: (2,obj,1) ! If we haven't opened the door from inside at least once, ! then say that the handle can "presumably" open the door. "A handle near the bottom can be lifted, "; if (not simple_door.misc #1): "presumably, "; "to open the door from this side." } } case village_ground { select val2 case 1 { !Usage: (2,obj,1) "The ground is dry and parched. The saplings are lucky to be alive." } } case upward_chain { select val2 case 1 { !Usage: (2,obj,1) "A strong chain is fully extended from above, and it hangs down to about head-level. It leads back up to the surface." } } case tunnel_floor { select val2 case 1 { !Usage: (2,obj,1) "The floor of the tunnel is hard and dry." } } case tapestry { !There is a different case for the same object, in different rooms. if (location = hall) { !Usage: (2,obj,1) "The newest of the tapestries appears to be unfinished. It's written in an ancient language of symbols and glyphs, but there are gaps and incomplete markings. Even though it appears to be a pact or an agreement, perhaps something went wrong.\n" "It may be an incomplete set of instructions. Circles within circles could mean \"plague\" or \"curse\", but they seem misplaced, added almost as an afterthought.\n" "Much of the writing adorns crude but more recognizable illustrations. There, you see a mighty river, but a circle to the side holds the wavy lines. You see lines and points, like a map, with small people drawn at various places. Dots connect them to a point near the river, as though the people are leaving; spreading out and bringing small gifts to the other points.\n" "Where the other tapestries have a tyrant's red mark at the bottom, this one is blank. It's as though the pact was never effected or agreed upon." val1.misc #3 = true !Flag that we have read the tapestry. } } case tapestry_markings3 { !Usage: (2,obj,1) "Markings of all sorts adorn the unfinished tapestry: glyphs and symbols, swirls and loops, illustrations of a river, points and lines like a map, small people with their small gifts, and other incomplete marks. The tyrant's red mark is notably absent.\n" "Somehow, as you look a little more closely, the people remind you of little trees." } case other_tapestries { select val2 case 1 { !Usage: (2,obj,1) "Most of the tapestries are unfamiliar to you. They are marked with glyphs and symbols, swirls and loops, and a myriad of illustrations. They seem to depict pacts or agreements between the tyrant and other people. Some are comparatively innocuous, but others seem quite sinister. They represent what must be many years of planning and manipulation on the tyrant's part.\n" "You do recognize two of them. One is nearly identical to a tapestry you discovered this morning, in the cellar of a barn."; if (farm_tapestry is broken) { " It has been cut to ribbons."; } " Another is quite like a tapestry you "; ! Now, the player should have seen the captain's tapestry. But, ! since the pipe that's found there is optional, there is no ! real guarantee. So, on the off chance they didn't, I'll use ! a more vague, ambiguous phrasing. if (quarters is visited) or (tapestry.misc #2) { "saw hanging in the barge captain's quarters."; } else { "saw somewhere else, not too long ago."; } if (barge_tapestry is broken) { if (farm_tapestry is broken) { " It too has been cut to ribbons.\n" } else { print " It has been cut to ribbons."; "\n" } } else { print "\n" ! End, and a blank line. } "The last (and possibly newest) tapestry is unfinished." } } case farm_tapestry, barge_tapestry { select val2 case 1 { !Usage: (2,obj,1) if (val1 is broken) { print CThe(val1); " has been cut up." } else { "It's a close copy, but the enchantment is gone." } } case 2 { !Usage: (2,obj,2) - Player tries to touch it. "Nothing happens. The enchantment is gone." } } case lights { select val2 case 1 { !Usage: (2,obj,1) "They are sometimes like fireflies, sometimes like fading sparks from a campfire, and sometimes like brilliant little stars. They flitter about the chamber, down among the crates and along the far-reaching walls." } case 2 { !Usage: (2,obj,2) - old illusion ends, so new one can begin. "When you touch the tapestry, the "; print lightform_name(lights.misc #1); " illusion fades, and the points of light return." } case 3 { !Usage: (2,obj,3) - the selected illusion is already showing. "The illusion of a "; print lightform_name(lights.misc #1); " is already presented in the enormous chamber below." } case 4 { !Usage: (2,obj,4) - the lights begin to form an illusion. "They "; rnd = random(6) select rnd case 1: "dance in a frenzy, "; case 2: "glide along the walls, "; case 3: "rise and fall, "; case 4: "sparkle brilliantly, "; case 5: "fly in arcs, "; case 6: "spin and float, "; "spreading out and bursting in a thousand colors. A haze fills the cavern, but it becomes clearer, like a vivid window into another world." } case 5 { !Usage: (2,obj,5) - when touching a tapestry, they react. print "The moment you touch the tapestry, "; The(lights); " begin to react." } case 6 { !Usage: (2,obj,5) - when touching other tapestries. print "You touch one of the other tapestries. As you do, "; print The(lights); " begin to react." } case 7 { !Usage: (2,obj,7) ! Here, we describe whatever the lights have formed. select lights.misc #1 case 1 { ! -- Fishing Village "The ledge overlooks a fishing village, from a point that seems high overhead. Huts line a long gash in the barren ground, where a river should be. A water well is in the middle of the village. A stone lid leans against its side. Dark trees reach out with tangled, dead limbs.\n" "From this vantage, the saplings seem almost alive. "; if (saplings.misc #1 = 0) { "They seem... thirsty? Something about their movements, as they sway in a breeze under the stormy sky, makes it seem as though they are fighting the dry, parched ground." } elseif (saplings.misc #1 = 1) { "They sway in a breeze under the stormy sky, looking thirsty still." } else { "They are still, though, and seemingly satiated." } } case 2 { ! -- Mountain Pass "The ledge looks down on a mountain pass, where thick pines grow in groups. The mountain side is steep and rocky, but it supports a ramshackle cabin with a fence of stone." } case 3 { ! -- Snow-Covered Field "Far below the ledge, a snow-covered field stretches to the distance. Thin spikes dot the landscape. Smoke rises from the chimneys of a collection of small blue houses. Beyond, a white haze hides the chamber walls." } case 4 { ! -- Seaside Village "The ledge looks down upon a vast ocean. Waves beat the shore, where wide wooden houses are built on tall stilts. Jagged boulders jut from the waters to the east and west, and the distant north is hidden in a haze." } case 5 { ! -- Desert Oasis "Below, the chamber walls are like sand. The ledge overlooks a desert, where dunes of all sizes stand against the wind like frozen waves. Sand scatters around a green patch of land in the middle of it all, where two men on camel's backs are surveying a few strange trees and a pool of clear water." } case 6 { ! -- Jungle Stream "The ledge looks down on bending trees with thick foliage, vines and rocks, and a stream that cuts through the underbrush. Animals (some familiar, others quite unlike any you have encountered in prior travels) prowl the jungle. Two wooden houses seem abandoned in the middle of it all." } case 7 { ! -- Twilight Castle "A magnificent castle rises from the far end of the chamber. Beyond, the horizon is soft and red, where the sun is setting. The ledge looks down on a long stone path that meanders toward the castle. The land is cast in the purple tint of twilight." } case 8 { ! -- Green Cavern "The ledge looks down to a deep cavern that casts a green glow. Black spikes rise from a bottom that must be hidden below a gray mist. Around the far walls, wooden ledges are built between strange houses that are set into the jagged stone. Ever few moments, a wind from below rushes up through the cavern, shaking the walkway ledges." } } case 8 { !Usage: (2,obj,8) - when the fuse runs out and the show is over. print "The "; lightform_name(lights.misc #1); " illusion fades, and the points of light return." } } case storage_crates { select val2 case 1 { !Usage: (2,obj,1) if (lights.misc #1 > 0) { "The "; if IsWord("crates") or IsWord("crate"): "crates"; elseif IsWord("casks") or IsWord("cask"): "casks"; else: "boxes"; " are wrapped in an illusion, and are not currently visible." } else { "Storage crates, boxes and casks have been collected in the huge room, down from the ledge." } } } case ledge { select val2 case 1 { !Usage: (2,obj,1) "The ledge is just inside the door, at the south wall. Beyond it, the rest of the chamber is inaccessible." } } case illusion { select val2 case 1 { !Usage: (2,obj,1) - Player is trying to examine the illusion. ! Or maybe they're just trying to examine portions of it. No ! way can I implement all those parts, so they're just going ! to have to live with a really generic response. Heh heh. if IsWord("saplings") or IsWord("sapling") { if (saplings.misc #1 < 2) { "They do look thirsty, and understandably so. The ground is dry and parched." } else { "They seem satiated at the moment." } } else { rnd = random(2) select rnd case 1: "For an illusion, it looks incredibly real." case 2: "It's as though you're seeing through distant eyes." } } } case table { select val2 case 1 { !Usage: (2,obj,1) "It's a simple wooden table, built low to accommodate the tyrant's short stature." } } case bookshelf { select val2 case 1 { !Usage: (2,obj,1) "A variety of books rest on its shelves." } } case books { select val2 case 1 { !Usage: (2,obj,1) "Some are quite archaic, while others seem built and bound by modern means. Many of the titles are mere glyphs and cryptic symbols. As best you can tell, they range from research material to simple folktales." } case 2 { !Usage: (2,obj,2) - searching the books. "You find nothing so revealing as a journal or diary among the books. Although some may be valuable, most are probably of importance only to the tyrant." } case 3 { !Usage: (2,obj,3) - attempting to get or read a book. "You pull a book at random from the shelf. "; ! TODO - add more books. rnd = random(8) select rnd case 1 { "It's a book of folktales, but nothing of importance given the present situation. "; } case 2 { "The book is written in a language you don't understand. "; } case 3 { "It's a guide to shipbuilding; nothing of present interest. "; } case 4 { "It describes techniques for brewing cider, with charts and diagrams for the construction of a strange contraption. It's too technical to understand. "; } case 5 { "It's a treatise on the principles of simple but effective enchantments. You can make no use of it. "; } case 6 { "It's either an expanded theory on the useful applications of enchanted liquids, or very bad fiction. Neither are of immediate interest. "; } case 7 { "The book lists the imports and exports of several regional cities and large villages. It doesn't interest you. "; } case 8 { "It's a comparison between the properties of magic and the properties of science. It's dense and uninteresting. "; } "You put it back." } } case treasure { select val2 case 1 { !Usage: (2,obj,1) "The tyrant keeps his treasure close. It is stacked in small piles around the chamber, but it isn't as abundant as you've encountered in the past. You see gold and silver coins, jeweled cups and crystal chalices, large jewels of purple, red and green, multifaceted ornaments, chains and beads, and other presumably priceless trinkets." } } !---------------------- ! SCENERY FOR EPILOGUE !---------------------- case basket { select val2 case 1 { "A tall wicker basket sits by the door. It's supposed to hold four or five umbrellas. As it's the rainy reason now, they tend to get moved and misplaced."; if Child(val1) { !Contents will automatically get listed. } else { print newline !Nothing else to add. } } } case back_door { select val2 case 1 { "The door leads out to the back yard. It's currently closed." } } case stove { select val2 case 1 { "It's an old white gas-burning stove. Adam should think about replacing it soon. Well, it gets the job done. A casserole is baking at the moment. It will be done in a little while." } } case radio { select val2 case 1 { "It works well enough, although it shows its age." } case 2 { !Usage: (2,obj,2) - trying to turn on the radio. "You have been listening to it all afternoon. You prefer to leave it off now." } } case counter_top { select val2 case 1 { !Usage: (2,obj,1) "Adam put in a new counter top last year. It's the cheapest kind of granite, but it looks nice enough."; if Child(val1) { !Contents will automatically get listed. } else { print newline !Nothing else to add. } } } case kitchen_table { select val2 case 1 { !Usage: (2,obj,1) "It's just large enough for the three of you."; if Child(val1) { !Contents will automatically get listed. } else { print newline !Nothing else to add. } } } case kitchen_chairs { select val2 case 1 { !Usage: (2,obj,1) "Three chairs are situated around the small kitchen table." } } case kitchen_cabinets { select val2 case 1 { !Usage: (2,obj,1) "They are plain wooden cabinets." } case 2 { !Usage: (2,obj,2) "A casserole is already baking in the oven. "; "You don't need anything else from the "; "cabinets." } } case fridge { select val2 case 1 { !Usage: (2,obj,1) "Like most of your appliances, the refrigerator is pretty old. It's a bulky white thing that stands beside the stove." } case 2 { !Usage: (2,obj,2) "A casserole is already baking in the oven. "; "You don't need anything else from the "; "refrigerator." } } case pictures { select val2 case 1 { !Usage: (2,obj,1) "You have always considered these pictures simple but classy." } } case sink { select val2 case 1 { !Usage: (2,obj,1) "It's not a large sink, but it does the job." } case 2 { !Usage: (2,obj,2) "You have finished the dishes. You have no need to run more water in the sink." } } }