summaryrefslogtreecommitdiff
path: root/npc/020-7-1/peetu.txt
blob: 3e79d02cfe6e32902f7b860a3b63e817f847b4ae (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
// TMW2 scripts.
// Authors:
//    Jesusalva
//    TMW Org.
// Description:
//    Peetu, gifted since birth, only 1 NPC each 100 are born mages
//
// NivalisQuest_BlueSage STRUCTURE
//  FIELD 1:
//      INVESTIGATION
//      1 - STBY OUTSIDE
//      2 - ACCESS GRANTED - But Peetu is crying too much
//      3 - Peetu was calmed down, go talk to Oskari about him
//      4 - Oskari is OK with peetu, but wanna hear from others. He also sends you
//          to ask what Peetu happened
//      5 - Adultered ingredients seems the cause, report to Elias
//      6 - Elias is now worried about a visitor. Ask people about and report.
//      7 - If everyone found the visitor, confirm Elias the worries
//      8 - Elias sent you to Oskari to inform the issue. Blue Sage probably knew all along.
//      will not advance unless everyone thinks Peetu is good.
//      9 - Oskari accepts the cause. Tells to report Peetu that it probably was
//          a saboutage, to check if the Silk Cocoon really was there.
//      10 - Peetu confirmed the saboutage. Report to Blue Sage.
//      11 - Blue Sage accepted the evidence, and explains about other sages issues.
//          It's not known who or what is behind this. He excuses for making you waste
//          your time. He asks you to return to him later, as he needs to write letters.
//      12 - QUEST COMPLETE - You collected your reward
//          Also picked up a letter for Frostia Mayor, about the incident (Main Story).
//  FIELD 2:
//      Bitwise (BS_QVISITOR)
//  FIELD 3:
//      Bitwise (BS_QHELPER)

020-7-1,122,27,2	script	Peetu	NPC_BLUESAGEWORKER_MC,{
    function pWaiting;

    function pIntro;
    function pContinue;
    function pReflection;
    function pInvestigation;
    function pComplete;

    .@q=getq(NivalisQuest_BlueSage);
    .@q2=getq2(NivalisQuest_BlueSage);
    .@q3=getq3(NivalisQuest_BlueSage);

    if (.@q <= 4)
        npctalk3 any(l("*sob sob*"), l("*crying*"));

    switch (.@q) {
        case 2:
            pIntro();
            break;
        case 3:
            pWaiting("Oskari");
            break;
        case 4:
            pReflection();
            break;
        case 5:
            pWaiting("Elias"); // In case they skipped all dialogs and are now lost.
            break;
        case 6:
        case 7:
        case 8:
            pWaiting("Oskari");
            break;
        case 9:
            pInvestigation();
            break;
        case 10:
        case 11:
            pWaiting("Blue Sage");
            break;
        case 12:
            pComplete();
            break;
        default:
            warp "Save", 0, 0;
            percentheal -100, -100;
            end;
            break;
    }
    close;

// Here we begin
function pWaiting {
    .@name$=getarg(0, "##1##BBUG, REPORT ME: THE FLYING COW##0##b");
    mesn;
    mesc l("*sniff sniff*");
    mesq l("I'm waiting for @@ feedback... Please go talk to them! %%S", .@name$);
    close;
}

// Peetu is too upset with failing (yeah, he is that kind of perfectionist here).
// We should find a way to calm him down.
function pIntro {
    .@q=getq(NivalisQuest_BlueSage);
    .@q2=getq2(NivalisQuest_BlueSage);
    .@q3=getq3(NivalisQuest_BlueSage);
    mesn;
    mesc l("*sniff sniff*");
    next;
    select
        l("Hello Peetu."),
        rif(.@q2 >= 1, l("[Give him some salty Sea Drops?]")),
        rif(.@q2 >= 2, l("[Give him some tasty Chocolate Bar?]")),
        rif(.@q2 >= 3, l("[Give him a Mouboo Figurine to play with?]")),
        rif(.@q2 >= 4, l("[Slap his hands to surprise him and get his attention?]")),
        rif(.@q2 >= 5, l("SHUT UP PEETU, I'M ALREADY TIRED OF LISTENING YOUR CRIES!")),
        rif(.@q2 >= 5, l("I give up. You're hopeless.")),
        rif(.@q2 >= 5, l("Have you cried enough?")),
        rif(.@q2 >= 5, l("[Pat his shoulder and say everything will be fine.]")),
        rif(.@q2, l("Hi Peetu, are you calmer now?"));
    mes "";
    switch (@menu) {
        case 1:
            if (.@q2 < 1)
                setq2 NivalisQuest_BlueSage, 1;
        case 2:
            if (!countitem(SeaDrops)) {
                mesc l("You don't have @@.", getitemlink(SeaDrops));
            }
            if (.@q2 < 2)
                setq2 NivalisQuest_BlueSage, 2;
            break;
        case 3:
            if (!countitem(ChocolateBar)) {
                mesc l("You don't have @@.", getitemlink(ChocolateBar));
            }
            if (.@q2 < 3)
                setq2 NivalisQuest_BlueSage, 3;
            break;
        case 4:
            if (!countitem(MoubooFigurine)) {
                mesc l("You don't have @@.", getitemlink(MoubooFigurine));
            }
            if (.@q2 < 4)
                setq2 NivalisQuest_BlueSage, 4;
            break;
        case 5:
            mesn;
            mesq l("AH!");
            next;
            mesc l("You seem to have gotten Peetu's attention for a while.");
            next;
            if (.@q2 < 5)
                setq2 NivalisQuest_BlueSage, 5;
            break;
        case 9:
            pContinue();
            break;
    }
    mesn;
    mes l("WAAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHH");
    mesc l("@@ burst in tears.", .name$);
    next;
    mesn strcharinfo(0);
    mesc l("I probably should look in a way of calming him down.");
    close;
}

// He is calmer now
function pContinue {
    mesn;
    mesc l("*sniff sniff*");
    next;
    select
        l("What have happened? Why are you crying?"),
        l("Maybe I can help to ease your pain?"),
        l("Don't cry any further. I am here to help."),
        l("Please tell me calmly what happened so I can help.");
    mes "";
    mesn;
    mesq l("It's *sniff* It's all my fault... *sniff*");
    next;
    mesn;
    mesc l("*sniff* *sniff*");
    mesq l("It was my job to seal the slimes away for the night, but I somehow messed it up!");
    next;
    mesn;
    mesc l("*tears weeling up*");
    mesq l("And now I'm going to lose my job and I'll have to leave here and no other sage would give me a new appointment and I don't know what else to do!");
    next;
    mesc l("@@ latches onto you and starts sobbing on your shoulder.", .name$);
    select
        l("[Try to console him]"),
        l("[Shake him and tell him to pull himself together]"),
        l("[Push him away from you and leave]");
    mes "";
    if (@menu == 3) {
        setq2 NivalisQuest_BlueSage, 4;
        close;
    }
    mesc l("@@ calms a bit.", .name$);
    next;
    mesn;
    mesq l("Uh. You're probably right. I'm very sorry. I'm just... You know, I wanted to become a scholar of the sages, studying and... Oh, how could I mess that up? Did you see the library? It caused so much damage! What else should they do other than kick me out?");
    next;
    mesn;
    mesq l("I would kick me out myself! I'm such a failure! A complete disaster! %%i");
    next;
    select
        l("Maybe you should talk to your chief about that?"),
        l("It doesn't make much sense to draw overhasty conclusions."),
        l("Do you have a clue about what went wrong?");
    mes "";
    mesn;
    mesq l("Well ... but ... I mean ... I don't know ... ");
    next;
    mesn;
    mesq l("Would you ... uhm ... would you talk to Chief Oskari for me? And ask him what he plans to do about me? I... I just don't feel capable of doing that myself right now. I'll try to pull myself together in the meanwhile.");
    setq NivalisQuest_BlueSage, 3, 0;
    close;
}

// Report that Oskari is not planning to fire him (yet), and is trying to understand
// what went wrong so it do not repeat.
function pReflection {
    .@q=getq(NivalisQuest_BlueSage);
    .@q2=getq2(NivalisQuest_BlueSage);
    .@q3=getq3(NivalisQuest_BlueSage);
    select
        l("Good news: Oskari doesn't plans in firing you (yet)!"),
        l("I'm here to investigate what exactly happened so this doesn't happens again."),
        l("Everyone commit mistakes and Oskari was very understanding. I need to do some questions about the incident though."),
        l("Oskari have a good opinion of you. Can you tell what exactly happened?");
    mes "";
    mesn;
    mesc l("*sniff sniff*");
    mesq l("So... You see... I usually pay a lot of attention to my work. Especially when doing something as delicate as sealing away the slimes for the night.");
    next;
    mesn;
    mesq l("We're doing researches on slimes, the explosive ones. You probably saw when they explode, they damage anything close to them, friendly or not, right?");
    next;
    mesn;
    mesq l("Nikolai said it was important, so we keep a few of them locked in the basement. I apply a spell to seal them so they don't wander around, explode around, or... *sniff*...");
    next;
    mesn;
    mesq l("It's a very delicate spell. I usually start to prepare it while the helpers are still working on their research and experiments. That way, when they're done, they can just come and place the slimes under the seal.");
    next;
    mesn;
    mesq l("So... @@ That night, I cast it as usual. Everything seemed alright so I went to bed.", "##9*sniff*##0");
    next;
    mesn;
    mesc l("Eyes grows!");
    mesq l("I woke up in a shake! I felt... Oh, it's hard to describe... As if the spell suddenly started inflating, getting bigger... bigger... weaker... weaker...");
    next;
    mesn;
    mesc l("*snap fingers*");
    mesq l("And then, it was no more! It vanished! In a matter of minutes the slimes were all over the library. A good thing they are slow, none escaped to the town.");
    next;
    mesn;
    mesq l("Of course I hurried there as fast as I could, yelling to wake up everyone, but that caused so much confusion that we fell over each other in the corridor and when we finally reached the library, the slimes were already spread all over the room, eating or exploding the books.");
    next;
    select
        l("*snooze*"),
        l("And have you thought in the cause?");
    mes "";
    if (@menu == 1)
        clear;
    mesn;
    mesq l("Now that I've described the spells to you, I'm sure I cast them correctly. But... I think there is a way to have these effects. It's silly though.");
    next;
    mesn;
    mesq l("I never tried it, because it makes no sense to do that, but theoretically adding some Silk Cocoons could have such an effect. Uh... but that should not happen.");
    next;
    mesn;
    mesq l("Could you please ask @@ about it? The ingredients... It would still be my fault..."), b(l("Elias"));
    next;
    mesc l("@@ is on the verge of crying again. Better leave out and look for Elias.", .name$);
    setq1 NivalisQuest_BlueSage, 5;
    close;
}

// Peetu hurries back to check what happened. Wait 3 minutes in the library.
// He'll then say that in fact there was silk cocoon
function pInvestigation {
    .@q=getq(NivalisQuest_BlueSage);
    .@q2=getq2(NivalisQuest_BlueSage);
    .@q3=getq3(NivalisQuest_BlueSage);
    mesn;
    mesc l("*sniff sniff*");
    mesq l("So... Anything new on my situation?");
    next;
    select
        l("Not yet."),
        l("Yes, you'll be fired."),
        l("Yes, Chief Oskari suspects a sabotage.");
    mes "";
    switch (@menu){
    case 1:
        close;
    case 2:
        mesn;
        mes l("WAAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHH");
        mesc l("@@ burst in tears.", .name$);
        next;
        percentheal 0, -100;
        mesn strcharinfo(0);
        mesc l("Meh, telling him it was a lie is not going to help.");
        close;
    }
    mesn;
    mesc l("*eyes widen up*");
    mesq l("A... A sabotage?! O.o");
    next;
    mesn strcharinfo(0);
    mesq l("Keep your voice down! And yes. Can you confirm @@ was the cause?", getitemlink(SilkCocoon));
    next;
    mesn;
    mesq l("...Yes. Hold tight.");
    next;
    mes "... ... ...";
    next;
    mesn;
    mesq l("...Yes. It was there. Please report to Blue Sage at once.");
    setq1 NivalisQuest_BlueSage, 10;
    close;
}

// The crime was "solved"
function pComplete {
    mesn;
    mesq l("Oh, hey, welcome back, @@! Thanks for all your help!", strcharinfo(0));
    next;
    mesn;
    .@subject$=any(l("town finances"), l("house finances"), l("town damage by monsters"), l("library damage"), l("supply report"), l("magic book"), l("town overview"));
    mesq l("I'm currently going over some of the household paperwork. Right now I'm inspecting the @@. The work never stops!", .@subject$);
    close;
}

OnInit:
    .sex=G_MALE;
    .distance=5;
    npcsit;
    end;
}