summaryrefslogtreecommitdiff
path: root/npc/002-3/nard.txt
blob: 795d107b93f1fbab89ff1496460c128046ad7d31 (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
// TMW2 scripts.
// Authors:
//    Qwerty Dragon
//    Reid
//    Jesusalva
// Description:
//    Captain Nard dialogs.
//    Nard is a fair merchant ship's captain.
//    Original Nard's from Evol by Qwerty Dragon and Reid

002-3,36,25,0	script	Nard	NPC_NARD,{
    showavatar NPC_NARD;  // this is handled by avatars.xml

    .@narrator = getq(General_Narrator);

L_Checker:
    if (.@narrator) goto L_Travel;
    if (getq(ShipQuests_Julia) >= 3) goto L_NotYet;
    if (debug) goto L_TestServer;
    // Introduction
    mesn;
    mesq l("Hello.");
    next;
    mesq l("Let me introduce myself, I am Nard, captain of this ship.");
    next;
    mesq lg("I am pleased to see that you have woken up and are active. Elmo came here to tell me this good news!");
    next;
    mesq l("So, how do you feel? I see that Juliet did a marvellous job! You look like you're in good health now.");
    next;

    select
        lg("I feel ok."),
        l("Who's this Juliet?"),
        lg("I'm a bit sick...");
    mes "";
    switch (@menu) {
    case 1:
        mesn;
        mesq l("Good to know.");
        next;
        break;
    case 2:
        mesn;
        mesq lg("You have an awful case of amnesia. She is the nurse and shipkeeper of this ship, and took care of you when you were unconscious.");
        next;
        break;
    case 3:
        mesn;
        mesq l("Well, you'll need to get used to. Being seasick is annoying, so you might want to leave the ship as soon as possible.");
        next;
        break;
    }

L_Main:
    mesn;
    mesq l("We have made a stop at a little island, before making it on to the port of Tulimshar.");
    next;
    mesn;
    mesq l("Ship travels are not free. Also, I have a few friends on the Island, and I would like you to check out on them.");
    next;
    showavatar NPC_ELMO;
    setcamnpc instance_npcname("Elmo");
    mesn l("Elmo");
    mesq l("I, Elmo, captain's deputy, will help you to make the maximum possible money in Candor!");
    mesc l("Elmo has given you an EXP UP and DROP UP Boost until level 20!"), 2;
    mesc l("It also expires after two hours. In such case, talk to him again!"), 2;
    // Actually, why don't we apply it right now...?
    .@BONUS=NewcomerEXPDROPUP();
    specialeffect FX_SPECIAL, SELF, getcharid(3);
    mesc l("EXP Gain raised in @@% for one hour!", .@BONUS), 2;
    next;
    showavatar NPC_NARD;
    setcamnpc;
    mesn;
    mesq l("After that, we're going to Tulimshar. Tulim is the most important city on the world, and the Alliance have an office there.");
    next;
    mesn;
    mesq l("The Alliance can help you in finding out about who you are, why you are here, or from where you came from. So, about the tasks I want completed.");
    LOCATION$ = "Candor";
    setq ShipQuests_Julia, 3;
	// Event handling
	if ($EVENT$ == "Event")
		getitem MercCard_EH, 1;
    // Welcome handling
    if (!#REG_DATE) {
        $@WELCOME_TIMER=gettimetick(2)+900; // 15 minutes
        kamibroadcast("Hey, look, I've rescued \""+strcharinfo(0)+"\" from the sea! Who will @welcome them?!", "Nard");
        #REG_DATE=gettimetick(2);
    }
    next;
    .@price=800;
    mesc b(l(".:: Main Quest 1-3 ::.")), 3;
    msObjective(getq(CandorQuest_HAS) >= 4, l("* Help Ayasha to take care of the kids."));
    msObjective(getq(CandorQuest_Trainer) >= 12, l("* Get trained by Valon, in the big house."));
    msObjective(getq(CandorQuest_Barrel) >= 4, l("* Ask Zegas, the mayoress, if she needs help."));
    msObjective(Zeny >= .@price, l("* Collect @@/@@ GP", Zeny, .@price));

L_Referral:
    // Welcome handling
    if (!#REG_DATE) {
        $@WELCOME_TIMER=gettimetick(2)+600; // 10 minutes
        kamibroadcast("Hey, look, I've rescued \""+strcharinfo(0)+"\" from the sea! Who will @welcome them?!", "Nard");
        #REG_DATE=gettimetick(2);
    }
    // Referral program
    if (#REFERRAL_PROG == 0 && $REFERRAL_ENABLED) {
        next;
        clear;
        showavatar NPC_LOF_RICH;
        mesc l("But before, a message from our developers!"), 3;
        next;
        mesn l("TMW2 Staff");
        mesc l("Hello, and welcome to TMW2: Moubootaur Legends!"), 3;
        next;
        mesn l("TMW2 Staff");
        mesc l("Did you came here by someone advise? If yes, write their name down here!"), 3;
        next;
        mesc l("If this is not the case, just click on \"Send\"."), 3;
        .@ref$="";
        do
        {
            input .@ref$;
            //debugmes "Player invite: "+.@ref$;
            mes "";
            if (.@ref$ != "") {
                .@ref=gf_accid(strip(.@ref$));
                if (.@ref > 0) {
                    if (.@ref == getcharid(3)) {
                        mesn l("TMW2 Staff");
                        mesc l("Hahah, silly, that's yourself!"), 3;
                        mesc l("Try again!"), 3;
                        next;
                        .@ref$="";
                    } else {
                        #REFERRAL_PROG=.@ref;
                        getitembound FriendGift, 1, 1;
                        mesn l("TMW2 Staff");
                        mesc l("Well, welcome to the game! If you have any doubt, shout on #world for help!"), 3;
                        mesc l("Your friend also sent you a gift - open it when you get level 5!"), 3;
                        next;
                    }
                } else {
                    mesn l("TMW2 Staff");
                    mesc l("Oops, there is nobody known as @@ on this game.", .@ref$), 3;
                    mesc l("Could you try again? There could be a typo!"), 3;
                    next;
                    .@ref$="";
                }
            } else {
                .@ref$="None";
                mesn l("TMW2 Staff");
                mesc l("I see. Well, welcome to the game! If you have any doubt, shout on #world for help!"), 3;
                next;
            }
        } while (.@ref$ == "");
    showavatar NPC_NARD;
    }

    close;


L_NeedHelp:
    mes "";
    mesn;
    mesq l("You're pretty much stranded on this forsaken island if you don't help me!");
    next;
    mesq l("Also, I believe hard work always pay off.");
    next;
    goto L_NotYet;

L_CandorIsland:
    mes "";
    mesn;
    mesq l("I come here frequently to trade. It is not deserted nor boring.");
    next;
    mesq l("This is ##BCandor Island##b. A very small rich community lives here.");
    next;
    mesq l("If they were any bigger, monsters would come and kill everyone.");
    next;
    goto L_NotYet;

L_NotYet:
    .@price=800;
    mesc b(l(".:: Main Quest 1-1 ::.")), 3;
    msObjective(getq(CandorQuest_HAS) >= 4, l("* Help Ayasha to take care of the kids."));
    msObjective(getq(CandorQuest_Trainer) >= 12, l("* Get trained by Valon, in the big house."));
    msObjective(getq(CandorQuest_Barrel) >= 4, l("* Ask Zegas, the mayoress, if she needs help."));
    msObjective(Zeny >= .@price, l("* Collect @@/@@ GP", Zeny, .@price));
    mes "";
    select
        rif(Zeny >= .@price, l("I've brought the money you've asked for.")),
        rif(#REFERRAL_PROG == 0 && $REFERRAL_ENABLED && BaseLevel <= 10,
            l("I forgot to say earlier, but indeed, I was invited by someone!")),
        l("Captain, why have you brought me to a deserted boring island?!"),
        l("I don't want to help your \"friends\", bring me to somewhere useful!"),
        l("Please excuse me, captain.");

    mes "";
    if (@menu == 2)
        goto L_Referral;
    if (@menu == 3)
        goto L_CandorIsland;
    if (@menu == 4)
        goto L_NeedHelp;
    if (@menu == 5)
        close;

    mesn;
    if (TUTORIAL && (getq(CandorQuest_HAS)     < 4 ||
        getq(CandorQuest_Barrel)  < 4 ||
        getq(CandorQuest_Trainer) < 12)) {
        mesq l("You didn't help all my friends yet, and without trainment, I can't send you to such dangerous place as Tulimshar.");
        mesc l("NOTE: It is possible to play the game as a crafter/merchant/fisherman, avoiding to kill as much as possible. However, it is not possible to play the game with a total kill count of zero.");
        close;
    }
    // If you did less than 40% Candor quests, please be warned.
    if (reputation("Candor") < 40) {
        mesc l("WARNING: You have done less than %d%% of Candor Quests!", 40), 1;
        mesc l("It may be expensive to return here. Are you sure?"), 1;
        next;
        if (askyesno() == ASK_NO)
            close;
    }
    if (Zeny >= .@price) {
        inventoryplace TulimMap, 1;
        mesq l("Ten, fifty, thousand... Yep, this is the amount I've asked for.");
        next;
        getvaultexp(10);
        setq General_Narrator, 1;
        // Double sure
        setq ShipQuests_Julia, 3;
        Zeny = Zeny-.@price;
        EnterTown("Tulim");
        getitem TulimMap, 1;
        mesq l("Set sail! We're going to Tulimshar!");
        next;
        PC_DEST$="Tulim";
        addtimer nard_time(PC_DEST$)+800, .name$+"::OnNardStage";
        addtimer nard_time(PC_DEST$), "#NardShip::OnEvent";
        @timer_navio_running = 1;
        warp "002-5", 39, 26;
        closeclientdialog;
        end;
    } else {
        mesq l("You still haven't completed your tasks.");
        mes "";
        mesc l("You still need @@ GP for the trip to Tulimshar.", (.@price-Zeny));
    }
    close;

L_Travel:
    // Current nard_reputation() value for 100% discount: 15
    .@price=800;
    .@price-=min(780, nard_reputation()*54);

    mesn;
    mesq l("Hi @@.", strcharinfo(0));
    next;
    mesq l("You are currently at @@.", LOCATION$);
    mes "";
    mes l("A ship travel will cost you @@ GP.", .@price);
    if (ST_TIER == 8)
        mesc l("What are you doing? Go talk to @@  and bring me a @@!", b("Elanore"), getitemlink(Lifestone));

    if (Zeny >= .@price || ((ST_TIER == 7 || ST_TIER == 9) && gettimetick(2) < QUEST_ELEVARTEMPO)) {
        menu
            rif(Zeny >= .@price && LOCATION$ != "Candor", l("To Candor Island.")), L_TCandor,
            rif(Zeny >= .@price && LOCATION$ != "Tulim", l("To Tulimshar.")), L_TTulim,
            rif(Zeny >= .@price && LOCATION$ != "Artis" && $FIRESOFSTEAM && getq(General_Narrator) >= 20, l("To Artis.")), L_TArtis,
            rif(ST_TIER == 7 && gettimetick(2) < QUEST_ELEVARTEMPO ,l("Help me, I need Jesusaves Grimorie!")), L_Tier2,
            rif(ST_TIER == 9 && countitem(Lifestone) && gettimetick(2) < QUEST_ELEVARTEMPO ,l("Help me, I need Jesusaves Grimorie!")), L_Tier2Ok,
            l("No, I'll save my money."), -;
    } else {
        mes l("You still need @@ GP to afford it.", (.@price-Zeny));
    }

    close;

L_TCandor:
    Zeny=Zeny-.@price;
    PC_DEST$="Candor";

    mes "";
    mesn;
    mesq l("Candor Island, then? Yes, that is a pretty island, right?");
    next;
    mesq l("I was planning to go there soon, anyway. All aboard!");
    close2;
    addtimer nard_time(PC_DEST$), "#NardShip::OnEvent";
    @timer_navio_running = 1;
    warp "002-5", 39, 26;
    end;

L_TTulim:
    Zeny=Zeny-.@price;
    PC_DEST$="Tulim";
    @timer_navio_running = 1;

    mes "";
    mesn;
    mesq l("Tulimshar, right? The oldest human city-state!");
    next;
    mesq l("I was planning to go there soon, anyway. All aboard!");
    close2;
    addtimer nard_time(PC_DEST$), "#NardShip::OnEvent";
    @timer_navio_running = 1;
    warp "002-5", 39, 26;
    end;

L_TArtis:
    Zeny=Zeny-.@price;
    PC_DEST$="Artis";
    @timer_navio_running = 1;

    mes "";
    mesn;
    mesq l("Artis, right? So Andrei Sakar summoned you?");
    next;
    mesq l("Hahaha, good luck out there, my friend!");
    close2;
    addtimer nard_time(PC_DEST$), "#NardShip::OnEvent";
    @timer_navio_running = 1;
    warp "002-5", 39, 26;
    end;

L_Tier2:
    mes "";
    mesn;
    mesq l("WHAT?! ARE YOU OUT OF MIND?!?!");
    next;
    mesn;
    if (nard_reputation() < 8) {
        mesq l("THAT GRIMORIE IS A SUPER DUPER MEGA UPER RARE BOOK, I CANNOT GIVE IT TO ANYBODY ASKING ME ABOUT!!");
        next;
        mesn;
        mesq l("GET OUT OF HERE, YOUR NOBODY!");
        close;
    }
    mesq l("That is a rare, precious book, which writes itself!");
    next;
    mesn;
    mesq l("I cannot just give it to you for nothing. Run to Elanore and fetch me a @@. You need to make a new one, an old one I won't accept.", getitemlink(Lifestone));
    ST_TIER=8;
    close;

L_Tier2Ok:
    mes "";
    mesn;
    mesc l("*tut*");
    next;
    inventoryplace JesusalvaGrimorium, 1;
    delitem Lifestone, 1;
    getitem JesusalvaGrimorium, 1;
    getexp 200, 0;
    ST_TIER=10;
    mesn;
    mesq l("Here, take it. If the mana goes out of your body, I'll have your class master to return the book to me.");
    close;

OnNardStage:
    showavatar NPC_NARD;  // this is handled by avatars.xml
    mesn;
    mesq l("Welcome to Tulimshar, @@!", strcharinfo(0));
    mesc l("Nard gives you a map of the city so you don't get lost.");
    next;
    if (GSET_SOULMENHIR_MANUAL) {
        mesn;
        mesq l("You can explore the city as you want, but if I were you, I would ##Btouch the Soul Menhir##b, north of here, to don't respawn at Candor.");
        next;
    } else {
        mesn;
        mesq l("If you die, you'll appear near Tulimshar's Soul Menhir, which is the nearest Menhir to you. You can use @@ if you ever want to change this behavior.", b("@ucp"));
        next;
    }
    mesn;
    mesq l("Other than that, you can explore the city as you want, but as you had a memory loss, You should visit the townhall.");
    next;
    mesn;
    mesq l("When you get out of the ship, it is the first building you'll see. Talk to ##BLua##b, she is an alliance representative.");
    next;
    mesn;
    mesq l("The Alliance have records of everyone. And if you need another trip, talk to me!");
    tutmes l("PROTIP: Every quest you complete in a location, will make ship travels to and from them cheaper!"), "Protip", false;
    next;
    addtimer 2500, "Inac::OnShout";
    closeclientdialog;
    close;

L_TestServer:
    mesc l("THIS IS MOUBOOTAUR LEGENDS TEST SERVER."), 1;
    mesc l("Progress on this server may be %s.", b(l("lost forever"))), 1;
    mes "";
    mesc l("Unless you know what you are doing, please go to Main Server instead."), 1;
    mesc l("Main server is: %s", b("server.moubootaurlegends.org")), 2;
    mes "";
    mesf "@@help://test-server|%s@@", l("more information about test server ->");
    next;
    goto L_Main;

L_Close:
    close;

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