!\--------------------------------------------------------------------------- DOWNCHAR.HUG Characters for Down by Kent Tessman (c) 1997-1998 Including: Injured woman (mother) Little girl (Hana) Little boy (Bradley) Dying husband Wife ---------------------------------------------------------------------------\! !---------------------------------------------------------------------------- ! CHARACTERS IN THE CRASH SIGHT: attribute unhealthy alias unfriendly attribute dead property unhealthy_response alias ignore_response female_character mother "injured woman" { in crashsite nouns "mother", "woman", "lady", "mommy", "mummy", "mom", "mum" adjectives "injured", "hurt", "asthmatic" article "the" initial_desc { "A woman lies here. She's awake, but she doesn't seem to be doing too well. She is having trouble breathing." self is moved bradley is known ! for questions, etc. } short_desc "The injured woman is lying here, breathing with difficulty." unhealthy_response "The woman tries to respond but can't--she's too short of breath." is unhealthy long_desc { if self is unhealthy "The woman is about thirty. She can't breathe very well; she might be choking or asthmatic. Her eyes look scared." else "The woman seems to be doing a little better now, breathing a little easier." } before { object DoListen { if self is unhealthy "Her breathing is pretty rough. It sounds choked, barely whistling through her windpipe." else "Her breathing is better now." } xobject DoGive { select object case inhaler { "The woman reaches out weakly for the inhaler. She draws deeply on it, coughs harshly, then uses the inhaler again. Slowly her breathing seems to settle into a smoother rhythm." move inhaler to self self is not unhealthy } case purse { "The woman takes the purse."; move purse to self if self is unhealthy { purse is open " She struggles to look in it"; if inhaler in purse { " and finds the inhaler, which you take out for her.\n" Perform(&DoGive, inhaler, self) } else " and, not finding what she's looking for, slumps back. \ \"Where's my inhaler?\" she manages to ask." } } case else return false } parent(object) DoGet { if object = inhaler "The mother needs that." else return false } } after { object DoAsk { select xobject case hana { "\"That's my daughter, Hana. Please make sure she's okay."; if parent(bradley) is inside_the_plane " She has a little brother--I don't know where he is!\" She begins to cry. \"Please find Bradley!"; print "\"" hana.noun #1 = "hana" bradley.nouns = "bradley", "brad" } case bradley { if bradley is not special "\"I don't know where he is! Please find Bradley!\"" else "\"He's my little boy.\"" bradley.nouns = "bradley", "brad" } case plane { "\"I don't know what happened. I don't know what happened... Are we going to be all right? The plane, if there's fire, will we be all right?\"" } case inhaler { "\"I need it for my asthma..."; if self is unhealthy "I'm...I'm barely able to breathe.\"" else "thank you for bringing it.\"" } case purse { if self is unhealthy "\"My inhaler is in it...my inhaler for my asthma...\"" else "\"Yes, it's mine...why?\"" } case else return false } } } female_character hana "little girl" { in crashsite ! nouns will include "hana" nouns "", "girl", "child", "daughter", "sister" adjectives "little", "small" article "the" initial_desc { "Beside the woman is a little girl, possibly her daughter." self is moved } long_desc "The little girl is a little dirty and shaken, but otherwise seems to be okay." short_desc { if mother in parent(self) { CThe(self) " is here as well, crouching down with her mother, looking frightened." } else { CThe(self) " is here." } } before { object DoGet { "She may be small, but in your condition, she's still too heavy to carry." } } after { object DoAsk { select xobject case mother { if mother is unhealthy "\"She's sick,\" the little girl says. \"She needs her medicine.\"" else "\"She's feeling better now,\" the little girl says. \"She got her medicine.\"" } case bradley { if parent(bradley) is inside_the_plane or bradley in nothing "\"Bradley! My baby brother! Where is he?\" she asks you." else "\"He's my baby brother,\" the little girl says, and tries to smile." bradley.nouns = "bradley", "brad" } case inhaler "\"My mommy needs her medicine so she can breathe...\", the little girl says, sounding quite upset." case purse "\"My mommy's purse...she has to have it because it has her medicine in it.\"" case plane "\"We were on the airplane and it...it crashed!\" the little girl says, tearing up. \ \"We were going to see my grandma...is she going to be okay?\"" case else return false } } } character husband "husband" { in behindplane nouns "man", "husband", "arthur" adjectives "injured", "dying", "wife's", "woman's", "lady's" article "the" is hidden ! so that description is handled by wife, below parse_rank 1 ! preference over husbands_body long_desc "He looks in very rough shape. His face is horribly pale and waxy--he seems to have lost a lot of blood from a gash on his leg." is unfriendly ignore_response "He's barely conscious--he can't respond." } scenery husbands_leg "man's leg" { in behindplane nouns "leg", "gash", "cut" adjectives "gash", "husband's", "man's", "bleeding", "blood" article "the" long_desc "The man's leg has been cut badly, possibly by a stray piece of jagged metal. There's too much blood--as if an artery had been torn open or punctured." parse_rank 1 ! i.e., your own leg isn't important right now } female_character wife "wife" { in behindplane nouns "wife", "woman", "lady" adjectives "husband's", "man's" article "the" initial_desc { "A wife kneels beside her husband, who is lying on the cold ground. She's trying to help him--he seems to be in a lot of pain, and he looks like he's losing blood--but she's helpless." self is moved } short_desc { if husband is not dead "The woman is still kneeling beside her husband." else "The woman is sitting on the cold earth beside her husband's body, her head buried in her arms, her arms wrapped around him." } ignore_response "The woman says nothing. She just sits on the ground holding onto her husband's body." after { object DoAsk { select xobject case husband "\"Oh, god--please help him! Arthur has a weak heart! He's bleeding...please help him!\" The woman holds her husband even more tightly." case husbands_leg "The woman looks terrified, absolutely terrified. \"He's bleeding so much...he's bleeding so much. Do you think it's bad?\"" case plane, exterior_fire { "\"It's going to explode! Look at the fire, right there beside it!\"" } case else return false } } } scenery husbands_body "woman's husband's body" { nouns "man", "husband", "arthur", "body", "corpse" adjectives "wife's", "woman's", "lady's", "husband's" article "the" long_desc "The man's body lies here beside her as the woman weeps." before { object DoHelpChar { "Unfortunately, there was nothing anyone could do. \ The man has quietly died." } } } fuse dying_husband_fuse {} event in dying_husband_fuse { local t t = self.tick if t = 0 { wife is moved ! to remove initial_desc wife is unfriendly husband is dead remove husband move husbands_body to behindplane } if location = behindplane { select t case 0*TURNS_PER_MIN { "\nThe woman suddenly looks down with fear at her husband. He seems to have stopped breathing.\n\n \"Arthur! My god...Arthur! \IArthur!\i\"\n\n She shakes him, to no avail. Arthur has stopped breathing." event_flag = true } case 10*TURNS_PER_MIN { "\nThe woman leans over her husband as he coughs, barely conscious. \"Arthur? Arthur...please, Arthur. You're going to be okay.\"" event_flag = true } case 20*TURNS_PER_MIN { "\nThe woman looks up at you. \"Can you help my husband? Can you help Arthur?\"" event_flag = true } } } !---------------------------------------------------------------------------- ! BRADLEY: NPC_follower bradley "little boy" ! 'special' once discovered in the cockpit { ! nouns will include "bradley", "brad" nouns "", "", "boy", "child", "son", "brother" adjectives "little", "small" article "a" long_desc "The little boy is five years old at most, but big for his age. His eyes are swollen and puffy--he's been crying for a while, it seems." ignore_response { ! Two different uses of the 'unfriendly' attribute: if self in parent(mother) "The boy is with his mother now; he's not paying much attention to you." else "The little boy sniffles and holds the purse more tightly." } order_response { if verbroutine = &DoGive and xobject = player { if object not in self print CThe(self); " doesn't have "; \ The(object); "." elseif Acquire(player, object) print CThe(self); " gives you "; \ The(object); "." else { ! If Acquire didn't work, this will fail for ! some reason, printing an appropriate ! response ! Perform(&DoGet, object, self) } } elseif verbroutine = &DoFollow { if (object~=self and object ~= player) or mother is special print CThe(self); " doesn't want to follow "; The(object); "." else { CThe(self) " nods." AddPollable(self, player) } } else return false } before { object DoGet { "He may be small, but in your condition, he's still too heavy to carry." } object DoListen { if self is unfriendly "He's crying but barely making a sound." else "He's only sniffling now." } object DoComfort { if self is unfriendly and self not in parent(mother) "You give the little boy a hug and hold him for a moment or two. He seems to calm down a little. \"Where's my mommy?\" he asks through his tears." else "The boy seems calm enough now." self is not unfriendly } } after { object DoAsk { select xobject case inhaler "\"My mommy needs that.\" he says." case mother "\"I don't know where my mommy is!\" he cries!" case hana "\"Where's Hana? Where's mommy?\" he asks, sniffling?" case plane "He shakes his head, pouting, his eyes sad and filling with tears. \"I don't like it...I don't like it at all...\"" case purse "\"It's mommy's.\"" case else return false } xobject DoGive { if object = purse { CThe(self) " takes the purse and holds tightly onto it." } else return false } } follow ! a 'pre-follow' routine, runs before { ! NPC_follower.follow if player in accessway and player is not unfollowable { "\nThe little boy can't follow you down through the opening." player is unfollowable } elseif player in forwardcabin player is not unfollowable elseif player in besideplane { "\nYou help the little boy down from the wing. His teary eyes light up as he sees his mother to the north. \"Mommy!\" he cries, and runs toward her." RemovePollable(self) ! stop following move self to crashsite self is unfriendly if Contains(self, inhaler) { move inhaler to mother mother is not unhealthy } if Contains(self, purse) move purse to mother } return false ! so NPC_follower.follow will run } follow_message { if self in insideplane and self.old_NPC_location = onwing "\nYou help the little boy back inside the plane." elseif self in onwing and self.old_NPC_location = insideplane "\nYou help the little boy out onto the wing." else return false } is unfriendly } !---------------------------------------------------------------------------- ! CHARACTER-RELATED OBJECTS: object purse "purse" { in bradley nouns "purse", "bag", "handbag" adjectives "woman's", "mother's" article "a" is container, openable, not open capacity 15 holding 0 long_desc "It's a rather plain woman's purse." before { object { if self in bradley and bradley is unfriendly "The little boy pulls the purse away from you, crying." else return false } } } object inhaler "asthma inhaler" { in purse nouns "inhaler", "medicine", "medication", "label", "prescription" adjective "asthma", "mother's", "blue", "plastic" article "an" long_desc "The blue plastic inhaler has a label on it giving the prescription, which is for treatment of asthma." size 5 is known, readable before { object DoUse { "It's not for playing around with--and there's someone who needs it more than you." } } }