!**************************************************************************** !****(CHARACTER BASE CLASSES)************************************************ !**************************************************************************** class all_npcs { !Misc values are used for different purposes by NPC's. ! #1 = Which cup (if any) normally belongs to this player. ! For RuhneBoy, this refers to DIRECTION he is moving. ! #2 = How much to drink each time (1=sip, 6=all of it). ! #3 = How many daemon runs before taking the next drink. ! #4 = daemon runs remaining before drink (set equal to #3) ! #5 = references to the Daemon drinking script itself. ! #6 = Maximum Alcohol Tolerance (100, 300, etc) 0=NonDrinker ! #7 = Current Alcohol Consumption (ranges from 0 to MaxAlc) ! #8 = Stop Drinking when consumption reaches this number. misc 0,0,0,0,0,0,0,0 } class human { before { object DoHit { "Be nice." return true } object DoListen { print capital self.pronoun; " say"; MatchSubject(self); " nothing." return true } } } class male_human { inherits character inherits all_npcs inherits human } class female_human { inherits female_character inherits all_npcs inherits human } class incender { is not special !When special, they are not "flaming" at all. before { object DoKiss,DoSearch,DoHit,DoTouch,DoPush,DoPull,DoMove { if (self is not special) { PrintMsgChapter1(4,18,0) : return true } else { return false } } } } class male_incender { inherits character inherits all_npcs inherits incender } class female_incender { inherits female_character inherits all_npcs inherits incender } !**************************************************************************** !****(CHARACTERS)************************************************************ !**************************************************************************** !---------------------------------------------------------------------------- male_human kerthal "Kerthal" { nouns "father", "dad", "kerthal", "daroan", "man" adjective "my", "father", "kerthal" exclude_from_all { return true } parse_rank 1 long_desc { if (parent(kerthal) = eastbridge) { PrintMsgIntro(14,Kerthal,1) } if (parent(kerthal) = eastofbridge) { PrintMsgIntro(14,Kerthal,3) !PrintMsgIntro(99) } } short_desc { if (parent(kerthal) = eastbridge) { "Your father, Kerthal Daroan, is here." } if (parent(kerthal) = eastofbridge) { PrintMsgIntro(14,Kerthal,2) } } before { object DoListen { if (chapter = 0) { if (SkipStones > 6) { PrintMsgIntro(12,5,2) : return true } else { !No need to check chapter here... he's only in #1 !Unless, of course, I decide to make a ghost of him. PrintMsgIntro(16,self) } return true !We gave a legit message } return false !Default message } object DoTalk { if (SkipStones > 6) AND (Chapter = 0) { PrintMsgIntro(12,5,1) : return true } return false } object DoSearch { if (SkipStones > 6) { PrintMsgIntro(18,1) return true } else { return false } } } after { object DoAsk { !Otherwise, Kerthal has nothing to say about that. if (SkipStones > 6) AND (Chapter = 0) PrintMsgIntro(12,5) else PrintMsgIntro(12,2) return true } } } !---------------------------------------------------------------------------- male_human jerrus "Jerrus" { nouns "uncle", "jerrus", "daroan", "man" adjective "my", "uncle", "jerrus" exclude_from_all { return true } !He drinks 1 sip every 5 turns parse_rank 1 misc jerruscup, 1, 5, 5, JerrusDrink, 500, 0, 150 long_desc { if (parent(self) = eastbridge) { PrintMsgIntro(14,Jerrus,1) } elseif (parent(self) = eastofbridge) { PrintMsgIntro(14,Jerrus,2) } elseif (Chapter=1) { PrintMsgChapter1(2,self) } } short_desc { if (parent(self) = eastbridge) { "Your uncle, Jerrus Daroan, is here." } if (parent(self) = eastofbridge) { PrintMsgIntro(14,Jerrus,2) } if (parent(self) = pavcenter) { !To simplify pavcenter movement, check if room desc was seen. if (roomdesc_seen) { "Your uncle, Jerrus Daroan, sits reclining on the first seat to the west." } else { "Uncle Jerrus sits on the first seat to the west." } } } before { object DoListen { if (chapter = 0) { PrintMsgIntro(16,self) : return true } if (chapter = 1) { PrintMsgChapter1(13,self) : return true } return false !Default message } object DoTalk { if (SkipStones > 6) AND (Chapter = 0) { PrintMsgIntro(12,4) return true } return false } } after { object DoAsk { !Otherwise, Jerrus has nothing to say about that. if (Chapter = 0) { if (SkipStones > 6) { PrintMsgIntro(12,0) } else { PrintMsgIntro(12,3) } return true } return false } } } !---------------------------------------------------------------------------- male_human thyras "Thyras" { nouns "brother", "thyras", "daroan" adjective "my", "brother", "thyras" exclude_from_all { return true } !He drinks the whole thing. misc thyrascup, 6, 1, 1, ThyrasDrink, 300, 0, 300 parse_rank 1 long_desc { if (parent(self) = westbridge) { PrintMsgIntro(14,self,1) if (SkipStones = 0) { SkipStones = 1 } } elseif (parent(self) = eastofbridge) { PrintMsgIntro(14,self,2) } elseif (Chapter=1) { PrintMsgChapter1(2,self) } elseif (Chapter=2) { PrintMsgChapter2(9,2) } elseif (Chapter=3) { if (airlock.misc >= 2) { PrintMsgChapter3(11,2,3) } else { PrintMsgChapter3(11,1) } } } short_desc { if (parent(thyras) = westbridge) { "Your brother, Thyras Daroan, stands here by the south railing." } elseif (parent(thyras) = eastofbridge) { PrintMsgIntro(14,Thyras,3) } elseif (parent(thyras) = pavcenter) { if (roomdesc_seen) { "Your brother, Thyras Daroan, assumes a casual posture on the second seat to the west." } else { "Thyras sits alone on the second seat to the west." } } elseif (Chapter = 2) { print "A haze-hidden Thyras stands atop "; (WhichWasLastBldg).name; print ", peering down from the edge." } elseif (Chapter = 3) { PrintMsgChapter3(11,0) } } before { xobject DoYell { if (Chapter=2) { !Thyras as xobject means we yelled ABOUT him. YellAboutThyras : return true } else { return false } } object DoListen { if (Chapter = 0) { PrintMsgIntro(16,self) : return true } if (chapter = 1) { PrintMsgChapter1(13,self) : return true } if (Chapter = 3) { PrintMsgChapter3(11,2,2) : return true } return false !Default message } object DoTalk { if (SkipStones > 6) AND (Chapter = 0) { PrintMsgIntro(12,4) : return true } if (Chapter = 2) { PrintMsgChapter2(9,3) : return true } if (Chapter = 3) { PrintMsgChapter3(11,2,2) : return true } return false !Continue as normal } object DoAsk,DoTell,DoHello { if (Chapter = 2) { PrintMsgChapter2(9,3) : return true } if (Chapter = 3) { PrintMsgChapter3(11,2,2) : return true } return false !Continue as normal } object DoYell { !Thyras as Object means we yelled AT him. if (Chapter=2) { PrintMsgChapter2(9,4) : return true } elseif (Chapter=3) { PrintMsgChapter3(11,2,2) : return true } else { return false } } object DoHit { if (Chapter = 2) { PrintMsgChapter2(9,5) } elseif (Chapter = 3) and (airlock.misc >= 2) { !Here we go! now we're fighting back. PrintMsgChapter3(11,3) } else { "Although he has given you plenty of reason to want to "; print word[1]; " him through the course of your lives, it hasn't quite come to that yet." } return true } xobject DoGive { if (object = alcotox) { if (Chapter = 1) { "You start a motion to offer the alcotox tablet to your brother, but then you think better of it. Why give Thyras the advantage, when this could be an opportunity to dent his ego?" : return true } } if (Chapter = 2) { PrintMsgChapter2(9,5) : return true } return false !Default handling for everything else. } } after { object DoAsk { !Otherwise, Thyras has nothing to say about that. if (SkipStones > 6) AND (Chapter = 0) PrintMsgIntro(12,0) else PrintMsgIntro(12,1) return true } } } !---------------------------------------------------------------------------- female_human shevra "Shevra" { nouns "wife", "aunt", "shevra", "daroan", "lans", "lans-daroan", "woman" adjective "aunt", "shevra", "lans", "jerrus's", "uncle's" is female exclude_from_all { return true } !She drinks 1 sip every 10 turns misc shevracup, 1, 10, 10, ShevraDrink, 400, 0, 100 long_desc { if (chapter = 1) { PrintMsgChapter1(2,self) } if (chapter = 4) { PrintMsgCutscene(7,1) } } short_desc { if (parent(self) = pavcenter) { if (roomdesc_seen) { "His wife, your aunt Shevra Lans-Daroan, sits beside him." } else { "Aunt Shevra sits beside him." } } if (parent(self) = courtyard_winter) { "Aunt Shevra sits on a bench nearby." } } before { object DoAsk { if (xobject = finalmessage) or \ (xobject = textstring and IsEqual(textstring.misc,"message")) { PrintMsgCutscene(99) : return true } return false !Default message for anything else. } } } !---------------------------------------------------------------------------- female_human yarrel "Yarrel" { nouns "yarrel", "yarrol", "sabrunen", "woman", "administrator" adjective "yarrel", "research" is female exclude_from_all { return true } !She drinks half of it every 2 turns misc yarrelcup, 3, 2, 2, YarrelDrink, 650, 0, 350 long_desc { PrintMsgChapter1(2,self) } short_desc { "Yarrel Sabrunen, your uncle's top research administrator, stands here near the petrifus tree, drawing long puffs on a tobastick." } before { xobject DoGive { if (object = alcotox) { "Yarrel holds up a hand, trailing smoke from the tobastick wedged between her first two fingers, passing it in a \"no thank you\" gesture. \"You can keep it,\" she says." return true } return false !Default handling for everything else. } object DoAsk { if (xobject = alcotox) { if (alcotox is special) { if (alcotox is not moved) { "\"If you find it, keep it,\" she replies. \"It's around here somewhere. It probably rolled behind something. "; } else { "\"You already found it,\" she replies. "; } "It won't raise your tolerance, but you should notice a decrease in the effects of alcohol after swallowing it.\"" return true !suppress default message } } return false !Default messaging. } } } !---------------------------------------------------------------------------- male_incender ruhneboy "boy" { nouns "","boy", "child", "kid" !Reserves noun #1 for "incender" adjectives "","young" !Reserve adjective #1 for "incender" to be added. article "the" is special, hidden !Starts off WITHOUT flame. misc 0 !Moving Direction long_desc { if (self is special) { if (location is not interior) { PrintMsgChapter2(8,1) } else { PrintMsgChapter2(8,2) } } else { PrintMsgChapter2(8,0) } } short_desc { if (ruhnestory>=11) { !He's following behind. PrintMsgChapter2(6,5,2) } else { if (location is interior) { "A small boy stands leaning against the railing of one lift platform, breathing deeply in the aftermath of too much sobbing. "; } else { "A small boy stands here, no longer crying, no longer moving through the dust storm. "; } if (consolecard in ruhneboy) { "He holds a small plastone card in one outstretched hand, offering it to you." } else { print "" } !End the line } } before { object DoAsk,DoTell,DoTalk,DoHello { if (location is not interior) { !Always a storm, can't talk to him outside. PrintMsgChapter2(6,3) return true } return false } object DoYell { if (location is not interior) and (ruhnestory >= 10) { PrintMsgChapter2(1,18) : return true } return false !Default message instead. } } after { object DoAsk { if (xobject = consolecard) { PrintMsgChapter2(6,4,xobject) if (consolecard.misc = 1) { consolecard.misc = 2 !Flag that we asked him. ruhnestory = 11 !And then let the storm slacken. ruhneboy is not special !He's no longer flameless. ruhneboy.adjectives #1 = "incender" ruhneboy.nouns #1 = "incender" ruhneboy.name = "incender boy" } return true } return false !for default messages } xobject DoShow { if (object = consolecard) { if (location is interior) { Perform(&DoAsk,xobject,object) } else { PrintMsgChapter2(1,15) } return true } } } } !---------------------------------------------------------------------------- male_incender ruhne "Ruhne Gahle" { nouns "man", "ruhne", "rhune", "rune", "gahle", "guest", "visitor" adjectives "ruhne" exclude_from_all { return true } is hidden short_desc { if (chapter = 1,2) { "Ruhne Gahle is sitting on a nearby bench." } if (chapter = 3) { "Ruhne Gahle stands near the fountain." } } long_desc { PrintMsgCutscene(1,Chapter,0) ruhne is not hidden } before { object DoTalk { PrintMsgCutscene(1,Chapter,1) : return true } } after { object DoTell { if (xobject = accord) or \ (xobject = textstring and IsEqual(textstring.misc,"accord","sheeear accord")) { PrintMsgCutscene(2,Chapter) return true } if (xobject = siteseven) { PrintMsgCutscene(4,Chapter) return true } if (xobject = mythos) { PrintMsgCutscene(6,Chapter) return true } return false !default } object DoAsk { if (xobject = hisefforts) { PrintMsgCutscene(0,10) return true } return false } } } !---------------------------------------------------------------------------- male_incender maheo "Maaaheeeo" { nouns "maaaheeeo", "maheo", "reee", "ambassador", "incender", "man" adjective "maaaheeeo", "maheo", "ambassador", "incender" exclude_from_all { return true } !He drinks 2 sips every 6 turns misc maheocup, 2, 6, 6, MaheoDrink, 450, 0, 150 long_desc { PrintMsgChapter1(2,self) } short_desc { if (parent(self) = pavcenter) { if (roomdesc_seen) { "The Incender ambassador, Maaaheeeo Reee (Maheo, for short), is seated on the first bench to the east." } else { "Ambassador Reee sits on the first seat to the east." } } } before { !He never de-lights, so we don't need to check self.special object DoListen { PrintMsgChapter1(13,self) : return true } } } !---------------------------------------------------------------------------- female_incender fesha "Feeeshaaa" { nouns "feeeshaaa", "fesha", "reee", "wife", "woman", "incender" adjective "feeeshaaa", "fesha", "ambassador's", "maaaheeeo's", \ "maheo's", "incender" is female exclude_from_all { return true } !She drinks 2 sips ever 1 turn misc feshacup, 2, 1, 1, FeshaDrink, 150, 0, 150 long_desc { PrintMsgChapter1(2,self) } short_desc { if (parent(self) = pavcenter) { if (roomdesc_seen) { "His wife, Feeeshaaa Reee (Fesha, for short), sits beside him." } else { "Fesha Reee sits beside him." } } } before { !She never de-lights, so we don't need to check self.special object DoListen { PrintMsgChapter1(13,self) : return true } } } !---------------------------------------------------------------------------- female_incender elora "Eeeloraaa" { nouns "eeeloraaa", "elora", "reee", "daughter", "girl", "incender" adjective "eeeloraaa", "elora", "ambassador's", "incender" is female exclude_from_all { return true } long_desc { PrintMsgChapter1(2,self) } short_desc { if (parent(self) = pavcenter) { if (roomdesc_seen) { "The ambassador's daughter, Eeeloraaa Reee (Elora, for short), sits alone on the second seat to the east." } else { "Elora Reee sits alone on the second seat to the east." } } } before { xobject DoGive { if (self in pavbackcenter) { !Can't give things to Elora at this point in the story. PrintMsgChapter1(4,16) : return true } return false !For default handling... } object DoKiss { !if (elora is special) { if (self is special) { !Misc is set to 3 after she presses up against Gavenn. if (pavbackcenter.misc < 3) { PrintMsgChapter1(4,17) !Not close enough yet } else { PrintMsgChapter1(99) !Boooyah... now it's on. } } else { PrintMsgChapter1(4,18,0) } return true } } }