瀏覽代碼

- Release of Battleground Tierra Valley scripts 1 and 2.
- I put them on custom because it's not based on Aegis scripts, but most of the work is based on official dialogs and information.
- Thanks to UEAUP Team for most of the information from official servers.
- I will release Flavius 1/2 and Kreiger Von Midgard some days later (already done).

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13568 54d463be-8e91-2dee-dedb-b68131a5f0ec

zephyrus 16 年之前
父節點
當前提交
179ea86284
共有 4 個文件被更改,包括 2354 次插入0 次删除
  1. 1126 0
      npc/battleground/bg_common.txt
  2. 610 0
      npc/battleground/bg_tierra_01.txt
  3. 610 0
      npc/battleground/bg_tierra_02.txt
  4. 8 0
      npc/scripts_custom.conf

+ 1126 - 0
npc/battleground/bg_common.txt

@@ -0,0 +1,1126 @@
+// ==============================================================================
+// BattleGround System - Common NPCs
+// ==============================================================================
+
+// MapFlags
+// *********************************************************************
+
+bat_room	mapflag	nomemo
+bat_room	mapflag	nowarpto
+bat_room	mapflag	nobranch
+bat_room	mapflag	nopenalty
+bat_room	mapflag	noteleport
+bat_room	mapflag	nosave	SavePoint
+
+// BattleGround Warper - Entrance
+// *********************************************************************
+
+payon,189,104,3	script	Maroll Battle Recruiter::BatRecruit	728,{
+	mes "[Maroll Battle Recruiter]";
+	mes "Good day, adventurer.";
+	mes "I'm a knight from a far country called Maroll Kingdom.";
+	next;
+	mes "[Maroll Battle Recruiter]";
+	mes "The two princes of the kingdom are now battling for the throne of Maroll, and are in need of experienced soldiers liky you. How would you like to lend your power to one of the princes in the Maroll Kingdom?";
+	next;
+	if( select("Join:Don't Join") == 2 )
+	{
+		mes "[Maroll Battle Recruiter]";
+		mes "I'll always be stationed here for more soldiers. Fell free to come back whenever you're interested.";
+		close;
+	}
+	mes "[Maroll Battle Recruiter]";
+	mes "May the war god bless you.";
+	close2;
+	warp "bat_room",155,150;
+	end;
+}
+
+prontera,123,83,5	duplicate(BatRecruit)	Maroll Battle Recruiter::BatRecruit2	728
+rachel,149,138,5	duplicate(BatRecruit)	Maroll Battle Recruiter::BatRecruit3	728
+moc_ruins,75,162,5	duplicate(BatRecruit)	Maroll Battle Recruiter::BatRecruit4	728
+aldebaran,146,109,5	duplicate(BatRecruit)	Maroll Battle Recruiter::BatRecruit5	728
+lighthalzen,153,86,5	duplicate(BatRecruit)	Maroll Battle Recruiter::BatRecruit6	728
+
+// BattleGround Warper - Exit
+// *********************************************************************
+
+bat_room,148,150,4	script	Teleporter#bat	124,{
+	mes "[Teleporter]";
+	mes "Do you wish to leave the battlefield? Use my service to return to town.";
+	next;
+	if( select("Leave:Don't Leave") == 2 )
+	{
+		mes "[Teleporter]";
+		mes "I'll be here whenever you're in need of my service.";
+		close;
+	}
+
+	set .@spoint$, getsavepoint(0);
+	set .@x, getsavepoint(1);
+	set .@y, getsavepoint(2);
+	mes "[Teleporter]";
+	mes "You will be sent back to " + .@spoint$ + ".";
+	close2;
+	warp .@spoint$, .@x, .@y;
+	end;
+}
+
+// Kafra
+// *********************************************************************
+bat_room,148,147,4	script	Kafra Staff::kaf_bat	861,{
+	cutin "kafra_09",2;
+	callfunc "F_Kafra",0,2,1,150,0;
+}
+
+// General Guillaume
+// *********************************************************************
+bat_room,160,159,3	script	General Guillaume	420,{
+	cutin "bat_kiyom2",2;
+	mes "[General Guillaume]";
+	mes "Hot-blooded adventurer, we need your ability to win this battle.";
+	next;
+	cutin "bat_kiyom1",2;
+	mes "[General Guillaume]";
+	mes "Our great king, Marcel Marollo VII, is very sick lately. His Majesty has declared that he chosen either me or Prince Croix as the next king amongst his 9 sons.";
+	next;
+	mes "[General Guillaume]";
+	mes "Two kings can't share a nation!";
+	mes "Only the one victorious from His Majesty's appointed battle will be enthroned.";
+	next;
+	mes "[General Guillaume]";
+	mes "This is however, not just a battle between us. This battle will determine the future of this country. I pledge on my honor to prove that I'm the one who can protect this Maroll from outside threats.";
+	next;
+	if( select("Yes, I want to join you.:End Conversation") == 2 )
+	{
+		mes "[General Guillaume]";
+		mes "I'll be the one who will capture the flag!";
+		close2;
+		cutin "",255;
+		end;
+	}
+	cutin "bat_kiyom2",2;
+	mes "[General Guillaume]";
+	mes "Welcome to my army, comrade.";
+	mes "Your eyes tell me that you're a soldier that I can trust.";
+	set Bat_Team,1;
+	next;
+	mes "[General Guillaume]";
+	mes "Now, go upstairs and apply for battle with your comrades. I'm sure they'll welcome you whole-heartedly!";
+	close2;
+	cutin "",255;
+	end;
+}
+
+// General Croix
+// *********************************************************************
+bat_room,160,140,3	script	Prince Croix	416,{
+	cutin "bat_crua1",2;
+	mes "[Prince Croix]";
+	mes "Wise adventurer, why don't you lend us your power for victory?";
+	next;
+	cutin "bat_crua2",2;
+	mes "[Prince Croix]";
+	mes "I do not wish to shed blood, but I have no choice but to fight for the possibility of peace and for the sake of my people.";
+	next;
+	mes "[Prince Croix]";
+	mes "General Guillaume may have an advantage in this battle as he is the great general of Maroll, but that doesn't automatically mean he'll win. I want to win this battle so that I can grant a better future for my people.";
+	next;
+	if( select("Yes, I want to join you!:End Conversation") == 2 )
+	{
+		mes "[Prince Croix]";
+		mes "For Maroll!";
+		close2;
+		cutin "",255;
+		end;
+	}
+	mes "[Prince Croix]";
+	mes "Thank you so much. I feel like I can win with the help of adventurers like you. Now, please go downstairs and join your comrades in sharpening their skills to fight the enemy!";
+	set Bat_Team,2;
+	close2;
+	cutin "",255;
+	end;
+}
+
+// Time calculation Function
+// *********************************************************************
+function	script	Time2Str	{
+	set .@Time_Left, getarg(0) - gettimetick(2);
+	
+	set .@Days, .@Time_Left / 86400;
+	set .@Time_Left, .@Time_Left - (.@Days * 86400);
+	set .@Hours, .@Time_Left / 3600;
+	set .@Time_Left, .@Time_Left - (.@Hours * 3600);
+	set .@Minutes, .@Time_Left / 60;
+	set .@Time_Left, .@Time_Left - (.@Minutes * 60);
+	
+	set .@Time$, "";
+	if( .@Days > 1 )
+		set .@Time$, .@Time$ + .@Days + " days, ";
+	else if( .@Days > 0 )
+		set .@Time$, .@Time$ + .@Days + " day, ";
+
+	if( .@Hours > 1 )
+		set .@Time$, .@Time$ + .@Hours + " hours, ";
+	else if( .@Hours > 0 )
+		set .@Time$, .@Time$ + .@Hours + " hour, ";
+
+	if( .@Minutes > 1 )
+		set .@Time$, .@Time$ + .@Minutes + " minutes, ";
+	else if( .@Minutes > 0 )
+		set .@Time$, .@Time$ + .@Minutes + " minute, ";
+
+	if( .@Time_Left > 1 || .@Time_Left == 0 )
+		set .@Time$, .@Time$ + .@Time_Left + " seconds.";
+	else if( .@Time_Left == 1 )
+		set .@Time$, .@Time$ + .@Time_Left + " second.";
+	
+	return .@Time$;
+}
+
+// Guillaume Knight - Tierra Valley
+// *********************************************************************
+bat_room,159,178,5	script	Guillaume Knight#1	417,{
+	mes "[Guillaume Knight]";
+	mes "Tierra Gorge is a very steep canyon with two forts residing in the north and south ends of the map.";
+	next;
+	mes "[Guillaume Knight]";
+	mes "There is a ration depot for the Guillaume and Croix armies at the 11 and 8 o'clock directions.";
+	next;
+	mes "[Guillaume Knight]";
+	mes "The battle starts at your army's ship, and the goal is to advance and destroy your enemy's rations depot faster than they can destroy yours.";
+	mes "";
+	mes "The army that captures the neutral flag in the center of the battlefield will be rewarded with extra regeneration points, meaning their soldiers will resurrect more than the other side, giving them an advantage.";
+	next;
+	mes "[Guillaume Knight]";
+	mes "Are you ready for battle? Then apply with the recruiter next to me!";
+	close;
+}
+
+// Tierra Officerer - Guillaume
+// *********************************************************************
+bat_room,156,178,5	script	Tierra Valley Officer#1	418,{
+	mes "[Tierra Officer]";
+	if( Bat_Team == 2 )
+	{
+		mes "Get out of here you stinky Croix!";
+		close;
+	}
+
+	if( Bat_Team == 0 )
+	{
+		mes "Please sign up for an army with Prince Croix or General Guillaume!";
+		close;
+	}
+	
+	mes "Hello " + strcharinfo(0) + ", let's show the power of the Guillaume Army to those stinky Croixs!";
+	next;
+	if( select("I want to join your army!:End Conversation") == 2 )
+		close;
+
+	mes "[Tierra Officer]";
+	if( BG_Delay_Tick >= gettimetick(2) )
+	{
+		mes "You are a Deserter!!";
+		mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround.";
+		close;
+	}
+	if( Tierra_BG_Tick >= gettimetick(2) )
+	{
+		mes "Sorry, you can't join the battle right now.";
+		mes "You need to wait ^0000FF" + callfunc("Time2Str",Tierra_BG_Tick) + "^000000 to join again Tierra Valley.";
+		close;
+	}
+	if( BaseLevel < 80 )
+	{
+		mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield";
+		close;
+	}
+
+	mes "Good luck!";
+	close2;
+	warp "bat_room",85,224;
+	end;
+}
+
+// Croix Knight - Tierra Valley
+// *********************************************************************
+bat_room,159,121,1	script	Croix Knight#1	413,{
+	mes "[Croix Knight]";
+	mes "Tierra Gorge is a very steep canyon with two forts residing in the north and south ends of the map.";
+	next;
+	mes "[Croix Knight]";
+	mes "There is a ration depot for the Guillaume and Croix armies at the 11 and 8 o'clock directions.";
+	next;
+	mes "[Croix Knight]";
+	mes "The battle starts at your army's ship, and the goal is to advance and destroy your enemy's rations depot faster than they can destroy yours.";
+	mes "";
+	mes "The army that captures the neutral flag in the center of the battlefield will be rewarded with extra regeneration points, meaning their soldiers will resurrect more than the other side, giving them an advantage.";
+	next;
+	mes "[Croix Knight]";
+	mes "Are you ready for battle? Then apply with the recruiter next to me!";
+	close;
+}
+
+// Tierra Officer - Croix
+// *********************************************************************
+bat_room,156,121,1	script	Tierra Valley Officer#2	414,{
+	mes "[Tierra Officer]";
+	if( Bat_Team == 1 )
+	{
+		mes "Get out of here you stupid Guillaume!";
+		close;
+	}
+
+	if( Bat_Team == 0 )
+	{
+		mes "Please sign up for an army with Prince Croix or General Guillaume!";
+		close;
+	}
+
+	mes "Hello " + strcharinfo(0) + ", let's show the power of the Croix Army to those stinky Guillaumes!";
+	next;
+	if( select("I want to join your army!:End Conversation") == 2 )
+		close;
+
+	mes "[Tierra Officer]";
+	if( BG_Delay_Tick >= gettimetick(2) )
+	{
+		mes "You are a Deserter!!";
+		mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround.";
+		close;
+	}
+	if( Tierra_BG_Tick >= gettimetick(2) )
+	{
+		mes "Sorry, you can't join the battle right now.";
+		mes "You need to wait ^0000FF" + callfunc("Time2Str",Tierra_BG_Tick) + "^000000 to join again Tierra Valley.";
+		close;
+	}
+	if( BaseLevel < 80 )
+	{
+		mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield";
+		close;
+	}
+
+	mes "Good luck!";
+	close2;
+	warp "bat_room",85,208;
+	end;
+}
+
+// Guillaume Knight - Tierra
+// *********************************************************************
+bat_room,175,178,5	script	Guillaume Knight#3	417,{
+	mes "[Guillaume Knight]";
+	mes "Tierra Gorge is a very steep canyon with two forts residing in the north and south ends of the map.";
+	next;
+	mes "[Guillaume Knight]";
+	mes "There is a ration depot for the Guillaume and Croix armies at the 11 and 8 o'clock directions.";
+	next;
+	mes "[Guillaume Knight]";
+	mes "The battle starts at your army's ship, and the goal is to advance and destroy your enemy's rations depot faster than they can destroy yours.";
+	mes "";
+	mes "The army that captures the neutral flag in the center of the battlefield will be rewarded with extra regeneration points, meaning their soldiers will resurrect more than the other side, giving them an advantage.";
+	next;
+	mes "[Guillaume Knight]";
+	mes "Are you ready for battle? Then apply with the recruiter next to me!";
+	close;
+}
+
+// Tierra EoS Officer - Guillaume
+// *********************************************************************
+bat_room,172,178,5	script	Tierra Valley Officer#3	418,{
+	mes "[Tierra Officer]";
+	if( Bat_Team == 2 )
+	{
+		mes "Get out of here you stinky Croix!";
+		close;
+	}
+
+	if( Bat_Team == 0 )
+	{
+		mes "Please sign up for an army with Prince Croix or General Guillaume!";
+		close;
+	}
+	
+	mes "Hello " + strcharinfo(0) + ", let's show the power of the Guillaume Army to those stinky Croixs!";
+	next;
+	if( select("I want to join your army!:End Conversation") == 2 )
+		close;
+
+	mes "[Tierra Officer]";
+	if( BG_Delay_Tick >= gettimetick(2) )
+	{
+		mes "You are a Deserter!!";
+		mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround.";
+		close;
+	}
+	if( Tierra_BG_Tick >= gettimetick(2) )
+	{
+		mes "Sorry, you can't join the battle right now.";
+		mes "You need to wait ^0000FF" + callfunc("Time2Str",Tierra_BG_Tick) + "^000000 to join again Tierra Valley.";
+		close;
+	}
+	if( BaseLevel < 80 )
+	{
+		mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield";
+		close;
+	}
+
+	mes "Good luck!";
+	close2;
+	warp "bat_room",85,94;
+	end;
+}
+
+// Croix Knight - Tierra
+// *********************************************************************
+bat_room,175,121,1	script	Croix Knight#3	413,{
+	mes "[Croix Knight]";
+	mes "Tierra Gorge is a very steep canyon with two forts residing in the north and south ends of the map.";
+	next;
+	mes "[Croix Knight]";
+	mes "There is a ration depot for the Guillaume and Croix armies at the 11 and 8 o'clock directions.";
+	next;
+	mes "[Croix Knight]";
+	mes "The battle starts at your army's ship, and the goal is to advance and destroy your enemy's rations depot faster than they can destroy yours.";
+	mes "";
+	mes "The army that captures the neutral flag in the center of the battlefield will be rewarded with extra regeneration points, meaning their soldiers will resurrect more than the other side, giving them an advantage.";
+	next;
+	mes "[Croix Knight]";
+	mes "Are you ready for battle? Then apply with the recruiter next to me!";
+	close;
+}
+
+// Tierra EoS Officer - Croix
+// *********************************************************************
+bat_room,172,121,1	script	Tierra Valley Officer#4	414,{
+	mes "[Tierra Officer]";
+	if( Bat_Team == 1 )
+	{
+		mes "Get out of here you stupid Guillaume!";
+		close;
+	}
+
+	if( Bat_Team == 0 )
+	{
+		mes "Please sign up for an army with Prince Croix or General Guillaume!";
+		close;
+	}
+
+	mes "Hello " + strcharinfo(0) + ", let's show the power of the Croix Army to those stinky Guillaumes!";
+	next;
+	if( select("I want to join your army!:End Conversation") == 2 )
+		close;
+
+	mes "[Tierra Officer]";
+	if( BG_Delay_Tick >= gettimetick(2) )
+	{
+		mes "You are a Deserter!!";
+		mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround.";
+		close;
+	}
+	if( Tierra_BG_Tick >= gettimetick(2) )
+	{
+		mes "Sorry, you can't join the battle right now.";
+		mes "You need to wait ^0000FF" + callfunc("Time2Str",Tierra_BG_Tick) + "^000000 to join again Tierra Valley.";
+		close;
+	}
+	if( BaseLevel < 80 )
+	{
+		mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield";
+		close;
+	}
+
+	mes "Good luck!";
+	close2;
+	warp "bat_room",85,77;
+	end;
+}
+
+// Guillaune Knight - Flavius
+// *********************************************************************
+bat_room,151,178,5	script	Guillaume Knight#2	417,{
+	mes "[Guillaume Knight]";
+	mes "The objective of the Flavius Battle is to score 2 points before your enemy by destryoing theur crystal.";
+	next;
+	mes "[Guillaume Knight]";
+	mes "The crystals for both armies are protected by special barricades that cannot be destroyed by direct attacks.";
+	next;
+	mes "[Guillaume Knight]";
+	mes "But they can be removed by destroying the Guardians that protect the enemy army base.";
+	next;
+	mes "[Guillaume Knight]";
+	mes "The crystals are immune to every type of skill; your physical attacks are the only choice for destroying your enemy's crystal.";
+	next;
+	mes "[Guillaume Knight]";
+	mes "Are you ready for battle? Then apply with the recruiter next to me!";
+	close;
+}
+
+// Flavius Officerer - Guillaume
+// *********************************************************************
+bat_room,148,178,5	script	Flavius Officer#1	418,{
+	mes "[Flavius Officer]";
+	if( Bat_Team == 2 )
+	{
+		mes "Get out of here you stupid Croix!";
+		close;
+	}
+
+	if( Bat_Team == 0 )
+	{
+		mes "Please sign up for an army with Prince Croix or General Guillaume!";
+		close;
+	}
+
+	mes "Hello " + strcharinfo(0) + ", let's show the power of the Guillaume Army to those stinky Croixs!";
+	next;
+	if( select("I want to join your army!:End Conversation") == 2 )
+		close;
+
+	mes "[Flavius Officer]";
+	if( BG_Delay_Tick >= gettimetick(2) )
+	{
+		mes "You are a Deserter!!";
+		mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround.";
+		close;
+	}
+	if( Flavius_BG_Tick >= gettimetick(2) )
+	{
+		mes "Sorry, you can't join the battle right now.";
+		mes "You need to wait ^0000FF" + callfunc("Time2Str",Flavius_BG_Tick) + "^000000 to join again Flavius.";
+		close;
+	}
+	if( BaseLevel < 80 )
+	{
+		mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield";
+		close;
+	}
+
+	mes "Good luck!";
+	close2;
+	warp "bat_room",253,94;
+	end;
+}
+
+// Croix Knight - Flavius
+// *********************************************************************
+bat_room,151,121,1	script	Croix Knight#2	413,{
+	mes "[Croix Knight]";
+	mes "The objective of the Flavius Battle is to score 2 points before your enemy by destryoing theur crystal.";
+	next;
+	mes "[Croix Knight]";
+	mes "The crystals for both armies are protected by special barricades that cannot be destroyed by direct attacks.";
+	next;
+	mes "[Croix Knight]";
+	mes "But they can be removed by destroying the Guardians that protect the enemy army base.";
+	next;
+	mes "[Croix Knight]";
+	mes "The crystals are immune to every type of skill; your physical attacks are the only choice for destroying your enemy's crystal.";
+	next;
+	mes "[Croix Knight]";
+	mes "Are you ready for battle? Then apply with the recruiter next to me!";
+	close;
+}
+
+// Flavius Officerer - Croix
+// *********************************************************************
+bat_room,148,121,1	script	Flavius Officer#2	414,{
+	mes "[Flavius Officer]";
+	if( Bat_Team == 1 )
+	{
+		mes "Get out of here you stupid Guillaume!";
+		close;
+	}
+
+	if( Bat_Team == 0 )
+	{
+		mes "Please sign up for an army with Prince Croix or General Guillaume!";
+		close;
+	}
+
+	mes "Hello " + strcharinfo(0) + ", let's show the power of the Croix Army to those stinky Guillaumes!";
+	next;
+	if( select("I want to join your army!:End Conversation") == 2 )
+		close;
+
+	mes "[Flavius Officer]";
+	if( BG_Delay_Tick >= gettimetick(2) )
+	{
+		mes "You are a Deserter!!";
+		mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround.";
+		close;
+	}
+	if( Flavius_BG_Tick >= gettimetick(2) )
+	{
+		mes "Sorry, you can't join the battle right now.";
+		mes "You need to wait ^0000FF" + callfunc("Time2Str",Flavius_BG_Tick) + "^000000 to join again Flavius.";
+		close;
+	}
+	if( BaseLevel < 80 )
+	{
+		mes "I'm very please you want to join our army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield";
+		close;
+	}
+
+	mes "Good luck!";
+	close2;
+	warp "bat_room",253,77;
+	end;
+}
+
+// Guillaume Knight - KvM
+// *********************************************************************
+bat_room,143,178,5	script	Guillaume Knight#3	417,{
+	mes "[Guillaume Knight]";
+	mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other oponents before all of you die.";
+	next;
+	mes "[Guillaume Knight]";
+	mes "The first team to lose all their soldiers loses.";
+	next;
+	mes "[Guillaume Knight]";
+	mes "Since you cannot come back to battle after you die, taking care on the battlefield is essential.";
+	next;
+	mes "[Guillaume Knight]";
+	mes "Are you ready for battle? Then apply with the recruiter next to me!";
+	close;
+}
+
+// KvM Officerer - Guillaume
+// *********************************************************************
+bat_room,140,178,5	script	KVM [80-99] Officer#1	418,{
+	mes "[KVM Officer]";
+	if( Bat_Team == 2 )
+	{
+		mes "Get out of here you stinky Croix!";
+		close;
+	}
+
+	if( Bat_Team == 0 )
+	{
+		mes "Please sign up for an army with Prince Croix or General Guillaume!";
+		close;
+	}
+
+	mes "Hello " + strcharinfo(0) + ", let's show the power of the Guillaume Army to those stinky Croixs!";
+	next;
+	if( select("I want to join your army!:End Conversation") == 2 )
+		close;
+
+	mes "[KVM Officer]";
+	if( BG_Delay_Tick >= gettimetick(2) )
+	{
+		mes "You are a Deserter!!";
+		mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround.";
+		close;
+	}
+	if( KvM_BG_Tick >= gettimetick(2) )
+	{
+		mes "Sorry, you can't join the battle right now.";
+		mes "You need to wait ^0000FF" + callfunc("Time2Str",KvM_BG_Tick) + "^000000 to join KvM.";
+		close;
+	}
+	if( BaseLevel < 80 )
+	{
+		mes "I'm very please you want to join our army, but I'm sorry: This arena is for players with baselevel from 80 to 99.";
+		close;
+	}
+
+	mes "Good luck!";
+	close2;
+	warp "bat_room",253,224;
+	end;
+}
+
+// Croix Knight - KvM
+// *********************************************************************
+bat_room,143,121,1	script	Croix Knight#3	413,{
+	mes "[Croix Knight]";
+	mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other oponents before all of you die.";
+	next;
+	mes "[Croix Knight]";
+	mes "The first team to lose all their soldiers loses.";
+	next;
+	mes "[Croix Knight]";
+	mes "Since you cannot come back to battle after you die, taking care on the battlefield is essential.";
+	next;
+	mes "[Croix Knight]";
+	mes "Are you ready for battle? Then apply with the recruiter next to me!";
+	close;
+}
+
+// KvM Officer - Croix
+// *********************************************************************
+bat_room,140,121,1	script	KVM [80-99] Officer#2	414,{
+	mes "[KVM Officer]";
+	if( Bat_Team == 1 )
+	{
+		mes "Get out of here you stupid Guillaume!";
+		close;
+	}
+
+	if( Bat_Team == 0 )
+	{
+		mes "Please sign up for an army with Prince Croix or General Guillaume!";
+		close;
+	}
+
+	mes "Hello " + strcharinfo(0) + ", let's show the power of the Croix Army to those stinky Guillaumes!";
+	next;
+	if( select("I want to join your army!:End Conversation") == 2 )
+		close;
+
+	mes "[KVM Officer]";
+	if( BG_Delay_Tick >= gettimetick(2) )
+	{
+		mes "You are a Deserter!!";
+		mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround.";
+		close;
+	}
+	if( KvM_BG_Tick >= gettimetick(2) )
+	{
+		mes "Sorry, you can't join the battle right now.";
+		mes "You need to wait ^0000FF" + callfunc("Time2Str",KvM_BG_Tick) + "^000000 to join KvM.";
+		close;
+	}
+	if( BaseLevel < 80 )
+	{
+		mes "I'm very please you want to join our army, but I'm sorry: This arena is for players with baselevel from 80 to 99.";
+		close;
+	}
+
+	mes "Good luck!";
+	close2;
+	warp "bat_room",253,208;
+	end;
+}
+
+// Guillaume Knight - KvM
+// *********************************************************************
+bat_room,135,178,5	script	Guillaume Knight#4	417,{
+	mes "[Guillaume Knight]";
+	mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other oponents before all of you die.";
+	next;
+	mes "[Guillaume Knight]";
+	mes "The first team to lose all their soldiers loses.";
+	next;
+	mes "[Guillaume Knight]";
+	mes "Since you cannot come back to battle after you die, taking care on the battlefield is essential.";
+	next;
+	mes "[Guillaume Knight]";
+	mes "Are you ready for battle? Then apply with the recruiter next to me!";
+	close;
+}
+
+// KvM Officerer - Guillaume
+// *********************************************************************
+bat_room,132,178,5	script	KVM [60-79] Officer#1	418,{
+	mes "[KVM Officer]";
+	if( Bat_Team == 2 )
+	{
+		mes "Get out of here you stinky Croix!";
+		close;
+	}
+
+	if( Bat_Team == 0 )
+	{
+		mes "Please sign up for an army with Prince Croix or General Guillaume!";
+		close;
+	}
+
+	mes "Hello " + strcharinfo(0) + ", let's show the power of the Guillaume Army to those stinky Croixs!";
+	next;
+	if( select("I want to join your army!:End Conversation") == 2 )
+		close;
+
+	mes "[KVM Officer]";
+	if( BG_Delay_Tick >= gettimetick(2) )
+	{
+		mes "You are a Deserter!!";
+		mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround.";
+		close;
+	}
+	if( KvM_BG_Tick >= gettimetick(2) )
+	{
+		mes "Sorry, you can't join the battle right now.";
+		mes "You need to wait ^0000FF" + callfunc("Time2Str",KvM_BG_Tick) + "^000000 to join KvM.";
+		close;
+	}
+	if( BaseLevel < 60 || BaseLevel > 79 )
+	{
+		mes "I'm very please you want to join our army, but I'm sorry: This arena is for players with baselevel from 60 to 79.";
+		close;
+	}
+
+	mes "Good luck!";
+	close2;
+	warp "bat_room",225,224;
+	end;
+}
+
+// Croix Knight - KvM
+// *********************************************************************
+bat_room,135,121,1	script	Croix Knight#4	413,{
+	mes "[Croix Knight]";
+	mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other oponents before all of you die.";
+	next;
+	mes "[Croix Knight]";
+	mes "The first team to lose all their soldiers loses.";
+	next;
+	mes "[Croix Knight]";
+	mes "Since you cannot come back to battle after you die, taking care on the battlefield is essential.";
+	next;
+	mes "[Croix Knight]";
+	mes "Are you ready for battle? Then apply with the recruiter next to me!";
+	close;
+}
+
+// KvM Officer - Croix
+// *********************************************************************
+bat_room,132,121,1	script	KVM [60-79] Officer#2	414,{
+	mes "[KVM Officer]";
+	if( Bat_Team == 1 )
+	{
+		mes "Get out of here you stupid Guillaume!";
+		close;
+	}
+
+	if( Bat_Team == 0 )
+	{
+		mes "Please sign up for an army with Prince Croix or General Guillaume!";
+		close;
+	}
+
+	mes "Hello " + strcharinfo(0) + ", let's show the power of the Croix Army to those stinky Guillaumes!";
+	next;
+	if( select("I want to join your army!:End Conversation") == 2 )
+		close;
+
+	mes "[KVM Officer]";
+	if( BG_Delay_Tick >= gettimetick(2) )
+	{
+		mes "You are a Deserter!!";
+		mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround.";
+		close;
+	}
+	if( KvM_BG_Tick >= gettimetick(2) )
+	{
+		mes "Sorry, you can't join the battle right now.";
+		mes "You need to wait ^0000FF" + callfunc("Time2Str",KvM_BG_Tick) + "^000000 to join KvM.";
+		close;
+	}
+	if( BaseLevel < 60 || BaseLevel > 79 )
+	{
+		mes "I'm very please you want to join our army, but I'm sorry: This arena is for players with baselevel from 60 to 79.";
+		close;
+	}
+
+	mes "Good luck!";
+	close2;
+	warp "bat_room",225,208;
+	end;
+}
+
+// Guillaume Knight - KvM
+// *********************************************************************
+bat_room,127,178,5	script	Guillaume Knight#5	417,{
+	mes "[Guillaume Knight]";
+	mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other oponents before all of you die.";
+	next;
+	mes "[Guillaume Knight]";
+	mes "The first team to lose all their soldiers loses.";
+	next;
+	mes "[Guillaume Knight]";
+	mes "Since you cannot come back to battle after you die, taking care on the battlefield is essential.";
+	next;
+	mes "[Guillaume Knight]";
+	mes "Are you ready for battle? Then apply with the recruiter next to me!";
+	close;
+}
+
+// KvM Officerer - Guillaume
+// *********************************************************************
+bat_room,124,178,5	script	KVM [1-59] Officer#1	418,{
+	mes "[KVM Officer]";
+	if( Bat_Team == 2 )
+	{
+		mes "Get out of here you stinky Croix!";
+		close;
+	}
+
+	if( Bat_Team == 0 )
+	{
+		mes "Please sign up for an army with Prince Croix or General Guillaume!";
+		close;
+	}
+
+	mes "Hello " + strcharinfo(0) + ", let's show the power of the Guillaume Army to those stinky Croixs!";
+	next;
+	if( select("I want to join your army!:End Conversation") == 2 )
+		close;
+
+	mes "[KVM Officer]";
+	if( BG_Delay_Tick >= gettimetick(2) )
+	{
+		mes "You are a Deserter!!";
+		mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround.";
+		close;
+	}
+	if( KvM_BG_Tick >= gettimetick(2) )
+	{
+		mes "Sorry, you can't join the battle right now.";
+		mes "You need to wait ^0000FF" + callfunc("Time2Str",KvM_BG_Tick) + "^000000 to join KvM.";
+		close;
+	}
+	if( BaseLevel > 59 )
+	{
+		mes "I'm very please you want to join our army, but I'm sorry: This arena is for players with baselevel from 1 to 59.";
+		close;
+	}
+
+	mes "Good luck!";
+	close2;
+	warp "bat_room",197,224;
+	end;
+}
+
+// Croix Knight - KvM
+// *********************************************************************
+bat_room,127,121,1	script	Croix Knight#5	413,{
+	mes "[Croix Knight]";
+	mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other oponents before all of you die.";
+	next;
+	mes "[Croix Knight]";
+	mes "The first team to lose all their soldiers loses.";
+	next;
+	mes "[Croix Knight]";
+	mes "Since you cannot come back to battle after you die, taking care on the battlefield is essential.";
+	next;
+	mes "[Croix Knight]";
+	mes "Are you ready for battle? Then apply with the recruiter next to me!";
+	close;
+}
+
+// KvM Officer - Croix
+// *********************************************************************
+bat_room,124,121,1	script	KVM [1-59] Officer#2	414,{
+	mes "[KVM Officer]";
+	if( Bat_Team == 1 )
+	{
+		mes "Get out of here you stupid Guillaume!";
+		close;
+	}
+
+	if( Bat_Team == 0 )
+	{
+		mes "Please sign up for an army with Prince Croix or General Guillaume!";
+		close;
+	}
+
+	mes "Hello " + strcharinfo(0) + ", let's show the power of the Croix Army to those stinky Guillaumes!";
+	next;
+	if( select("I want to join your army!:End Conversation") == 2 )
+		close;
+
+	mes "[KVM Officer]";
+	if( BG_Delay_Tick >= gettimetick(2) )
+	{
+		mes "You are a Deserter!!";
+		mes "Because of running away, you need to wait ^0000FF" + callfunc("Time2Str",BG_Delay_Tick) + "^000000 to join again a BattleGround.";
+		close;
+	}
+	if( KvM_BG_Tick >= gettimetick(2) )
+	{
+		mes "Sorry, you can't join the battle right now.";
+		mes "You need to wait ^0000FF" + callfunc("Time2Str",KvM_BG_Tick) + "^000000 to join KvM.";
+		close;
+	}
+	if( BaseLevel > 59 )
+	{
+		mes "I'm very please you want to join our army, but I'm sorry: This arena is for players with baselevel from 1 to 59.";
+		close;
+	}
+
+	mes "Good luck!";
+	close2;
+	warp "bat_room",197,208;
+	end;
+}
+
+// Guard Dummy
+// *********************************************************************
+
+bat_room,161,141,3	script	Prince Croix's Aid::bat_aid	415,{ end; }
+bat_room,161,139,3	duplicate(bat_aid)	Prince Croix's Aid::bat_aid2	415
+bat_room,161,160,3	duplicate(bat_aid)	General Guillaume's Aid::bat_aid3	419
+bat_room,161,158,3	duplicate(bat_aid)	General Guillaume's Aid::bat_aid4	419
+
+// Flags
+// *********************************************************************
+
+-	script	Guillaume camp#bat	973,{ end; }
+-	script	Croix camp#bat	974,{ end; }
+
+// Exit from Registration
+// *********************************************************************
+
+bat_room,57,81,0	warp	bat1	2,2,bat_room,154,149
+bat_room,57,90,0	warp	bat2	2,2,bat_room,154,149
+
+bat_room,57,220,0	warp	bat3	2,2,bat_room,154,149
+bat_room,57,211,0	warp	bat4	2,2,bat_room,154,149
+
+bat_room,85,81,0	warp	bat5	2,2,bat_room,154,149
+bat_room,85,90,0	warp	bat6	2,2,bat_room,154,149
+// Tierra Valley bat_a01
+bat_room,85,220,0	warp	bat7	2,2,bat_room,154,149
+bat_room,85,211,0	warp	bat8	2,2,bat_room,154,149
+
+bat_room,113,81,0	warp	bat9	2,2,bat_room,154,149
+bat_room,113,90,0	warp	bat10	2,2,bat_room,154,149
+
+bat_room,113,220,0	warp	bat11	2,2,bat_room,154,149
+bat_room,113,211,0	warp	bat12	2,2,bat_room,154,149
+
+bat_room,141,81,0	warp	bat13	2,2,bat_room,154,149
+bat_room,141,90,0	warp	bat14	2,2,bat_room,154,149
+
+bat_room,141,220,0	warp	bat15	2,2,bat_room,154,149
+bat_room,141,211,0	warp	bat16	2,2,bat_room,154,149
+
+bat_room,169,81,0	warp	bat17	2,2,bat_room,154,149
+bat_room,169,90,0	warp	bat18	2,2,bat_room,154,149
+
+bat_room,169,220,0	warp	bat19	2,2,bat_room,154,149
+bat_room,169,211,0	warp	bat20	2,2,bat_room,154,149
+
+bat_room,197,81,0	warp	bat21	2,2,bat_room,154,149
+bat_room,197,90,0	warp	bat22	2,2,bat_room,154,149
+// KvM bat_c03
+bat_room,197,220,0	warp	bat23	2,2,bat_room,154,149
+bat_room,197,211,0	warp	bat24	2,2,bat_room,154,149
+
+bat_room,225,81,0	warp	bat25	2,2,bat_room,154,149
+bat_room,225,90,0	warp	bat26	2,2,bat_room,154,149
+// KvM bat_c02
+bat_room,225,220,0	warp	bat27	2,2,bat_room,154,149
+bat_room,225,211,0	warp	bat28	2,2,bat_room,154,149
+// Flavius bat_b01
+bat_room,253,81,0	warp	bat29	2,2,bat_room,154,149
+bat_room,253,90,0	warp	bat30	2,2,bat_room,154,149
+// KvM bat_c01
+bat_room,253,220,0	warp	bat31	2,2,bat_room,154,149
+bat_room,253,211,0	warp	bat32	2,2,bat_room,154,149
+
+// Badges Repairman
+// *********************************************************************
+
+bat_room,138,144,5	script	Repairman#bg	99,{
+	callfunc "repairmain","Repairman";
+	end;
+}
+
+// Badges Exchange
+// *********************************************************************
+
+bat_room,160,150,3	script	Erundek	109,{
+	mes "[Erundek]";
+	mes "Welcome, mighty warrior.";
+	mes "What can I do for you today ?";
+	next;
+	switch( select("Check the Catalog","Exchange Bravery Badges","Exchange Valor Badges","Exchange Heroism Badges","Hmm, nothing I guess.") )
+	{
+		case 1:
+			mes "[Erundek]";
+			mes "We have many items, so please take a look and purchase deliberately.";
+			close2;
+			Readbook 11010,1;
+			end;
+		case 5:
+			mes "[Erundek]";
+			mes "As you wish.";
+			mes "See you later.";
+			close;
+		case 2: // Bravery Badges
+			mes "[Erundek]";
+			mes "So you want to exchange ^0000FFBravery Badges^000000 from the Battle of Tierra Valley.";
+			mes "What kind of item do you want to exchange?";
+			next;
+			deletearray .@Item_DB[0],127;
+			set .@Badge, 7828;
+
+			switch( select("Weapons:Garment:Footgear:Armor:Accesory") )
+			{
+				case 1: setarray .@Item_DB[0],13036,13411,1425,1632,1634,1543,1924,1978,1574,1824,1183,1380,13305,1279,1739,13108,13172; set .@Value, 100; break;
+				case 2: setarray .@Item_DB[0],2538,2539,2540; set .@Value, 50; break;
+				case 3: setarray .@Item_DB[0],2435,2436,2437; set .@Value, 50; break;
+				case 4: setarray .@Item_DB[0],2376,2377,2378,2379,2380,2381,2382; set .@Value, 80; break;
+				case 5: setarray .@Item_DB[0],2720,2721,2722,2723,2724,2725,2733; set .@Value, 500; break;
+			}
+			
+			break;
+		case 3: // Valor Badges
+			mes "[Erundek]";
+			mes "So you want to exchange ^FF0000Valor Badges^000000 from the Battle of Flavius.";
+			mes "What kind of item do you want to exchange?";
+			next;
+			deletearray .@Item_DB[0],127;
+			set .@Badge, 7829;
+
+			switch( select("Weapons:Garment:Footgear:Armor:Accesory") )
+			{
+				case 1: setarray .@Item_DB[0],13037,13410,1633,1635,1542,1923,1977,1575,1823,1184,1482,1379,13306,1280,1738,13171,13173,13174; set .@Value, 100; break;
+				case 2: setarray .@Item_DB[0],2538,2539,2540; set .@Value, 50; break;
+				case 3: setarray .@Item_DB[0],2435,2436,2437; set .@Value, 50; break;
+				case 4: setarray .@Item_DB[0],2376,2377,2378,2379,2380,2381,2382; set .@Value, 80; break;
+				case 5: setarray .@Item_DB[0],2720,2721,2722,2723,2724,2725,2733; set .@Value, 500; break;
+			}
+			
+			break;
+		case 4: // Heroism Badge
+			mes "[Erundek]";
+			mes "So you want to exchange ^FFA500Heroism Badges^000000 from the Battle of Kriger Von Midgard.";
+			mes "This shop is not available at the moment.";
+			close;
+	}
+	
+	mes "[Erundek]";
+	mes "What item do you want to exchange?";
+	mes "If you are not sure, check the catalog.";
+	next;
+
+	set .@Menu$, "";
+	set .@Count, getarraysize(.@Item_DB);
+	for( set .@i, 0; .@i < .@Count; set .@i, .@i + 1 )
+		set .@Menu$, .@Menu$ + getitemname(@Item_DB[.@i]) + ":";
+
+	set .@Item_ID, .@Item_DB[select(.@Menu$) - 1];
+
+	mes "[Erundek]";
+	mes "Would you like to exchange ^FF0000" + .@Value + " " + getitemname(.@Badge) + "^000000 for a ^0000FF" + getitemname(.@Item_ID) + "^000000?";
+	next;
+	mes "Remember, Battleground Reward Items are ^FF0000Character Bound^000000.";
+	mes "Are you sure you want this item?";
+	next;
+	
+	if( select("Yes:No") == 2 )
+	{
+		mes "[Erundek]";
+		mes "Do you need more time to check the items?";
+		close;
+	}
+	
+	if( countitem(.@Badge) < .@Value )
+	{
+		mes "[Erundek]";
+		mes "Im sorry, but you don't have enough badges to exchange.";
+		close;
+	}
+	
+	delitem .@Badge,.@Value;
+	getitem .@Item_ID,1;
+	mes "[Erundek]";
+	mes "Thank you for exchanging.";
+	close;
+}

+ 610 - 0
npc/battleground/bg_tierra_01.txt

@@ -0,0 +1,610 @@
+// ==============================================================================
+// BattleGround System - Tierra Valley 1
+// ==============================================================================
+
+// Registration NPC's
+// *********************************************************************
+
+bat_room,85,227,4	script	Registration::TV1R_Guillaume	418,{
+	end;
+OnInit:
+	waitingroom "Battle Station 10 Players",10,"Tierra_BG1::OnGuillaumeJoin",1;
+	end;
+OnEnterBG:
+	set $@TierraBG1_id1, waitingroom2bg("bat_a01",50,374,0,"Tierra_BG1::OnGuillaumeQuit","");
+	end;
+}
+
+bat_room,85,204,0	script	Registration::TV1R_Croix	414,{
+	end;
+OnInit:
+	waitingroom "Battle Station 10 Players",10,"Tierra_BG1::OnCroixJoin",1;
+	end;
+OnEnterBG:
+	set $@TierraBG1_id2, waitingroom2bg("bat_a01",42,16,1,"Tierra_BG1::OnCroixQuit","");
+	end;
+}
+
+// Battleground Engine
+// *********************************************************************
+
+-	script	Tierra_BG1	-1,{
+	end;
+
+OnInit:
+	disablenpc "Tierra Neutral#lion1";
+	disablenpc "Tierra Neutral#eagle1";
+	disablenpc "Croix Vintenar#tv1";
+	disablenpc "Guillaume Vintenar#tv1";
+	disablenpc "Therapist in battle#tv11";
+	disablenpc "Therapist in battle#tv12";
+	end;
+
+OnGuillaumeQuit:
+OnCroixQuit:
+	set BG_Delay_Tick, gettimetick(2) + 1200;
+	end;
+
+OnGuillaumeJoin:
+OnCroixJoin:
+	if( $@TierraBG1 == 0 )
+		donpcevent "Tierra_BG1::OnReadyCheck";
+	end;
+
+OnReadyCheck:
+	if( $@TierraBG1 )
+		end;
+	set .@Guillaume, getwaitingroomstate(0,"TV1R_Guillaume");
+	set .@Croix, getwaitingroomstate(0,"TV1R_Croix");
+
+	if( .@Guillaume < 10 || .@Croix < 10 )
+	{
+		mapannounce "bat_room","Battleground -- Tierra Valley [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0xFFA500;
+		end;
+	}
+
+	set $@TierraBG1, 1;
+	donpcevent "TV1R_Croix::OnEnterBG";
+	donpcevent "TV1R_Guillaume::OnEnterBG";
+	donpcevent "Guillaume_TV1B::OnBuild";
+	donpcevent "Croix_TV1B::OnBuild";
+	bg_monster $@TierraBG1_id1,"bat_a01",176,345,"Food Depot",1909,"Tierra_BG1::OnGuillaumeBreak";
+	bg_monster $@TierraBG1_id2,"bat_a01",167,50,"Food Storage",1910,"Tierra_BG1::OnCroixBreak";
+	bg_monster 0,"bat_a01",273,204,"Neutrality Flag",1911,"Tierra_BG1::OnNeutralBreak";
+	set $@TierraBG1_Base, 0;
+	set $@TierraBG1_Victory, 0;
+	enablenpc "Therapist in battle#tv11";
+	enablenpc "Therapist in battle#tv12";
+	disablenpc "Croix Vintenar#tv1";
+	disablenpc "Guillaume Vintenar#tv1";
+	// Respawner
+	donpcevent "#gtv1_respawn::OnBGStart";
+	donpcevent "#ctv1_respawn::OnBGStart";
+	// Warp Teams
+	announce "Battleground -- Tierra Valley [80-99] has started!",0,0xFFA500;
+	bg_warp $@TierraBG1_id1,"bat_a01",353,344;
+	bg_warp $@TierraBG1_id2,"bat_a01",353,52;
+	// Final Messages
+	sleep 6000;
+	mapannounce "bat_a01","Guillaume Vintenar Axl Rose : Let's attack to burn down Croix's food storage",1,0x0000FF;
+	sleep 2000;
+	mapannounce "bat_a01","Croix Vintenar Swandery : Master of Valhalla! Let us be gifted with unfailing faith and courage",1,0xFF0000;
+	
+	initnpctimer;
+	end;
+
+OnNeutralBreak:
+	if( Bat_Team == 1 )
+	{
+		mapannounce "bat_a01","Guillaume obtained a neurality banner, so they have an advantage.",1,0x0000FF;
+		setnpcdisplay("Tierra Neutral#lion1","Guillaume Base",973);
+		enablenpc "Tierra Neutral#lion1";
+		bg_monster $@TierraBG1_id1,"bat_a01",28,185,"Guillaume Camp Guardian",1949,"Tierra_BG1::OnGuardian";
+		bg_monster $@TierraBG1_id1,"bat_a01",287,203,"Guillaume Camp Guardian",1950,"Tierra_BG1::OnGuardian";
+		bg_monster $@TierraBG1_id1,"bat_a01",268,204,"Guillaume Camp Guardian",1949,"Tierra_BG1::OnGuardian";
+		bg_monster $@TierraBG1_id1,"bat_a01",280,233,"Guillaume Camp Guardian",1950,"Tierra_BG1::OnGuardian";
+	}
+	else if( Bat_Team == 2 )
+	{
+		mapannounce "bat_a01","Croix obtained a neutrality banner, so they have an advantage.",1,0xFF0000;
+		setnpcdisplay("Tierra Neutral#eagle1","Croix Base",974);
+		enablenpc "Tierra Neutral#eagle1";
+		bg_monster $@TierraBG1_id2,"bat_a01",28,185,"Croix Camp Guardian",1949,"Tierra_BG1::OnGuardian";
+		bg_monster $@TierraBG1_id2,"bat_a01",287,203,"Croix Camp Guardian",1950,"Tierra_BG1::OnGuardian";
+		bg_monster $@TierraBG1_id2,"bat_a01",268,204,"Croix Camp Guardian",1949,"Tierra_BG1::OnGuardian";
+		bg_monster $@TierraBG1_id2,"bat_a01",280,233,"Croix Camp Guardian",1950,"Tierra_BG1::OnGuardian";
+	}
+	else end; // Should not happend
+	set $@TierraBG1_Base, Bat_Team;
+	end;
+
+OnGuardian:
+	end;
+
+OnGuillaumeBreak:
+	set $@TierraBG1_Victory, 2;
+	mapannounce "bat_a01","Croix Vintenar Swandery: We destroyed Guillaume's food storehause. We won that! Wow!",1,0xFF0000;
+	donpcevent "Tierra_BG1::OnStop";
+	end;
+
+OnCroixBreak:
+	set $@TierraBG1_Victory, 1;
+	mapannounce "bat_a01","Guillaume Vintenar Axl Rose: We destroyed Croix's food storehause. We won that! Wow!",1,0x0000FF;
+	donpcevent "Tierra_BG1::OnStop";
+	end;
+
+OnTimer2400000:
+	mapannounce "bat_a01","Battle of Tierra Gorge will ends in 5 minutes",1,0xFFA500;
+	end;
+OnTimer2640000:
+	mapannounce "bat_a01","Battle of Tierra Gorge will ends in 1 minute",1,0xFFA500;
+	end;
+
+OnTimer2700000:
+	set $@TierraBG1_Victory, 3; // Draw Game
+	mapannounce "bat_a01","Battle of Tierra Gorge is over. The time is out, this is a Tie",1,0xFFA500;
+	donpcevent "Tierra_BG1::OnStop";
+	end;
+
+OnStop:
+	set $@TierraBG1, 2;
+	disablenpc "Therapist in battle#tv11";
+	disablenpc "Therapist in battle#tv12";
+	donpcevent "#gtv1_respawn::OnBGStop";
+	donpcevent "#ctv1_respawn::OnBGStop";
+	enablenpc "Croix Vintenar#tv1";
+	enablenpc "Guillaume Vintenar#tv1";
+	killmonster "bat_a01","Tierra_BG1::OnGuillaumeBreak";
+	killmonster "bat_a01","Tierra_BG1::OnCroixBreak";
+	killmonster "bat_a01","Tierra_BG1::OnNeutralBreak";
+	killmonster "bat_a01","Tierra_BG1::OnGuardian";
+	stopnpctimer;
+	sleep 3000;
+	bg_warp $@TierraBG1_id1,"bat_a01",50,374;
+	bg_warp $@TierraBG1_id2,"bat_a01",42,16;
+	sleep 3000;
+	mapannounce "bat_a01","Battle of Tierra Gorge will close in 1 minute!",1,0xFFA500;
+	initnpctimer;
+	end;
+
+OnTimer30000:
+	if( $@TierraBG1 == 2 )
+		mapannounce "bat_a01","Battle of Tierra Gorge will close in 30 seconds!",1,0xFFA500;
+	end;
+OnTimer50000:
+	if( $@TierraBG1 == 2 )
+		mapannounce "bat_a01","Battle of Tierra Gorge will close in 10 seconds!",1,0xFFA500;
+	end;
+
+OnTimer60000:
+	if( $@TierraBG1 != 2 )
+		end;
+OnReset:
+	stopnpctimer;
+	set $@TierraBG1_Base, 0;
+	disablenpc "Tierra Neutral#lion1";
+	disablenpc "Tierra Neutral#eagle1";
+	disablenpc "Croix Vintenar#tv1";
+	disablenpc "Guillaume Vintenar#tv1";
+	disablenpc "Therapist in battle#tv11";
+	disablenpc "Therapist in battle#tv12";
+	donpcevent "#gtv1_respawn::OnBGStop";
+	donpcevent "#ctv1_respawn::OnBGStop";
+
+	killmonster "bat_a01","Tierra_BG1::OnGuillaumeBreak";
+	killmonster "bat_a01","Tierra_BG1::OnCroixBreak";
+	killmonster "bat_a01","Tierra_BG1::OnNeutralBreak";
+	killmonster "bat_a01","Tierra_BG1::OnGuardian";
+	donpcevent "Guillaume_TV1B::OnDestroy";
+	donpcevent "Croix_TV1B::OnDestroy";
+
+	set $@TierraBG1_Victory, 0;
+	if( $@TierraBG1_id1 ) { bg_destroy $@TierraBG1_id1; set $@TierraBG1_id1, 0; }
+	if( $@TierraBG1_id2 ) { bg_destroy $@TierraBG1_id2; set $@TierraBG1_id2, 0; }
+	sleep 1000;
+	mapwarp "bat_a01","bat_room",155,150;
+	sleep 2000;
+	maprespawnguildid "bat_a01",0,3; // Just in case someone else
+	sleep 2000;
+	set $@TierraBG1, 0;
+	donpcevent "Tierra_BG1::OnReadyCheck"; // Maybe a game is ready to start
+	end;
+}
+
+// MapFlags
+// *********************************************************************
+
+bat_a01	mapflag	battleground
+bat_a01	mapflag	nomemo
+bat_a01	mapflag	nosave	SavePoint
+bat_a01	mapflag	noteleport
+bat_a01	mapflag	nowarp
+bat_a01	mapflag	nowarpto
+bat_a01	mapflag	noreturn
+bat_a01	mapflag	nobranch
+bat_a01	mapflag	nopenalty
+
+// Neutral Point Flags
+// *********************************************************************
+
+bat_a01,273,204,1	script	Tierra Neutral#lion1	973,{ end; }
+bat_a01,273,204,1	script	Tierra Neutral#eagle1	974,{ end; }
+
+// Other Flags
+// *********************************************************************
+
+bat_a01,148,85,1	duplicate(Croix camp#bat)	Croix camp#bat10	974
+bat_a01,155,85,1	duplicate(Croix camp#bat)	Croix camp#bat11	974
+bat_a01,357,75,1	duplicate(Croix camp#bat)	Croix camp#bat12	974
+bat_a01,348,74,1	duplicate(Croix camp#bat)	Croix camp#bat13	974
+bat_a01,199,49,1	duplicate(Croix camp#bat)	Croix camp#bat14	974
+bat_a01,168,16,1	duplicate(Croix camp#bat)	Croix camp#bat15	974
+bat_a01,138,12,1	duplicate(Croix camp#bat)	Croix camp#bat16	974
+bat_a01,108,35,1	duplicate(Croix camp#bat)	Croix camp#bat17	974
+bat_a01,164,308,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat10	973
+bat_a01,157,308,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat11	973
+bat_a01,359,327,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat12	973
+bat_a01,350,326,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat13	973
+bat_a01,209,344,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat14	973
+bat_a01,173,380,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat15	973
+bat_a01,150,380,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat16	973
+bat_a01,118,357,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat17	973
+bat_a01,119,336,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat18	973
+
+// Barricades
+// *********************************************************************
+
+-	script	Guillaume_TV1B	-1,{
+	end;
+
+OnBuild:
+	bg_monster $@TierraBG1_id1,"bat_a01",160,380,"Barricade",1906,"Guillaume_TV1B::OnWall1";
+	bg_monster $@TierraBG1_id1,"bat_a01",161,380,"Barricade",1906,"Guillaume_TV1B::OnWall1";
+	bg_monster $@TierraBG1_id1,"bat_a01",162,380,"Barricade",1906,"Guillaume_TV1B::OnWall1";
+	bg_monster $@TierraBG1_id1,"bat_a01",163,380,"Barricade",1906,"Guillaume_TV1B::OnWall1";
+	setwall "bat_a01",160,380,4,6,0,"bat_a01_g1";
+	
+	bg_monster $@TierraBG1_id1,"bat_a01",160,363,"Barricade",1906,"Guillaume_TV1B::OnWall2";
+	bg_monster $@TierraBG1_id1,"bat_a01",161,363,"Barricade",1906,"Guillaume_TV1B::OnWall2";
+	bg_monster $@TierraBG1_id1,"bat_a01",162,363,"Barricade",1906,"Guillaume_TV1B::OnWall2";
+	setwall "bat_a01",160,363,3,6,0,"bat_a01_g2";
+	
+	bg_monster $@TierraBG1_id1,"bat_a01",119,344,"Barricade",1906,"Guillaume_TV1B::OnWall3";
+	bg_monster $@TierraBG1_id1,"bat_a01",119,345,"Barricade",1906,"Guillaume_TV1B::OnWall3";
+	bg_monster $@TierraBG1_id1,"bat_a01",119,346,"Barricade",1906,"Guillaume_TV1B::OnWall3";
+	bg_monster $@TierraBG1_id1,"bat_a01",119,347,"Barricade",1906,"Guillaume_TV1B::OnWall3";
+	setwall "bat_a01",119,344,4,0,0,"bat_a01_g3";
+	
+	bg_monster $@TierraBG1_id1,"bat_a01",134,345,"Barricade",1906,"Guillaume_TV1B::OnWall4";
+	bg_monster $@TierraBG1_id1,"bat_a01",134,346,"Barricade",1906,"Guillaume_TV1B::OnWall4";
+	bg_monster $@TierraBG1_id1,"bat_a01",134,347,"Barricade",1906,"Guillaume_TV1B::OnWall4";
+	setwall "bat_a01",134,345,3,0,0,"bat_a01_g4";
+	
+	bg_monster $@TierraBG1_id1,"bat_a01",159,311,"Barricade",1906,"Guillaume_TV1B::OnWall5";
+	bg_monster $@TierraBG1_id1,"bat_a01",160,311,"Barricade",1906,"Guillaume_TV1B::OnWall5";
+	bg_monster $@TierraBG1_id1,"bat_a01",161,311,"Barricade",1906,"Guillaume_TV1B::OnWall5";
+	bg_monster $@TierraBG1_id1,"bat_a01",162,311,"Barricade",1906,"Guillaume_TV1B::OnWall5";
+	setwall "bat_a01",159,311,4,6,0,"bat_a01_g5";
+	
+	bg_monster $@TierraBG1_id1,"bat_a01",159,327,"Barricade",1906,"Guillaume_TV1B::OnWall6";
+	bg_monster $@TierraBG1_id1,"bat_a01",160,327,"Barricade",1906,"Guillaume_TV1B::OnWall6";
+	bg_monster $@TierraBG1_id1,"bat_a01",161,327,"Barricade",1906,"Guillaume_TV1B::OnWall6";
+	bg_monster $@TierraBG1_id1,"bat_a01",162,327,"Barricade",1906,"Guillaume_TV1B::OnWall6";
+	setwall "bat_a01",159,327,4,6,0,"bat_a01_g6";
+	
+	bg_monster $@TierraBG1_id1,"bat_a01",163,344,"Barricade",1906,"Guillaume_TV1B::OnWall7";
+	bg_monster $@TierraBG1_id1,"bat_a01",163,345,"Barricade",1906,"Guillaume_TV1B::OnWall7";
+	bg_monster $@TierraBG1_id1,"bat_a01",163,346,"Barricade",1906,"Guillaume_TV1B::OnWall7";
+	bg_monster $@TierraBG1_id1,"bat_a01",163,347,"Barricade",1906,"Guillaume_TV1B::OnWall7";
+	setwall "bat_a01",163,344,4,0,0,"bat_a01_g7";
+
+	setarray .MyMobCount[1],4,3,4,3,4,4,4;
+	end;
+
+OnDestroy:
+	for( set .@i, 1; .@i < 8; set .@i, .@i + 1 )
+	{
+		killmonster "bat_a01","Guillaume_TV1B::OnWall" + .@i + "";
+		delwall "bat_a01_g" + .@i + "";
+	}
+	
+	setarray .MyMobCount[1],0,0,0,0,0,0,0;
+	end;
+
+OnWall1:
+	if( set(.MyMobCount[1],.MyMobCount[1] - 1) < 1 )
+	{
+		delwall "bat_a01_g1";
+		mapannounce "bat_a01","Guillaume Camp : A Gate has been Destroy!!",1,0xffb85d;
+	}
+	end;
+OnWall2:
+	if( set(.MyMobCount[2],.MyMobCount[2] - 1) < 1 )
+	{
+		delwall "bat_a01_g2";
+		mapannounce "bat_a01","Guillaume Camp : A Gate has been Destroy!!",1,0xffb85d;
+	}
+	end;
+OnWall3:
+	if( set(.MyMobCount[3],.MyMobCount[3] - 1) < 1 )
+	{
+		delwall "bat_a01_g3";
+		mapannounce "bat_a01","Guillaume Camp : A Gate has been Destroy!!",1,0xffb85d;
+	}
+	end;
+OnWall4:
+	if( set(.MyMobCount[4],.MyMobCount[4] - 1) < 1 )
+	{
+		delwall "bat_a01_g4";
+		mapannounce "bat_a01","Guillaume Camp : A Gate has been Destroy!!",1,0xffb85d;
+	}
+	end;
+OnWall5:
+	if( set(.MyMobCount[5],.MyMobCount[5] - 1) < 1 )
+	{
+		delwall "bat_a01_g5";
+		mapannounce "bat_a01","Guillaume Camp : A Gate has been Destroy!!",1,0xffb85d;
+	}
+	end;
+OnWall6:
+	if( set(.MyMobCount[6],.MyMobCount[6] - 1) < 1 )
+	{
+		delwall "bat_a01_g6";
+		mapannounce "bat_a01","Guillaume Camp : A Gate has been Destroy!!",1,0xffb85d;
+	}
+	end;
+OnWall7:
+	if( set(.MyMobCount[7],.MyMobCount[7] - 1) < 1 )
+	{
+		delwall "bat_a01_g7";
+		mapannounce "bat_a01","Guillaume Camp : Main Gate has been Destroy, our Food Storehouse is unprotected!!",1,0xffb85d;
+	}
+	end;
+}
+
+-	script	Croix_TV1B	-1,{
+	end;
+
+OnBuild:
+	bg_monster $@TierraBG1_id2,"bat_a01",150,83,"Barricade",1906,"Croix_TV1B::OnWall1";
+	bg_monster $@TierraBG1_id2,"bat_a01",151,83,"Barricade",1906,"Croix_TV1B::OnWall1";
+	bg_monster $@TierraBG1_id2,"bat_a01",152,83,"Barricade",1906,"Croix_TV1B::OnWall1";
+	bg_monster $@TierraBG1_id2,"bat_a01",153,83,"Barricade",1906,"Croix_TV1B::OnWall1";
+	setwall "bat_a01",150,83,4,6,0,"bat_a01_c1";
+
+	bg_monster $@TierraBG1_id2,"bat_a01",150,67,"Barricade",1906,"Croix_TV1B::OnWall2";
+	bg_monster $@TierraBG1_id2,"bat_a01",151,67,"Barricade",1906,"Croix_TV1B::OnWall2";
+	bg_monster $@TierraBG1_id2,"bat_a01",152,67,"Barricade",1906,"Croix_TV1B::OnWall2";
+	bg_monster $@TierraBG1_id2,"bat_a01",153,67,"Barricade",1906,"Croix_TV1B::OnWall2";
+	setwall "bat_a01",150,67,4,6,0,"bat_a01_c2";
+
+	bg_monster $@TierraBG1_id2,"bat_a01",109,47,"Barricade",1906,"Croix_TV1B::OnWall3";
+	bg_monster $@TierraBG1_id2,"bat_a01",109,48,"Barricade",1906,"Croix_TV1B::OnWall3";
+	bg_monster $@TierraBG1_id2,"bat_a01",109,49,"Barricade",1906,"Croix_TV1B::OnWall3";
+	bg_monster $@TierraBG1_id2,"bat_a01",109,50,"Barricade",1906,"Croix_TV1B::OnWall3";
+	setwall "bat_a01",109,47,4,0,0,"bat_a01_c3";
+
+	bg_monster $@TierraBG1_id2,"bat_a01",127,47,"Barricade",1906,"Croix_TV1B::OnWall4";
+	bg_monster $@TierraBG1_id2,"bat_a01",127,48,"Barricade",1906,"Croix_TV1B::OnWall4";
+	bg_monster $@TierraBG1_id2,"bat_a01",127,49,"Barricade",1906,"Croix_TV1B::OnWall4";
+	bg_monster $@TierraBG1_id2,"bat_a01",127,50,"Barricade",1906,"Croix_TV1B::OnWall4";
+	setwall "bat_a01",127,47,4,0,0,"bat_a01_c4";
+
+	bg_monster $@TierraBG1_id2,"bat_a01",152,13,"Barricade",1906,"Croix_TV1B::OnWall5";
+	bg_monster $@TierraBG1_id2,"bat_a01",153,13,"Barricade",1906,"Croix_TV1B::OnWall5";
+	bg_monster $@TierraBG1_id2,"bat_a01",154,13,"Barricade",1906,"Croix_TV1B::OnWall5";
+	bg_monster $@TierraBG1_id2,"bat_a01",155,13,"Barricade",1906,"Croix_TV1B::OnWall5";
+	setwall "bat_a01",152,13,4,6,0,"bat_a01_c5";
+
+	bg_monster $@TierraBG1_id2,"bat_a01",152,32,"Barricade",1906,"Croix_TV1B::OnWall6";
+	bg_monster $@TierraBG1_id2,"bat_a01",153,32,"Barricade",1906,"Croix_TV1B::OnWall6";
+	bg_monster $@TierraBG1_id2,"bat_a01",154,32,"Barricade",1906,"Croix_TV1B::OnWall6";
+	bg_monster $@TierraBG1_id2,"bat_a01",155,32,"Barricade",1906,"Croix_TV1B::OnWall6";
+	setwall "bat_a01",152,32,4,6,0,"bat_a01_c6";
+
+	bg_monster $@TierraBG1_id2,"bat_a01",153,48,"Barricade",1906,"Croix_TV1B::OnWall7";
+	bg_monster $@TierraBG1_id2,"bat_a01",153,49,"Barricade",1906,"Croix_TV1B::OnWall7";
+	bg_monster $@TierraBG1_id2,"bat_a01",153,50,"Barricade",1906,"Croix_TV1B::OnWall7";
+	bg_monster $@TierraBG1_id2,"bat_a01",153,51,"Barricade",1906,"Croix_TV1B::OnWall7";
+	setwall "bat_a01",153,48,4,0,0,"bat_a01_c7";
+
+	setarray .MyMobCount[1],4,4,4,4,4,4,4;
+	end;
+
+OnDestroy:
+	for( set .@i, 1; .@i < 8; set .@i, .@i + 1 )
+	{
+		killmonster "bat_a01","Croix_TV1B::OnWall" + .@i + "";
+		delwall "bat_a01_c" + .@i + "";
+	}
+	
+	setarray .MyMobCount[1],0,0,0,0,0,0,0;
+	end;
+
+OnWall1:
+	if( set(.MyMobCount[1],.MyMobCount[1] - 1) < 1 )
+	{
+		delwall "bat_a01_c1";
+		mapannounce "bat_a01","Croix Camp : A Gate has been Destroy!!",1,0xff9fa1;
+	}
+	end;
+OnWall2:
+	if( set(.MyMobCount[2],.MyMobCount[2] - 1) < 1 )
+	{
+		delwall "bat_a01_c2";
+		mapannounce "bat_a01","Croix Camp : A Gate has been Destroy!!",1,0xff9fa1;
+	}
+	end;
+OnWall3:
+	if( set(.MyMobCount[3],.MyMobCount[3] - 1) < 1 )
+	{
+		delwall "bat_a01_c3";
+		mapannounce "bat_a01","Croix Camp : A Gate has been Destroy!!",1,0xff9fa1;
+	}
+	end;
+OnWall4:
+	if( set(.MyMobCount[4],.MyMobCount[4] - 1) < 1 )
+	{
+		delwall "bat_a01_c4";
+		mapannounce "bat_a01","Croix Camp : A Gate has been Destroy!!",1,0xff9fa1;
+	}
+	end;
+OnWall5:
+	if( set(.MyMobCount[5],.MyMobCount[5] - 1) < 1 )
+	{
+		delwall "bat_a01_c5";
+		mapannounce "bat_a01","Croix Camp : A Gate has been Destroy!!",1,0xff9fa1;
+	}
+	end;
+OnWall6:
+	if( set(.MyMobCount[6],.MyMobCount[6] - 1) < 1 )
+	{
+		delwall "bat_a01_c6";
+		mapannounce "bat_a01","Croix Camp : A Gate has been Destroy!!",1,0xff9fa1;
+	}
+	end;
+OnWall7:
+	if( set(.MyMobCount[7],.MyMobCount[7] - 1) < 1 )
+	{
+		delwall "bat_a01_c7";
+		mapannounce "bat_a01","Croix Camp : Main Gate has been Destroy, our Food Storehouse is unprotected!!",1,0xff9fa1;
+	}
+	end;
+}
+
+// Battleground rewards
+// *********************************************************************
+
+bat_a01,45,19,3	script	Croix Vintenar#tv1	415,{
+	if( $@TierraBG1_Victory )
+	{
+		if( $@TierraBG1_Victory == Bat_Team )
+		{ // Victory
+			set .@Reward, 3;
+			mes "[Swandery]";
+			mes "Blessed Croax!!";
+			mes "Let's enjoy our glorious victory!";
+			mes "" + strcharinfo(0) + ", its a sign reflecting victory";
+			close2;
+		}
+		else
+		{ // 
+			set .@Reward, 1;
+			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 Tierra_BG_Tick, gettimetick(2) + 300;
+		getitem 7828, .@Reward;
+		bg_leave;
+		warp "bat_room",155,150;
+		end;
+	}
+	end;
+}
+
+bat_a01,53,377,3	script	Guillaume Vintenar#tv1	419,{
+	if( $@TierraBG1_Victory )
+	{
+		if( $@TierraBG1_Victory == Bat_Team )
+		{ // Victory
+			set .@Reward, 3;
+			mes "[Swandery]";
+			mes "Blessed Guillaume!!";
+			mes "Let's enjoy our glorious victory!";
+			mes "" + strcharinfo(0) + ", its a sign reflecting victory";
+			close2;
+		}
+		else
+		{ // 
+			set .@Reward, 1;
+			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 Tierra_BG_Tick, gettimetick(2) + 300;
+		getitem 7828, .@Reward;
+		bg_leave;
+		warp "bat_room",155,150;
+		end;
+	}
+	end;
+}
+
+// Battleground Therapist
+// *********************************************************************
+
+bat_a01,53,377,3	script	Therapist in battle#tv12	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_a01,45,18,3	script	Therapist in battle#tv11	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_a01,50,374,0	script	#gtv1_respawn	139,{
+	end;
+
+OnBGStart:
+	initnpctimer;
+	end;
+
+OnBGStop:
+	stopnpctimer;
+	end;
+
+OnTimer24000:
+	misceffect 83;
+	end;
+
+OnTimer25000:
+	areapercentheal "bat_a01",46,370,54,378,100,100;
+	if( $@TierraBG1_Base == 1 )
+		areawarp "bat_a01",46,370,54,378,"bat_a01",285,226;
+	else
+		areawarp "bat_a01",46,370,54,378,"bat_a01",354,340;
+	initnpctimer;
+	end;
+}
+
+bat_a01,42,16,0	script	#ctv1_respawn	139,{
+	end;
+
+OnBGStart:
+	initnpctimer;
+	end;
+
+OnBGStop:
+	stopnpctimer;
+	end;
+
+OnTimer24000:
+	misceffect 83;
+	end;
+
+OnTimer25000:
+	areapercentheal "bat_a01",38,12,47,21,100,100;
+	if( $@TierraBG1_Base == 2 )
+		areawarp "bat_a01",38,12,47,21,"bat_a01",260,183;
+	else
+		areawarp "bat_a01",38,12,47,21,"bat_a01",354,57;
+	initnpctimer;
+	end;
+}

+ 610 - 0
npc/battleground/bg_tierra_02.txt

@@ -0,0 +1,610 @@
+// ==============================================================================
+// BattleGround System - Tierra Valley 2
+// ==============================================================================
+
+// Registration NPC's
+// *********************************************************************
+
+bat_room,85,97,4	script	Registration::TV2R_Guillaume	418,{
+	end;
+OnInit:
+	waitingroom "Battle Station 10 Players",10,"Tierra_BG2::OnGuillaumeJoin",1;
+	end;
+OnEnterBG:
+	set $@TierraBG2_id1, waitingroom2bg("bat_a02",50,374,0,"Tierra_BG2::OnGuillaumeQuit","");
+	end;
+}
+
+bat_room,85,74,0	script	Registration::TV2R_Croix	414,{
+	end;
+OnInit:
+	waitingroom "Battle Station 10 Players",10,"Tierra_BG2::OnCroixJoin",1;
+	end;
+OnEnterBG:
+	set $@TierraBG2_id2, waitingroom2bg("bat_a02",42,16,1,"Tierra_BG2::OnCroixQuit","");
+	end;
+}
+
+// Battleground Engine
+// *********************************************************************
+
+-	script	Tierra_BG2	-1,{
+	end;
+
+OnInit:
+	disablenpc "Tierra Neutral#lion2";
+	disablenpc "Tierra Neutral#eagle2";
+	disablenpc "Croix Vintenar#tv2";
+	disablenpc "Guillaume Vintenar#tv2";
+	disablenpc "Therapist in battle#tv21";
+	disablenpc "Therapist in battle#tv22";
+	end;
+
+OnGuillaumeQuit:
+OnCroixQuit:
+	set BG_Delay_Tick, gettimetick(2) + 1200;
+	end;
+
+OnGuillaumeJoin:
+OnCroixJoin:
+	if( $@TierraBG2 == 0 )
+		donpcevent "Tierra_BG2::OnReadyCheck";
+	end;
+
+OnReadyCheck:
+	if( $@TierraBG2 )
+		end;
+	set .@Guillaume, getwaitingroomstate(0,"TV2R_Guillaume");
+	set .@Croix, getwaitingroomstate(0,"TV2R_Croix");
+
+	if( .@Guillaume < 10 || .@Croix < 10 )
+	{
+		mapannounce "bat_room","Battleground -- Tierra Valley [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0xF4A460;
+		end;
+	}
+
+	set $@TierraBG2, 1;
+	donpcevent "TV2R_Croix::OnEnterBG";
+	donpcevent "TV2R_Guillaume::OnEnterBG";
+	donpcevent "Guillaume_TV2B::OnBuild";
+	donpcevent "Croix_TV2B::OnBuild";
+	bg_monster $@TierraBG2_id1,"bat_a02",176,345,"Food Depot",1909,"Tierra_BG2::OnGuillaumeBreak";
+	bg_monster $@TierraBG2_id2,"bat_a02",167,50,"Food Storage",1910,"Tierra_BG2::OnCroixBreak";
+	bg_monster 0,"bat_a02",273,204,"Neutrality Flag",1911,"Tierra_BG2::OnNeutralBreak";
+	set $@TierraBG2_Base, 0;
+	set $@TierraBG2_Victory, 0;
+	enablenpc "Therapist in battle#tv21";
+	enablenpc "Therapist in battle#tv22";
+	disablenpc "Croix Vintenar#tv2";
+	disablenpc "Guillaume Vintenar#tv2";
+	// Respawner
+	donpcevent "#gtv2_respawn::OnBGStart";
+	donpcevent "#ctv2_respawn::OnBGStart";
+	// Warp Teams
+	announce "Battleground -- Tierra Valley [80-99] has started!",0,0xF4A460;
+	bg_warp $@TierraBG2_id1,"bat_a02",353,344;
+	bg_warp $@TierraBG2_id2,"bat_a02",353,52;
+	// Final Messages
+	sleep 6000;
+	mapannounce "bat_a02","Guillaume Vintenar Axl Rose : Let's attack to burn down Croix's food storage",1,0x0000FF;
+	sleep 2000;
+	mapannounce "bat_a02","Croix Vintenar Swandery : Master of Valhalla! Let us be gifted with unfailing faith and courage",1,0xFF0000;
+	
+	initnpctimer;
+	end;
+
+OnNeutralBreak:
+	if( Bat_Team == 1 )
+	{
+		mapannounce "bat_a02","Guillaume obtained a neurality banner, so they have an advantage.",1,0x0000FF;
+		setnpcdisplay("Tierra Neutral#lion2","Guillaume Base",973);
+		enablenpc "Tierra Neutral#lion2";
+		bg_monster $@TierraBG2_id1,"bat_a02",28,185,"Guillaume Camp Guardian",1949,"Tierra_BG2::OnGuardian";
+		bg_monster $@TierraBG2_id1,"bat_a02",287,203,"Guillaume Camp Guardian",1950,"Tierra_BG2::OnGuardian";
+		bg_monster $@TierraBG2_id1,"bat_a02",268,204,"Guillaume Camp Guardian",1949,"Tierra_BG2::OnGuardian";
+		bg_monster $@TierraBG2_id1,"bat_a02",280,233,"Guillaume Camp Guardian",1950,"Tierra_BG2::OnGuardian";
+	}
+	else if( Bat_Team == 2 )
+	{
+		mapannounce "bat_a02","Croix obtained a neutrality banner, so they have an advantage.",1,0xFF0000;
+		setnpcdisplay("Tierra Neutral#eagle2","Croix Base",974);
+		enablenpc "Tierra Neutral#eagle2";
+		bg_monster $@TierraBG2_id2,"bat_a02",28,185,"Croix Camp Guardian",1949,"Tierra_BG2::OnGuardian";
+		bg_monster $@TierraBG2_id2,"bat_a02",287,203,"Croix Camp Guardian",1950,"Tierra_BG2::OnGuardian";
+		bg_monster $@TierraBG2_id2,"bat_a02",268,204,"Croix Camp Guardian",1949,"Tierra_BG2::OnGuardian";
+		bg_monster $@TierraBG2_id2,"bat_a02",280,233,"Croix Camp Guardian",1950,"Tierra_BG2::OnGuardian";
+	}
+	else end; // Should not happend
+	set $@TierraBG2_Base, Bat_Team;
+	end;
+
+OnGuardian:
+	end;
+
+OnGuillaumeBreak:
+	set $@TierraBG2_Victory, 2;
+	mapannounce "bat_a02","Croix Vintenar Swandery: We destroyed Guillaume's food storehause. We won that! Wow!",1,0xFF0000;
+	donpcevent "Tierra_BG2::OnStop";
+	end;
+
+OnCroixBreak:
+	set $@TierraBG2_Victory, 1;
+	mapannounce "bat_a02","Guillaume Vintenar Axl Rose: We destroyed Croix's food storehause. We won that! Wow!",1,0x0000FF;
+	donpcevent "Tierra_BG2::OnStop";
+	end;
+
+OnTimer2400000:
+	mapannounce "bat_a02","Battle of Tierra Gorge will ends in 5 minutes",1,0xF4A460;
+	end;
+OnTimer2640000:
+	mapannounce "bat_a02","Battle of Tierra Gorge will ends in 1 minute",1,0xF4A460;
+	end;
+
+OnTimer2700000:
+	set $@TierraBG2_Victory, 3; // Draw Game
+	mapannounce "bat_a02","Battle of Tierra Gorge is over. The time is out, this is a Tie",1,0xF4A460;
+	donpcevent "Tierra_BG2::OnStop";
+	end;
+
+OnStop:
+	set $@TierraBG2, 2;
+	disablenpc "Therapist in battle#tv21";
+	disablenpc "Therapist in battle#tv22";
+	donpcevent "#gtv2_respawn::OnBGStop";
+	donpcevent "#ctv2_respawn::OnBGStop";
+	enablenpc "Croix Vintenar#tv2";
+	enablenpc "Guillaume Vintenar#tv2";
+	killmonster "bat_a02","Tierra_BG2::OnGuillaumeBreak";
+	killmonster "bat_a02","Tierra_BG2::OnCroixBreak";
+	killmonster "bat_a02","Tierra_BG2::OnNeutralBreak";
+	killmonster "bat_a02","Tierra_BG2::OnGuardian";
+	stopnpctimer;
+	sleep 3000;
+	bg_warp $@TierraBG2_id1,"bat_a02",50,374;
+	bg_warp $@TierraBG2_id2,"bat_a02",42,16;
+	sleep 3000;
+	mapannounce "bat_a02","Battle of Tierra Gorge will close in 1 minute!",1,0xF4A460;
+	initnpctimer;
+	end;
+
+OnTimer30000:
+	if( $@TierraBG2 == 2 )
+		mapannounce "bat_a02","Battle of Tierra Valley will close in 30 seconds!",1,0xF4A460;
+	end;
+OnTimer50000:
+	if( $@TierraBG2 == 2 )
+		mapannounce "bat_a02","Battle of Tierra Valley will close in 10 seconds!",1,0xF4A460;
+	end;
+
+OnTimer60000:
+	if( $@TierraBG2 != 2 )
+		end;
+OnReset:
+	stopnpctimer;
+	set $@TierraBG2_Base, 0;
+	disablenpc "Tierra Neutral#lion2";
+	disablenpc "Tierra Neutral#eagle2";
+	disablenpc "Croix Vintenar#tv2";
+	disablenpc "Guillaume Vintenar#tv2";
+	disablenpc "Therapist in battle#tv21";
+	disablenpc "Therapist in battle#tv22";
+	donpcevent "#gtv2_respawn::OnBGStop";
+	donpcevent "#ctv2_respawn::OnBGStop";
+
+	killmonster "bat_a02","Tierra_BG2::OnGuillaumeBreak";
+	killmonster "bat_a02","Tierra_BG2::OnCroixBreak";
+	killmonster "bat_a02","Tierra_BG2::OnNeutralBreak";
+	killmonster "bat_a02","Tierra_BG2::OnGuardian";
+	donpcevent "Guillaume_TV2B::OnDestroy";
+	donpcevent "Croix_TV2B::OnDestroy";
+
+	set $@TierraBG2_Victory, 0;
+	if( $@TierraBG2_id1 ) { bg_destroy $@TierraBG2_id1; set $@TierraBG2_id1, 0; }
+	if( $@TierraBG2_id2 ) { bg_destroy $@TierraBG2_id2; set $@TierraBG2_id2, 0; }
+	sleep 1000;
+	mapwarp "bat_a02","bat_room",155,150;
+	sleep 2000;
+	maprespawnguildid "bat_a02",0,3; // Just in case someone else
+	sleep 2000;
+	set $@TierraBG2, 0;
+	donpcevent "Tierra_BG2::OnReadyCheck"; // Maybe a game is ready to start
+	end;
+}
+
+// MapFlags
+// *********************************************************************
+
+bat_a02	mapflag	battleground
+bat_a02	mapflag	nomemo
+bat_a02	mapflag	nosave	SavePoint
+bat_a02	mapflag	noteleport
+bat_a02	mapflag	nowarp
+bat_a02	mapflag	nowarpto
+bat_a02	mapflag	noreturn
+bat_a02	mapflag	nobranch
+bat_a02	mapflag	nopenalty
+
+// Neutral Point Flags
+// *********************************************************************
+
+bat_a02,273,204,1	script	Tierra Neutral#lion2	973,{ end; }
+bat_a02,273,204,1	script	Tierra Neutral#eagle2	974,{ end; }
+
+// Other Flags
+// *********************************************************************
+
+bat_a02,148,85,1	duplicate(Croix camp#bat)	Croix camp#bat22	974
+bat_a02,155,85,1	duplicate(Croix camp#bat)	Croix camp#bat23	974
+bat_a02,357,75,1	duplicate(Croix camp#bat)	Croix camp#bat24	974
+bat_a02,348,74,1	duplicate(Croix camp#bat)	Croix camp#bat25	974
+bat_a02,199,49,1	duplicate(Croix camp#bat)	Croix camp#bat26	974
+bat_a02,168,16,1	duplicate(Croix camp#bat)	Croix camp#bat27	974
+bat_a02,138,12,1	duplicate(Croix camp#bat)	Croix camp#bat28	974
+bat_a02,108,35,1	duplicate(Croix camp#bat)	Croix camp#bat29	974
+bat_a02,164,308,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat23	973
+bat_a02,157,308,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat24	973
+bat_a02,359,327,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat25	973
+bat_a02,350,326,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat26	973
+bat_a02,209,344,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat27	973
+bat_a02,173,380,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat28	973
+bat_a02,150,380,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat29	973
+bat_a02,118,357,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat30	973
+bat_a02,119,336,1	duplicate(Guillaume camp#bat)	Guillaume camp#bat31	973
+
+// Barricades
+// *********************************************************************
+
+-	script	Guillaume_TV2B	-1,{
+	end;
+
+OnBuild:
+	bg_monster $@TierraBG2_id1,"bat_a02",160,380,"Barricade",1906,"Guillaume_TV2B::OnWall1";
+	bg_monster $@TierraBG2_id1,"bat_a02",161,380,"Barricade",1906,"Guillaume_TV2B::OnWall1";
+	bg_monster $@TierraBG2_id1,"bat_a02",162,380,"Barricade",1906,"Guillaume_TV2B::OnWall1";
+	bg_monster $@TierraBG2_id1,"bat_a02",163,380,"Barricade",1906,"Guillaume_TV2B::OnWall1";
+	setwall "bat_a02",160,380,4,6,0,"bat_a02_g1";
+	
+	bg_monster $@TierraBG2_id1,"bat_a02",160,363,"Barricade",1906,"Guillaume_TV2B::OnWall2";
+	bg_monster $@TierraBG2_id1,"bat_a02",161,363,"Barricade",1906,"Guillaume_TV2B::OnWall2";
+	bg_monster $@TierraBG2_id1,"bat_a02",162,363,"Barricade",1906,"Guillaume_TV2B::OnWall2";
+	setwall "bat_a02",160,363,3,6,0,"bat_a02_g2";
+	
+	bg_monster $@TierraBG2_id1,"bat_a02",119,344,"Barricade",1906,"Guillaume_TV2B::OnWall3";
+	bg_monster $@TierraBG2_id1,"bat_a02",119,345,"Barricade",1906,"Guillaume_TV2B::OnWall3";
+	bg_monster $@TierraBG2_id1,"bat_a02",119,346,"Barricade",1906,"Guillaume_TV2B::OnWall3";
+	bg_monster $@TierraBG2_id1,"bat_a02",119,347,"Barricade",1906,"Guillaume_TV2B::OnWall3";
+	setwall "bat_a02",119,344,4,0,0,"bat_a02_g3";
+	
+	bg_monster $@TierraBG2_id1,"bat_a02",134,345,"Barricade",1906,"Guillaume_TV2B::OnWall4";
+	bg_monster $@TierraBG2_id1,"bat_a02",134,346,"Barricade",1906,"Guillaume_TV2B::OnWall4";
+	bg_monster $@TierraBG2_id1,"bat_a02",134,347,"Barricade",1906,"Guillaume_TV2B::OnWall4";
+	setwall "bat_a02",134,345,3,0,0,"bat_a02_g4";
+	
+	bg_monster $@TierraBG2_id1,"bat_a02",159,311,"Barricade",1906,"Guillaume_TV2B::OnWall5";
+	bg_monster $@TierraBG2_id1,"bat_a02",160,311,"Barricade",1906,"Guillaume_TV2B::OnWall5";
+	bg_monster $@TierraBG2_id1,"bat_a02",161,311,"Barricade",1906,"Guillaume_TV2B::OnWall5";
+	bg_monster $@TierraBG2_id1,"bat_a02",162,311,"Barricade",1906,"Guillaume_TV2B::OnWall5";
+	setwall "bat_a02",159,311,4,6,0,"bat_a02_g5";
+	
+	bg_monster $@TierraBG2_id1,"bat_a02",159,327,"Barricade",1906,"Guillaume_TV2B::OnWall6";
+	bg_monster $@TierraBG2_id1,"bat_a02",160,327,"Barricade",1906,"Guillaume_TV2B::OnWall6";
+	bg_monster $@TierraBG2_id1,"bat_a02",161,327,"Barricade",1906,"Guillaume_TV2B::OnWall6";
+	bg_monster $@TierraBG2_id1,"bat_a02",162,327,"Barricade",1906,"Guillaume_TV2B::OnWall6";
+	setwall "bat_a02",159,327,4,6,0,"bat_a02_g6";
+	
+	bg_monster $@TierraBG2_id1,"bat_a02",163,344,"Barricade",1906,"Guillaume_TV2B::OnWall7";
+	bg_monster $@TierraBG2_id1,"bat_a02",163,345,"Barricade",1906,"Guillaume_TV2B::OnWall7";
+	bg_monster $@TierraBG2_id1,"bat_a02",163,346,"Barricade",1906,"Guillaume_TV2B::OnWall7";
+	bg_monster $@TierraBG2_id1,"bat_a02",163,347,"Barricade",1906,"Guillaume_TV2B::OnWall7";
+	setwall "bat_a02",163,344,4,0,0,"bat_a02_g7";
+
+	setarray .MyMobCount[1],4,3,4,3,4,4,4;
+	end;
+
+OnDestroy:
+	for( set .@i, 1; .@i < 8; set .@i, .@i + 1 )
+	{
+		killmonster "bat_a02","Guillaume_TV2B::OnWall" + .@i + "";
+		delwall "bat_a02_g" + .@i + "";
+	}
+	
+	setarray .MyMobCount[1],0,0,0,0,0,0,0;
+	end;
+
+OnWall1:
+	if( set(.MyMobCount[1],.MyMobCount[1] - 1) < 1 )
+	{
+		delwall "bat_a02_g1";
+		mapannounce "bat_a02","Guillaume Camp : A Gate has been Destroy!!",1,0xffb85d;
+	}
+	end;
+OnWall2:
+	if( set(.MyMobCount[2],.MyMobCount[2] - 1) < 1 )
+	{
+		delwall "bat_a02_g2";
+		mapannounce "bat_a02","Guillaume Camp : A Gate has been Destroy!!",1,0xffb85d;
+	}
+	end;
+OnWall3:
+	if( set(.MyMobCount[3],.MyMobCount[3] - 1) < 1 )
+	{
+		delwall "bat_a02_g3";
+		mapannounce "bat_a02","Guillaume Camp : A Gate has been Destroy!!",1,0xffb85d;
+	}
+	end;
+OnWall4:
+	if( set(.MyMobCount[4],.MyMobCount[4] - 1) < 1 )
+	{
+		delwall "bat_a02_g4";
+		mapannounce "bat_a02","Guillaume Camp : A Gate has been Destroy!!",1,0xffb85d;
+	}
+	end;
+OnWall5:
+	if( set(.MyMobCount[5],.MyMobCount[5] - 1) < 1 )
+	{
+		delwall "bat_a02_g5";
+		mapannounce "bat_a02","Guillaume Camp : A Gate has been Destroy!!",1,0xffb85d;
+	}
+	end;
+OnWall6:
+	if( set(.MyMobCount[6],.MyMobCount[6] - 1) < 1 )
+	{
+		delwall "bat_a02_g6";
+		mapannounce "bat_a02","Guillaume Camp : A Gate has been Destroy!!",1,0xffb85d;
+	}
+	end;
+OnWall7:
+	if( set(.MyMobCount[7],.MyMobCount[7] - 1) < 1 )
+	{
+		delwall "bat_a02_g7";
+		mapannounce "bat_a02","Guillaume Camp : Main Gate has been Destroy, our Food Storehouse is unprotected!!",1,0xffb85d;
+	}
+	end;
+}
+
+-	script	Croix_TV2B	-1,{
+	end;
+
+OnBuild:
+	bg_monster $@TierraBG2_id2,"bat_a02",150,83,"Barricade",1906,"Croix_TV2B::OnWall1";
+	bg_monster $@TierraBG2_id2,"bat_a02",151,83,"Barricade",1906,"Croix_TV2B::OnWall1";
+	bg_monster $@TierraBG2_id2,"bat_a02",152,83,"Barricade",1906,"Croix_TV2B::OnWall1";
+	bg_monster $@TierraBG2_id2,"bat_a02",153,83,"Barricade",1906,"Croix_TV2B::OnWall1";
+	setwall "bat_a02",150,83,4,6,0,"bat_a02_c1";
+
+	bg_monster $@TierraBG2_id2,"bat_a02",150,67,"Barricade",1906,"Croix_TV2B::OnWall2";
+	bg_monster $@TierraBG2_id2,"bat_a02",151,67,"Barricade",1906,"Croix_TV2B::OnWall2";
+	bg_monster $@TierraBG2_id2,"bat_a02",152,67,"Barricade",1906,"Croix_TV2B::OnWall2";
+	bg_monster $@TierraBG2_id2,"bat_a02",153,67,"Barricade",1906,"Croix_TV2B::OnWall2";
+	setwall "bat_a02",150,67,4,6,0,"bat_a02_c2";
+
+	bg_monster $@TierraBG2_id2,"bat_a02",109,47,"Barricade",1906,"Croix_TV2B::OnWall3";
+	bg_monster $@TierraBG2_id2,"bat_a02",109,48,"Barricade",1906,"Croix_TV2B::OnWall3";
+	bg_monster $@TierraBG2_id2,"bat_a02",109,49,"Barricade",1906,"Croix_TV2B::OnWall3";
+	bg_monster $@TierraBG2_id2,"bat_a02",109,50,"Barricade",1906,"Croix_TV2B::OnWall3";
+	setwall "bat_a02",109,47,4,0,0,"bat_a02_c3";
+
+	bg_monster $@TierraBG2_id2,"bat_a02",127,47,"Barricade",1906,"Croix_TV2B::OnWall4";
+	bg_monster $@TierraBG2_id2,"bat_a02",127,48,"Barricade",1906,"Croix_TV2B::OnWall4";
+	bg_monster $@TierraBG2_id2,"bat_a02",127,49,"Barricade",1906,"Croix_TV2B::OnWall4";
+	bg_monster $@TierraBG2_id2,"bat_a02",127,50,"Barricade",1906,"Croix_TV2B::OnWall4";
+	setwall "bat_a02",127,47,4,0,0,"bat_a02_c4";
+
+	bg_monster $@TierraBG2_id2,"bat_a02",152,13,"Barricade",1906,"Croix_TV2B::OnWall5";
+	bg_monster $@TierraBG2_id2,"bat_a02",153,13,"Barricade",1906,"Croix_TV2B::OnWall5";
+	bg_monster $@TierraBG2_id2,"bat_a02",154,13,"Barricade",1906,"Croix_TV2B::OnWall5";
+	bg_monster $@TierraBG2_id2,"bat_a02",155,13,"Barricade",1906,"Croix_TV2B::OnWall5";
+	setwall "bat_a02",152,13,4,6,0,"bat_a02_c5";
+
+	bg_monster $@TierraBG2_id2,"bat_a02",152,32,"Barricade",1906,"Croix_TV2B::OnWall6";
+	bg_monster $@TierraBG2_id2,"bat_a02",153,32,"Barricade",1906,"Croix_TV2B::OnWall6";
+	bg_monster $@TierraBG2_id2,"bat_a02",154,32,"Barricade",1906,"Croix_TV2B::OnWall6";
+	bg_monster $@TierraBG2_id2,"bat_a02",155,32,"Barricade",1906,"Croix_TV2B::OnWall6";
+	setwall "bat_a02",152,32,4,6,0,"bat_a02_c6";
+
+	bg_monster $@TierraBG2_id2,"bat_a02",153,48,"Barricade",1906,"Croix_TV2B::OnWall7";
+	bg_monster $@TierraBG2_id2,"bat_a02",153,49,"Barricade",1906,"Croix_TV2B::OnWall7";
+	bg_monster $@TierraBG2_id2,"bat_a02",153,50,"Barricade",1906,"Croix_TV2B::OnWall7";
+	bg_monster $@TierraBG2_id2,"bat_a02",153,51,"Barricade",1906,"Croix_TV2B::OnWall7";
+	setwall "bat_a02",153,48,4,0,0,"bat_a02_c7";
+
+	setarray .MyMobCount[1],4,4,4,4,4,4,4;
+	end;
+
+OnDestroy:
+	for( set .@i, 1; .@i < 8; set .@i, .@i + 1 )
+	{
+		killmonster "bat_a02","Croix_TV2B::OnWall" + .@i + "";
+		delwall "bat_a02_c" + .@i + "";
+	}
+	
+	setarray .MyMobCount[1],0,0,0,0,0,0,0;
+	end;
+
+OnWall1:
+	if( set(.MyMobCount[1],.MyMobCount[1] - 1) < 1 )
+	{
+		delwall "bat_a02_c1";
+		mapannounce "bat_a02","Croix Camp : A Gate has been Destroy!!",1,0xff9fa1;
+	}
+	end;
+OnWall2:
+	if( set(.MyMobCount[2],.MyMobCount[2] - 1) < 1 )
+	{
+		delwall "bat_a02_c2";
+		mapannounce "bat_a02","Croix Camp : A Gate has been Destroy!!",1,0xff9fa1;
+	}
+	end;
+OnWall3:
+	if( set(.MyMobCount[3],.MyMobCount[3] - 1) < 1 )
+	{
+		delwall "bat_a02_c3";
+		mapannounce "bat_a02","Croix Camp : A Gate has been Destroy!!",1,0xff9fa1;
+	}
+	end;
+OnWall4:
+	if( set(.MyMobCount[4],.MyMobCount[4] - 1) < 1 )
+	{
+		delwall "bat_a02_c4";
+		mapannounce "bat_a02","Croix Camp : A Gate has been Destroy!!",1,0xff9fa1;
+	}
+	end;
+OnWall5:
+	if( set(.MyMobCount[5],.MyMobCount[5] - 1) < 1 )
+	{
+		delwall "bat_a02_c5";
+		mapannounce "bat_a02","Croix Camp : A Gate has been Destroy!!",1,0xff9fa1;
+	}
+	end;
+OnWall6:
+	if( set(.MyMobCount[6],.MyMobCount[6] - 1) < 1 )
+	{
+		delwall "bat_a02_c6";
+		mapannounce "bat_a02","Croix Camp : A Gate has been Destroy!!",1,0xff9fa1;
+	}
+	end;
+OnWall7:
+	if( set(.MyMobCount[7],.MyMobCount[7] - 1) < 1 )
+	{
+		delwall "bat_a02_c7";
+		mapannounce "bat_a02","Croix Camp : Main Gate has been Destroy, our Food Storehouse is unprotected!!",1,0xff9fa1;
+	}
+	end;
+}
+
+// Battleground rewards
+// *********************************************************************
+
+bat_a02,45,19,3	script	Croix Vintenar#tv2	415,{
+	if( $@TierraBG2_Victory )
+	{
+		if( $@TierraBG2_Victory == Bat_Team )
+		{ // Victory
+			set .@Reward, 3;
+			mes "[Swandery]";
+			mes "Blessed Croax!!";
+			mes "Let's enjoy our glorious victory!";
+			mes "" + strcharinfo(0) + ", its a sign reflecting victory";
+			close2;
+		}
+		else
+		{ // 
+			set .@Reward, 1;
+			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 Tierra_BG_Tick, gettimetick(2) + 300;
+		getitem 7828, .@Reward;
+		bg_leave;
+		warp "bat_room",155,150;
+		end;
+	}
+	end;
+}
+
+bat_a02,53,377,3	script	Guillaume Vintenar#tv2	419,{
+	if( $@TierraBG2_Victory )
+	{
+		if( $@TierraBG2_Victory == Bat_Team )
+		{ // Victory
+			set .@Reward, 3;
+			mes "[Swandery]";
+			mes "Blessed Guillaume!!";
+			mes "Let's enjoy our glorious victory!";
+			mes "" + strcharinfo(0) + ", its a sign reflecting victory";
+			close2;
+		}
+		else
+		{ // 
+			set .@Reward, 1;
+			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 Tierra_BG_Tick, gettimetick(2) + 300;
+		getitem 7828, .@Reward;
+		bg_leave;
+		warp "bat_room",155,150;
+		end;
+	}
+	end;
+}
+
+// Battleground Therapist
+// *********************************************************************
+
+bat_a02,53,377,3	script	Therapist in battle#tv22	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_a02,45,18,3	script	Therapist in battle#tv21	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_a02,50,374,0	script	#gtv2_respawn	139,{
+	end;
+
+OnBGStart:
+	initnpctimer;
+	end;
+
+OnBGStop:
+	stopnpctimer;
+	end;
+
+OnTimer24000:
+	misceffect 83;
+	end;
+
+OnTimer25000:
+	areapercentheal "bat_a02",46,370,54,378,100,100;
+	if( $@TierraBG2_Base == 1 )
+		areawarp "bat_a02",46,370,54,378,"bat_a02",285,226;
+	else
+		areawarp "bat_a02",46,370,54,378,"bat_a02",354,340;
+	initnpctimer;
+	end;
+}
+
+bat_a02,42,16,0	script	#ctv2_respawn	139,{
+	end;
+
+OnBGStart:
+	initnpctimer;
+	end;
+
+OnBGStop:
+	stopnpctimer;
+	end;
+
+OnTimer24000:
+	misceffect 83;
+	end;
+
+OnTimer25000:
+	areapercentheal "bat_a02",38,12,47,21,100,100;
+	if( $@TierraBG2_Base == 2 )
+		areawarp "bat_a02",38,12,47,21,"bat_a02",260,183;
+	else
+		areawarp "bat_a02",38,12,47,21,"bat_a02",354,57;
+	initnpctimer;
+	end;
+}

+ 8 - 0
npc/scripts_custom.conf

@@ -67,6 +67,14 @@
 // Supports Same-sex marriages.
 //npc: npc/custom/marriage.txt
 
+// --------------------------------------------------------------
+// BattleGround (please read conf/battle/battleground.conf before
+// uncomment battleground scripts).
+// --------------------------------------------------------------
+//npc: npc/battleground/bg_common.txt
+//npc: npc/battleground/bg_tierra_01.txt
+//npc: npc/battleground/bg_tierra_02.txt
+
 // --------------------------------------------------------------
 // Lance's Scripts (coded before joining eA Dev team)
 // --------------------------------------------------------------