summaryrefslogtreecommitdiff
path: root/world/map/npc/021-2/kps.txt
blob: fb6ce2358cf920bdb404e0cd2bdd595b6041f1bb (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
// KPS (Killian Parcel Service)
// Author: Wushin
// Kylian_Timer denotes current quest time & holds last completed.
// reuse the 4 bits
// To Mark 4 Different NPCs.
// setarray $@kps_npc_bits, $@knowYanisNT, $@knowLatoyNT, $@knowWeellosNT, $@knowCasinoNT;
021-2.gat,27,124,0|script|KPS Manager|191
{
    set @state, ((QUEST_NorthTulimshar & NIBBLE_5_MASK) >> NIBBLE_5_SHIFT);
    set @run, ((QUEST_NorthTulimshar & TWOBIT_8_MASK) >> TWOBIT_8_SHIFT);
    set @run_cnt, ((QUEST_NorthTulimshar & TWOBIT_9_MASK) >> TWOBIT_9_SHIFT);
    if (@state == 15)
        goto L_SeeKylian;
    if (@state == 14)
        goto L_RunComplete;
    if (@state == 13)
        goto L_RunStarted;
    if (@state == 12) 
        goto L_JobSelect;
    if (@state == 11)
        goto L_AcceptJob;
    if (@state == 10)
        goto L_OfferJob;
    goto L_Default;

L_Default:
    mes "[KPS Manager]";
    mes "\"Kylian staying at the Inn bought this shop recently.\"";
    mes "\"I'm waiting for him to open the shop.\"";
    next;
    mes "\"I wonder if he needs any help?\"";
    goto L_Close;

L_OfferJob:
    mes "[KPS Manager]";
    mes "\"Hello and what how can I help you today?\"";
    menu
        "My name is " + strcharinfo(0), L_MyName,
        "Nothing.", L_Close;

L_MyName:
    set @state, 11;
    callfunc "SetKylianQuest";
    mes "\"Ahhh, Kylian said you would be dropping by.\"";
    next;
    mes "\"I assume you are looking for some work?\"";
    menu
        "Yes.", L_StartJob,
        "No.", L_Close;

L_AcceptJob:
    mes "[KPS Manager]";
    mes "\"Interested in some work?\"";
    menu
        "Yes.", L_StartJob,
        "No.", L_Close;

L_StartJob:
    set @run, 0;
    callfunc "SetKylianRun";
    set @run_cnt, 0;
    callfunc "SetKylianRunCnt";
    set @state, 12;
    callfunc "SetKylianQuest";
    goto L_JobSelect;

L_StartJobAgain:
    set @run, 0;
    callfunc "SetKylianRun";
    set @state, 12;
    callfunc "SetKylianQuest";
    goto L_JobSelect;

L_JobSelect:
    if ((gettimetick(2) - Kylian_Timer) < 86400)
        goto L_NoPackages;
    mes "[KPS Manager]";
    mes "\"We have a number of deliveries that need to go all over the world.\"";
    next;
    goto L_RandJob;

L_RandJob:
    set @rand_quest, rand(1,3);
    goto L_JobInfo;

L_JobInfo:
    mes "\"We have a delivery for:* " + $@random_quests$[@rand_quest] + "\"";
    menu
        "Take It.", L_StartRun,
        "Anything Else?", L_RandJob,
        "I need a break.", L_Close;

L_StartRun:
    set @state, 13;
    callfunc "SetKylianQuest";
    set @run, @rand_quest;
    callfunc "SetKylianRun";
    set Kylian_Timer, gettimetick(2);
    goto L_Close;

L_RunStarted:
    mes "Deliver this package to:* " + $@random_quests$[@run] + "\"";
    goto L_Close;

L_RunComplete:
    set @elapsed_time, (gettimetick(2) - Kylian_Timer);
    if (@elapsed_time > 600)
        goto L_Failed;
    set @run_cnt, (@run_cnt + 1);
    callfunc "SetKylianRunCnt";
    // Set Kylian wants to see you reward state
    if (@run_cnt > 3)
        goto L_KylianReward;
    goto L_RunAgain;

L_SeeKylian:
    mes "\"You need to go see Kylian before I can give you any more work.\"";
    goto L_Close;

L_Failed:
    mes "\"You need to be faster next time to earn a bonus.\"";
    next;
    goto L_RunAgain;

L_KylianReward:
    set Zeny, Zeny + $@delivery_money;
    getexp ($@delivery_exp_mod * BaseLevel), 0;
    callfunc "SetKylianRun";
    set @state, 15;
    callfunc "SetKylianQuest";
    mes "[" + $@delivery_money + " money]";
    mes "[" + ($@delivery_exp_mod * BaseLevel) + " experience points]";
    next;
    mes "\"I have a message Kylian wants me to send you over right away.\"";
    goto L_Close;

L_RunAgain:
    set Zeny, Zeny + $@delivery_money;
    getexp ($@delivery_exp_mod * BaseLevel), 0;
    callfunc "SetKylianRun";
    mes "[" + $@delivery_money + " money]";
    mes "[" + ($@delivery_exp_mod * BaseLevel) + " experience points]";
    next;
    mes "\"Good job, keep up the nice work and I'm sure the bonus will give you a bonus.\"";
    next;
    goto L_StartJobAgain;

L_NoPackages:
    mes "\"Come back tomorrow, maybe we will have some more work.\"";
    goto L_Close;

L_Close:
    close;
}
function|script|SetKylianRun
{
    set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(TWOBIT_8_MASK)) | (@run << TWOBIT_8_SHIFT);
    return;
}
function|script|SetKylianRunCnt
{
    set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(TWOBIT_9_MASK)) | (@run_cnt << TWOBIT_9_SHIFT);
    return;
}