Ignore:
Timestamp:
11/17/10 21:44:05 (9 years ago)
Author:
technomage
Message:

Ticket #269: Patch by Technomage.

  • Working prototype of the redesigned DialogueEngine? for the upcoming Techdemo2 release; major redesign of the existing DialogueEngine? and YAML dialogue file syntax.
  • Moved the redesigned DialogueEngine? class to the more descriptive dialogueengine.py module; the DialogueEngine? is now a singleton object and provides all functionality through class methods and attributes, and thus should not be instantiated
  • Abstracted the data structures used to store dialogue data away from the YAML data structures; the relevant classes are stored in the dialogue.py module
  • Abstracted the dialogue commands/actions from the DialogueEngine? code to make modifications and maintenance of dialogue logic easier; the relevant classes are stored in the dialogueactions.py module
  • The PyYAML loader has been replaced with a more robust YamlDialogueParser? class (see the dialogueparsers.py module) that interfaces with the new dialogue data structure classes and supports the new YAML dialogue file syntax; an OldYamlDialogueParser? class is provided to support reading the old Techdemo1 syntax
  • Removed the existing dialogue validator; runtime dialogue validation is not yet implemented
  • Added the convert_dialogue script, which converts dialogue files in the old Techdemo1 format to the new format; all existing dialogue files have been converted to work with the new parser
  • Added two support modules for the new classes and script: ordereddict.py, which provides a Python 2.7-like OrderedDict? class for Python versions 2.4-2.6; optionparser.py, which is a simplified command-line option parser for writing scripts as an alternative to argparse and optparse
  • Updated the dialogue_demo.py script to work with the new DialogueEngine?
  • fixes[s:trac, t:269]
Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

    • Property svn:ignore
      •  

        old new  
        44.settings 
        55Thumbs.db 
         6 
         7.externalToolBuilders 
         8 
         9.cproject 
  • trunk/game/dialogue/leader.yaml

    r571 r668  
    1313#   You should have received a copy of the GNU General Public License 
    1414#   along with PARPG.  If not, see <http://www.gnu.org/licenses/>. 
    15  
    16  
    1715--- 
    18 NPC: Kimmo Niitty 
    19 AVATAR: gui/icons/leader.png 
    20 START: main_dialog 
    21  
     16NPC_NAME: Kimmo Niitty 
     17AVATAR_PATH: gui/icons/leader.png 
     18START_SECTION: main_dialog 
    2219SECTIONS: 
    23      main_dialog: 
    24          - say: "What do you want?" 
    25          - meet: kimmo 
    26          - responses: 
    27             - 
    28               - "Nice office you have here." 
    29               - feedback_office 
    30             - 
    31               - "Tell me about this place." 
    32               - feedback_community 
    33             - 
    34               - "You are the one running things around here?" 
    35               - feedback_leader 
    36             - 
    37               - "Where can I get some booze around here?" 
    38               - help_alcohol 
    39             - 
    40               - "Have you seen Pekko around?" 
    41               - pekko_missing 
    42               - quest.hasActiveQuest('fedex') and not quest['fedex'].isGoalValue('found_pekko') 
    43             - 
    44               - "Your brother is dead.  I think he was murdered." 
    45               - pekko_dead 
    46               - quest['fedex'].isGoalValue('found_pekko') and not quest['fedex'].getValue('accused_of_murder') 
    47             - 
    48               - "I want to talk to about about your brother's murder." 
    49               - pekko_murdered 
    50               - quest['fedex'].getValue('accused_of_murder') 
    51             - 
    52               - "Why did you have your brother killed?" 
    53               - confront_kimmo 
    54               - quest['fedex'].isGoalValue('bart_confesses') 
    55             -  
    56               - "I managed to create some palatable beer..." 
    57               - gratitude 
    58               - quest['beer'].getValue('beer_quality') >= 1 
    59             - 
    60               - "See you later." 
    61               - end 
    62   
    63      help_alcohol: 
    64          - say: "Well, if you've got enough to pay him, Jacob can set you up, over at the Inn." 
    65          - responses: 
    66             - 
    67               - "That Jacob must be an important guy around here!" 
    68               - feedback_jacob 
    69             - 
    70               - "No competition, huh?  Must be nice for him." 
    71               - booze_business 
    72                
    73      feedback_jacob: 
    74          - say: "Pshaw!  He's a shopkeeper.  It's me who runs thing around here!" 
    75          - responses: 
    76             - 
    77               - "Oh, so you're the big cheese!" 
    78               - feedback_leader 
    79             - 
    80               - "I seem to have touched a nerve... change of subject, Kimmo..." 
    81               - main_dialog 
    82                
    83      booze_business: 
    84          - say: "Yes.  A nice little monopoly he's set up." 
    85          - responses: 
    86             - 
    87               - "Sounds like you would not be opposed to ... alternate sources of alcohol?" 
    88               - beer_competition 
    89             - 
    90               - "Huh, interesting." 
    91               - main_dialog 
    92   
    93      beer_competition: 
    94          - say: "[Narrows eyes] I think I see where you are going with this.  I cannot challenge Jacob directly on this... but I can look the other way, too" 
    95          - responses: 
    96             - 
    97               - "Duly noted." 
    98               - main_dialog 
    99                
    100      feedback_leader: 
    101          - say: "I prefer to think of myself as providing `gentle guidance`. Someone has to keep the community in shape.  \nWe have to work together to survive.  \nAnd you know... without proper leadership the community would decay to 'every man for himself'." 
    102          - responses:  
    103             - 
    104               - "Well, as long as the Leader is well, taken care of, eh?" 
    105               - criticize_lifestyle 
    106             - 
    107               - "Someone has to be foundation; to help hold everything together" 
    108               - main_dialog 
    109   
    110      criticize_lifestyle: 
    111          - say: "I only take what I need to be most... efficient." 
    112          - responses: 
    113             - 
    114               - "Efficient, gotcha." 
    115               - main_dialog 
    116                
    117      feedback_office: 
    118          - say: "You like it, huh?  I figure it's my reward for all the hard years.  Things have quieted down recently, and they should stay that way." 
    119          - responses: 
    120             - 
    121               - "Quiet, huh. I wonder how long it will last." 
    122               - talk_moving 
    123             - 
    124               - "It suits you." 
    125               - back 
    126             - 
    127               - "Well, it sure is fancy.  Good to be the man at the top, huh?" 
    128               - criticize_lifestyle 
    129                
    130      feedback_community: # he will tell the actor about the local community here. 
    131          - say: "Ok ... where should I start." 
    132          - responses:  
    133             -  
    134               - "Begin at the beginning, I guess - What's the story behind this place?" 
    135               - explain_origins 
    136             - 
    137               - "Tell me about your brother, Pekko." 
    138               - explain_pekko 
    139               - quest.hasActiveQuest('fedex') 
    140             -  
    141               - "Tell me about Jacob." 
    142               - explain_jacob 
    143               - pc.met('jacob') 
    144             -  
    145               - "Tell me about Janie." 
    146               - explain_janie 
    147               - pc.met('janie') 
    148             - 
    149               - "Tell me about Bart." 
    150               - explain_bart 
    151               - pc.met('bart') 
    152             - 
    153               - "Tell me about your mother,  Aino." 
    154               - explain_ma 
    155               - pc.met('ma') 
    156             - 
    157               - "Tell me about Helja." 
    158               - explain_helja 
    159               - pc.met('helja') 
    160             - 
    161               - "Tell me about Matti." 
    162               - explain_matti 
    163               - pc.met('matti') 
    164             - 
    165               - "Tell me about Skwisgaar." 
    166               - explain_skwisgaar 
    167               - pc.met('skwisgaar') 
    168             - 
    169               - "Anyone else I should know about?" 
    170               - explain_others 
    171             - 
    172               - "I think I got what I came for." 
    173               - main_dialog 
    174                
    175      explain_others: 
    176          - say: "Well, we have the usual mixed bag of folks.  Everyone works together to keep this place running.  I don't like to talk about folks that aren't mutual aquainances, though." 
    177          - responses: 
    178             - 
    179               - "Oh, OK, I'll meet the locals and get back to you." 
    180               - back 
    181  
    182      explain_skwisgaar: 
    183          - say: "Skwisgaar was Norwegian special forces.  He was sent here during the war to help the Finnish resistance in occupied territories.  After what he's seen and done - he's lucky to be in as good shape as he is.  For some reason everyone here thinks he's Swedish." 
    184          - responses: 
    185             - 
    186               - "Yeah, that dude has more than a few screws loose." 
    187               - back 
    188  
    189      explain_matti: 
    190          - say: "Matti was just a kid when the bombs went off.  He's just not the brightest fellow.  Strong like and ox, too, and innocent as a lamb.  Someone's got to shovel all this snow." 
    191          - responses: 
    192             - 
    193               - "He seemed nice enough." 
    194               - back 
    195             - 
    196               - "I think he may have been involved in your brother's murder" 
    197               - accuse_matti 
    198               - quest['fedex'].isGoalValue('found_pekko') and quest['fedex'].getValue('murder_reported_to_kimmmo') 
    199             - 
    200               - "I think he may have been involved in your brother's murder" 
    201               - pekko_dead 
    202               - quest['fedex'].isGoalValue('found_pekko') and not quest['fedex'].getValue('murder_reported_to_kimmmo') 
    203  
    204  
    205      explain_helja: 
    206          - say: "Helja is a rock.  She's been here since the beginning.  Frankly, I don't know what I would do without her keeping track of stuff.  I am more of a motivator than an organizer." 
    207          - responses: 
    208             - 
    209               - "She seems very good at her job." 
    210               - back 
    211             - 
    212               - "Do you think you can tell her to release some supplies for my beer project" 
    213               - beer_request 
    214               - quest.hasActiveQuest('beer') and quest['beer'].isGoalValue('beer_instructions') and quest['beer'].getValue('beer_quality') > 0 
    215  
    216      beer_request: 
    217          - say: "Well, that project has no official backing [wink].  But if you have anything to trade her, she always has something extra." 
    218          - responses: 
    219             - 
    220               - "Oh, I gotcha." 
    221               - feedback_community 
    222  
    223      explain_ma: 
    224          - say: "I don't think I could have made all that you see here without Ma.  She is like the spiritual center of our community, the one people go to when they have problems.  I don't know what we would do without her." 
    225          - responses: 
    226             - 
    227               - "What is going to happen to her if you migrate south?" 
    228               - go_south 
    229             - 
    230               - "She's clearly a very important part of your society." 
    231               - back 
    232  
    233      go_south: 
    234          - say: "You've been talking to my brother, haven't you!?!?  Him and his fool ideas.  It's just a harsh winter.  Not even as bad as the first couple after the war. We are staying put, and that's that!" 
    235          - responses: 
    236             - 
    237               - "But Aino is not going to live forever, and it is getting cold... maybe Pekko is right..." 
    238               - argue_migration 
    239             - 
    240               - "Well, I guess that's settled.  Where is your brother, anyway, I wonder..." 
    241               - back 
    242             - 
    243               - "Actually, I am trying to find your Brother, have you seen him?" 
    244               - pekko_missing 
    245               - quest.hasActiveQuest('fedex') and not quest['fedex'].isGoalValue('found_pekko') 
    246  
    247      argue_migration: 
    248          - say: "It's ridiculous.  We aren't moving.  How can we pack up after all we've invested in this place?" 
    249          - responses: 
    250             - 
    251               - "I suppose it depends how long you can stay fed." 
    252               - main_dialog 
    253                
    254      explain_janie: 
    255          - say: "Janie's a tough kid - and a good fighter.  Quick with a knife and an acid tongue.  I remember when Pekko brought her in.  She was really just a kid then, couldn't have been more than 5 or 6.  Probably the first act of kindness she ever saw.  She turned out alright, even if she is a little bossy." 
    256          - responses: 
    257             - 
    258               - "Bossy is one way to put it." 
    259               - back 
    260  
    261      explain_bart: 
    262          - say: "Bart is something of a slacker.  But, hell, he was here before the rest of us.  When we found this place, he was trying to drink himself to death on the liquor store.  We probably ended up saving his life by rationing the alcohol.  Still, he can be ... useful." 
    263          - responses: 
    264             - 
    265               - "I would have thought alcholism would have been eradicated by now..." 
    266               - back 
    267             - 
    268               - "Drunk or not, I think he may have been involved in your brother's murder" 
    269               - accuse_bart 
    270               - quest['fedex'].isGoalValue('found_pekko') and quest['fedex'].getValue('murder_reported_to_kimmmo') 
    271             - 
    272               - "Drunk or not, I think he may have been involved in your brother's murder" 
    273               - pekko_dead 
    274               - quest['fedex'].isGoalValue('found_pekko') and not quest['fedex'].getValue('murder_reported_to_kimmmo') 
    275  
    276      explain_jacob: 
    277          - say: "At the time, he seemed like a great addition.  I let him in some years back; we was a traveling salesman and fix-it type.  I thought it would work out for both us.  But he is not happy with his little shop.  A very political character." 
    278          - responses: 
    279             - 
    280               - "Wow, the steam heating was his idea, huh?  You really must need him." 
    281               - continue_jacob 
    282  
    283      continue_jacob: 
    284          - say: "I'll say this for Jacob.  Without him, we'd never have the steam heating system.  Still the guy doesn't know his place, and some of his `loyal cronies` are a bad element." 
    285          - responses: 
    286             - 
    287               - "Wow, the steam heating was his idea, huh?  You really must need him." 
    288               - feedback_jacob 
    289             - 
    290               - "He certainly is pretty arrogant." 
    291               - back    
    292                
    293      explain_pekko: 
    294          - say: "Ah, my brother the dreamer.  [sighs] He has no idea how the world works.  It was the same before the war, and it's still the same.  I'll miss him.  Always has a theory for everything.  And will talk your ear off if you let him." 
    295          - responses: 
    296             - 
    297               - "What do you mean, `miss him`?  Where is he going?" 
    298               - kimmo_slip 
    299             - 
    300               - "You do know he's missing, right?" 
    301               - pekko_missing 
    302               - quest.hasActiveQuest('fedex') and not quest['fedex'].isGoalValue('found_pekko') 
    303             - 
    304               - "What if he's right about the weather?  That's it's getting worse?  You can't stay here." 
    305               - argue_migration 
    306             - 
    307               - "It does seem pretty crazy, I agree.  How could it actually get colder?" 
    308               - back 
    309  
    310      kimmo_slip: 
    311          - say: "Did I say that?  Weird.  I just meant that he's reckless... and one of these days he's might not make it back from one his little jaunts in the woods." 
    312          - responses: 
    313             - 
    314               - "Yeah, it is weird.  I'm sure you would miss your brother if he was gone for good..." 
    315               - feedback_community 
    316                
    317      pekko_missing: 
    318          - say: "What do you mean, `missing`?" 
    319          - responses: 
    320             - 
    321               - "I mean, no one seems to know where I can find him." 
    322               - pekko_continue 
    323              
    324      pekko_continue: 
    325          - say: "Oh, that Pekko.  I'm sure he's just out collecting samples, or measuring snowbanks or something.  You'd think he'd bring something useful back sometimes." 
    326          - set_value: 
    327             quest: 'fedex' 
    328             variable: 'check_bart_left' 
    329             value: True 
    330          - responses: 
    331             - 
    332               - "So you are pretty sure he's out of town at the moment." 
    333               - feedback_community 
    334  
    335      explain_origins: 
    336          - say: "Well, of course Finland was overrun very early in the war.  My battalion fought on for a while, but due to reprisals against the civilians, we were forced to disband.  I grew up not too far from here, and by the time I made it home, there wasn't any Finland, or Russia, or NATO, or Warsaw pact or even any war left.  I hear the war was starting to spread into Africa, South America.  The whole world.  Almost everyone was dead by the time I started to fortify this place.  It has some tactical advantages - can shut out people, plus there was still a good supply of food and clothes and stuff.  We ate almost all the food in the first couple of 'dark' years.  Those were the hardest.  I didn't think we'd ever see the sun again.  I would have given up - my wife and kids killed by some nasty war virus, but Ma convinced me to fight on.  That we might be the only people left in the world.  After a while, when the epidemics and fallout had mostly subsided, we began to get some travelers.  This place was quite the trading post for central Finland.  None of the bandit gangs would dare attack it.  We put in the green house when the winters started getting long and the supermarket stuff started to run low.   Jacob and his guys put the steam heating system in, and we'd have never survived the last few years without it." 
    337          - responses: 
    338             - 
    339               - "I guess we all have our stories." 
    340               - back 
    341  
    342      accuse_matti: 
    343          - say: "Matti? The dim kid?  You think he killed my brother?" 
    344          - set_value: 
    345             quest: 'fedex' 
    346             variable: 'accused_of_murder' 
    347             value: 'matti' 
    348          - responses: 
    349             - 
    350               - "I can't be sure, but he certainly had access to the cistern.  And he seems... unstable.  I could try to find proof it you like." 
    351               - investigate 
    352                
    353      accuse_bart: 
    354          - say: "Bart, huh.  Do you have any proof?" 
    355          - responses: 
    356             - 
    357               - "No proof, yet.  But something about his story isn't right." 
    358               - investigate 
    359             - 
    360               - "Yes, in fact he told me the whole story.  Including your involvement" 
    361               - confront_kimmo 
    362               - quest['fedex'].isGoalValue('drunkard_confessed') 
    363             -  
    364               - "Camille.  She saw them together, right before he disappeared.  And according to Janie, he never left the compound." 
    365               - bart_evidence 
    366               - quest['fedex'].isGoalValue('drunkard_evidence') and quest['fedex'].isGoalValue('check_pekko_left') 
    367  
    368      bart_evidence: 
    369          - say: "Uh-huh.  And that's it.  He was the last guy seen with him.  You going to hang your hat on that?" 
    370          - responses: 
    371             - 
    372               - "Yes.  I am sure that Bart killed your brother." 
    373               - bart_convicted 
    374             - 
    375               - "I guess it does sound a little flimsy at that.  I can look around a bit more." 
    376               - investigate 
    377                
    378      bart_convicted: 
    379          - say: "I guess I will have a little talk with the old boy then." 
    380          - set_value: 
    381             quest: 'fedex' 
    382             variable: "bart_in_trouble" 
    383             value: True 
    384          - responses: 
    385             - 
    386               - "Yes, you do that." 
    387               - main_dialog 
    388                
    389      pekko_dead: 
    390          - say: "Dead?  Murdered... what are you talking about?" 
    391          - responses: 
    392             - 
    393               - "I found his body in the cistern." 
    394               - pekko_murdered 
    395                
    396      pekko_murdered: 
    397          - set_value: 
    398             quest: 'fedex' 
    399             variable: "murder_report_to_kimmo" 
    400             value: True 
    401          - say: "What makes you think he was murdered?" 
    402          - responses: 
    403             - 
    404               - "Well, I suppose it was the way his head was smashed in.  That and the fact someone had to dislocate both shoulders to fit him in hatch.  Other than that, it's just a guess." 
    405               - murder_continued 
    406             - 
    407               - "It might have been an accident.  He could have just fallen in, I suppose.  I'll have to look into it further." 
    408               - investigate 
    409                
    410      murder_continued: 
    411          - say: "So you have no proof... [steadies himself]  But this is terrible!  My brother dead. Ah, our poor mother!  Please don't tell her.  Let me." 
    412          - responses: 
    413             - 
    414               - "Actually, Kimmo.  Bart confessed to me." 
    415               - confront_kimmo 
    416               - quest['fedex'].isGoalValue('drunkard_confessed') 
    417             - 
    418               - "No proof, but if I keep investigating, I am sure something more will turn up." 
    419               - investigate 
    420             - 
    421               - "I think it must be Matti, the snow shoveler." 
    422               - accuse_matti 
    423             - 
    424               - "I am pretty sure Bart is involved." 
    425               - accuse_bart               
    426                
    427      investigate: 
    428          - say: "You know, uh... stranger.  I think it might be best if you let me handle it from here." 
    429          - responses: 
    430             - 
    431               - "You want me to drop it?  Well, you are the big cheese around here." 
    432               - drop_quest 
    433             - 
    434               - "No... no.  I don't think so.  It's going to keep me up not knowing.  I'll continue to poke around on my own." 
    435               - main_dialog 
    436                
    437      drop_quest: 
    438          - say: "I think you are doing the right thing... whomever did this might start looking for you, too. [ahem] Assuming it wasn't just an accident." 
    439          - complete_quest: fedex 
    440          - responses: 
    441             - 
    442               - "Yeah, good point." 
    443               - main_dialog 
    444                
    445      confront_kimmo: 
    446          - say: "WHAT?!  You come into MY office, tell me that my brother's been killed.  And you have to the nerve to accuse me of doing it?" 
    447          - responses: 
    448             - 
    449               - "Yes, you sick fuck.  How could such a monster come to power here?  I hope the good people of this... this... place have enough nerve to hang you for it." 
    450               - end 
    451             - 
    452               - "Yes.  Bart told me you put him up to it, for the booze.  But he didn't tell me why." 
    453               - why_murder 
    454             - 
    455               - "Well.  Now we find out what you are going to do for me to keep this quiet." 
    456               - hush_money 
    457   
    458      why_murder: 
    459          - say: "To be honest, I had to do it.  It was him or me.. him, or all of us.  Well, Ma for certain.  He says we can't stay this far north.  But if we pack it up and move, I know a bunch of us will not make it.  And I don't think he's right about the weather, anyway.  You know he never graduated?" 
    460          - responses: 
    461             - 
    462               - "You better hope you are right, or you're all dead anyway." 
    463               - back 
    464                
    465      hush_money: 
    466          - say: "You gonna blackmail me, kid?  Don't count on it.  How about this:  You keep your fool mouth shut, or you die next." 
    467          - responses: 
    468             - 
    469               - "Is that a threat?  You think I am that easy to disappear?  Well, you just try." 
    470               - end 
    471             - 
    472               - "Hey, now...  I'd say we both have each other pretty good.  Truce, then?" 
    473               - truce 
    474                
    475      truce: 
    476          - say: "Funny way to put it.  But OK...  Don't think that bastard Jacob can protect you, though.   I need him.  I sure as shit don't need you." 
    477          - responses: 
    478            - 
    479              - "I guess it will have to do" 
    480              - end 
    481                         
    482      talk_moving: 
    483          - say: "What do you mean, 'you wonder'?  There is no reason why we can't stay here indefinitly.  As long as no outsiders stir up trouble." 
    484          - responses: 
    485             - 
    486               - "Oh, no doubt... this place is about as about as ideal as you can get in these times." 
    487               - back 
    488             - 
    489               - "I don't know.  I am not sure that any place is permanent in this world.  It doesn't seem that stable to me." 
    490               - go_south 
    491  
    492      gratitude: 
    493          - say: "Heh.  That's put the screws on old Jacob.  I owe you one for that.  Let me know if you need a favor - or if his thugs give you any trouble." 
    494          - responses: 
    495            - 
    496              - "Thanks, I'll keep that in mind." 
    497              - end 
    498                
     20-   ID: main_dialog 
     21    SAY: "What do you want?" 
     22    ACTIONS: 
     23    -   meet: 
     24        - kimmo 
     25    RESPONSES: 
     26    -   REPLY: "Nice office you have here." 
     27        GOTO: feedback_office 
     28         
     29    -   REPLY: "Tell me about this place." 
     30        GOTO: feedback_community 
     31         
     32    -   REPLY: "You are the one running things around here?" 
     33        GOTO: feedback_leader 
     34         
     35    -   REPLY: "Where can I get some booze around here?" 
     36        GOTO: help_alcohol 
     37         
     38    -   REPLY: "Have you seen Pekko around?" 
     39        CONDITION: "quest.hasActiveQuest('fedex') and not\ 
     40           \ quest['fedex'].isGoalValue('found_pekko')" 
     41        GOTO: pekko_missing 
     42         
     43    -   REPLY: "Your brother is dead.  I think he was murdered." 
     44        CONDITION: "quest['fedex'].isGoalValue('found_pekko') and not\ 
     45           \ quest['fedex'].getValue('accused_of_murder')" 
     46        GOTO: pekko_dead 
     47         
     48    -   REPLY: "I want to talk to about about your brother's murder." 
     49        CONDITION: "quest['fedex'].getValue('accused_of_murder')" 
     50        ACTIONS: 
     51        -   set_quest_value: &id001 
     52                quest: fedex 
     53                value: true 
     54                variable: murder_report_to_kimmo 
     55        GOTO: pekko_murdered 
     56         
     57    -   REPLY: "Why did you have your brother killed?" 
     58        CONDITION: "quest['fedex'].isGoalValue('bart_confesses')" 
     59        GOTO: confront_kimmo 
     60         
     61    -   REPLY: "I managed to create some palatable beer..." 
     62        CONDITION: "quest['beer'].getValue('beer_quality') >= 1" 
     63        GOTO: gratitude 
     64         
     65    -   REPLY: "See you later." 
     66        GOTO: end 
     67         
     68-   ID: help_alcohol 
     69    SAY: "Well, if you've got enough to pay him, Jacob can set you up, over at\ 
     70       \ the Inn." 
     71    RESPONSES: 
     72    -   REPLY: "That Jacob must be an important guy around here!" 
     73        GOTO: feedback_jacob 
     74         
     75    -   REPLY: "No competition, huh?  Must be nice for him." 
     76        GOTO: booze_business 
     77         
     78-   ID: feedback_jacob 
     79    SAY: "Pshaw!  He's a shopkeeper.  It's me who runs thing around here!" 
     80    RESPONSES: 
     81    -   REPLY: "Oh, so you're the big cheese!" 
     82        GOTO: feedback_leader 
     83         
     84    -   REPLY: "I seem to have touched a nerve... change of subject, Kimmo..." 
     85        GOTO: main_dialog 
     86         
     87-   ID: booze_business 
     88    SAY: "Yes.  A nice little monopoly he's set up." 
     89    RESPONSES: 
     90    -   REPLY: "Sounds like you would not be opposed to ... alternate sources\ 
     91           \ of alcohol?" 
     92        GOTO: beer_competition 
     93         
     94    -   REPLY: "Huh, interesting." 
     95        GOTO: main_dialog 
     96         
     97-   ID: beer_competition 
     98    SAY: "[Narrows eyes] I think I see where you are going with this.  I cannot\ 
     99       \ challenge Jacob directly on this... but I can look the other way, too" 
     100    RESPONSES: 
     101    -   REPLY: "Duly noted." 
     102        GOTO: main_dialog 
     103         
     104-   ID: feedback_leader 
     105    SAY: "I prefer to think of myself as providing `gentle guidance`. Someone\ 
     106       \ has to keep the community in shape.  \nWe have to work together to\ 
     107       \ survive.  \nAnd you know... without proper leadership the community\ 
     108       \ would decay to 'every man for himself'." 
     109    RESPONSES: 
     110    -   REPLY: "Well, as long as the Leader is well, taken care of, eh?" 
     111        GOTO: criticize_lifestyle 
     112         
     113    -   REPLY: "Someone has to be foundation; to help hold everything together" 
     114        GOTO: main_dialog 
     115         
     116-   ID: criticize_lifestyle 
     117    SAY: "I only take what I need to be most... efficient." 
     118    RESPONSES: 
     119    -   REPLY: "Efficient, gotcha." 
     120        GOTO: main_dialog 
     121         
     122-   ID: feedback_office 
     123    SAY: "You like it, huh?  I figure it's my reward for all the hard years.\ 
     124       \ Things have quieted down recently, and they should stay that way." 
     125    RESPONSES: 
     126    -   REPLY: "Quiet, huh. I wonder how long it will last." 
     127        GOTO: talk_moving 
     128         
     129    -   REPLY: "It suits you." 
     130        GOTO: back 
     131         
     132    -   REPLY: "Well, it sure is fancy.  Good to be the man at the top, huh?" 
     133        GOTO: criticize_lifestyle 
     134         
     135-   ID: feedback_community 
     136    SAY: "Ok ... where should I start." 
     137    RESPONSES: 
     138    -   REPLY: "Begin at the beginning, I guess - What's the story behind this\ 
     139           \ place?" 
     140        GOTO: explain_origins 
     141         
     142    -   REPLY: "Tell me about your brother, Pekko." 
     143        CONDITION: "quest.hasActiveQuest('fedex')" 
     144        GOTO: explain_pekko 
     145         
     146    -   REPLY: "Tell me about Jacob." 
     147        CONDITION: "pc.met('jacob')" 
     148        GOTO: explain_jacob 
     149         
     150    -   REPLY: "Tell me about Janie." 
     151        CONDITION: "pc.met('janie')" 
     152        GOTO: explain_janie 
     153         
     154    -   REPLY: "Tell me about Bart." 
     155        CONDITION: "pc.met('bart')" 
     156        GOTO: explain_bart 
     157         
     158    -   REPLY: "Tell me about your mother,  Aino." 
     159        CONDITION: "pc.met('ma')" 
     160        GOTO: explain_ma 
     161         
     162    -   REPLY: "Tell me about Helja." 
     163        CONDITION: "pc.met('helja')" 
     164        GOTO: explain_helja 
     165         
     166    -   REPLY: "Tell me about Matti." 
     167        CONDITION: "pc.met('matti')" 
     168        GOTO: explain_matti 
     169         
     170    -   REPLY: "Tell me about Skwisgaar." 
     171        CONDITION: "pc.met('skwisgaar')" 
     172        GOTO: explain_skwisgaar 
     173         
     174    -   REPLY: "Anyone else I should know about?" 
     175        GOTO: explain_others 
     176         
     177    -   REPLY: "I think I got what I came for." 
     178        GOTO: main_dialog 
     179         
     180-   ID: explain_others 
     181    SAY: "Well, we have the usual mixed bag of folks.  Everyone works together\ 
     182       \ to keep this place running.  I don't like to talk about folks that\ 
     183       \ aren't mutual aquainances, though." 
     184    RESPONSES: 
     185    -   REPLY: "Oh, OK, I'll meet the locals and get back to you." 
     186        GOTO: back 
     187         
     188-   ID: explain_skwisgaar 
     189    SAY: "Skwisgaar was Norwegian special forces.  He was sent here during the\ 
     190       \ war to help the Finnish resistance in occupied territories.  After what\ 
     191       \ he's seen and done - he's lucky to be in as good shape as he is.  For\ 
     192       \ some reason everyone here thinks he's Swedish." 
     193    RESPONSES: 
     194    -   REPLY: "Yeah, that dude has more than a few screws loose." 
     195        GOTO: back 
     196         
     197-   ID: explain_matti 
     198    SAY: "Matti was just a kid when the bombs went off.  He's just not the\ 
     199       \ brightest fellow.  Strong like and ox, too, and innocent as a lamb.\ 
     200       \ Someone's got to shovel all this snow." 
     201    RESPONSES: 
     202    -   REPLY: "He seemed nice enough." 
     203        GOTO: back 
     204         
     205    -   REPLY: "I think he may have been involved in your brother's murder" 
     206        CONDITION: "quest['fedex'].isGoalValue('found_pekko') and\ 
     207           \ quest['fedex'].getValue('murder_reported_to_kimmmo')" 
     208        ACTIONS: 
     209        -   set_quest_value: &id002 
     210                quest: fedex 
     211                value: matti 
     212                variable: accused_of_murder 
     213        GOTO: accuse_matti 
     214         
     215    -   REPLY: "I think he may have been involved in your brother's murder" 
     216        CONDITION: "quest['fedex'].isGoalValue('found_pekko') and not\ 
     217           \ quest['fedex'].getValue('murder_reported_to_kimmmo')" 
     218        GOTO: pekko_dead 
     219         
     220-   ID: explain_helja 
     221    SAY: "Helja is a rock.  She's been here since the beginning.  Frankly, I\ 
     222       \ don't know what I would do without her keeping track of stuff.  I am\ 
     223       \ more of a motivator than an organizer." 
     224    RESPONSES: 
     225    -   REPLY: "She seems very good at her job." 
     226        GOTO: back 
     227         
     228    -   REPLY: "Do you think you can tell her to release some supplies for my\ 
     229           \ beer project" 
     230        CONDITION: "quest.hasActiveQuest('beer') and\ 
     231           \ quest['beer'].isGoalValue('beer_instructions') and\ 
     232           \ quest['beer'].getValue('beer_quality') > 0" 
     233        GOTO: beer_request 
     234         
     235-   ID: beer_request 
     236    SAY: "Well, that project has no official backing [wink].  But if you have\ 
     237       \ anything to trade her, she always has something extra." 
     238    RESPONSES: 
     239    -   REPLY: "Oh, I gotcha." 
     240        GOTO: feedback_community 
     241         
     242-   ID: explain_ma 
     243    SAY: "I don't think I could have made all that you see here without Ma.\ 
     244       \ She is like the spiritual center of our community, the one people go to\ 
     245       \ when they have problems.  I don't know what we would do without her." 
     246    RESPONSES: 
     247    -   REPLY: "What is going to happen to her if you migrate south?" 
     248        GOTO: go_south 
     249         
     250    -   REPLY: "She's clearly a very important part of your society." 
     251        GOTO: back 
     252         
     253-   ID: go_south 
     254    SAY: "You've been talking to my brother, haven't you!?!?  Him and his fool\ 
     255       \ ideas.  It's just a harsh winter.  Not even as bad as the first couple\ 
     256       \ after the war. We are staying put, and that's that!" 
     257    RESPONSES: 
     258    -   REPLY: "But Aino is not going to live forever, and it is getting\ 
     259           \ cold... maybe Pekko is right..." 
     260        GOTO: argue_migration 
     261         
     262    -   REPLY: "Well, I guess that's settled.  Where is your brother, anyway, I\ 
     263           \ wonder..." 
     264        GOTO: back 
     265         
     266    -   REPLY: "Actually, I am trying to find your Brother, have you seen him?" 
     267        CONDITION: "quest.hasActiveQuest('fedex') and not\ 
     268           \ quest['fedex'].isGoalValue('found_pekko')" 
     269        GOTO: pekko_missing 
     270         
     271-   ID: argue_migration 
     272    SAY: "It's ridiculous.  We aren't moving.  How can we pack up after all\ 
     273       \ we've invested in this place?" 
     274    RESPONSES: 
     275    -   REPLY: "I suppose it depends how long you can stay fed." 
     276        GOTO: main_dialog 
     277         
     278-   ID: explain_janie 
     279    SAY: "Janie's a tough kid - and a good fighter.  Quick with a knife and an\ 
     280       \ acid tongue.  I remember when Pekko brought her in.  She was really\ 
     281       \ just a kid then, couldn't have been more than 5 or 6.  Probably the\ 
     282       \ first act of kindness she ever saw.  She turned out alright, even if\ 
     283       \ she is a little bossy." 
     284    RESPONSES: 
     285    -   REPLY: "Bossy is one way to put it." 
     286        GOTO: back 
     287         
     288-   ID: explain_bart 
     289    SAY: "Bart is something of a slacker.  But, hell, he was here before the\ 
     290       \ rest of us.  When we found this place, he was trying to drink himself\ 
     291       \ to death on the liquor store.  We probably ended up saving his life by\ 
     292       \ rationing the alcohol.  Still, he can be ... useful." 
     293    RESPONSES: 
     294    -   REPLY: "I would have thought alcholism would have been eradicated by\ 
     295           \ now..." 
     296        GOTO: back 
     297         
     298    -   REPLY: "Drunk or not, I think he may have been involved in your\ 
     299           \ brother's murder" 
     300        CONDITION: "quest['fedex'].isGoalValue('found_pekko') and\ 
     301           \ quest['fedex'].getValue('murder_reported_to_kimmmo')" 
     302        GOTO: accuse_bart 
     303         
     304    -   REPLY: "Drunk or not, I think he may have been involved in your\ 
     305           \ brother's murder" 
     306        CONDITION: "quest['fedex'].isGoalValue('found_pekko') and not\ 
     307           \ quest['fedex'].getValue('murder_reported_to_kimmmo')" 
     308        GOTO: pekko_dead 
     309         
     310-   ID: explain_jacob 
     311    SAY: "At the time, he seemed like a great addition.  I let him in some\ 
     312       \ years back; we was a traveling salesman and fix-it type.  I thought it\ 
     313       \ would work out for both us.  But he is not happy with his little shop.\ 
     314       \ A very political character." 
     315    RESPONSES: 
     316    -   REPLY: "Wow, the steam heating was his idea, huh?  You really must need\ 
     317           \ him." 
     318        GOTO: continue_jacob 
     319         
     320-   ID: continue_jacob 
     321    SAY: "I'll say this for Jacob.  Without him, we'd never have the steam\ 
     322       \ heating system.  Still the guy doesn't know his place, and some of his\ 
     323       \ `loyal cronies` are a bad element." 
     324    RESPONSES: 
     325    -   REPLY: "Wow, the steam heating was his idea, huh?  You really must need\ 
     326           \ him." 
     327        GOTO: feedback_jacob 
     328         
     329    -   REPLY: "He certainly is pretty arrogant." 
     330        GOTO: back 
     331         
     332-   ID: explain_pekko 
     333    SAY: "Ah, my brother the dreamer.  [sighs] He has no idea how the world\ 
     334       \ works.  It was the same before the war, and it's still the same.  I'll\ 
     335       \ miss him.  Always has a theory for everything.  And will talk your ear\ 
     336       \ off if you let him." 
     337    RESPONSES: 
     338    -   REPLY: "What do you mean, `miss him`?  Where is he going?" 
     339        GOTO: kimmo_slip 
     340         
     341    -   REPLY: "You do know he's missing, right?" 
     342        CONDITION: "quest.hasActiveQuest('fedex') and not\ 
     343           \ quest['fedex'].isGoalValue('found_pekko')" 
     344        GOTO: pekko_missing 
     345         
     346    -   REPLY: "What if he's right about the weather?  That's it's getting\ 
     347           \ worse?  You can't stay here." 
     348        GOTO: argue_migration 
     349         
     350    -   REPLY: "It does seem pretty crazy, I agree.  How could it actually get\ 
     351           \ colder?" 
     352        GOTO: back 
     353         
     354-   ID: kimmo_slip 
     355    SAY: "Did I say that?  Weird.  I just meant that he's reckless... and one\ 
     356       \ of these days he's might not make it back from one his little jaunts in\ 
     357       \ the woods." 
     358    RESPONSES: 
     359    -   REPLY: "Yeah, it is weird.  I'm sure you would miss your brother if he\ 
     360           \ was gone for good..." 
     361        GOTO: feedback_community 
     362         
     363-   ID: pekko_missing 
     364    SAY: "What do you mean, `missing`?" 
     365    RESPONSES: 
     366    -   REPLY: "I mean, no one seems to know where I can find him." 
     367        ACTIONS: 
     368        -   set_quest_value: 
     369                quest: fedex 
     370                value: true 
     371                variable: check_bart_left 
     372        GOTO: pekko_continue 
     373         
     374-   ID: pekko_continue 
     375    SAY: "Oh, that Pekko.  I'm sure he's just out collecting samples, or\ 
     376       \ measuring snowbanks or something.  You'd think he'd bring something\ 
     377       \ useful back sometimes." 
     378    RESPONSES: 
     379    -   REPLY: "So you are pretty sure he's out of town at the moment." 
     380        GOTO: feedback_community 
     381         
     382-   ID: explain_origins 
     383    SAY: "Well, of course Finland was overrun very early in the war.  My\ 
     384       \ battalion fought on for a while, but due to reprisals against the\ 
     385       \ civilians, we were forced to disband.  I grew up not too far from here,\ 
     386       \ and by the time I made it home, there wasn't any Finland, or Russia, or\ 
     387       \ NATO, or Warsaw pact or even any war left.  I hear the war was starting\ 
     388       \ to spread into Africa, South America.  The whole world.  Almost\ 
     389       \ everyone was dead by the time I started to fortify this place.  It has\ 
     390       \ some tactical advantages - can shut out people, plus there was still a\ 
     391       \ good supply of food and clothes and stuff.  We ate almost all the food\ 
     392       \ in the first couple of 'dark' years.  Those were the hardest.  I didn't\ 
     393       \ think we'd ever see the sun again.  I would have given up - my wife and\ 
     394       \ kids killed by some nasty war virus, but Ma convinced me to fight on.\ 
     395       \ That we might be the only people left in the world.  After a while,\ 
     396       \ when the epidemics and fallout had mostly subsided, we began to get\ 
     397       \ some travelers.  This place was quite the trading post for central\ 
     398       \ Finland.  None of the bandit gangs would dare attack it.  We put in the\ 
     399       \ green house when the winters started getting long and the supermarket\ 
     400       \ stuff started to run low.   Jacob and his guys put the steam heating\ 
     401       \ system in, and we'd have never survived the last few years without it." 
     402    RESPONSES: 
     403    -   REPLY: "I guess we all have our stories." 
     404        GOTO: back 
     405         
     406-   ID: accuse_matti 
     407    SAY: "Matti? The dim kid?  You think he killed my brother?" 
     408    RESPONSES: 
     409    -   REPLY: "I can't be sure, but he certainly had access to the cistern.\ 
     410           \ And he seems... unstable.  I could try to find proof it you like." 
     411        GOTO: investigate 
     412         
     413-   ID: accuse_bart 
     414    SAY: "Bart, huh.  Do you have any proof?" 
     415    RESPONSES: 
     416    -   REPLY: "No proof, yet.  But something about his story isn't right." 
     417        GOTO: investigate 
     418         
     419    -   REPLY: "Yes, in fact he told me the whole story.  Including your\ 
     420           \ involvement" 
     421        CONDITION: "quest['fedex'].isGoalValue('drunkard_confessed')" 
     422        GOTO: confront_kimmo 
     423         
     424    -   REPLY: "Camille.  She saw them together, right before he disappeared.\ 
     425           \ And according to Janie, he never left the compound." 
     426        CONDITION: "quest['fedex'].isGoalValue('drunkard_evidence') and\ 
     427           \ quest['fedex'].isGoalValue('check_pekko_left')" 
     428        GOTO: bart_evidence 
     429         
     430-   ID: bart_evidence 
     431    SAY: "Uh-huh.  And that's it.  He was the last guy seen with him.  You\ 
     432       \ going to hang your hat on that?" 
     433    RESPONSES: 
     434    -   REPLY: "Yes.  I am sure that Bart killed your brother." 
     435        ACTIONS: 
     436        -   set_quest_value: 
     437                quest: fedex 
     438                value: true 
     439                variable: bart_in_trouble 
     440        GOTO: bart_convicted 
     441         
     442    -   REPLY: "I guess it does sound a little flimsy at that.  I can look\ 
     443           \ around a bit more." 
     444        GOTO: investigate 
     445         
     446-   ID: bart_convicted 
     447    SAY: "I guess I will have a little talk with the old boy then." 
     448    RESPONSES: 
     449    -   REPLY: "Yes, you do that." 
     450        GOTO: main_dialog 
     451         
     452-   ID: pekko_dead 
     453    SAY: "Dead?  Murdered... what are you talking about?" 
     454    RESPONSES: 
     455    -   REPLY: "I found his body in the cistern." 
     456        ACTIONS: 
     457        -   set_quest_value: *id001 
     458        GOTO: pekko_murdered 
     459         
     460-   ID: pekko_murdered 
     461    SAY: "What makes you think he was murdered?" 
     462    RESPONSES: 
     463    -   REPLY: "Well, I suppose it was the way his head was smashed in.  That\ 
     464           \ and the fact someone had to dislocate both shoulders to fit him in\ 
     465           \ hatch.  Other than that, it's just a guess." 
     466        GOTO: murder_continued 
     467         
     468    -   REPLY: "It might have been an accident.  He could have just fallen in,\ 
     469           \ I suppose.  I'll have to look into it further." 
     470        GOTO: investigate 
     471         
     472-   ID: murder_continued 
     473    SAY: "So you have no proof... [steadies himself]  But this is terrible!  My\ 
     474       \ brother dead. Ah, our poor mother!  Please don't tell her.  Let me." 
     475    RESPONSES: 
     476    -   REPLY: "Actually, Kimmo.  Bart confessed to me." 
     477        CONDITION: "quest['fedex'].isGoalValue('drunkard_confessed')" 
     478        GOTO: confront_kimmo 
     479         
     480    -   REPLY: "No proof, but if I keep investigating, I am sure something more\ 
     481           \ will turn up." 
     482        GOTO: investigate 
     483         
     484    -   REPLY: "I think it must be Matti, the snow shoveler." 
     485        ACTIONS: 
     486        -   set_quest_value: *id002 
     487        GOTO: accuse_matti 
     488         
     489    -   REPLY: "I am pretty sure Bart is involved." 
     490        GOTO: accuse_bart 
     491         
     492-   ID: investigate 
     493    SAY: "You know, uh... stranger.  I think it might be best if you let me\ 
     494       \ handle it from here." 
     495    RESPONSES: 
     496    -   REPLY: "You want me to drop it?  Well, you are the big cheese around\ 
     497           \ here." 
     498        ACTIONS: 
     499        -   complete_quest: 
     500            - fedex 
     501        GOTO: drop_quest 
     502         
     503    -   REPLY: "No... no.  I don't think so.  It's going to keep me up not\ 
     504           \ knowing.  I'll continue to poke around on my own." 
     505        GOTO: main_dialog 
     506         
     507-   ID: drop_quest 
     508    SAY: "I think you are doing the right thing... whomever did this might\ 
     509       \ start looking for you, too. [ahem] Assuming it wasn't just an\ 
     510       \ accident." 
     511    RESPONSES: 
     512    -   REPLY: "Yeah, good point." 
     513        GOTO: main_dialog 
     514         
     515-   ID: confront_kimmo 
     516    SAY: "WHAT?!  You come into MY office, tell me that my brother's been\ 
     517       \ killed.  And you have to the nerve to accuse me of doing it?" 
     518    RESPONSES: 
     519    -   REPLY: "Yes, you sick fuck.  How could such a monster come to power\ 
     520           \ here?  I hope the good people of this... this... place have enough\ 
     521           \ nerve to hang you for it." 
     522        GOTO: end 
     523         
     524    -   REPLY: "Yes.  Bart told me you put him up to it, for the booze.  But he\ 
     525           \ didn't tell me why." 
     526        GOTO: why_murder 
     527         
     528    -   REPLY: "Well.  Now we find out what you are going to do for me to keep\ 
     529           \ this quiet." 
     530        GOTO: hush_money 
     531         
     532-   ID: why_murder 
     533    SAY: "To be honest, I had to do it.  It was him or me.. him, or all of us.\ 
     534       \ Well, Ma for certain.  He says we can't stay this far north.  But if we\ 
     535       \ pack it up and move, I know a bunch of us will not make it.  And I\ 
     536       \ don't think he's right about the weather, anyway.  You know he never\ 
     537       \ graduated?" 
     538    RESPONSES: 
     539    -   REPLY: "You better hope you are right, or you're all dead anyway." 
     540        GOTO: back 
     541         
     542-   ID: hush_money 
     543    SAY: "You gonna blackmail me, kid?  Don't count on it.  How about this:\ 
     544       \ You keep your fool mouth shut, or you die next." 
     545    RESPONSES: 
     546    -   REPLY: "Is that a threat?  You think I am that easy to disappear?\ 
     547           \ Well, you just try." 
     548        GOTO: end 
     549         
     550    -   REPLY: "Hey, now...  I'd say we both have each other pretty good.\ 
     551           \ Truce, then?" 
     552        GOTO: truce 
     553         
     554-   ID: truce 
     555    SAY: "Funny way to put it.  But OK...  Don't think that bastard Jacob can\ 
     556       \ protect you, though.   I need him.  I sure as shit don't need you." 
     557    RESPONSES: 
     558    -   REPLY: "I guess it will have to do" 
     559        GOTO: end 
     560         
     561-   ID: talk_moving 
     562    SAY: "What do you mean, 'you wonder'?  There is no reason why we can't stay\ 
     563       \ here indefinitly.  As long as no outsiders stir up trouble." 
     564    RESPONSES: 
     565    -   REPLY: "Oh, no doubt... this place is about as about as ideal as you\ 
     566           \ can get in these times." 
     567        GOTO: back 
     568         
     569    -   REPLY: "I don't know.  I am not sure that any place is permanent in\ 
     570           \ this world.  It doesn't seem that stable to me." 
     571        GOTO: go_south 
     572         
     573-   ID: gratitude 
     574    SAY: "Heh.  That's put the screws on old Jacob.  I owe you one for that.\ 
     575       \ Let me know if you need a favor - or if his thugs give you any\ 
     576       \ trouble." 
     577    RESPONSES: 
     578    -   REPLY: "Thanks, I'll keep that in mind." 
     579        GOTO: end 
     580         
     581... 
Note: See TracChangeset for help on using the changeset viewer.