summaryrefslogtreecommitdiff
path: root/world/map/npc/009-1/milly.txt
blob: c195d9ebeefd54ac9310578f3a159d00929c9f63 (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
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
// Milly is involved in:
// Beanie-Copter quest
// Story and dialogs: veryape
// Scripting: Jenalya
// Spelling, grammar and phrasing changes: Qwerty Dragon
//
// Inspector quest

009-1.gat,81,41,0|script|Milly|114,
{
    callfunc "ClearVariables";

    set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);

    set @got_boneknife, ((QUEST_Forestbow_state & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT) >= 4;
    set @got_setzer,  ((QUEST_Forestbow_state & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT) >= 8;
    set @saved_rossy, (FLAGS & FLAG_ROSSI_COMPLETED);
    set @saved_cindy, ((QUEST_Nivalis_state & NIBBLE_5_MASK) >> NIBBLE_5_SHIFT) >= 4;

    if (FLAGS & FLAG_GOT_BEANIEHAT) goto L_FinishedGood;
    if (FLAGS & FLAG_DECLINED_BEANIEHAT) goto L_FinishedBad;

    if (@saved_rossy && @saved_cindy && @got_setzer && (BOSS_POINTS >= 5000)) goto L_OfferCap;
    if (@got_setzer)    goto L_GotSetzer;
    if (@saved_cindy)   goto L_SavedCindy;
    if (@saved_rossy)   goto L_SavedRossy;
    if (@got_boneknife) goto L_GotBoneKnife;
    if (BaseLevel > 40) goto L_NoKnifeYet;

    mes "[Milly]";
    mes "\"Hello traveler, welcome to Hurnscald.\"";
    next;
    callsub S_InspectorMaybe;

    mes "\"Have you met Kfahr yet? He is the greatest hero that ever walked the land of Hurnscald!\"";
    menu
        "Hi! No, I haven't seen him yet.", L_Where,
        "Where can I find him?", L_Where,
        "Mh, I don't care for heroes.", L_Care,
        "Hello, yes I have met him.", L_MetKfahr;

L_Where:
    mes "[Milly]";
    mes "\"I highly recommend you seek him out! He is a regular at the inn, located in the north-west part of town. If you are lucky he might tell you a story about his adventures.\"";
    goto L_Close;

L_Care:
    mes "[Milly]";
    mes "\"What? Surely you do not appreciate what a hero he is! Mh, or perhaps honor is dead in you; for you to be so slow to comprehend the good that his exploits have wrought for us. Put on your thinking cap and be propelled into high adventure! Go to Kfahr, and listen to his stories.\"";
    next;
    mes "\"You can't have met him. No one who has met him would say such silly things.\"";
    next;
    goto L_Where;

L_MetKfahr:
    mes "[Milly]";
    mes "\"Oh, I hope you stayed and listened to his stories about his adventures.\"";
    goto L_Close;

L_NoKnifeYet:
    mes "[Milly]";
    mes "\"Hi again.\"";
    next;
    callsub S_InspectorMaybe;

    mes "\"Have you talked to Kfahr lately?\"";
    menu
        "Yes.", L_TalkKfahr,
        "No.", L_HintKnife;

L_TalkKfahr:
    mes "[Milly]";
    mes "\"Is it true as the rumors say? ...\"";
    next;
    goto L_HintKnife;

L_HintKnife:
    mes "[Milly]";
    mes "\"You really should go meet him.\"";
    next;
    mes "\"I've heard that he is helping adventurers such as yourself with some exotic gear.\"";
    menu
        "I am not sure, I'd better go talk to him again.", L_Unsure,
        "Yes, it is true.", L_True;

L_Unsure:
    mes "[Milly]";
    mes "\"You better hurry up before he changes his mind!\"";
    goto L_Close;

L_True:
    mes "[Milly]";
    mes "\"So, why haven't you accepted his generous offer?\"";
    menu
        "I was just about to...", L_Unsure,
        "I don't need any help.", L_NoHelp;

L_NoHelp:
    mes "[Milly]";
    mes "\"You must be kidding me.\"";
    next;
    mes "\"I am just a kid but not as silly as you. My pigtails possess more wisdom than you. You fooled me, you are no adventurer!\"";
    next;
    mes "\"You better learn from the wise and accept help from those who offer it.\"";
    goto L_Unsure;

L_GotBoneKnife:
    mes "[Milly]";
    mes "\"Hi there.\"";
    next;
    callsub S_InspectorMaybe;

    mes "\"I heard that you got an exotic knife from Kfahr.";
    mes "Would you kindly show it to me?\"";
    menu
        "Sure.", L_ShowKnife,
        "Haven't I already?", L_ShowKnifeAgain;

L_ShowKnife:
    if (countitem("BoneKnife") < 1)
        goto L_ShowKnifeNo;
    mes "[Milly]";
    mes "\"Wow! That is a knife fitting a real adventurer!\"";
    next;
    mes "\"Kfahr ain't just a hero, he is also a stand up guy.\"";
    next;
    mes "\"You should be proud that he is honoring you with his knife like this.\"";
    next;
    mes "\"What a hero...\"";
    goto L_Close;

L_ShowKnifeAgain:
    mes "[Milly]";
    mes "\"What possible objection could you have? It's so exiting to see such a fine knife.\"";
    next;
    mes "\"It is like cake, sure I might have had it before...\"";
    next;
    mes "\"... but does that stop me from wanting it once more?\"";
    next;
    mes "\"NO!\"";
    next;
    mes "\"Please let me see it!\"";
    menu
        "Okay.", L_ShowKnife,
        "Enough is enough.", L_ShowKnifeNo;

L_ShowKnifeNo:
    mes "[Milly]";
    mes "\"I hope that the reason that you don't show it to me is because you have it tucked away somewhere safe.\"";
    next;
    mes "\"Otherwise you are just a bore...\"";
    next;
    mes "\"Don't be boring!\"";
    goto L_Close;

L_SavedRossy:
    mes "[Milly]";
    mes "\"Hi friend!\"";
    next;
    callsub S_InspectorMaybe;

    mes "\"Word of your fame has spread throughout all Hurnscald of your great heroism by helping my friends Rossy and Julia!\"";
    next;
    mes "\"Not only did you help Rossy, you saved her sister Julia from that nefarious Fey Element. That was a real act of valor!\"";
    next;
    mes "\"You are shaping up to be something of a hero yourself.\"";
    next;
    mes "\"I am so happy that you came to Hurnscald, without you I'm not so sure that Julia would have been saved.\"";
    menu
        "You're right, I am a hero!", L_Loudmouth,
        "I'm doing my best!", L_Modesty;

L_Loudmouth:
    mes "[Milly]";
    mes "\"You surely are not...\"";
    next;
    mes "\"First and foremost you are a loudmouth. You need to learn actions speak better for themselves without your boasting.\"";
    next;
    mes "\"A little modesty would be a distinguishing trait for you to cultivate. You are talking as if you think that you are equal with Kfahr.\"";
    next;
    mes "\"I think you should show a little more respect when you are this close to legendary heroes.\"";
    goto L_Close;

L_Modesty:
    mes "[Milly]";
    mes "\"Wow, you have been very helpful and unselfish risking your own safety for the sake of others! Thanks to that Julia is back and Olana is able to sleep at night.\"";
    next;
    mes "\"If you continue with these valiant deeds you might earn your place in the history books of Hurnscald!\"";
    goto L_Close;

L_SavedCindy:
    mes "[Milly]";
    mes "\"Hi!\"";
    next;
    callsub S_InspectorMaybe;

    mes "\"Are the rumors true?\"";
    next;
    mes "\"Word is going around that you saved a girl called Cindy who was captured by Yetis in Nivalis, and that you arranged a rescue party getting her back from a deep Yeti inhibited cave.\"";
    menu
        "Thanks to the party, yes.", L_Party,
        "Yes, it is true!", L_Cindy;

L_Party:
    mes "[Milly]";
    mes "\"Wow! Not only are you brave, you also have the wisdom to seek help when needed!\"";
    next;
    mes "\"Being a skilled fighter is good. But being a skilled fighter coupled with your wits and organizational skill, now that is something special!\"";
    goto L_HeroGrowing;

L_Cindy:
    mes "[Milly]";
    mes "\"Once again you have done good!\"";
    goto L_HeroGrowing;

L_HeroGrowing:
    mes "[Milly]";
    mes "\"You have saved two kids about my own age from horrible situations, it is just like the stories I heard growing up.\"";
    next;
    mes "\"Things certainly are shaping up for you. My schoolmates play a game with you as the hero. And poets admire you in verse and song...\"";
    next;
    mes "\"Since you have proven yourself with your great acts, I will let you in on an exciting rumor I have heard.\"";
    next;
    mes "\"I have heard that Nicholas has learned new techniques in forging and weapon smithing. He is now able to improve a small sword into what is called a Setzer.\"";
    next;
    mes "\"Go talk to him and hear if he can help you get hold of one of these weapons.\"";
    goto L_Close;

L_GotSetzer:
    mes "[Milly]";
    mes "\"Hello!\"";
    next;
    callsub S_InspectorMaybe;

    mes "\"I heard that you got hold of a Setzer!\"";
    next;
    mes "\"And the fact that Kfahr helped you means he really rates you as a fellow adventurer!\"";
    next;
    mes "\"Praise does not get much better than that around here. He knows a good adventurer when he see one, you must have impressed him!\"";
    if (!@saved_cindy || !@saved_rossy)
        goto L_Close;
    next;
    mes "\"To be honest you are fast becoming my favored hero, even... dare I say it? Even more so than Kfahr.\"";
    next;
    mes "\"Your skill and good deeds are indisputable! However...\"";
    next;
    mes "\"Somehow I feel that you still need to establish your courage. The elders say that although they find you an admirable person, a hero of renown; that you can't be considered as great as Kfahr till you have proven yourself fearless.\"";
    next;
    mes "\"You could prove yourself as the greatest hero who has walked the land by accepting Paruas challenge at Candor. Stare death in the eyes, show no fear and conquer! Show everyone that you are worthy of the title: The Greatest Hero Ever!\"";
    next;
    mes "\"I myself already consider you my favorite hero, sure Kfahr has done great things, but...\"";
    next;
    mes "\"Nowadays he mostly sits around with that sad bunch of drunkards in the Inn, drinking beer and talking about past glory.\"";
    next;
    mes "\"For my generation you are the true hero, please prove the stony hearted elders wrong by showing them that you are fearless!\"";
    next;
    mes "\"Good luck and good bye! Health, mana, and wealth be yours! \"";
    goto L_Close;

L_OfferCap:
    mes "[Milly]";
    mes "\"Hi there, hero of Hurnscald!\"";
    next;
    callsub S_InspectorMaybe;

    mes "\"You really have proven yourself over and over. There is no way anyone could possibly say, you are not the equal of Kfahr!\"";
    next;
    mes "\"Now, even the stones of Hurnscald praise you as a hero as great as Kfahr!\"";
    next;
    mes "\"I have something I want to give you...\"";
    next;
    mes "\"I was given two of those helicopter beanie caps at my birthday. I told everyone that it was what I really wanted so I got two of them...\"";
    next;
    mes "\"And some other kids are picking on me for wearing it, they say it is for nerds... I would be happy to give you one of them.\"";
    next;
    mes "\"It would be great if you wore a cap just like mine, that would sure shut them up! Also, please accept this rare hat as a token of my gratitude for everything you have done.\"";
    next;
    mes "\"It would be an honor to have the same cap as my hero!\"";
    menu
        "Thank you!", L_Cap,
        "No, thanks.", L_Idiot;

L_Cap:
    mes "[Milly]";
    mes "\"Wow, thanks for accepting my gift, it is so pleasing to know that you have the exact same cap as me! Friends forever!\"";
    getinventorylist;
    if (@inventorylist_count == 100 || (checkweight("BeanieCopter", 1) == 0))
        goto L_TooMany;
    getitem "BeanieCopter", 1;
    set FLAGS, FLAGS | FLAG_GOT_BEANIEHAT;
    next;
    mes "She is giggling with excitement.";
    next;
    mes "[Milly]";
    mes "\"Come see me anytime! Goodbye!\"";
    goto L_Close;

L_Idiot:
    mes "[Milly]";
    mes "\"Are you really sure? It is such a neat cap.\"";
    menu
        "Yes, no nerd hat for me!", L_BadBye,
        "Just kidding, I want one!", L_Cap;

L_BadBye:
    mes "Tears are forming in her eyes.";
    mes "[Milly]";
    mes "\"I guess they were right, you're not any great hero! I'll give it to Kfahr instead!\"";
    next;
    mes "\"Please keep on traveling so I don't have to see you around here. It makes me sad to see you, every time I do I'll remember how wrong I was about you.\"";
    set FLAGS, FLAGS | FLAG_DECLINED_BEANIEHAT;
    goto L_Close;

L_TooMany:
    mes "[Milly]";
    mes "\"You don't have any space left to carry it, go put some stuff in the storage and come back!\"";
    goto L_Close;

L_FinishedGood:
    mes "[Milly]";
    mes "\"Hi there friend, my hero!\"";
    next;
    callsub S_InspectorMaybe;

    mes "\"Wear the copter beany cap in good health, mana and wealth! See you around!\"";
    goto L_Close;

L_FinishedBad:
    mes "[Milly]";
    mes "\"Oh, it's you. I suppose you're here to make fun of my hat again.\"";
    next;
    callsub S_InspectorMaybe;
    mes "\"Won't you continue your travels soon?\"";
    menu
        "That's what I'm going to do.", -,
        "I'm really sorry. Of course I want your hat!", L_Apologize;

    mes "Milly looks away sadly.";
    goto L_Close;

L_Apologize:
    getinventorylist;
    if (@inventorylist_count == 100 || (checkweight("BeanieCopter", 1) == 0))
        goto L_TooMany;
    getitem "BeanieCopter", 1;
    set FLAGS, FLAGS | FLAG_GOT_BEANIEHAT;
    set FLAGS, FLAGS & ~FLAG_DECLINED_BEANIEHAT;

    mes "Milly looks surprised.";
    next;
    mes "[Milly]";
    mes "\"Oh, I... uh, thank you! I knew it! I knew such a heroic person as you can't be that mean.\"";
    goto L_Close;

L_Close:
    set @got_boneknife, 0;
    set @got_setzer, 0;
    set @saved_rossy, 0;
    set @saved_cindy, 0;
    set @inspector, 0;
    close;

S_InspectorMaybe:
    if (@inspector != 1)
        goto L_Return;
    menu
        "Have you seen anything strange lately?", L_NohMask_Strange,
        "Do you know anything about the recent robberies?", L_NohMask_Robbery,
        "Hello.", L_Return;

L_NohMask_Strange:
    mes "[Milly]";
    mes "\"I haven't seen anything strange.\"";
    next;
    goto L_Return;

L_NohMask_Robbery:
    mes "[Milly]";
    mes "\"No, sorry.\"";
    next;
    goto L_Return;

L_Return:
    return;
}

009-1.gat,82,41,0|script|MillyDebugHelper|114,
{
    mes "You can set certain quests as finished or not finished. What would you like to do?";
    menu
        "Bone Knife Quest done.", L_DBoneKnife,
        "Rossy Quest done.", L_DRossy,
        "Cindy Quest done.", L_DCindy,
        "Setzer Quest done.", L_DSetzer,
        "Gain 5000 Boss Points.", L_DBossPoints,
        "Bone Knife and Setzer Quest not done.", L_NBoneKnife,
        "Rossy Quest not done.", L_NRossy,
        "Cindy Quest not done.", L_NCindy,
        "Setzer Quest not done.", L_NSetzer,
        "Remove all Boss Points.", L_NBossPoints,
        "Nothing.", L_Close;

L_DBoneKnife:
    set QUEST_Forestbow_state, (QUEST_Forestbow_state & ~(NIBBLE_2_MASK)) | (4 << NIBBLE_2_SHIFT);
    mes "Bone Knife quest set to completed.";
    close;

L_DSetzer:
    set QUEST_Forestbow_state, (QUEST_Forestbow_state & ~(NIBBLE_2_MASK)) | (4 << NIBBLE_2_SHIFT);
    set QUEST_Forestbow_state, (QUEST_Forestbow_state & ~(NIBBLE_3_MASK)) | (8 << NIBBLE_3_SHIFT);
    mes "Setzer quest set to completed. This includes the Bone Knife quest.";
    close;

L_DRossy:
    set FLAGS, FLAGS | FLAG_ROSSI_COMPLETED;
    mes "Rossy quest set to completed.";
    close;

L_DCindy:
    set QUEST_Nivalis_state, (QUEST_Nivalis_state & ~(NIBBLE_5_MASK)) | (4 << NIBBLE_5_SHIFT);
    mes "Cindy quest set to completed.";
    close;

L_DBossPoints:
    set BOSS_POINTS, 5000;
    mes "Boss Points set to 5000.";
    close;

L_NBoneKnife:
    set QUEST_Forestbow_state, (QUEST_Forestbow_state & ~(NIBBLE_2_MASK)) | (0 << NIBBLE_2_SHIFT);
    set QUEST_Forestbow_state, (QUEST_Forestbow_state & ~(NIBBLE_3_MASK)) | (0 << NIBBLE_3_SHIFT);
    mes "Bone Knife and Setzer quest set to not completed.";
    close;

L_NSetzer:
    set QUEST_Forestbow_state, (QUEST_Forestbow_state & ~(NIBBLE_3_MASK)) | (0 << NIBBLE_3_SHIFT);
    mes "Bone Knife and Setzer quest set to not completed.";
    close;

L_NRossy:
    set FLAGS, FLAGS & ~FLAG_ROSSI_COMPLETED;
    mes "Rossy quest set to not completed.";
    close;

L_NCindy:
    set QUEST_Nivalis_state, (QUEST_Nivalis_state & ~(NIBBLE_5_MASK)) | (0 << NIBBLE_5_SHIFT);
    mes "Cindy quest set to not completed.";
    close;

L_NBossPoints:
    set BOSS_POINTS, 0;
    mes "Boss Points set to 0.";
    close;

L_Close:
    close;

OnInit:
    if (!debug)
        disablenpc "MillyDebugHelper";
}