summaryrefslogtreecommitdiff
path: root/npc/017-3/doctor.txt
blob: d9de506f66ecda286cb36794c466a5c9e78ee2f4 (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
// TMW2/LoF scripts.
// Authors:
//    TMW-LoF Team
//    Jesusalva
// Description:
//    Part from THE EPISODE quest
// Reference:
//    http://forums.landoffire.org/viewtopic.php?f=7&t=1320&sid=80d2c735b55ccb06a39955a8fbca3913

017-3,75,68,0	script	The Doctor	NPC_LOF_DOCTOR,{
    showavatar NPC_LOF_DOCTOR;
    .@q=getq(LoFQuest_EPISODE);
    if (BaseLevel < 30) goto L_Weak;
    if (.@q == 13) goto L_Poison;
    if (.@q == 14) goto L_TimeFlask;
    if (.@q == 15) mesc l("You don't look so well, have you already used the %s to defeat the Soul Eater?", getitemlink(TimeFlask)), 1;
    if (.@q == 1) goto L_Check;
    if (.@q == 2 && BaseLevel >= 40) goto L_Miler;
    if (.@q >= 2) goto L_Tea;
    mesn;
    mesq l("Quite interesting, quite interesting indeed.");
    menu
        l("Um, might I ask, what is so interesting?"), L_Intro,
        l("Yes, uhh, very interesting indeed. Haha. I better leave..."), -;
    mes "";
    mesc l("@@ stares you as you slowly get away from him. Odd person.", .name$);
    close;

L_Intro:
    mes "";
    mesn;
    mesq l("Well, you are. You're quite interesting. I've been watching you for some time now, as you've been helping so many people: you're quite a master at what you do, you know.");
    menu
        l("Well, thanks."), L_IntroContinue,
        l("Ok then... Uh... Please excuse me....."), -;
    mes "";
    mesc l("@@ stares you as you slowly get away from him. Odd person.", .name$);
    close;

L_IntroContinue:
    mes "";
    mesn;
    mesq l("I don't suppose you have some herbs and a few bottles of potion with you, do you?");
    menu
        l("'Some herbs and potion'? Could you be more specific?"), L_IntroSpecify,
        l("Certainly not. Uhh, please excuse me."), -;
    mes "";
    mesc l("@@ stares you as you slowly get away from him. Odd person.", .name$);
    close;

L_IntroSpecify:
    mes "";
    mesn;
    mesq l("Ah, sorry, of course. I need quite a few herbs, look:");
    mesc l("@@/150 @@", countitem(MauveHerb), getitemlink(MauveHerb));
    mesc l("@@/150 @@", countitem(CobaltHerb), getitemlink(CobaltHerb));
    mesc l("@@/150 @@", countitem(GambogeHerb), getitemlink(GambogeHerb));
    mesc l("@@/100 @@", countitem(AlizarinHerb), getitemlink(AlizarinHerb));
    mesc l("@@/50 @@", countitem(ShadowHerb), getitemlink(ShadowHerb));
    mesc l("@@/10 @@", countitem(HastePotion), getitemlink(HastePotion));
    menu
        l("That shouldn't been too hard, but do I get something in return?"), L_IntroReward,
        l("O.o \"That's a lot. Maybe another day.\""), -;
    mes "";
    mesc l("@@ stares you as you slowly get away from him. Odd person.", .name$);
    close;

L_IntroReward:
    mes "";
    mesn;
    mesq l("I suppose, what would you like?");
    next;
    mesn;
    mesq l("Er, nevermind, I've thought of something to give you. You can go off now and get what I need.");
    setq LoFQuest_EPISODE, 1;
    close;

L_Check:
    mesn;
    mesq l("Did you brought what I asked for?");
    mesc l("@@/150 @@", countitem(MauveHerb), getitemlink(MauveHerb));
    mesc l("@@/150 @@", countitem(CobaltHerb), getitemlink(CobaltHerb));
    mesc l("@@/150 @@", countitem(GambogeHerb), getitemlink(GambogeHerb));
    mesc l("@@/100 @@", countitem(AlizarinHerb), getitemlink(AlizarinHerb));
    mesc l("@@/50 @@", countitem(ShadowHerb), getitemlink(ShadowHerb));
    mesc l("@@/10 @@", countitem(HastePotion), getitemlink(HastePotion));
    next;
    if (askyesno() != ASK_YES)
        close;
    inventoryplace HerbalTea, 5;
    if (
        countitem(MauveHerb) < 150 ||
        countitem(CobaltHerb) < 150 ||
        countitem(GambogeHerb) < 150 ||
        countitem(AlizarinHerb) < 100 ||
        countitem(ShadowHerb) < 50 ||
        countitem(HastePotion) < 10)
        goto L_Missing;
    delitem MauveHerb, 150;
    delitem CobaltHerb, 150;
    delitem GambogeHerb, 150;
    delitem AlizarinHerb, 100;
    delitem ShadowHerb, 50;
    delitem HastePotion, 10;
    getexp 7995, 0;
    setq LoFQuest_EPISODE, 2;
    getitem HerbalTea, 5;
    mesn;
    mesq l("Mmm, it's been so long since I have had herbal tea. You have my gratitude.");
    next;
    mesn strcharinfo(0);
    mesq l("Seriously? What sort of reward is that?");
    next;
    mesn;
    mesq l("Well, I suppose you can have some of my tea.");
    close;

L_Tea:
    mesn;
    mesq l("If you want, you can bring me some more of those herbs and potions.");
    mesc l("@@/30 @@", countitem(MauveHerb), getitemlink(MauveHerb));
    mesc l("@@/30 @@", countitem(CobaltHerb), getitemlink(CobaltHerb));
    mesc l("@@/30 @@", countitem(GambogeHerb), getitemlink(GambogeHerb));
    mesc l("@@/20 @@", countitem(AlizarinHerb), getitemlink(AlizarinHerb));
    mesc l("@@/10 @@", countitem(ShadowHerb), getitemlink(ShadowHerb));
    mesc l("@@/2 @@", countitem(HastePotion), getitemlink(HastePotion));
    menu
        rif(getq(LoFQuest_EPISODE) == 16, l("Actually, about the Soul Eater...")), L_Cont,
        l("Alright, I have them here!"), L_Check2,
        l("No thanks, see ya!"), -;
    close;

L_Check2:
    inventoryplace HerbalTea, 1;
    if (
        countitem(MauveHerb) < 30 ||
        countitem(CobaltHerb) < 30 ||
        countitem(GambogeHerb) < 30 ||
        countitem(AlizarinHerb) < 20 ||
        countitem(ShadowHerb) < 10 ||
        countitem(HastePotion) < 2)
        goto L_Missing;
    delitem MauveHerb, 30;
    delitem CobaltHerb, 30;
    delitem GambogeHerb, 30;
    delitem AlizarinHerb, 20;
    delitem ShadowHerb, 10;
    delitem HastePotion, 2;
    getexp 122, 12;
    getitem HerbalTea, 1;
    mesn;
    mesq l("Thanks, enjoy your tea! I will certainly enjoy mine!");
    close;

L_Weak:
    mesn;
    mesq l("Hmm, it's very interesting, very ... (mumbling).");
    close;

L_Missing:
    mesn;
    mesq l("Sorry, you do not have enough ingredients. You'd better search thoroughly.");
    close;

/////// Second Act
L_Miler:
    mesn;
    mesq l("Thank you for helping me make my tea. I hope the potions have been helpful...");
    next;
    mesn;
    mesq l("That reminds me. I have a friend in Nivalis named Miler who gave me some hints on the recipe. Would you take him a sample of what I gave you?");
    mesq l("If you've used all the ones I've given, you can always bring me more ingredients.");
    menu
        "I'll go right away.", -,
        "Ah, I suppose I need to gather more ingredients first...", -;
    setq LoFQuest_EPISODE, 3;
    close;

/////// Final Act
L_Poison:
    mesn;
    mesq l("%s, how in the world you got this status ailment?!", strcharinfo(0));
    next;
    select
        l("I don't know."),
        l("Henry gave something to drink.");
    mes "";
    mesn;
    mesq l("Listen, this is not a disease. No remedy can cure you, and it cannot be inflicted by consumables.");
    next;
    mesn;
    mesq l("Have you been fiddling with time? Anyway, this is not a disease, but a ##Bcomplex curse##b.");
    next;
    mesn;
    mesq l("This curse reclaims your soul to the Soul Eater. Except, she perished on the Great Fire.");
    next;
    mesn;
    mesq l("Meaning you must warp shortly before the Great Fire, defeat her, and be back before the Great Fire happen.");
    next;
    mesn;
    mesq l("For now, eat this. It'll improve your condition... for now. I don't know where you'll find a time travelling device, but if you find one, come to me. I'll help you.");
    setq LoFQuest_EPISODE, 14;
    sc_end SC_POISON;
    close;

L_TimeFlask:
    mesn;
    mesq l("If you don't defeat the Soul Eater before the Great Fire happens, which for the record, has already happened, your soul will slowly be reclaimed by her until your existence ceases to serve as fuel to bring back one of the greatest horrors of story.");
    next;
    if (!countitem(TimeFlask)) {
        mesn;
        mesq l("You better find a way to travel back in time soon!");
        close;
    }
    if (BaseLevel < 70) {
        mesn;
        mesq l("It'll be too dangerous if you're not at least level %d. But I'm sure you can grind the required level in no time; Don't let your body down! Exercise!", 70);
        close;
    } else if (BaseLevel < 80) {
        mesn;
        mesq l("Mhm, you're still weak, I would prefer you to be level %d+ before doing this, but... Whatever, you might even survive.", 80);
        next;
    }
    mesn;
    mesq l("This %s will do. I mean, it won't be a comfortable trip, but you are in an emergency situation.", getitemlink(TimeFlask));
    next;
    mesn;
    mesq l("Listen, I'll use a trick which I learned in, uh, a past life of mine, so if you die, reality resets your being.");
    next;
    mesn;
    mesq l("This means that if you die while in the past, you'll be brought back here as if you never traveled in time.");
    next;
    mesn;
    mesq l("Sounds awesome, but this will also reset a bunch of your progress... And with something as lame as a %s, you'll need quite a while to warp again. Uh, if you can, bring friends, the Soul Eater is... not to be trifled with.", getitemlink(TimeFlask));
    next;
    mesn;
    mesq l("I'll configure your flask to a few hours before the Great Fire breaks out. You're looking for \"The Queen's party\" hideout. Do you need a quick history lesson?");
    if (askyesno() == ASK_YES) {
        mes "";
        mesn;
        mesq l("Very well. The Platinum Red Queen died in her sleep and the Soul Eater took her role. But the Soul Eater was a tyrant and soon enough, \"she\" was murdered. A Council has taken over Tulimshar on the meanwhile and is doing intense research.");
        next;
        mesn;
        mesq l("This research caused a lot of neglect, so expect poverty and people unwilling to talk. Benjamin, head of the council, is doing a \"breaktrhough\" in the most literal sense possible (breaking through the whole town finances instead of revolutionizing the world).");
        next;
        mesn;
        mesq l("The situation is grim, and some want the return of the Platinum Red Queen. The \"Soul Eater\" is back, pretending to be her ghost, and the Black Razor believed on it. They made \"The Queen's Party\" and want to reinstate the queen.");
        next;
        mesn;
        mesq l("They haven't found Mana Stones yet, so no magic, but alchemy is strong. I don't know what caused the Great Fire, and the whole event is time-locked. You can ask Falkrun for more about the Great Fire. That's what you need to know for now.");
        next;
    }
    mes "";
    mesn;
    mesq l("Good luck, %s. You'll need it.", strcharinfo(0));
    setq LoFQuest_EPISODE, 15;
    close;

/////// Epilogue
L_Cont:
    mes "";
    mesn;
    mesc l("The doctor quickly analyzes you with some tool. Which looks like a screwdriver? Probably just a generic scanner, though.");
    mesq l("Gimme a second... Yes, you seem to be fine now, very well, congratulations!");
    next;
    inventoryplace MylarinDust, 1;
    select
        l("Why, thank you!"),
        l("It was a tough fight."),
        l("I met Elli.");
    mes "";
    if (@menu == 1) close;
    if (@menu == 2) {
        mesn;
        mesq l("I'm sure it was, now go rest a bit, you deserve it!");
        close;
    }
    mesc l("The doctor raises an eyebrow at you.");
    next;
    mesn;
    mesq l("Figures she would be involved. What did she say?");
    do
    {
        next;
        select
            l("Nothing important."),
            l("That she would stop the Soul Eater in past and future."),
            l("That she was one of the originals."),
            l("To defeat the Moubootaur.");
        mes "";
        switch (@menu) {
        case 1:
            mesn;
            mesq l("That's because you weren't paying attention!");
            next;
            mesn;
            mesq l("Listen, kid, one does not simply ignore Elli! She is too scary to be ignored!");
            break;
        case 2:
            mesn;
            mesq l("Of course. I bet Elli is the one who cursed you, who started the Great Fire and who put the time lock in place.");
            next;
            mesn;
            mesq l("She wanted the Soul Eater defeated. Destroying the whole world never stopped her before.");
            next;
            mesn;
            mesq l("She is a scary woman and you would do well to remember this.");
            break;
        case 3:
            mesn;
            mesq l("Ah, the originals. Had the displeasure to met a few of them in the past and in the future with my time machine.");
            next;
            mesn;
            mesq l("There are only four which you could want to know about.");
            next;
            mesn;
            mesq l("First, %s is the Guardian of Law and Order. He ensures all rules are followed, and if anything breaks them, he erases their existence.", b("Mr. Saves"));
            next;
            mesn;
            mesq l("For example, when an item is dropped to the ground, it rots away and disappear. It cannot be recovered. If an item were to break such rule, Mr. Saves would intervene.");
            next;
            mesn;
            mesq l("He is by far the most powerful, and has a few chosen ones to whom he granted what we call \"SQL Magic\". Everyone envies power, so there's the imitation of that, \"GM Magic\", but unrelated to Mr. Saves.");
            next;
            mesn;
            mesq l("Next we have %s. It guards the world itself and grants all kinds of magic.", b(l("The Mana Source")));
            next;
            mesn;
            mesq l("Then we have %s. You met her. She guards all Talpan beings, such as Humans, Elves, Reidys, Orcs and whatever. She is an evil woman. She grants nothing to her followers.", b(l("Elli")));
            next;
            mesn;
            mesq l("I miss Ms. De'Kagen, she was very benevolent but from another world. Why does this one only have annoying pricks for Originals. Wait, I'm getting sidetracked.");
            next;
            mesn;
            mesq l("The last one is %s. You will meet him in the future, so no spoilers. Time traveler word.", b(l("The Moubootaur")));
            break;
        }
    } while (@menu != 4);
    mesn;
    mesq l("Sorry, but no spoilers. You'll met the Moubootaur soon enough.");
    next;
    mesn;
    mesq l("He guards what you call \"monsters\", but he favor Mouboos. He is possibly the oldest of the Originals.");
    next;
    mesn;
    mesq l("He dislikes Talpans like you. The Mana Source chained him in ancient times, though, so the Talpans could flourish.");
    next;
    mesn;
    mesq l("After the Great Fire... you don't find our world's Elli ever again.");
    // The Great Fire is her final act. Elli is declared dead shortly after. The causes of her death are unknown but certainly violent. She likely knew her time was coming, and wanted both to get rid of the Soul Eater before this, as to ensure no one would miss her, adding her along the list of those claimed by the fire.
    next;
    mesn;
    mesq l("Keep following the path. Take this and... good luck.");
    getexp 300000, 0;
    getitem MylarinDust, 1;
    setq LoFQuest_EPISODE, 17;
    close;

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

}