summaryrefslogtreecommitdiff
path: root/npc/000-2-1/peter.txt
blob: 9eacd66357231e0cc87a537ffed0677735f29642 (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
// Evol scripts.	
// Authors:
//    Vasily_Makarov
//    4144
//    Reid
//    Ablu
//    alastrim
// Description:
//    Rat killer NPC
// 4 bits array:
//    ShipQuests
// Variable:
//    ShipQuests_Peter
// Values:
//    0   did not start the quest
//    1   task given
//    2   task given + reward expected
//    3   task completed without reward
//    4   asked for reward after completing it
//    5   task done + reward given
// "000-2-2.gat" - map with mobs
// "$@RAT_SAILOR_HELPER$" - Name of the participant
// "$@RAT_SAILOR_DEATHS - Number of deaths when the paticipant starts the fight
// "$@RAT_SAILOR_CONTROL" - Explanation of each index of the array:
// [1] = Shows status of Ratto number 1 (1 is dead and 0 is alive)
// [2] = Shows status of Ratto number 2 (1 is dead and 0 is alive)
// [3] = Shows status of Ratto number 3 (1 is dead and 0 is alive)
// [4] = Shows status of Ratto number 4 (1 is dead and 0 is alive)
// [5] = Shows how many seconds passed since Ratto number 1 died
// [6] = Shows how many seconds passed since Ratto number 2 died
// [7] = Shows how many seconds passed since Ratto number 3 died
// [8] = Shows how many seconds passed since Ratto number 4 died
// [9] = Shows how many seconds passed since the player started the quest

000-2-1.gat,61,34,0,1	script	AreaNPC	0,0,1,{

OnTouch:
    if (BaseLevel < 5) goto L_Stop;
    if ($@RAT_SAILOR_HELPER$ != "") goto L_Occupied;
    set @q, geta4(ShipQuests, ShipQuests_Peter);
    if (@q < 1) goto L_Task;
    if (@q == 1 || @q == 2) goto L_Rfail;
    if (@q == 3 || @q == 4) goto L_Rwin;
    doevent "Peter::OnStartOutside";
    close;

L_Stop:
    doevent "Peter::OnStop";
    close;

L_Occupied:
    doevent "Peter::OnDontneedHelp";
    close;

L_Task:
    doevent "Peter::OnGiveTask";
    close;

L_Rfail:
    doevent "Peter::OnReturnFail";
    close;

L_Rwin:
    doevent "Peter::OnReturnWin";
    close;
}

000-2-1.gat,60,35,0,1	script	Peter	303,{

    set @q_julia, geta2(ShipQuests, ShipQuests_Julia);
    if (@q_julia == 0) goto L_TalkToJulia;
    if (BaseLevel < 5) goto OnTooWeak;

    set @q, geta4(ShipQuests, ShipQuests_Peter);
    if (@q == 1 || @q == 2) goto OnReturnFail;
    if (@q >= 3) goto OnReturnWin;

OnGiveTask:
    mesn;
    mesq g(l("Hey, girl!"),
        l("Hey, man!"));
    next;
    mesn;
    mesq l("I need somebody who can clean the bottom of the ship of these Ratto, can you help me?");
    menu
        l("Yeah, but what reward will I get?"), L_BonusTask,
        l("Why not, I need to train anyway."), L_Task,
        l("No, they are way too dangerous for me!"), -;
    mesq l("Ok, ok. Come back if you change your mind.");
    goto L_Close;

L_TalkToJulia:
    mesn;
    mesq l("Hey, you should go see Julia to be registered on the ship board.");
    goto L_Close;

OnTooWeak:
    mesn;
    mesq lg("I need help for cleaning the wedge of the ship, but you aren't strong enough to help me.");
    goto L_Close;

OnStop:
    mesn;
    mesq l("You can't go there!");
    warp "000-2-1",61,36;
    close;

OnReturnFail:
    mesn;
    mesq l("I see it is not easy to get rid of those rattos. Do you want to try again?");
    menu
        l("Yeah, but I would like to make sure I get a reward."), L_BonusTask,
        l("Why not, I need to train anyway."), L_Task,
        l("No, they are way too dangerous for me!"), -;
    mesq l("Ok, ok. Come back if you change your mind.");
    goto L_Close;

OnReturnWin:
    mesn;
    mesq l("Thanks again for helping me. But those rattos are a permanent problem and your help is always welcome. The only problem is that I can give you a reward only one time.");
    if (@q == 3 || @q == 4)
    menu
        l("Did you say reward? I want it!"), L_BonusTask,
        l("I am not worried about rewards. I just want to help."), L_Task,
        l("Sorry, I am not in the mood for another fight with those rattos."), -;

    if (@q == 5)
    menu
        l("No problem, I can help you anyway."), L_Task,
        l("Sorry, I am not in the mood for another fight with those rattos."), -;

    mesq l("Ok, ok. Come back if you change your mind.");
    close;

L_BonusTask:
    mesn;
    mesq l("I will give you @@gp.", 500);
    menu
    lg("Okay, I'm ready to work!"), -,
    l("What? This reward is too small!"), L_Close;
    if ($@RAT_SAILOR_HELPER$ != "") goto OnDontneedHelp;
    if (@q == 0) seta4 ShipQuests, ShipQuests_Peter, 2;
    if (@q == 3) seta4 ShipQuests, ShipQuests_Peter, 4;
    goto L_Start;

L_Task:
    if ($@RAT_SAILOR_HELPER$ != "") goto OnDontneedHelp;
    if (@q == 0) seta4 ShipQuests, ShipQuests_Peter, 1;
    goto L_Start;

L_Start:
    mesn;
    mesq l("Okay, you can start!");

OnStartOutside:
    if ($@RAT_SAILOR_HELPER$ != "") goto OnDontneedHelp;
    set $@RAT_SAILOR_HELPER$, strcharinfo(0);
    set $@RAT_SAILOR_DEATHS, PC_DIE_COUNTER;
    initnpctimer;
    warp "000-2-2.gat", 48, 28;
    doevent "RattosControl::OnSpawn";
    goto L_Close;

OnTimer5000:
    if (attachrid(getcharid(3,$@RAT_SAILOR_HELPER$)) == 0) goto L_Logoff;
    set $@RAT_SAILOR_CONTROL[9], $@RAT_SAILOR_CONTROL[9] + 5;
    if ($@RAT_SAILOR_CONTROL[9] > 100) goto L_Timeout;
    if (PC_DIE_COUNTER > $@RAT_SAILOR_DEATHS) goto L_Dead;
    if ($@RAT_SAILOR_CONTROL[1] && $@RAT_SAILOR_CONTROL[2] && $@RAT_SAILOR_CONTROL[3] && $@RAT_SAILOR_CONTROL[4]) goto L_Done;
    if (getmapusers("000-2-2.gat") == 0) goto L_CleaningEnd;
    goto L_CheckRattos;
    end;

L_CheckRattos:
    if ($@RAT_SAILOR_CONTROL[1]) set $@RAT_SAILOR_CONTROL[5], $@RAT_SAILOR_CONTROL[5] + 5;
    if ($@RAT_SAILOR_CONTROL[2]) set $@RAT_SAILOR_CONTROL[6], $@RAT_SAILOR_CONTROL[6] + 5;
    if ($@RAT_SAILOR_CONTROL[3]) set $@RAT_SAILOR_CONTROL[7], $@RAT_SAILOR_CONTROL[7] + 5;
    if ($@RAT_SAILOR_CONTROL[4]) set $@RAT_SAILOR_CONTROL[8], $@RAT_SAILOR_CONTROL[8] + 5;
    if ($@RAT_SAILOR_CONTROL[5] > 40) doevent "RattosControl::OnRatto1Respawn";
    if ($@RAT_SAILOR_CONTROL[6] > 40) doevent "RattosControl::OnRatto2Respawn";
    if ($@RAT_SAILOR_CONTROL[7] > 40) doevent "RattosControl::OnRatto3Respawn";
    if ($@RAT_SAILOR_CONTROL[8] > 40) doevent "RattosControl::OnRatto4Respawn";
    setnpctimer 0;
    end;

OnDontneedHelp:
    mesn;
    mesq l("I don't need your help right now, come back later.");
    mesq l("@@ is helping me.", $@RAT_SAILOR_HELPER$);
    goto L_Close;

L_Timeout:
    mesn;
    mesq l("Hey! Be careful. You can't stay in this basement for so long, you are going to get sick. Come outside and take a break, maybe you can try again later.");
    warp "000-2-1", 61, 36;
    goto L_CleaningClose;

L_Logoff:
    goto L_CleaningEnd;

L_Dead:
// Warps the dead body outside, so it does not interfere with the getmapusers check.
    warp "000-2-1", 61, 36;
    goto L_CleaningEnd;

L_Done:
    warp "000-2-1", 61, 36;
    set @q, geta4(ShipQuests, ShipQuests_Peter);
    if (@q == 2 || @q == 4) goto L_Reward;
    goto L_Thanks;

L_CleaningEnd:
    stopnpctimer;
    set $@RAT_SAILOR_HELPER$, "";
    set $@RAT_SAILOR_DEATHS, 0;
    cleararray $@RAT_SAILOR_CONTROL, 0, 10;
    killmonster "000-2-2.gat", "RattosControl::OnRatto1Death";
    killmonster "000-2-2.gat", "RattosControl::OnRatto2Death";
    killmonster "000-2-2.gat", "RattosControl::OnRatto3Death";
    killmonster "000-2-2.gat", "RattosControl::OnRatto4Death";
    end;

L_CleaningClose:
    stopnpctimer;
    set $@RAT_SAILOR_HELPER$, "";
    set $@RAT_SAILOR_DEATHS, 0;
    cleararray $@RAT_SAILOR_CONTROL, 0, 10;
    killmonster "000-2-2.gat", "RattosControl::OnRatto1Death";
    killmonster "000-2-2.gat", "RattosControl::OnRatto2Death";
    killmonster "000-2-2.gat", "RattosControl::OnRatto3Death";
    killmonster "000-2-2.gat", "RattosControl::OnRatto4Death";
    close;

L_Reward:
    mesn;
    mesq l("Good job!") + " " + l("Here's your reward!");
    getexp 100, 0;
    set zeny, zeny + 500;
    seta4 ShipQuests, ShipQuests_Peter, 5;
    goto L_CleaningClose;

L_Thanks:
    mesn;
    mesq l("Thanks for helping me!");
    set @q, geta4(ShipQuests, ShipQuests_Peter);
    if (@q == 1) seta4 ShipQuests, ShipQuests_Peter, 3;
    goto L_CleaningClose;

L_Close:
    set @q, 0;
    set @q_julia, 0;
    close;

}