//===== Hercules Script ======================================
// BattleGround System - Flavius
//===== By: ==================================================
//= L0ne_W0lf
//===== Current Version: =====================================
//= 1.5b
//===== Description: =========================================
//= [AEGIS Conversion]
//= Flavius Battleground.
//= - Winning Team: 9 badges
//= - Losing Team: 3 badge
//===== Additional Comments: =================================
//= 1.0  First Version.
//= 1.1  Fixed pink crystal spawning as blue. [L0ne_W0lf]
//= 1.2  Updated 'waitingroom' to support required zeny/lvl. [Kisuka]
//= 1.3  Removed MaxLvl check in waitingrooms. Replaced setwall with setcell.
//= 1.4  Attempt at implementing BG Queue [Ind/Hercules]
//= 1.5  Attempt at implementing BG Queue team-algorithm [jaBote]
//= 1.5b Adjustments to the team-splitting algorithm [Haruna]
//============================================================

//Tacham, while the script is under testings the original will remain, meaning if you wanna test this you need to disable the other, or they'll conflict.
bat_b01,15,15,3	script	start#bat_b01	CLEAR_NPC,{
OnInit:
	mapwarp "bat_b01","bat_room",154,150;
	end;

//$@bg_queue_id is cleared after this event ends
OnPlayerListReady:
	set $@FlaviusBG1_id1, bg_create_team("bat_b01",10,290);
	set $@FlaviusBG1_id2, bg_create_team("bat_b01",390,10);

	set $@Croix_QueueBG1, queue();
	set $@Guill_QueueBG1, queue();

	queueopt($@Guill_QueueBG1, QUEUEOPT_LOGOUT, "start#bat_b01::OnGuillaumeQuit");
	queueopt($@Croix_QueueBG1, QUEUEOPT_LOGOUT, "start#bat_b01::OnCroixQuit");

	set .@i, 0;

	copyarray .@bg_member[0],$@bg_member[0],$@bg_member_size;
	copyarray .@bg_member_group[0],$@bg_member_group[0],$@bg_member_size;
	copyarray .@bg_member_type[0],$@bg_member_type[0],$@bg_member_size;

	freeloop(1);
	// Counting all participants and determining sizes, condensing .@bg_member_group
	set .@nogroupcount, 0;
	for (set .@i, 0; .@i < getarraysize(.@bg_member); set .@i, .@i + 1) {
		if (.@bg_member_group[.@i] == 0) { // Just count them
			set .@nogroupcount, .@nogroupcount + 1;
			continue;
		}
		// check if .@bg_member_group and .@bg_member_type already exists on these groups.
		for (set .@j, 0; .@j < getarraysize(.@bg_groups); set .@j, .@j + 1) { // <= since it has to start working even if the array is still blank
			if ( (.@bg_member_group[.@i] == .@bg_groups[.@j]) && (.@bg_member_type[.@i] == .@bg_types[.@j]) ) {
				set .@bg_count[.@j], .@bg_count[.@j] + 1;
				break;
			}
			// Else keep running the loop until we find there's a group already made or make a new one
		}
		if (.@j == (getarraysize(.@bg_groups)) ) { // It isn't there, insert a new entry at j
			set .@bg_groups[.@j], .@bg_member_group[.@i];
			set .@bg_types[.@j], .@bg_member_type[.@i];
			set .@bg_count[.@j], 1;
		}
	}

	// Now, sorting the group arrays from amount of population descending! Bubble sort powers, I call upon thee!
	// Type doesn't matter here for precedence checks, but also needs to be sorted the same way along with groups
	for (set .@i, 0; .@i < getarraysize(.@bg_groups); set .@i, .@i + 1) {
		for (set .@j, 0; .@j < (getarraysize(.@bg_groups) - .@i); set .@j, .@j + 1) {
			if (.@bg_count[.@j] < .@bg_count[.@j+1]){
				set .@temp1, .@bg_groups[.@j];
				set .@temp2, .@bg_types[.@j];
				set .@temp3, .@bg_count[.@j];
				set .@bg_groups[.@j], .@bg_groups[.@j+1];
				set .@bg_types[.@j], .@bg_types[.@j+1];
				set .@bg_count[.@j], .@bg_count[.@j+1];
				set .@bg_groups[.@j+1], .@temp1;
				set .@bg_types[.@j+1], .@temp2;
				set .@bg_count[.@j+1], .@temp3;
			}
		}
	}

	// Add the groups to the queues! :D
	for (set .@i, 0; .@i < getarraysize(.@bg_groups); set .@i, .@i + 1){
		if (queuesize($@Croix_QueueBG1) <= queuesize($@Guill_QueueBG1)){ // Catch'em all and add to the queue!
			for (set .@j, 0; .@j < getarraysize(.@bg_member); set .@j, .@j + 1) {
				if ( (.@bg_groups[.@i] == .@bg_member_group[.@j]) && (.@bg_types[.@i] == .@bg_member_type[.@j]) ) {
					bg_join_team($@FlaviusBG1_id1,.@bg_member[.@j]);
					queueadd($@Croix_QueueBG1, .@bg_member[.@j]);
				}
			}
		}
		else {
			for (set .@j, 0; .@j < getarraysize(.@bg_member); set .@j, .@j + 1) {
				if ( (.@bg_groups[.@i] == .@bg_member_group[.@j]) && (.@bg_types[.@i] == .@bg_member_type[.@j]) ) {
					bg_join_team($@FlaviusBG1_id2,.@bg_member[.@j]);
					queueadd($@Guill_QueueBG1, .@bg_member[.@j]);
				}
			}
		}
	}
	// Don't forget the people that go on their own!
	for (set .@i, 0; .@i <= getarraysize(.@bg_member); set .@i, .@i+1) {
		if (.@bg_member_group[.@i] == 0) { // Get alone people only
			if (queuesize($@Croix_QueueBG1) <= queuesize($@Guill_QueueBG1)) {
				bg_join_team($@FlaviusBG1_id1,.@bg_member[.@i]);
				queueadd($@Croix_QueueBG1, .@bg_member[.@i]);
			}
			else {
				bg_join_team($@FlaviusBG1_id2,.@bg_member[.@i]);
				queueadd($@Guill_QueueBG1, .@bg_member[.@i]);
			}
		}
	}
	freeloop(0);

	set $@FlaviusBG1, 1;
	set $@FlaviusBG1_Victory, 0;
	set $@Croix_ScoreBG1, 0;
	set $@Guill_ScoreBG1, 0;

	bg_updatescore "bat_b01",$@Guill_ScoreBG1,$@Croix_ScoreBG1;

	donpcevent "OBJ#bat_b01_a::OnKill";
	donpcevent "OBJ#bat_b01_a::OnEnable";
	donpcevent "OBJ#bat_b01_b::OnKill";
	donpcevent "OBJ#bat_b01_b::OnEnable";
	donpcevent "guardian#bat_b01_a::OnKill";
	donpcevent "guardian#bat_b01_b::OnKill";
	donpcevent "guardian#bat_b01_a::OnEnable";
	donpcevent "guardian#bat_b01_b::OnEnable";
	donpcevent "cell#bat_b01_a::OnRed";
	donpcevent "cell#bat_b01_b::OnRed";
	donpcevent "time#bat_b01::OnEnable";
	disablenpc "Guillaume Vintenar#b01_a";
	disablenpc "Croix Vintenar#b01_b";
	disablenpc "Vintenar#bat_b01_aover";
	disablenpc "Vintenar#bat_b01_bover";
	bg_warp $@FlaviusBG1_id1,"bat_b01",87,75;
	bg_warp $@FlaviusBG1_id2,"bat_b01",311,224;

	/* after warp */
	queueopt($@Guill_QueueBG1, QUEUEOPT_MAPCHANGE, "start#bat_b01::OnGuillaumeQuit");
	queueopt($@Croix_QueueBG1, QUEUEOPT_MAPCHANGE, "start#bat_b01::OnCroixQuit");

	donpcevent "countdown#bat_b01::OnEnable";
	end;

OnReset:
	donpcevent "OBJ#bat_b01_a::OnKill";
	donpcevent "OBJ#bat_b01_a::OnEnable";
	donpcevent "OBJ#bat_b01_b::OnKill";
	donpcevent "OBJ#bat_b01_b::OnEnable";
	donpcevent "guardian#bat_b01_a::OnKill";
	donpcevent "guardian#bat_b01_b::OnKill";
	donpcevent "guardian#bat_b01_a::OnEnable";
	donpcevent "guardian#bat_b01_b::OnEnable";
	donpcevent "cell#bat_b01_a::OnRed";
	donpcevent "cell#bat_b01_b::OnRed";
	donpcevent "time#bat_b01::OnEnable";
	disablenpc "Guillaume Vintenar#b01_a";
	disablenpc "Croix Vintenar#b01_b";
	disablenpc "Vintenar#bat_b01_aover";
	disablenpc "Vintenar#bat_b01_bover";
	bg_warp $@FlaviusBG1_id1,"bat_b01",87,75;
	bg_warp $@FlaviusBG1_id2,"bat_b01",311,224;
	end;

OnCroixQuit:
	queueremove($@Croix_QueueBG1,getcharid(CHAR_ID_ACCOUNT));
	callsub L_OnPlayerQuit;
	end;

OnGuillaumeQuit:
	queueremove($@Guill_QueueBG1,getcharid(CHAR_ID_ACCOUNT));
	callsub L_OnPlayerQuit;
	end;

L_OnPlayerQuit:
	bg_leave;
	setd $@bg_delay_var$,gettimetick(2);
	if( queuesize($@Guill_QueueBG1) == 0 || queuesize($@Croix_QueueBG1) == 0 ) /* todo check score and decide a winner if anyone left */
		callsub OnMatchOver;
	end;

OnMatchOver:
	if( $@FlaviusBG1_id1 || $@FlaviusBG1_id2 ) {
		queuedel($@Croix_QueueBG1);
		queuedel($@Guill_QueueBG1);
		bg_match_over("Flavius");
	}
	if( $@FlaviusBG1_id1 ) { bg_destroy $@FlaviusBG1_id1; set $@FlaviusBG1_id1, 0; }
	if( $@FlaviusBG1_id2 ) { bg_destroy $@FlaviusBG1_id2; set $@FlaviusBG1_id2, 0; }
	end;
}

bat_b01,1,1,3	script	OBJ#bat_b01_a	CLEAR_NPC,{
OnEnable:
	bg_monster $@FlaviusBG1_id1,"bat_b01",61,150,"Pink Crystal",1915,"OBJ#bat_b01_a::OnMyMobDead";
	end;

OnKill:
	killmonster "bat_b01","OBJ#bat_b01_a::OnMyMobDead";
	end;

OnMyMobDead:
	if (mobcount("bat_b01","OBJ#bat_b01_a::OnMyMobDead") < 1) {
		mapannounce "bat_b01", "Guillaume's Crystal has been destroyed.",bc_map,"0xFFCE00";
		if ($@Croix_ScoreBG1 > 0) {
			set $@FlaviusBG1_Victory,2;
			set $@Croix_ScoreBG1,$@Croix_ScoreBG1+1;
			enablenpc "Guillaume Vintenar#b01_a";
			enablenpc "Croix Vintenar#b01_b";
			donpcevent "time#bat_b01::OnStop";
			donpcevent "start#bat_b01::OnMatchOver";
		}
		else {
			set $@Croix_ScoreBG1,1;
			donpcevent "time#bat_b01::OnEnable";
			donpcevent "start#bat_b01::OnReset";
		}
		bg_updatescore "bat_b01",$@Guill_ScoreBG1,$@Croix_ScoreBG1;
		bg_warp $@FlaviusBG1_id1,"bat_b01",10,290;
		bg_warp $@FlaviusBG1_id2,"bat_b01",390,10;
	}
	end;
}
bat_b01,1,2,3	script	OBJ#bat_b01_b	CLEAR_NPC,{
OnEnable:
	bg_monster $@FlaviusBG1_id2,"bat_b01",328,150,"Blue Crystal",1914,"OBJ#bat_b01_b::OnMyMobDead";
	end;

OnKill:
	killmonster "bat_b01","OBJ#bat_b01_b::OnMyMobDead";
	end;

OnMyMobDead:
	if (mobcount("bat_b01","OBJ#bat_b01_b::OnMyMobDead") < 1) {
		mapannounce "bat_b01", "Croix's Crystal has been destroyed.",bc_map,"0xFFCE00";
		if ($@Guill_ScoreBG1 > 0) {
			set $@FlaviusBG1_Victory,1;
			set $@Guill_ScoreBG1,$@Guill_ScoreBG1+1;
			enablenpc "Guillaume Vintenar#b01_a";
			enablenpc "Croix Vintenar#b01_b";
			donpcevent "time#bat_b01::OnStop";
			donpcevent "start#bat_b01::OnMatchOver";
		}
		else {
			set $@Guill_ScoreBG1,1;
			donpcevent "time#bat_b01::OnEnable";
			donpcevent "start#bat_b01::OnReset";
		}
		bg_updatescore "bat_b01",$@Guill_ScoreBG1,$@Croix_ScoreBG1;
		bg_warp $@FlaviusBG1_id1,"bat_b01",10,290;
		bg_warp $@FlaviusBG1_id2,"bat_b01",390,10;
	}
	end;
}

bat_b01,1,3,3	script	guardian#bat_b01_a	CLEAR_NPC,{
OnEnable:
	bg_monster $@FlaviusBG1_id1,"bat_b01",108,159,"Guillaume Camp Guardian",1949,"guardian#bat_b01_a::OnMyMobDead";
	bg_monster $@FlaviusBG1_id1,"bat_b01",108,141,"Guillaume Camp Guardian",1949,"guardian#bat_b01_a::OnMyMobDead";
	end;

OnKill:
	killmonster "bat_b01","guardian#bat_b01_a::OnMyMobDead";
	end;

OnMyMobDead:
	if (mobcount("bat_b01","guardian#bat_b01_a::OnMyMobDead") < 1) {
		donpcevent "cell#bat_b01_a::OnGreen";
		mapannounce "bat_b01", "The Guardian protecting Guillaume's Crystal has been slain.",bc_map,"0xFFCE00";
	}
	end;
}

bat_b01,1,3,3	script	guardian#bat_b01_b	CLEAR_NPC,{
OnEnable:
	bg_monster $@FlaviusBG1_id2,"bat_b01",307,160,"Croix Camp Guardian",1949,"guardian#bat_b01_b::OnMyMobDead";
	bg_monster $@FlaviusBG1_id2,"bat_b01",307,138,"Croix Camp Guardian",1949,"guardian#bat_b01_b::OnMyMobDead";
	end;

OnKill:
	killmonster "bat_b01","guardian#bat_b01_b::OnMyMobDead";
	end;

OnMyMobDead:
	if (mobcount("bat_b01","guardian#bat_b01_b::OnMyMobDead") < 1) {
		donpcevent "cell#bat_b01_b::OnGreen";
		mapannounce "bat_b01", "The Guardian protecting Croix's Crystal has been slain.",bc_map,"0xFFCE00";
	}
	end;
}

bat_b01,1,4,3	script	cell#bat_b01_a	CLEAR_NPC,{
OnRed:
	setcell "bat_b01",62,149,60,151,cell_basilica,1;
	setcell "bat_b01",62,149,60,151,cell_walkable,0;
	end;

OnGreen:
	setcell "bat_b01",62,149,60,151,cell_basilica,0;
	setcell "bat_b01",62,149,60,151,cell_walkable,1;
	end;
}

bat_b01,1,5,3	script	cell#bat_b01_b	CLEAR_NPC,{
OnRed:
	setcell "bat_b01",327,151,329,149,cell_basilica,1;
	setcell "bat_b01",327,151,329,149,cell_walkable,0;
	end;

OnGreen:
	setcell "bat_b01",327,151,329,149,cell_basilica,0;
	setcell "bat_b01",327,151,329,149,cell_walkable,1;
	end;
}

bat_b01,1,6,1	script	time#bat_b01	CLEAR_NPC,{
OnEnable:
	donpcevent "Battle Therapist#b01_a::OnEnable";
	donpcevent "Battle Therapist#b01_b::OnEnable";
	end;

OnStop:
	donpcevent "Battle Therapist#b01_a::OnStop";
	donpcevent "Battle Therapist#b01_b::OnStop";
	end;
}

bat_b01,10,294,3	script	Battle Therapist#b01_a	4_F_SISTER,{
	specialeffect(EF_HEAL, AREA, playerattached());
	mes "[Battle Therapist]";
	mes "Just close your eyes,";
	mes "and take a deep breath.";
	mes "You can be free from pain.";
	close;

OnTimer25000:
	specialeffect EF_SANCTUARY;
	enablenpc "bat_b01_rp1_a_warp";
	end;

OnTimer26000:
	disablenpc "bat_b01_rp1_a_warp";
	end;

OnTimer26500:
	stopnpctimer;
	donpcevent "Battle Therapist#b01_a::OnEnable";
	end;

OnEnable:
	initnpctimer;
	enablenpc "Battle Therapist#b01_a";
	end;

OnStop:
	disablenpc "bat_b01_rp1_a_warp";
	disablenpc "Battle Therapist#b01_a";
	stopnpctimer;
	end;
}

bat_b01,10,290,0	script	bat_b01_rp1_a_warp	WARPNPC,10,10,{
OnInit:
	disablenpc "bat_b01_rp1_a_warp";
	end;

OnTouch:
	percentheal 100,100;
	warp "bat_b01",87,73;
	end;
}

bat_b01,389,14,3	script	Battle Therapist#b01_b	4_F_SISTER,{
	specialeffect(EF_HEAL, AREA, playerattached());
	mes "[Battle Therapist]";
	mes "Just close your eyes,";
	mes "and take a deep breath.";
	mes "You can be free from pain.";
	close;

OnTimer25000:
	specialeffect EF_SANCTUARY;
	enablenpc "bat_b01_rp1_b_warp";
	end;

OnTimer26000:
	disablenpc "bat_b01_rp1_b_warp";
	end;

OnTimer26500:
	stopnpctimer;
	donpcevent "Battle Therapist#b01_b::OnEnable";
	end;

OnEnable:
	initnpctimer;
	enablenpc "Battle Therapist#b01_b";
	end;

OnStop:
	disablenpc "bat_b01_rp1_b_warp";
	disablenpc "Battle Therapist#b01_b";
	stopnpctimer;
	end;
}

bat_b01,389,10,0	script	bat_b01_rp1_b_warp	WARPNPC,9,9,{
OnInit:
	disablenpc "bat_b01_rp1_a_warp";
	end;

OnTouch:
	percentheal 100,100;
	warp "bat_b01",312,225;
	end;
}

bat_b01,87,76,0	script	A_CODE#bat_b01	FAKE_NPC,5,5,{
OnTouch:
	if (!questprogress(2070))
		setquest 2070;
	end;
}

bat_b01,312,224,0	script	B_CODE#bat_b01	FAKE_NPC,5,5,{
OnTouch:
	if (!questprogress(2070))
		setquest 2070;
	end;
}

bat_b01,10,294,3	script	Guillaume Vintenar#b01_a	4_M_RASWORD,{
	if ($@FlaviusBG1_id1 == getcharid(CHAR_ID_BG)) {
		if ($@FlaviusBG1_Victory == 1) {
			set .@your_medal,countitem(BF_Badge2);
			set .@medal_gap,500 - .@your_medal;
			if (.@medal_gap > 8) {
				mes "[Axl Rose]";
				mes "Blessed Guillaume!";
				mes "Let's enjoy our glorious victory!";
				mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory.";
				close2;
				getitem BF_Badge2,9;
			}
			else {
				mes "[Axl Rose]";
				mes "Blessed Guillaume!";
				mes "Let's enjoy our glorious victory!";
				mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory.";
				close2;
				getitem BF_Badge2,.@medal_gap;
			}
		}
		else {
			set .@your_medal,countitem(BF_Badge2);
			set .@medal_gap,500 - .@your_medal;
			if (.@medal_gap > 2) {
				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, next time you will definitely win.";
				close2;
				getitem BF_Badge2,3;
			}
			else {
				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, next time you will definitely win.";
				close2;
				getitem BF_Badge2,.@medal_gap;
			}
		}
	}
	bg_leave;
	warp "bat_room",154,150;
	end;

OnInit:
	disablenpc "Guillaume Vintenar#b01_a";
	end;
}

bat_b01,389,14,3	script	Croix Vintenar#b01_b	4_M_RASWORD,{
	if ($@FlaviusBG1_id2 == getcharid(CHAR_ID_BG)) {
		if ($@FlaviusBG1_Victory == 2) {
			set .@your_medal,countitem(BF_Badge2);
			set .@medal_gap,500 - .@your_medal;
			if (.@medal_gap > 8) {
				mes "[Swandery]";
				mes "Blessed Croix!";
				mes "Let's enjoy our glorious victory!";
				mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory.";
				close2;
				getitem BF_Badge2,9;
			}
			else {
				mes "[Swandery]";
				mes "Blessed Croix!";
				mes "Let's enjoy our glorious victory!";
				mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory.";
				close2;
				getitem BF_Badge2,.@medal_gap;
			}
		}
		else {
			set .@your_medal,countitem(BF_Badge2);
			set .@medal_gap,500 - .@your_medal;
			if (.@medal_gap > 2) {
				mes "[Swandery]";
				mes "Oh, "+strcharinfo(PC_NAME)+". 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;
				getitem BF_Badge2,3;
			}
			else {
				mes "[Swandery]";
				mes "Oh, "+strcharinfo(PC_NAME)+". 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;
				getitem BF_Badge2,.@medal_gap;
			}
		}
	}
	bg_leave;
	warp "bat_room",154,150;
	end;

OnInit:
	disablenpc "Croix Vintenar#b01_b";
	end;
}

bat_b01,1,5,3	script	countdown#bat_b01	CLEAR_NPC,{
OnInit:
	stopnpctimer;
	end;

OnEnable:
	stopnpctimer;
	initnpctimer;
	end;

OnStop:
	stopnpctimer;
	end;

OnTimer7000:
	mapannounce "bat_b01", "Guillaume Vintenar Axl Rose : Let's attack to destroy that Crystal!",bc_map,"0xFF9900";
	end;

OnTimer8000:
	mapannounce "bat_b01", "Croix Vintenar Swandery : Even though Guillaume is struggling to win against us, the victory is ours. Let's show them our power.",bc_map,"0xFF99CC";
	end;

OnTimer1800000:
	mapannounce "bat_b01", "Marollo VII : Guillaume Marollo, Croix Marollo! And their followers!",bc_map,"0x99CC00";
	end;

OnTimer1803000:
	mapannounce "bat_b01", "Marollo VII : Both camps are competitive, so it's hard to judge which team is superior.",bc_map,"0x99CC00";
	end;

OnTimer1808000:
	mapannounce "bat_b01", "Marollo VII : This battle of Flavian is such a waste of time. I will decide victory and defeat by your progress.",bc_map,"0x99CC00";
	end;

OnTimer1822000:
	mapannounce "bat_b01", "Marollo VII : If you can't accept the results, try again in another valley battle!",bc_map,"0x99CC00";
	end;

OnTimer1825000:
	mapannounce "bat_b01", "Axl Rose, Swandery : Yes, sir.",bc_map,"0x99CC00";
	end;

OnTimer1830000:
	donpcevent "time#bat_b01::OnStop";
	bg_warp $@FlaviusBG1_id1,"bat_b01",10,290;
	bg_warp $@FlaviusBG1_id2,"bat_b01",390,10;
	enablenpc "Vintenar#bat_b01_aover";
	enablenpc "Vintenar#bat_b01_bover";
	end;

OnTimer1900000:
	mapwarp "bat_b01","bat_room",154,150;
	donpcevent "countdown#bat_b01::OnStop";
	donpcevent "start#bat_b01::OnMatchOver";
	end;
}

bat_b01,81,83,3	script	Guillaume Camp#flag21	1_FLAG_LION,{ end; }
bat_b01,94,83,3	script	Guillaume Camp#flag22	1_FLAG_LION,{ end; }
bat_b01,81,66,3	script	Guillaume Camp#flag23	1_FLAG_LION,{ end; }
bat_b01,94,66,3	script	Guillaume Camp#flag24	1_FLAG_LION,{ end; }
bat_b01,139,142,3	script	Guillaume Camp#flag25	1_FLAG_LION,{ end; }
bat_b01,139,158,3	script	Guillaume Camp#flag26	1_FLAG_LION,{ end; }
bat_b01,110,161,3	script	Guillaume Camp#flag27	1_FLAG_LION,{ end; }
bat_b01,110,137,3	script	Guillaume Camp#flag28	1_FLAG_LION,{ end; }
bat_b01,63,135,3	script	Guillaume Camp#flag29	1_FLAG_LION,{ end; }
bat_b01,63,165,3	script	Guillaume Camp#flag30	1_FLAG_LION,{ end; }
bat_b01,10,296,3	script	Guillaume Camp#flag31	1_FLAG_LION,{ end; }

bat_b01,306,233,3	script	Croix Camp#flag21	1_FLAG_EAGLE,{ end; }
bat_b01,317,233,3	script	Croix Camp#flag22	1_FLAG_EAGLE,{ end; }
bat_b01,306,216,3	script	Croix Camp#flag23	1_FLAG_EAGLE,{ end; }
bat_b01,317,216,3	script	Croix Camp#flag24	1_FLAG_EAGLE,{ end; }
bat_b01,257,158,3	script	Croix Camp#flag25	1_FLAG_EAGLE,{ end; }
bat_b01,257,141,3	script	Croix Camp#flag26	1_FLAG_EAGLE,{ end; }
bat_b01,297,164,3	script	Croix Camp#flag27	1_FLAG_EAGLE,{ end; }
bat_b01,297,136,3	script	Croix Camp#flag28	1_FLAG_EAGLE,{ end; }
bat_b01,336,161,3	script	Croix Camp#flag29	1_FLAG_EAGLE,{ end; }
bat_b01,336,139,3	script	Croix Camp#flag30	1_FLAG_EAGLE,{ end; }
bat_b01,389,16,3	script	Croix Camp#flag31	1_FLAG_EAGLE,{ end; }

bat_b01,10,294,3	script	Vintenar#bat_b01_aover	4_M_KY_HEAD,{
	set .@A_B_gap,$@Guill_ScoreBG1 - $@Croix_ScoreBG1;
	if ($@FlaviusBG1_id1 == getcharid(CHAR_ID_BG)) {
		if (.@A_B_gap > 0) {
			set .@your_medal,countitem(BF_Badge2);
			set .@medal_gap,500 - .@your_medal;
			if (.@medal_gap > 8) {
				mes "[Axl Rose]";
				mes "Blessed Guillaume!";
				mes "Let's enjoy our glorious victory!";
				mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory.";
				close2;
				getitem BF_Badge2,9;
			}
			else {
				mes "[Axl Rose]";
				mes "Blessed Guillaume!";
				mes "Let's enjoy our glorious victory!";
				mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory.";
				close2;
				getitem BF_Badge2,.@medal_gap;
			}
		}
		else if (.@A_B_gap == 0) {
			set .@your_medal,countitem(BF_Badge2);
			set .@medal_gap,500 - .@your_medal;
			if (.@medal_gap > 2) {
				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, next time you will definitely win.";
				close2;
				getitem BF_Badge2,3;
			}
			else {
				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, next time you will definitely win.";
				close2;
				getitem BF_Badge2,.@medal_gap;
			}
		}
		else {
			set .@your_medal,countitem(BF_Badge2);
			set .@medal_gap,500 - .@your_medal;
			if (.@medal_gap > 2) {
				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, next time you will definitely win.";
				close2;
				getitem BF_Badge2,3;
			}
			else {
				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, next time you will definitely win.";
				close2;
				getitem BF_Badge2,.@medal_gap;
			}
		}
	}
	else {
		mes "[Axl Rose]";
		mes "Why are you here, Croix mercenary? I am definitely sure of victory against foolish Croix such as you. Ha!";
		close;
	}
	bg_leave;
	warp "bat_room",154,150;
	end;

OnInit:
	disablenpc "Vintenar#bat_b01_aover";
	end;
}

bat_b01,389,14,3	script	Vintenar#bat_b01_bover	4_M_CRU_HEAD,{
	set .@A_B_gap,$@Guill_ScoreBG1 - $@Croix_ScoreBG1;
	if ($@FlaviusBG1_id2 == getcharid(CHAR_ID_BG)) {
		if (.@A_B_gap > 0) {
			set .@your_medal,countitem(BF_Badge2);
			set .@medal_gap,500 - .@your_medal;
			if (.@medal_gap > 2) {
				mes "[Swandery]";
				mes "Oh, "+strcharinfo(PC_NAME)+". 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;
				getitem BF_Badge2,3;
			}
			else {
				mes "[Swandery]";
				mes "Oh, "+strcharinfo(PC_NAME)+". 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;
				getitem BF_Badge2,.@medal_gap;
			}
		}
		else if (.@A_B_gap == 0) {
			set .@your_medal,countitem(BF_Badge2);
			set .@medal_gap,500 - .@your_medal;
			if (.@medal_gap > 2) {
				mes "[Swandery]";
				mes "Oh, "+strcharinfo(PC_NAME)+". 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;
				getitem BF_Badge2,3;
			}
			else {
				mes "[Swandery]";
				mes "Oh, "+strcharinfo(PC_NAME)+". 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;
				getitem BF_Badge2,.@medal_gap;
			}
		}
		else {
			set .@your_medal,countitem(BF_Badge2);
			set .@medal_gap,500 - .@your_medal;
			if (.@medal_gap > 8) {
				mes "[Swandery]";
				mes "Blessed Croix!";
				mes "Let's enjoy our glorious victory!";
				mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory.";
				close2;
				getitem BF_Badge2,9;
			}
			else {
				mes "[Swandery]";
				mes "Blessed Croix!";
				mes "Let's enjoy our glorious victory!";
				mes ""+strcharinfo(PC_NAME)+", it's a sign reflecting victory.";
				close2;
				getitem BF_Badge2,.@medal_gap;
			}
		}
	}
	else {
		mes "[Swandery]";
		mes "Why do you come here as a Guillaume? You will be sent to where you should be!";
		close;
	}
	bg_leave;
	warp "bat_room",154,150;
	end;

OnInit:
	disablenpc "Vintenar#bat_b01_bover";
	end;
}
