!---------------------------------------------------------------------------- !*************************** RESPONSES TRYING TO CUT, STAB, AND BLOCK THINGS !---------------------------------------------------------------------------- routine PrintText05(val1,val2) { select val1 case 1 { !Usage: (5,1) !Player is trying to cut or stab himself. "Even in your most frenzied of battles, you couldn't "; print VerbWord; " yourself by accident. To do it intentionally is unthinkable." } case 2 { select val2 case 1 { !Usage: (5,2,1) ! Player is trying to block, but nobody is attacking. "You aren't being attacked." } case 2 { !Usage: (5,2,2) ! Player is trying to fight or kill something that's not alive. print "You can't "; VerbWord; " something that isn't alive." } } case 3 { !Usage: (5,3,obj) !Player is trying to block something that's not attacking. print CThe(val2); MatchPlural(val2,"isn't","aren't"); if (val2 is not living) { print " alive."; MatchPlural(val2,"It's","They're"); " certainly not"; } " attacking you."; if (val2 = bees, bull, red_spider, black_spider, gray_spider) { print " At least, not at the moment." } else { print newline !Nothing alse to be added. } } case 4 { !Usage: (5,4,obj) !Player is blocking an attacker. It doesn't really matter. print CThe(player); " do "; player.pronouns #3; " best to "; print "block the attacks of "; The(val2); "." } case 5 { !Usage: (5,5) !Cutting down the grass, to find the pendant. "With practiced ease, you slice through the tall blades of grass. Your motions are fluid, precise, flawless: across to the left; up and back; low now, sweeping wide. In moments, the patch is gone.\n" "What remains, visible now in the shorter grass, is a pendant on a chain." } case 6 { !Usage: (5,6) !Slicing the rope off the cellar hatch. "Slice. Chop. Two quick motions, and the rope falls away from the hatch's handle. A lengthy portion of good rope remains on the ground beside the hatch." } case 7 { select val2 case 1 { !Usage: (5,7,1) !Trying to cut the rope, if we have tied it to something. "You were careful to make secure knots that aren't impossible to untie. You have no reason to cut the rope any further." } case 2 { !Usage: (5,7,2) !Trying to cut the rope, after there is no reason to do so. "The rope may be useful at its present length, but any further slicing will ruin it." } } case 8 { !Usage: (5,8,obj) !Player is dodging an attacker. It doesn't really matter. print CThe(player); " do "; player.pronouns #3; " best to "; print "dodge the attacks of "; The(val2); "." } case 9 { print CThe(south_gate); " is too sturdy. "; select val2 case 1 { !Usage: (5,9,1) !Trying to break down the southern gate with the sword. "You manage to notch it up quite a bit, but "; } case 2 { !Usage: (5,9,2) !Trying to break down the gate without benefit of the sword. "You manage to shake it some, but "; } if (south_gate is locked) { "the only way you're likely to get it open is with a key." } elseif (south_gate is not open) { "simply opening it would be far easier." } else { "it accomplishes nothing." } } case 10 { !Some general "intro" bits for cutting. We print the text and !then expect something more to be said in another area, after. select val2 case 1 { !Usage: (5,10,1) !Example: "You manage a shallow notch on the tree." rnd = random(12) !Helps spread the randomness out. select rnd case 1,5,9: "You manage "; case 2,6,10: "With ease, you cut "; case 3,7,11: "With a practiced stroke, you make "; case 4,8,12: "With perfect form, you slice "; print "a shallow notch on "; The(object); ". "; !No linefeed, because we'll be saying more after it. } } case 11 { !Usage: (5,11,obj) !Player is kicking or hitting something that isn't damaged. "You land a solid "; if (verbroutine = &DoKick): "kick "; else: "punch "; print "to "; The(val2); ", but nothing happens." } case 12 { !Usage: (5,12) !Player is hacking away at the contraption. if (contraption is broken) { "With well-placed swipes and jabs, you inflict further damage to "; print The(contraption); "." } else { "Unsure of its purpose but convinced it can't be good, you begin hacking away at the contraption. Whack. It's not quite like anything you've seen before. Slice. It does smell a little like cider, though. Smash. Why would such a contraption be hidden away so far underground? Whack. After a few well-placed swipes and jabs, the contraption is thoroughly damaged." } } case 13 { !When we're attacking the tapestries. select val2 case 1 { !Usage: (5,13,1) ! Player tries to hack up the tapestry. Doesn't work, though. "After several clean slices, the "; if (object = other_tapestries) { "tapestries remain undamaged. They "; } else { "tapestry remains undamaged. It "; } "must be protected by an enchantment, and things of that nature are beyond your abilities." } case 2 { !Usage: (5,13,2) ! Player successfully cuts up one of the tapestries. print "You make downward slices in "; The(object); ". "; print CArt(sword); " rips it to ribbons." } case 3 { !Usage: (5,13,3) ! Player tries to re-cut an already-cut tapestry. print CThe(object); " is already cut to ribbons. Damaging it further seems unnecessary." } } case 14 { !Usage: (5,14,npc) !Player is trying to "cut" or "stab" an NPC with the sword. !This will go for unanticipated npcs only, since for the !most part I'll try to allow lots of attempts to do that. print CArt(sword); " would probably make short work of "; print The(val2); ". "; if (val2 is not unfriendly) { print capital val2.pronouns #1; print MatchPlural(val2, "doesn't","don't"); " deserve that." } else { "Even so, that is traditionally your last resort." } } case 15 { !Usage: (5,15,verbroutine) !Player is trying to CUT or STAB the net. if (trawl_net.misc #1) { "You already considered cutting yourself free, and determined it to be a very bad idea." } else { select val2 case &DoStab { "You stab at the net, but your blade hits mostly air. Since the ground is so far below, it's probably for the best." } case else { "You take a swing at the net, then glance down. Bad idea. If you did cut yourself free, you would fall to your death." } } } case 16 { !Attacking spiders on the barge deck. select val2 case 1 { !Usage: (5,16,1) - kicking has no effect. select verbroutine case &DoKick { "It's difficult to kick the spider, when it stands on long, hairy, multi-jointed legs. You do your best, managing only to knock it off balance. This is a task more suited to your expert swordsmanship." } case &DoPunch { print "You take a swing at the spider, and find its hairy hide surprisingly tough. It seems unfazed by your unarmed attack." } } case 2 { ! Normal results of attacking spiders. First two can be ! defeated this way, but the third one (gray) can't. !Usage: (5,16,2) select attacker case red_spider { "You swing your sword back and forth, stepping forward, stabbing, blocking, fighting. The red spider loses ground, backing closer and closer to the edge.\n" "Finally, it steps too far over the deck's short lip, and it falls over the side.\n" "That's one down. Many of the others have gathered crates and are perched at the edges, waiting for the barge to come lower. At this rate of descent, they won't have long to wait." } case black_spider { "The spider is unprepared for such a fierce attack. It does its best to knock your sword away, and in fact offers a better defense than the red one.\n" "The barge shakes a little, and this gives you a quick advantage to press the attack further.\n" "Across, slice. Down, stab. Around, parry, but step inward. You force the spider over the edge, and in a moment, it too plummets to the fleeting ground below.\n" "The barge is low now, gliding "; print game_fore_dir.name; "ward over flat land. As spiders begin to leap away with cargo crates, the captain races into the cabin.\n" "Perhaps now he's ready to take the helm. You can only guess." } case gray_spider { if (spider_stunned) { !No need for a daemon mesasge to say much the same. spider_attack.misc #1 = true !Skip daemon message once. "You land hit after hit, but the spider is a tough old beast. "; rnd = random(3) select rnd case 1 { "It stands at one edge of the barge, looking in serious danger of falling over." } case 2 { "It seems unaware that one slip could send it falling over the edge, after the others." } case 3 { "It scoots to the side, gaining no ground, and perching very closely to the edge." } } else { select attacker.misc #1 case 0: "You swing and slice, but the spider is too fast. "; case 1: "You attack again, and the spider counters. "; case 2: "Again, you attack without a specific goal. "; case 3: "Without a single body part in mind, you attack. "; case 4: "General attacks seem ineffective against it. "; case 5: "Aiming at the spider in general doesn't work. "; case else { "Ignoring its eyes, legs, and mandibles for the moment, you launch another futile attack against the spider. "; } rnd = random(5) select rnd !Mention the various parts of the spider. case 1 { if (spider_legs.misc #1) { "It seems a little shaken after your attack on its legs. Its attention seems divided." } else { "It knocks you back with its powerful front legs. "; "You recover quickly."; } } case 2 { if (spider_legs.misc #1) { "Even after the attack on its legs, it manages to evade your assault."; } else { "It turns and trips you with its back legs. "; "You recover quickly."; } } case 3 { if (mandibles.misc #1) { "Even with a leg raised to protect its mandibles from further attack, it evades you."; } else { "It snaps at you with its fierce mandibles."; } } case 4 { if (spider_eyes.misc #1) { "Even with one leg raised to protect its beady little eyes, it moves quickly enough to avoid your assault."; } else { "Its beady red eyes shimmer, as if mocking you."; } } case 5: "It backs away, easily dodging your blade."; print newline !Unless we need to say more afterwards. } } } case 3 { !Usage: (5,16,3) ! Right after hitting all 3 gray spider parts, and it's stunned. "The spider backs toward one edge of the barge. It seems fully focused on defense now, and it may be unaware of just how precarious its position has become." } case 4 { !Usage: (5,16,4) ! Player is trying to hit the spiders with something else. print "With "; the(xobject); "? That won't help. Nothing less powerful than your broadsword will work against these things." } case spider_eyes { !Usage: (5,16,obj) !When we attack the gray boss spider's eyes. if (val2.misc #1) { print CThe(gray_spider); " is carefully blocking any further attempt to attack its eyes." } else { "You slice and stab at the spider's glassy red eyes. Your attempts fall short as the spider scoots and scurries, but it's now forced to divide its attention even further." AddScore(33) !Attacked the gray spider's eyes. } } case spider_legs { !Usage: (5,16,obj) !When we attack the gray boss spider's legs. if (val2.misc #1) { print CThe(gray_spider); " is quick to lift its legs as you attempt to attack again." } else { print "You launch an attack against "; The(gray_spider); "'s long, hairy legs. It moves and dodges as best it can, but a few strikes land true. It takes a more cautions stance now." AddScore(32) !Attacked the gray spider's legs. } } case mandibles { !Usage: (5,16,obj) !When we attack the gray boss spider's mandibles. if (val2.misc #1) { print CThe(gray_spider); " moves side to side, working hard to avoid any further injuries to its mandibles." } else { print "You strike out at "; The(gray_spider); "'s pincer-like mandibles. Although you manage only a couple superficial cuts, it scurries back with a front leg raised to block its maw." AddScore(34) !Attacked the gray spider's mandibles. } } } case 17 { !Trying to beat the door down in some way. select val2 case 1 { !Usage: (5,17,1) - kicking has no effect. if (mill_door.misc #4) { "Another kick is equally futile. "; } else { "You put considerable force behind the kick, but the door stands firm. "; } } case 2 { !Usage: (5,17,2) - hitting/breaking has no effect. if (mill_door.misc #3) { "You try again, but the door still holds. "; } else { "You hit the door, but nothing happens. You even try forcing it open with a solid slam from your shoulder, but it stands firm. "; } } case 3 { !Usage: (5,17,3) - Can't break it down with the pipe. if (mill_door.misc #2): "Again, you "; else: "You "; "hit the mill's wooden door with "; print The(pipe); ". You manage to "; if (mill_door.misc #2): "add a few more dents, "; else: "make a few crescent-shaped dents, "; "but the door stands firm. "; } case 1,2,3 { if (xobject = pipe) and (rusty_lock in mill_latch) { !I'll give the players a pretty clear clue, but I don't !want "hit door with pipe" to automatically assume Latch. "It might work better against the latch." } else { "It seems to open outward. You can't "; if (xobject = pipe): "break "; else: "knock "; "it down." } } case 4 { !Usage: (5,17,4) - Hit the door with the sword. if (mill_door.misc #1) { "You only succeed in notching it up a bit more." } else { "You slice and stab a few notches into the door." } } case 5 { !Usage: (5,17,5) - Hit the latch with the pipe. !This is when lock is on it, so we succeed in our goal. "You smash the door's latch with "; print The(pipe); ". It breaks enough that the rusty lock falls off, leaving the door unlocked." } case 6 { !Usage: (5,17,6) - The latch is broken, or already. if (mill_latch is broken) { "The door's latch is already broken." } else { "You smash the door's latch, effectively breaking it." } } case 7 { !Usage: (5,17,7) - Trying to cut or stab the latch. "You strike the door's latch with "; print art(sword); ". You feel the jarring vibration of metal against metal, but "; if (mill_latch is broken) { "the latch is already broken." } else { print art(sword); " isn't suited to breaking "; if (rusty_lock in mill_latch): "the lock off "; "the latch." } } case 8 { !Usage: (5,17,8) - Solved it by prying with the lead pipe. "You work the lead pipe in behind the lock, then pull up. The latch bends and breaks, and the lock falls to the ground." } } case 18 { !Attacking the sail arms. select val2 case 1 { !Usage: (5,18,1) - blades are stopped. Attacking them. "Holding a stone step with one hand, you slice a few notches into the nearest sail arm." } case 2 { !Usage: (5,18,2) - We cut the cords and a sail falls. !This is what it's all been leading up to, after all. "Here between the wall and the sail arms, you have very little room to move. Someone of lesser skill might have dropped his blade or fumbled at the axle, but you make swift and precise slices that cut deeply into the cords.\n" "One sail arm sags, then falls from its notch. You watch as it rides the air, falling south." ! We'll give a blank line, so the player sees important part. "\nIt falls toward the barge's deck and appears to catch on the mast-like post." } } case 19 { !Trying to fight the windmill. We'll see how it goes. select val2 case 1 { !Usage: (5,19,1) print CThe(windmill); " is bigger than you. It might win." } } case 20 { !Messages when in battle with the tyrant. select val2 case 1 { !Usage: (5,20,1) - Player failed to dodge the tyrant. "\nThe tyrant slams into your "; rnd = random(4) select rnd case 1: "upper leg, "; case 2: "midsection, "; case 3: "knee, "; case 4: "side, "; "throwing you off balance when you fail to dodge him." } case 2 { !Usage: (5,20,2) - Player failed to block the tyrant. "\nThe tyrant "; rnd = random(6) select rnd case 1: "nicks your leg with the edge of his sword "; case 2: "almost cuts your hand "; case 3: "narrowly misses your leg "; case 4: "makes a shallow cut in your side "; case 5: "stabs at your knee "; case 6: "takes a stab at your arm "; "when you fail to block him." } case 3 { !Usage: (5,20,3) - Player failed to attack the tyrant. "\nThe tyrant scoots away "; rnd = random(4) select rnd case 1: "and turns from a safe distance, "; case 2: "to safety "; case 3: "from your blade "; case 4: "in retreat, "; "when you fail to attack him." } case 4 { !Usage: (5,20,4) - Tyrant is going to lunge. "\nHe lunges toward you again, hoping to throw you off balance." } case 5 { ! Usage: (5,20,5) - Tyrant is going to attack. ! If here, then the player successfully dodged. "\nHe "; rnd = random(5) select rnd case 1: "points his sword at you, sneers, and moves forward." case 2: "leans in, preparing to attack." case 3: "slices the air, then steps toward you." case 4 { "hops to the table, then bounds toward you with his sword held ahead." } case 5 { "flips over, gets behind you, and prepares to strike." } } case 6 { !Usage: (5,20,6) - Tyrant is going to back. ! If here, then the player successfully blocked. "\nHe backs away, dropping his guard for just a moment." } case 7 { !Usage: (5,20,7) - Player successfully dodges. "Even though the tyrant is slower now, he's still quite fast. Just in time, you manage to dodge out of the way." } case 8 { !Usage: (5,20,8) - Player successfully blocks. "You bring your sword up in time to block the tyrant's frenzied attack." } case 9 { !Usage: (5,20,9) - Player successfully attacks. "You slice down and across before the tyrant can bound out of reach. He falls to the floor, wounded and surprised." } case 10 { !Usage: (5,20,10) - Player tried to dodge, but T was attacking. "You attempt to dodge, but the tyrant is already attacking." } case 11 { !Usage: (5,20,11) - Player tried to dodge, but T was retreating. "You dodge, but needlessly. The tyrant is already retreating." } case 12 { !Usage: (5,20,12) - Player tried to block, but T was charging. "You raise your sword to block, but the tyrant is rushing you." } case 13 { !Usage: (5,20,13) - Player tried to block, but T was retreating. "You block an attack that never comes. The tyrant is moving beyond your reach." } case 14 { !Usage: (5,20,14) - Player tried to attack, but T was charging. if (verbroutine = &DoStab): "You stab at "; else: "You swing your sword at "; "the tyrant, but he makes for a small target as he rushes at you." } case 15 { !Usage: (5,20,15) - Player tried to attack, but T was attacking. "You move in to attack, but the tyrant is faster. He blocks with his own sword, then moves into position." } case 16 { !Usage: (5,20,16) - Trying to punch or kick the tyrant. print "You make a move to "; VerbWord; " "; The(tyrant); ", but it doesn't work. He's too fast." } case 17 { !Usage: (5,20,17) - Player tries hitting with something else. "That won't work as well as your sword." } } case 21 { !Additional and miscellaneous attacking/cutting messages. select val2 case 1 { !Usage: (5,21,1) print "You idly slice at one of "; The(dead_trees); "." } case 2 { !Usage: (5,21,2) if (saplings.misc #1 = 0) { ! We haven't yet watered the saplings. print "No, "; The(saplings); " seem to be among the few things left alive in this forsaken village." } else { ! Yes, we've watered the saplings. print "Something about "; The(saplings); " makes you stay your blade. They remain alive, while most everything else in this forsaken village is dry and dead." } } case 3 { !Usage: (5,21,3) if (river_panel.misc #1) { !We've already cut at the panel once. "You slice and stab a little more, but it just isn't possible to cut through it." } else { !We've not yet cut at the panel. "You bring you sword slicing down against the panel, again and again. You notch the wood in a few places, but it's too thick and too sturdy to cut through." } } } }