summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
authorzephyrus <zephyrus@54d463be-8e91-2dee-dedb-b68131a5f0ec>2009-03-27 15:43:51 +0000
committerzephyrus <zephyrus@54d463be-8e91-2dee-dedb-b68131a5f0ec>2009-03-27 15:43:51 +0000
commit74f44d476d46ecab74974e0c2cec504c1127a96f (patch)
treec705a2c64a03fae3046ae6bc4228ee2d656b3718 /npc
parentc1c6856cb258de8c3f1246a585d4f72310a24b24 (diff)
downloadhercules-74f44d476d46ecab74974e0c2cec504c1127a96f.tar.gz
hercules-74f44d476d46ecab74974e0c2cec504c1127a96f.tar.bz2
hercules-74f44d476d46ecab74974e0c2cec504c1127a96f.tar.xz
hercules-74f44d476d46ecab74974e0c2cec504c1127a96f.zip
- Added Flavius Battleground scripts.
- Fixed the last commit about Assumptio, it's only player to monsters, but it can be used on mercenaries. - Added new JapanRO pets. - Fixed Valorous Assaulter's Katzbalger missing str bonus. - Medal of Mage (battleground reward) can also be used by Soul linkers. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@13631 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'npc')
-rw-r--r--npc/battleground/bg_flavius_01.txt453
-rw-r--r--npc/battleground/bg_flavius_02.txt453
-rw-r--r--npc/scripts_custom.conf2
3 files changed, 908 insertions, 0 deletions
diff --git a/npc/battleground/bg_flavius_01.txt b/npc/battleground/bg_flavius_01.txt
new file mode 100644
index 000000000..89d520371
--- /dev/null
+++ b/npc/battleground/bg_flavius_01.txt
@@ -0,0 +1,453 @@
+// ==============================================================================
+// BattleGround System - Flavius 1
+// ==============================================================================
+
+// Registration NPC's
+// *********************************************************************
+
+bat_room,253,97,4 script Registration::Fl1R_Guillaume 418,{
+ end;
+OnInit:
+ waitingroom "Battle Station 10 Players",10,"Flavius_BG1::OnGuillaumeJoin",1;
+ end;
+OnEnterBG:
+ set $@FlaviusBG1_id1, waitingroom2bg("bat_b01",390,10,0,"Flavius_BG1::OnGuillaumeQuit","");
+ end;
+}
+
+bat_room,253,74,0 script Registration::Fl1R_Croix 414,{
+ end;
+OnInit:
+ waitingroom "Battle Station 10 Players",10,"Flavius_BG1::OnCroixJoin",1;
+ end;
+OnEnterBG:
+ set $@FlaviusBG1_id2, waitingroom2bg("bat_b01",10,290,1,"Flavius_BG1::OnCroixQuit","");
+ end;
+}
+
+// Battleground Engine
+// *********************************************************************
+
+- script Flavius_BG1 -1,{
+ end;
+
+OnInit:
+ disablenpc "Guillaume Vintenar#fl1";
+ disablenpc "Croix Vintenar#fl1";
+ disablenpc "Therapist in battle#fl11";
+ disablenpc "Therapist in battle#fl12";
+ end;
+
+OnGuillaumeQuit:
+OnCroixQuit:
+ set BG_Delay_Tick, gettimetick(2) + 1200;
+ end;
+
+OnGuillaumeJoin:
+OnCroixJoin:
+ if( $@FlaviusBG1 == 0 )
+ donpcevent "Flavius_BG1::OnReadyCheck";
+ end;
+
+OnReadyCheck:
+ if( $@FlaviusBG1 )
+ end;
+ set .@Guillaume, getwaitingroomstate(0,"Fl1R_Guillaume");
+ set .@Croix, getwaitingroomstate(0,"Fl1R_Croix");
+
+ if( .@Guillaume < 10 || .@Croix < 10 )
+ {
+ mapannounce "bat_room","Battleground -- Flavius [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0x006400;
+ end;
+ }
+
+ // BG Variables
+ set $@FlaviusBG1, 1;
+ set $@FlaviusBG1_Victory, 0;
+ set .Guillaume_Score, 0;
+ set .Guillaume_Loss, 0;
+ set .Croix_Score, 0;
+ set .Croix_Loss, 0;
+ set .Match, 0;
+ // Prepare NPC
+ donpcevent "#gfl1_respawn::OnBGStart";
+ donpcevent "#cfl1_respawn::OnBGStart";
+ enablenpc "Therapist in battle#fl11";
+ enablenpc "Therapist in battle#fl12";
+ disablenpc "Guillaume Vintenar#fl1";
+ disablenpc "Croix Vintenar#fl1";
+ // Build and Warp Teams
+ donpcevent "Fl1R_Guillaume::OnEnterBG";
+ donpcevent "Fl1R_Croix::OnEnterBG";
+ announce "Battleground -- Flavius [80-99] has started!",0,0x006400;
+ initnpctimer;
+ // Start Match!!
+
+OnRoundStart:
+ sleep 2000;
+ if( $@FlaviusBG1 != 1 ) end;
+
+ areapercentheal "bat_b01",382,2,397,17,100,100;
+ areapercentheal "bat_b01",2,282,17,297,100,100;
+ bg_warp $@FlaviusBG1_id1,"bat_b01",311,224;
+ bg_warp $@FlaviusBG1_id2,"bat_b01",87,75;
+
+ sleep 2000;
+ if( $@FlaviusBG1 != 1 ) end;
+
+ set .Match, .Match + 1;
+ // Crystal Spawn
+ set .Guillaume_Crystal, bg_monster($@FlaviusBG1_id1,"bat_b01",328,150,"Crystal Guillaume",1914,"Flavius_BG1::OnGuillaumeBreak");
+ setwall "bat_b01",327,149,2,6,0,"gui_wall1-1";
+ setwall "bat_b01",329,149,2,0,0,"gui_wall1-2";
+ setwall "bat_b01",329,151,2,2,0,"gui_wall1-3";
+ setwall "bat_b01",327,151,2,4,0,"gui_wall1-4";
+
+ set .Croix_Crystal, bg_monster($@FlaviusBG1_id2,"bat_b01",62,150,"Crystal Croix",1915,"Flavius_BG1::OnCroixBreak");
+ setwall "bat_b01",61,149,2,6,0,"cro_wall1-1";
+ setwall "bat_b01",63,149,2,0,0,"cro_wall1-2";
+ setwall "bat_b01",63,151,2,2,0,"cro_wall1-3";
+ setwall "bat_b01",61,151,2,4,0,"cro_wall1-4";
+
+ // Guardian Spawns
+ bg_monster $@FlaviusBG1_id1,"bat_b01",328,160,"Guillaume Guardian",1949,"Flavius_BG1::OnGuiGuardian";
+ bg_monster $@FlaviusBG1_id1,"bat_b01",328,140,"Guillaume Guardian",1950,"Flavius_BG1::OnGuiGuardian";
+ set .Guillaume_Guardian, 2;
+ bg_monster $@FlaviusBG1_id2,"bat_b01",62,160,"Croix Guardian",1949,"Flavius_BG1::OnCroGuardian";
+ bg_monster $@FlaviusBG1_id2,"bat_b01",61,140,"Croix Guardian",1950,"Flavius_BG1::OnCroGuardian";
+ set .Croix_Guardian, 2;
+ // Announces
+ mapannounce "bat_b01","The Battle of Flavius [ " + .Match + " ] Round has begun!!",1,0x006400;
+ end;
+
+OnRoundStop:
+ // Remove Monsters
+ killmonster "bat_b01","Flavius_BG1::OnGuiGuardian";
+ killmonster "bat_b01","Flavius_BG1::OnCroGuardian";
+ delwall "gui_wall1-1";
+ delwall "gui_wall1-2";
+ delwall "gui_wall1-3";
+ delwall "gui_wall1-4";
+ killmonster "bat_b01","Flavius_BG1::OnGuillaumeBreak";
+ delwall "cro_wall1-1";
+ delwall "cro_wall1-2";
+ delwall "cro_wall1-3";
+ delwall "cro_wall1-4";
+ killmonster "bat_b01","Flavius_BG1::OnCroixBreak";
+ end;
+
+OnGuiGuardian:
+ if( set(.Guillaume_Guardian, .Guillaume_Guardian - 1) <= 0 )
+ {
+ delwall "gui_wall1-1";
+ delwall "gui_wall1-2";
+ delwall "gui_wall1-3";
+ delwall "gui_wall1-4";
+ mapannounce "bat_b01","The Guillaume Crystal is vulnerable to attack!",1,0x0000FF;
+ }
+ end;
+
+OnCroGuardian:
+ if( set(.Croix_Guardian, .Croix_Guardian - 1) <= 0 )
+ {
+ delwall "cro_wall1-1";
+ delwall "cro_wall1-2";
+ delwall "cro_wall1-3";
+ delwall "cro_wall1-4";
+ mapannounce "bat_b01","The Croix Crystal is vulnerable to attack!",1,0xFF0000;
+ }
+ end;
+
+OnGuillaumeBreak:
+ donpcevent "Flavius_BG1::OnRoundStop";
+ set .Guillaume_Loss, .Guillaume_Loss + 1;
+ if( set(.Croix_Score, .Croix_Score + 1) < 2 )
+ {
+ bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score;
+ mapannounce "bat_b01","The Guillaume Crystal has been destroyed!",1,0x0000FF;
+ donpcevent "Flavius_BG1::OnRoundStart";
+ }
+ else
+ {
+ bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score;
+ mapannounce "bat_b01","The Croix army has won the Battle of Flavius!",1,0xFF0000;
+ set $@FlaviusBG1_Victory, 2;
+ donpcevent "Flavius_BG1::OnMatchEnd";
+ }
+ end;
+
+OnCroixBreak:
+ donpcevent "Flavius_BG1::OnRoundStop";
+ set .Croix_Loss, .Croix_Loss + 1;
+ if( set(.Guillaume_Score, .Guillaume_Score + 1) < 2 )
+ {
+ bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score;
+ mapannounce "bat_b01","The Croix Crystal has been destroyed!",1,0xFF0000;
+ donpcevent "Flavius_BG1::OnRoundStart";
+ }
+ else
+ {
+ bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score;
+ mapannounce "bat_b01","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
+ set $@FlaviusBG1_Victory, 1;
+ donpcevent "Flavius_BG1::OnMatchEnd";
+ }
+ end;
+
+OnTimer2400000:
+ mapannounce "bat_b01","Battle of Flavius will ends in 5 minutes",1,0x006400;
+ end;
+OnTimer2640000:
+ mapannounce "bat_b01","Battle of Flavius will ends in 1 minute",1,0x006400;
+ end;
+
+OnTimer2700000:
+ if( .Croix_Score > .Guillaume_Score )
+ {
+ mapannounce "bat_b01","The Croix army has won the Battle of Flavius!",1,0xFF0000;
+ set $@FlaviusBG1_Victory, 2;
+ }
+ else if( .Croix_Score < .Guillaume_Score )
+ {
+ mapannounce "bat_b01","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
+ set $@FlaviusBG1_Victory, 1;
+ }
+ else
+ {
+ mapannounce "bat_b01","The Battle of Flavius is over. The time is out, this is a Tie",1,0x006400;
+ set $@FlaviusBG1_Victory, 3;
+ }
+
+OnMatchEnd:
+ set $@FlaviusBG1, 2;
+ stopnpctimer;
+ donpcevent "#gfl1_respawn::OnBGStop";
+ donpcevent "#cfl1_respawn::OnBGStop";
+ disablenpc "Therapist in battle#fl11";
+ disablenpc "Therapist in battle#fl12";
+ enablenpc "Guillaume Vintenar#fl1";
+ enablenpc "Croix Vintenar#fl1";
+ sleep 2000;
+ bg_warp $@FlaviusBG1_id1,"bat_b01",390,10;
+ bg_warp $@FlaviusBG1_id2,"bat_b01",10,290;
+ sleep 3000;
+ mapannounce "bat_b01","Battle of Flavius will close in 1 minute!",1,0x006400;
+ initnpctimer;
+ end;
+
+OnTimer30000:
+ if( $@FlaviusBG1 == 2 )
+ mapannounce "bat_b01","Battle of Flavius will close in 30 seconds!",1,0x006400;
+ end;
+OnTimer50000:
+ if( $@FlaviusBG1 == 2 )
+ mapannounce "bat_b01","Battle of Flavius will close in 10 seconds!",1,0x006400;
+ end;
+
+OnTimer60000:
+ if( $@FlaviusBG1 != 2 )
+ end;
+OnReset:
+ stopnpctimer;
+ donpcevent "Flavius_BG1::OnRoundStop";
+ set .Guillaume_Score, 0;
+ set .Guillaume_Crystal, 0;
+ set .Guillaume_Loss, 0;
+ set .Croix_Score, 0;
+ set .Croix_Crystal, 0;
+ set .Croix_Loss, 0;
+ set .Match, 0;
+ set $@FlaviusBG1_Victory, 0;
+ // NPC's
+ disablenpc "Guillaume Vintenar#fl1";
+ disablenpc "Croix Vintenar#fl1";
+ disablenpc "Therapist in battle#fl11";
+ disablenpc "Therapist in battle#fl12";
+
+ if( $@FlaviusBG1_id1 ) { bg_destroy $@FlaviusBG1_id1; set $@FlaviusBG1_id1, 0; }
+ if( $@FlaviusBG1_id2 ) { bg_destroy $@FlaviusBG1_id2; set $@FlaviusBG1_id2, 0; }
+ sleep 1000;
+ mapwarp "bat_b01","bat_room",155,150;
+ sleep 2000;
+ maprespawnguildid "bat_b01",0,3; // Just in case someone else
+ sleep 2000;
+ bg_updatescore "bat_b01",0,0;
+ set $@FlaviusBG1, 0;
+ donpcevent "Flavius_BG1::OnReadyCheck";
+ end;
+}
+
+// Battleground rewards
+// *********************************************************************
+
+bat_b01,390,13,5 script Guillaume Vintenar#fl1 419,{
+ if( $@FlaviusBG1_Victory )
+ {
+ if( $@FlaviusBG1_Victory == Bat_Team )
+ { // Victory
+ mes "[Swandery]";
+ mes "Blessed Guillaume!!";
+ mes "Let's enjoy our glorious victory!";
+ mes "" + strcharinfo(0) + ", its a sign reflecting victory";
+ close2;
+ set .@Reward, 9;
+ }
+ else
+ { //
+ mes "[Swandery]";
+ mes "You lost, but you're dedicated to this battle.";
+ mes "This is a reward for your great dedication by Guillaume Marollo!";
+ mes "Just take this defeat a lesson, and later you would definitely learn.";
+ close2;
+ set .@Reward, 3;
+ }
+
+ set Flavius_BG_Tick, gettimetick(2) + 300;
+ getitem 7829, .@Reward;
+ bg_leave;
+ warp "bat_room",155,150;
+ end;
+ }
+ end;
+}
+
+bat_b01,10,293,5 script Croix Vintenar#fl1 415,{
+ if( $@FlaviusBG1_Victory )
+ {
+ if( $@FlaviusBG1_Victory == Bat_Team )
+ { // Victory
+ mes "[Swandery]";
+ mes "Blessed Croax!!";
+ mes "Let's enjoy our glorious victory!";
+ mes "" + strcharinfo(0) + ", its a sign reflecting victory";
+ close2;
+ set .@Reward, 9;
+ }
+ else
+ { //
+ mes "[Swandery]";
+ mes "Oh, " + strcharinfo(0) + ". Don't be sad.";
+ mes "Even though we didn't win, we did our best.";
+ mes "This is a Royal gift from Croix, and please don't forget this battle. We can win the next.";
+ close2;
+ set .@Reward, 3;
+ }
+
+ set Flavius_BG_Tick, gettimetick(2) + 300;
+ getitem 7829, .@Reward;
+ bg_leave;
+ warp "bat_room",155,150;
+ end;
+ }
+ end;
+}
+
+// Battleground Therapist
+// *********************************************************************
+
+bat_b01,390,13,5 script Therapist in battle#fl12 95,{
+ mes "[Therapist in battle]";
+ mes "Just close your eyes, and take a deep breathe.";
+ mes "You can be free from pain.";
+ specialeffect2 312;
+ close;
+}
+
+bat_b01,10,293,5 script Therapist in battle#fl11 95,{
+ mes "[Therapist in battle]";
+ mes "Just close your eyes, and take a deep breathe.";
+ mes "You can be free from pain.";
+ specialeffect2 312;
+ close;
+}
+
+// Battleground Respawn
+// *********************************************************************
+
+bat_b01,390,10,0 script #gfl1_respawn 139,{
+ end;
+
+OnBGStart:
+ initnpctimer;
+ end;
+
+OnBGStop:
+ stopnpctimer;
+ end;
+
+OnTimer24000:
+ misceffect 83;
+ end;
+
+OnTimer25000:
+ areapercentheal "bat_b01",382,2,397,17,100,100;
+ areawarp "bat_b01",382,2,397,17,"bat_b01",311,224;
+ initnpctimer;
+ end;
+}
+
+bat_b01,10,290,0 script #cfl1_respawn 139,{
+ end;
+
+OnBGStart:
+ initnpctimer;
+ end;
+
+OnBGStop:
+ stopnpctimer;
+ end;
+
+OnTimer24000:
+ misceffect 83;
+ end;
+
+OnTimer25000:
+ areapercentheal "bat_b01",2,282,17,297,100,100;
+ areawarp "bat_b01",2,282,17,297,"bat_b01",87,75;
+ initnpctimer;
+ end;
+}
+
+// Flags
+// *********************************************************************
+
+bat_b01,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat1 973
+bat_b01,319,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat2 973
+bat_b01,304,218,1 duplicate(Guillaume camp#bat) Guillaume camp#bat3 973
+bat_b01,319,218,1 duplicate(Guillaume camp#bat) Guillaume camp#bat4 973
+bat_b01,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat5 973
+bat_b01,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat6 973
+bat_b01,335,142,1 duplicate(Guillaume camp#bat) Guillaume camp#bat7 973
+bat_b01,335,157,1 duplicate(Guillaume camp#bat) Guillaume camp#bat8 973
+bat_b01,390,16,1 duplicate(Guillaume camp#bat) Guillaume camp#bat9 973
+bat_b01,292,163,1 duplicate(Guillaume camp#bat) Guillaume camp#bat19 973
+bat_b01,292,136,1 duplicate(Guillaume camp#bat) Guillaume camp#bat20 973
+bat_b01,241,185,1 duplicate(Guillaume camp#bat) Guillaume camp#bat21 973
+bat_b01,247,179,1 duplicate(Guillaume camp#bat) Guillaume camp#bat22 973
+
+bat_b01,96,81,1 duplicate(Croix camp#bat) Croix camp#bat1 974
+bat_b01,96,68,1 duplicate(Croix camp#bat) Croix camp#bat2 974
+bat_b01,79,81,1 duplicate(Croix camp#bat) Croix camp#bat3 974
+bat_b01,79,68,1 duplicate(Croix camp#bat) Croix camp#bat4 974
+bat_b01,96,81,1 duplicate(Croix camp#bat) Croix camp#bat5 974
+bat_b01,96,81,1 duplicate(Croix camp#bat) Croix camp#bat6 974
+bat_b01,59,164,1 duplicate(Croix camp#bat) Croix camp#bat7 974
+bat_b01,59,137,1 duplicate(Croix camp#bat) Croix camp#bat8 974
+bat_b01,10,296,1 duplicate(Croix camp#bat) Croix camp#bat9 974
+bat_b01,110,162,1 duplicate(Croix camp#bat) Croix camp#bat18 974
+bat_b01,110,137,1 duplicate(Croix camp#bat) Croix camp#bat19 974
+bat_b01,152,120,1 duplicate(Croix camp#bat) Croix camp#bat20 974
+bat_b01,158,114,1 duplicate(Croix camp#bat) Croix camp#bat21 974
+
+// MapFlags
+// *********************************************************************
+
+bat_b01 mapflag battleground 2
+bat_b01 mapflag nomemo
+bat_b01 mapflag nosave SavePoint
+bat_b01 mapflag noteleport
+bat_b01 mapflag nowarp
+bat_b01 mapflag nowarpto
+bat_b01 mapflag noreturn
+bat_b01 mapflag nobranch
+bat_b01 mapflag nopenalty
diff --git a/npc/battleground/bg_flavius_02.txt b/npc/battleground/bg_flavius_02.txt
new file mode 100644
index 000000000..493979a06
--- /dev/null
+++ b/npc/battleground/bg_flavius_02.txt
@@ -0,0 +1,453 @@
+// ==============================================================================
+// BattleGround System - Flavius 2
+// ==============================================================================
+
+// Registration NPC's
+// *********************************************************************
+
+bat_room,57,97,4 script Registration::Fl2R_Guillaume 418,{
+ end;
+OnInit:
+ waitingroom "Battle Station 10 Players",10,"Flavius_BG2::OnGuillaumeJoin",1;
+ end;
+OnEnterBG:
+ set $@FlaviusBG2_id1, waitingroom2bg("bat_b02",390,10,0,"Flavius_BG2::OnGuillaumeQuit","");
+ end;
+}
+
+bat_room,57,74,0 script Registration::Fl2R_Croix 414,{
+ end;
+OnInit:
+ waitingroom "Battle Station 10 Players",10,"Flavius_BG2::OnCroixJoin",1;
+ end;
+OnEnterBG:
+ set $@FlaviusBG2_id2, waitingroom2bg("bat_b02",10,290,1,"Flavius_BG2::OnCroixQuit","");
+ end;
+}
+
+// Battleground Engine
+// *********************************************************************
+
+- script Flavius_BG2 -1,{
+ end;
+
+OnInit:
+ disablenpc "Guillaume Vintenar#fl2";
+ disablenpc "Croix Vintenar#fl2";
+ disablenpc "Therapist in battle#fl21";
+ disablenpc "Therapist in battle#fl22";
+ end;
+
+OnGuillaumeQuit:
+OnCroixQuit:
+ set BG_Delay_Tick, gettimetick(2) + 1200;
+ end;
+
+OnGuillaumeJoin:
+OnCroixJoin:
+ if( $@FlaviusBG2 == 0 )
+ donpcevent "Flavius_BG2::OnReadyCheck";
+ end;
+
+OnReadyCheck:
+ if( $@FlaviusBG2 )
+ end;
+ set .@Guillaume, getwaitingroomstate(0,"Fl2R_Guillaume");
+ set .@Croix, getwaitingroomstate(0,"Fl2R_Croix");
+
+ if( .@Guillaume < 10 || .@Croix < 10 )
+ {
+ mapannounce "bat_room","Battleground -- Flavius [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0x808000;
+ end;
+ }
+
+ // BG Variables
+ set $@FlaviusBG2, 1;
+ set $@FlaviusBG2_Victory, 0;
+ set .Guillaume_Score, 0;
+ set .Guillaume_Loss, 0;
+ set .Croix_Score, 0;
+ set .Croix_Loss, 0;
+ set .Match, 0;
+ // Prepare NPC
+ donpcevent "#gfl2_respawn::OnBGStart";
+ donpcevent "#cfl2_respawn::OnBGStart";
+ enablenpc "Therapist in battle#fl21";
+ enablenpc "Therapist in battle#fl22";
+ disablenpc "Guillaume Vintenar#fl2";
+ disablenpc "Croix Vintenar#fl2";
+ // Build and Warp Teams
+ donpcevent "Fl2R_Guillaume::OnEnterBG";
+ donpcevent "Fl2R_Croix::OnEnterBG";
+ announce "Battleground -- Flavius [80-99] has started!",0,0x808000;
+ initnpctimer;
+ // Start Match!!
+
+OnRoundStart:
+ sleep 2000;
+ if( $@FlaviusBG2 != 1 ) end;
+
+ areapercentheal "bat_b02",382,2,397,17,100,100;
+ areapercentheal "bat_b02",2,282,17,297,100,100;
+ bg_warp $@FlaviusBG2_id1,"bat_b02",311,224;
+ bg_warp $@FlaviusBG2_id2,"bat_b02",87,75;
+
+ sleep 2000;
+ if( $@FlaviusBG2 != 1 ) end;
+
+ set .Match, .Match + 1;
+ // Crystal Spawn
+ set .Guillaume_Crystal, bg_monster($@FlaviusBG2_id1,"bat_b02",328,150,"Crystal Guillaume",1914,"Flavius_BG2::OnGuillaumeBreak");
+ setwall "bat_b02",327,149,2,6,0,"gui_wall2-1";
+ setwall "bat_b02",329,149,2,0,0,"gui_wall2-2";
+ setwall "bat_b02",329,151,2,2,0,"gui_wall2-3";
+ setwall "bat_b02",327,151,2,4,0,"gui_wall2-4";
+
+ set .Croix_Crystal, bg_monster($@FlaviusBG2_id2,"bat_b02",62,150,"Crystal Croix",1915,"Flavius_BG2::OnCroixBreak");
+ setwall "bat_b02",61,149,2,6,0,"cro_wall2-1";
+ setwall "bat_b02",63,149,2,0,0,"cro_wall2-2";
+ setwall "bat_b02",63,151,2,2,0,"cro_wall2-3";
+ setwall "bat_b02",61,151,2,4,0,"cro_wall2-4";
+
+ // Guardian Spawns
+ bg_monster $@FlaviusBG2_id1,"bat_b02",328,160,"Guillaume Guardian",1949,"Flavius_BG2::OnGuiGuardian";
+ bg_monster $@FlaviusBG2_id1,"bat_b02",328,140,"Guillaume Guardian",1950,"Flavius_BG2::OnGuiGuardian";
+ set .Guillaume_Guardian, 2;
+ bg_monster $@FlaviusBG2_id2,"bat_b02",62,160,"Croix Guardian",1949,"Flavius_BG2::OnCroGuardian";
+ bg_monster $@FlaviusBG2_id2,"bat_b02",61,140,"Croix Guardian",1950,"Flavius_BG2::OnCroGuardian";
+ set .Croix_Guardian, 2;
+ // Announces
+ mapannounce "bat_b02","The Battle of Flavius [ " + .Match + " ] Round has begun!!",1,0x808000;
+ end;
+
+OnRoundStop:
+ // Remove Monsters
+ killmonster "bat_b02","Flavius_BG2::OnGuiGuardian";
+ killmonster "bat_b02","Flavius_BG2::OnCroGuardian";
+ delwall "gui_wall2-1";
+ delwall "gui_wall2-2";
+ delwall "gui_wall2-3";
+ delwall "gui_wall2-4";
+ killmonster "bat_b02","Flavius_BG2::OnGuillaumeBreak";
+ delwall "cro_wall2-1";
+ delwall "cro_wall2-2";
+ delwall "cro_wall2-3";
+ delwall "cro_wall2-4";
+ killmonster "bat_b02","Flavius_BG2::OnCroixBreak";
+ end;
+
+OnGuiGuardian:
+ if( set(.Guillaume_Guardian, .Guillaume_Guardian - 1) <= 0 )
+ {
+ delwall "gui_wall2-1";
+ delwall "gui_wall2-2";
+ delwall "gui_wall2-3";
+ delwall "gui_wall2-4";
+ mapannounce "bat_b02","The Guillaume Crystal is vulnerable to attack!",1,0x0000FF;
+ }
+ end;
+
+OnCroGuardian:
+ if( set(.Croix_Guardian, .Croix_Guardian - 1) <= 0 )
+ {
+ delwall "cro_wall2-1";
+ delwall "cro_wall2-2";
+ delwall "cro_wall2-3";
+ delwall "cro_wall2-4";
+ mapannounce "bat_b02","The Croix Crystal is vulnerable to attack!",1,0xFF0000;
+ }
+ end;
+
+OnGuillaumeBreak:
+ donpcevent "Flavius_BG2::OnRoundStop";
+ set .Guillaume_Loss, .Guillaume_Loss + 1;
+ if( set(.Croix_Score, .Croix_Score + 1) < 2 )
+ {
+ bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
+ mapannounce "bat_b02","The Guillaume Crystal has been destroyed!",1,0x0000FF;
+ donpcevent "Flavius_BG2::OnRoundStart";
+ }
+ else
+ {
+ bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
+ mapannounce "bat_b02","The Croix army has won the Battle of Flavius!",1,0xFF0000;
+ set $@FlaviusBG2_Victory, 2;
+ donpcevent "Flavius_BG2::OnMatchEnd";
+ }
+ end;
+
+OnCroixBreak:
+ donpcevent "Flavius_BG2::OnRoundStop";
+ set .Croix_Loss, .Croix_Loss + 1;
+ if( set(.Guillaume_Score, .Guillaume_Score + 1) < 2 )
+ {
+ bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
+ mapannounce "bat_b02","The Croix Crystal has been destroyed!",1,0xFF0000;
+ donpcevent "Flavius_BG2::OnRoundStart";
+ }
+ else
+ {
+ bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
+ mapannounce "bat_b02","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
+ set $@FlaviusBG2_Victory, 1;
+ donpcevent "Flavius_BG2::OnMatchEnd";
+ }
+ end;
+
+OnTimer2400000:
+ mapannounce "bat_b02","Battle of Flavius will ends in 5 minutes",1,0x808000;
+ end;
+OnTimer2640000:
+ mapannounce "bat_b02","Battle of Flavius will ends in 1 minute",1,0x808000;
+ end;
+
+OnTimer2700000:
+ if( .Croix_Score > .Guillaume_Score )
+ {
+ mapannounce "bat_b02","The Croix army has won the Battle of Flavius!",1,0xFF0000;
+ set $@FlaviusBG2_Victory, 2;
+ }
+ else if( .Croix_Score < .Guillaume_Score )
+ {
+ mapannounce "bat_b02","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
+ set $@FlaviusBG2_Victory, 1;
+ }
+ else
+ {
+ mapannounce "bat_b02","The Battle of Flavius is over. The time is out, this is a Tie",1,0x808000;
+ set $@FlaviusBG2_Victory, 3;
+ }
+
+OnMatchEnd:
+ set $@FlaviusBG2, 2;
+ stopnpctimer;
+ donpcevent "#gfl2_respawn::OnBGStop";
+ donpcevent "#cfl2_respawn::OnBGStop";
+ disablenpc "Therapist in battle#fl21";
+ disablenpc "Therapist in battle#fl22";
+ enablenpc "Guillaume Vintenar#fl2";
+ enablenpc "Croix Vintenar#fl2";
+ sleep 2000;
+ bg_warp $@FlaviusBG2_id1,"bat_b02",390,10;
+ bg_warp $@FlaviusBG2_id2,"bat_b02",10,290;
+ sleep 3000;
+ mapannounce "bat_b02","Battle of Flavius will close in 1 minute!",1,0x808000;
+ initnpctimer;
+ end;
+
+OnTimer30000:
+ if( $@FlaviusBG2 == 2 )
+ mapannounce "bat_b02","Battle of Flavius will close in 30 seconds!",1,0x808000;
+ end;
+OnTimer50000:
+ if( $@FlaviusBG2 == 2 )
+ mapannounce "bat_b02","Battle of Flavius will close in 10 seconds!",1,0x808000;
+ end;
+
+OnTimer60000:
+ if( $@FlaviusBG2 != 2 )
+ end;
+OnReset:
+ stopnpctimer;
+ donpcevent "Flavius_BG2::OnRoundStop";
+ set .Guillaume_Score, 0;
+ set .Guillaume_Crystal, 0;
+ set .Guillaume_Loss, 0;
+ set .Croix_Score, 0;
+ set .Croix_Crystal, 0;
+ set .Croix_Loss, 0;
+ set .Match, 0;
+ set $@FlaviusBG2_Victory, 0;
+ // NPC's
+ disablenpc "Guillaume Vintenar#fl2";
+ disablenpc "Croix Vintenar#fl2";
+ disablenpc "Therapist in battle#fl21";
+ disablenpc "Therapist in battle#fl22";
+
+ if( $@FlaviusBG2_id1 ) { bg_destroy $@FlaviusBG2_id1; set $@FlaviusBG2_id1, 0; }
+ if( $@FlaviusBG2_id2 ) { bg_destroy $@FlaviusBG2_id2; set $@FlaviusBG2_id2, 0; }
+ sleep 1000;
+ mapwarp "bat_b02","bat_room",155,150;
+ sleep 2000;
+ maprespawnguildid "bat_b02",0,3; // Just in case someone else
+ sleep 2000;
+ bg_updatescore "bat_b02",0,0;
+ set $@FlaviusBG2, 0;
+ donpcevent "Flavius_BG2::OnReadyCheck";
+ end;
+}
+
+// Battleground rewards
+// *********************************************************************
+
+bat_b02,390,13,5 script Guillaume Vintenar#fl2 419,{
+ if( $@FlaviusBG2_Victory )
+ {
+ if( $@FlaviusBG2_Victory == Bat_Team )
+ { // Victory
+ mes "[Swandery]";
+ mes "Blessed Guillaume!!";
+ mes "Let's enjoy our glorious victory!";
+ mes "" + strcharinfo(0) + ", its a sign reflecting victory";
+ close2;
+ set .@Reward, 9;
+ }
+ else
+ { //
+ mes "[Swandery]";
+ mes "You lost, but you're dedicated to this battle.";
+ mes "This is a reward for your great dedication by Guillaume Marollo!";
+ mes "Just take this defeat a lesson, and later you would definitely learn.";
+ close2;
+ set .@Reward, 3;
+ }
+
+ set Flavius_BG_Tick, gettimetick(2) + 300;
+ getitem 7829, .@Reward;
+ bg_leave;
+ warp "bat_room",155,150;
+ end;
+ }
+ end;
+}
+
+bat_b02,10,293,5 script Croix Vintenar#fl2 415,{
+ if( $@FlaviusBG2_Victory )
+ {
+ if( $@FlaviusBG2_Victory == Bat_Team )
+ { // Victory
+ mes "[Swandery]";
+ mes "Blessed Croax!!";
+ mes "Let's enjoy our glorious victory!";
+ mes "" + strcharinfo(0) + ", its a sign reflecting victory";
+ close2;
+ set .@Reward, 9;
+ }
+ else
+ { //
+ mes "[Swandery]";
+ mes "Oh, " + strcharinfo(0) + ". Don't be sad.";
+ mes "Even though we didn't win, we did our best.";
+ mes "This is a Royal gift from Croix, and please don't forget this battle. We can win the next.";
+ close2;
+ set .@Reward, 3;
+ }
+
+ set Flavius_BG_Tick, gettimetick(2) + 300;
+ getitem 7829, .@Reward;
+ bg_leave;
+ warp "bat_room",155,150;
+ end;
+ }
+ end;
+}
+
+// Battleground Therapist
+// *********************************************************************
+
+bat_b02,390,13,5 script Therapist in battle#fl22 95,{
+ mes "[Therapist in battle]";
+ mes "Just close your eyes, and take a deep breathe.";
+ mes "You can be free from pain.";
+ specialeffect2 312;
+ close;
+}
+
+bat_b02,10,293,5 script Therapist in battle#fl21 95,{
+ mes "[Therapist in battle]";
+ mes "Just close your eyes, and take a deep breathe.";
+ mes "You can be free from pain.";
+ specialeffect2 312;
+ close;
+}
+
+// Battleground Respawn
+// *********************************************************************
+
+bat_b02,390,10,0 script #gfl2_respawn 139,{
+ end;
+
+OnBGStart:
+ initnpctimer;
+ end;
+
+OnBGStop:
+ stopnpctimer;
+ end;
+
+OnTimer24000:
+ misceffect 83;
+ end;
+
+OnTimer25000:
+ areapercentheal "bat_b02",382,2,397,17,100,100;
+ areawarp "bat_b02",382,2,397,17,"bat_b02",311,224;
+ initnpctimer;
+ end;
+}
+
+bat_b02,10,290,0 script #cfl2_respawn 139,{
+ end;
+
+OnBGStart:
+ initnpctimer;
+ end;
+
+OnBGStop:
+ stopnpctimer;
+ end;
+
+OnTimer24000:
+ misceffect 83;
+ end;
+
+OnTimer25000:
+ areapercentheal "bat_b02",2,282,17,297,100,100;
+ areawarp "bat_b02",2,282,17,297,"bat_b02",87,75;
+ initnpctimer;
+ end;
+}
+
+// Flags
+// *********************************************************************
+
+bat_b02,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat32 973
+bat_b02,319,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat33 973
+bat_b02,304,218,1 duplicate(Guillaume camp#bat) Guillaume camp#bat34 973
+bat_b02,319,218,1 duplicate(Guillaume camp#bat) Guillaume camp#bat35 973
+bat_b02,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat36 973
+bat_b02,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat37 973
+bat_b02,335,142,1 duplicate(Guillaume camp#bat) Guillaume camp#bat38 973
+bat_b02,335,157,1 duplicate(Guillaume camp#bat) Guillaume camp#bat39 973
+bat_b02,390,16,1 duplicate(Guillaume camp#bat) Guillaume camp#bat40 973
+bat_b02,292,163,1 duplicate(Guillaume camp#bat) Guillaume camp#bat41 973
+bat_b02,292,136,1 duplicate(Guillaume camp#bat) Guillaume camp#bat42 973
+bat_b02,241,185,1 duplicate(Guillaume camp#bat) Guillaume camp#bat43 973
+bat_b02,247,179,1 duplicate(Guillaume camp#bat) Guillaume camp#bat44 973
+
+bat_b02,96,81,1 duplicate(Croix camp#bat) Croix camp#bat30 974
+bat_b02,96,68,1 duplicate(Croix camp#bat) Croix camp#bat31 974
+bat_b02,79,81,1 duplicate(Croix camp#bat) Croix camp#bat32 974
+bat_b02,79,68,1 duplicate(Croix camp#bat) Croix camp#bat33 974
+bat_b02,96,81,1 duplicate(Croix camp#bat) Croix camp#bat34 974
+bat_b02,96,81,1 duplicate(Croix camp#bat) Croix camp#bat35 974
+bat_b02,59,164,1 duplicate(Croix camp#bat) Croix camp#bat36 974
+bat_b02,59,137,1 duplicate(Croix camp#bat) Croix camp#bat37 974
+bat_b02,10,296,1 duplicate(Croix camp#bat) Croix camp#bat38 974
+bat_b02,110,162,1 duplicate(Croix camp#bat) Croix camp#bat39 974
+bat_b02,110,137,1 duplicate(Croix camp#bat) Croix camp#bat40 974
+bat_b02,152,120,1 duplicate(Croix camp#bat) Croix camp#bat41 974
+bat_b02,158,114,1 duplicate(Croix camp#bat) Croix camp#bat42 974
+
+// MapFlags
+// *********************************************************************
+
+bat_b02 mapflag battleground
+bat_b02 mapflag nomemo
+bat_b02 mapflag nosave SavePoint
+bat_b02 mapflag noteleport
+bat_b02 mapflag nowarp
+bat_b02 mapflag nowarpto
+bat_b02 mapflag noreturn
+bat_b02 mapflag nobranch
+bat_b02 mapflag nopenalty
diff --git a/npc/scripts_custom.conf b/npc/scripts_custom.conf
index 9cbbe9511..35f81b146 100644
--- a/npc/scripts_custom.conf
+++ b/npc/scripts_custom.conf
@@ -74,6 +74,8 @@
//npc: npc/battleground/bg_common.txt
//npc: npc/battleground/bg_tierra_01.txt
//npc: npc/battleground/bg_tierra_02.txt
+//npc: npc/battleground/bg_flavius_01.txt
+//npc: npc/battleground/bg_flavius_02.txt
// --------------------------------------------------------------
// Lance's Scripts (coded before joining eA Dev team)