//===== rAthena Script ======================================= 
//= BattleGround System - Common NPCs
//===== By: ================================================== 
//= ????, L0ne_W0lf
//===== Current Version: ===================================== 
//= 1.5
//===== Compatible With: ===================================== 
//= rAthena 1.0
//===== Description: ========================================= 
//= [Official Conversion]
//= Battleground NPCs:
//= - Generals and Aides
//= - Battleground Warper
//= - Kafra and Repairman.
//= - GM Management NPC
//= - Badge Exchanger (Tierra and Flavius)
//===== Additional Comments: ================================= 
//= 1.0 First Version.
//= 1.1 Updated several NPCs to Official.
//= 1.2 Updated Repairman NPC
//= 1.3 Optimized "׵¿" NPC. [Euphy]
//= 1.4 Added GM management function. [Euphy]
//= 1.5 Added VIP features and created a reward function. [Euphy]
//============================================================

// Generals
//============================================================
bat_room,161,158,3	script	 鳤#01	419,{ end; }
bat_room,161,160,3	script	 鳤#03	419,{ end; }

bat_room,160,141,3	script	 	416,{
	cutin "bat_crua1",2;
	mes "[ ]";
	mes "ǻ۵ðռรԸһ֮?";
	next;
	switch(select("ս:ڼ ")) {
	case 1:
		cutin "bat_crua2",2;
		mes "[ ]";
		mes "ֵΰѦ  7֮ǷĹϵ";
		mes "ּϣֵδ3Ӽ ޽һλ";
		next;
		mes "[ ]";
		mes "˵սΪֽļ ޱȽûоԵģ";
		mes "һҪսлʤðԶս֮";
		next;
		switch(select("Ը㲢ս:Ի")) {
		case 1:
			cutin "bat_crua1",2;
			mes "[ ]";
			mes "Ǻοˣ";
			mes "!";
			mes "ߣɿ书ǿսʿڵ";
			break;
		case 2:
			mes "[ ]";
			mes "Ϊ!";
			break;
		}
		break;
	case 2:
		cutin "bat_crua2",2;
		mes "[ ]";
		mes "3Ӽ ֵĽ";
		mes "ǿֹ֮սָվͲö˵";
		next;
		mes "[ ]";
		mes "־֮Ҳзʿ";
		mes "ǰϣ?";
		mes "һֱֵİս棬ٺõҲ۶ϵһ";
		next;
		mes "[ ]";
		mes "ҲϣٿѪɺӵ龰εβ";
		next;
		switch(select("Ը㲢ս:Ի")) {
		case 1:
			cutin "bat_crua1",2;
			mes "[ ]";
			mes "Ǻοˣ";
			mes "!";
			mes "ߣɿ书ǿսʿڵ";
			break;
		case 2:
			mes "[ ]";
			mes "Ϊ!";
			break;
		}
		break;
	}
	close2;
	cutin "bat_crua1",255;
	cutin "bat_crua2",255;
	end;
}

bat_room,161,140,3	script	 鳤#01	415,{ end; }
bat_room,161,142,3	script	 鳤#02	415,{ end; }

bat_room,160,159,3	script	  	420,{
	cutin "bat_kiyom2",2;
	mes "[ ]";
	mes "ðռรҪĹ˲";
	next;
	switch(select("ս: ???")) {
	case 1:
		cutin "bat_kiyom1",2;
		mes "[ ]";
		mes "ı£Ѧ  7ˣ";
		mes "´ 9УѱҺͿһ̳λ";
		next;
		mes "[ ]";
		mes "һɽݶ! Ψڸָսϻʤ߲ͳι";
		next;
		mes "[ ]";
		mes "ⲻǵսѣδȡսĽ";
		mes "ҪԽ֤ܹⲿвˣֻҰõ";
		next;
		switch(select("Ը㲢ս:Ի")) {
		case 1:
			cutin "bat_kiyom2",2;
			mes "[ ]";
			mes "λɿˣ";
			mes "оܿǸ򵥵";
			next;
			mes "[ ]";
			mes "ҳֿػӭ!";
			mes "ڸڽҲս֧ԮĻǾͻҵػӭ";
			break;
		case 2:
			mes "[ ]";
			mes "ұػǹȡʤ!";
			break;
		}
		break;
	case 2:
		cutin "bat_kiyom1",2;
		mes "[ ]";
		mes "ӿ ĿǰֵԱ";
		mes "ѵҵơλֻҪڰ칫ϾͿԴ?";
		next;
		mes "[ ]";
		mes "ټʲôƽ?";
		mes "!";
		mes "Ӧò֪ΪάֺƽᣬҪ¶ٵѪ";
		next;
		mes "[ ]";
		mes "ֻǸ֮ܶѣ";
		mes "ֽ㽺ƽɵСӿ";
		next;
		mes "[ ]";
		mes "ǰݵ˼ùҸƶ࣬ðձΪڽҲ̵ʳӵСصܹнķ٣ǿǿܵĹϵ";
		next;
		switch(select("Ը㲢ս:Ի")) {
		case 1:
			cutin "bat_kiyom2",2;
			mes "[ ]";
			mes "λɿˣ";
			mes "оܿǸ򵥵";
			next;
			mes "[ ]";
			mes "ҳֿػӭ!";
			mes "ڸڽҲս֧ԮĻǾͻҵػӭ";
			break;
		case 2:
			mes "[ ]";
			mes "ұػȡʤ!";
			break;
		}
		break;
	}
	close2;
	cutin "bat_kiyom1",255;
	cutin "bat_kiyom2",255;
	end;
}

// Flags
//============================================================
//bat_room,140,160,3	script	Guillaume Base#roomflag1	973,{ end; }
//bat_room,167,160,3	script	Guillaume Base#roomflag2	973,{ end; }
//bat_room,140,139,3	script	Croix Base#roomflag1	974,{ end; }
//bat_room,167,139,3	script	Croix Base#roomflag2	974,{ end; }

// BattleGround Warper
//============================================================
bat_room,148,150,5	script	ռƶʦ#Battlefield	124,{
	mes "[ռƶʦ]";
	mes "뿪? ҿ԰ͻǰͣĵط";
	next;
	switch(select("ش:ȥ")) {
	case 1:
		mes "[ռƶʦ]";
		switch(bat_return) {
		default:
		case 1:
			setarray .@mapname$[0],"¡.","prontera";
			setarray .@xy[0],116,72;
			break;
		case 2:
			setarray .@mapname$[0],"޿","moc_ruins";
			setarray .@xy[0],152,48;
			break;
		case 3:
			setarray .@mapname$[0],"","aldebaran";
			setarray .@xy[0],168,112;
			break;
		case 4:
			setarray .@mapname$[0],"","geffen";
			setarray .@xy[0],120,39;
			break;
		case 5:
			setarray .@mapname$[0],"","payon";
			setarray .@xy[0],161,58;
			break;
		case 6:
			setarray .@mapname$[0],"ϣ","lighthalzen";
			setarray .@xy[0],159,93;
			break;
		case 7:
			setarray .@mapname$[0],"","rachel";
			setarray .@xy[0],115,124;
			break;
		}
		mes "ͻ"+.@mapname$[0]+"";
		close2;
		warp .@mapname$[1],.@xy[0],.@xy[1];
		break;
	case 2:
		mes "[ռƶʦ]";
		mes "Ҫʱӭʱ";
		close;
	}
	end;
}

-	script	ս ļ::BatRecruit	728,{
	mes "[ս ļ]";
	mes "ðռң";
	mes "ңԶʿ";
	next;
	mes "[ս ļ]";
	mes "λֵλ̳ҪչսļḻӶ";
	mes "ԸԸһ֮?";
	next;
	switch(select("ս:ս")) {
	case 1:
		mes "[ս ļ]";
		mes "ϣľ";
		close2;
		getmapxy(.@mapname$,.@x,.@y,1);
		if (.@mapname$ == "prontera")
			set bat_return,1;
		else if (.@mapname$ == "moc_ruins")
			set bat_return,2;
		else if (.@mapname$ == "aldebaran")
			set bat_return,3;
		else if (.@mapname$ == "geffen")
			set bat_return,4;
		else if (.@mapname$ == "payon")
			set bat_return,5;
		else if (.@mapname$ == "lighthalzen")
			set bat_return,6;
		else if (.@mapname$ == "rachel")
			set bat_return,7;
		else
			set bat_return,1;
		warp "bat_room",154,150;
		break;
	case 2:
		mes "[ս ļ]";
		mes "һʱΪλ񣬵ȸıʱ";
		close;
	}
	end;
}

prontera,123,83,3	duplicate(BatRecruit)	ս ļ::BatRecruit1	728
moc_ruins,75,162,3	duplicate(BatRecruit)	ս ļ::BatRecruit2	728
aldebaran,146,109,3	duplicate(BatRecruit)	ս ļ::BatRecruit3	728
geffen,109,66,3	duplicate(BatRecruit)	ս ļ::BatRecruit4	728
payon,189,105,3	duplicate(BatRecruit)	ս ļ::BatRecruit5	728
lighthalzen,153,86,5	duplicate(BatRecruit)	ս ļ::BatRecruit6	728
rachel,149,138,3	duplicate(BatRecruit)	ս ļ::BatRecruit7	728

// Additional warps
// Empty
bat_room,57,81,0	warp	bat1	1,1,bat_room,154,149
bat_room,57,90,0	warp	bat2	1,1,bat_room,154,149
// Empty
bat_room,85,81,0	warp	bat5	1,1,bat_room,154,149
bat_room,85,90,0	warp	bat6	1,1,bat_room,154,149
// Free BG
bat_room,113,81,0	warp	bat9	1,1,bat_room,154,149
bat_room,113,90,0	warp	bat10	1,1,bat_room,154,149
// Free BG
bat_room,141,81,0	warp	bat13	1,1,bat_room,154,149
bat_room,141,90,0	warp	bat14	1,1,bat_room,154,149
// Free BG
bat_room,169,81,0	warp	bat17	1,1,bat_room,154,149
bat_room,169,90,0	warp	bat18	1,1,bat_room,154,149
// Free BG
bat_room,197,81,0	warp	bat21	1,1,bat_room,154,149
bat_room,197,90,0	warp	bat22	1,1,bat_room,154,149
// Free BG
bat_room,225,81,0	warp	bat25	1,1,bat_room,154,149
bat_room,225,90,0	warp	bat26	1,1,bat_room,154,149
// Empty
bat_room,253,81,0	warp	bat29	1,1,bat_room,154,149
bat_room,253,90,0	warp	bat30	1,1,bat_room,154,149
// Empty
bat_room,253,220,0	warp	bat31	1,1,bat_room,154,149
bat_room,253,211,0	warp	bat32	1,1,bat_room,154,149

// Kafra
//============================================================
bat_room,148,147,4	script	 ְԱ::kaf_bat	861,{
	cutin "kafra_09",2;
	callfunc "F_Kafra",0,2,1,150,0;
}

// Repairman
//============================================================
bat_room,138,144,4	script	#bg	86,{
	callfunc "repairmain","";
	end;
}

// GM Management NPC
//============================================================
bat_room,1,151,3	script	Switch#batgnd	81,{
	set .@i, callfunc("F_GM_NPC",1854,0);
	if (.@i == -1) {
		mes "The command has been cancelled.";
		close;
	} else if (.@i == 0) {
		end;
	} else {
		mes "ҪҰæ?";
		next;
		switch(select("رս:ս:a01:b01:a02:b02")) {
		case 1:
			disablenpc "Tierra Gorge Officer#01a";
			disablenpc "Tierra Gorge Officer#02a";
			disablenpc "Tierra Gorge Officer#01b";
			disablenpc "Tierra Gorge Officer#02b";
			disablenpc "Flavius Officer#01a";
			disablenpc "Flavius Officer#01b";
			disablenpc "Flavius Officer#02a";
			disablenpc "Flavius Officer#02b";
			break;
		case 2:
			enablenpc "Tierra Gorge Officer#01a";
			enablenpc "Tierra Gorge Officer#02a";
			enablenpc "Tierra Gorge Officer#01b";
			enablenpc "Tierra Gorge Officer#02b";
			enablenpc "Flavius Officer#01a";
			enablenpc "Flavius Officer#01b";
			enablenpc "Flavius Officer#02a";
			enablenpc "Flavius Officer#02b";
			break;
		case 3:
			donpcevent "start#bat_a01::OnEnable";
			break;
		case 4:
			donpcevent "start#bat_b01::OnEnable";
			break;
		case 5:
			donpcevent "start#bat_a02::OnEnable";
			break;
		case 6:
			donpcevent "start#bat_b02::OnEnable";
			break;
		}
		mes "Complete";
		close;
	}
}

// Badges Exchange
//============================================================
bat_room,160,150,3	script	׵¿	109,{
	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 "[׵¿]";
	mes "͸սõĻ?";
	mes "ҸǻعºͻƷĹ";
	next;
	switch(select("ɻ:鿴Ŀ¼")) {
	case 1:
		mes "[׵¿]";
		mes "Ҫһ?";
		mes "Ʒϸܣο ^3131FFĿ¼^000000";
		next;
		switch(select("::װƷ:Ʒ")) {
		case 1:
			mes "[׵¿]";
			mes "ѡ^3131FF^000000";
			mes "Ҫµ¼";
			mes "ֳ^3131FFͻר()^000000^3131FFعר()^000000ṩο";
			next;
			switch(select("̽/ֽ/˫ֽ/˫ǹ://˫ָ/ħ:/ȭ//:鼮/ȭ:ǹ/ǹ/ֻǹ/ǹ/񵯷")) {
			case 1:
				mes "[׵¿]";
				mes "׼ ^3131FF̽/ֽ/˫ֽ/˫ǹ^000000¼Ʒ";
				next;
				setarray .@Weapons[0],13036,7828,13037,7829,13411,7828,13410,7829,1183,7828,1184,7829,1425,7828,1482,7829;
				break;
			case 2:
				mes "[׵¿]";
				mes "׼ ^3131FF//˫ָ/ħ^000000¼Ʒ";
				next;
				setarray .@Weapons[0],1632,7828,1633,7829,1634,7828,1635,7829,1543,7828,1542,7829,1380,7828,1379,7829,13305,7828,13306,7829;
				break;
			case 3:
				mes "[׵¿]";
				mes "׼ ^3131FF/ȭ//^000000¼Ʒ";
				next;
				setarray .@Weapons[0],1739,7828,1738,7829,1279,7828,1280,7829,1924,7828,1923,7829,1978,7828,1977,7829;
				break;
			case 4:
				mes "[׵¿]";
				mes "׼ ^3131FF鼮/ȭ^000000¼Ʒ";
				next;
				setarray .@Weapons[0],1574,7828,1575,7829,1824,7828,1823,7829;
				break;
			case 5:
				mes "[׵¿]";
				mes "׼ ^3131FFǹ/ǹ/ֻǹ/ǹ/񵯷^000000¼Ʒ";
				next;
				setarray .@Weapons[0],13108,7828,13171,7829,13172,7828,13173,7829,13174,7829;
				break;
			}
			set .@menu$,"";
			for(set .@i,0; .@i<getarraysize(.@Weapons); set .@i,.@i+2)
				set .@menu$, .@menu$+getitemname(.@Weapons[.@i])+((.@Weapons[.@i+1]==7828)?"(BB)":"(VB)")+":";
			set .@i, (select(.@menu$)-1)*2;
			set .@type$, ((.@Weapons[.@i+1]==7828)?"(BB)":"(VB)");
			mes "[׵¿]";
			mes "ѡ ^3131FF"+getitemname(.@Weapons[.@i])+.@type$+"^000000";
			mes "ƷҪ ^FF0000100 "+getitemname(.@Weapons[.@i+1])+"^000000.";
			mes "Ҫ?";
			next;
			switch(select(":")) {
			case 1:
				break;
			case 2:
				mes "[׵¿]";
				mes "Would you like to spend ^FF0000100 "+getitemname(.@Weapons[.@i+1])+"^000000 and receive a ^3131FF"+getitemname(.@Weapons[.@i])+.@type$+"^000000?";
				next;
				mes "[׵¿]";
				mes "Remember, Battleground Reward Items are ^FF0000Character Bound^000000. Are you sure you want this item?";
				next;
				switch(select("Yes:No")) {
				case 1:
					mes "[׵¿]";
					if (countitem(.@Weapons[.@i+1]) >= 100) {
						mes "Thank you for exchanging.";
						delitem .@Weapons[.@i+1],100;
						getitem .@Weapons[.@i],1;
					}
					else mes "I'm sorry, but you don't have enough badges to exchange.";
					close;
				case 2:
					break;
				}
				break;
			}
			mes "[׵¿]";
			mes "Do you need more time to check the items?";
			close;
		case 2:
			mes "[׵¿]";
			mes "ѡ^3131F^000000";
			mes "Ҫµķߣ¼";
			next;
			switch(select("/ѥ:")) {
			case 1:
				setarray .@Items[0],2538,50,2539,50,2540,50,2435,50,2436,50,2437,50;
				break;
			case 2:
				setarray .@Items[0],2376,80,2377,80,2378,80,2379,80,2380,80,2381,80,2382,80;
				break;
			}
			break;
		case 3:
			mes "[׵¿]";
			mes "ѡ^3131FFװƷ^000000";
			mes "Ҫµ书ѫ£Ϊ¼ְҵϵ";
			next;
			setarray .@Items[0],2733,500,2720,500,2721,500,2722,500,2723,500,2724,500,2725,500;
			set .@menu1$,"ǹ:ʿ:::ħʦ::";
			break;
		case 4:
			mes "[׵¿]";
			mes "ѡ^3131FFƷ^000000";
			mes "ҪµƷ¼";
			next;
			setarray .@Items[0],12269,10,12270,10,12271,5,12272,10,12273,10;
			break;
		}
		break;
	case 2:
		mes "[׵¿]";
		mes "Ǳ൱ḻƷϸѡ";
		close2;
		readbook 11010,1;
		end;
	}
	set .@menu$,"";
	if (.@menu1$ != "") set .@menu$, .@menu1$;
	else for(set .@i,0; .@i<getarraysize(.@Items); set .@i,.@i+2)
		set .@menu$, .@menu$+getitemname(.@Items[.@i])+":";
	set .@i, (select(.@menu$)-1)*2;
	mes "[׵¿]";
	mes "ѡ ^3131FF"+getitemname(.@Items[.@i])+"^000000.";
	switch(.@Items[.@i]) {
		case 2720: mes "This item is for Swordman and Taekwon Master Class only."; break;
		case 2721: mes "This item is for Thief Class only."; break;
		case 2722: mes "This item is for Acolyte Class only."; break;
		case 2723: mes "This item is for Magician Class only."; break;
		case 2724: mes "This item is for Archer Class only."; break;
		case 2725: mes "This item is for Merchant Class only."; break;
		case 2733: mes "This item is for Gunslinger only."; break;
		default: break;
	}
	mes "You can exchange for this item with ^FF0000"+.@Items[.@i+1]+" "+getitemname(7828)+" or "+.@Items[.@i+1]+" "+getitemname(7829)+"^000000.";
	mes "Would you like to exchange?";
	next;
	switch(select(":")) {
	case 1:
		mes "[׵¿]";
		mes "Ҫٿһ?";
		break;
	case 2:
		mes "[׵¿]";
		mes "Ҫһֻ½?";
		mes " ^3131FF"+.@Items[.@i+1]+"^000000";
		next;
		if (.@item[0] < 12269 || .@item[0] > 12273 ) {
			mes "[׵¿]";
			mes "Remember, Battleground Reward Items are ^FF0000Character Bound^000000. Are you sure you want this item?";
			next;
		}
		set .@j, select("ͻ:ع:ȡ");
		mes "[׵¿]";
		if (.@j == 3) {
			mes "Ѿȡ";
			break;
		}
		set .@cost, ((.@j==1)?7828:7829);
		if (countitem(.@cost) >= .@Items[.@i+1]) {
			mes "лл";
			delitem .@cost, .@Items[.@i+1];
			getitem .@Items[.@i],1;
		}
		else mes ""+getitemname(.@cost)+"";
		break;
	}
	close;
}

// Badge Reward Function
//============================================================
function	script	F_BG_Badge	{

	if (getarg(2) == "Tierra") {
		set .@badge,7828; //BF_Badge1
		set .@amount_win,3;
		set .@amount_lose,1;
	} else if (getarg(2) == "Flavius") {
		set .@badge,7829; //BF_Badge2
		set .@amount_win,9;
		set .@amount_lose,3;
	} else
		return;

	if (getarg(0) == 1) {
		set .@amount, .@amount_win;
		if (getarg(1) == "Guillaume") {
			mes "[Axl Rose]";
			mes "Blessed Guillaume!";
		} else if (getarg(1) == "Croix") {
			mes "[Swandery]";
			mes "Blessed Croix!";
		}
		mes "Let's enjoy our glorious victory!";
		mes strcharinfo(0)+", it's a sign reflecting victory.";
	} else {
		set .@amount, .@amount_lose;
		if (getarg(1) == "Guillaume") {
			mes "[Axl Rose]";
			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 as a lesson, and next time you will definitely win.";
		} else if (getarg(1) == "Croix") {
			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 will win the next one.";
		}
	}
	close2;

	// If the VIP system is enabled, VIP players receive an extra 2 badges.
	if (getserverdef(VAR_VIP_SCRIPT) && vip_status(1))
		set .@amount, .@amount+2;

	set .@medal_gap, 500 - countitem(.@badge);
	if (.@medal_gap >= .@amount)
		getitem .@badge,.@amount;
	else
		getitem .@badge,.@medal_gap;
	return;
}

