summaryrefslogtreecommitdiff
path: root/npc/003-0-1/audsbel.txt
blob: 05954af3ca72c74448d12eded89044f7779a277d (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
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
// TMW2 scripts.
// Authors:
//    Jesusalva
// Description:
//    One of the Mana Magic Leaders
//    Planned, there are only the five Mana Wizards: Auldsbel (Tulimshar), Sagratha (Woodlands), Morgan (Candor), Blue Sage (Nivalis), Lalica (LoF).

//    Gives #parum
//    Gives #mkpot
//    Quest step 11 doesn't exist - legacy debug

003-0-1,81,27,0	script	Auldsbel	NPC_AULDSBEL,{
    mesn l("Auldsbel the Wizard");
    mesq l("Welcome back, Padric!");
    mesq l("Do you believe I've lost my @@? I can't see anything well without that! %%a", getitemlink(Googles));
    if (countitem(Googles))
        mesq l("I'm not interested in yours, by the way.");
    next;
    mesn;
    mesq l("Anyway, I am one of the few Mana Wizard, and I love Transmutation!");
    next;

L_Main:
    select
        rif(MAGIC_LVL, l("What's the difference from a Mana Wizard and a Mage?")),
        l("Who are you? Where are you from?"),
        rif(MAGIC_LVL, l("How do I advance in Mana Magic? How it works?")),
        rif(MAGIC_LVL, l("What do you know about other Mana Magic Professors?")),
        rif(MAGIC_LVL, l("Can you teach me Mana Magic?")),
        l("Do you still need help with your experiments?"),
        l("Actually, I gotta go, see ya!");

    mes "";
    switch (@menu) {
        case 1: // What's the difference from a Mana Wizard and a Mage?
            if (MAGIC_LVL < 2) {
                mesn;
                mesn;
                mesq l("%%4 Haven't you read your Grimorium yet?!");
                next;
                mesn;
                mesq l("%%@ You can get Magic by joining class and subclass, and with some NPCs. These work out-of-box. Easy.");
                next;
                mesn;
                mesq l("And there is the Mana Magic, for the pro %%e You'll waste your life on that, as it have an experience system.");
                next;
                mesn;
                mesq l("%%G Just like normal magic, you need power from the Mana Stone, which is based on your levels, intelligence, and mana.");
                next;
                mesn;
                mesq l("I like Mana Magic the best, as we can both summon creatures as transmutate stuff. %%N");
                next;
            } else {
                mesn;
                mesq l("Well, long story short, we have two magic systems. One works out of box. The later one, is the Mana Magic.");
                next;
                mesn;
                mesq l("Mana Magic is less reliable and have an experience system. It's the most common for summoning and transmutation.");
                next;
                mesn;
                mesq l("I could explain this better, but you are just a noob at magic, if you understand me.");
                next;
            }
            mesn;
            mesq l("To be honest, you should use both. And remember, all Mana Magic skills can be used like they were @sk-commands. %%H");
            next;
            break;
        case 2: // Who are you? Where are you from?
            mesn;
            mesq l("Well, speaking a bit about myself can't hurt. I am a member from the Magic Council, but one day I decided to take a vacations.");
            next;
            mesn;
            mesq l("I moved to Hurnscald, stayed there for over a decade, until Lord Transmogrifier Pontorias the Plaid (May His Shape Reflect His Soul Forever) died.");
            next;
            mesn;
            mesq l("Then I returned to Tulimshar. Now I do research, vote on the Magic Council meetings, and I also teach young mages about Transmutation magic.");
            next;
            break;
        case 3: // How do I advance in Mana Magic? How it works?
            mesn;
            mesq l("Mana Magic works similar to regular magic: You can find it on your skill window, and can drag it to your shortcut list.");
            next;
            mesn;
            mesq l("To get more experience and magic power, you must practice magical spells.  Make sure to vary them; you will learn nothing if you cast the same spell over and over. Also, spells that consume no components seem not to be very instructive in practice.");
            next;
            mesn;
            mesq l("Usually, you can find magic on these buildings, but watch out, there is magic to be found elsewhere, and some items are bound with it!");
            next;
            mesn;
            mesq l("While on normal magic you must take care with all attributes, on mana magic, you usually only need to worry with reagents and intelligence.");
            next;
            mesn;
            mesq l("Also, unlike regular magic which may cause delay before and after, Mana Magic usually only have a cooldown. But it is hard to know how long that cooldown is..."); // We may use addtimer() on one or other spell.
            next;
            break;
        case 4: // What do you know about Sagratha?
            mesn;
            mesq l("Lemme see... Sagratha is often regarded as a kind and rather powerful elf lady mage... who hate people.");
            next;
            mesn;
            mesq l("And I'm not talking only about humans here! But perhaps, if you build a good reputation, she teaches you something.");
            next;
            mesn;
            mesq l("There's also Morgan, who lives in Candor. She is a Redy, and is married with Zitoni. They are great alchemists.");
            next;
            mesn;
            mesq l("By last, there was the Blue Sage, living on Nivalis... I never met him outside the Council.");
            next;
            mesn;
            mesq l("As you see, you can count the mages with the fingers of one hand. It's not just Mana Magic, either - Magic in overall is almost dead, with almost every Mana Stone on the power of the Monster King.");
            next;
            mesn;
            mesq l("Defeating him would not only stop monster invasions, but it would also bring magic back... And probably another war, over the mana stones. %%S");
            next;
            break;
        // Teaching and helping are bound one to other, to save space on variable e.e
        case 5: // Can you teach me Mana Magic?
        case 6: // Do you still need help with your experiments?
            goto L_Magic;
            break;
        default: // Actually, I gotta go, see ya!
            goodbye;
            closedialog;
            close;
    }
    goto L_Main;

L_Magic:
    .@q=getq(General_Auldsbel);
    switch (.@q) {
    // Help on research to gain his favor
    case 0:
        mesn;
        mesq l("I actually need help. Padric and I were doing some research with catalysts, you see.");
        next;
        mesn;
        mesq l("Now I need 20 @@, 20 @@ and 60 @@ to finish my research. Easy materials, except for the Shadow Herb.", getitemlink(MauveHerb), getitemlink(ShadowHerb), getitemlink(SilkCocoon));
        next;
        mesn;
        mesq l("Shadow Herb only grows on dangerous places, and is mostly found on the Land Of Fire, or underground of very very deep caves.");
        next;
        select
            l("I'll try to find them."),
            l("I actually have them, here.");
        if (@menu == 2) {
            mes "";
            mesn;
            mesq l("Excellent! Let me see...");
            next;
            if (
                countitem(MauveHerb) < 20 ||
                countitem(ShadowHerb) < 20 ||
                countitem(SilkCocoon) < 60)
                    goto L_Lie;
            delitem MauveHerb, 20;
            delitem ShadowHerb, 20;
            delitem SilkCocoon, 60;
            getexp 2500, 0;
            Zeny=Zeny+250;
            setq General_Auldsbel, 1;
            mesn;
            mesq l("Yes, many thanks. This will help me a lot.");
            mesc l("Gained 2500 XP and 250 GP");
        }
        break;
    // Learn #parum
    case 1:
        if (MAGIC_LVL < 1)
            goto L_Magicless;
        mesn;
        mesq l("Hmm, I think I can teach you a basic Mana Skill now. That one is pretty simple.");
        next;
        skill(TMW2_PARUM,1,0);
        setq General_Auldsbel, 2;
        mesn;
        mesq l("This is the @@ skill. It transmutes a single @@ in a @@.", "##B@sk-parum##b", getitemlink(RawLog), getitemlink(MoubooFigurine));
        next;
        mesn;
        mesq l("It may also create some @@ or a @@, with enough skill.", getitemlink(Arrow), getitemlink(WoodenLog));
        next;
        mesn;
        mesq l("So! Please transmute a @@ and bring it to me. You may need to switch with another mana skill, until you are successful.", getitemlink(MoubooFigurine));
        break;
    // Bring the Mouboo figurine back
    case 2:
        mesn;
        mesq l("Have you managed to transmute the @@ I asked for?", getitemlink(MoubooFigurine));
        next;
        if (askyesno() == ASK_YES) {
            if (!countitem(MoubooFigurine)) goto L_Lie;
            if (!MAGIC_EXP) goto L_Lame;
            delitem MoubooFigurine, 1;
            getexp 5000, 0;
            setq General_Auldsbel, 3;
            mesn;
            mesq l("Very well - Congratulations! That was very easy, though, and this one is full of imperfections.");
            mesc l("Gained 5000 XP");
            next;
            mesn;
            mesq l("That skill was only to allow you to practice. Now listen well: Transmutation is ##BNOT##b crafting!");
            next;
            mesn;
            mesq l("Magic is sacred. With transmutation, you can create convenience items, specially reagents for other magic skills.");
            next;
            mesn;
            mesq l("But it will not help you to craft something as complex as weapons or armors. If we catch you profaning this magic... I'll have you returned to the sea %%e");
            next;
            mesn;
            mesq l("This is just a friendly advise. We don't take magic lightly. And you shouldn't, either.");
        }
        break;
    // Help on research to gain his favor
    case 3:
        mesn;
        mesq l("I actually need help. I am a mage, and I'm feeling lazy to get the stuff I need.");
        next;
        mesn;
        mesq l("You don't seem to have anything better to do, anyway.");
        mesq l("Now please bring me @@/2 @@, @@/20 @@, @@/30 @@ and @@/70 @@ so I don't need to leave here and start travelling everywhere...", countitem(IcedBottle), getitemlink(IcedBottle), countitem(Root), getitemlink(Root), countitem(Potatoz), getitemlink(Potatoz), countitem(Moss), getitemlink(Moss));
        next;
        select
            l("I'll try to find them."),
            l("I actually have them, here.");
        if (@menu == 2) {
            mes "";
            mesn;
            mesq l("Excellent! Let me see...");
            next;
            if (
                countitem(IcedBottle)   <  2 ||
                countitem(Root)         < 20 ||
                countitem(Potatoz)      < 30 ||
                countitem(Moss)         < 70)
                    goto L_Lie;
            delitem IcedBottle,  2;
            delitem Root,       20;
            delitem Potatoz,    30;
            delitem Moss,       70;
            getexp 28692, 0;
            Zeny=Zeny+550;
            setq General_Auldsbel, 4;
            mesn;
            mesq l("Yes, many thanks. This will help me a lot.");
        }
        break;
    // Learn #mkpot
    case 4:
        if (MAGIC_LVL < 2)
            goto L_Magicless;
        mesn;
        mesq l("Hmm, I think I can teach you a basic Mana Skill now. This one is more advanced, though.");
        next;
        skill(TMW2_TRANSMIGRATION,1,0);
        setq General_Auldsbel, 5;
        mesn;
        mesq l("This is the @@ skill. It transmutes stuff into other stuff. I'll teach you some more recipes as class drag on.", "##B@sk-trans##b");
        next;
        mesn;
        mesq l("It may fail, and you might end up with something entirely unexpected, or nothing at all!");
        next;
        mesn;
        mesq l("Unlike Parum, you can use the skill points you get every time your job level rises. That will lower the mana cost and increase success chances.");
        next;
        mesn;
        mesq l("But please be picky with how you spend job points. They are hard to come by, and I'm not entirely sure you can change it later.");
        next;
        mesn;
        mesq l("Also, job levels get really hard to obtain after a while. The decision is up to you, just be aware there's that possibility.");
        break;
    // Help on research to gain his favor
    case 5:
        mesn;
        mesq l("Well, I decided to resume an old research of mine, now that I have a minion (you) to gather stuff for me.");
        next;
        mesn;
        mesq l("Now please be a good helper, and aid me by bringing:");
        mesc l("* @@/@@ @@", countitem(HastePotion), 10, getitemlink(HastePotion));
        mesc l("* @@/@@ @@", countitem(StrengthPotion), 10, getitemlink(StrengthPotion));
        mesc l("* @@/@@ @@", countitem(HerbalTea), 10, getitemlink(HerbalTea));
        mesc l("* @@/@@ @@", countitem(RedScorpionStinger), 25, getitemlink(RedScorpionStinger));
        mesc l("* @@/@@ @@", countitem(SilkCocoon), 100, getitemlink(SilkCocoon));
        next;
        select
            l("I'll try to find them."),
            l("I actually have them, here.");
        if (@menu == 2) {
            mes "";
            mesn;
            mesq l("Excellent! Let me see...");
            next;
            if (!transcheck(
                HastePotion, 10,
                StrengthPotion, 10,
                HerbalTea, 10,
                RedScorpionStinger, 25,
                SilkCocoon, 100))
                    goto L_Lie;
            getexp 7500, 0;
            Zeny=Zeny+1250;
            setq General_Auldsbel, 6;
            mesn;
            mesq l("Thanks. I'm actually conducting experiments with scorpions. Please come back later.");
            mesc l("Gained 7500 XP and 1250 GP");
        }
        break;
    // Learn transmigration: Scorpion Stinger and Claw
    case 6:
        if (MAGIC_LVL < 2)
            goto L_Magicless;
        mesn;
        mesq l("Well, I'm currently researching scorpions, as you can imagine.");
        next;
        setq General_Auldsbel, 7;
        mesn;
        mesq l("I'll teach you how to transmute some parts of theirs. You can use it to convert a @@ into a @@, but not the other way around, for example.", getitemlink(BlackScorpionStinger), getitemlink(RedScorpionStinger));
        next;
        mesn;
        mesq l("This have many uses. Maybe. Anyway, I'm soon done with my experiment, so please come back later.");
        close; // On purpose
        break;
    // Help on research to gain his favor
    case 7:
        mesn;
        mesq l("Hmm... See, the thing is that transmuting living beings is not normally something that transmutation magic can do.");
        next;
        mesn;
        mesq l("But I will not give up on my little experiment. Incidentally, Snakes are shaddy enough for my experiment. I promise you, I'll succeed this time.");
        next;
        mesn;
        mesq l("Oh. And don't mention anyone what I'm researching here. No need to fuss over minor things, don't you agree? It's totally not shaddy. Not shaddy at all!");
        next;
        mesn;
        mesq l("Now please be a good helper, and aid me by bringing:");
        mesc l("* @@/@@ @@", countitem(MountainSnakeTongue), 15, getitemlink(MountainSnakeTongue));
        mesc l("* @@/@@ @@", countitem(SnakeTongue), 15, getitemlink(SnakeTongue));
        mesc l("* @@/@@ @@", countitem(CaveSnakeTongue), 15, getitemlink(CaveSnakeTongue));
        mesc l("* @@/@@ @@", countitem(MountainSnakeEgg), 15, getitemlink(MountainSnakeEgg));
        mesc l("* @@/@@ @@", countitem(SnakeEgg), 15, getitemlink(SnakeEgg));
        mesc l("* @@/@@ @@", countitem(CaveSnakeEgg), 15, getitemlink(CaveSnakeEgg));
        next;
        select
            l("I'll try to find them."),
            l("I actually have them, here.");
        if (@menu == 2) {
            mes "";
            mesn;
            mesq l("Excellent! Let me see...");
            next;
            if (!transcheck(
                MountainSnakeTongue, 15,
                SnakeTongue, 15,
                CaveSnakeTongue, 15,
                MountainSnakeEgg, 15,
                SnakeEgg, 15,
                CaveSnakeEgg, 15))
                    goto L_Lie;
            getexp 20000, 0;
            Zeny=Zeny+2500;
            setq General_Auldsbel, 8;
            mesn;
            mesq l("Thanks. Snakes seems promising indeed! Maybe they work where scorpions failed. If I succeed, I promise I'll teach you the spell. But for now...");
            mesc l("Gained 20000 XP and 2500 GP");
        }
        break;
    // Learn transmigration: Snake Egg, Tongue, Skin
    case 8:
        if (MAGIC_LVL < 3)
            goto L_Magicless;
        mesn;
        mesq l("Well, I have not finished my research on snakes yet, but I'm pretty sure in how to transmute their parts.");
        next;
        setq General_Auldsbel, 9;
        mesn;
        mesq l("Here, look at how it is done. Focus. You can use it to convert a @@ into a @@, but not the other way around, for example.", getitemlink(MountainSnakeSkin), getitemlink(SnakeSkin));
        next;
        mesn;
        mesq l("Be careful as not everybody likes transmuted monster parts. Some may even see it as a foul thing. Anyway. Come back later.");
        close; // On purpose
        break;
    // Help on research to gain his favor
    case 9:
        mesn;
        // Obviously wrong, have you never read about butterflies?
        mesq l("So... I think I'm almost done! My plan is to force a @@ into being a pretty Butterfly. Hey, I like cute things!", getitemlink(SilkCocoon));
        next;
        mesn;
        mesq l("Besides, there are no Butterflies in Tulimshar, and they could help the farm in getting producing food.");
        next;
        mesn;
        mesq l("This time, I only a few last reagents and I'll finally attempt it... I want you to witness it. I'll teach you the spell later, of course.");
        mesc l("* @@/@@ @@", countitem(ManaPiouFeathers), 5, getitemlink(ManaPiouFeathers));
        mesc l("* @@/@@ @@", countitem(IceCube), 1, getitemlink(IceCube));
        mesc l("* @@/@@ @@", countitem(OceanCrocClaw), 1, getitemlink(OceanCrocClaw));
        next;
        select
            l("I'll try to find them."),
            l("I actually have them, here.");
        if (@menu == 2) {
            mes "";
            mesn;
            mesq l("Excellent! Let me see...");
            next;
            if (!transcheck(
                ManaPiouFeathers, 5,
                IceCube, 1,
                OceanCrocClaw, 1))
                    goto L_Lie;
            mesn;
            mesq l("Now lo and behold... The ultimate... TRANSMUTATION!");
            // Pray that you don't get disconnected now
            next;
            getexp 10000, 500;
            setq General_Auldsbel, 10;
            npctalk l("@@... I think something went wrong... RUN!!", strcharinfo(0));
            .@mob=monster(.map$, .x, .y, "Failed Experiment", GrassSnake, 1, .name$+"::OnSnakeDeath");
            specialeffect FX_MAGIC, SELF, getcharid(3);
            specialeffect FX_MGWARP, SELF, .name$;
            specialeffect FX_ATTACK, AREA, .@mob;
            // TODO: Maybe we should use unitattack()? Not need but...
            // We could also reconfigure this snake Mode to exclude ChangeTarget
            closeclientdialog;
            close;
        }
        break;
    // Learn Halhiss, completing Audsbel Quest
    case 10:
        // Actually, that's lv 60... Learning a lv 40 spell '-'
        if (MAGIC_LVL < 3)
            goto L_Magicless;
        if (mobcount(.map$, .name$+"::OnSnakeDeath")) {
            mesn;
            mesq l("Could you please dispose my failed experiment, first?");
            close;
        }
        mesn;
        mesq l("*sigh* Yet another failure... Transmutation and Nature Magic doesn't marry well.");
        next;
        skill(TMW2_HALHISS,1,0);
        setq General_Auldsbel, 12;
        mesn;
        mesq l("Next time, I'll ask Sagratha to help. Heh. I doubt that's going to happen. By the way, this is the @@ spell. It summons snakes...", b("@sk-halhiss"));
        next;
        mesn;
        mesq l("You need a @@ for it. Ah, back to research I guess...", getitemlink(SnakeEgg));
        next;
        break;
    default:
        mesn;
        mesq l("Uhm, no, not really. Maybe later, who knows?");
        break;
    }
    next;
    goto L_Main;


// Fallbacks
L_Magicless:
    mesn;
    mesq l("Well, you helped me. That's great! One hand washes the other, so, I'm willing to share knowledge with you.");
    next;
    mesn;
    mesq l("But unless you touch a Mana Stone and get stronger magic, that would be as useful as teaching magic to a wall. No offense.");
    next;
    mesn;
    mesq l("So, please, come to me with stronger magic powers. And then, I'll teach you a new magic spell.");
    close;

L_Lie:
    mesn;
    mesq l("Really interesting, how I am NOT seeing the items I asked for...");
    next;
    mesn;
    mesq l("Say, what do you think if I transmuted your head into the missing materials? I can warrant your soul won't return to the Soul Menhir, either!");
    close;

L_Lame:
    setparam(MaxHp, readparam(MaxHp)-50); // I want to see how permanent this is
    setparam(MaxSp, readparam(MaxSp)-25); // I want to see how permanent this is
    //setparam(Karma, readparam(Karma)-1); // testing
    mesn;
    mesq l("%%3 You sadden me. That was so, so lame. I will need to punish you. Sorry. Superior orders. %%S");
    next;
    mesn strcharinfo(0);
    mesq l("%%i What, my maximum life and mana just decreased! Noooo!!");
    next;
    mesn;
    mesq l("%%1 Cheer up, these should go back to normal when you level up. Just don't do that again!");
    // If that is true or not, remains to be checked. Uh... I never used setparam() before! :D
    close;

OnSnakeDeath:
    end;

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