summaryrefslogtreecommitdiff
path: root/npc/002-2/kylian.txt
blob: 2226319916b0673cbe3baaaff3d95dfe06f9efe5 (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
-	script	#businessmanNTconfig	NPC32767,{
    end;

OnInit:
    // Nibble 4
    // Used in Random Quest later as a Nibble
    $@knowYanisNT = (1 << 16);
    $@knowLatoyNT = (1 << 17);
    $@knowWeellosNT = (1 << 18);
    $@knowCasinoNT = (1 << 19);

    // Random Quests for Later
    setarray $@random_quests$, "None", "Falkurn", "Old Wizard", "Baktar";
    $@delivery_money = 100;
    $@delivery_exp_mod = 10;
    end;
}
002-2,44,107,0	script	#KylianOut	NPC32767,1,1,{
    @KylianNTLicense = 0;
    @KylianNTSightSeeing = 0;
    @KylianNTCasino = 0;
    end;
}
002-2,43,101,0	script	Kylian	NPC193,{
    @acorn_amount = 12;
    @suitcase_money = 100;
    @suitcase_exp = 50;
    @license_money = 50;
    @license_exp = 20;
    @sightseeing_money = 50;
    @sightseeing_exp = 20;
    @food_money = 50;
    @food_exp = 20;
    @clothes_money = 50;
    @clothes_exp = 20;
    @fun_money = 50;
    @fun_exp = 20;

    if (QL_KYLIAN == 15) goto L_Done;
    if (QL_KYLIAN >= 11) goto L_Helping;
    if (QL_KYLIAN == 10) goto L_OfferedJob;
    if (QL_KYLIAN == 9) goto L_Shop;
    if (@KylianNTCasino) goto L_CasinoDone;
    if (QL_KYLIAN == 8) goto L_DesertHat;
    if (QL_KYLIAN == 7) goto L_Clothes;
    if (@KylianNTSightSeeing) goto L_SightSeeingDone;
    if (QL_KYLIAN == 6) goto L_Casino;
    if (QL_KYLIAN == 5) goto L_Food;
    if (@KylianNTLicense) goto L_LicenseDone;
    if (QL_KYLIAN == 4) goto L_SightSeeing;
    if (QL_KYLIAN == 3) goto L_ShopLicense;
    if (QL_KYLIAN >= 1) goto L_Suitcase;

    mes "[Kylian]";
    mes "\"Ah! Are you the room service? I've some requests.\"";
    menu
        "Sure... What can I do for you?",L_Luggage,
        "No I'm not!",L_Next;

L_Next:
    mes "[Kylian]";
    mes "\"Too bad. Would you be interested in earning some quick money with some errands regardless?\"";
    menu
        "I'm a great adventurer! I don't do petty errands.",L_close,
        "No. I'm busy.",L_close,
        "Well... OK.",L_Luggage;

L_Luggage:
    mes "[Kylian]";
    mes "\"I need you to get my luggage from the docks. Just show this paper to the sailor who's watching the luggage.\"";
    mes "He gives you his ticket, which you promptly store in a safe pocket outside of your inventory.";
    QL_KYLIAN = 1;
    goto L_close;

L_Suitcase: // QL_KYLIAN >= 1, but below 3
    mes "[Kylian]";
    mes "\"Did you get my luggage from the docks?\"";
    if (QL_KYLIAN != 2)
        goto L_close;
    menu
        "Here it is.",L_Continue,
        "Don't worry; I'm on my way.",L_close;

L_Continue:
    if (countitem("LeatherSuitcase") < 1)
        goto L_NoItem;
    delitem "LeatherSuitcase", 1;
    Zeny = Zeny + @suitcase_money;
    getitem "Acorn", @acorn_amount;
    getexp @suitcase_exp, 0;
    QL_KYLIAN = 3;
    next;
    mes "[Kylian]";
    mes "\"Ah! Very good. I have some urgent paperwork that I've been needing to attend to.\"";
    mes "He gives you some money.";
    next;
    mes "[Kylian]";
    mes "\"Before you go, I also happen to have some acorns left over from my trip.\"";
    mes "\"You can have them if you wish; they're rather tasty.\"";
    mes "If, however, you don't like them, you could take them to the Tulimshar bakery. I heard they use them to make a special kind of flour.\"";
    next;
    goto L_ShopLicense;

L_ShopLicense: // QL_KYLIAN == 3
    mes "[Kylian]";
    mes "\"I'm a salesman and came to Tulimshar because I'm thinking about establishing a shop here.\"";
    mes "\"While I'm going through my papers, could you find out whom I have to talk to about opening up a shop in this city?\"";
    if (!(QUEST_NorthTulimshar & $@knowYanisNT))
        goto L_close;
    menu
        "You need to go and talk to Yanis in the government building.",L_GovBuild,
        "I'll see what I can do.",L_close;

L_GovBuild:
    Zeny = Zeny + @license_money;
    getexp @license_exp, 0;
    QL_KYLIAN = 4;
    @KylianNTLicense = 1;
    mes "[Kylian]";
    mes "\"Ah... excellent! That's very helpful. Could you tell me how to get to that building?\"";
    mes "You give him directions to the building.";
    next;
    goto L_LicenseDone;

L_LicenseDone: // the player didn't log out yet after telling about Yanis
    mes "[Kylian]";
    mes "\"I need to prepare my papers now. I might have some more questions later on though.\"";
    goto L_close;

L_SightSeeing: // QL_KYLIAN == 4 and logged out sometime between getting to that state and now
    mes "[Kylian]";
    mes "\"You came here at just the right moment! I have finished my business affairs, and I think I should use my time here to learn a bit about the culture in the area. Can you tell me if there are any historical places or landmarks to visit?\"";
    if (!(QUEST_NorthTulimshar & $@knowWeellosNT))
        goto L_close;
    menu
        "There's a very old building not far from here.",L_HistBuild,
        "I don't know, but I'll have a look around.",L_close;

L_HistBuild:
    Zeny = Zeny + @sightseeing_money;
    getexp @sightseeing_exp, 0;
    QL_KYLIAN = 5;
    mes "[Kylian]";
    mes "\"This sounds interesting. Please tell me the way.\"";
    mes "You tell him how to get to the historic building.";
    next;
    goto L_Food;

L_Food: // QL_KYLIAN == 5
    mes "[Kylian]";
    mes "\"While I'm out, I could also get something to eat. Do you have any suggestions for local cuisine?\"";
    if (QL_FIERI < 4) // didn't yet help Fieri make Tonori Delight
        goto L_close;
    menu
        "A man named Fieri makes a tasty Tonori Delight over at the castle.",L_SoupBer,
        "No idea. I'll try to find out.",L_close;

L_SoupBer:
    Zeny = Zeny + @food_money;
    getexp @food_exp, 0;
    QL_KYLIAN = 6;
    @KylianNTSightSeeing = 1;
    goto L_SightSeeingDone;

L_SightSeeingDone:
    mes "[Kylian]";
    mes "\"I'm going to see the historic building you told me about and try the local food at the castle. Thank you for the suggestions.\"";
    goto L_close;

L_Casino: // QL_KYLIAN == 6 and logged out sometime between getting to that state and now
    mes "[Kylian]";
    mes "\"Hello. I just came back from my sight-seeing tour, and this Tonori Delight really was delicious. I wonder what it's made of...\"";
    next;
    mes "\"However, I was wondering if you know about some evening attractions. Maybe somewhere to have fun?\"";
    if (!(QUEST_NorthTulimshar & $@knowCasinoNT))
        goto L_close;
    menu
        "Of course! The casino!",L_CasinoFound,
        "Not really.",L_close;

L_CasinoFound:
    Zeny = Zeny + @casino_money;
    getexp @casino_exp, 0;
    QL_KYLIAN = 7;
    mes "[Kylian]";
    mes "\"Oh! There's a casino in this city? That's wonderful! Where can I find it?\"";
    mes "You explain how to get to the casino.";
    next;
    goto L_Clothes;

L_Clothes: // QL_KYLIAN == 7
    mes "[Kylian]";
    mes "\"I should acquire proper clothing before I go to the casino tonight. Do you know a reputable shop where high-quality clothing is sold?\"";
    if (!(QUEST_NorthTulimshar & $@knowLatoyNT))
        goto L_close;
    menu
        "Latoy's shop. It's on the west side of Tulimshar.",L_HarborDistrict,
        "Hmmm... I don't know.",L_close;

L_HarborDistrict:
    Zeny = Zeny + @clothes_money;
    getexp @clothes_exp, 0;
    QL_KYLIAN = 8;
    @KylianNTCasino = 1;
    mes "You explain about Latoy and the quality of his shop.";
    next;
    mes "[Kylian]";
    mes "\"This seems to be exactly what I need. Thanks a lot.\"";
    goto L_close;

L_CasinoDone:
    mes "[Kylian]";
    mes "\"I'm looking forward to going to the casino tonight. See me tomorrow, and I might have more requests.\"";
    goto L_close;

L_DesertHat: // QL_KYLIAN == 8
    mes "Kylian looks a bit tired.";
    next;
    mes "[Kylian]";
    mes "\"That was an interesting night. Thanks for your suggestion to visit the casino.\"";
    next;
    getinventorylist;
    mes "\"You helped me out a lot, so I bought a souvenir for you while I was out shopping.\"";
    if ((checkweight("DesertHat", 1) == 0) || (@inventorylist_count == 100))
        goto L_Inventory;
    getitem "DesertHat", 1;
    QL_KYLIAN = 9;
    next;
    goto L_close;

L_Shop:
    mes "[Kylian]";
    mes "\"The Council of Wizards approved my shop license!\"";
    mes "\"I purchased a store just across the way from the inn.\"";
    next;
    mes "\"If you are looking for work, go see the shop keeper I have working for me there.\"";
    mes "\"Mention your name, and he will know I sent you.\"";
    QL_KYLIAN = 10;
    goto L_close;

L_OfferedJob:
    mes "[Kylian]";
    mes "\"I spoke with the shopkeeper, and he said you haven't stopped in yet.\"";
    next;
    mes "\"I wish you would consider working for me.\"";
    next;
    mes "\"KPS needs a determined, experienced adventurer like you.\"";
    goto L_close;

L_Helping:
    mes "[Kylian]";
    mes "\"I've heard you decided to come work for me. That's great news!\"";
    mes "\"Keep up the good work, and I might have something a little extra for you.\"";
    goto L_close;

L_Done:
    mes "[Kylian]";
    mes "\"Thanks a bunch, business is booming!\"";
    mes "\"Please, take this for all your hard work.\"";
    next;
    Zeny = Zeny + $@delivery_money;
    getexp ($@delivery_exp_mod * BaseLevel), 0;
    @run_cnt = 0;
    callfunc "SetKylianRunCnt";
    QL_KYLIAN = 12;
    mes "[" + $@delivery_money + " money]";
    mes "[" + ($@delivery_exp_mod * BaseLevel) + " experience points]";
    next;
    goto L_close;

L_Inventory:
    mes "[Kylian]";
    mes "\"Oh my. You're carrying quite a lot. Come back when you have more room.\"";
    goto L_close;

L_NoItem:
    mes "[Kylian]";
    mes "\"I don't see it! Are you trying to tease me? This isn't funny!\"";
    goto L_close;

L_close:
    @acorn_amount = 0;
    @suitcase_money = 0;
    @suitcase_exp = 0;
    @license_money = 0;
    @license_exp = 0;
    @sightseeing_money = 0;
    @sightseeing_exp = 0;
    @food_money = 0;
    @food_exp = 0;
    @clothes_money = 0;
    @clothes_exp = 0;
    @fun_money = 0;
    @fun_exp = 0;
    @inventorylist_count = 0;
    // NOT set to zero: @KylianNTLicense, @KylianNTSightSeeing and @KylianNTCasino
    // those are used to check if the player logged out in the meanwhile
    close;
}
function	script	KylianDebug	{
    @run = ((QUEST_NorthTulimshar & TWOBIT_8_MASK) >> TWOBIT_8_SHIFT);
    @run_cnt = ((QUEST_NorthTulimshar & TWOBIT_9_MASK) >> TWOBIT_9_SHIFT);
    goto L_Menu;

L_Menu:
    mes "[Kylian Debug]";
    menu
        "Show Quest State", L_ShowState,
        "Set Quest State", L_SetState,
        "Reset Timer to Now", L_WorkTimer,
        "Reset Timer + 24 Hours", L_MoreWorkTimer,
        "Close.", L_close;

L_ShowState:
    mes "State: " + QL_KYLIAN;
    mes "Timer: " + Kylian_Timer;
    mes "Time: " + gettimetick(2);
    mes "Elapsed Time: " + (gettimetick(2) - Kylian_Timer);
    mes "Reset Timer: 86400 > " + (gettimetick(2) - Kylian_Timer);
    mes "Run: " + @run;
    mes "Run NPC: " + $@random_quests$[@run];
    mes "Run Count: " + @run_cnt;
    goto L_Menu;

L_SetState:
    mes "\"Input the quest state desired.\"";
    input QL_KYLIAN;
    goto L_Menu;

L_WorkTimer:
    Kylian_Timer = gettimetick(2);
    goto L_Menu;

L_MoreWorkTimer:
    Kylian_Timer = (gettimetick(2) - 86401);
    goto L_Menu;

L_close:
    return;
}
002-2,40,101,0	script	KylianDebug#1	NPC193,{
    callfunc "KylianDebug";
    close;
OnInit:
    if (!debug)
        disablenpc "KylianDebug#1";
    end;
}
002-2,118,89,0	script	KylianDebug#2	NPC193,{
    callfunc "KylianDebug";
    close;
OnInit:
    if (!debug)
        disablenpc "KylianDebug#2";
    end;
}