OSDN Git Service

First version
[st-ro/stro.git] / npc / custom / battleground / unofficial / bg_flavius_02.txt
1 // ==============================================================================
2 // BattleGround System - Flavius 2
3 // ==============================================================================
4
5 // Registration NPC's
6 // *********************************************************************
7
8 bat_room,142,227,4      script  Registration::Fl2R_Guillaume    418,{
9         end;
10 OnInit:
11         waitingroom "Battle Station 10 Players",10,"Flavius_BG2::OnGuillaumeJoin",1;
12         end;
13 OnEnterBG:
14         set $@FlaviusBG2_id1, waitingroom2bg("bat_b02",390,10,"Flavius_BG2::OnGuillaumeQuit","");
15         end;
16 }
17
18 bat_room,142,204,0      script  Registration::Fl2R_Croix        414,{
19         end;
20 OnInit:
21         waitingroom "Battle Station 10 Players",10,"Flavius_BG2::OnCroixJoin",1;
22         end;
23 OnEnterBG:
24         set $@FlaviusBG2_id2, waitingroom2bg("bat_b02",10,290,"Flavius_BG2::OnCroixQuit","");
25         end;
26 }
27
28 // Battleground Engine
29 // *********************************************************************
30
31 -       script  Flavius_BG2     -1,{
32         end;
33
34 OnInit:
35         disablenpc "Guillaume Vintenar#fl2";
36         disablenpc "Croix Vintenar#fl2";
37         disablenpc "Therapist in battle#fl21";
38         disablenpc "Therapist in battle#fl22";
39         end;
40
41 OnGuillaumeQuit:
42 OnCroixQuit:
43         set BG_Delay_Tick, gettimetick(2) + 1200;
44         end;
45
46 OnGuillaumeJoin:
47 OnCroixJoin:
48         if( $@FlaviusBG2 == 0 )
49                 donpcevent "Flavius_BG2::OnReadyCheck";
50         end;
51
52 OnReadyCheck:
53         if( $@FlaviusBG2 )
54                 end;
55         set .@Guillaume, getwaitingroomstate(0,"Fl2R_Guillaume");
56         set .@Croix, getwaitingroomstate(0,"Fl2R_Croix");
57         
58         if( .@Guillaume < 10 || .@Croix < 10 )
59         {
60                 mapannounce "bat_room","Battleground -- Flavius [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0x808000;
61                 end;
62         }
63
64         // BG Variables
65         set $@FlaviusBG2, 1;
66         set $@FlaviusBG2_Victory, 0;
67         set .Guillaume_Score, 0;
68         set .Guillaume_Loss, 0;
69         set .Croix_Score, 0;
70         set .Croix_Loss, 0;
71         set .Match, 0;
72         // Prepare NPC
73         donpcevent "#gfl2_respawn::OnBGStart";
74         donpcevent "#cfl2_respawn::OnBGStart";
75         enablenpc "Therapist in battle#fl21";
76         enablenpc "Therapist in battle#fl22";
77         disablenpc "Guillaume Vintenar#fl2";
78         disablenpc "Croix Vintenar#fl2";
79         // Build and Warp Teams
80         donpcevent "Fl2R_Guillaume::OnEnterBG";
81         donpcevent "Fl2R_Croix::OnEnterBG";
82         announce "Battleground -- Flavius [80-99] has started!",0,0x808000;
83         initnpctimer;
84         // Start Match!!
85
86 OnRoundStart:
87         sleep 2000;
88         if( $@FlaviusBG2 != 1 ) end;
89
90         areapercentheal "bat_b02",382,2,397,17,100,100;
91         areapercentheal "bat_b02",2,282,17,297,100,100;
92         bg_warp $@FlaviusBG2_id1,"bat_b02",311,224;
93         bg_warp $@FlaviusBG2_id2,"bat_b02",87,75;
94
95         sleep 2000;
96         if( $@FlaviusBG2 != 1 ) end;
97
98         set .Match, .Match + 1;
99         // Crystal Spawn
100         set .Guillaume_Crystal, bg_monster($@FlaviusBG2_id1,"bat_b02",328,150,"Crystal Guillaume",1914,"Flavius_BG2::OnGuillaumeBreak");
101         setcell "bat_b02",327,151,329,149,cell_basilica,1;
102         setcell "bat_b02",327,151,329,149,cell_walkable,1;
103
104         set .Croix_Crystal, bg_monster($@FlaviusBG2_id2,"bat_b02",62,150,"Crystal Croix",1915,"Flavius_BG2::OnCroixBreak");
105         setcell "bat_b02",62,149,60,151,cell_basilica,1;
106         setcell "bat_b02",62,149,60,151,cell_walkable,1;
107
108         // Guardian Spawns
109         bg_monster $@FlaviusBG2_id1,"bat_b02",328,160,"Guillaume Guardian",1949,"Flavius_BG2::OnGuiGuardian";
110         bg_monster $@FlaviusBG2_id1,"bat_b02",328,140,"Guillaume Guardian",1950,"Flavius_BG2::OnGuiGuardian";
111         set .Guillaume_Guardian, 2;
112         bg_monster $@FlaviusBG2_id2,"bat_b02",62,160,"Croix Guardian",1949,"Flavius_BG2::OnCroGuardian";
113         bg_monster $@FlaviusBG2_id2,"bat_b02",61,140,"Croix Guardian",1950,"Flavius_BG2::OnCroGuardian";
114         set .Croix_Guardian, 2;
115         // Announces
116         mapannounce "bat_b02","The Battle of Flavius [ " + .Match + " ] Round has begun!!",1,0x808000;
117         end;
118
119 OnRoundStop:
120         // Remove Monsters
121         killmonster "bat_b02","Flavius_BG2::OnGuiGuardian";
122         killmonster "bat_b02","Flavius_BG2::OnCroGuardian";
123         setcell "bat_b02",327,151,329,149,cell_walkable,0;
124         setcell "bat_b02",327,151,329,149,cell_basilica,0;
125         killmonster "bat_b02","Flavius_BG2::OnGuillaumeBreak";
126         setcell "bat_b02",62,149,60,151,cell_walkable,0;
127         setcell "bat_b02",62,149,60,151,cell_basilica,0;
128         killmonster "bat_b02","Flavius_BG2::OnCroixBreak";
129         end;
130
131 OnGuiGuardian:
132         if( set(.Guillaume_Guardian, .Guillaume_Guardian - 1) <= 0 )
133         {
134                 setcell "bat_b02",327,151,329,149,cell_walkable,0;
135                 setcell "bat_b02",327,151,329,149,cell_basilica,0;
136                 mapannounce "bat_b02","The Guillaume Crystal is vulnerable to attack!",1,0x0000FF;
137         }
138         end;
139
140 OnCroGuardian:
141         if( set(.Croix_Guardian, .Croix_Guardian - 1) <= 0 )
142         {
143                 setcell "bat_b02",62,149,60,151,cell_walkable,0;
144                 setcell "bat_b02",62,149,60,151,cell_basilica,0;
145                 mapannounce "bat_b02","The Croix Crystal is vulnerable to attack!",1,0xFF0000;
146         }
147         end;
148
149 OnGuillaumeBreak:
150         donpcevent "Flavius_BG2::OnRoundStop";
151         set .Guillaume_Loss, .Guillaume_Loss + 1;
152         if( set(.Croix_Score, .Croix_Score + 1) < 2 )
153         {
154                 bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
155                 mapannounce "bat_b02","The Guillaume Crystal has been destroyed!",1,0x0000FF;
156                 donpcevent "Flavius_BG2::OnRoundStart";
157         }
158         else
159         {
160                 bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
161                 mapannounce "bat_b02","The Croix army has won the Battle of Flavius!",1,0xFF0000;
162                 set $@FlaviusBG2_Victory, 2;
163                 donpcevent "Flavius_BG2::OnMatchEnd";
164         }
165         end;
166
167 OnCroixBreak:
168         donpcevent "Flavius_BG2::OnRoundStop";
169         set .Croix_Loss, .Croix_Loss + 1;
170         if( set(.Guillaume_Score, .Guillaume_Score + 1) < 2 )
171         {
172                 bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
173                 mapannounce "bat_b02","The Croix Crystal has been destroyed!",1,0xFF0000;
174                 donpcevent "Flavius_BG2::OnRoundStart";
175         }
176         else
177         {
178                 bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
179                 mapannounce "bat_b02","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
180                 set $@FlaviusBG2_Victory, 1;
181                 donpcevent "Flavius_BG2::OnMatchEnd";
182         }
183         end;
184
185 OnTimer2400000:
186         mapannounce "bat_b02","Battle of Flavius will ends in 5 minutes",1,0x808000;
187         end;
188 OnTimer2640000:
189         mapannounce "bat_b02","Battle of Flavius will ends in 1 minute",1,0x808000;
190         end;
191
192 OnTimer2700000:
193         if( .Croix_Score > .Guillaume_Score )
194         {
195                 mapannounce "bat_b02","The Croix army has won the Battle of Flavius!",1,0xFF0000;
196                 set $@FlaviusBG2_Victory, 2;
197         }
198         else if( .Croix_Score < .Guillaume_Score )
199         {
200                 mapannounce "bat_b02","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
201                 set $@FlaviusBG2_Victory, 1;
202         }
203         else
204         {
205                 mapannounce "bat_b02","The Battle of Flavius is over. The time is out, this is a Tie",1,0x808000;
206                 set $@FlaviusBG2_Victory, 3;
207         }
208
209 OnMatchEnd:
210         set $@FlaviusBG2, 2;
211         stopnpctimer;
212         donpcevent "#gfl2_respawn::OnBGStop";
213         donpcevent "#cfl2_respawn::OnBGStop";
214         disablenpc "Therapist in battle#fl21";
215         disablenpc "Therapist in battle#fl22";
216         enablenpc "Guillaume Vintenar#fl2";
217         enablenpc "Croix Vintenar#fl2";
218         sleep 2000;
219         bg_warp $@FlaviusBG2_id1,"bat_b02",390,10;
220         bg_warp $@FlaviusBG2_id2,"bat_b02",10,290;
221         sleep 3000;
222         mapannounce "bat_b02","Battle of Flavius will close in 1 minute!",1,0x808000;
223         initnpctimer;
224         end;
225
226 OnTimer30000:
227         if( $@FlaviusBG2 == 2 )
228                 mapannounce "bat_b02","Battle of Flavius will close in 30 seconds!",1,0x808000;
229         end;
230 OnTimer50000:
231         if( $@FlaviusBG2 == 2 )
232                 mapannounce "bat_b02","Battle of Flavius will close in 10 seconds!",1,0x808000;
233         end;
234
235 OnTimer60000:
236         if( $@FlaviusBG2 != 2 )
237                 end;
238 OnReset:
239         stopnpctimer;
240         donpcevent "Flavius_BG2::OnRoundStop";
241         set .Guillaume_Score, 0;
242         set .Guillaume_Crystal, 0;
243         set .Guillaume_Loss, 0;
244         set .Croix_Score, 0;
245         set .Croix_Crystal, 0;
246         set .Croix_Loss, 0;
247         set .Match, 0;
248         set $@FlaviusBG2_Victory, 0;
249         // NPC's
250         disablenpc "Guillaume Vintenar#fl2";
251         disablenpc "Croix Vintenar#fl2";
252         disablenpc "Therapist in battle#fl21";
253         disablenpc "Therapist in battle#fl22";
254
255         if( $@FlaviusBG2_id1 ) { bg_destroy $@FlaviusBG2_id1; set $@FlaviusBG2_id1, 0; }
256         if( $@FlaviusBG2_id2 ) { bg_destroy $@FlaviusBG2_id2; set $@FlaviusBG2_id2, 0; }
257         sleep 1000;
258         mapwarp "bat_b02","bat_room",155,150;
259         sleep 2000;
260         maprespawnguildid "bat_b02",0,3; // Just in case someone else
261         sleep 2000;
262         bg_updatescore "bat_b02",0,0;
263         set $@FlaviusBG2, 0;
264         donpcevent "Flavius_BG2::OnReadyCheck";
265         end;
266 }
267
268 // Battleground rewards
269 // *********************************************************************
270
271 bat_b02,390,13,5        script  Guillaume Vintenar#fl2  419,{
272         if( $@FlaviusBG2_Victory )
273         {
274                 if( $@FlaviusBG2_Victory == Bat_Team )
275                 { // Victory
276                         mes "[Swandery]";
277                         mes "Blessed Guillaume!!";
278                         mes "Let's enjoy our glorious victory!";
279                         mes "" + strcharinfo(0) + ", its a sign reflecting victory";
280                         close2;
281                         set .@Reward, 9;
282                 }
283                 else
284                 { // 
285                         mes "[Swandery]";
286                         mes "You lost, but you're dedicated to this battle.";
287                         mes "This is a reward for your great dedication by Guillaume Marollo!";
288                         mes "Just take this defeat a lesson, and later you would definitely learn.";
289                         close2;
290                         set .@Reward, 3;
291                 }
292
293                 setquest 2070;
294                 getitem 7829, .@Reward;
295                 bg_leave;
296                 warp "bat_room",155,150;
297                 end;
298         }
299         end;
300 }
301
302 bat_b02,10,293,5        script  Croix Vintenar#fl2      415,{
303         if( $@FlaviusBG2_Victory )
304         {
305                 if( $@FlaviusBG2_Victory == Bat_Team )
306                 { // Victory
307                         mes "[Swandery]";
308                         mes "Blessed Croax!!";
309                         mes "Let's enjoy our glorious victory!";
310                         mes "" + strcharinfo(0) + ", its a sign reflecting victory";
311                         close2;
312                         set .@Reward, 9;
313                 }
314                 else
315                 { // 
316                         mes "[Swandery]";
317                         mes "Oh, " + strcharinfo(0) + ". Don't be sad.";
318                         mes "Even though we didn't win, we did our best.";
319                         mes "This is a Royal gift from Croix, and please don't forget this battle. We can win the next.";
320                         close2;
321                         set .@Reward, 3;
322                 }
323
324                 setquest 2070;
325                 getitem 7829, .@Reward;
326                 bg_leave;
327                 warp "bat_room",155,150;
328                 end;
329         }
330         end;
331 }
332
333 // Battleground Therapist
334 // *********************************************************************
335
336 bat_b02,390,13,5        script  Therapist in battle#fl22        95,{
337         mes "[Therapist in battle]";
338         mes "Just close your eyes, and take a deep breathe.";
339         mes "You can be free from pain.";
340         specialeffect2 EF_HEAL;
341         close;
342 }
343
344 bat_b02,10,293,5        script  Therapist in battle#fl21        95,{
345         mes "[Therapist in battle]";
346         mes "Just close your eyes, and take a deep breathe.";
347         mes "You can be free from pain.";
348         specialeffect2 EF_HEAL;
349         close;
350 }
351
352 // Battleground Respawn
353 // *********************************************************************
354
355 bat_b02,390,10,0        script  #gfl2_respawn   139,{
356         end;
357
358 OnBGStart:
359         initnpctimer;
360         end;
361
362 OnBGStop:
363         stopnpctimer;
364         end;
365
366 OnTimer24000:
367         misceffect EF_SANCTUARY;
368         end;
369
370 OnTimer25000:
371         areapercentheal "bat_b02",382,2,397,17,100,100;
372         areawarp "bat_b02",382,2,397,17,"bat_b02",311,224;
373         initnpctimer;
374         end;
375 }
376
377 bat_b02,10,290,0        script  #cfl2_respawn   139,{
378         end;
379
380 OnBGStart:
381         initnpctimer;
382         end;
383
384 OnBGStop:
385         stopnpctimer;
386         end;
387
388 OnTimer24000:
389         misceffect EF_SANCTUARY;
390         end;
391
392 OnTimer25000:
393         areapercentheal "bat_b02",2,282,17,297,100,100;
394         areawarp "bat_b02",2,282,17,297,"bat_b02",87,75;
395         initnpctimer;
396         end;
397 }
398
399 // Flags
400 // *********************************************************************
401
402 bat_b02,304,231,1       duplicate(Guillaume camp#bat)   Guillaume camp#bat32    973
403 bat_b02,319,231,1       duplicate(Guillaume camp#bat)   Guillaume camp#bat33    973
404 bat_b02,304,218,1       duplicate(Guillaume camp#bat)   Guillaume camp#bat34    973
405 bat_b02,319,218,1       duplicate(Guillaume camp#bat)   Guillaume camp#bat35    973
406 bat_b02,304,231,1       duplicate(Guillaume camp#bat)   Guillaume camp#bat36    973
407 bat_b02,304,231,1       duplicate(Guillaume camp#bat)   Guillaume camp#bat37    973
408 bat_b02,335,142,1       duplicate(Guillaume camp#bat)   Guillaume camp#bat38    973
409 bat_b02,335,157,1       duplicate(Guillaume camp#bat)   Guillaume camp#bat39    973
410 bat_b02,390,16,1        duplicate(Guillaume camp#bat)   Guillaume camp#bat40    973
411 bat_b02,292,163,1       duplicate(Guillaume camp#bat)   Guillaume camp#bat41    973
412 bat_b02,292,136,1       duplicate(Guillaume camp#bat)   Guillaume camp#bat42    973
413 bat_b02,241,185,1       duplicate(Guillaume camp#bat)   Guillaume camp#bat43    973
414 bat_b02,247,179,1       duplicate(Guillaume camp#bat)   Guillaume camp#bat44    973
415
416 bat_b02,96,81,1 duplicate(Croix camp#bat)       Croix camp#bat30        974
417 bat_b02,96,68,1 duplicate(Croix camp#bat)       Croix camp#bat31        974
418 bat_b02,79,81,1 duplicate(Croix camp#bat)       Croix camp#bat32        974
419 bat_b02,79,68,1 duplicate(Croix camp#bat)       Croix camp#bat33        974
420 bat_b02,96,81,1 duplicate(Croix camp#bat)       Croix camp#bat34        974
421 bat_b02,96,81,1 duplicate(Croix camp#bat)       Croix camp#bat35        974
422 bat_b02,59,164,1        duplicate(Croix camp#bat)       Croix camp#bat36        974
423 bat_b02,59,137,1        duplicate(Croix camp#bat)       Croix camp#bat37        974
424 bat_b02,10,296,1        duplicate(Croix camp#bat)       Croix camp#bat38        974
425 bat_b02,110,162,1       duplicate(Croix camp#bat)       Croix camp#bat39        974
426 bat_b02,110,137,1       duplicate(Croix camp#bat)       Croix camp#bat40        974
427 bat_b02,152,120,1       duplicate(Croix camp#bat)       Croix camp#bat41        974
428 bat_b02,158,114,1       duplicate(Croix camp#bat)       Croix camp#bat42        974