!---------------------------------------------------------------------------- !*************************************************** PC AND NPC DESCRIPTIONS !---------------------------------------------------------------------------- routine PrintText08(val1,val2) { select val1 case swordsman { !Usage: (8,self,1) "You are the traveling swordsman; the strong and silent stranger; the wandering vanquisher of villainy. Damsels swoon for you. Good men respect and envy you. Scoundrels learn to fear you. Even so, you are but a rumor throughout the land." } case maiden { select val2 case 1 { !Usage: (8,self,1) "You are the motherly maiden; at least, that's what Dale called you, this morning. Motherly? Without a doubt. Maiden? well, you aren't as young as you used to be." if Contains(player,apron) and (apron is worn) { "\nYou are wearing an apron." } } case 2 { !Usage: (8,self,2) "You can only hear the rain." } } case widow { select val2 case 1 { !Usage: (8,npc,1) !Full description "The old woman has long gray hair, pale and wrinkled skin, and her seemingly spurious gray eyes see all." } case 2 { !Usage: (8,npc,2) !She is either in "house" or gone altogether, so it's safe to !describe her as sitting in a rocking chair. print CArt(self); " sits rocking in a wooden chair in the middle of the short, flat porch."; } case 3 { !Usage: (8,npc,3) !She notices the sheath (with a pendant dangling on it). " Her somewhat glassy eyes take notice of the sword at your side. Her blank expression turns timorous, then hopeful. She yanks her head toward the southern gate, then points that way." } case 4 { !Usage: (8,npc,4) !She already noticed sheath, and now simply points. if (girl in location) { " She points at the girl." } else { " She points again to the "; if (girl in orchard) { print s_obj.name; } if (girl in barn) { print e_obj.name; } if (girl in hill) { print n_obj.name; } ". What is she trying to tell you? Her daughter... is "; if (girl in orchard) { "in the orchard?" } if (girl in barn) { "in the barn?" } if (girl in hill) { "on the hill?" } } } case 5 { !Usage: (8,npc,5) " She points frantically at the girl, who stands motionless near the porch. Her eyes are wild and pleading. Then, with surprising haste, she rises from the chair and heads into the house. In several seconds, the empty rocking chair comes to a stop. The girl remains frozen, just staring at you." } case widow_eyes { !Usage: (8,npc,component) "Her gray eyes are deceptively vacant. She stares at nothing." } case widow_hair { !Usage: (8,npc,component) "Her hair is long, gray, and thinned by age." } case widow_skin { !Usage: (8,npc,component) "Her skin is pale and wrinkled. She looks to be more than one hundred years old." } } case girl { select val2 case 1 { !Usage: (8,npc,1) !Full description if (val1.misc #1) { if (bees.misc #1) { "She stands a short distance away, facing your direction. Bees swarm around her, forming a thick black cloak. Glimpses of her yellow dress under the swarm make her seem somewhat beelike; an almost-human bumblebee. She watches you." } else { "She stands facing you, staring with dark eyes behind limp black bangs. Her features seem artificial, as if drawn in ash. She is human, yet... not quite." } } else { "She is turned the other way, with her head against the tree. She seems young. Her hair is like a black river against the yellow of her dress." } } case 2 { !Usage: (8,npc,2) !Short initial description (listing for the first time). "At one side of the orchard, near the fence, a girl in a long yellow gown stands leaning with her forehead pressed against a tree trunk. Long black hair falls flat against her back." indent "She is tapping the tree with one hand, gently and rhythmically, and she is facing away from you. She hasn't yet noticed you." } case 3 { !Usage: (8,npc,3) !Beginning of the cutscene, when initially approaching girl. !Just very brief, generic text to say we don't get a chance. !It should be able to go for whatever we attempt to do, !even in relation to the tree (if not to the girl herself). if (verbroutine ~= &DoApproach) { ! In beta, players were trying to "approach" and "go to" ! the girl. In second beta, this is now a DoApproach verb, ! and it's trapped in the girl.before. But, in that case, ! there is no need to say "you don't get the chance." "You don't get the chance. "; !Split, so it's dict entry. } "When you approach, the girl turns. "; } case 4 { !Usage: (8,npc,4) ! The girl is here, and she already noticed us. ! This is the standard short_desc handling. if (bees.found_in = cellar) { !The girl is here, but no bees. ! Argh, no, as much as I *want* to use this descript, I ! shouldn't. It's just *too* much like The Ring. Argh. ! I noticed the similarity earlier, and I guess I need ! to really branch away from that. All I'd have to do is ! describe her hair as wet, and it'd be like The Ring. ! That wasn't what I had in mind at all, when I did it. !! "The girl stands facing you. Her head droops, and her !! features are hidden behind her long black hair." "The girl is here, and she stands facing you. She is completely still." } elseif (bees.found_in = location) { !Bees are already here. "The girl stands here, facing you. Black bees swarm around her, like a living, writhing cloak. She seems powerful now. The bees are at her command." } else { !The bees fly to the girl. "The girl stands here, completely still until she notices your approach. She spreads her arms at an upward angle, tilts her head back, and opens her mouth impossibly wide. In moments, the swarm "; if (location = barn) { "comes back through gaps in the wall. "; } else { "appears from beyond the barn. "; } "The bees target her, rushing and flowing like water around her. Like a living cloak, the swarm is at her command." bees.misc #1 = true !The bees are now around her. girl_moving.misc #3 = true !Keep her here a round. } } case 5 { !Usage: (8,npc,5) !Player does a "look behind girl" while she's at the tree. "You see the apple tree on which she is tapping." } case 6 { !Usage: (8,npc,6) !Player tries to go down to the cellar while girl is here. "The girl seems to smile when you stoop down to the cellar's entrance. You get the clear impression that she would happily trap you down there, so you decide against taking the risk." } case 7 { !Usage: (8,npc,7) !This is what happens when the girl is trapped in the barn. !The player tries to make an aggressive movement toward her. !Since she's trapped, we know the NW exit is blocked, and !since you have to get the wheel from the cellar to do that, !we know that the bees have to be here. So, no checking it. if (verbroutine = &DoThrowAt) { print "You throw "; The(object); " at "; print The(girl); ", but she sidesteps quickly. "; } if (girl.misc #2 <= 3) { !Long version -- before player has done it too much. if (verbroutine ~= &DoThrowAt) { rnd = random(3) select rnd case 1: "At your aggressive movement, "; case 2: "When she notices your aggressive action, "; case 3: "Without waiting for you to do that, "; "the girl "; rnd = random(3) select rnd case 1: "throws her arms forward. "; case 2: "tilts her head toward you. "; case 3: "moves away more quickly than you can react. "; } "Half her swarm breaks off and "; rnd = random(3) select rnd case 1: "speeds toward you. "; case 2: "dives your way. "; case 3: "darts at you. "; "You step away, dodging the attack as best you can, but suffer a few minor stings nonetheless. After a moment, the girl "; rnd = random(3) select rnd case 1: "recalls the bees, "; case 2: "commands their return, "; case 3: "orders them back, "; "and they regroup with the others around her."; } else { !Short version, to avoid excessive mad-lib style text. !And also because the player will get the general idea !now, just from a short description. rnd = random(3) select rnd case 1 { "The girl sends half her swarm, for a moment, to ward you back."; } case 2 { "At the girl's command, her bees race toward you. You move to safety, and they return."; } case 3 { "A wave of black bees breaks off, menaces you, and returns to the girl."; } } !Okay, and now determine if we need to give clues about !giving her the pendant, which is the proper action. if Contains(player,pendant) and (girl.misc #2 > 1) { PrintMessage(8,val1,10) !She stares at sheath/pendant. } elseif (pendant in location) { if (girl.misc #2 <= 3) { print newline !For when this part should stand alone. print "" !And another blank line afterwards. } else { print " "; !Provide a leading space. } "The girl stares at the pendant on the ground, but she seems too trepidacious to let down her guard and pick it up." } else { print newline !Nothing else to be added to it. } } case 8 { !Usage: (8,npc,8) ! Trying to give/show something to the girl she doesn't want. ! The "object" is what we tried to give/show. xobject = girl. ! Note that this can sometimes be done even if she's not ! trapped, so be careful with the wording and usage of it. if (verbroutine = &DoGive) { print "She"; } else { print CThe(girl); } if (object = sword) { !This will *probably* make players think they're supposed !to kill her, but I have to react to this somehow. And if !they do try to kill her, there are clues about pendant. " seems scared of your weapon. She backs away." } elseif (object = pendant) { !When it's the pendant, this is only called on "show" !attempts. If she's not trapped and we try to give it !to her, she runs. If she is trapped, she takes it. " watches you, then the pendant. She seems hopeful, concerned, or maybe angry. Her inhuman expression is hard to read." } elseif (verbroutine = &DoGive) { rnd = random(3) select rnd case 1: " backs away, unwilling to take that from you."; case 2: " lowers her head, and shakes it slowly."; case 3: " waves one arm, as if dismissing the offer."; if (bees in location) { !They should be here, if she's trapped, since you !have to let them out to accomplish one of the !tasks needed to trap her, but we'll check, in case. " The bees spread out from the girl, but she orders them back after a moment."; } PrintMessage(8,girl,10) } else { print " expresses no interest in "; if (object.type = direction) { print "that." } else { print The(object); "." } } } case 9 { !Usage: (8,npc,9) !Trying to corner or trap the girl. if (location = barn) { rnd = get_girl_movement(location, girl_moving.misc #2) if (rnd) { "The only way to do that is to block the three exits." } else { "She is already cornered. The exits are blocked." } } else { "It might be possible to corner her inside the barn. She can easily evade you out here." } } case 10 { !Usage: (8,npc,10) !Gradually prompts the player about what she wants. rnd = (girl.misc #2) + (girl.misc #3) !Clue counting. if (rnd <= 3): " The girl stares at your sheath." elseif (rnd <= 5): " She seems fixated on your sheath." elseif (rnd = 6): " Is she staring at your sheath, or the pendant hanging from it?" elseif (rnd <= 7): " The girl is staring at the pendant." elseif (rnd <= 10): " The girl is fascinated by the pendant." elseif (rnd <= 13): " The girl reaches for the pendant, but then backs away." else: " The girl clearly wants the heart-shaped pendant." } case 11 { !Usage: (8,npc,11) !We either gave the pendant to the girl, or we threw it !at her. She takes it, and this is the beginning of the !cutscene that will lead us into part 2. Woohooo! if (verbroutine = &DoThrowAt) { "The girl reaches out a hand to catch the pendant. "; } else { "Cautiously, the girl comes forward to accept "; print The(pendant); " from you. She stares at it while stepping back. "; } } case 12 { !Usage: (8,npc,12) !Beginning of the cutscene, when throwing stuff at tree. !We begin with a linebreak, due to describe throw prior. "\nThe girl turns quickly. "; } !Components of the girl also fall under this condition. case girl_hair { !Usage: (8,npc,obj) "The girl's hair is long and black." } case girl_face { !Usage: (8,npc,obj) if (girl.misc #1) { "Her face is white and smooth, but her features seem artificial, contrived. Limp black bangs extend to her piercing dark eyes." } else { "She's turned away. You can't see her face." } } case girl_dress { !Usage: (8,npc,obj) "The girl wears a long yellow dress"; if (bees.found_in = location) { ", but it's only visible in spots as the black swarm circles and crawls around her." } else { "." !End the line - nothing else to say. } } } case captain { select val2 case 1 { !Usage: (8,npc,1) select deck.misc #1 case 0 { ! He's initially on the deck when we first arrive. "The captain is pale with fear; not exactly the image of bravery you might have expected from a man in his position. "; if (captain.misc #1) { !We've already looked at him at least once here. "He motions again toward the spiders, urging you to "; if (count_spiders < 3) { "finish what you've started and help fight them back. "; } else { "attack. "; } "The dread in his pleading eyes strikes you as genuine, but he seems more concerned for the cargo than at the danger posed by the spiders." } else { "For the moment, he's looking back at you. With deliberate and exaggerated motions, he points to your sword, makes a sweeping arc with his arms (hands clasped together), then points at the nearest of the spiders." captain.misc #1 = true !Flag that he saw us once. } } !He's gone from sight during all of state 1. !case 1 { !} case 2 { ! He's in the cabin, and we're airborne again. "The captain remains pale, even now that the threat of huge, vicious spiders is far behind. His clothes are faded to a light gray. His hair is thinning, but he has a full white beard. He is slim and tall." if (mast.misc #1) { "\nHe points out, toward the mast, then makes a downward hand motion. As far as you can tell, he wants the rails lowered." } } case 3 { ! He's out on the deck, and we're landed at a windmill. if (captain.misc #6) { !We've revealed him to be a ghost. Now, if the player !will catch on, or just thing it was a weird thing to !happen instead, I don't know. But, here it is. "The captain is entirely white, and a little wispy. He seems bereaved now." } else { !We haven't yet dropped the sail arm down on him. "The captain is tall and slim. He remains unnaturally pale, even now. His thinning hair is white, his beard is white, and even his clothes seem faded to a near-white." } } case 4 { "The captain stands near the back of the cabin, showing newfound resolve. He's smiling, although his face has become slightly transparent. He gives you a confident nod, then motions toward the helm." } } case 2 { !Usage: (8,npc,2) !Shown as part of room listing, when the captain is on deck. select deck.misc #1 case 0 { ! The captain is only here at the beginning... "The captain of the barge stands near the entrance to the cabin, at the aft end. You see no evidence of any other crew. His attempts to fight away the spiders prove ineffective. This is perhaps fortunate for him, since the spiders have thus far ignored his presence entirely." } case 3 { ! And he comes back when we land at the windmill. "The captain of the barge "; if (mast.misc #1) { if InList(starboard_wing, found_on, deck) { "stands at the starboard-side rails, trying to get a better look at the wing."; } else { "stands here looking hopeful."; } } else { if InList(starboard_wing, found_on, deck) { "is stooped near the starboard-side wing slot, inspecting the damage to the wing itself."; } elseif (player in cargo) { "stands on the deck below, "; if (parchment in deck) { "looking down at the parchment."; captain.misc #5 = true !He saw it. } else { "looking up at you."; } } elseif (sail_arm in mast) { ! Because the sail arm won't be listed in the room ! room description since it's not "technically" ! here, we'll use this opportunity to mention it. "stands near the center mast, inspecting the sail arm. The same end that was, until now, wedged into a notch on the windmill's main axle has become stuck at the top of the post."; } elseif (parchment in location) { !The parchment is here for him to see. "is stooped over the parchment, looking it over."; captain.misc #5 = true !He saw it at least once. } elseif (captain.misc #6) { !No parchment, but he's still here, and sad. "glances at the starboard wing slot, then stares ahead, apparently lost in thought." } else { !Else, he's just standing here look at windmill. "stands near the starboard side, looking out at the windmill."; } } if (captain.misc #3) { print newline !End the line if we already saw this. } else { captain.misc #3 = true " He looks over to you for a moment, then turns back to his inspection." } } } case 3 { !Usage: (8,npc,3) !Shown as part of room listing, when the captain is in cabin. !Note that just being in the cabin advances us to at least 2. select deck.misc #1 case 2 { !The captain is here when the barge flies the second time. if (mast.misc #1) { ! The player needs to go back and lower the rails. if (captain.misc #2) { "The captain stands near the helm. He points forward once again, toward the mast out on the deck, and makes lowering motions with his hands." } else { captain.misc #2 = true !We've seen him do this now. "The captain seems increasingly concerned by the barge's unsteady flight. When he gets your attention again, he points out to the mast and makes a lowering motion with his hands. The rails are blocking his view." AddScore(38) !Return to cabin after raise rails. } } else { !Advance to the next part: landing at the windmill. "The captain stands near the helm. "; PrintMessage(7,8) !The cutscene to the next part. deck.misc #1 = 3 !Flag that we're now at the windmill. windmill.found_at #3 = deck !Can see it from the deck. move captain to deck !Yep, he went back outside. } } case 4 { !And again, when it flies after leaving the windmill. if (captain.misc #7) { "The captain lifts an arm and points slowly at the helm's wheel again. Without knowing just how inexperienced you are in nautical navigation, he seems willing and waiting for your assistance, one last time." } else { "The captain is near the back of the cabin, standing tall and still. He seems resolute now, but tired, as though he is on the cusp of his own journey. He nods to you, then makes a motion toward the helm." captain.misc #7 = true !We saw him motion. } } } case 4 { !Usage: (8,npc,4) !Continuation of trying to enter cabin or steps "Can't Go" msg. "Frantically, he points backward at the approaching spiders, then forward at the central pillar. He makes lifting motions with his arms, then ducks back into the cabin." } case 5 { !Usage: (8,npc,5) "\nThrough the forward window of the cabin, you can see the captain looking more and more concerned." } case 6 { !Usage: (8,npc,6) !Player attempts physical contact, which, of course, won't work. if (captain.misc #6) { !We've seen him be ghostly, but we'll never come out and !say for sure he's a ghost. Players will probably know. "He has no substance. You can't "; } else { !Not yet revealed as a ghost. print "You find it strangely impossible to "; } print VerbWord; " him." } case captain_hair { !Usage: (8,npc,component) "The captain's hair is a thinning gray-white." } case captain_beard { !Usage: (8,npc,component) "The captain has a full white beard." } case captain_clothes { !Usage: (8,npc,component) "The captain's clothes are faded to a light gray." } } case tyrant { select val2 case 1 { !Usage: (8,npc,1) !Full description "The tyrant is short and furry, with pointed ears and hands that seem more like claws. A cold intelligence shines behind his yellow, inhuman eyes. He brandishes a short sword.\n" "He is clearly evil, and extremely old." } case 2 { !Usage: (8,npc,2) - Short description when in the chamber. "The tyrant brandishes a short sword. He seems focused on engaging you in combat." } case 3 { !Usage: (8,npc,3) - Can't open when tyrant is attacking. "You would have to turn your back on the tyrant to do that. At the moment, you can only focus on the battle." } case 4 { !Usage: (8,npc,4) - Like message 3, but shorter. "The tyrant demands your attention at the moment." } case 5 { !Usage: (8,npc,5) - When the tyrant runs from riverbed. "The tyrant stands near one of the long pilings. Instead of using the ladder, he climbs with amazing speed up the long post, onto the wharf. You can see him for a moment, as he races toward the village, out of the riverbed." } case 6 { !Usage: (8,npc,6) - When the tyrant enters the well. "The tyrant runs up the well's stone slab, jumps to the chain, and slides quickly down and out of view." } case 7 { !Usage: (8,npc,7) - The tyrant runs back into the chamber. "The tyrant is already to the ornate door at the west end, which closes just after he slips back into his chamber." } case 8 { !Usage: (8,npc,8) - Shorter version of (7,12,1) message. "The tyrant seems in no danger of growing exhausted from the chase. Again, he lifts the panel to the north, backing out without looking away from you."; if (fishnet in panel_hooks) { print newline !Because he gets caught. } else { print " The panel closes, and he's gone." } } case 9 { !Usage: (8,npc,9) - Throw something at the tyrant. print "The tyrant easily avoids "; The(object); "."; print MatchPlural(object,"It","They"); " fall"; print MatchSubject(object); " to the "; print location.ground_name; "." } case 10 { !Usage: (8,npc,10) - Trying to "trap" the tyrant. "You will have to defeat him in combat, before you can "; print VerbWord; " him." } case tyrant_eyes { !Usage: (8,npc,component) "His yellow eyes seem cold and intelligent; inhuman." } case tyrant_ears { !Usage: (8,npc,component) "His furry ears are gray and pointed." } case tyrant_hands { !Usage: (8,npc,component) "His hands are sharp, like claws." } case tyrant_fur { !Usage: (8,npc,component) "He has short gray fur, from head to toe. He doesn't look quite human." } case tyrant_sword { !Usage: (8,npc,component) "The tyrant's sword is shorter than yours, as it must be, given his diminutive stature." } } }