//===== rAthena Script ======================================= 
//= BattleGround System - Common NPCs
//===== By: ================================================== 
//= ????, L0ne_W0lf
//===== Current Version: ===================================== 
//= 1.5
//===== Compatible With: ===================================== 
//= rAthena Project
//===== 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 "Erundek" 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	Gen. Guillaume's Aide#01	419,{ end; }
bat_room,161,160,3	script	Gen. Guillaume's Aide#03	419,{ end; }

bat_room,160,141,3	script	Prince Croix	416,{
	cutin "bat_crua1",2;
	mes "[Prince Croix]";
	mes "Wise adventurer, why don't you lend us your power for victory?";
	next;
	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	415,{ end; }
bat_room,161,142,3	script	Prince Croix's Aide#02	415,{ end; }

bat_room,160,159,3	script	General Guillaume	420,{
	cutin "bat_kiyom2",2;
	mes "[General Guillaume]";
	mes "Hot-blooded adventurer, we need your ability to win this battle.";
	next;
	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,";
		mes "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	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	Teleporter#Battlefield	124,{
	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],"Morocc Ruins.","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;
		case 8:
			setarray .@mapname$[0],"Morocc.","morocc";
			setarray .@xy[0],156,46;
			break;
		}
		mes "You will be sent back to "+.@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	728,{
	mes "[Maroll Battle Recruiter]";
	mes "Good day, adventurer.";
	mes "I'm a knight from a far country called Maroll Kingdom.";
	next;
	mes "[Maroll Battle Recruiter]";
	mes "The two princes of the kingdom are now battling for the throne of Maroll, and are in need of experienced soldiers 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,BL_NPC);
		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 if (.@mapname$ == "morocc")
			set bat_return,8;
		else
			set 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	728
moc_ruins,75,162,3	duplicate(BatRecruit)	Maroll Battle Recruiter::BatRecruit2	728
aldebaran,146,109,3	duplicate(BatRecruit)	Maroll Battle Recruiter::BatRecruit3	728
geffen,109,66,3	duplicate(BatRecruit)	Maroll Battle Recruiter::BatRecruit4	728
payon,189,105,3	duplicate(BatRecruit)	Maroll Battle Recruiter::BatRecruit5	728
lighthalzen,153,86,5	duplicate(BatRecruit)	Maroll Battle Recruiter::BatRecruit6	728
rachel,149,138,3	duplicate(BatRecruit)	Maroll Battle Recruiter::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	Kafra Staff::kaf_bat	861,{
	cutin "kafra_09",2;
	callfunc "F_Kafra",0,2,1,150,0;
}

// Repairman
//============================================================
bat_room,138,144,4	script	Repairman#bg	86,{
	callfunc "repairmain","Repairman";
	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 "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	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 "[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;
			}
			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 "[Erundek]";
			mes "You chose ^3131FF"+getitemname(.@Weapons[.@i])+.@type$+"^000000.";
			mes "You can exchange for this item with ^FF0000100 "+getitemname(.@Weapons[.@i+1])+"^000000.";
			mes "Would you like to exchange?";
			next;
			switch(select("Do not exchange:Exchange")) {
			case 1:
				break;
			case 2:
				mes "[Erundek]";
				mes "Would you like to spend ^FF0000100 "+getitemname(.@Weapons[.@i+1])+"^000000 and receive a ^3131FF"+getitemname(.@Weapons[.@i])+.@type$+"^000000?";
				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;
			set .@menu1$,"Gunslinger:Swordman/Taekwon Master:Thief:Acolyte:Magician:Archer: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;
	}
	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 "[Erundek]";
	mes "You chose ^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("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?";
		mes "You need ^3131FF"+.@Items[.@i+1]+" Badges^000000 to exchange.";
		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;
		}
		set .@j, select("Bravery Badge:Valor Badge:Cancel");
		mes "[Erundek]";
		if (.@j == 3) {
			mes "You cancelled the exchange.";
			break;
		}
		set .@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 mes "You do not have enough "+getitemname(.@cost)+"s.";
		break;
	}
	close;
}

// Badge Reward Function
//============================================================
function	script	F_BG_Badge	{
	.@team$ = getarg(1);
	.@bg_type$ = getarg(2);

	if (.@bg_type$ == "Tierra") {
		set .@badge,7828; //BF_Badge1
		set .@amount_win,3;
		set .@amount_lose,1;
	} else if (.@bg_type$ == "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 (.@team$ == "Guillaume") {
			mes "[Axl Rose]";
			mes "Blessed Guillaume!";
		} else if (.@team$ == "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 (.@team$ == "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 (.@team$ == "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 (VIP_SCRIPT && vip_status(VIP_STATUS_ACTIVE))
		set .@amount, .@amount+2;

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