//================= Hercules Script =======================================
//=       _   _                     _
//=      | | | |                   | |
//=      | |_| | ___ _ __ ___ _   _| | ___  ___
//=      |  _  |/ _ \ '__/ __| | | | |/ _ \/ __|
//=      | | | |  __/ | | (__| |_| | |  __/\__ \
//=      \_| |_/\___|_|  \___|\__,_|_|\___||___/
//================= License ===============================================
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
//= Copyright (C) 2012-2016  Hercules Dev Team
//= Copyright (C)  Euphy
//= Copyright (C)  L0ne_W0lf
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
//= the Free Software Foundation, either version 3 of the License, or
//= (at your option) any later version.
//=
//= This program is distributed in the hope that it will be useful,
//= but WITHOUT ANY WARRANTY; without even the implied warranty of
//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//= GNU General Public License for more details.
//=
//= You should have received a copy of the GNU General Public License
//= along with this program.  If not, see <http://www.gnu.org/licenses/>.
//=========================================================================
// BattleGround System - Common NPCs
//================= Description ===========================================
//= Battleground NPCs:
//= - Generals and Aides
//= - Battleground Warper
//= - Kafra and Repairman.
//= - GM Management NPC (disabled by default)
//= - Badge Exchanger (Tierra and Flavius)
//================= Current Version =======================================
//= 1.4
//=========================================================================

//== Generals ==============================================
bat_room,161,158,3	script	Gen. Guillaume's Aide#01	4_M_KY_HEAD,{ end; }
bat_room,161,160,3	script	Gen. Guillaume's Aide#03	4_M_KY_HEAD,{ end; }

bat_room,160,141,3	script	Prince Croix	4_M_CRU_CRUA,{
	cutin "bat_crua1",2;
	mes("[Prince Croix]");
	mes("Wise adventurer, why don't you lend us your power for victory?");
	next;
	switch(select("What's the reason for the Battle?", "Tell me about General Guillaume")) {
	case 1:
		cutin "bat_crua2",2;
		mes("[Prince Croix]");
		mes("Maroll's great king, Marcel Marollo VII, is very sick lately.");
		mes("His Majesty has declared that he will be leaving the future of Maroll to me or the 3rd prince, General Guillaume.");
		next;
		mes("[Prince Croix]");
		mes("General Guillaume may have an advantage in this battle as he is the great general of Maroll, but that doesn't automatically mean he'll win.");
		mes("I want to win this battle so that I can bring prosperity to the people of Maroll. They've suffered enough from war...");
		next;
		switch(select("Yes, I want to join you.", "End Conversation")) {
		case 1:
			cutin "bat_crua1",2;
			mes("[Prince Croix]");
			mes("Thank you so much. I feel like I can win with the help of adventurers like you.");
			mes("Now, please go downstairs and join your comrades in sharpening their skills to fight the enemy!");
			break;
		case 2:
			mes("[Prince Croix]");
			mes("For Maroll!");
			break;
		}
		break;
	case 2:
		cutin "bat_crua2",2;
		mes("[Prince Croix]");
		mes("The 3rd Prince Guillaume is the great general of Maroll.");
		mes("It's a waste of time to explain to you how great a leader or warlord he is, since he commands the great military power of Maroll.");
		next;
		mes("[Prince Croix]");
		mes("Unfortunately, there's something he and his followers are unaware of:");
		mes("Do the people of Maroll really want them to spend so much money on military power?");
		mes("We have suffered enough from wars.");
		mes("I believe weapons aren't the best way to bring prosperity to a nation.");
		next;
		mes("[Prince Croix]");
		mes("I do not wish to shed blood, but I have no choice but to fight for the possibility of peace and for the sake of my people.");
		next;
		switch(select("Yes, I want to join you.", "End Conversation")) {
		case 1:
			cutin "bat_crua1",2;
			mes("[Prince Croix]");
			mes("Thank you so much. I feel like I can win with the help of adventurers like you.");
			mes("Now, please go downstairs and join your comrades in sharpening their skills to fight the enemy!");
			break;
		case 2:
			mes("[Prince Croix]");
			mes("For Maroll!");
			break;
		}
		break;
	}
	close2;
	cutin "bat_crua1",255;
	cutin "bat_crua2",255;
	end;
}

bat_room,161,140,3	script	Prince Croix's Aide#01	4_M_CRU_HEAD,{ end; }
bat_room,161,142,3	script	Prince Croix's Aide#02	4_M_CRU_HEAD,{ end; }

bat_room,160,159,3	script	General Guillaume	4_M_KY_KIYOM,{
	cutin "bat_kiyom2",2;
	mes("[General Guillaume]");
	mes("Hot-blooded adventurer, we need your ability to win this battle.");
	next;
	switch(select("What's the reason for the Battle?", "Tell me about Prince Croix")) {
	case 1:
		cutin "bat_kiyom1",2;
		mes("[General Guillaume]");
		mes("Our great king, Marcel Marollo VII, is very sick lately.");
		mes("His Majesty has declared that he has chosen either me or Prince Croix as the next king amongst his 9 sons.");
		next;
		mes("[General Guillaume]");
		mes("Two kings can't share a nation! Only the one victorious from His Majesty's appointed battle will be enthroned.");
		next;
		mes("[General Guillaume]");
		mes("This is, however, not just a battle between us. This battle will determine the future of this country.");
		mes("I pledge on my honor to prove that I'm the one who can protect this Maroll from outside threats.");
		next;
		switch(select("Yes, I want to join you.", "End Conversation")) {
		case 1:
			cutin "bat_kiyom2",2;
			mes("[General Guillaume]");
			mes("Welcome to my army, comrade.");
			mes("Your eyes tell me that you're a soldier that I can trust.");
			next;
			mes("[General Guillaume]");
			mes("Now, go upstairs and apply for battle with your comrades.");
			mes("I'm sure they'll welcome you whole-heartedly!");
			break;
		case 2:
			mes("[General Guillaume]");
			mes("I'll be the one who will capture the flag!");
			break;
		}
		break;
	case 2:
		cutin "bat_kiyom1",2;
		mes("[General Guillaume]");
		mes("The 5th Prince Croix is currently titled as the Prime Minister of Maroll.");
		mes("He thinks all national matters of a nation can be discussed and determined on a desk,\r"
			"and believes in peaceful co-existence with other countries.");
		next;
		mes("[General Guillaume]");
		mes("He's too ignorant to admit that so-called peace is built on countless lives that are sacrificed in "
			"wars while normal citizens and upper classes can live, oblivious to the horrors that allow them to live that way.");
		next;
		mes("[General Guillaume]");
		mes("He's too naive to understand the reality....");
		mes("I can't leave Maroll to someone like him who lives in a dream!");
		next;
		mes("[General Guillaume]");
		mes("His unrealistic beliefs will drown this country in poverty and make the people weak. If he becomes the king, "
				"Maroll will never rest from the onslaughts of other countries.");
		mes("I want to teach him what makes this small country so powerful and prosperous. It's military power!");
		next;
		switch(select("I want to join your army!", "End Conversation")) {
		case 1:
			cutin "bat_kiyom2",2;
			mes("[General Guillaume]");
			mes("Welcome to my army, comrade.");
			mes("Your eyes tell me that you're a soldier that I can trust.");
			next;
			mes("[General Guillaume]");
			mes("Now, go upstairs and apply for battle from your comrades.");
			mes("I'm sure they'll welcome you whole-heartedly!");
			break;
		case 2:
			mes("[General Guillaume]");
			mes("I'll be the one who will capture the flag!");
			break;
		}
		break;
	}
	close2;
	cutin "bat_kiyom1",255;
	cutin "bat_kiyom2",255;
	end;
}

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

//== BattleGround Warper ===================================
bat_room,148,150,5	script	Teleporter#Battlefield	4_F_TELEPORTER,{
	mes("[Teleporter]");
	mes("Do you wish to leave the battlefield? Use my services to return to town.");
	next;
	switch(select("Leave", "Don't Leave")) {
	case 1:
		mes("[Teleporter]");
		switch(bat_return) {
		default:
		case 1:
			setarray .@mapname$[0], _("Prontera"), "prontera";
			setarray .@xy[0],116,72;
			break;
		case 2:
			setarray .@mapname$[0], _("Morroc"), "moc_ruins";
			setarray .@xy[0],152,48;
			break;
		case 3:
			setarray .@mapname$[0], _("Al De Baran"), "aldebaran";
			setarray .@xy[0],168,112;
			break;
		case 4:
			setarray .@mapname$[0], _("Geffen"), "geffen";
			setarray .@xy[0],120,39;
			break;
		case 5:
			setarray .@mapname$[0], _("Payon"), "payon";
			setarray .@xy[0],161,58;
			break;
		case 6:
			setarray .@mapname$[0], _("Lighthalzen"), "lighthalzen";
			setarray .@xy[0],159,93;
			break;
		case 7:
			setarray .@mapname$[0], _("Rachel"), "rachel";
			setarray .@xy[0],115,124;
			break;
		}
		mesf("You will be sent back to %s.", .@mapname$[0]);
		close2;
		warp .@mapname$[1],.@xy[0],.@xy[1];
		break;
	case 2:
		mes("[Teleporter]");
		mes("I'll be here whenever you're in need of my services.");
		close;
	}
	end;
}

-	script	Maroll Battle Recruiter::BatRecruit	4_F_JOB_KNIGHT,{
	mes("[Maroll Battle Recruiter]");
	mes("Good day, adventurer.");
	mes("I'm a knight from a far country called Maroll Kingdom.");
	next;
	mes("[Maroll Battle Recruiter]");
	mes("The two princes of the kingdom are now battling for the throne of Maroll, and are in need of experienced soldiers like you.");
	mes("How would you like to lend your power to one of the princes in the Maroll Kingdom?");
	next;
	switch(select("Join", "Don't Join")) {
	case 1:
		mes("[Maroll Battle Recruiter]");
		mes("May the war god bless you.");
		close2;
		getmapxy(.@mapname$, .@x, .@y, UNITTYPE_NPC);
		if (.@mapname$ == "prontera")
			bat_return = 1;
		else if (.@mapname$ == "moc_ruins")
			bat_return = 2;
		else if (.@mapname$ == "aldebaran")
			bat_return = 3;
		else if (.@mapname$ == "geffen")
			bat_return = 4;
		else if (.@mapname$ == "payon")
			bat_return = 5;
		else if (.@mapname$ == "lighthalzen")
			bat_return = 6;
		else if (.@mapname$ == "rachel")
			bat_return = 7;
		else
			bat_return = 1;
		warp "bat_room",154,150;
		break;
	case 2:
		mes("[Maroll Battle Recruiter]");
		mes("I'll always be stationed here for more soldiers. Feel free to come back whenever you're interested.");
		close;
	}
	end;
}

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

//== 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	Kafra Staff::kaf_bat	4_F_KAFRA9,{
	cutin "kafra_09",2;
	callfunc "F_Kafra",0,2,1,150,0;
}

//== Repairman =============================================
bat_room,138,144,4	script	Repairman#bg	4_M_04,{
	callfunc("repairmain", _("Repairman"));
	end;
}

//== GM Management NPC =====================================
bat_room,1,151,3	script	Switch#batgnd	4_DOG01,{
	.@i = callfunc("F_GM_NPC",1854,0);
	if (.@i == -1) {
		mes("The command has been cancelled.");
		close;
	} else if (.@i == 0) {
		end;
	} else {
		mes("May I help you?");
		next;
		switch(select("Close Battlefield", "Open Battlefield", "Reset a01", "Reset b01", "Reset a02", "Reset 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	Erundek	4_M_MANAGER,{
	if (checkweight(Knife,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("[Erundek]");
	mes("Do you have the battlefield badges?");
	mes("I can exchange Bravery Badges and Valor Badges for reward items.");
	next;
	switch(select("Exchange Badges", "Check the Catalog")) {
	case 1:
		mes("[Erundek]");
		mes("Which type of items would you like to exchange?");
		mes("To check more information about the reward items, please use our ^3131FFCatalog^000000.");
		next;
		switch(select("Weapon", "Armor", "Accessory", "Consumable")) {
		case 1:
			mes("[Erundek]");
			mes("You chose ^3131FFWeapon^000000.");
			mes("The following weapons are available for exchange with the battlefield badges.");
			mes("Please note that items for ^3131FFBravery Badges are indicated as (BB)^000000, and ^3131FFValor Badges as (VB)^000000.");
			next;
			switch(select("Dagger/OneSword/TwoSword/TwoSpear", "Staff/Mace/TwoAxe/Shuriken", "Bow/Katar/Music/Whip", "Book/Knuckle", "Revolver/Rifle/Gatling/Shotgun/Launcher")) {
			case 1:
				mes("[Erundek]");
				mes("The following items are available in the ^3131FFDagger, One-Handed Sword, Two-Handed Sword, and Two-Handed Spear^000000 category.");
				next;
				setarray .@Weapons[0],13036,7828,13037,7829,13411,7828,13410,7829,1183,7828,1184,7829,1425,7828,1482,7829;
				break;
			case 2:
				mes("[Erundek]");
				mes("The following items are available in the ^3131FFStaff / Mace / Two-Handed Axe / Huuma Shuriken^000000 category.");
				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("[Erundek]");
				mes("The following weapons are available in the ^3131FFBow / Katar / Musical Instrument / Whip^000000 category.");
				next;
				setarray .@Weapons[0],1739,7828,1738,7829,1279,7828,1280,7829,1924,7828,1923,7829,1978,7828,1977,7829;
				break;
			case 4:
				mes("[Erundek]");
				mes("The following weapons are available in the ^3131FFBook / Knuckle^000000 category.");
				next;
				setarray .@Weapons[0],1574,7828,1575,7829,1824,7828,1823,7829;
				break;
			case 5:
				mes("[Erundek]");
				mes("The following weapons are available in the ^3131FFRevolver / Rifle / Gatling Gun / Shotgun / Grenade Launcher^000000 category.");
				next;
				setarray .@Weapons[0],13108,7828,13171,7829,13172,7828,13173,7829,13174,7829;
				break;
			}
			.@menu$ = "";
			for (.@i = 0; .@i < getarraysize(.@Weapons); .@i += 2)
				.@menu$ += getitemname(.@Weapons[.@i]) + ((.@Weapons[.@i+1]==7828) ? _("(BB)") : _("(VB)")) + ":";
			.@i = (select(.@menu$)-1)*2;
			.@type$ = ((.@Weapons[.@i+1]==7828) ? _("(BB)") : _("(VB)"));
			mes("[Erundek]");
			mesf("You chose ^3131FF%s%s^000000.", getitemname(.@Weapons[.@i]), .@type$);
			mesf("You can exchange for this item with ^FF0000100 %s^000000.", getitemname(.@Weapons[.@i+1]));
			mes("Would you like to exchange?");
			next;
			switch(select("Do not exchange", "Exchange")) {
			case 1:
				break;
			case 2:
				mes("[Erundek]");
				mesf("Would you like to spend ^FF0000100 %s^000000 and receive a ^3131FF%s%s^000000?",
					getitemname(.@Weapons[.@i+1]), getitemname(.@Weapons[.@i]), .@type$);
				next;
				mes("[Erundek]");
				mes("Remember, Battleground Reward Items are ^FF0000Character Bound^000000. Are you sure you want this item?");
				next;
				switch(select("Yes", "No")) {
				case 1:
					mes("[Erundek]");
					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("[Erundek]");
			mes("Do you need more time to check the items?");
			close;
		case 2:
			mes("[Erundek]");
			mes("You chose ^3131FFArmor^000000.");
			mes("The following armors are available for exchange with the battlefield badges.");
			next;
			switch(select("Garments / Shoes", "Armor")) {
			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("[Erundek]");
			mes("You chose ^3131FFAccessory^000000.");
			mes("You can exchange the Medal of Honors with your Badges according to the job classes, as follows:");
			next;
			setarray .@items[0],2733,500,2720,500,2721,500,2722,500,2723,500,2724,500,2725,500;
			.@menu1$ = sprintf("%s:%s/%s:%s:%s:%s:%s:%s",
					jobname(Job_Gunslinger), jobname(Job_Swordman), jobname(Job_Star_Gladiator), jobname(Job_Thief),
					jobname(Job_Acolyte), jobname(Job_Mage), jobname(Job_Archer), jobname(Job_Merchant));
			break;
		case 4:
			mes("[Erundek]");
			mes("You chose ^3131FFConsumable^000000.");
			mes("The following consumable items are available for exchange with the battlefield badges:");
			next;
			setarray .@items[0],12269,10,12270,10,12271,5,12272,10,12273,10;
			break;
		}
		break;
	case 2:
		mes("[Erundek]");
		mes("We have many items, so please take a look and purchase deliberately.");
		close2;
		readbook 11010,1;
		end;
	}
	.@menu$ = "";
	if (.@menu1$ != "") .@menu$ = .@menu1$;
	else for (.@i = 0; .@i < getarraysize(.@items); .@i += 2)
		.@menu$ += getitemname(.@items[.@i])+":";
	.@i = (select(.@menu$)-1)*2;
	mes("[Erundek]");
	mesf("You chose ^3131FF%s^000000.", getitemname(.@items[.@i]));
	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;
	}
	mesf("You can exchange for this item with ^FF0000%d %s or %d %s^000000.", .@items[.@i+1], getitemname(7828), .@items[.@i+1], getitemname(7829));
	mes("Would you like to exchange?");
	next;
	switch(select("Do not exchange", "Exchange")) {
	case 1:
		mes("[Erundek]");
		mes("Do you need more time to check the items?");
		break;
	case 2:
		mes("[Erundek]");
		mes("Which Badge do you want to exchange?");
		mesf("You need ^3131FF%d Badges^000000 to exchange.", .@items[.@i+1]);
		next;
		if (.@item[0] < 12269 || .@item[0] > 12273 ) {
			mes("[Erundek]");
			mes("Remember, Battleground Reward Items are ^FF0000Character Bound^000000. Are you sure you want this item?");
			next;
		}
		.@j = select("Bravery Badge", "Valor Badge", "Cancel");
		mes("[Erundek]");
		if (.@j == 3) {
			mes("You cancelled the exchange.");
			break;
		}
		.@cost = ((.@j==1)?7828:7829);
		if (countitem(.@cost) >= .@items[.@i+1]) {
			mes("Thank you for exchanging.");
			delitem .@cost, .@items[.@i+1];
			getitem .@items[.@i],1;
		}
		else mesf("You do not have enough %ss.", getitemname(.@cost));
		break;
	}
	close;
}
