!---------------------------------------------------------------------------- !******************************************************* OBJECT DESCRIPTIONS !---------------------------------------------------------------------------- routine PrintText01(val1,val2) { select val1 !----------------------- ! OBJECTS AT BEGINNINGS !----------------------- case sword { select val2 case 1 { !Usage: (1,obj,1) "It's a dual-edged broadsword with etched runes down the middle of both sides. It's sharp, strong, and powerful. "; if (val1.misc #1) { "Currently, you carry it in the sheath at your side." } else { "You wield it well." } } } case sword_runes { !This first bit is the same, whether "looking" or "reading" if (sword.misc #1) { "Although you can't see the runes while your sword is sheathed, you know them well. "; } else { "Runes have been etched into the blade of your broadsword. "; } select val2 case 1 { !Usage: (1,obj,1) !Looking at the runes. "They are signs representing your clan, and a reminder that your travels bring you farther and farther from everything you know." } case 2 { !Usage: (1,obj,2) !Reading the runes. "On one side, the line of runes represents your lineage on your father's side; on the other, your mother's. These are the signs of your clan." } } case sheath { select val2 case 1 { !Usage: (1,obj,1) "A leather sheath is strapped to your waist, so that it hangs at your side around hip level."; if Contains(player,pendant) { " The pendant's silver chain is looped around the sheath, so that the pendant hangs safely at your side."; } if (sword.misc #1) { Print " "; CArt(sword); " is in the sheath."; } print newline !Because we're done now. } } case parchment { if not Contains(player,parchment) { if (player in cargo) { "The parchment has fallen to the floor of the deck." } else { !Just in case we allow it to be dropped elsewhere. !This is generic enough to cover where it may be. "You will have to pick it up first." } } else { if (val2 = 1) { !Usage: (1,obj,1) !Examing the parchment "In Homesdale you met a motherly maiden. She nursed your wounds from a prior battle, fed and sheltered you, and became a friend. Even though your stay was brief (the evils of the land allow you no lengthy reprieve), you found honor in accepting her request. Scribed upon this parchment is the plight of a small fishing village where a black-hearted tyrant has taken control.\n" "A man of your tenacity, sagacity, strength and resourcefulness can capture this tyrant and restore peace to the village. This is her request"; if (chapter < 3) { ", and that is your current destination." } else { print "." !We're there, so say no more. } } else { !Usage: (1,obj,2) !Reading the parchment "\"My Dear Swordsman,\" the motherly maiden has scribed upon this parchment. \"Three days journey from here, and at no detour to your intended path, you will find a small fishing village. I have learned of a sad and unfortunate circumstance suffered upon these peaceful villagers. A tyrant of most foul demeanor has taken residence among the fisher folk, and I fear for the safety of these innocent people.\n" "\"Please, Swordsman, will you capture this tyrant and see that he is brought to justice? He must be made to answer for his crimes, and I have come to trust you enough to ask this of you.\"\n" if (chapter < 3) { "The parchment goes on to provide simple directions to the fishing village. In essence, you only need continue along "; if (game_fore_dir ~= 0) { !If we have established the travel direction, show it. if (game_fore_dir = e_obj) { "an "; } else { "a "; } print game_fore_dir.name; "erly path." } else { "your present way." !Just end the sentence. } } else { if (village is visited) { "You have reached your destination." } else { "You are very close to your destination now." } } } } } !Already have a simple description for the flask. Is there some !place else we can say something similar to this instead? Kind of !important for the backstory, but no big loss if it has to go. !I could apply it to the sheath (which would make sense at the end), !but it wouldn't make sense *during* the game (the swordsman would !already have a sheath, one would think, prior to meeting her). !case flask { ! "A gift from the motherly maiden. She recognized the gratitude ! you felt for her hospitality, even though you didn't tell her. ! Some may call you a man of few words, but the motherly maiden ! truly understood you. You clutch the flask for a moment, smile, ! and let it dangle again at your side. Maybe someday, your paths ! will cross again." !} case flask { select val2 case 1 { !Usage: (1,obj,1) - Examing the flask if (not val1.misc #2) { ! The flask is currently empty. print "No water remains in "; Art(val1); "." } elseif (val1.misc #3) { ! It's filled with water we captured from the tyrant. print CArt(val1); " is nearly full with water you obtained during the tyrant's attack." } else { ! It's the original water, from this morning. "A flask of water is all that remains of your morning rations. "; if (flask.misc #1 = 0) { "It's nearly full, even after drinking a bit earlier." } else { ! There is no in-game reason to track the water usage, ! except maybe to thwart the crafty player who tries to ! prove the entire flask can never be fully consumed. ! Oh well. "Even after sipping from it, the flask remains mostly full." } } } case 2 { !Usage: (1,obj,2) - Water from tyrant, but it's already full. "The water splashes down around your sheath and to the flask at your hip, then soaks instantly into the dry tunnel floor.\n" } case 3 { !Usage: (1,obj,3) - Water from tyrant, filling the flask. "Even as you are forced from the room, you manage to catch enough of the spray in your flask to nearly fill it again.\n" } } !--------------------------- ! OBJECTS FOUND IN EPILOGUE !--------------------------- case pendant { if (val2 = 1) { !Usage: (1,obj,1) !Examining the pendant if Contains(player,pendant) { if (tapestry.misc #1) { ! Give player a clue, if it occurs to them to ! examine the pendant again after seeing tapestry. "It resembles the one depicted on the tapestry. "; } "The pendant is an ornate, heart-shaped locket, with a silver chain that loops through a ring at the crux. Swirls and intricate designs adorn its face." } else { !Usage: (1,obj,2) PrintMessage(3,14,pendant) !Have to pick it up first. } } } case pendant_chain { !Usage: (1,obj,1) "The pendant has a silver chain." } case pendant_portrait { !Usage: (1,obj,1) "You press the pendant's face so that it opens. Inside is a very small portrait of a dark-haired man and woman, holding a baby girl. After a moment, you close it again, loop the chain over your sheath, and let it hang safely at your side." } case pendant_designs { !Usage: (1,obj,1) "Intricate designs -- swirls and other patterns -- adorn the face of the pendant." } !------------------------- ! OBJECTS FOUND IN PART 1 !------------------------- case gate_key { !Usage: (1,obj,1) "The metal key is a little rusty, but it's large and simple. It will still work"; if (gate_key.misc #1 = hill) { if (location = hill) { !We're still standing on the hill. ", but not here. The gate here is beyond repair." } elseif (girl is not known) { !If we haven't been to the orchard, girl is not known. " in the southern gate, probably." } else { "." !Just a period. Nothing more to be said here. } } else { if (gate_key.adjectives #1 = "gate") { " to lock or unlock the orchard's gate." } else { ", presumably." } } } case rope { select val2 case 1 { !Usage: (1,obj,1) "It's a thick, strong length of rope."; if (IsAttached(rope) = nothing) { print newline !Just end the line. Nothing special to say. } else { " Currently, it's tied to "; ListAttachments(rope) print "." !We end the list } } case 2 { !Usage: (1,obj,2) ! This is printed after tying the rope to things. ! It's called by the rope "after" DoAttachObject. print CThe(player); " "; print object.attach_verb; if AttachedCount(rope) < 2 { " one "; } else { " the other "; } print "end of "; The(rope); " "; print rope.attach_prep; " "; print The(xobject); "." } } case rope_knots { !Usage: (1,obj,1) !The knots are only in scope when the rope is tied to something. !So, we can assume as much when printing this description. "The rope is tied to "; ListAttachments(rope) ". That's where the "; if (AttachedCount(rope) > 1) { "knots are." } else { "knot is." } } case wheel { select val2 case 1 { !Usage: (1,obj,1) print CThe(wheel); " is large, round, and made of wood. It's "; "the kind that's better suited to supporting a wagon than whatever use it "; if (wheel is moved) { if (location = cellar) { "was serving on the contraption."; } else { "was serving in the cellar."; } } else { "serves on this contraption."; } if (wheel in wagon) { " You have fixed it to the wagon's axle, where it belongs."; } if IsAttached(rope,wheel) { " Currently, the rope is tied to it." } else { print newline !Just end the sentence. } } case 2 { !Usage: (1,obj,2) "The steps go a long ways up. You can't possibly throw the wheel that high." } } case grain { !Usage: (1,obj,1) !The sack of grain. In or not in the trough. if (grain in trough) { "Some grain remains at one end of the trough." } else { "It's a heavy burlap sack, filled with grain." } } case sack { !Usage: (1,obj,1) !The sack left over after pouring out the grain. if (sack in gears) { "The sack is caught in the gears above. It's too high to retrieve, but it would be of no use even if you could."; } else { "It's a burlap sack."; } ! Contents get listed automatically, afterwards. But to avoid a ! double-linefeed, only print a newline if nothing inside it. if not Child(val1): print newline } case harness { !Is this going to mislead the player into thinking they need !to somehow use the "beam" as the harness crossbar? I use the !same word when describing the door, so it's possible. Well, I !may need to anticipate this and trap for attempts to somehow !fasten the harness to the beam. I'll give it some thought. "It's a leather cattle harness; perhaps part of a yoke. Chains, hooked to a crossbar between a pair of oxen wearing these, are supposed to pull a wagon or drag a load, but those things are missing." if (harness in bull) { "\nIt's not an ox, but this bull seems to wear the harness well." } else { "\nAs you don't intend to involve oxen in any extend travel, that won't really matter." } if IsAttached(rope,harness) { "\nOne end of the rope is tied to the harness." } } case apple { select val2 case 1 { !Usage: (1,obj,1) "It's a large green apple."; if (apple.misc #1) { " The bitten part looks perfectly light and juicy, yet the taste was revolting." } else { print newline !Nothing else to say. } } case 2 { !Usage: (1,obj,2) - trying to cut the apple. "If useful at all, it's better kept whole." } } case beam { select val2 case 1 { !Usage: (1,obj,1) !Long description for looking at the beam. "It's a long and heavy wooden beam. Most likely, it was left over when the barn was originally constructed."; if (self is moved) { if Contains(player,beam) { !Hint to the player that you can't carry it. " It's too large and bulky to carry far." } else { print newline !Nothing else has to be said. } } else { " Right now, it rests mostly on but partially over the side of the loft." } } case 2 { !Usage: (1,obj,2) !Initial description - beam is found in the loft. ! Now, a *really* clever person might think they are ! supposed to trap the girl in the barn and then push ! the beam down on top of her. I should allow for that, ! even though it's more work, but have the girl get away. "Nearby, resting dangerously close to the edge that overlooks the barn below, is a large wooden beam." } } !------------------------- ! OBJECTS FOUND IN PART 2 !------------------------- case bones { select val2 case 1 { !Usage: (1,obj,1) "It's the skeletal spine of a small fish." } case 2 { !Usage: (1,obj,2) !Initial Description - bones found in campfire. if (bones in location) { "Fish bones, probably left behind by the last traveler, share the shallow pit with the charred firewood." } else { "You notice the bones of a small fish in the shallow pit, discarded among the charred logs of firewood." move bones to location !But, not marked them as "moved" (so initial_desc works). } } } case rusty_lock { select val2 case 1 { !Usage: (1,obj,1) rnd = false if (val1 in mill_latch) { "A large rusty lock hangs from the latch of mill's door, keeping it securely closed. "; rnd = true } else { if (val1 is locked) { "The heavy lock is rusty, but it still works. "; rnd = true } else { print CThe(rusty_lock); " is now open." } } if (rnd) { !If we flagged that we need to describe it. "The keyhole is large, and so must be the key that fits. However, it's unlikely that you will ever find it." } } case 2 { !Usage: (2,obj,2) !Whenever the player is trying to pry the lock, but the !lock is no longer on the door. Also, if "hit lock with pipe" "Nothing but a suitable key is likely to force it open, but even that would be unnecessary at this point." } } case pipe { select val2 case 1 { !Usage: (1,obj,1) "It's a heavy lead pipe, about as long as your forearm."; if (val1.misc #1) { " It has been scratched and scuffed by the millstone." } else { print newline !Nothing else to be added. } } case 2,3 { !You stoop down to look under... !This begins a couple of the other cases, below. "You stoop down to look "; if (verbroutine = &DoLookBehind): "behind "; else: "under "; } case 2 { !Usage: (1,obj,2) - Search the bed and find the pipe. if IsWord("mattress"): "the mattress. "; else: "the bed. "; "What you notice there"; if IsWord("mattress"): ", oddly enough,"; " is a lead pipe, which you take." } case 3 { !Usage: (1,obj,3) - Find it under or behind the dresser. print The(chest_of_drawers); ". You notice that a length of lead pipe has rolled back there, so you reach "; if (verbroutine = &DoLookBehind): "behind "; else: "under "; "and take it." } case 4 { !Usage: (1,obj,4) - We find it inside a drawer. "You find a lead pipe inside one of the drawers, and you take it. Aside from that, the chest of drawers is empty." } } case rusty_keyhole { select val2 case 1 { !Usage: (1,obj,1) "The rusty lock has a large keyhole." } } case sail_arm { select val2 case 1 { !Usage: (1,obj,1) "The sail arm is similar to the port-side wing, although of a superficially different design. "; if (val1 in mast) { if (player in cargo) { ! Player is standing on the crates. "You can see how this end is caught on the top of the mast now. It should be easy to dislodge it." } else { ! Player is down below. "The far end is caught on the top of the mast-like post." } } elseif (val1 in starboard_slot) { "It now serves as a starboard wing." } elseif Contains(player,val1) { "You are dragging it with you." } else { "It has fallen to the deck." } } case 2 { !Usage: (1,obj,2) - Inventory description. "You are dragging one end of the sail arm."; } } !------------------------- ! OBJECTS FOUND IN PART 3 !------------------------- case fishnet { select val2 case 1 { !Description of the fishnet. if (val1 is moved) { "It's an old rope net, for catching fish."; if (location = riverbed, wharf, village) { if (val1 in panel_hooks) { " It hangs on hooks over the door-sized panel." } else { " Since the river has gone dry, it seems useless for its intended purpose." } } else { print newline !Nothing to add, when not outside. } } else { "A large, square fishing net is caught on the edge of the wharf." } } case 2 { !Initial description, when it hasn't been moved. print CArt(val1); " hangs "; if (location = wharf) { "over the side." } else { "down from the wharf." } } } case chain { select val2 case 1 { "A strong chain is "; if (val1.misc #1) { "linked to "; } else { "wrapped around "; } "the well's windlass. "; if Contains(player,chain) { "You are holding the other end." } else { "The other end "; if (val1.misc #1) { print "has been lowered into "; The(well); "." } else { if (AttachedCount(val1) > 1) { print "is "; val1.attached_desc; " "; print The(val1.attached_to #2); "." } else { "hangs free." } } } } } case rock1, rock2, rock3 { select val2 case 1 { !Usage: (1,obj,1) "It's a fist-sized rock. You see nothing remarkable about it." } case 2 { !Usage: (1,obj,2) ! This is printed when the third rock falls out of illusion. "\nA fist-sized rock falls from the illusion and lands on the ledge near your feet." } } !--------------------------- ! OBJECTS FOUND IN EPILOGUE !--------------------------- case apron { select val2 case 1 { !Usage: (1,obj,1) "It's a plain white apron, a little dirty now after doing the dishes."; if Contains(player,val1) and (val1 is worn) { " You are wearing it." } else { print newline !Nothing else needs to be added. } } } case umbrella { select val2 case 1 { !Usage: (1,obj,1) "It's a black umbrella, and it's currently closed." } case 2 { !Usage: (1,obj,2) - Trying to open the umbrella. "Best not. They say it's bad luck to open an umbrella indoors." } } case casserole { select val2 case 1 { !Usage: (1,obj,1) "Dale really likes it. Adam pretends to." } } case dishrag { select val2 case 1 { !Usage: (1,obj,1) "You just finished cleaning the dishes with that." } } case dishes { select val2 case 1 { !Usage: (1,obj,1) "The dishes are clean." } } }