瀏覽代碼

* A rather large overhaul of the battlegrounds.
- in bg_common.txt, stripped out KvM npcs, fixed coordinates.
- Needs to be tested, none of the BG files are on by default.
- Created subfolder battleground/KvM/ which now holds KVM files.
- Added kvm_enter.txt, which warps players to the waiting rooms.
- Added kvm_item_pay.txt, which holds the point redemption NPC.
- Made the KvM battlegrounds work closer to official, needs work.
* Corrected variable typos in the acolyte arena. (bugreport:4374)
* Corrected donpcevent typo in the party arena. (bugreport:4374)
* Added two global functions which will return equip data as strings.
- F_GetWeaponType: returns the type of weapon by 'look', (ie "Dagger")
- F_GetArmorType: returns the kind of armor via 'equip loc'. (ie "Armor")
* Fixed duplicate documentation for getitemslot. (bugreport:4362)

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

L0ne_W0lf 15 年之前
父節點
當前提交
9bb87169be

+ 6 - 11
doc/script_commands.txt

@@ -1007,6 +1007,7 @@ From here on, we will have the commands sorted as follow:
 5.- Mob / NPC -related commands.
 6.- Other commands.
 7.- Instance Commands.
+8.- Quest Log Commands.
 
 =====================
 |1.- Basic commands.|
@@ -2585,6 +2586,11 @@ and return the number of slots this kind of items has - 0 if they are not
 slotted. It will also be 0 for all non-equippable items, naturally, unless 
 someone messed up the item database. It will return -1 if there is no such item.
 
+Example(s):
+
+//@slots now has the amount of slots of the item with ID 1205.
+	set @slots, getItemSlots(1205);
+
 ---------------------------------------
 
 *getiteminfo(<item ID>,<type>)
@@ -2619,18 +2625,7 @@ This func returns CARD ID, 255,254,-255 (for card 0, if the item is produced) it
 when you want to check item cards or if it's signed. Useful for such quests as 
 "Sign this refined item with players name" etc;
 	Hat[0] +4 -> Player's Hat[0] +4
-	
----------------------------------------
 
-*getitemslots(<item id>)
-
-Returns the amount of slots the item has.
-
-Example(s):
-
-//@slots now has the amount of slots of the item with ID 1205.
-	set @slots, getItemSlots(1205);
-	
 ---------------------------------------
 //
 2,1.- End of item-related commands.

+ 13 - 0
npc/Changelog.txt

@@ -1,5 +1,18 @@
 Date		Added
 ======
+2010/07/29
+	* Rev. 14369 A rather large overhaul of the battlegrounds. [L0ne_W0lf]
+	- in bg_common.txt, stripped out KvM npcs, fixed coordinates.
+	- Needs to be tested, none of the BG files are on by default.
+	- Created subfolder battleground/KvM/ which now holds KVM files.
+	- Added kvm_enter.txt, which warps players to the waiting rooms.
+	- Added kvm_item_pay.txt, which holds the point redemption NPC.
+	- Made the KvM battlegrounds work closer to official, needs work.
+	* Corrected variable typos in the acolyte arena. (bugreport:4374)
+	* Corrected donpcevent typo in the party arena. (bugreport:4374)
+	* Added two global functions which will return equip data as strings.
+	- F_GetWeaponType: returns the type of weapon by 'look', (ie "Dagger")
+	- F_GetArmorType: returns the kind of armor via 'equip loc'. (ie "Armor")
 2010/07/29
 	* Rev. 14366 Added the acolyte-specific arena to the Izlude arena. [L0ne_W0lf]
 2010/07/08

+ 30 - 453
npc/battleground/bg_common.txt

@@ -10,7 +10,6 @@ bat_room	mapflag	nowarpto
 bat_room	mapflag	nobranch
 bat_room	mapflag	nopenalty
 bat_room	mapflag	noteleport
-bat_room	mapflag	nosave	SavePoint
 
 // BattleGround Warper - Entrance
 // *********************************************************************
@@ -178,9 +177,9 @@ function	script	Time2Str	{
 	return .@Time$;
 }
 
-// Guillaume Knight - Tierra Valley
+// Guillaume Knight - Tierra Gorge
 // *********************************************************************
-bat_room,159,178,5	script	Guillaume Knight#1	417,{
+bat_room,127,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;
@@ -199,7 +198,7 @@ bat_room,159,178,5	script	Guillaume Knight#1	417,{
 
 // Tierra Officer - Guillaume
 // *********************************************************************
-bat_room,156,178,5	script	Tierra Valley Officer#1	418,{
+bat_room,124,178,5	script	Tierra Gorge Officer#1	418,{
 	mes "[Tierra Officer]";
 	if( Bat_Team == 2 )
 	{
@@ -244,13 +243,13 @@ bat_room,156,178,5	script	Tierra Valley Officer#1	418,{
 
 	mes "Good luck!";
 	close2;
-	warp "bat_room",85,224;
+	warp "bat_room",57,223;
 	end;
 }
 
-// Croix Knight - Tierra Valley
+// Croix Knight - Tierra Gorge
 // *********************************************************************
-bat_room,159,121,1	script	Croix Knight#1	413,{
+bat_room,127,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;
@@ -269,7 +268,7 @@ bat_room,159,121,1	script	Croix Knight#1	413,{
 
 // Tierra Officer - Croix
 // *********************************************************************
-bat_room,156,121,1	script	Tierra Valley Officer#2	414,{
+bat_room,125,121,1	script	Tierra Gorge Officer#2	414,{
 	mes "[Tierra Officer]";
 	if( Bat_Team == 1 )
 	{
@@ -314,13 +313,13 @@ bat_room,156,121,1	script	Tierra Valley Officer#2	414,{
 
 	mes "Good luck!";
 	close2;
-	warp "bat_room",85,208;
+	warp "bat_room",57,207;
 	end;
 }
 
 // Guillaume Knight - Tierra
 // *********************************************************************
-bat_room,167,178,5	script	Guillaume Knight#2	417,{
+bat_room,143,178,5	script	Guillaume Knight#2	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;
@@ -339,7 +338,7 @@ bat_room,167,178,5	script	Guillaume Knight#2	417,{
 
 // Tierra Officer - Guillaume
 // *********************************************************************
-bat_room,164,178,5	script	Tierra Valley Officer#3	418,{
+bat_room,140,178,5	script	Tierra Gorge Officer#3	418,{
 	mes "[Tierra Officer]";
 	if( Bat_Team == 2 )
 	{
@@ -384,13 +383,13 @@ bat_room,164,178,5	script	Tierra Valley Officer#3	418,{
 
 	mes "Good luck!";
 	close2;
-	warp "bat_room",57,94;
+	warp "bat_room",114,223;
 	end;
 }
 
 // Croix Knight - Tierra
 // *********************************************************************
-bat_room,167,121,1	script	Croix Knight#2	413,{
+bat_room,143,121,1	script	Croix Knight#2	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;
@@ -409,7 +408,7 @@ bat_room,167,121,1	script	Croix Knight#2	413,{
 
 // Tierra Officer - Croix
 // *********************************************************************
-bat_room,164,121,1	script	Tierra Valley Officer#4	414,{
+bat_room,140,121,1	script	Tierra Gorge Officer#4	414,{
 	mes "[Tierra Officer]";
 	if( Bat_Team == 1 )
 	{
@@ -454,13 +453,13 @@ bat_room,164,121,1	script	Tierra Valley Officer#4	414,{
 
 	mes "Good luck!";
 	close2;
-	warp "bat_room",57,77;
+	warp "bat_room",114,204;
 	end;
 }
 
 // Guillaune Knight - Flavius
 // *********************************************************************
-bat_room,175,178,5	script	Guillaume Knight#3	417,{
+bat_room,135,178,5	script	Guillaume Knight#3	417,{
 	mes "[Guillaume Knight]";
 	mes "The objective of the Flavius Battle is to score 2 points before your enemy by destroying their crystal.";
 	next;
@@ -480,7 +479,7 @@ bat_room,175,178,5	script	Guillaume Knight#3	417,{
 
 // Flavius Officer - Guillaume
 // *********************************************************************
-bat_room,172,178,5	script	Flavius Officer#1	418,{
+bat_room,133,178,5	script	Flavius Officer#1	418,{
 	mes "[Flavius Officer]";
 	if( Bat_Team == 2 )
 	{
@@ -525,13 +524,13 @@ bat_room,172,178,5	script	Flavius Officer#1	418,{
 
 	mes "Good luck!";
 	close2;
-	warp "bat_room",85,94;
+	warp "bat_room",85,223;
 	end;
 }
 
 // Croix Knight - Flavius
 // *********************************************************************
-bat_room,175,121,1	script	Croix Knight#3	413,{
+bat_room,135,121,1	script	Croix Knight#3	413,{
 	mes "[Croix Knight]";
 	mes "The objective of the Flavius Battle is to score 2 points before your enemy by destroying their crystal.";
 	next;
@@ -551,7 +550,7 @@ bat_room,175,121,1	script	Croix Knight#3	413,{
 
 // Flavius Officerer - Croix
 // *********************************************************************
-bat_room,172,121,1	script	Flavius Officer#2	414,{
+bat_room,133,121,1	script	Flavius Officer#2	414,{
 	mes "[Flavius Officer]";
 	if( Bat_Team == 1 )
 	{
@@ -596,7 +595,7 @@ bat_room,172,121,1	script	Flavius Officer#2	414,{
 
 	mes "Good luck!";
 	close2;
-	warp "bat_room",85,77;
+	warp "bat_room",85,207;
 	end;
 }
 
@@ -667,7 +666,7 @@ bat_room,148,178,5	script	Flavius Officer#3	418,{
 
 	mes "Good luck!";
 	close2;
-	warp "bat_room",253,94;
+	warp "bat_room",141,207;
 	end;
 }
 
@@ -738,415 +737,7 @@ bat_room,148,121,1	script	Flavius Officer#4	414,{
 
 	mes "Good luck!";
 	close2;
-	warp "bat_room",253,77;
-	end;
-}
-
-// Guillaume Knight - KvM
-// *********************************************************************
-bat_room,143,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 opponents 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( checkquest(6025,PLAYTIME) == 2 ) erasequest 6025;
-	if( checkquest(6025,PLAYTIME) != -1 )
-	{
-		mes "You have received an indicator showing that you've participated in the Battle at KvM. I can't let you participate in any other battles until the indicator goes off.";
-		next;
-		mes "[KVM Officer]";
-		mes "Stand-by for KvM Battle until the time limit passes.";
-		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#5	413,{
-	mes "[Croix Knight]";
-	mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other opponents 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( checkquest(6025,PLAYTIME) == 2 ) erasequest 6025;
-	if( checkquest(6025,PLAYTIME) != -1 )
-	{
-		mes "You have received an indicator showing that you've participated in the Battle at KvM. I can't let you participate in any other battles until the indicator goes off.";
-		next;
-		mes "[KVM Officer]";
-		mes "Stand-by for KvM Battle until the time limit passes.";
-		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#6	417,{
-	mes "[Guillaume Knight]";
-	mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other opponents 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( checkquest(6025,PLAYTIME) == 2 ) erasequest 6025;
-	if( checkquest(6025,PLAYTIME) != -1 )
-	{
-		mes "You have received an indicator showing that you've participated in the Battle at KvM. I can't let you participate in any other battles until the indicator goes off.";
-		next;
-		mes "[KVM Officer]";
-		mes "Stand-by for KvM Battle until the time limit passes.";
-		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#6	413,{
-	mes "[Croix Knight]";
-	mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other opponents 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( checkquest(6025,PLAYTIME) == 2 ) erasequest 6025;
-	if( checkquest(6025,PLAYTIME) != -1 )
-	{
-		mes "You have received an indicator showing that you've participated in the Battle at KvM. I can't let you participate in any other battles until the indicator goes off.";
-		next;
-		mes "[KVM Officer]";
-		mes "Stand-by for KvM Battle until the time limit passes.";
-		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#7	417,{
-	mes "[Guillaume Knight]";
-	mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other opponents 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( checkquest(6025,PLAYTIME) == 2 ) erasequest 6025;
-	if( checkquest(6025,PLAYTIME) != -1 )
-	{
-		mes "You have received an indicator showing that you've participated in the Battle at KvM. I can't let you participate in any other battles until the indicator goes off.";
-		next;
-		mes "[KVM Officer]";
-		mes "Stand-by for KvM Battle until the time limit passes.";
-		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#7	413,{
-	mes "[Croix Knight]";
-	mes "To win the Battle of Kriger Von Midgard you and your team must kill all the other opponents 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( checkquest(6025,PLAYTIME) == 2 ) erasequest 6025;
-	if( checkquest(6025,PLAYTIME) != -1 )
-	{
-		mes "You have received an indicator showing that you've participated in the Battle at KvM. I can't let you participate in any other battles until the indicator goes off.";
-		next;
-		mes "[KVM Officer]";
-		mes "Stand-by for KvM Battle until the time limit passes.";
-		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;
+	warp "bat_room",141,227;
 	end;
 }
 
@@ -1181,10 +772,10 @@ bat_room,57,90,0	duplicate(warp2bat_room)	bat2	45,1,1
 // Free BG
 bat_room,57,220,0	duplicate(warp2bat_room)	bat3	45,1,1
 bat_room,57,211,0	duplicate(warp2bat_room)	bat4	45,1,1
-// Tierra Valley bat_a02
+// Tierra Gorge bat_a02
 bat_room,85,81,0	duplicate(warp2bat_room)	bat5	45,1,1
 bat_room,85,90,0	duplicate(warp2bat_room)	bat6	45,1,1
-// Tierra Valley bat_a01
+// Tierra Gorge bat_a01
 bat_room,85,220,0	duplicate(warp2bat_room)	bat7	45,1,1
 bat_room,85,211,0	duplicate(warp2bat_room)	bat8	45,1,1
 // Free BG
@@ -1203,31 +794,22 @@ bat_room,141,211,0	duplicate(warp2bat_room)	bat16	45,1,1
 bat_room,169,81,0	duplicate(warp2bat_room)	bat17	45,1,1
 bat_room,169,90,0	duplicate(warp2bat_room)	bat18	45,1,1
 // Free BG
-bat_room,169,220,0	duplicate(warp2bat_room)	bat19	45,1,1
-bat_room,169,211,0	duplicate(warp2bat_room)	bat20	45,1,1
-// Free BG
 bat_room,197,81,0	duplicate(warp2bat_room)	bat21	45,1,1
 bat_room,197,90,0	duplicate(warp2bat_room)	bat22	45,1,1
-// KvM bat_c03
-bat_room,197,220,0	duplicate(warp2bat_room)	bat23	45,1,1
-bat_room,197,211,0	duplicate(warp2bat_room)	bat24	45,1,1
 // Free BG
 bat_room,225,81,0	duplicate(warp2bat_room)	bat25	45,1,1
 bat_room,225,90,0	duplicate(warp2bat_room)	bat26	45,1,1
-// KvM bat_c02
-bat_room,225,220,0	duplicate(warp2bat_room)	bat27	45,1,1
-bat_room,225,211,0	duplicate(warp2bat_room)	bat28	45,1,1
 // Flavius bat_b01
 bat_room,253,81,0	duplicate(warp2bat_room)	bat29	45,1,1
 bat_room,253,90,0	duplicate(warp2bat_room)	bat30	45,1,1
-// KvM bat_c01
+// Unknown
 bat_room,253,220,0	duplicate(warp2bat_room)	bat31	45,1,1
 bat_room,253,211,0	duplicate(warp2bat_room)	bat32	45,1,1
 
 // Badges Repairman
 // *********************************************************************
 
-bat_room,138,144,5	script	Repairman#bg	99,{
+bat_room,138,144,5	script	Repairman#bg	86,{
 	callfunc "repairmain","Repairman";
 	end;
 }
@@ -1240,7 +822,7 @@ bat_room,160,150,3	script	Erundek	109,{
 	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.") )
+	switch( select("Check the Catalog","Exchange Bravery Badges","Exchange Valor Badges","Hmm, nothing I guess.") )
 	{
 		case 1:
 			mes "[Erundek]";
@@ -1248,14 +830,14 @@ bat_room,160,150,3	script	Erundek	109,{
 			close2;
 			Readbook 11010,1;
 			end;
-		case 5:
+		case 4:
 			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 "So you want to exchange ^0000FFBravery Badges^000000 from the Battle of Tierra Gorge.";
 			mes "What kind of item do you want to exchange?";
 			next;
 			deletearray .@Item_DB[0],127;
@@ -1289,13 +871,8 @@ bat_room,160,150,3	script	Erundek	109,{
 			}
 			
 			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.";

+ 2 - 2
npc/battleground/bg_flavius_01.txt

@@ -5,7 +5,7 @@
 // Registration NPC's
 // *********************************************************************
 
-bat_room,253,97,4	script	Registration::Fl1R_Guillaume	418,{
+bat_room,86,227,4	script	Registration::Fl1R_Guillaume	418,{
 	end;
 OnInit:
 	waitingroom "Battle Station 10 Players",10,"Flavius_BG1::OnGuillaumeJoin",1;
@@ -15,7 +15,7 @@ OnEnterBG:
 	end;
 }
 
-bat_room,253,74,0	script	Registration::Fl1R_Croix	414,{
+bat_room,85,204,0	script	Registration::Fl1R_Croix	414,{
 	end;
 OnInit:
 	waitingroom "Battle Station 10 Players",10,"Flavius_BG1::OnCroixJoin",1;

+ 2 - 2
npc/battleground/bg_flavius_02.txt

@@ -5,7 +5,7 @@
 // Registration NPC's
 // *********************************************************************
 
-bat_room,57,97,4	script	Registration::Fl2R_Guillaume	418,{
+bat_room,142,227,4	script	Registration::Fl2R_Guillaume	418,{
 	end;
 OnInit:
 	waitingroom "Battle Station 10 Players",10,"Flavius_BG2::OnGuillaumeJoin",1;
@@ -15,7 +15,7 @@ OnEnterBG:
 	end;
 }
 
-bat_room,57,74,0	script	Registration::Fl2R_Croix	414,{
+bat_room,142,204,0	script	Registration::Fl2R_Croix	414,{
 	end;
 OnInit:
 	waitingroom "Battle Station 10 Players",10,"Flavius_BG2::OnCroixJoin",1;

+ 0 - 391
npc/battleground/bg_kvm01.txt

@@ -1,391 +0,0 @@
-// ==============================================================================
-// BattleGround System - KvM 80~99
-// ==============================================================================
-
-// Registration NPC's
-// *********************************************************************
-
-bat_room,253,227,4	script	Registration::KvM01R_Guillaume	418,{ // KvM Guillaume
-	end;
-
-OnInit:
-	waitingroom "Battle Station 5 Players",5,"KvM01_BG::OnGuillaumeJoin",1;
-	end;
-	
-OnEnterBG:
-	set $@KvM01BG_id1, waitingroom2bg("bat_c01",53,128,"KvM01_BG::OnGuillaumeQuit","KvM01_BG::OnGuillaumeDie");
-	end;
-}
-
-bat_room,253,204,0	script	Registration::KvM01R_Croix	414,{ // KvM Croix
-	end;
-
-OnInit:
-	waitingroom "Battle Station 5 Players",5,"KvM01_BG::OnCroixJoin",1;
-	end;
-
-OnEnterBG:
-	set $@KvM01BG_id2, waitingroom2bg("bat_c01",146,55,"KvM01_BG::OnCroixQuit","KvM01_BG::OnCroixDie");
-	end;
-}
-
-// Light Effects
-// *********************************************************************
-
-bat_c01,54,123,0	script	#bat_c01a	111,{
-	end;
-
-OnKvM01LightA: misceffect 54; end;
-OnKvM01LightB: misceffect 55; end;
-OnKvM01LightC: misceffect 56; end;
-}
-
-bat_c01,56,125,0	duplicate(#bat_c01a)	#bat_c01b	111
-bat_c01,58,127,0	duplicate(#bat_c01a)	#bat_c01c	111
-bat_c01,141,56,0	duplicate(#bat_c01a)	#bat_c01d	111
-bat_c01,143,58,0	duplicate(#bat_c01a)	#bat_c01e	111
-bat_c01,145,60,0	duplicate(#bat_c01a)	#bat_c01f	111
-
-// Battleground Engine
-// *********************************************************************
-
--	script	KvM01_BG	-1,{
-	end;
-
-OnInit:
-	setwall "bat_c01",54,122,6,7,0,"batc01wall_a";
-	setwall "bat_c01",55,122,5,7,0,"batc01wall_b";
-	setwall "bat_c01",140,56,6,7,0,"batc01wall_c";
-	setwall "bat_c01",140,57,5,7,0,"batc01wall_d";
-	disablenpc "TherapistKvM01a";
-	disablenpc "TherapistKvM01b";
-	disablenpc "VintenarKvM01a";
-	disablenpc "VintenarKvM01b";
-	end;
-
-OnGuillaumeJoin:
-OnCroixJoin:
-	donpcevent "KvM01_BG::OnReadyCheck";
-	end;
-
-OnGuillaumeQuit:
-	set BG_Delay_Tick, gettimetick(2) + 1200;
-OnGuillaumeDie:
-	if( $@KvM01BG == 2 )
-	{
-		set .Guillaume_Count, .Guillaume_Count - 1;
-		set .Croix_Score, .Croix_Score + 1;
-		bg_updatescore "bat_c01",.Guillaume_Score,.Croix_Score;
-		if( .Guillaume_Count < 1 ) donpcevent "KvM01_BG::OnCroixWin";
-	}
-	end;
-
-OnCroixQuit:
-	set BG_Delay_Tick, gettimetick(2) + 1200;
-OnCroixDie:
-	if( $@KvM01BG == 2 )
-	{
-		set .Croix_Count, .Croix_Count - 1;
-		set .Guillaume_Score, .Guillaume_Score + 1;
-		bg_updatescore "bat_c01",.Guillaume_Score,.Croix_Score;
-		if( .Croix_Count < 1 ) donpcevent "KvM01_BG::OnGuillaumeWin";
-	}
-	end;
-
-OnReadyCheck:
-	if( $@KvM01BG )
-		end;
-	set .@Guillaume, getwaitingroomstate(0,"KvM01R_Guillaume");
-	set .@Croix, getwaitingroomstate(0,"KvM01R_Croix");
-
-	if( .@Guillaume < 5 || .@Croix < 5 )
-	{
-		if( .@Guillaume > 3 && .@Croix > 3 && !agitcheck() && !agitcheck2() && $@KvM_Flood < gettimetick(2) )
-		{
-			announce "Battleground -- Kreiger Von Midgard [80-99] G: " + .@Guillaume + "/5, C: " + .@Croix + "/5",0,0x696969;
-			set $@KvM_Flood, gettimetick(2) + 15;
-		}
-		else
-			mapannounce "bat_room","Battleground -- Kreiger Von Midgard [80-99] G: " + .@Guillaume + "/5, C: " + .@Croix + "/5",1,0x696969;
-		end;
-	}
-
-	set $@KvM01BG, 1; // Starting
-	donpcevent "KvM01R_Croix::OnEnterBG";
-	donpcevent "KvM01R_Guillaume::OnEnterBG";
-	donpcevent "KvM01_BG::OnStart";
-	end;
-
-OnStart:
-	announce "Battleground -- Kreiger Von Midgard [80-99] has started!",0,0x696969;
-	enablenpc "TherapistKvM01a";
-	enablenpc "TherapistKvM01b";
-	disablenpc "VintenarKvM01a";
-	disablenpc "VintenarKvM01b";
-	set $@KvM01BG_Victory, 0;
-	sleep 2000;
-	// Warp Teams
-	bg_warp $@KvM01BG_id1,"bat_c01",53,128;
-	bg_warp $@KvM01BG_id2,"bat_c01",146,55;
-	// ScoreBoard
-	set .Guillaume_Score, 0;
-	set .Croix_Score, 0;
-	initnpctimer;
-	end;
-
-OnTimer5000:
-	areapercentheal "bat_c01",50,123,58,131,100,100;
-	areapercentheal "bat_c01",141,52,149,60,100,100;
-	mapannounce "bat_c01","The Battle will start in 25 seconds!!",1,0x696969;
-	end;
-
-OnTimer26000:
-	mapannounce "bat_c01","The Battle will start in 4 seconds!!",1,0x696969;
-	end;
-
-OnTimer27000:
-	donpcevent "::OnKvM01LightA";
-	end;
-
-OnTimer28000:
-	donpcevent "::OnKvM01LightB";
-	end;
-	
-OnTimer29000:
-	donpcevent "::OnKvM01LightC";
-	end;
-
-OnTimer30000:
-	// Team Members
-	set .Guillaume_Count, bg_get_data($@KvM01BG_id1, 0);
-	set .Croix_Count, bg_get_data($@KvM01BG_id2, 0);
-	if( .Guillaume_Count < 5 || .Croix_Count < 5 )
-	{
-		set $@KvM01BG_Victory, 3;
-		set $@KvM01BG, 3;
-		mapannounce "bat_c01","There are not enough players to start the battle",1,0x696969;
-		stopnpctimer;
-		sleep 2000;
-		donpcevent "KvM01_BG::OnStop";
-		end;
-	}
-
-	set $@KvM01BG, 2; // Playing
-	areapercentheal "bat_c01",50,123,58,131,100,100;
-	bg_warp $@KvM01BG_id1,"bat_c01",62,119;
-	areapercentheal "bat_c01",141,52,149,60,100,100;
-	bg_warp $@KvM01BG_id2,"bat_c01",137,64;
-	end;
-
-OnTimer32000:
-	mapannounce "bat_c01","The Battle of Kreiger Von Midgard has begun!!",1,0x696969;
-	end;
-
-OnTimer300000:
-	mapannounce "bat_c01","The Battle will ends in 30 seconds!!",1,0x696969;
-	end;
-
-OnTimer330000:
-	if( .Croix_Count > .Guillaume_Count )
-		donpcevent "KvM01_BG::OnCroixWin";
-	else if( .Croix_Count < .Guillaume_Count )
-		donpcevent "KvM01_BG::OnGuillaumeWin";
-	else
-	{ // Draw Game
-		set $@KvM01BG, 3;
-		set $@KvM01BG_Victory, 3;
-
-		stopnpctimer;
-		sleep 2000;
-		mapannounce "bat_c01","The time is out! This is a Tie...",1,0x696969;
-		donpcevent "KvM01_BG::OnStop";
-	}
-	end;
-
-OnGuillaumeWin:
-	set $@KvM01BG, 3;
-	set $@KvM01BG_Victory, 1;
-	
-	stopnpctimer;
-	sleep 2000;
-	mapannounce "bat_c01","The Guillaume Army has won the Battle of Kreiger Von Midgard",1,0x0000FF;
-	donpcevent "KvM01_BG::OnStop";
-	end;
-
-OnCroixWin:
-	set $@KvM01BG, 3;
-	set $@KvM01BG_Victory, 2;
-
-	stopnpctimer;
-	sleep 2000;
-	mapannounce "bat_c01","The Croix Army has won the Battle of Kreiger Von Midgard",1,0xFF0000;
-	donpcevent "KvM01_BG::OnStop";
-	end;
-
-OnStop:
-	disablenpc "TherapistKvM01a";
-	disablenpc "TherapistKvM01b";
-	enablenpc "VintenarKvM01a";
-	enablenpc "VintenarKvM01b";
-	// Warp Teams
-	bg_warp $@KvM01BG_id1,"bat_c01",53,128;
-	bg_warp $@KvM01BG_id2,"bat_c01",146,55;
-	donpcevent "KvM01_BG_Out::OnBegin";
-	end;
-
-OnReset:
-	stopnpctimer;
-	stopnpctimer "KvM01_BG_Out";
-	set .Croix_Count, 0;
-	set .Guillaume_Count, 0;
-	set .Croix_Score, 0;
-	set .Guillaume_Score, 0;
-	set $@KvM01BG_Victory, 0;
-	if( $@KvM01BG_id1 ) { bg_destroy $@KvM01BG_id1; set $@KvM01BG_id1, 0; }
-	if( $@KvM01BG_id2 ) { bg_destroy $@KvM01BG_id2; set $@KvM01BG_id2, 0; }
-	disablenpc "TherapistKvM01a";
-	disablenpc "TherapistKvM01b";
-	disablenpc "VintenarKvM01a";
-	disablenpc "VintenarKvM01b";
-	sleep 1000;
-	mapwarp "bat_c01","bat_room",155,150;
-	sleep 2000;
-	maprespawnguildid "bat_c01",0,3; // Just in case someone else
-	bg_updatescore "bat_c01",0,0;
-	sleep 2000;
-	set $@KvM01BG, 0;
-	donpcevent "KvM01_BG::OnReadyCheck"; // Maybe a game is ready to start
-	end;
-}
-
--	script	KvM01_BG_Out	-1,{
-	end;
-
-OnBegin:
-	initnpctimer;
-	end;
-
-OnTimer3000:
-	mapannounce "bat_c01","Battle of Kreiger Von Midgard will close in 1 minute!",1,0x696969;
-	end;
-OnTimer30000:
-	mapannounce "bat_c01","Battle of Kreiger Von Midgard will close in 30 seconds!",1,0x696969;
-	end;
-OnTimer50000:
-	mapannounce "bat_c01","Battle of Kreiger Von Midgard will close in 10 seconds!",1,0x696969;
-	end;
-OnTimer60000:
-	donpcevent "KvM01_BG::OnReset";
-	end;
-}
-
-// Battleground Therapist
-// *********************************************************************
-
-bat_c01,51,130,5	script	Therapist in battle::TherapistKvM01a	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_c01,148,53,1	script	Therapist in battle::TherapistKvM01b	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 rewards
-// *********************************************************************
-
-bat_c01,51,130,5	script	Guillaume Vintenar::VintenarKvM01a	419,{
-	if( $@KvM01BG_Victory )
-	{
-		if( $@KvM01BG_Victory == 3 )
-		{
-			setquest 6025;
-			bg_leave;
-			warp "bat_room",155,150;
-			end;
-		}
-		else if( $@KvM01BG_Victory == Bat_Team )
-		{ // Victory
-			set .@Reward, 5;
-			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;
-		}
-
-		setquest 6025;
-		getitem 7773, .@Reward;
-		bg_leave;
-		warp "bat_room",155,150;
-		end;
-	}
-	end;
-}
-
-bat_c01,148,53,1	script	Croix Vintenar::VintenarKvM01b	415,{
-	if( $@KvM01BG_Victory )
-	{
-		if( $@KvM01BG_Victory == 3 )
-		{
-			setquest 6025;
-			bg_leave;
-			warp "bat_room",155,150;
-			end;
-		}
-		else if( $@KvM01BG_Victory == Bat_Team )
-		{ // Victory
-			set .@Reward, 5;
-			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;
-		}
-
-		setquest 6025;
-		getitem 7773, .@Reward;
-		bg_leave;
-		warp "bat_room",155,150;
-		end;
-	}
-	end;
-}
-
-// MapFlags
-// *********************************************************************
-
-bat_c01	mapflag	battleground	2
-bat_c01	mapflag	nomemo
-bat_c01	mapflag	nosave	SavePoint
-bat_c01	mapflag	noteleport
-bat_c01	mapflag	nowarp
-bat_c01	mapflag	nowarpto
-bat_c01	mapflag	noreturn
-bat_c01	mapflag	nobranch
-bat_c01	mapflag	nopenalty

+ 0 - 391
npc/battleground/bg_kvm02.txt

@@ -1,391 +0,0 @@
-// ==============================================================================
-// BattleGround System - KvM 60~79
-// ==============================================================================
-
-// Registration NPC's
-// *********************************************************************
-
-bat_room,225,227,4	script	Registration::KvM02R_Guillaume	418,{ // KvM Guillaume
-	end;
-
-OnInit:
-	waitingroom "Battle Station 5 Players",5,"KvM02_BG::OnGuillaumeJoin",1;
-	end;
-	
-OnEnterBG:
-	set $@KvM02BG_id1, waitingroom2bg("bat_c02",53,128,"KvM02_BG::OnGuillaumeQuit","KvM02_BG::OnGuillaumeDie");
-	end;
-}
-
-bat_room,225,204,0	script	Registration::KvM02R_Croix	414,{ // KvM Croix
-	end;
-
-OnInit:
-	waitingroom "Battle Station 5 Players",5,"KvM02_BG::OnCroixJoin",1;
-	end;
-
-OnEnterBG:
-	set $@KvM02BG_id2, waitingroom2bg("bat_c02",146,55,"KvM02_BG::OnCroixQuit","KvM02_BG::OnCroixDie");
-	end;
-}
-
-// Light Effects
-// *********************************************************************
-
-bat_c02,54,123,0	script	#bat_c02a	111,{
-	end;
-
-OnKvM02LightA: misceffect 54; end;
-OnKvM02LightB: misceffect 55; end;
-OnKvM02LightC: misceffect 56; end;
-}
-
-bat_c02,56,125,0	duplicate(#bat_c02a)	#bat_c02b	111
-bat_c02,58,127,0	duplicate(#bat_c02a)	#bat_c02c	111
-bat_c02,141,56,0	duplicate(#bat_c02a)	#bat_c02d	111
-bat_c02,143,58,0	duplicate(#bat_c02a)	#bat_c02e	111
-bat_c02,145,60,0	duplicate(#bat_c02a)	#bat_c02f	111
-
-// Battleground Engine
-// *********************************************************************
-
--	script	KvM02_BG	-1,{
-	end;
-
-OnInit:
-	setwall "bat_c02",54,122,6,7,0,"batc02wall_a";
-	setwall "bat_c02",55,122,5,7,0,"batc02wall_b";
-	setwall "bat_c02",140,56,6,7,0,"batc02wall_c";
-	setwall "bat_c02",140,57,5,7,0,"batc02wall_d";
-	disablenpc "TherapistKvM02a";
-	disablenpc "TherapistKvM02b";
-	disablenpc "VintenarKvM02a";
-	disablenpc "VintenarKvM02b";
-	end;
-
-OnGuillaumeJoin:
-OnCroixJoin:
-	donpcevent "KvM02_BG::OnReadyCheck";
-	end;
-
-OnGuillaumeQuit:
-	set BG_Delay_Tick, gettimetick(2) + 1200;
-OnGuillaumeDie:
-	if( $@KvM02BG == 2 )
-	{
-		set .Guillaume_Count, .Guillaume_Count - 1;
-		set .Croix_Score, .Croix_Score + 1;
-		bg_updatescore "bat_c02",.Guillaume_Score,.Croix_Score;
-		if( .Guillaume_Count < 1 ) donpcevent "KvM02_BG::OnCroixWin";
-	}
-	end;
-
-OnCroixQuit:
-	set BG_Delay_Tick, gettimetick(2) + 1200;
-OnCroixDie:
-	if( $@KvM02BG == 2 )
-	{
-		set .Croix_Count, .Croix_Count - 1;
-		set .Guillaume_Score, .Guillaume_Score + 1;
-		bg_updatescore "bat_c02",.Guillaume_Score,.Croix_Score;
-		if( .Croix_Count < 1 ) donpcevent "KvM02_BG::OnGuillaumeWin";
-	}
-	end;
-
-OnReadyCheck:
-	if( $@KvM02BG )
-		end;
-	set .@Guillaume, getwaitingroomstate(0,"KvM02R_Guillaume");
-	set .@Croix, getwaitingroomstate(0,"KvM02R_Croix");
-
-	if( .@Guillaume < 5 || .@Croix < 5 )
-	{
-		if( .@Guillaume > 3 && .@Croix > 3 && !agitcheck() && !agitcheck2() && $@KvM_Flood < gettimetick(2) )
-		{
-			announce "Battleground -- Kreiger Von Midgard [60-79] G: " + .@Guillaume + "/5, C: " + .@Croix + "/5",0,0x808080;
-			set $@KvM_Flood, gettimetick(2) + 15;
-		}
-		else
-			mapannounce "bat_room","Battleground -- Kreiger Von Midgard [60-79] G: " + .@Guillaume + "/5, C: " + .@Croix + "/5",1,0x808080;
-		end;
-	}
-
-	set $@KvM02BG, 1; // Starting
-	donpcevent "KvM02R_Croix::OnEnterBG";
-	donpcevent "KvM02R_Guillaume::OnEnterBG";
-	donpcevent "KvM02_BG::OnStart";
-	end;
-
-OnStart:
-	announce "Battleground -- Kreiger Von Midgard [60-79] has started!",0,0x808080;
-	enablenpc "TherapistKvM02a";
-	enablenpc "TherapistKvM02b";
-	disablenpc "VintenarKvM02a";
-	disablenpc "VintenarKvM02b";
-	set $@KvM02BG_Victory, 0;
-	sleep 2000;
-	// Warp Teams
-	bg_warp $@KvM02BG_id1,"bat_c02",53,128;
-	bg_warp $@KvM02BG_id2,"bat_c02",146,55;
-	// ScoreBoard
-	set .Guillaume_Score, 0;
-	set .Croix_Score, 0;
-	initnpctimer;
-	end;
-
-OnTimer5000:
-	areapercentheal "bat_c02",50,123,58,131,100,100;
-	areapercentheal "bat_c02",141,52,149,60,100,100;
-	mapannounce "bat_c02","The Battle will start in 25 seconds!!",1,0x808080;
-	end;
-
-OnTimer26000:
-	mapannounce "bat_c02","The Battle will start in 4 seconds!!",1,0x808080;
-	end;
-
-OnTimer27000:
-	donpcevent "::OnKvM02LightA";
-	end;
-
-OnTimer28000:
-	donpcevent "::OnKvM02LightB";
-	end;
-	
-OnTimer29000:
-	donpcevent "::OnKvM02LightC";
-	end;
-
-OnTimer30000:
-	// Team Members
-	set .Guillaume_Count, bg_get_data($@KvM02BG_id1, 0);
-	set .Croix_Count, bg_get_data($@KvM02BG_id2, 0);
-	if( .Guillaume_Count < 5 || .Croix_Count < 5 )
-	{
-		set $@KvM02BG_Victory, 3;
-		set $@KvM02BG, 3;
-		mapannounce "bat_c02","There are not enough players to start the battle",1,0x808080;
-		stopnpctimer;
-		sleep 2000;
-		donpcevent "KvM02_BG::OnStop";
-		end;
-	}
-
-	set $@KvM02BG, 2; // Playing
-	areapercentheal "bat_c02",50,123,58,131,100,100;
-	bg_warp $@KvM02BG_id1,"bat_c02",62,119;
-	areapercentheal "bat_c02",141,52,149,60,100,100;
-	bg_warp $@KvM02BG_id2,"bat_c02",137,64;
-	end;
-
-OnTimer32000:
-	mapannounce "bat_c02","The Battle of Kreiger Von Midgard has begun!!",1,0x808080;
-	end;
-
-OnTimer300000:
-	mapannounce "bat_c02","The Battle will ends in 30 seconds!!",1,0x808080;
-	end;
-
-OnTimer330000:
-	if( .Croix_Count > .Guillaume_Count )
-		donpcevent "KvM02_BG::OnCroixWin";
-	else if( .Croix_Count < .Guillaume_Count )
-		donpcevent "KvM02_BG::OnGuillaumeWin";
-	else
-	{ // Draw Game
-		set $@KvM02BG, 3;
-		set $@KvM02BG_Victory, 3;
-
-		stopnpctimer;
-		sleep 2000;
-		mapannounce "bat_c02","The time is out! This is a Tie...",1,0x808080;
-		donpcevent "KvM02_BG::OnStop";
-	}
-	end;
-
-OnGuillaumeWin:
-	set $@KvM02BG, 3;
-	set $@KvM02BG_Victory, 1;
-	
-	stopnpctimer;
-	sleep 2000;
-	mapannounce "bat_c02","The Guillaume Army has won the Battle of Kreiger Von Midgard",1,0x0000FF;
-	donpcevent "KvM02_BG::OnStop";
-	end;
-
-OnCroixWin:
-	set $@KvM02BG, 3;
-	set $@KvM02BG_Victory, 2;
-
-	stopnpctimer;
-	sleep 2000;
-	mapannounce "bat_c02","The Croix Army has won the Battle of Kreiger Von Midgard",1,0xFF0000;
-	donpcevent "KvM02_BG::OnStop";
-	end;
-
-OnStop:
-	disablenpc "TherapistKvM02a";
-	disablenpc "TherapistKvM02b";
-	enablenpc "VintenarKvM02a";
-	enablenpc "VintenarKvM02b";
-	// Warp Teams
-	bg_warp $@KvM02BG_id1,"bat_c02",53,128;
-	bg_warp $@KvM02BG_id2,"bat_c02",146,55;
-	donpcevent "KvM02_BG_Out::OnBegin";
-	end;
-
-OnReset:
-	stopnpctimer;
-	stopnpctimer "KvM02_BG_Out";
-	set .Croix_Count, 0;
-	set .Guillaume_Count, 0;
-	set .Croix_Score, 0;
-	set .Guillaume_Score, 0;
-	set $@KvM02BG_Victory, 0;
-	if( $@KvM02BG_id1 ) { bg_destroy $@KvM02BG_id1; set $@KvM02BG_id1, 0; }
-	if( $@KvM02BG_id2 ) { bg_destroy $@KvM02BG_id2; set $@KvM02BG_id2, 0; }
-	disablenpc "TherapistKvM02a";
-	disablenpc "TherapistKvM02b";
-	disablenpc "VintenarKvM02a";
-	disablenpc "VintenarKvM02b";
-	sleep 1000;
-	mapwarp "bat_c02","bat_room",155,150;
-	sleep 2000;
-	maprespawnguildid "bat_c02",0,3; // Just in case someone else
-	bg_updatescore "bat_c02",0,0;
-	sleep 2000;
-	set $@KvM02BG, 0;
-	donpcevent "KvM02_BG::OnReadyCheck"; // Maybe a game is ready to start
-	end;
-}
-
--	script	KvM02_BG_Out	-1,{
-	end;
-
-OnBegin:
-	initnpctimer;
-	end;
-
-OnTimer3000:
-	mapannounce "bat_c02","Battle of Kreiger Von Midgard will close in 1 minute!",1,0x808080;
-	end;
-OnTimer30000:
-	mapannounce "bat_c02","Battle of Kreiger Von Midgard will close in 30 seconds!",1,0x808080;
-	end;
-OnTimer50000:
-	mapannounce "bat_c02","Battle of Kreiger Von Midgard will close in 10 seconds!",1,0x808080;
-	end;
-OnTimer60000:
-	donpcevent "KvM02_BG::OnReset";
-	end;
-}
-
-// Battleground Therapist
-// *********************************************************************
-
-bat_c02,51,130,5	script	Therapist in battle::TherapistKvM02a	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_c02,148,53,1	script	Therapist in battle::TherapistKvM02b	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 rewards
-// *********************************************************************
-
-bat_c02,51,130,5	script	Guillaume Vintenar::VintenarKvM02a	419,{
-	if( $@KvM02BG_Victory )
-	{
-		if( $@KvM02BG_Victory == 3 )
-		{
-			setquest 6025;
-			bg_leave;
-			warp "bat_room",155,150;
-			end;
-		}
-		else if( $@KvM02BG_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;
-		}
-
-		setquest 6025;
-		getitem 7773, .@Reward;
-		bg_leave;
-		warp "bat_room",155,150;
-		end;
-	}
-	end;
-}
-
-bat_c02,148,53,1	script	Croix Vintenar::VintenarKvM02b	415,{
-	if( $@KvM02BG_Victory )
-	{
-		if( $@KvM02BG_Victory == 3 )
-		{
-			setquest 6025;
-			bg_leave;
-			warp "bat_room",155,150;
-			end;
-		}
-		else if( $@KvM02BG_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;
-		}
-
-		setquest 6025;
-		getitem 7773, .@Reward;
-		bg_leave;
-		warp "bat_room",155,150;
-		end;
-	}
-	end;
-}
-
-// MapFlags
-// *********************************************************************
-
-bat_c02	mapflag	battleground	2
-bat_c02	mapflag	nomemo
-bat_c02	mapflag	nosave	SavePoint
-bat_c02	mapflag	noteleport
-bat_c02	mapflag	nowarp
-bat_c02	mapflag	nowarpto
-bat_c02	mapflag	noreturn
-bat_c02	mapflag	nobranch
-bat_c02	mapflag	nopenalty

+ 0 - 391
npc/battleground/bg_kvm03.txt

@@ -1,391 +0,0 @@
-// ==============================================================================
-// BattleGround System - KvM 1~59
-// ==============================================================================
-
-// Registration NPC's
-// *********************************************************************
-
-bat_room,197,227,4	script	Registration::KvM03R_Guillaume	418,{ // KvM Guillaume
-	end;
-
-OnInit:
-	waitingroom "Battle Station 5 Players",5,"KvM03_BG::OnGuillaumeJoin",1;
-	end;
-	
-OnEnterBG:
-	set $@KvM03BG_id1, waitingroom2bg("bat_c03",53,128,"KvM03_BG::OnGuillaumeQuit","KvM03_BG::OnGuillaumeDie");
-	end;
-}
-
-bat_room,197,204,0	script	Registration::KvM03R_Croix	414,{ // KvM Croix
-	end;
-
-OnInit:
-	waitingroom "Battle Station 5 Players",5,"KvM03_BG::OnCroixJoin",1;
-	end;
-
-OnEnterBG:
-	set $@KvM03BG_id2, waitingroom2bg("bat_c03",146,55,"KvM03_BG::OnCroixQuit","KvM03_BG::OnCroixDie");
-	end;
-}
-
-// Light Effects
-// *********************************************************************
-
-bat_c03,54,123,0	script	#bat_c03a	111,{
-	end;
-
-OnKvM03LightA: misceffect 54; end;
-OnKvM03LightB: misceffect 55; end;
-OnKvM03LightC: misceffect 56; end;
-}
-
-bat_c03,56,125,0	duplicate(#bat_c03a)	#bat_c03b	111
-bat_c03,58,127,0	duplicate(#bat_c03a)	#bat_c03c	111
-bat_c03,141,56,0	duplicate(#bat_c03a)	#bat_c03d	111
-bat_c03,143,58,0	duplicate(#bat_c03a)	#bat_c03e	111
-bat_c03,145,60,0	duplicate(#bat_c03a)	#bat_c03f	111
-
-// Battleground Engine
-// *********************************************************************
-
--	script	KvM03_BG	-1,{
-	end;
-
-OnInit:
-	setwall "bat_c03",54,122,6,7,0,"batc03wall_a";
-	setwall "bat_c03",55,122,5,7,0,"batc03wall_b";
-	setwall "bat_c03",140,56,6,7,0,"batc03wall_c";
-	setwall "bat_c03",140,57,5,7,0,"batc03wall_d";
-	disablenpc "TherapistKvM03a";
-	disablenpc "TherapistKvM03b";
-	disablenpc "VintenarKvM03a";
-	disablenpc "VintenarKvM03b";
-	end;
-
-OnGuillaumeJoin:
-OnCroixJoin:
-	donpcevent "KvM03_BG::OnReadyCheck";
-	end;
-
-OnGuillaumeQuit:
-	set BG_Delay_Tick, gettimetick(2) + 1200;
-OnGuillaumeDie:
-	if( $@KvM03BG == 2 )
-	{
-		set .Guillaume_Count, .Guillaume_Count - 1;
-		set .Croix_Score, .Croix_Score + 1;
-		bg_updatescore "bat_c03",.Guillaume_Score,.Croix_Score;
-		if( .Guillaume_Count < 1 ) donpcevent "KvM03_BG::OnCroixWin";
-	}
-	end;
-
-OnCroixQuit:
-	set BG_Delay_Tick, gettimetick(2) + 1200;
-OnCroixDie:
-	if( $@KvM03BG == 2 )
-	{
-		set .Croix_Count, .Croix_Count - 1;
-		set .Guillaume_Score, .Guillaume_Score + 1;
-		bg_updatescore "bat_c03",.Guillaume_Score,.Croix_Score;
-		if( .Croix_Count < 1 ) donpcevent "KvM03_BG::OnGuillaumeWin";
-	}
-	end;
-
-OnReadyCheck:
-	if( $@KvM03BG )
-		end;
-	set .@Guillaume, getwaitingroomstate(0,"KvM03R_Guillaume");
-	set .@Croix, getwaitingroomstate(0,"KvM03R_Croix");
-
-	if( .@Guillaume < 5 || .@Croix < 5 )
-	{
-		if( .@Guillaume > 3 && .@Croix > 3 && !agitcheck() && !agitcheck2() && $@KvM_Flood < gettimetick(2) )
-		{
-			announce "Battleground -- Kreiger Von Midgard [1-59] G: " + .@Guillaume + "/5, C: " + .@Croix + "/5",0,0xC0C0C0;
-			set $@KvM_Flood, gettimetick(2) + 15;
-		}
-		else
-			mapannounce "bat_room","Battleground -- Kreiger Von Midgard [1-59] G: " + .@Guillaume + "/5, C: " + .@Croix + "/5",1,0xC0C0C0;
-		end;
-	}
-
-	set $@KvM03BG, 1; // Starting
-	donpcevent "KvM03R_Croix::OnEnterBG";
-	donpcevent "KvM03R_Guillaume::OnEnterBG";
-	donpcevent "KvM03_BG::OnStart";
-	end;
-
-OnStart:
-	announce "Battleground -- Kreiger Von Midgard [1-59] has started!",0,0xC0C0C0;
-	enablenpc "TherapistKvM03a";
-	enablenpc "TherapistKvM03b";
-	disablenpc "VintenarKvM03a";
-	disablenpc "VintenarKvM03b";
-	set $@KvM03BG_Victory, 0;
-	sleep 2000;
-	// Warp Teams
-	bg_warp $@KvM03BG_id1,"bat_c03",53,128;
-	bg_warp $@KvM03BG_id2,"bat_c03",146,55;
-	// ScoreBoard
-	set .Guillaume_Score, 0;
-	set .Croix_Score, 0;
-	initnpctimer;
-	end;
-
-OnTimer5000:
-	areapercentheal "bat_c03",50,123,58,131,100,100;
-	areapercentheal "bat_c03",141,52,149,60,100,100;
-	mapannounce "bat_c03","The Battle will start in 25 seconds!!",1,0xC0C0C0;
-	end;
-
-OnTimer26000:
-	mapannounce "bat_c03","The Battle will start in 4 seconds!!",1,0xC0C0C0;
-	end;
-
-OnTimer27000:
-	donpcevent "::OnKvM03LightA";
-	end;
-
-OnTimer28000:
-	donpcevent "::OnKvM03LightB";
-	end;
-	
-OnTimer29000:
-	donpcevent "::OnKvM03LightC";
-	end;
-
-OnTimer30000:
-	// Team Members
-	set .Guillaume_Count, bg_get_data($@KvM03BG_id1, 0);
-	set .Croix_Count, bg_get_data($@KvM03BG_id2, 0);
-	if( .Guillaume_Count < 5 || .Croix_Count < 5 )
-	{
-		set $@KvM03BG_Victory, 3;
-		set $@KvM03BG, 3;
-		mapannounce "bat_c03","There are not enough players to start the battle",1,0xC0C0C0;
-		stopnpctimer;
-		sleep 2000;
-		donpcevent "KvM03_BG::OnStop";
-		end;
-	}
-
-	set $@KvM03BG, 2; // Playing
-	areapercentheal "bat_c03",50,123,58,131,100,100;
-	bg_warp $@KvM03BG_id1,"bat_c03",62,119;
-	areapercentheal "bat_c03",141,52,149,60,100,100;
-	bg_warp $@KvM03BG_id2,"bat_c03",137,64;
-	end;
-
-OnTimer32000:
-	mapannounce "bat_c03","The Battle of Kreiger Von Midgard has begun!!",1,0xC0C0C0;
-	end;
-
-OnTimer300000:
-	mapannounce "bat_c03","The Battle will ends in 30 seconds!!",1,0xC0C0C0;
-	end;
-
-OnTimer330000:
-	if( .Croix_Count > .Guillaume_Count )
-		donpcevent "KvM03_BG::OnCroixWin";
-	else if( .Croix_Count < .Guillaume_Count )
-		donpcevent "KvM03_BG::OnGuillaumeWin";
-	else
-	{ // Draw Game
-		set $@KvM03BG, 3;
-		set $@KvM03BG_Victory, 3;
-
-		stopnpctimer;
-		sleep 2000;
-		mapannounce "bat_c03","The time is out! This is a Tie...",1,0xC0C0C0;
-		donpcevent "KvM03_BG::OnStop";
-	}
-	end;
-
-OnGuillaumeWin:
-	set $@KvM03BG, 3;
-	set $@KvM03BG_Victory, 1;
-	
-	stopnpctimer;
-	sleep 2000;
-	mapannounce "bat_c03","The Guillaume Army has won the Battle of Kreiger Von Midgard",1,0x0000FF;
-	donpcevent "KvM03_BG::OnStop";
-	end;
-
-OnCroixWin:
-	set $@KvM03BG, 3;
-	set $@KvM03BG_Victory, 2;
-
-	stopnpctimer;
-	sleep 2000;
-	mapannounce "bat_c03","The Croix Army has won the Battle of Kreiger Von Midgard",1,0xFF0000;
-	donpcevent "KvM03_BG::OnStop";
-	end;
-
-OnStop:
-	disablenpc "TherapistKvM03a";
-	disablenpc "TherapistKvM03b";
-	enablenpc "VintenarKvM03a";
-	enablenpc "VintenarKvM03b";
-	// Warp Teams
-	bg_warp $@KvM03BG_id1,"bat_c03",53,128;
-	bg_warp $@KvM03BG_id2,"bat_c03",146,55;
-	donpcevent "KvM03_BG_Out::OnBegin";
-	end;
-
-OnReset:
-	stopnpctimer;
-	stopnpctimer "KvM03_BG_Out";
-	set .Croix_Count, 0;
-	set .Guillaume_Count, 0;
-	set .Croix_Score, 0;
-	set .Guillaume_Score, 0;
-	set $@KvM03BG_Victory, 0;
-	if( $@KvM03BG_id1 ) { bg_destroy $@KvM03BG_id1; set $@KvM03BG_id1, 0; }
-	if( $@KvM03BG_id2 ) { bg_destroy $@KvM03BG_id2; set $@KvM03BG_id2, 0; }
-	disablenpc "TherapistKvM03a";
-	disablenpc "TherapistKvM03b";
-	disablenpc "VintenarKvM03a";
-	disablenpc "VintenarKvM03b";
-	sleep 1000;
-	mapwarp "bat_c03","bat_room",155,150;
-	sleep 2000;
-	maprespawnguildid "bat_c03",0,3; // Just in case someone else
-	bg_updatescore "bat_c03",0,0;
-	sleep 2000;
-	set $@KvM03BG, 0;
-	donpcevent "KvM03_BG::OnReadyCheck"; // Maybe a game is ready to start
-	end;
-}
-
--	script	KvM03_BG_Out	-1,{
-	end;
-
-OnBegin:
-	initnpctimer;
-	end;
-
-OnTimer3000:
-	mapannounce "bat_c03","Battle of Kreiger Von Midgard will close in 1 minute!",1,0xC0C0C0;
-	end;
-OnTimer30000:
-	mapannounce "bat_c03","Battle of Kreiger Von Midgard will close in 30 seconds!",1,0xC0C0C0;
-	end;
-OnTimer50000:
-	mapannounce "bat_c03","Battle of Kreiger Von Midgard will close in 10 seconds!",1,0xC0C0C0;
-	end;
-OnTimer60000:
-	donpcevent "KvM03_BG::OnReset";
-	end;
-}
-
-// Battleground Therapist
-// *********************************************************************
-
-bat_c03,51,130,5	script	Therapist in battle::TherapistKvM03a	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_c03,148,53,1	script	Therapist in battle::TherapistKvM03b	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 rewards
-// *********************************************************************
-
-bat_c03,51,130,5	script	Guillaume Vintenar::VintenarKvM03a	419,{
-	if( $@KvM03BG_Victory )
-	{
-		if( $@KvM03BG_Victory == 3 )
-		{
-			setquest 6025;
-			bg_leave;
-			warp "bat_room",155,150;
-			end;
-		}
-		else if( $@KvM03BG_Victory == Bat_Team )
-		{ // Victory
-			set .@Reward, 1;
-			mes "[Swandery]";
-			mes "Blessed Guillaume!!";
-			mes "Let's enjoy our glorious victory!";
-			mes "" + strcharinfo(0) + ", its a sign reflecting victory";
-			close2;
-		}
-		else
-		{ // 
-			set .@Reward, 0;
-			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;
-		}
-
-		setquest 6025;
-		getitem 7773, .@Reward;
-		bg_leave;
-		warp "bat_room",155,150;
-		end;
-	}
-	end;
-}
-
-bat_c03,148,53,1	script	Croix Vintenar::VintenarKvM03b	415,{
-	if( $@KvM03BG_Victory )
-	{
-		if( $@KvM03BG_Victory == 3 )
-		{
-			setquest 6025;
-			bg_leave;
-			warp "bat_room",155,150;
-			end;
-		}
-		else if( $@KvM03BG_Victory == Bat_Team )
-		{ // Victory
-			set .@Reward, 1;
-			mes "[Swandery]";
-			mes "Blessed Croax!!";
-			mes "Let's enjoy our glorious victory!";
-			mes "" + strcharinfo(0) + ", its a sign reflecting victory";
-			close2;
-		}
-		else
-		{ // 
-			set .@Reward, 0;
-			mes "[Swandery]";
-			mes "Oh, " + strcharinfo(0) + ". Don't be sad.";
-			mes "Even though we didn't win, we did our best.";
-			mes "Please don't forget this battle. We can win the next.";
-			close2;
-		}
-
-		setquest 6025;
-		getitem 7773, .@Reward;
-		bg_leave;
-		warp "bat_room",155,150;
-		end;
-	}
-	end;
-}
-
-// MapFlags
-// *********************************************************************
-
-bat_c03	mapflag	battleground	2
-bat_c03	mapflag	nomemo
-bat_c03	mapflag	nosave	SavePoint
-bat_c03	mapflag	noteleport
-bat_c03	mapflag	nowarp
-bat_c03	mapflag	nowarpto
-bat_c03	mapflag	noreturn
-bat_c03	mapflag	nobranch
-bat_c03	mapflag	nopenalty

+ 2 - 2
npc/battleground/bg_tierra_01.txt

@@ -5,7 +5,7 @@
 // Registration NPC's
 // *********************************************************************
 
-bat_room,85,227,4	script	Registration::TV1R_Guillaume	418,{
+bat_room,58,227,4	script	Registration::TV1R_Guillaume	418,{
 	end;
 OnInit:
 	waitingroom "Battle Station 10 Players",10,"Tierra_BG1::OnGuillaumeJoin",1;
@@ -15,7 +15,7 @@ OnEnterBG:
 	end;
 }
 
-bat_room,85,204,0	script	Registration::TV1R_Croix	414,{
+bat_room,58,204,0	script	Registration::TV1R_Croix	414,{
 	end;
 OnInit:
 	waitingroom "Battle Station 10 Players",10,"Tierra_BG1::OnCroixJoin",1;

+ 2 - 2
npc/battleground/bg_tierra_02.txt

@@ -5,7 +5,7 @@
 // Registration NPC's
 // *********************************************************************
 
-bat_room,85,97,4	script	Registration::TV2R_Guillaume	418,{
+bat_room,114,227,4	script	Registration::TV2R_Guillaume	418,{
 	end;
 OnInit:
 	waitingroom "Battle Station 10 Players",10,"Tierra_BG2::OnGuillaumeJoin",1;
@@ -15,7 +15,7 @@ OnEnterBG:
 	end;
 }
 
-bat_room,85,74,0	script	Registration::TV2R_Croix	414,{
+bat_room,114,204,0	script	Registration::TV2R_Croix	414,{
 	end;
 OnInit:
 	waitingroom "Battle Station 10 Players",10,"Tierra_BG2::OnCroixJoin",1;

+ 435 - 0
npc/battleground/kvm/kvm01.txt

@@ -0,0 +1,435 @@
+//===== eAthena Script ======================================= 
+// BattleGround System - KvM 80-99
+//===== By: ================================================== 
+//= ???, L0ne_W0lf
+//===== Current Version: ===================================== 
+//= 1.1
+//===== Compatible With: ===================================== 
+//= eAthena 1.0
+//===== Description: ========================================= 
+//= [AEGIS Conversion]
+//= Kreiger Von Midgard Battleground for levels 80 to 99
+//= - Winning Team: 5 points
+//= - Losing Team: 1 point
+//===== Additional Comments: ================================= 
+//= 1.0 First Version.
+//= 1.1 Updated using official Aegis files. [L0ne_W0lf]
+//============================================================
+
+// Waiting Room NPCs
+//============================================================
+bat_room,169,226,5	script	KVM Waiting Room#a::KvM01R_Guillaume	418,{
+	end;
+
+OnInit:
+	waitingroom "Battle Station 5 Players",5,"KvM01_BG::OnGuillaumeJoin",1;
+	end;
+	
+OnEnterBG:
+	set $@KvM01BG_id1, waitingroom2bg("bat_c01",52,129,"KvM01_BG::OnGuillaumeQuit","KvM01_BG::OnGuillaumeDie");
+	end;
+}
+
+bat_room,169,220,0	warp	#kvm801	2,2,bat_room,154,150
+
+bat_room,169,205,3	script	KVM Waiting Room#b::KvM01R_Croix	414,{
+	end;
+
+OnInit:
+	waitingroom "Battle Station 5 Players",5,"KvM01_BG::OnCroixJoin",1;
+	end;
+
+OnEnterBG:
+	set $@KvM01BG_id2, waitingroom2bg("bat_c01",147,55,"KvM01_BG::OnCroixQuit","KvM01_BG::OnCroixDie");
+	end;
+}
+
+bat_room,169,211,0	warp	#kvm802	2,2,bat_room,154,150
+
+// Starting Line
+//============================================================
+-	script	KVM01::CellEffect	-1,{
+	end;
+
+OnKvM01One: 
+	misceffect EF_CHANGECOLD;
+	end;
+
+OnKvM01Two: 
+	misceffect EF_CHANGEPOISON;
+	end;
+}
+
+bat_c01,54,124,3	duplicate(CellEffect)	#RedcellA1-1	111
+bat_c01,55,124,3	duplicate(CellEffect)	#RedcellA2-1	111
+bat_c01,56,124,3	duplicate(CellEffect)	#RedcellA3-1	111
+bat_c01,57,124,3	duplicate(CellEffect)	#RedcellA4-1	111
+bat_c01,57,125,3	duplicate(CellEffect)	#RedcellA5-1	111
+bat_c01,57,126,3	duplicate(CellEffect)	#RedcellA6-1	111
+bat_c01,57,127,3	duplicate(CellEffect)	#RedcellA7-1	111
+
+bat_c01,145,59,3	duplicate(CellEffect)	#RedcellB1-1	111
+bat_c01,144,59,3	duplicate(CellEffect)	#RedcellB2-1	111
+bat_c01,143,59,3	duplicate(CellEffect)	#RedcellB3-1	111
+bat_c01,142,59,3	duplicate(CellEffect)	#RedcellB4-1	111
+bat_c01,142,56,3	duplicate(CellEffect)	#RedcellB5-1	111
+bat_c01,142,57,3	duplicate(CellEffect)	#RedcellB6-1	111
+bat_c01,142,58,3	duplicate(CellEffect)	#RedcellB7-1	111
+
+bat_c01,54,128,3	script	#A_camp_start01	111,4,4,{
+	end;
+
+OnInit:
+	disablenpc "#A_camp_start01";
+	end;
+
+OnEnable:
+	enablenpc "#A_camp_start01";
+	end;
+
+OnDisable:
+	disablenpc "#A_camp_start01";
+	end;
+
+OnTouch:
+	set Bat_Team,1;
+	setquest 6025;
+	end;
+}
+
+bat_c01,146,56,3	script	#B_camp_start01	111,4,4,{
+	end;
+
+OnInit:
+	disablenpc "#B_camp_start01";
+	end;
+
+OnEnable:
+	enablenpc "#B_camp_start01";
+	end;
+
+OnDisable:
+	disablenpc "#B_camp_start01";
+	end;
+
+OnTouch:
+	set Bat_Team,2;
+	setquest 6025;
+	end;
+}
+
+// Battleground Engine
+//============================================================
+-	script	KvM01_BG	-1,{
+	end;
+
+OnInit:
+	setwall "bat_c01",54,122,6,7,0,"batc01wall_a";
+	setwall "bat_c01",55,122,5,7,0,"batc01wall_b";
+	setwall "bat_c01",140,56,6,7,0,"batc01wall_c";
+	setwall "bat_c01",140,57,5,7,0,"batc01wall_d";
+	disablenpc "KVM Officer#KVM01A";
+	disablenpc "KVM Officer#KVM01B";
+	end;
+
+OnGuillaumeJoin:
+OnCroixJoin:
+	donpcevent "KvM01_BG::OnReadyCheck";
+	end;
+
+OnGuillaumeQuit:
+	//set BG_Delay_Tick, gettimetick(2) + 1200;
+OnGuillaumeDie:
+	if( $@KvM01BG == 2 )
+	{
+		set .Guillaume_Count, .Guillaume_Count - 1;
+		set .Croix_Score, .Croix_Score + 1;
+		bg_updatescore "bat_c01",.Guillaume_Score,.Croix_Score;
+		if( .Guillaume_Count < 1 ) donpcevent "KvM01_BG::OnCroixWin";
+	}
+	end;
+
+OnCroixQuit:
+	//set BG_Delay_Tick, gettimetick(2) + 1200;
+OnCroixDie:
+	if( $@KvM01BG == 2 )
+	{
+		set .Croix_Count, .Croix_Count - 1;
+		set .Guillaume_Score, .Guillaume_Score + 1;
+		bg_updatescore "bat_c01",.Guillaume_Score,.Croix_Score;
+		if( .Croix_Count < 1 ) donpcevent "KvM01_BG::OnGuillaumeWin";
+	}
+	end;
+
+OnReadyCheck:
+	if( $@KvM01BG )
+		end;
+	set .@Guillaume, getwaitingroomstate(0,"KvM01R_Guillaume");
+	set .@Croix, getwaitingroomstate(0,"KvM01R_Croix");
+
+	if( .@Guillaume < 5 || .@Croix < 5 )
+		end;
+
+	set $@KvM01BG, 1; // Starting
+	donpcevent "KvM01R_Croix::OnEnterBG";
+	donpcevent "KvM01R_Guillaume::OnEnterBG";
+	donpcevent "KvM01_BG::OnStart";
+	end;
+
+OnStart:
+	disablenpc "KVM Officer#KVM01A";
+	disablenpc "KVM Officer#KVM01B";
+	set $@KvM01BG_Victory, 0;
+	// Warp Teams
+	bg_warp $@KvM01BG_id1,"bat_c01",53,128;
+	bg_warp $@KvM01BG_id2,"bat_c01",146,55;
+	// ScoreBoard
+	set .Guillaume_Score, 0;
+	set .Croix_Score, 0;
+	initnpctimer;
+	end;
+
+OnTimer1000:
+	mapannounce "bat_c01", "In 1 minute, KVM will start.",bc_map,"0x00ff00";
+	end;
+
+OnTimer3000:
+	mapannounce "bat_c01", "The maximum time for a KVM battle is 5 minutes.",bc_map,"0x00ff00";
+	end;
+
+OnTimer6000:
+	mapannounce "bat_c01", "Please prepare for the KVM battle.",bc_map,"0x00ff00";
+	mapannounce "bat_c01", "You can buff your people.",bc_map,"0x00ff00";
+	donpcevent "#A_camp_start01::OnEnable";
+	donpcevent "#B_camp_start01::OnEnable";
+	end;
+
+OnTimer13000:
+	donpcevent "#A_camp_start01::OnDisable";
+	donpcevent "#B_camp_start01::OnDisable";
+	end;
+
+OnTimer30000:
+	mapannounce "bat_c01", "30 seconds remaining to start KVM battle.",bc_map,"0x00ff00";
+	end;
+
+OnTimer45000:
+	mapannounce "bat_c01", "15 seconds remaining to start KVM battle.",bc_map,"0x00ff00";
+	donpcevent "::OnKvM01One";
+	end;
+
+OnTimer50000:
+	mapannounce "bat_c01", "10 seconds remaining to start KVM battle.",bc_map,"0x00ff00";
+	donpcevent "::OnKvM01Two";
+	end;
+
+OnTimer55000:
+	mapannounce "bat_c01", "5 seconds remaining to start KVM battle.",bc_map,"0x00ff00";
+	donpcevent "::OnKvM01One";
+	end;
+
+OnTimer59000:
+	mapannounce "bat_c01", "KVM is now commencing.",bc_map,"0x00ff00";
+	donpcevent "::OnKvM01Two";
+	end;
+
+OnTimer61000:
+	// Team Members
+	set .Guillaume_Count, bg_get_data($@KvM01BG_id1, 0);
+	set .Croix_Count, bg_get_data($@KvM01BG_id2, 0);
+	if( .Guillaume_Count < 5 || .Croix_Count < 5 )
+	{
+		set $@KvM01BG_Victory, 3;
+		set $@KvM01BG, 3;
+		mapannounce "bat_c01","There are not enough players to start the battle",1,0x696969;
+		stopnpctimer;
+		donpcevent "KvM01_BG::OnStop";
+		end;
+	}
+	set $@KvM01BG, 2; // Playing
+	areapercentheal "bat_c01",50,123,58,131,100,100;
+	bg_warp $@KvM01BG_id1,"bat_c01",61,120;
+	areapercentheal "bat_c01",141,52,149,60,100,100;
+	bg_warp $@KvM01BG_id2,"bat_c01",138,63;
+	end;
+
+OnTimer300000:
+	mapannounce "bat_c01", "KVM will be ending in 1 minute.",bc_map,"0x00ff00";
+	end;
+
+OnTimer330000:
+	mapannounce "bat_c01", "KVM will be ending in 30 seconds.",bc_map,"0x00ff00";
+	end;
+
+OnTimer345000:
+	mapannounce "bat_c01", "KVM will be ending in 15 seconds.",bc_map,"0x00ff00";
+	end;
+
+OnTimer350000:
+	mapannounce "bat_c01", "KVM will be ending in 10 seconds.",bc_map,"0x00ff00";
+	end;
+
+OnTimer355000:
+	mapannounce "bat_c01", "KVM will be ending in 5 seconds.",bc_map,"0x00ff00";
+	end;
+
+OnTimer360000:
+	mapannounce "bat_c01", "KVM has ended.",bc_map,"0x00ff00";
+	if( .Croix_Count > .Guillaume_Count )
+		donpcevent "KvM01_BG::OnCroixWin";
+	else if( .Croix_Count < .Guillaume_Count )
+		donpcevent "KvM01_BG::OnGuillaumeWin";
+	else
+	{ // Draw Game
+		set $@KvM01BG, 3;
+		set $@KvM01BG_Victory, 3;
+		mapannounce "bat_c01", "Number of Guillaume survivors "+.Guillaume_Count+".",bc_map,"0x00ff00";
+		mapannounce "bat_c01", "Number of Croix survivors "+.Croix_Count+".",bc_map,"0x00ff00";
+		mapannounce "bat_c01", "Regardless of the outcome of the two camps.",bc_map,"0x00ff00";
+		donpcevent "KvM01_BG::OnStop";
+	}
+	end;
+
+OnGuillaumeWin:
+	set $@KvM01BG, 3;
+	set $@KvM01BG_Victory, 1;
+	mapannounce "bat_c01", "Guillaume camp victory.",bc_map,"0x00ff00";
+	mapannounce "bat_c01", "Congratulations to all Guillaume members.",bc_map,"0x00ff00";
+	mapannounce "bat_c01", "All personnel move to the starting zone.",bc_map,"0x00ff00";
+	donpcevent "KvM01_BG::OnStop";
+	end;
+
+OnCroixWin:
+	set $@KvM01BG, 3;
+	set $@KvM01BG_Victory, 2;
+	mapannounce "bat_c01", "Croix camp victory.",bc_map,"0x00ff00";
+	mapannounce "bat_c01", "Congratulations to all Croix members.",bc_map,"0x00ff00";
+	mapannounce "bat_c01", "All personnel move to the starting zone.",bc_map,"0x00ff00";
+	donpcevent "KvM01_BG::OnStop";
+	end;
+
+OnStop:
+	stopnpctimer;
+	enablenpc "KVM Officer#KVM01A";
+	enablenpc "KVM Officer#KVM01B";
+	// Warp Teams
+	bg_warp $@KvM01BG_id1,"bat_c01",53,128;
+	bg_warp $@KvM01BG_id2,"bat_c01",146,55;
+	donpcevent "KvM01_BG_Out::OnBegin";
+	end;
+
+OnReset:
+	set .Croix_Count, 0;
+	set .Guillaume_Count, 0;
+	set .Croix_Score, 0;
+	set .Guillaume_Score, 0;
+	set $@KvM01BG_Victory, 0;
+	if( $@KvM01BG_id1 ) { bg_destroy $@KvM01BG_id1; set $@KvM01BG_id1, 0; }
+	if( $@KvM01BG_id2 ) { bg_destroy $@KvM01BG_id2; set $@KvM01BG_id2, 0; }
+	disablenpc "KVM Officer#KVM01A";
+	disablenpc "KVM Officer#KVM01B";
+	mapwarp "bat_c01","bat_room",154,150;
+	maprespawnguildid "bat_c01",0,3; // Just in case someone else
+	bg_updatescore "bat_c01",0,0;
+	set $@KvM01BG, 0;
+	donpcevent "KvM01_BG::OnReadyCheck"; // Maybe a game is ready to start
+	end;
+}
+
+-	script	KvM01_BG_Out	-1,{
+	end;
+
+OnBegin:
+	initnpctimer;
+	end;
+
+OnTimer1000:
+	mapannounce "bat_c01", "Please apply with the Officer to acquire KVM points.",bc_map,"0x00ff00";
+	end;
+
+OnTimer3000:
+	mapannounce "bat_c01", "The Officer will grant you the points for 30 seconds.",bc_map,"0x00ff00";
+	mapannounce "bat_c01", "In 30 seconds, the Officer will be sent away.",bc_map,"0x00ff00";
+	end;
+
+OnTimer5000:
+	mapannounce "bat_c01", "If you do not claim your points now, you will not be able to.",bc_map,"0x00ff00";
+	mapannounce "bat_c01", "Please make sure to collect before the time expires.",bc_map,"0x00ff00";
+	end;
+
+OnTimer60000:
+	stopnpctimer;
+	donpcevent "KvM01_BG::OnReset";
+	end;
+}
+
+// Battleground rewards
+//============================================================
+bat_c01,51,130,5	script	KVM Officer#KVM01A	419,{
+	if( $@KvM01BG_Victory )
+	{
+		if( $@KvM01BG_Victory == Bat_Team )
+		{ // Victory
+			set kvm_point,kvm_point + 5;
+			mes "[Swandery]";
+			mes "Blessed Guillaume!!";
+			mes "Let's enjoy our glorious victory!";
+			mes "" + strcharinfo(0) + ", its a sign reflecting victory";
+			close2;
+		}
+		else
+		{ // 
+			set kvm_point,kvm_point + 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;
+		}
+		bg_leave;
+		warp "bat_room",154,150;
+		end;
+	}
+	end;
+}
+
+bat_c01,148,53,1	script	KVM Officer#KVM01B	415,{
+	if( $@KvM01BG_Victory )
+	{
+		if( $@KvM01BG_Victory == Bat_Team )
+		{ // Victory
+			set kvm_point,kvm_point + 5;
+			mes "[Swandery]";
+			mes "Blessed Croax!!";
+			mes "Let's enjoy our glorious victory!";
+			mes "" + strcharinfo(0) + ", its a sign reflecting victory";
+			close2;
+		}
+		else
+		{ // 
+			set kvm_point,kvm_point + 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;
+		}
+		bg_leave;
+		warp "bat_room",154,150;
+		end;
+	}
+	end;
+}
+
+// MapFlags
+//============================================================
+
+bat_c01	mapflag	battleground	2
+bat_c01	mapflag	nomemo
+bat_c01	mapflag	nosave	SavePoint
+bat_c01	mapflag	noteleport
+bat_c01	mapflag	nowarp
+bat_c01	mapflag	nowarpto
+bat_c01	mapflag	noreturn
+bat_c01	mapflag	nobranch
+bat_c01	mapflag	nopenalty

+ 432 - 0
npc/battleground/kvm/kvm02.txt

@@ -0,0 +1,432 @@
+//===== eAthena Script ======================================= 
+// BattleGround System - KvM 1-59
+//===== By: ================================================== 
+//= ???, L0ne_W0lf
+//===== Current Version: ===================================== 
+//= 1.1
+//===== Compatible With: ===================================== 
+//= eAthena 1.0
+//===== Description: ========================================= 
+//= [AEGIS Conversion]
+//= Kreiger Von Midgard Battleground for levels 1 to 59
+//= - Winning Team: 1 point
+//= - Losing Team: 0 points
+//===== Additional Comments: ================================= 
+//= 1.0 First Version.
+//= 1.1 Updated using official Aegis files. [L0ne_W0lf]
+//============================================================
+
+// Waiting Room NPCs
+//============================================================
+bat_room,197,226,5	script	KVM Waiting Room#a2::KvM02R_Guillaume	418,{
+	end;
+
+OnInit:
+	waitingroom "Battle Station 5 Players",5,"KvM02_BG::OnGuillaumeJoin",1;
+	end;
+	
+OnEnterBG:
+	set $@KvM02BG_id1, waitingroom2bg("bat_c02",52,129,"KvM02_BG::OnGuillaumeQuit","KvM02_BG::OnGuillaumeDie");
+	end;
+}
+
+bat_room,197,220,0	warp	#kvm601	2,2,bat_room,154,150
+
+bat_room,197,205,3	script	KVM Waiting Room#b2::KvM02R_Croix	414,{
+	end;
+
+OnInit:
+	waitingroom "Battle Station 5 Players",5,"KvM02_BG::OnCroixJoin",1;
+	end;
+
+OnEnterBG:
+	set $@KvM02BG_id2, waitingroom2bg("bat_c02",147,55,"KvM02_BG::OnCroixQuit","KvM02_BG::OnCroixDie");
+	end;
+}
+
+bat_room,197,211,0	warp	#kvm602	2,2,bat_room,154,150
+
+// Starting Line
+//============================================================
+-	script	KVM02::CellEffect2	-1,{
+	end;
+
+OnKvM02One: 
+	misceffect EF_CHANGECOLD;
+	end;
+
+OnKvM02Two: 
+	misceffect EF_CHANGEPOISON;
+	end;
+}
+
+bat_c02,54,124,3	duplicate(CellEffect2)	#RedcellA1-2	111
+bat_c02,55,124,3	duplicate(CellEffect2)	#RedcellA2-2	111
+bat_c02,56,124,3	duplicate(CellEffect2)	#RedcellA3-2	111
+bat_c02,57,124,3	duplicate(CellEffect2)	#RedcellA4-2	111
+bat_c02,57,125,3	duplicate(CellEffect2)	#RedcellA5-2	111
+bat_c02,57,126,3	duplicate(CellEffect2)	#RedcellA6-2	111
+bat_c02,57,127,3	duplicate(CellEffect2)	#RedcellA7-2	111
+
+bat_c02,145,59,3	duplicate(CellEffect2)	#RedcellB1-2	111
+bat_c02,144,59,3	duplicate(CellEffect2)	#RedcellB2-2	111
+bat_c02,143,59,3	duplicate(CellEffect2)	#RedcellB3-2	111
+bat_c02,142,59,3	duplicate(CellEffect2)	#RedcellB4-2	111
+bat_c02,142,56,3	duplicate(CellEffect2)	#RedcellB5-2	111
+bat_c02,142,57,3	duplicate(CellEffect2)	#RedcellB6-2	111
+bat_c02,142,58,3	duplicate(CellEffect2)	#RedcellB7-2	111
+
+bat_c02,54,128,3	script	#A_camp_start02	111,4,4,{
+	end;
+
+OnInit:
+	disablenpc "#A_camp_start02";
+	end;
+
+OnEnable:
+	enablenpc "#A_camp_start02";
+	end;
+
+OnDisable:
+	disablenpc "#A_camp_start03";
+	end;
+
+OnTouch:
+	set Bat_Team,1;
+	setquest 6025;
+	end;
+}
+
+bat_c02,146,56,3	script	#B_camp_start02	111,4,4,{
+	end;
+
+OnInit:
+	disablenpc "#B_camp_start02";
+	end;
+
+OnEnable:
+	enablenpc "#B_camp_start02";
+	end;
+
+OnDisable:
+	disablenpc "#B_camp_start02";
+	end;
+
+OnTouch:
+	set Bat_Team,2;
+	setquest 6025;
+	end;
+}
+
+// Battleground Engine
+//============================================================
+-	script	KvM02_BG	-1,{
+	end;
+
+OnInit:
+	setwall "bat_c02",54,122,6,7,0,"batc02wall_a";
+	setwall "bat_c02",55,122,5,7,0,"batc02wall_b";
+	setwall "bat_c02",140,56,6,7,0,"batc02wall_c";
+	setwall "bat_c02",140,57,5,7,0,"batc02wall_d";
+	disablenpc "VintenarKvM02a";
+	disablenpc "VintenarKvM02b";
+	end;
+
+OnGuillaumeJoin:
+OnCroixJoin:
+	donpcevent "KvM02_BG::OnReadyCheck";
+	end;
+
+OnGuillaumeQuit:
+	//set BG_Delay_Tick, gettimetick(2) + 1200;
+OnGuillaumeDie:
+	if( $@KvM02BG == 2 )
+	{
+		set .Guillaume_Count, .Guillaume_Count - 1;
+		set .Croix_Score, .Croix_Score + 1;
+		bg_updatescore "bat_c02",.Guillaume_Score,.Croix_Score;
+		if( .Guillaume_Count < 1 ) donpcevent "KvM02_BG::OnCroixWin";
+	}
+	end;
+
+OnCroixQuit:
+	//set BG_Delay_Tick, gettimetick(2) + 1200;
+OnCroixDie:
+	if( $@KvM02BG == 2 )
+	{
+		set .Croix_Count, .Croix_Count - 1;
+		set .Guillaume_Score, .Guillaume_Score + 1;
+		bg_updatescore "bat_c02",.Guillaume_Score,.Croix_Score;
+		if( .Croix_Count < 1 ) donpcevent "KvM02_BG::OnGuillaumeWin";
+	}
+	end;
+
+OnReadyCheck:
+	if( $@KvM02BG )
+		end;
+	set .@Guillaume, getwaitingroomstate(0,"KvM02R_Guillaume");
+	set .@Croix, getwaitingroomstate(0,"KvM02R_Croix");
+
+	if( .@Guillaume < 5 || .@Croix < 5 )
+		end;
+
+	set $@KvM02BG, 1; // Starting
+	donpcevent "KvM02R_Croix::OnEnterBG";
+	donpcevent "KvM02R_Guillaume::OnEnterBG";
+	donpcevent "KvM02_BG::OnStart";
+	end;
+
+OnStart:
+	disablenpc "VintenarKvM02a";
+	disablenpc "VintenarKvM02b";
+	set $@KvM02BG_Victory, 0;
+	// Warp Teams
+	bg_warp $@KvM02BG_id1,"bat_c02",53,128;
+	bg_warp $@KvM02BG_id2,"bat_c02",146,55;
+	// ScoreBoard
+	set .Guillaume_Score, 0;
+	set .Croix_Score, 0;
+	initnpctimer;
+	end;
+
+OnTimer1000:
+	mapannounce "bat_c02", "In 1 minute, KVM will start.",bc_map,"0x00ff00";
+	end;
+
+OnTimer3000:
+	mapannounce "bat_c02", "The maximum time for a KVM battle is 5 minutes.",bc_map,"0x00ff00";
+	end;
+
+OnTimer6000:
+	mapannounce "bat_c02", "Please prepare for the KVM battle.",bc_map,"0x00ff00";
+	mapannounce "bat_c02", "You can buff your people.",bc_map,"0x00ff00";
+	donpcevent "#A_camp_start02::OnEnable";
+	donpcevent "#B_camp_start02::OnEnable";
+	end;
+
+OnTimer13000:
+	donpcevent "#A_camp_start02::OnDisable";
+	donpcevent "#B_camp_start02::OnDisable";
+	end;
+
+OnTimer30000:
+	mapannounce "bat_c02", "30 seconds remaining to start KVM battle.",bc_map,"0x00ff00";
+	end;
+
+OnTimer45000:
+	mapannounce "bat_c02", "15 seconds remaining to start KVM battle.",bc_map,"0x00ff00";
+	donpcevent "::OnKvM01One";
+	end;
+
+OnTimer50000:
+	mapannounce "bat_c02", "10 seconds remaining to start KVM battle.",bc_map,"0x00ff00";
+	donpcevent "::OnKvM01Two";
+	end;
+
+OnTimer55000:
+	mapannounce "bat_c02", "5 seconds remaining to start KVM battle.",bc_map,"0x00ff00";
+	donpcevent "::OnKvM01One";
+	end;
+
+OnTimer59000:
+	mapannounce "bat_c02", "KVM is now commencing.",bc_map,"0x00ff00";
+	donpcevent "::OnKvM01Two";
+	end;
+
+OnTimer61000:
+	// Team Members
+	set .Guillaume_Count, bg_get_data($@KvM02BG_id1, 0);
+	set .Croix_Count, bg_get_data($@KvM02BG_id2, 0);
+	if( .Guillaume_Count < 5 || .Croix_Count < 5 )
+	{
+		set $@KvM02BG_Victory, 3;
+		set $@KvM02BG, 3;
+		mapannounce "bat_c02","There are not enough players to start the battle",1,0x808080;
+		stopnpctimer;
+		donpcevent "KvM02_BG::OnStop";
+		end;
+	}
+	set $@KvM02BG, 2; // Playing
+	areapercentheal "bat_c02",50,123,58,131,100,100;
+	bg_warp $@KvM02BG_id1,"bat_c02",62,119;
+	areapercentheal "bat_c02",141,52,149,60,100,100;
+	bg_warp $@KvM02BG_id2,"bat_c02",137,64;
+	end;
+
+OnTimer300000:
+	mapannounce "bat_c02", "KVM will be ending in 1 minute.",bc_map,"0x00ff00";
+	end;
+
+OnTimer330000:
+	mapannounce "bat_c02", "KVM will be ending in 30 seconds.",bc_map,"0x00ff00";
+	end;
+
+OnTimer345000:
+	mapannounce "bat_c02", "KVM will be ending in 15 seconds.",bc_map,"0x00ff00";
+	end;
+
+OnTimer350000:
+	mapannounce "bat_c02", "KVM will be ending in 10 seconds.",bc_map,"0x00ff00";
+	end;
+
+OnTimer355000:
+	mapannounce "bat_c02", "KVM will be ending in 5 seconds.",bc_map,"0x00ff00";
+	end;
+
+OnTimer360000:
+	mapannounce "bat_c02", "KVM has ended.",bc_map,"0x00ff00";
+	if( .Croix_Count > .Guillaume_Count )
+		donpcevent "KvM02_BG::OnCroixWin";
+	else if( .Croix_Count < .Guillaume_Count )
+		donpcevent "KvM02_BG::OnGuillaumeWin";
+	else
+	{ // Draw Game
+		set $@KvM02BG, 3;
+		set $@KvM02BG_Victory, 3;
+		mapannounce "bat_c02", "Number of Guillaume survivors "+.Guillaume_Count+".",bc_map,"0x00ff00";
+		mapannounce "bat_c02", "Number of Croix survivors "+.Croix_Count+".",bc_map,"0x00ff00";
+		mapannounce "bat_c02", "Regardless of the outcome of the two camps.",bc_map,"0x00ff00";
+		donpcevent "KvM02_BG::OnStop";
+	}
+	end;
+
+OnGuillaumeWin:
+	set $@KvM02BG, 3;
+	set $@KvM02BG_Victory, 1;
+	mapannounce "bat_c02", "Guillaume camp victory.",bc_map,"0x00ff00";
+	mapannounce "bat_c02", "Congratulations to all Guillaume members.",bc_map,"0x00ff00";
+	mapannounce "bat_c02", "All personnel move to the starting zone.",bc_map,"0x00ff00";
+	donpcevent "KvM02_BG::OnStop";
+	end;
+
+OnCroixWin:
+	set $@KvM02BG, 3;
+	set $@KvM02BG_Victory, 2;
+	mapannounce "bat_c02", "Croix camp victory.",bc_map,"0x00ff00";
+	mapannounce "bat_c02", "Congratulations to all Croix members.",bc_map,"0x00ff00";
+	mapannounce "bat_c02", "All personnel move to the starting zone.",bc_map,"0x00ff00";
+	donpcevent "KvM02_BG::OnStop";
+	end;
+
+OnStop:
+	stopnpctimer;
+	enablenpc "VintenarKvM02a";
+	enablenpc "VintenarKvM02b";
+	// Warp Teams
+	bg_warp $@KvM02BG_id1,"bat_c02",53,128;
+	bg_warp $@KvM02BG_id2,"bat_c02",146,55;
+	donpcevent "KvM02_BG_Out::OnBegin";
+	end;
+
+OnReset:
+	set .Croix_Count, 0;
+	set .Guillaume_Count, 0;
+	set .Croix_Score, 0;
+	set .Guillaume_Score, 0;
+	set $@KvM02BG_Victory, 0;
+	if( $@KvM02BG_id1 ) { bg_destroy $@KvM02BG_id1; set $@KvM02BG_id1, 0; }
+	if( $@KvM02BG_id2 ) { bg_destroy $@KvM02BG_id2; set $@KvM02BG_id2, 0; }
+	disablenpc "KVM Officer#KVM02A";
+	disablenpc "KVM Officer#KVM02B";
+	mapwarp "bat_c02","bat_room",154,150;
+	maprespawnguildid "bat_c02",0,3; // Just in case someone else
+	bg_updatescore "bat_c02",0,0;
+	set $@KvM02BG, 0;
+	donpcevent "KvM02_BG::OnReadyCheck"; // Maybe a game is ready to start
+	end;
+}
+
+-	script	KvM02_BG_Out	-1,{
+	end;
+
+OnBegin:
+	initnpctimer;
+	end;
+
+OnTimer1000:
+	mapannounce "bat_c02", "Please apply with the Officer to acquire KVM points.",bc_map,"0x00ff00";
+	end;
+
+OnTimer3000:
+	mapannounce "bat_c02", "The Officer will grant you the points for 30 seconds.",bc_map,"0x00ff00";
+	mapannounce "bat_c02", "In 30 seconds, the Officer will be sent away.",bc_map,"0x00ff00";
+	end;
+
+OnTimer5000:
+	mapannounce "bat_c02", "If you do not claim your points now, you will not be able to.",bc_map,"0x00ff00";
+	mapannounce "bat_c02", "Please make sure to collect before the time expires.",bc_map,"0x00ff00";
+	end;
+
+OnTimer60000:
+	stopnpctimer;
+	donpcevent "KvM02_BG::OnReset";
+	end;
+}
+
+// Battleground rewards
+//============================================================
+bat_c02,51,130,5	script	KVM Officer#KVM02A	419,{
+	if( $@KvM01BG_Victory )
+	{
+		if( $@KvM02BG_Victory == Bat_Team )
+		{ // Victory
+			set kvm_point,kvm_point + 1;
+			mes "[Swandery]";
+			mes "Blessed Guillaume!!";
+			mes "Let's enjoy our glorious victory!";
+			mes "" + strcharinfo(0) + ", its a sign reflecting victory";
+			close2;
+		}
+		else
+		{ // 
+			mes "[Swandery]";
+			mes "You lost, but you're dedicated to this battle.";
+			close2;
+		}
+		bg_leave;
+		warp "bat_room",154,150;
+		end;
+	}
+	end;
+}
+
+bat_c02,148,53,1	script	KVM Officer#KVM02B	415,{
+	if( $@KvM01BG_Victory )
+	{
+		if( $@KvM02BG_Victory == Bat_Team )
+		{ // Victory
+			set kvm_point,kvm_point + 1;
+			mes "[Swandery]";
+			mes "Blessed Croax!!";
+			mes "Let's enjoy our glorious victory!";
+			mes "" + strcharinfo(0) + ", its a sign reflecting victory";
+			mes "Just take this defeat a lesson, and later you would definitely learn.";
+			close2;
+		}
+		else
+		{ // 
+			mes "[Swandery]";
+			mes "Oh, " + strcharinfo(0) + ". Don't be sad.";
+			mes "Even though we didn't win, we did our best.";
+			mes "Please don't forget this battle. We can win the next.";
+			close2;
+		}
+		bg_leave;
+		warp "bat_room",154,150;
+		end;
+	}
+	end;
+}
+
+// MapFlags
+//============================================================
+
+bat_c02	mapflag	battleground	2
+bat_c02	mapflag	nomemo
+bat_c02	mapflag	nosave	SavePoint
+bat_c02	mapflag	noteleport
+bat_c02	mapflag	nowarp
+bat_c02	mapflag	nowarpto
+bat_c02	mapflag	noreturn
+bat_c02	mapflag	nobranch
+bat_c02	mapflag	nopenalty

+ 434 - 0
npc/battleground/kvm/kvm03.txt

@@ -0,0 +1,434 @@
+//===== eAthena Script ======================================= 
+// BattleGround System - KvM 60-80
+//===== By: ================================================== 
+//= ???, L0ne_W0lf
+//===== Current Version: ===================================== 
+//= 1.1
+//===== Compatible With: ===================================== 
+//= eAthena 1.0
+//===== Description: ========================================= 
+//= [AEGIS Conversion]
+//= Kreiger Von Midgard Battleground for levels 60 to 80
+//= - Winning Team: 2 points
+//= - Losing Team: 1 point
+//===== Additional Comments: ================================= 
+//= 1.0 First Version.
+//= 1.1 Updated using official Aegis files. [L0ne_W0lf]
+//============================================================
+
+// Waiting Room NPCs
+//============================================================
+bat_room,225,226,5	script	KVM Waiting Room#a3::KvM03R_Guillaume	418,{
+	end;
+
+OnInit:
+	waitingroom "Battle Station 5 Players",5,"KvM03_BG::OnGuillaumeJoin",1;
+	end;
+	
+OnEnterBG:
+	set $@KvM03BG_id1, waitingroom2bg("bat_c03",52,129,"KvM03_BG::OnGuillaumeQuit","KvM03_BG::OnGuillaumeDie");
+	end;
+}
+
+bat_room,225,220,0	warp	#kvm701	2,2,bat_room,154,150
+
+bat_room,225,205,3	script	KVM Waiting Room#b3::KvM03R_Croix	414,{
+	end;
+
+OnInit:
+	waitingroom "Battle Station 5 Players",5,"KvM03_BG::OnCroixJoin",1;
+	end;
+
+OnEnterBG:
+	set $@KvM03BG_id2, waitingroom2bg("bat_c03",147,55,"KvM03_BG::OnCroixQuit","KvM03_BG::OnCroixDie");
+	end;
+}
+
+bat_room,225,211,0	warp	#kvm702	2,2,bat_room,154,150
+
+// Starting Line
+//============================================================
+-	script	KVM03::CellEffect3	-1,{
+	end;
+
+OnKvM03One: 
+	misceffect EF_CHANGECOLD;
+	end;
+
+OnKvM03Two: 
+	misceffect EF_CHANGEPOISON;
+	end;
+}
+
+bat_c03,54,124,3	duplicate(CellEffect3)	#RedcellA1-3	111
+bat_c03,55,124,3	duplicate(CellEffect3)	#RedcellA2-3	111
+bat_c03,56,124,3	duplicate(CellEffect3)	#RedcellA3-3	111
+bat_c03,57,124,3	duplicate(CellEffect3)	#RedcellA4-3	111
+bat_c03,57,125,3	duplicate(CellEffect3)	#RedcellA5-3	111
+bat_c03,57,126,3	duplicate(CellEffect3)	#RedcellA6-3	111
+bat_c03,57,127,3	duplicate(CellEffect3)	#RedcellA7-3	111
+
+bat_c03,145,59,3	duplicate(CellEffect3)	#RedcellB1-3	111
+bat_c03,144,59,3	duplicate(CellEffect3)	#RedcellB2-3	111
+bat_c03,143,59,3	duplicate(CellEffect3)	#RedcellB3-3	111
+bat_c03,142,59,3	duplicate(CellEffect3)	#RedcellB4-3	111
+bat_c03,142,56,3	duplicate(CellEffect3)	#RedcellB5-3	111
+bat_c03,142,57,3	duplicate(CellEffect3)	#RedcellB6-3	111
+bat_c03,142,58,3	duplicate(CellEffect3)	#RedcellB7-3	111
+
+bat_c03,54,128,3	script	#A_camp_start03	111,4,4,{
+	end;
+
+OnInit:
+	disablenpc "#A_camp_start03";
+	end;
+
+OnEnable:
+	enablenpc "#A_camp_start03";
+	end;
+
+OnDisable:
+	disablenpc "#A_camp_start03";
+	end;
+
+OnTouch:
+	set Bat_Team,1;
+	setquest 6025;
+	end;
+}
+
+bat_c03,146,56,3	script	#B_camp_start03	111,4,4,{
+	end;
+
+OnInit:
+	disablenpc "#B_camp_start03";
+	end;
+
+OnEnable:
+	enablenpc "#B_camp_start03";
+	end;
+
+OnDisable:
+	disablenpc "#B_camp_start03";
+	end;
+
+OnTouch:
+	set Bat_Team,2;
+	setquest 6025;
+	end;
+}
+
+// Battleground Engine
+//============================================================
+-	script	KvM03_BG	-1,{
+	end;
+
+OnInit:
+	setwall "bat_c03",54,122,6,7,0,"batc03wall_a";
+	setwall "bat_c03",55,122,5,7,0,"batc03wall_b";
+	setwall "bat_c03",140,56,6,7,0,"batc03wall_c";
+	setwall "bat_c03",140,57,5,7,0,"batc03wall_d";
+	disablenpc "VintenarKvM03a";
+	disablenpc "VintenarKvM03b";
+	end;
+
+OnGuillaumeJoin:
+OnCroixJoin:
+	donpcevent "KvM03_BG::OnReadyCheck";
+	end;
+
+OnGuillaumeQuit:
+	//set BG_Delay_Tick, gettimetick(2) + 1200;
+OnGuillaumeDie:
+	if( $@KvM03BG == 2 )
+	{
+		set .Guillaume_Count, .Guillaume_Count - 1;
+		set .Croix_Score, .Croix_Score + 1;
+		bg_updatescore "bat_c03",.Guillaume_Score,.Croix_Score;
+		if( .Guillaume_Count < 1 ) donpcevent "KvM03_BG::OnCroixWin";
+	}
+	end;
+
+OnCroixQuit:
+	//set BG_Delay_Tick, gettimetick(2) + 1200;
+OnCroixDie:
+	if( $@KvM03BG == 2 )
+	{
+		set .Croix_Count, .Croix_Count - 1;
+		set .Guillaume_Score, .Guillaume_Score + 1;
+		bg_updatescore "bat_c03",.Guillaume_Score,.Croix_Score;
+		if( .Croix_Count < 1 ) donpcevent "KvM03_BG::OnGuillaumeWin";
+	}
+	end;
+
+OnReadyCheck:
+	if( $@KvM03BG )
+		end;
+	set .@Guillaume, getwaitingroomstate(0,"KvM03R_Guillaume");
+	set .@Croix, getwaitingroomstate(0,"KvM03R_Croix");
+
+	if( .@Guillaume < 5 || .@Croix < 5 )
+		end;
+
+	set $@KvM03BG, 1; // Starting
+	donpcevent "KvM03R_Croix::OnEnterBG";
+	donpcevent "KvM03R_Guillaume::OnEnterBG";
+	donpcevent "KvM03_BG::OnStart";
+	end;
+
+OnStart:
+	disablenpc "KVM Officer#KVM03A";
+	disablenpc "KVM Officer#KVM03B";
+	set $@KvM01BG_Victory, 0;
+	// Warp Teams
+	bg_warp $@KvM03BG_id1,"bat_c03",53,128;
+	bg_warp $@KvM03BG_id2,"bat_c03",146,55;
+	// ScoreBoard
+	set .Guillaume_Score, 0;
+	set .Croix_Score, 0;
+	initnpctimer;
+	end;
+
+OnTimer1000:
+	mapannounce "bat_c03", "In 1 minute, KVM will start.",bc_map,"0x00ff00";
+	end;
+
+OnTimer3000:
+	mapannounce "bat_c03", "The maximum time for a KVM battle is 5 minutes.",bc_map,"0x00ff00";
+	end;
+
+OnTimer6000:
+	mapannounce "bat_c03", "Please prepare for the KVM battle.",bc_map,"0x00ff00";
+	mapannounce "bat_c03", "You can buff your people.",bc_map,"0x00ff00";
+	donpcevent "#A_camp_start03::OnEnable";
+	donpcevent "#B_camp_start03::OnEnable";
+	end;
+
+OnTimer13000:
+	donpcevent "#A_camp_start03::OnDisable";
+	donpcevent "#B_camp_start03::OnDisable";
+	end;
+
+OnTimer30000:
+	mapannounce "bat_c03", "30 seconds remaining to start KVM battle.",bc_map,"0x00ff00";
+	end;
+
+OnTimer45000:
+	mapannounce "bat_c03", "15 seconds remaining to start KVM battle.",bc_map,"0x00ff00";
+	donpcevent "::OnKvM01One";
+	end;
+
+OnTimer50000:
+	mapannounce "bat_c03", "10 seconds remaining to start KVM battle.",bc_map,"0x00ff00";
+	donpcevent "::OnKvM01Two";
+	end;
+
+OnTimer55000:
+	mapannounce "bat_c03", "5 seconds remaining to start KVM battle.",bc_map,"0x00ff00";
+	donpcevent "::OnKvM01One";
+	end;
+
+OnTimer59000:
+	mapannounce "bat_c03", "KVM is now commencing.",bc_map,"0x00ff00";
+	donpcevent "::OnKvM01Two";
+	end;
+
+OnTimer61000:
+	// Team Members
+	set .Guillaume_Count, bg_get_data($@KvM03BG_id1, 0);
+	set .Croix_Count, bg_get_data($@KvM03BG_id2, 0);
+	if( .Guillaume_Count < 5 || .Croix_Count < 5 )
+	{
+		set $@KvM03BG_Victory, 3;
+		set $@KvM03BG, 3;
+		mapannounce "bat_c03","There are not enough players to start the battle",1,0xC0C0C0;
+		stopnpctimer;
+		donpcevent "KvM03_BG::OnStop";
+		end;
+	}
+	set $@KvM03BG, 2; // Playing
+	areapercentheal "bat_c03",50,123,58,131,100,100;
+	bg_warp $@KvM03BG_id1,"bat_c03",62,119;
+	areapercentheal "bat_c03",141,52,149,60,100,100;
+	bg_warp $@KvM03BG_id2,"bat_c03",137,64;
+	end;
+
+OnTimer300000:
+	mapannounce "bat_c03", "KVM will be ending in 1 minute.",bc_map,"0x00ff00";
+	end;
+
+OnTimer330000:
+	mapannounce "bat_c03", "KVM will be ending in 30 seconds.",bc_map,"0x00ff00";
+	end;
+
+OnTimer345000:
+	mapannounce "bat_c03", "KVM will be ending in 15 seconds.",bc_map,"0x00ff00";
+	end;
+
+OnTimer350000:
+	mapannounce "bat_c03", "KVM will be ending in 10 seconds.",bc_map,"0x00ff00";
+	end;
+
+OnTimer355000:
+	mapannounce "bat_c03", "KVM will be ending in 5 seconds.",bc_map,"0x00ff00";
+	end;
+
+OnTimer360000:
+	mapannounce "bat_c03", "KVM has ended.",bc_map,"0x00ff00";
+	if( .Croix_Count > .Guillaume_Count )
+		donpcevent "KvM03_BG::OnCroixWin";
+	else if( .Croix_Count < .Guillaume_Count )
+		donpcevent "KvM03_BG::OnGuillaumeWin";
+	else
+	{ // Draw Game
+		set $@KvM03BG, 3;
+		set $@KvM03BG_Victory, 3;
+		mapannounce "bat_c03", "Number of Guillaume survivors "+.Guillaume_Count+".",bc_map,"0x00ff00";
+		mapannounce "bat_c03", "Number of Croix survivors "+.Croix_Count+".",bc_map,"0x00ff00";
+		mapannounce "bat_c03", "Regardless of the outcome of the two camps.",bc_map,"0x00ff00";
+		donpcevent "KvM03_BG::OnStop";
+	}
+	end;
+
+OnGuillaumeWin:
+	set $@KvM03BG, 3;
+	set $@KvM03BG_Victory, 1;
+	mapannounce "bat_c03", "Guillaume camp victory.",bc_map,"0x00ff00";
+	mapannounce "bat_c03", "Congratulations to all Guillaume members.",bc_map,"0x00ff00";
+	mapannounce "bat_c03", "All personnel move to the starting zone.",bc_map,"0x00ff00";
+	donpcevent "KvM03_BG::OnStop";
+	end;
+
+OnCroixWin:
+	set $@KvM03BG, 3;
+	set $@KvM03BG_Victory, 2;
+	mapannounce "bat_c03", "Croix camp victory.",bc_map,"0x00ff00";
+	mapannounce "bat_c03", "Congratulations to all Croix members.",bc_map,"0x00ff00";
+	mapannounce "bat_c03", "All personnel move to the starting zone.",bc_map,"0x00ff00";
+	donpcevent "KvM03_BG::OnStop";
+	end;
+
+OnStop:
+	stopnpctimer;
+	enablenpc "KVM Officer#KVM03A";
+	enablenpc "KVM Officer#KVM03B";
+	// Warp Teams
+	bg_warp $@KvM03BG_id1,"bat_c03",53,128;
+	bg_warp $@KvM03BG_id2,"bat_c03",146,55;
+	donpcevent "KvM03_BG_Out::OnBegin";
+	end;
+
+OnReset:
+	set .Croix_Count, 0;
+	set .Guillaume_Count, 0;
+	set .Croix_Score, 0;
+	set .Guillaume_Score, 0;
+	set $@KvM03BG_Victory, 0;
+	if( $@KvM03BG_id1 ) { bg_destroy $@KvM03BG_id1; set $@KvM03BG_id1, 0; }
+	if( $@KvM03BG_id2 ) { bg_destroy $@KvM03BG_id2; set $@KvM03BG_id2, 0; }
+	disablenpc "VintenarKvM03a";
+	disablenpc "VintenarKvM03b";
+	mapwarp "bat_c03","bat_room",154,150;
+	maprespawnguildid "bat_c03",0,3; // Just in case someone else
+	bg_updatescore "bat_c03",0,0;
+	set $@KvM03BG, 0;
+	donpcevent "KvM03_BG::OnReadyCheck"; // Maybe a game is ready to start
+	end;
+}
+
+-	script	KvM03_BG_Out	-1,{
+	end;
+
+OnBegin:
+	initnpctimer;
+	end;
+
+OnTimer1000:
+	mapannounce "bat_c03", "Please apply with the Officer to acquire KVM points.",bc_map,"0x00ff00";
+	end;
+
+OnTimer3000:
+	mapannounce "bat_c03", "The Officer will grant you the points for 30 seconds.",bc_map,"0x00ff00";
+	mapannounce "bat_c03", "In 30 seconds, the Officer will be sent away.",bc_map,"0x00ff00";
+	end;
+
+OnTimer5000:
+	mapannounce "bat_c03", "If you do not claim your points now, you will not be able to.",bc_map,"0x00ff00";
+	mapannounce "bat_c03", "Please make sure to collect before the time expires.",bc_map,"0x00ff00";
+	end;
+
+OnTimer60000:
+	stopnpctimer;
+	donpcevent "KvM03_BG::OnReset";
+	end;
+}
+
+// Battleground rewards
+//============================================================
+bat_c03,51,130,5	script	KVM Officer#KVM03A	419,{
+	if( $@KvM01BG_Victory )
+	{
+		if( $@KvM03BG_Victory == Bat_Team )
+		{ // Victory
+			set kvm_point,kvm_point + 2;
+			mes "[Swandery]";
+			mes "Blessed Guillaume!!";
+			mes "Let's enjoy our glorious victory!";
+			mes "" + strcharinfo(0) + ", its a sign reflecting victory";
+			close2;
+		}
+		else
+		{ // 
+			set kvm_point,kvm_point + 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!";
+			close2;
+		}
+		bg_leave;
+		warp "bat_room",154,150;
+		end;
+	}
+	end;
+}
+
+bat_c03,148,53,1	script	KVM Officer#KVM03B	415,{
+	if( $@KvM01BG_Victory )
+	{
+		if( $@KvM03BG_Victory == Bat_Team )
+		{ // Victory
+			set kvm_point,kvm_point + 2;
+			mes "[Swandery]";
+			mes "Blessed Croax!!";
+			mes "Let's enjoy our glorious victory!";
+			mes "" + strcharinfo(0) + ", its a sign reflecting victory";
+			close2;
+		}
+		else
+		{ // 
+			set kvm_point,kvm_point + 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;
+		}
+		bg_leave;
+		warp "bat_room",154,150;
+		end;
+	}
+	end;
+}
+
+// MapFlags
+//============================================================
+
+bat_c03	mapflag	battleground	2
+bat_c03	mapflag	nomemo
+bat_c03	mapflag	nosave	SavePoint
+bat_c03	mapflag	noteleport
+bat_c03	mapflag	nowarp
+bat_c03	mapflag	nowarpto
+bat_c03	mapflag	noreturn
+bat_c03	mapflag	nobranch
+bat_c03	mapflag	nopenalty

+ 211 - 0
npc/battleground/kvm/kvm_enter.txt

@@ -0,0 +1,211 @@
+//===== eAthena Script ======================================= 
+// BattleGround System - KvM Entrance NPCs
+//===== By: ================================================== 
+//= L0ne_W0lf
+//===== Current Version: ===================================== 
+//= 1.0
+//===== Compatible With: ===================================== 
+//= eAthena 1.0
+//===== Description: ========================================= 
+//= [AEGIS Conversion]
+//= Kreiger Von Midgard Battleground Entrance NPCs
+//= Original NPCs scrapped from bg_common.
+//===== Additional Comments: ================================= 
+//= 1.0 First Version.
+//============================================================
+
+// KvM Officerer - Guillaume
+//============================================================
+bat_room,164,178,5	script	KVM Mercenary Officer#1	418,{
+	set .@permit,checkquest(6026,PLAYTIME);
+	if ((.@permit == 0) || (.@permit == 1)) {
+		mes "[Guillaume Mercenary Officer]";
+		mes "I know that you've already signed with the Croix. Go back and join their team. We will not accept traitors to fight for us.";
+		close;
+	}
+	else {
+		if (checkquest(6025) >= 0) erasequest 6026;
+	}
+	mes "[Guillaume Mercenary Officer]";
+	mes "Let them know the real might of Guillaume!";
+	next;
+	switch(select("I will fight with you.:End Conversation.")) {
+	case 1:
+		mes "[Guillaume Mercenary Officer]";
+		mes "Show them how strong we are.";
+		mes "Today, everyone will hear the shout of triumph from Guillaume!";
+		close2;
+		if (BaseLevel > 79) {
+			warp "bat_room",169,223;
+		}
+		else if (BaseLevel < 60) {
+			warp "bat_room",197,223;
+		}
+		else {
+			warp "bat_room",225,223;
+		}
+		close;
+	case 2:
+		mes "[Guillaume Mercenary Officer]";
+		mes "We will win!";
+		close;
+	}
+}
+
+// Guillaume Knight - KvM
+//============================================================
+bat_room,167,178,5	script	Guillaume Knight#kvm	417,{
+	mes "[Guillaume Knight]";
+	mes "Hello.";
+	mes "What do you want to know?";
+	next;
+	switch(select("Apply for KVM.:What is KVM?:How do I participate in KVM?:I want to know my Kreiger Points.")) {
+	case 1:
+		mes "[Guillaume Knight]";
+		mes "Applications are not available yet.";
+		mes "To apply, you need to go to a KVM Mercenary Officer.";
+		close;
+	case 2:
+		mes "[Guillaume Knight]";
+		mes "KVM is the abbreviation of Kreiger Von Midgard.";
+		mes "Adventurer, are you aware that the way to the new world has been opened?";
+		next;
+		mes "[Guillaume Knight]";
+		mes "We, the Guillaume Administration, have several plans to advance to the new world.";
+		mes "And KVM is one of them.";
+		next;
+		mes "[Guillaume Knight]";
+		mes "It means that we, one of many countries in the Midgard continent,";
+		mes "have decided to employ many adventurers for the immediate advance to the new world.";
+		next;
+		mes "[Guillaume Knight]";
+		mes "Therefore, to select the best adventurers, we are holding the KVM.";
+		mes "We exspect responses from many adventurers.";
+		next;
+		mes "[Guillaume Knight]";
+		mes "And we will give them rewards for their participation!";
+		mes "As for the rewards, please contact a KVM Logistic Officer.";
+		close;
+	case 3:
+		mes "[Guillaume Knight]";
+		mes "Basically, KVM is a 5 on 5 battle.";
+		mes "First, you apply with a KVM receptionist, in a group or individually.";
+		next;
+		mes "[Guillaume Knight]";
+		mes "Group applications are for when you intend to enter the KVM with your party members,";
+		mes "and a personal application is for when you intend to enter the KVM individually.";
+		next;
+		mes "[Guillaume Knight]";
+		mes "Please apply with a KVM officer, and he will contact you later when you are in Prontera.";
+		next;
+		mes "[Guillaume Knight]";
+		mes "Then you enter and follow the instructions in the battlefield.";
+		next;
+		mes "[Guillaume Knight]";
+		mes "However, please be advised that unless you are in the KVM office, he cannot contact you.";
+		close;
+	case 4:
+		mes "[Guillaume Knight]";
+		mes "Your Kreiger Points are:";
+		mes ""+kvm_point+".";
+		close;
+	}
+}
+
+// KvM Officer - Croix
+//============================================================
+bat_room,164,121,1	script	KVM Mercenary Officer#2	414,{
+	set .@permit,checkquest(6025,PLAYTIME);
+	if ((.@permit == 0) || (.@permit == 1)) {
+		mes "[Croix Mercenary Officer]";
+		mes "I know that you've already signed with the Guillaume. Go back and join their team. We will not accept traitors to fight for us.";
+		close;
+	}
+	else {
+		if (checkquest(6025) >= 0) erasequest 6025;
+	}
+	mes "[Croix Mercenary Officer]";
+	mes "Let them know the real might of Croix!";
+	next;
+	switch(select("I will fight with you.:End Conversation.")) {
+	case 1:
+		mes "[Croix Mercenary Officer]";
+		mes "Show them how strong we are.";
+		mes "Today, everyone will hear the shout of triumph from Croix!";
+		close2;
+		if (BaseLevel > 79) {
+			warp "bat_room",169,207;
+		}
+		else if (BaseLevel < 60) {
+			warp "bat_room",197,207;
+		}
+		else {
+			warp "bat_room",225,207;
+		}
+		close;
+	case 2:
+		mes "[Croix Mercenary Officer]";
+		mes "We will win!";
+		close;
+	}
+}
+
+// Croix Knight - KvM
+//============================================================
+bat_room,167,121,1	script	Croix Knight#kvm	413,{
+	mes "[Croix Knight]";
+	mes "Hello.";
+	mes "What do you want to know?";
+	next;
+	switch(select("Apply for KVM.:What is KVM?:How do I participate in KVM?:I want to know my Kreiger Points.")) {
+	case 1:
+		mes "[Croix Knight]";
+		mes "Applications are not available yet.";
+		mes "To apply, you need to go to a KVM Mercenary Officer.";
+		close;
+	case 2:
+		mes "[Croix Knight]";
+		mes "KVM is the abbreviation of Kreiger Von Midgard.";
+		mes "Adventurer, are you aware that the way to the new world has been opened?";
+		next;
+		mes "[Croix Knight]";
+		mes "We, the Croix Administration, have several plans to advance to the new world.";
+		mes "And KVM is one of them.";
+		next;
+		mes "[Croix Knight]";
+		mes "It means that we, one of many countries in the Midgard continent,";
+		mes "have decided to employ many adventurers for the immediate advance to the new world.";
+		next;
+		mes "[Croix Knight]";
+		mes "Therefore, to select the best adventurers, we are holding the KVM.";
+		mes "We exspect responses from many adventurers.";
+		next;
+		mes "[Croix Knight]";
+		mes "And we will give them rewards for their participation!";
+		mes "As for the rewards, please contact a KVM Logistic Officer.";
+		close;
+	case 3:
+		mes "[Croix Knight]";
+		mes "Basically, KVM is a 5 on 5 battle.";
+		mes "First, you apply with a KVM receptionist, in a group or individually.";
+		next;
+		mes "[Croix Knight]";
+		mes "Group applications are for when you intend to enter the KVM with your party members,";
+		mes "and a personal application is for when you intend to enter the KVM individually.";
+		next;
+		mes "[Croix Knight]";
+		mes "Please apply with a KVM officer, and he will contact you later when you are in Prontera.";
+		next;
+		mes "[Croix Knight]";
+		mes "Then you enter and follow the instructions in the battlefield.";
+		next;
+		mes "[Croix Knight]";
+		mes "However, please be advised that unless you are in the KVM office, he cannot contact you.";
+		close;
+	case 4:
+		mes "[Croix Knight]";
+		mes "Your Kreiger Points are:";
+		mes ""+kvm_point+".";
+		close;
+	}
+}

+ 313 - 0
npc/battleground/kvm/kvm_item_pay.txt

@@ -0,0 +1,313 @@
+//===== eAthena Script ======================================= 
+// BattleGround System - KvM Item Dealer
+//===== By: ================================================== 
+//= L0ne_W0lf
+//===== Current Version: ===================================== 
+//= 1.0
+//===== Compatible With: ===================================== 
+//= eAthena 1.0
+//===== Description: ========================================= 
+//= [AEGIS Conversion]
+//= Kreiger Von Midgard Battleground Point redemption NPC
+//= * NOTE * 
+//= KvM Does NOT use items, but a character variable to
+//= keep track of points. This NPC when talked to will
+//= convert already-given tokens and convert them to points.
+//= under the player variable kvm_point.
+//===== Additional Comments: ================================= 
+//= 1.0 First Version.
+//============================================================
+
+bat_room,151,144,3	script	KVM Logistic Officer#a	734,{
+	if (countitem(7773)) {
+		set .@pointstoadd,countitem(7773);
+		delitem 7773,.@pointstoadd;
+		set kvm_point,kvm_point+.@pointstoadd;
+		mes "[Logistics]";
+		mes "Are those "+getitemname(7773)+"s I see?";
+		mes "We no longer accept that currency,";
+		mes "but I can exchange those for you,";
+		mes "So you have "+.@pointstoadd+" "+getitemname(7773)+"s?";
+		mes "Alright, all set, you now have ^580080"+ kvm_point +"^000000 KVM Points.";
+		next;
+	}
+	if (checkweight(1201,1) == 0) {
+		mes "- Wait a minute !! -";
+		mes "- Currently you're carrying -";
+		mes "- too many items with you. -";
+		mes "- Please try again -";
+		mes "- after you loose some weight. -";
+		close;
+	}
+	mes "[Logistics]";
+	mes "Hello?";
+	mes "I am in charge of distributing";
+	mes "reward items for KVM points. Any";
+	mes "wrong selection of items will not";
+	mes "be reversed. Please be carefull.";
+	mes "Select the next step please.";
+	next;
+	set .@name$,strcharinfo(0);
+	switch(select("Read the KVM Catalogue.:Purchase KVM Items.:Confirm KVM Points.:Explanation of KVM Rewards.:Explanation of KVM Points.")) {
+	case 1:
+		mes "[Logistics]";
+		mes "Here is the catalogue of KVM items.";
+		mes "Each weapon requires 2,000 points";
+		mes "and each armor from 10 to 1,200";
+		mes "points. So, be carefull when";
+		mes "selecting a reward.";
+		close2;
+		ReadBook 11017,1;
+		end;
+	case 2:
+		mes "[Logistics]";
+		mes "Wich items do you want to see? As";
+		mes "for the detailed specification of";
+		mes "the items, please refer to the";
+		mes "^3131FFCatalogue^000000.";
+		next;
+		switch(select("Weapon:Armor/Accessory:Mass-Production Armor/Accessory:Popularized Armor/Accessory")) {
+		case 1:
+			mes "[Logistics]";
+			mes "You have selected the Weapon Category.";
+			mes "Please select a sub-category.";
+			next;
+			switch(select("Dagger/Sword/Spear:Staff/Mace/Axe/Shuriken:Bow/Katar/Instrument/Whip:Book/Knuckle:Revolver/Rifle/Gun/Grenade Launcher")) {
+			case 1:
+				mes "[Logistics]";
+				mes "You have selected the Dagger/Sword/Spear category.";
+				mes "Please select a sub-category.";
+				next;
+				switch(select("Dagger:One-handed Sword:Two-handed Sword:One-handed Spear:Two-handed Spear")) {
+				case 1: callsub PurchaseItem,13042,0,1; //Krieger_Dagger1 
+				case 2:
+					mes "[Logistics]";
+					mes "You have selected the 'One-handed Sword' category.";
+					mes "There are 3 One-handed Swords: Glorious Flamberge, Glorious Rapier and Glorious Holy Avenger.";
+					mes "If you want their details, please refer to the KVM Catalogue.";
+					mes "Please select one of them.";
+					next;
+					switch(select("Glorious Flamberge:Glorious Rapier:Glorious Holy Avenger")) {
+					case 1: callsub PurchaseItem,13416,0,0; //Krieger_Onehand_Sword1
+					case 2: callsub PurchaseItem,13417,0,0; //Krieger_Onehand_Sword2
+					case 3: callsub PurchaseItem,13418,0,0; //Krieger_Onehand_Sword3
+					}
+				case 3: callsub PurchaseItem,1187,0,1; //Krieger_Twohand_Sword1
+				case 4: callsub PurchaseItem,1426,0,1; //Krieger_Onehand_Spear1
+				case 5: callsub PurchaseItem,1486,0,1; //Krieger_Twohand_Spear1
+				}
+			case 2:
+				mes "[Logistics]";
+				mes "You have selected the 'Staff/Mace/Axe/Shuriken' category.";
+				mes "Please select a sub-category.";
+				next;
+				switch(select("Staff:Mace:One-handed Axe:Two-handed Axe:Shuriken")) {
+				case 1:
+					mes "[Logistics]";
+					mes "You have selected the 'Staff' category.";
+					mes "There are 3 Staffs: a Two-handed Weapon Glorious Destruction Staff, a One-handed Glorious Arc Wand and a Glorious Healing Staff.";
+					mes "If you want their details, please refer to the KVM Catalogue.";
+					mes "Please select one of them.";
+					next;
+					switch(select("Glorious Destruction Staff:Glorious Arc Wand:Glorious Healing Staff")) {
+					case 1: callsub PurchaseItem,2002,0,0; //Krieger_Twohand_Staff1
+					case 2: callsub PurchaseItem,1640,0,0; //Krieger_Onehand_Staff1
+					case 3: callsub PurchaseItem,1641,0,0; //Krieger_Onehand_Staff2
+					}
+				case 2: callsub PurchaseItem,1546,0,1; //Krieger_Onehand_Mace1
+				case 3: callsub PurchaseItem,1310,0,1; //Krieger_Onehand_Axe1
+				case 4: callsub PurchaseItem,1382,0,1; //Krieger_Twohand_Axe1
+				case 5: callsub PurchaseItem,13307,0,1; //Krieger_Huuma_Shuriken1
+				}
+			case 3:
+				mes "[Logistics]";
+				mes "You have selected the Bow/Katar/Instrument/Whip category.";
+				mes "Please select a sub-category.";
+				next;
+				switch(select("Bow:Katar:Instrument:Whip")) {
+				case 1: callsub PurchaseItem,1743,0,1; //Krieger_Bow1
+				case 2:
+					mes "[Logistics]";
+					mes "You have selected the 'Katar' category.";
+					mes "There are 2 Katars: Glorious Bloody Roar and Glorious Jamadhar.";
+					mes "If you want their details, please refer to the KVM Catalogue.";
+					mes "Please select one of them.";
+					next;
+					switch(select("Glorious Bloody Roar:Glorious Jamadhar")) {
+					case 1: callsub PurchaseItem,1281,0,0; //Krieger_Katar1
+					case 2: callsub PurchaseItem,1282,0,0; //Krieger_Katar2
+					}
+				case 3: callsub PurchaseItem,1927,0,1; //Krieger_Instrument1
+				case 4: callsub PurchaseItem,1981,0,1; //Krieger_Whip1
+				}
+			case 4:
+				mes "[Logistics]";
+				mes "You have selected the Book/Knuckle category.";
+				mes "Please select a sub-category.";
+				next;
+				switch(select("Book:Knuckle")) {
+				case 1:
+					mes "[Logistics]";
+					mes "You have selected 'Book'.";
+					mes "There are 2 Books: Glorious Tablet and Glorious Apocalypse.";
+					mes "If you want their details, please refer to the KVM Catalogue.";
+					mes "Please select one of them.";
+					next;
+					switch(select("Glorious Tablet:Glorious Apocalypse")) {
+					case 1: callsub PurchaseItem,1576,0,0; //Krieger_Book1
+					case 2: callsub PurchaseItem,1577,0,0; //Krieger_Book2
+					}
+				case 2:
+					mes "[Logistics]";
+					mes "You have selected the 'Knuckle' category.";
+					mes "There are 2 Knuckles: Glorious Claw and Glorious Fist.";
+					mes "If you want their details, please refer to the KVM Catalogue.";
+					mes "Please select one of them.";
+					next;
+					switch(select("Glorious Claw:Glorious Fist")) {
+					case 1: callsub PurchaseItem,1826,0,0; //Krieger_Knuckle1
+					case 2: callsub PurchaseItem,1827,0,0; //Krieger_Knuckle2
+					}
+				}
+			case 5:
+				mes "[Logistics]";
+				mes "You have selected the 'Revolver/Rifle/Gun/Grenade Launcher' category.";
+				mes "Please select a sub-category.";
+				next;
+				switch(select("Revolver:Rifle:Gatling Gun:Shotgun:Grenade Launcher")) {
+				case 1: callsub PurchaseItem,13110,0,1; //Krieger_Pistol1
+				case 2: callsub PurchaseItem,13176,0,1; //Krieger_Rifle1
+				case 3: callsub PurchaseItem,13177,0,1; //Krieger_Gatling1
+				case 4: callsub PurchaseItem,13178,0,1; //Krieger_Shotgun1
+				case 5: callsub PurchaseItem,13179,0,1; //Krieger_Launcher1
+				}
+			}
+		case 2:
+			mes "[Logistics]";
+			mes "You have selected the 'Armor/Accessory' category.";
+			mes "Please select a sub-category.";
+			next;
+			switch(select("Armor:Cloak:Shoes:Accessory")) {
+			case 1: callsub PurchaseItem,2394,1,2; //Krieger_Suit1
+			case 2: callsub PurchaseItem,2549,2,2; //Krieger_Muffler1
+			case 3: callsub PurchaseItem,2444,3,2; //Krieger_Shoes1
+			case 4: callsub PurchaseItem,2772,4,2; //Krieger_Ring1
+			}
+		case 3:
+			mes "[Logistics]";
+			mes "You have selected the 'Mass-Production Armor/Accessory' category.";
+			mes "Please select a sub-category.";
+			next;
+			switch(select("Mass-Production Armor:Mass-Production Shoes:Mass-Production Accessory")) {
+			case 1: callsub PurchaseItem,2395,5,3; //Krieger_Suit2
+			case 2: callsub PurchaseItem,2445,6,3; //Krieger_Shoes2
+			case 3: callsub PurchaseItem,2773,7,3; //Krieger_Ring2
+			}
+		case 4:
+			mes "[Logistics]";
+			mes "You have selected the 'Popularized Armor/Accessory' category.";
+			mes "Please select a sub-category.";
+			next;
+			switch(select("Popularized Armor:Popularized Shoes:Popularized Accessory")) {
+			case 1: callsub PurchaseItem,2396,8,4; //Krieger_Suit3
+			case 2: callsub PurchaseItem,2446,9,4; //Krieger_Shoes3
+			case 3: callsub PurchaseItem,2774,10,4; //Krieger_Ring3
+			}
+		}
+	case 3:
+		mes "[Logistics]";
+		mes ""+ .@name$ +", your current points are ^580080"+ kvm_point +"^000000 KVM Points.";
+		close;
+	case 4:
+		mes "[Logistics]";
+		mes "There are 3 categories in KVM Rewards: Weapon/Armor.Accessory.";
+		next;
+		mes "[Logistics]";
+		mes "Weapon rewards require 2,000 KVM points for each.";
+		mes "There are 3 types of Armor rewards and they require 840/630/580 KVM points fo each.";
+		mes "Accessory rewards require 1,200 KVM points for each.";
+		next;
+		mes "[Logistics]";
+		mes "Kreiger Weapons are LV 4 Weapons, they can be upgraded and will have special effects: Slaughter, Destruction and Blessing.";
+		next;
+		mes "[Logistics]";
+		mes "When you can wear all 3 armors, you can have a special set of options.";
+		mes "Also, when Kreiger Accessory rewards are worn with medalsm it will bring you special set rewards.";
+		next;
+		mes "[Logistics]";
+		mes "Finally, there are Mass-Production Armor and Accessory rewards.";
+		mes "Players whose Lvl is higher than 60 can equip Mass-Production Armors and there is a Lvl limit for Popularized Armor as well.";
+		close;
+	case 5:
+		mes "[Logistics]";
+		mes "KVM Points are rewarded when you win, lose or draw in Kreiger Von Midgard (KVM).";
+		mes "You can have special Rewards by using these points.";
+		close;
+	}
+
+PurchaseItem:
+	// Pricing for Weapon, Suit1, Muffler1, Shoes1, Ring1m Suit2, Shoes2, Ring2, Suit3, Shoes3, Ring3
+	setarray .@prices[0],2000,840,630,580,1200,120,70,200,15,10,30;
+
+	mes "[Logistics]";
+
+	if (!getarg(2))
+		mes "You have selected ^ff0000"+getitemname(getarg(0))+"^000000.";
+	else if (getarg(2) == 1)
+		mes "There is only one "+callfunc("F_GetWeaponType",getarg(0))+": "+getitemname(getarg(0))+".";
+	else if (getarg(2) == 2) {
+		mes "You have selected '"+callfunc("F_GetArmorType",getarg(0))+"'.";
+		mes "The armor for one whose Lvl is more than 80 is: ^ff0000"+getitemname(getarg(0))+"^000000.";
+	}
+	else if (getarg(2) == 3) {
+		mes "You have selected 'Mass-Production "+callfunc("F_GetArmorType",getarg(0))+"'.";
+		mes "There is only one Mass-Production "+callfunc("F_GetArmorType",getarg(0))+": ^ff0000"+getitemname(getarg(0))+"^000000.";
+	}
+	else if (getarg(2) == 4) {
+		mes "You have selected 'Popularized "+callfunc("F_GetArmorType",getarg(0))+"'.";
+		mes "There is only one Popularized "+callfunc("F_GetArmorType",getarg(0))+": ^ff0000"+getitemname(getarg(0))+"^000000.";
+	}
+
+	if (!getarg(1))
+		mes "It requires ^0000ff2,000^000000 KVM Points, and "+ .@name$ +", your points are: ^580080"+ kvm_point +"^000000.";
+	else if (getarg(1) == 4)
+		mes "It requires ^0000ff1,200^000000 KVM Points, and "+ .@name$ +", your points are: ^580080"+ kvm_point +"^000000.";
+	else
+		mes "It requires ^0000ff"+.@prices[getarg(1)]+"^000000 KVM Points, and "+ .@name$ +", your points are: ^580080"+ kvm_point +"^000000.";
+
+	mes "Are you sure you want this item?";
+	next;
+	switch(select("No, I won't purchase it.:Yes, I will purchase it.")) {
+	case 1:
+		mes "[Logistics]";
+		mes "You have selected 'I won't purchase it'.";
+		mes "When purchasing an item, please be careful there are no refunds.";
+		break;
+	case 2:
+		if (kvm_point >= .@prices[getarg(1)]) {
+			set kvm_point,kvm_point-.@prices[getarg(1)];
+			getitem getarg(0),1;
+			mes "[Logistics]";
+			mes "You have purchased a "+getitemname(getarg(0))+".";
+			if (!getarg(1))
+				mes "Your KVM Points are reduced by ^0000ff"+getarg(1)+"^000000 points, your KVM Points are now ^580080"+kvm_point+"^000000.";
+			if (getarg(1) == 4)
+				mes "Your KVM Points are reduced by ^0000ff1,200^000000 points, your KVM Points are now ^580080"+kvm_point+"^000000.";
+			else
+				mes "Your KVM Points are reduced by ^0000ff"+.@prices[getarg(1)]+"^000000 points, your KVM Points are now ^580080"+kvm_point+"^000000.";
+		}
+		else {
+			mes "[Logistics]";
+			if (!getarg(1))
+				mes "You need ^0000ff2,000^000000 KVM Points to purchase this item.";
+			else if (getarg(1) == 4)
+				mes "You need ^0000ff1,200^000000 KVM Points to purchase this item.";
+			else
+				mes "You need ^0000ff"+.@prices[getarg(1)]+"^000000 KVM Points to purchase this item.";
+			mes "However, your KVM Points are now ^580080"+ kvm_point +"^000000.";
+			mes "Which are not enough to buy it.";
+			mes "When you get enough points, please come back again.";
+		}
+	}
+	close;
+}

+ 54 - 1
npc/other/Global_Functions.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= Lupus, kobra_k88
 //===== Current Version: ===================================== 
-//= 2.15
+//= 2.16
 //===== Compatible With: ===================================== 
 //= eAthena 1.0
 //===== Description: ========================================= 
@@ -38,6 +38,7 @@
 //= 2.13 Added more unused vars to F_ClearGarbage [Lupus]
 //= 2.14 Added old novice variables to F_ClearGarbage. [L0ne_W0lf]
 //= 2.15 Added no unused DTS variables to F_ClearGarbage. [L0ne_W0lf]
+//= 2.6 Added F_GetWeaponType, and F_GetArmorType. [L0ne_W0lf]
 //============================================================ 
 
 
@@ -257,3 +258,55 @@ function	script	F_Load2Skills	{
 	set ADV_QSK2,0; //Clear var
 	return;
 }
+
+//////////////////////////////////////////////////////////////////////////////////
+// *** Function "F_GetWeaponType": Determine weapon type by view
+//////////////////////////////////////////////////////////////////////////////////
+function	script	F_GetWeaponType	{
+	switch(getiteminfo(getarg(0),11)) {
+		case 1: return "Dagger"; break;
+		case 2: return "One-handed Sword"; break;
+		case 3: return "Two-handed Sword"; break;
+		case 4: return "One-handed Spear"; break;
+		case 5: return "Two-handed Spear"; break;
+		case 6: return "One-handed Axe"; break;
+		case 7: return "Two-handed Axe"; break;
+		case 8: return "Mace"; break;
+		//case 9: return "Unused"; break;
+		case 10: return "Staff"; break;
+		case 11: return "Bow"; break;
+		case 12: return "Knuckle"; break;
+		case 13: return "Instrument"; break;
+		case 14: return "Whip"; break;
+		case 15: return "Book"; break;
+		case 16: return "Katar"; break;
+		case 17: return "Revolver"; break;
+		case 18: return "Rifle"; break;
+		case 19: return "Gatling gun"; break;
+		case 20: return "Shotgun"; break;
+		case 21: return "Grenade Launcher"; break;
+		case 22: return "Shuriken"; break;
+		default: return "Unable to Determine Equip Type"; break;
+	}
+	end;
+}
+
+//////////////////////////////////////////////////////////////////////////////////
+// *** Function "F_GetArmorType": Determine equipment type by equip location
+//////////////////////////////////////////////////////////////////////////////////
+function	script	F_GetArmorType	{
+	switch(getiteminfo(getarg(0),5)) {
+		case 001: return "Lower Headgear"; break;
+		case 2: return "Weapon"; break;
+		case 4: return "Garment"; break;
+		case 8: return "Accessory"; break;
+		case 16: return "Armor"; break;
+		case 32: return "Shield"; break;
+		case 64: return "Shoes"; break;
+		case 128: return "Accessory"; break;
+		case 256: return "Upper Headgear"; break;
+		case 512: return "Middle Headgear"; break;
+		default: return "Unable to Determine Equip Location"; break;
+	}
+	end;
+}

+ 4 - 3
npc/other/arena/arena_aco.txt

@@ -3,13 +3,14 @@
 //===== By: ==================================================
 //= L0ne_W0lf
 //===== Current Version: =====================================
-//= 1.0
+//= 1.1
 //===== Compatible With: =====================================
 //= Any Athena Version
 //===== Description: =========================================
 //= Izlude Acolyte Battle Arena
 //===== Additional Comments: =================================
 //= 1.0 First version.
+//= 1.1 Corrected variable typos. (bugreport:4374) [L0ne_w0lf]
 //============================================================
 
 arena_room,114,102,0	script	onlyaco#arena	45,1,1,{
@@ -1257,7 +1258,7 @@ prt_are_in,25,31,3	script	Staff#aco-2	67,{
 			mes "under the Time Force Battle";
 			mes "Arena - Acolyte Class Record!";
 			if (basejob == job_acolyte) {
-				set $@arn_acotop,.@record_timeaco;
+				set $arn_acotop,.@record_timeaco;
 				set $arn_acotopn$, strcharinfo(0);
 				donpcevent "Vendigos::Onlinerec_aco";
 			}
@@ -1416,7 +1417,7 @@ prt_are_in,25,31,3	script	Staff#aco-2	67,{
 			mes "Acolyte Class Records.";
 			mes "Congratulations~";
 			if (basejob == job_acolyte) {
-				set $@arn_acotop,.@record_timeaco;
+				set $arn_acotop,.@record_timeaco;
 				set $arn_acotopn$, strcharinfo(0);
 				donpcevent "#Vendigos::Onlinerec_aco";
 			}

+ 3 - 2
npc/other/arena/arena_party.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= SinSloth
 //===== Current Version: =====================================
-//= 1.1
+//= 1.3
 //===== Compatible With: =====================================
 //= Any Athena Version
 //===== Description: =========================================
@@ -13,6 +13,7 @@
 //= 1.0a Fixed a typo.
 //= 1.1 Replaced effect numerics with constants. [Samuray22]
 //= 1.2 Fixed "OnMobDeath" doesn't work sometime. [Inkfish]
+//= 1.3 Corrected donpcevent typo. (bugreport:4374) [L0ne_w0lf]
 //============================================================
 
 arena_room,162,88,3	script	Ponox	124,{
@@ -27,7 +28,7 @@ OnStartArena:
 	donpcevent "toarena#party::OnInit";
 	donpcevent "toout#party::OnInit";
 	warpwaitingpc "prt_are_in",73,78;
-	donpcevent "toout#party::OnTime";	
+	donpcevent "toout#party::OnTimer";
 	donpcevent "Helper#party::OnEnter";
 	disablewaitingroomevent;
 	end;

+ 7 - 0
npc/scripts_athena.conf

@@ -319,6 +319,13 @@ npc: npc/other/arena/arena_aco.txt
 // -------------------- Hugel Monster Races ---------------------
 npc: npc/other/monster_race.txt
 // --------------------------------------------------------------
+// --------------------- Battle Grounds -------------------------
+//npc: npc/battleground/KVM/kvm_enter.txt
+//npc: npc/battleground/KVM/kvm_item_pay.txt
+//npc: npc/battleground/KVM/kvm01.txt
+//npc: npc/battleground/KVM/kvm02.txt
+//npc: npc/battleground/KVM/kvm03.txt
+// --------------------------------------------------------------
 // ------------------------ Instances ---------------------------
 npc: npc/instances/SealedShrine.txt
 //npc: npc/instances/EndlessTower.txt