!\--------------------------------------------------------------------------- DUFFY.HUG Jake Duffy's character for Guilty Bastards by Kent Tessman (c) 1998 Including: DoAnalyze ---------------------------------------------------------------------------\! attribute analyzed ! for objects/evidence property on_errand ! specific to Duffy ! Duffy is special once the little aside about his silent comings and ! goings has been printed character duffy "Duffy" { inherits NPC nouns "jake", "duffy" adjective "jake" suspended false on_errand 0 parse_rank 1 ! prefer to sgtduffy short_desc "Jake Duffy is standing handily by." long_desc "Jake Duffy is in his thirties, solidly built, his shaved-bald head covered by a hat and his eyes hidden behind sunglasses." graphic IMAGES1, "duffy" order_response { if verbroutine = &DoAnalyze Perform(&DoAnalyze, object, xobject) elseif verbroutine = &DoArrest "Duffy looks stuck for a second. \"Um. I don't know if you forgot or what...but I'm not a cop.\"" else return false } before { object DoAsk { select xobject case cindy, murder "\"It's a real shame what happened. A real shame. If there's anything I can do to help out, let me know.\"" case sgtduffy "By the way Duffy rolls his eyes you can tell his brother probably isn't his favorite topic. \"Well, you probably know he's retired. He's a good guy, but I just wish he'd shut up sometimes, you know? Always going on about his big cases...the \IRobner\i murder in Conneticut, the \ILinder\i case here in L.A., how he still gets a Christmas card from the \IAshcrofts\i for helping catch Veronica Ashcroft's killer, blah-blah-blah. You'd think he'd solved those cases himself instead of just helping out the detective, pretty much like I'm helping you. At least his name gives me the juice to get into the police crime lab.\"" case hatandglasses "\"You like them? I figured they were appropriate since you're sneaking around and all.\"" case else { if xobject is analyzed { if &xobject.analysis { "Duffy repeats the results from his trip to the lab: \""; run xobject.analysis print "\"" } else "Duffy shrugs. \"The lab didn't find anything.\"" } else return false } } } is known } component hatandglasses "hat and sunglasses" { part_of duffy nouns "hat", "glasses", "sunglasses", "fedora" adjectives "dark", "fedora-style", "wrap-around" article "a" long_desc "Duffy's hat is fedora-style; his sunglasses are wrap-around and very dark." is plural, known before { object DoGet {"You'll have to take that off Duffy first."} } } compound "sgt", "." object sgtduffy "Sergeant Duffy" { nouns "duffy" adjective "sergeant", "sgt." is known } !---------------------------------------------------------------------------- routine DoAnalyze { ! duffy.suspended can be either a simple true value or the object ! number of a character who's in the room with you keeping Duffy ! from showing up ! if duffy.suspended { "Now's not the time to be calling Jake Duffy in to help you."; if duffy.suspended > 1 print " Not with "; The(duffy.suspended); " here." else print newline return false } ! duffy.on_errand holds the object number of the object Duffy ! has been sent to the lab with ! elseif duffy.on_errand { "Jake Duffy has already gone to the lab with "; print The(duffy.on_errand); "." return false } if duffy not in location { "Jake Duffy appears out of nowhere. "; if duffy is not special "(As long as you've known him, he's had this habit of popping up whenever and wherever needed. It sort of runs in the family.) "; duffy is special "He "; } else "Duffy "; if object is living { "looks at you skeptically. \"Well, you know, I don't think it's that kind of lab.\"" return true } elseif object is static { print "looks at "; The(object); " and scratches his head. \"I don't think I'm going to be able to get that to the lab to have them look at it,\" he says." move duffy to location Activate(duffy_fuse, 2) return true } elseif object is analyzed { "frowns. \"You already had me take that to the lab,\" he says. "; if &xobject.analysis { print "\""; run xobject.analysis print "\"" } else "\"They didn't find anything special.\"" return true } print "takes "; The(object); if object in player " from you. "; else print ". "; "\"I'll run"; MatchPlural(object, "this", "these") " to the police lab and see what they find,\" he says, and disappears again." PrintFootnote(18) move object to duffy remove duffy duffy.on_errand = object Activate(duffy_fuse, 18) ! 15 + 2 + 1 extra turn return true } routine DoSummon { if object ~= duffy "And how do you plan to do that?" ! Steal the DoAnalyze reasons elseif duffy.suspended or duffy.on_errand return DoAnalyze elseif duffy in location "Jake Duffy is right here." else { "Jake Duffy appears out of nowhere, almost as if he knew ahead of time you were looking for him. \"Hey. What's up?\" he asks." move duffy to location Activate(duffy_fuse, 2) return true } } fuse duffy_fuse {} event in duffy_fuse { local n, obj if duffy.suspended return n = self.tick select n case 2 { event_flag = true move duffy to location if not duffy.on_errand break obj = duffy.on_errand "\nJake Duffy appears. "; if Acquire(player, obj) print "He hands you "; The(obj); ". "; else print "He puts down "; The(obj); ". "; if not &obj.analysis "\"The lab said they weren't able to find anything of interest,\" he tells you." else { print "\""; run obj.analysis print "\"" } obj is analyzed duffy.on_errand = 0 } case 0 { if duffy in location { event_flag = true "\n\"Let me know if you need anything else,\" Duffy says, and disappears again, quietly as ever." } remove duffy } }