summaryrefslogtreecommitdiff
path: root/npc/008-2-4/olana.txt
blob: cbb4f1b533b5f08fef27c771fb39ef62409042d1 (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
// The Mana World scripts.
// Author:
//    Micksha
//    Jesusalva
//    Alastrim
//    Ali-g
//    Dark Mage
// Description:
//    Olana, the old woman who is looking for her daughter Rossy and Juliet.
// HurnscaldQuests_Rossy
//      0 - Quest Not Assigned
//      1 - Asked to look for Rossy


008-2-4,30,28,0	script	Olana	NPC_OLANA,{
    function olanaIntro;
    function olanaIntroDone;
    function olanaRossyLie;
    function olanaDeliverBerries;
    function olanaGetLetter;
    function olanaRossyGoodGirl;
    function olanaRossyBadMom;
    function olanaRossyHappy;
    .@q=getq(HurnscaldQuests_Rossy);
    if (BaseLevel < .minLevel)
        .@q = -1; // Hard Reset
    mesn;
    mesq l("Oh, a traveler. Welcome.");
    next;
    switch (.@q) {
    case 0:
        olanaIntro();
        break;
    case 1:
        olanaIntroDone();
        break;
    case 2:
        olanaRossyLie();
        break;
    case 3:
        mesc l("%s smiles at you, but she still seems preoccupied.", .name$);
        next;
        mesc l("Rossy was collecting fruits, right? Maybe she has some idea on how to cheer her mother up?");
        break;
    case 4:
        olanaDeliverBerries();
        break;
    case 5:
        olanaGetLetter();
        break;
    case 6:
    case 7:
    case 8:
    case 9:
        mesn;
        mesq l("Please bring Hocus' letter to my daughter as fast as you can.");
        break;
    case 10:
        olanaRossyGoodGirl();
        break;
    case 11:
        mesn;
        mesc l("%s says absently-minded, while staring at a portrait of her daughters, Rossy and Juliet:");
        mesq l("Could you do me a favor? Could you bring her %d %s? I am sure she will love them!", 15, getitemlink(ARedRose));
        break;
    case 12:
        olanaRossyBadMom();
        break;
    case 13:
        mesn;
        mesq l("Please, tell Rossy I am really sorry and buy her Red Tulips instead, the same amount - %d, her age.", 15);
        break;
    case 14:
        olanaRossyHappy();
        break;
    case 15:
    case 16:
        mesn;
        mesq l("Where is Juliet? I want to know where she is! Please find her, %s!", strcharinfo(0));
        break;
    case 17:
        mesn;
        mesq l("Juliet got home sound and safe thanks to you, %s. I'll be eternally grateful.", strcharinfo(0));
        next;
        mesn;
        mesq l("Rossy and Juliet are out there, playing again. Please, feel free to play with them or to come here for a cup of water.");
        break;
    default:
        speech
        l("Did you see my daughters Rossy and Juliet, by chance?"),
        l("She wasn't at home for two days now. I worry about her!"),
        lg("If you see her, please tell her to come home.");
    }
    close;

function olanaIntro {
    mesn;
    mesq l("This is a private room from the Rusty Pick. You see, my father owns this inn.");
    next;
    mesn;
    mesq l("I moved to Tulimshar so my daughters – Rossy and Juliet – could learn magic, but we come back to Hurnscald on occasion.");
    next;
    mesn;
    mesc l("Olana suddenly looks very pale and starts to shiver.");
    mesq l("Which reminds me - I let my two lovely girls play in the woods nearby but they haven't come back yet!");
    next;
    mesn;
    mesq l("These forests are not safe; I am afraid they might have wandered in the swamps by accident.");
    next;
    mesn;
    mesq l("Could you pretty please see if they're fine? I can book you this inn for a night after that.");
    next;
    if (askyesno() == ASK_NO) {
        mesn;
        mesq l("Well, you *do* look weak, I guess I would get worried if you went after them and ended up lost and on the swamps.");
        next;
        mesn;
        mesq l("But if you change your mind, please, call me again.");
        return;
    }
    mesn;
    mesq l("Excellent! I am counting on you!");
    setq HurnscaldQuests_Rossy, 1;
    return;
}

function olanaIntroDone {
    mesn;
    mesq l("My daughters – Rossy and Juliet – went to play in the woods but haven't come back yet.");
    next;
    mesn;
    mesq l("Could you pretty please see if they're fine? I can book you this inn for a night after that.");
    return;
}

function olanaRossyLie {
    mesn;
    mesq l("Have you found my daughters yet? %%i");
    next;
    select
        l("No, sorry, I'll keep looking."),
        l("I saw Rossy, she is fine."),
        l("Yes, a snail attacked them.");
    mes "";
    if (@menu == 1) {
        mesn;
        mesq l("Please do, I'm worried about them....");
        return;
    }
    if (@menu == 3) {
        mesn;
        mesq l("Oh noes!!!!");
        next;
        mesc l("%s faints.", .name$);
        mesc l("Maybe we could have told her that in a better way.");
        return;
    }
    mesn;
    mesq l("Oh you did? That's good. I'm relieved. But what about Juliet?");
    next;
    select
        l("I haven't found Juliet yet, sorry."),
        l("Well, Rossy told both of them were fine...");
    mes "";
    mesn;
    mesq l("Ok. They must be playing hide and seek. Thanks again... I can't express how grateful I am.");
    next;
    setq HurnscaldQuests_Rossy, 3;
    mesn;
    mesq l("I'll now book you a room on the Inn.");
    select
        l("Thanks."),
        lg("Actually, please don't. I do this out of the goodness of my heart.");
    mes "";
    // Do not register the inn
    if (@menu == 2) {
        mesn;
        mesq l("Oh... Okay, then!");
        return;
    }
    // Register the inn
    INN_REGISTER = RUSTYPICK_INN;
    PC_IS_DEAD = false;
    savepoint "008-2-4", 26, 27;
    return;
}

function olanaDeliverBerries {
    mesn;
    mesq l("Hello there.");
    next;
    select
        l("Erm, hi."),
        l("Hi, Rossy asked me to give you this. She says it is a gift from both her and Juliet.");
    mes "";
    if (@menu == 1)
        return;
    mesn;
    mesq l("Ohhh... How sweet... Sometimes Rossy impresses me with her kindness. Here... You are spending so much time helping us, and we give nothing back. Take this as a small reward.");
    quest_xp(.maxLevel, 2000);
    quest_jxp(.maxLevel, 200);
    quest_gp(.maxLevel, 10000);
    setq HurnscaldQuests_Rossy, 5;
    next;
    mesn;
    mesq lg("Could you do me a small favor, though? I know I barely know you, and you must be very busy, but...");
    next;
    olanaGetLetter();
    return;
}

function olanaGetLetter {
    mesn;
    mesq l("Would you mind giving this letter to my little Rossy? You see, Rossy and Juliet are enrolled at Tulimshar Magic School...");
    next;
    mesn;
    mesq l("Rossy is doing alchemy, and I received a letter signed by Hocus, the Grandmaster. She did not submit her exam before we travelled, and now she is running out of time...");
    next;
    mesn;
    mesq l("Pretty please?");
    next;
    if (askyesno() == ASK_NO)
        return;
    mesn;
    mesq l("Thank you again. Please, bring it to her as fast as you can.");
    setq HurnscaldQuests_Rossy, 6;
    return;
}

function olanaRossyGoodGirl {
    mesn strcharinfo(0);
    select
        l("Rossy passed her exam.");
    mes "";
    mesn;
    mesq l("That's a relief to hear! I'm so proud of her.");
    next;
    mesn;
    mesq l("Could you do me a favor? Could you bring her %d %s? I am sure she will love them!", 15, getitemlink(ARedRose));
    next;
    select
        l("Okay, I'll get the roses and give them to her."),
        l("What? No way!");
    mes "";
    if (@menu == 2)
        return;
    mesn;
    mesq l("I know this won't be enough, but here is %d E to help you.", 50);
    next;
    mesn;
    mesq l("After you get them, please deliver them to my brilliant daughter, Rossy.");
    Zeny+=50;
    setq HurnscaldQuests_Rossy, 11;
    return;
}

function olanaRossyBadMom {
    mesn;
    mesq l("Did she like my present?");
    next;
    select
        l("Sure she did..."),
        l("Well, you should have known that your daughter is allergic to roses.");
    mes "";
    if (@menu == 1) {
        mesn;
        mes "%%H";
        return;
    }
    mesn;
    mesq l("Oh, how stupid I am! Here, take some of my money and buy Red Tulips instead, the same amount. Keep the flowers.");
    next;
    mesn;
    mesq l("Please, tell Rossy I am really sorry. My mind was on Juliet when I asked you to bring the red roses — they are her favorite.");
    next;
    mesn strcharinfo(0);
    select
        l("I will give her the tulips when I see her.");
    mes "";
    mesn;
    mesq l("Thank you. And don't forget to tell her that I'm really sorry.");
    Zeny+=450;
    setq HurnscaldQuests_Rossy, 13;
    return;
}

function olanaRossyHappy {
    mesn;
    mesq l("So?");
    next;
    select
        l("Rossy was happy with your gift, and asked me to say you are the nicest mother in the world.");
    mes "";
    mesn;
    mesq l("I'm so glad to hear that! But, have you seen Juliet too, by any chance?");
    next;
    select
        l("Erm, no, sorry."),
        l("I'm sure she is fine.");
    mes "";
    mesn;
    mesq l("For some reason, I can't get off my mind she is in danger... Motherly instincts.");
    next;
    mesn;
    mesq l("For now, I should reward you for all your effort thus far.");
    .@item=any(Diamond, Ruby, Emerald, Sapphire, Topaz, Amethyst);
    inventoryplace .@item, 1;
    setq HurnscaldQuests_Rossy, 15;
    getitem .@item, 1;
    next;
    mesn;
    mesq l("But please, could you look for Juliet as well? I'm starting to get deeply worried, here.");
    return;
}

OnInit:
    .distance = 4;
    .minLevel = 40;
    .maxLevel = 80; // Differs from Juliet/Rossy
    end;
}