!\--------------------------------------------------------------------------- SPURCHAR.HUG by Kent Tessman (c) 1995-1997 Characters (and character-specific, non-story events, etc.) for Spur ---------------------------------------------------------------------------\! player_character you "you" { long_desc { if not FindObject(mirror, location) "There's no mirror. You're probably lucky that way, judging by how lousy you feel--you can't look a whole lot better." else { if not xobject "(in the mirror)" "Shouldn't have done that. You look like hell." } } before { object DoShoot { "If you were prone to that sort of thing, you would've done that a long time ago. It's not like desperation is new to you or anything." } } is shootable } spur_character royheffer "Roy Heffer" { in mainstreet noun "heffer", "roy" adjective "roy" initial_desc "\nRoy Heffer is standing in front of you, his right hand dangling over his holster, fingers twitching nervously. \ Somewhere in the distance, someone strums an out-of-tune Spanish guitar." long_desc "You might want to spend less time staring, and more time thinking about the fact that you're in the middle of a gunfight." corpse royheffer_corpse before { object DoAsk, DoTalk, DoTell {"Would seem the time for talking is long past."} } after { object DoShoot { "You beat Roy to the trigger, shooting him through the heart just as he is aiming at yours. (And surprising yourself while you're at it that your old gun hit him--your aim must've been off.) Roy gasps, drops his gun, and falls to the ground, dead." move roysgun to mainstreet Deactivate(royheffer_gunfight) Activate(crowdgathering, 16) self is scored score = 1 ! Initialize Dan's script setscript[script(dan, 16)] = \ &CharWait, 0, &CharMove, n_obj, &CharWait, 0, &CharWait, 0, &CharWait, 0, &CharWait, 0, &CharMove, e_obj, &CharMove, w_obj, &CharMove, w_obj, &CharMove, e_obj, &CharMove, n_obj, &CharWait, 0, &CharWait, 0, &CharMove, s_obj, &CharMove, s_obj, &LoopScript, 0 } } is unfriendly } corpse_object royheffer_corpse "Roy Heffer's body" { body_of royheffer nouns "body", "corpse", "stiff" adjectives "roy", "heffer's", "rapidly", "cooling", "dead", "his", \ "roy's", "heffer" initial_desc "Roy Heffer's rapidly cooling body is here." short_desc "Roy Heffer's rapidly cooling body is here a foot or two to the side from where he fell, thanks to you and Old Dan." long_desc { "Dead as a doornail, as they say. In a few minutes he'll be too stiff to move."; if roysgun is not moved " Roy's gun is lying in the dirt where he dropped it when you shot him." print newline } before { object DoSearch, DoLookUnder, DoMove { if self is moved "You and Old Dan already moved Roy's corpse." else "Roy wasn't exactly a tiny guy. You're not having the best of luck moving him." } } } object crowd "gathering crowd" { article "a" nouns "crowd", "people", "bystanders", "witnesses", "voices", \ "eyewitnesses" adjective "gathering", "low" short_desc "A crowd is gathering around the corpse." long_desc "Most are looking at the body--although you don't escape their attention. More than one finger gets pointed at you." gunshot_reaction "The crowd backs out out of your way, regarding you warily." before { object DoListen { "\"Killed old Roy, huh?\", pointing at you.\n \"Yep. Shot him right here, flat on his dead ass.\"\n \"Y'know I always hated Roy. I'm glad he's dead.\"\n \"Well, I always hated him, too. But that dumb dead son of a bitch owed me five dollars.\"\n \"Hey...who is that, anyway?\" pointing at you again." } object DoAsk, DoTell, DoShow, DoTalk {"What, all of them?"} } after { object DoShoot { "You let go a shot, but it misses. Doesn't matter, anyway. Even if you'd hit somebody, the rest of the crowd would still swarm around and proceed to beat the ever-lovin' crap outta you, leaving you a bloody, lifeless pulp. Like they are at the moment, actually." endflag = 2 } } is static, shootable } spur_character littlejimmy "Little Jimmy" { in mainstreet_north noun "jimmy", "jim" adjective "little" long_desc { "A short, little nuisance, to be frank. He and his pipsqueak friend have almost bowled you down at least twice, chasing each other all over town. Jimmy looks "; if taffy in self "just as pleased as punch with the chunk of candy in his hand." else "considerably more subdued now that you've relieved him of his taffy." taffy is known } gunshot_reaction "Little Jimmy plugs his ears. \"Oooh. Too loud,\" he whines." short_desc { "Little Jimmy is here, "; if taffy in self "cheerfully chomping on some sticky taffy." else "looking sullen." taffy is known } list_contents { if taffy in self and children(self) = 1 return true ! already printed in short_desc elseif taffy in self taffy is already_listed "He's got"; ListObjects(self) } before { object DoShoot {"What sort of lowlife are you, exactly?"} } after { actor LittleJimmyRun { local loc, grabs loc = parent(self) if dollarbill in loc: grabs = dollarbill elseif quarter in loc: grabs = quarter elseif royswallet in loc: grabs = royswallet if grabs { if self in location {"\nLittle Jimmy sees "; The(grabs) " lying on the ground here and scoops it up."} move grabs to self } } xobject DoGet { if object = taffy {"Little Jimmy bawls as you grab his candy. \ \"Give me back my taffy! Gimme gimme!\" he hollers as he stamps his feet." self is scored PauseScript(self)} elseif object = dollarbill or object = quarter \ or object = royswallet { "\"No no no!\" Little Jimmy hollers, and holds tightly onto "; print The(object); "." } else: return false } xobject DoGive { if object = taffy {move taffy to self "\"Wheee! My taffy!\" Little Jimmy bellows before biting down for a mouthful of boiled sugar." ResumeScript(self)} elseif object = royswallet or object = dollarbill \ or object = quarter { if taffy not in self {"Little Jimmy sniffs. Takes "; The(object) " without even saying thank you."} else {"Little Jimmy takes "; The(object) ". \"Thank you!\" he hollers."} move object to self } elseif taffy not in self "Little Jimmy bawls: \"Taffy! Taffy! \ Gimme back my taffy!\"" else: return false } object DoAsk { if taffy not in self {"Little Jimmy bawls: \"Taffy! Taffy! \ Gimme back my taffy!\"" return true} select xobject case taffy "Little Jimmy sings: \"I love taffy! I love taffy! I love taffy! I love taffy!\"" case bobby "\"Bobby, Bobby, Bobby!\" Little Jimmy sings, not being very helpful." case else {"The little whippersnapper ignores you, not seeming to know much about "; print The(xobject); "."} } xobject DoShow { if object = taffy and taffy not in self "Little Jimmy cries: \"Gimme!\"" else: return false } object DoTell { if taffy not in self {"Little Jimmy bawls: \"Taffy! Taffy! \ Gimme back my taffy!\"" return true} else: return false } } } spur_character bobby "Bobby" { in mainstreet_north noun "bobby" long_desc "The other half of the menacing team that is Little Jimmy and Bobby. In another eighty years or so, they'd diagnose this kid as having hyperactivity/attention-deficit disorder. But at the moment, you just find him annoying." short_desc { local r r = random(3) select r case 3 "Bobby is here." case 2 "Bobby is here, jumping up and down in place." case 1 { "Bobby is here"; if littlejimmy in location ", running in circles around Little Jimmy"; print "." } case 0 "Bobby is here, slapping his hand against his open mouth and making pow-wow noises." } before { object DoShoot {"What sort of lowlife are you, exactly?"} parent(object) DoGet {"Bobby runs away from you before you can grab "; print The(object); "."} } after { xobject DoGive { if object = dollarbill or object = quarter \ or object = royswallet {"Bobby grabs "; print The(object); "."} else: return false } } ignore_response ! since he's "unfriendly" "Bobby ignores you as if he didn't even hear you." is known, unfriendly } event ! Bobby follows Little Jimmy { if bobby not in parent(littlejimmy) { if bobby in location {"\nBobby chases off after Little Jimmy." event_flag = true} elseif littlejimmy in location {"\nBobby comes running after Little Jimmy." event_flag = true} move bobby to parent(littlejimmy) } } global dan_lastlocation spur_character dan "Old Dan" ! is special once initial grumbling is done { in mainstreet_south nouns "dan", "daniel" adjectives "old", "town", "drunk" short_desc { "Old Dan, the town drunk, is here, standing in place and swaying slightly."; run self.misc print newline } misc { local r if royswallet is not moved or quarter in self or dollarbill in self or royswallet in self: return r = random(2) select r case 0: " He sorta scowls at you"; case 1: " He mutters something about cheap cowboys"; case 2: " He gives you grouchy look"; if dan not in location " as he goes"; print "." } ignore_response ! for making Dan uncooperative until { ! he gets paid (if wallet has been ! found) if royswallet is not moved or quarter in self or dollarbill in self or royswallet in self: return false elseif self is not special {"Old Dan grumbles something about being taken advantage of for free. Then he ignores you." self is special} else "Old Dan just ignores you." } order_response { select verbroutine case &DoGo "Old Dan is probably perfectly capable of figuring out on his own which way to swagger." case &DoHelp, &DoHelpChar { if verbroutine = &DoHelp or (verbroutine = \ &DoHelpChar and object = player) "Old Dan scratches his head. \"Help you? \ Whyncha tell me what you want me to do?\"" else "Old Dan looks puzzled. \"Think you got the wrong guy, hombre.\"" } case &DoMove, &DoSearch, &DoLookUnder { if not FindObject(object, location) {"Old Dan looks a little confused. \"I don't see that.\"" return true} elseif object ~= royheffer_corpse {"Old Dan looks skeptical. \"Don't really see the point of that, I hafta admit...\"" return true} elseif royheffer_corpse is moved {"\"Hell, partner,\" Old Dan says. \"We already did that.\"" return true} "Old Dan helps you heft Roy's body a foot or two to one side.\n" if royswallet is moved return false Acquire(player, royswallet) "Roy must've dropped his wallet in the dust when you plugged him. You take it. (What the hell--you already killed the guy.) Old Dan looks at you expectantly." self is unfriendly royheffer_corpse is moved SkipScript(self) } case else "Old Dan doesn't pay any particular attention to you." } long_desc "Old Dan looks like he's been on a bit of a bender. One that's lasted about twenty years, to be honest. His body looks like it's had the hell beaten out of it time and time again. But there's something about his eyes that--if they would just take a second to focus--seems like there's wisdom hidden somewhere deep in their murky depths." before { object DoSmell {"You take a whiff of Old Dan, and it's almost enough to make your head spin. Gee. Somebody's had a few."} } after { parent(object) DoGet { "\"F-f-ferget it, partner,\" Old Dan says, giving you a warning look and "; if object = bottle "swinging the bottle unsteadily away from you." else {"clutching onto "; The(object) " even more tightly."} } actor CharMove { if royswallet is moved and quarter not in self and dollarbill not in self and royswallet not in self and (dan in location or location = dan_lastlocation): { print "\n"; run self.misc } dan_lastlocation = parent(dan) if location = saloon and dan in location and grady is not dead: "\nGrady looks up from behind the bar as Old Dan wanders in. \"Out!\" he says, pointing toward the door." elseif location = generalstore and dan in location \ and lucille is not dead "\nLucille rolls her eyes as Dan comes in. \ \"What do you want now, old timer?\" she asks." elseif royheffer_corpse in location and dan in location: "\n(Old Dan has to make an effort to swagger around Roy's body.)" if bottle in parent(dan) and xxx in bottle { if player in location { "\nOld Dan's eyes light up like a kid at Christmas time when he sees the whiskey sitting here. He scoops up the bottle"; if pieceofcloth in bottle " and unplugs it, dropping the scrap of cloth"; print "." } move bottle to dan if pieceofcloth in bottle move pieceofcloth to parent(dan) } } object DoAsk { select xobject case gradys_building "\"Ah...Grady's. My home away from home. \ Actually, just my home. Grady's casa, mi casa.\"" case lucilles_building "\"Guess you could probably pick up whatever you needed there: bullets and other stuff. No whiskey, though.\"" case grady "\"Well, now...Grady, you see, he's looking for a little something to change his luck. \ He could also stand to be a little looser with his whiskey, if you ask me.\"" case sarah {"\"Well, that Sarah's a nice girl. Shame about her uncle, though.\"" bucky is known} case bucky "\"Well, you know, just the way he disappeared and all is a shame.\"" case royheffer "\"Once in a while Roy'd buy me drink or something. Didja have to go and kill him, of all people?\"" case stratford "\"Well, you know them rich folk--always have some kinda strange fancy that placates 'em.\" Old Dan seems especially proud of having used the word \"placates\"." case glenheffer "\"Glen Heffer? Well, now, Glen Heffer is another story. Wouldn't think twice I don't think 'bout shooting you in the back. Or the front.\"" case else "\"I just don't know anything about that, cowboy. How's about buying me a drink anyway?\"" } object DoTell { select xobject case xxx, xxxkeg { "Old Dan's eyes widen. \"Good Jesus, it's the motherlode.\"" SkipScript(self) } case else return false } xobject DoShow { select object case weed "\"It's a weed. So what? Only person who'd ever thing it wasn't a weed would be somebody desperate to believe it was something else.\"" case bottle { if xxx in bottle Perform(&DoShow, xxx, self) else "\"It's empty. Don't tease me.\"" } case xxx { "Old Dan's eyes widen. He grabs at the bottle, almost throwing himself off-\ balance. As he weaves: \"Gimme that! For the love of God, give me that!\"" SkipScript(self) } case else return false } xobject DoGive { select object case bottle { if xxx not in bottle "\"It's empty. Don't tease me.\"" else { "Before you can even get the hand holding the bottle halfway up, Old Dan grabs the bottle and takes a gigantic swig. His eyes open so wide you can see through his head. Then he rockets straight into orbit, disappearing into the stratosphere, leaving only a trail of blue smoke behind him." remove dan remove bottle CancelScript(dan) } } case weed "\"It's a weed. I don't want a weed.\"" case royswallet, quarter, dollarbill { if object = royswallet \ and dollarbill not in royswallet \ and quarter not in royswallet { if royswallet is not open "Old Dan opens the wallet and takes a peek inside. \ Then he looks at you. "; "\"What do I want an empty wallet for?\"" } else {"\"Well, much obliged, partner,\" Old Dan says as he takes "; print The(object); "." move object to dan self is not unfriendly} } case else return false } object DoShoot { if crowd in location {"You shoot Old Dan, sure--but you should've guessed that at least one person in the crowd would have a gun and not be willing to put up with you decreasing the population of Tumbleweed Flats one-by-one. Actually, six or seven people in the crowd have guns, and they use them on you." endflag = 2} else: return false } } corpse dan_corpse } corpse_object dan_corpse "Old Dan's dead body" { nouns "body", "corpse", "stiff" adjectives "dan's", "old", "drunk", "drunk's", "town", "dead", \ "dan" long_desc "Dead, to be sure. But you'd think with the amount of pickling Old Dan did to himself, his corpse out to last just about forever." body_of dan } spur_character argyle "Sheriff Argyle" { in sheriffsdept noun "argyle" adjective "sheriff" initial_desc { "Sheriff Argyle is sitting behind his desk, munching on a sandwich and reading \"Strange Western Lawkeeper Tales\"." self is moved } long_desc "Sheriff Argyle is the law in this here town; he's wearing the star to prove it. He looks at you warily." before { parent(object) DoGet { "Argyle holds "; The(object) " away from you. \"Easy there, leadbelly.\"" } } after { xobject DoGive { select object case sandwich "\"Um...well, you go ahead. Suddenly I'm not so hungry anymore.\"" case yourgun, roysgun { "Sheriff Argyle gladly accepts "; The(object) ", which he promptly points right at you. \ He pulls the trigger and--\n" if object.misc {"--BANG! You figure out the rest." endflag = 2} else "--Click! A really dumb look comes over his face. \"Oh, dadgummit...\" he mutters." } case else return false } xobject DoShow { select object case roysgun, royswallet "\"Er...right. And you got that from Roy Heffer. After you killed him, I presume.\"" case else return false } object DoAsk { select xobject case clown "\"It's a long story.\"" case royheffer "\"Well, I know a lot of folks didn't exactly like Roy, but I'm not sure that meant you had to go and nail him like that.\"" case glenheffer "\"Look...I don't want to get into any debates about that damned Heffer family. \ This town ain't exactly a gold mine, and we can't afford to be offending any of the wealthier members of our community.\"" case sandwich Perform(&DoGive, sandwich, self) case lastnight, gradys_building "\"Yeah, I heard you had a little bit of trouble last night in Grady's. Is this how you had to end up dealing with it? Plugging the guy?\"" case else "The Sheriff eyes you warily. \"Look, I'm not exactly sure what you're hoping to find out here. This have anything to do with why you smoked Roy?\"" } } corpse sheriff_corpse is known } corpse_object sheriff_corpse "Sheriff Argyle's dead body" { nouns "body", "corpse", "stiff" adjectives "sheriff", "sheriff's", "argyle's", "dead", "argyle" long_desc {"One dead sheriff."} body_of argyle } spur_character clown "clown" { found_in sheriffsdept article "the" nouns "prisoner", "clown" adjectives "sullen", "looking", "sullen-looking" initial_desc "Locked up in the jail cell is a sullen-looking clown." long_desc "The inventory of the jail cell: one sullen-looking clown, in full clown garb and makeup." ignore_response "\"I'm a clown. I'm in jail. Leave me alone.\"" order_response "\"I'm locked up in the hoosegow. What do you want from me?\"" after { object DoShoot { if argyle is not shot { "You pull the trigger and--BLAM!--pop the clown. Then Sheriff Argyle whips out his Smith and Wesson .38. \"Clown-killing asshole,\" he mutters, before wasting you." endflag = 2 } else: return false } } corpse clown_corpse is unfriendly } corpse_object clown_corpse "dead clown" { nouns "body", "corpse", "stiff" adjectives "dead", "clown's", "clown" long_desc {"One dead clown."} initial_desc {"There's a dead clown in the locked jail cell."} body_of clown } spur_character deputies "Sheriff's deputies" { article "the" nouns "deputies", "deputy" adjectives "sheriff's", "gang" is plural } spur_character grady "Grady" ! special following original "Planning on paying?" comment { in saloon noun "grady", "bartender", "barkeep", "owner", "fella", "fellow" adjective "saloon", "lanky" long_desc "Grady is the owner of this establishment and a lanky fella to boot. He's wearing a fancy embroidered vest and pants imported from Spain." short_desc "Grady is behind the bar." list_contents 1 ! don't show his inventory corpse gradyscorpse gunshot_reaction "Grady stares at you. \"What in the hell is the matter with you?\"" ignore_response { if grady is unfriendly "\"Leave me alone, you whiskey-thieving crook.\"" else "\"What are you bothering me for?\"" } before { parent(object) DoGet { if object = weed "\"Hey! You gave it to me!\" Grady says, holding tightly onto the weed." else: return false } } after { object DoAsk { select xobject case adrink, lastnight "\"Forget it, dustball. After that trouble you caused in here last night--winding up with wasting some guy on the street outside my place?--you ain't getting another drink in here.\"" case gradys_building "Grady gives you a wry look. \"Oh, I just love it here, don't you?\"" case yourbill "\"Just pay it--that's all I ask. You think I'm running some kinda charity for washed-\ up cowboys here? Guess again, partner. I got problems of my own.\"" case royheffer, lastnight "Grady shrugs. \"I'm glad you plugged him. Just don't spread the rumors of my joy around. After what that son of a bitch did to this town? Him and his cattle-\ stealing old man? Good goddamn riddance.\"" case gradysclothes "\"Like 'em? I paid some good money for these. Back when I had some. Whatever happened to my luck? Probably ran out just before I gambled everything I was worth and got stuck here in Hellville.\"" case gradysluck "\"Don't get me started. What, you think this is all I'm worth? Stranded in the dust capital of the world. To hell with you, then. I know I could get back on my feet, if I could just get a little boost, a little luck, you know?\"" case note "\"I don't know who could've put it there. \ I didn't see anybody go up to your room.\"" case horseshoe "\"Hasn't done me much good. Need a new lucky charm.\"" case lucille, lucilles_building "Grady shrugs. \"I try to keep my distance from old Lucille. Except when I need to buy something.\"" case dan "\"Old Dan?\" Grady shakes his head. \"When he's got money, he's my best customer. When he doesn't, like almost always, he's a pain in my ass.\"" case stratford "\"What do you wanna know, besides he could buy and sell both you and me? You trying to make me feel cheap? Worthless? Like a dadgummed failure?\" Grady starts to sulk. \"Doing a good job.\"" case ladder "\"It's just an old ladder. Game with the place. What a bonus. I got no use for it.\"" case shedobject, shedkey { if shedkey not in nothing "\"I already gave you the key.\"" elseif weed not in grady "\"What? The shed is locked. What about it? Leave me alone. What have you ever done for me?\"" else {"\"You want to get into that old shed? Nothing but junk in there,\" Grady says. But then he shrugs and digs out the key anyway, putting it down on the counter." move shedkey to location} } case else return false } object DoTell { if object = xxx or object = xxxkeg { "Grady's eyes narrow as you tell him about your exploits in his liquor stash. \"Why, you whiskey-stealing yellow belly...\" he mutters, then grabs the hotel ledger and conks you over the head with it. Everything gets dark for a while." if bottle in player and xxx in bottle remove bottle Activate(headache, 10) grady is unfriendly } else: return false } xobject DoShow { select object case bottle { if xxx not in bottle "\"An empty whiskey bottle--so what? I sold it to you last night. \ Except of course it was full then.\"" else { "Grady's eyes narrow when he sees the whiskey bottle full of his dear old Grandma Grady's Wicked XXX. \"Why, you whiskey-thieving yellow-\ belly...\" he mutters. Right before he grabs the bottle and clubs you over the skull with it. It shatters, and everything gets real ark..." "\n...until you wake up a good half-\ hour later with a lump on your head." remove bottle move brokenbottle to location Activate(headache, 10) grady is unfriendly } } case dollarbill "Grady gives you a helpless look. \"Oh, great. You're going to put that toward your bill? What am I supposed to think, that at least that's a start? Lucky me.\"" case weed { if weed.misc = 4 and weed is not special "\"Hey...a four-leaf clover. Where did you get that?\"" else "\"Nice weed.\"" } case note "Grady shrugs. \"You found it under your door? Hmmm. I don't know who could've put it there.\"" case else return false } xobject DoGive { select object case dollarbill "Grady refuses. \"You come back with some real money, 'fores I boot your dusty butt outta here.\"" case royswallet "Grady looks at you like you're crazy. \ \"You're gonna give me a dead man's wallet, right after you filled him full of lead, and I'm supposed to take it? Fat damn chance.\"" case weed { if weed.misc = 4 and weed is not special {"\"A four-leaf clover? For me? I ...well, I don't know what to say. \ Maybe this'll turn my luck around. \ Maybe I misjudged you.\" And with that, Grady takes the weed from you." Acquire(grady, weed)} else "\"No thanks. If I wanted a weed, I'd go pick my own. Now a four-leaf clover: there's a valuable plant.\"" } case else return false } } is known } corpse_object gradyscorpse "Grady's body" { body_of grady noun "bartender", "barkeep", "owner", "fella", "fellow", "body", \ "corpse", "stiff" adjective "saloon", "lanky", "grady's", "his", "dead", "grady" long_desc {"Looks just like Grady did, 'cept dead."} } event grady ! Grady does bartenderish things { local x if grady is not special ! one time only { "\nGrady studies you as you come in. \"Plannin' on paying your bill anytime soon?\"" grady is special } else { x = random(25) select x case 1 {"\nGrady pulls out a cloth and polishes up the bar a little." event_flag = true} case 2 {"\nGrady leafs through the hotel ledger." event_flag = true} } } spur_female_character lucille "Lucille" { in generalstore noun "lucille", "daughter", "lucy", "owner" adjective "lucille's" long_desc "Lucille is actually not the Lucille in \"Lucille's General Store\"--Lucille is Lucille's daughter. She's in her mid-fifties, skinny as a post, and exceptionally stern-looking." short_desc "Lucille herself is standing behind the counter." order_response "\"Go to hell, cowboy.\"" gunshot_reaction "Lucille points at the door. \"Out there, yahoo. I don't want no trouble in my mama's store.\"" after { object DoGive { if object = dollarbill or object = quarter "\"Hey, cowboy, I'll take your money. But you might just want to think about actually buying something.\"" else: return false } object DoAsk { select xobject case emptytaffybox, taffy {"\"You lnow what it is? It's that damned John Stratford came in here and bought up all my damned taffy. Rich old bastard. Now I got that irritating little kid what's-his-\ name in here crying for candy. Damned if I don't claw my own eyes out one of these days.\"" stratford is known} case stratford {"\"He's a pompous bastard. So rich and all, living in that mansion back in the trees, him and that whatever-her-name-is.\"" juanita is known} case juanita "\"Juanita? You'd be just as well off staying away from the both of them. \ Matching shotguns--that oughta be a hint.\"" case trailkit "\"What, that thing? Piece of crap is what it is. Don't even know why I've got it. \ But I ain't giving it away, if that's what you're thinking.\"" case lucilles_building "\"Whatever you want, I got it--if you're willing to pay, that is,\" Lucille says, giving you a look that says she doubts you could pay even if you wanted to." case gradys_building "\"Damned eyesore, that place. And all it does is get people a-causin' a ruckus.\"" case else { if xobject.type = storeitem "\"Well, you wanna buy it or not?\"" else return false } } } corpse lucillescorpse } corpse_object lucillescorpse "Lucille's body" { body_of lucille nouns "daughter", "corpse", "stiff", "body", "owner" adjective "lucille's", "dead", "her", "lucy", "lucille" long_desc {"Dead. But she still looks cranky."} is female } spur_female_character sarah "strangely familiar woman" { article "a" ! for the time being nouns "sarah", "woman", "lady" adjective "strangely", "familiar" initial_desc "A strangely familiar woman is standing off to one side, partly hidden in the shadows of the stable." long_desc { CThe(self) "'s long brown hair is tucked up under her wide-brimmed cowboy hat. There's a look of seriousness about her face, and strain, as if she's got a little bit too much to deal with right now." } gunshot_reaction "\"Just what do you think you're doing?\" Sarah asks. \ \"Have you lost your mind?\"" before { object DoKiss { "She pushes you away. \"Hey, hayseed. I don't know what you think you've got coming for helping me out, but if that's it, you can just forget it.\"" } } after { object DoShoot { "Nice move. Guess there was really no way to know that she's actually about three times as fast on the draw as you are. That's the biggest reason why you're the one who gets shot. To be honest, you don't even manage to get your finger on the trigger before she shoots you. Sure, one of her bullets misses, but it's the two in the heart that really count." endflag = 2 } object DoAsk { select xobject case bucky {"\"He may be a little strange, but, hey, he's my uncle, and he's dear to me--and it's not just because he's got a lot of money. \ But I'm not going to let that rotten snake Glen Heffer force me into coming up with ransom money--Uncle Bucky wouldn't want that.\"" glenheffer is known} case glenheffer "\"I guess he can add kidnapper and blackmailer to his list of accomplishments, right after thief, murderer, and son-of-a-\ bitch.\"" case gradys_building "\"I don't usually go in there--Last night was an exception. I was looking for a hired gun, I guess...someone to help me out.\"" case royheffer {"\"Last night in Grady's? Last night Roy knew exactly what I was talking about, about Uncle Bucky. Today? Well, today I'm glad you shot him.\"" bucky is known} case grady "\"Hmmm. I don't really know him that well. Doesn't seem like the happiest guy, though, does he?\"" case largeduane "\"You want to mess with him? I don't want to mess with him. We're going to have to figure something out.\"" case else return false } xobject DoShow { select object case bottle { if xxx in bottle "\"Oh, great. So what, you're going to drink that and get all fired up for being a hero? Lucky me.\"" else "\"Great. That's what it took to convince you to help me out last night? I guess beggars can't be choosers.\"" } case else: return false } xobject DoGive { select object case bottle { if xxx in bottle "\"No thanks. Although God knows we could both probably use it.\" \ She takes a look at you. Has second thoughts. \"Well, maybe not both of us.\"" else "\"Why would I want an empty whiskey bottle?\"" } case else: return false } } } spur_character stratford "John Stratford" ! special when he's gummed up with taffy { in stratfordsporch noun "stratford" adjective "john" short_desc { if self is unfriendly "John Stratford is here, looking mad as hell." else "John Stratford is sitting in his rocking chair, smoking his pipe. His trusty shotgun is across his lap." } long_desc { if self is unfriendly "If you wanted to stand around staring at John Stratford, you should've done it \Ibefore\i he got so interested in killing you." else "John Stratford is around fifty or so. He's got a healthy shock of white hair atop his head. But other than that, his eyes look kinda mean. And that goes none too well with the shotgun on his lap. Puts you on your guard to say the least. You warily watch Stratford warily watching you as he puffs on his pipe." } gunshot_reaction {"\"Easy with that firestick, Tumbleweed,\" Stratford mutters"; if self is special " through a mouthful of sticky taffy"; print "."} list_contents { if stratford is special "\nStratford's mouth and hands are coated with sugary goo from the sticky taffy you gave him." } before { object DoAsk { if self is special "Stratford's mouth is too gummed-up with sticky taffy to talk." else: return false } object DoGive { if self is special "Stratford is a little too gummed-up with sticky taffy to be doing much in the way of interacting at the moment." else: return false } parent(object) DoGet { if object = taffy { "Stratford pulls "; The(object) " out of your reach. The warning look in his eye and the shotgun in his lap make you think twice." } else: return false } } after { object DoAsk { select xobject case taffy "\"Oh, I love that taffy.\"" case juanita "\"My dear wife Juanita. I do love her. \ She is everything a man could want. And one wickedly good shot, to boot.\"" else: return false } xobject DoGive { if object = taffy {"Stratford looks surprised. \"Why, thank you,\" he says. \"Who told you that I do so love this taffy?\" He munches on the candy." move taffy to self self is special} else: return false } xobject DoShow { if object = taffy "\"Hey! Now I do know good taffy, and I do believe that is some!\"" else: return false } object DoShoot { "Blam! Stratford looks surprised as hell as you shoot him. He pitches forward onto his knees, then tumbles forward onto his face. He lies that way on the ground at your feet.\n" "Now. What happens next is your introduction to the lovely Juanita Stratford, devoted wife of the (recently) late John Stratford. She comes racing out of the house with her shotgun--exactly the same make and model as his, how romantic--lines up the barrel between you and her, and starts trigger-pulling. Love, baby. And you got in its way." endflag = 2 } } } spur_female_character juanita "Juanita Stratford" { noun "wife" adjectives "juanita", "june", "stratford's", "stratford" ! "stratford" is an adjective here instead of a noun, in order to ! avoid the "Which Stratford do you mean?" question } spur_character largeduane "Large Duane" ! special once he's on the prowl, post-fire { in frontofhouse found_in topofbank noun "duane" adjectives "large", "big" short_desc { "Large Duane is here, looking large and mean." "\nLarge Duane looks up as you come near. His eyes narrow, and he quickly draws his gun and sends you off to Cowboy Heaven. What the hell were you thinking, stomping on up to him like that? Doesn't matter." endflag = 2 } long_desc "Large Duane is not a friendly looking fellow. If he sees you, he'll kill you. If you had anything to your name, you could bet it all on that fact. It's also the best argument there is not to mess with him." before { object DoShoot { if location = parent(self) {"Listen, Quickdraw--here's some advice for the future: you're not exactly the fastest gun in the West, and you shouldn't be going around getting into gunfights with guys like Large Duane who've been doing it since they were six. Although as far as the future goes, you don't have much of one, seeing as..." endflag = 2} else {"Trying to shoot Large Duane from so far away isn't such a hot idea seeing as what a lousy shot you are. The same, however, is not true for Large Duane, whose attention you manage to attract. He draws, aims, and hits you right between the eyes." endflag = 2} } object { if verbroutine ~= &DoLook "Large Duane isn't here. You should be happy about that." else: return false } } order_response { if self not in location { object = self run self.before } else: return false } } daemon largeduane_daemon {} event largeduane_daemon { "\nBad move, by the way, strolling on up to Large Duane like this. \ Ain't much you've ever done to make him like you--although you probably guessed that by the way he grabs you by both feet and starts to beat you like a dusty blanket against the nearest piece of solid scenery." "\n\B*** YOU ARE DEAD (OR AT LEAST REALLY, REALLY INCAPACITATED) ***\b" endflag = 3 } spur_character bucky "Uncle Bucky" { in livingroom nouns "bucky", "buck", "man" adjective "uncle", "old" short_desc { if self in backyard "Uncle Bucky is here, looking stunned and bewildered." elseif self in sarahshorse "Uncle Bucky is in the saddle behind her, holding on for dear life." else: "Uncle Bucky is here." } long_desc "A short, rather rotund little fella, with a big ole straw hat on his noggin. He tends to look around with sort of a stunned look on his face. That and a big smile--the kind that just says: \"Howdy!\" His hands are bound behind his back by some coarse rope." before { object DoPush { if glenheffer in location return false else { "You give Uncle Bucky a friendly shove, and he tumbles over the edge of the steep bank.\n" "\"What are you doing?\" Sarah exclaims, as she rushes forward. Then she stops. \ \"Oh,\" she says. You peek over the edge beside her. Uncle Bucky is sitting square in the middle of Sarah's saddle, some thirty feet or more below.\n" "Sarah shrugs. \"Here goes.\" Then she hops over the edge and follows Bucky down." move sarah to sarahshorse move bucky to sarahshorse bucky is hidden Deactivate(sarahfollow_daemon) } } } after { object DoShoot { "Your bullet does hit Uncle Bucky, but it only wings him. He sort of just spins around a hundred and eighty degrees and hollers: \"Yow!\"" "\nSarah, on the other hand, is another story." "\nShe shakes her head and mutters, \"You sure are one stupid cowboy.\" Then she shoots you and puts you out of your misery." endflag = 2 } object DoAsk { select xobject case sarah "\"Oh, Sarah's a nice girl. I mean, comin' to rescue me and all. Oh--and you, too. \ Thanks a lot there, pardner.\"" case glenheffer "\"Well, now, I don't really have any idea what his problem was. Seemed all riled about something or another.\"" case else return false } object DoUntie { Perform(&DoUntie, buckyrope) } } is hidden ! sometimes hidden, sometimes not, ! since his description is sometimes ! taken care of by events or other ! descriptions } spur_character glenheffer "Glen Heffer" { in livingroom nouns "heffer" adjective "old", "man", "glen" long_desc "Big, burly Glen Heffer. You realize just how close the father-son resemblance is, especially one feature in particular: mean. Heffer scowls back at you." ignore_response "He doesn't say anything. Just snarls at you." order_response "\"Eat lead,\" he mutters, and brandishes his gun in your direction." short_desc { if self in backyard "Glen Heffer is here, alternately waving his pistol menacingly back and forth between you and Uncle Bucky, whom he's got by the collar." else: return false } after { object DoShoot { Deactivate(glenheffer_fuse) "You take aim at Old Man Heffer and--\n\n --miss! Your bullet comes close enough to rustle old Glen's hair, but it misses just the same. \ Unluckily for you, Glen himself is unruffled enough to return the favor and send some lead in your direction. Three shots.\n\n But he misses, too." "\nGlen's bullets send you dancing out of the way, almost diving into the dirt. And then Sarah lifts up her pistol and cleanly puts Glen Heffer away. \ His body hits the ground with a thud. Uncle Bucky is still standing there, hands bound, face white, and eyes wide. \"Sarah, honey...\" he says." "\nSarah turns to look at you. \"Now what?\" she asks. \"Are you going to get us out of here?\"" score = 10 bucky is not hidden } } corpse glenheffer_corpse is hidden ! originally, since description is ! taken care of by an event is unfriendly } corpse_object glenheffer_corpse "Glen Heffer's body" { body_of glenheffer nouns "body", "corpse", "stiff" adjectives "glen", "heffer's", "dead", "his", "old", \ "man", "glen's", "dead", "heffer" long_desc "You peer long and hard at old man Heffer's body, but he doesn't move. Not even a twitch. Definitely dead." }