/**
 * Hercules Script
 *
 * Feature: Hercules Battlegrounds
 * Version: 1.0
 * Author: eAmod & Smokexyz
 *
 * Description: Hercules Battlegrounds plugin.
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

-	script	Flavius_TD	FAKE_NPC,{
	end;

OnGuillaumeQuit:
	setquest 8506; // Deserter
	if ($@Arena_Status != 0 && getvariableofnpc(.BG_Arena$,"BG_Queue_Handler") == "Flavius_TD")
		donpcevent "BG_Queue_Handler::OnQueueJoinEvent";
OnGuillaumeDie:
	if ($@Arena_Status == 1 && getvariableofnpc(.BG_Arena$,"BG_Queue_Handler") == "Flavius_TD") {
		set .guillaume_score, .guillaume_score - 1;
		donpcevent "Flavius_TD::OnValidateScore";
	}
	end;

OnCroixQuit:
	setquest 8506; // Deserter
	if ($@Arena_Status != 0 && getvariableofnpc(.BG_Arena$,"BG_Queue_Handler") == "Flavius_TD")
		donpcevent "BG_Queue_Handler::OnQueueJoinEvent";
OnCroixDie:
	if ($@Arena_Status == 1 && getvariableofnpc(.BG_Arena$,"BG_Queue_Handler") == "Flavius_TD" ) {
		set .croix_score, .croix_score - 1;
		donpcevent "Flavius_TD::OnValidateScore";
	}
	end;

OnBuildTeams:
	set $@BG_Team1,hBG_team_create("bat_b03",390,10,0,"Flavius_TD::OnGuillaumeQuit","Flavius_TD::OnGuillaumeDie");
	set $@BG_Team2,hBG_team_create("bat_b03",10,290,1,"Flavius_TD::OnCroixQuit","Flavius_TD::OnCroixDie");
	end;

OnReady:
	if (getvariableofnpc(.BG_Arena$,"BG_Queue_Handler") != "Flavius_TD")
		end;

	initnpctimer;
	set .guillaume_score, 99;
	set .croix_score, 99;
	hBG_updatescore "bat_b03",.guillaume_score,.croix_score;
	sleep 2000;
	bg_warp $@BG_Team1,"bat_b03",328,150;
	bg_warp $@BG_Team2,"bat_b03",62,150;
	sleep 2000;
	hBG_team_reveal $@BG_Team1;
	hBG_team_reveal $@BG_Team2;
	donpcevent "#guitd_respawn::OnBGStart";
	donpcevent "#crotd_respawn::OnBGStart";
	end;

OnValidateScore:
	if ($@Arena_Status != 1 || getvariableofnpc(.BG_Arena$,"BG_Queue_Handler") != "Flavius_TD")
		end;

	hBG_updatescore "bat_b03",.guillaume_score,.croix_score;
	.@guillaume = hBG_get_data($@BG_Team1, 0);
	.@croix = hBG_get_data($@BG_Team2, 0);

	if (.croix_score <= 0) { // Guillaume Won
		hBG_reward $@BG_Team1,7773,30,0,0,"BG_TDM",1,4,0;
		hBG_reward $@BG_Team2,7773,15,0,0,"BG_TDM",1,4,2;
		mapannounce "bat_b03","The Guillaume army has won the Battle of Flavius TD!",1,0x0000FF;
	} else if (.guillaume_score <= 0) { // Croix Won
		hBG_reward $@BG_Team1,7773,15,0,0,"BG_TDM",1,4,2;
		hBG_reward $@BG_Team2,7773,30,0,0,"BG_TDM",1,4,0;
		mapannounce "bat_b03","The Croix army has won the Battle of Flavius TD!",1,0xFF0000;
	} else if (.@croix == 0) { // All Croix Players quit
		set .@Rate, 99 - .croix_score;
		hBG_reward $@BG_Team1,7773,30 * .@Rate / 99,0,0,"BG_TDM",1,4,0;
		mapannounce "bat_b03","The Guillaume army has won the Battle of Flavius TD!",1,0x0000FF;
	} else if (.@guillaume == 0) { // All Guillaume Players quit
		set .@Rate, 99 - .guillaume_score;
		hBG_reward $@BG_Team2,7773,30 * .@Rate / 99,0,0,"BG_TDM",1,4,0;
		mapannounce "bat_b03","The Croix army has won the Battle of Flavius TD!",1,0xFF0000;
	}
	else end;
	donpcevent "Flavius_TD::OnMatchEnd";
	end;

OnTimer600000:
	set getvariableofnpc(.allowjoin,"BG_Queue_Handler"),0;
	mapannounce "bat_b03","The Battle will end in 5 minutes!!",1,0x808000;
	end;

OnTimer840000:
	mapannounce "bat_b03","The Battle will end in 1 minute!!",1,0x808000;
	end;

OnTimer900000:
	if (.guillaume_score > .croix_score) { // Guillaume Won
		hBG_reward $@BG_Team1,7773,30,0,0,"BG_TDM",1,4,0;
		hBG_reward $@BG_Team2,7773,15,0,0,"BG_TDM",1,4,2;
		mapannounce "bat_b03","The Guillaume army has won the Battle of Flavius TD!",1,0x0000FF;
	} else if (.guillaume_score < .croix_score) { // Croix Won
		hBG_reward $@BG_Team1,7773,15,0,0,"BG_TDM",1,4,2;
		hBG_reward $@BG_Team2,7773,30,0,0,"BG_TDM",1,4,0;
		mapannounce "bat_b03","The Croix army has won the Battle of Flavius TD!",1,0xFF0000;
	} else {
		hBG_reward $@BG_Team1,7773,15,0,0,"BG_TDM",1,4,1;
		hBG_reward $@BG_Team2,7773,15,0,0,"BG_TDM",1,4,1;
		mapannounce "bat_b03","The battle is over. This is a Tie...!",1,0x808000;
	}
	donpcevent "Flavius_TD::OnMatchEnd";
	end;

OnMatchEnd:
	stopnpctimer;
	donpcevent "#guitd_respawn::OnBGStop";
	donpcevent "#crotd_respawn::OnBGStop";
	set $@Arena_Status, 2;
	set .guillaume_score, 99;
	set .croix_score, 99;
	sleep 5000;
	donpcevent "BG_Queue_Handler::OnEndArena";
	hBG_updatescore "bat_b03",99,99;
	end;
}

// Battleground Respawn
// *********************************************************************

bat_b03,390,10,0	script	#guitd_respawn	HIDDEN_WARP_NPC,{
	end;

OnBGStart:
	initnpctimer;
	end;

OnBGStop:
	stopnpctimer;
	end;

OnTimer24000:
	specialeffect(EF_SANCTUARY);
	end;

OnTimer25000:
	areapercentheal "bat_b03",382,2,397,17,100,100;
	areawarp "bat_b03",382,2,397,17,"bat_b03",306,138,327,161;
	initnpctimer;
	end;
}

bat_b03,10,290,0	script	#crotd_respawn	HIDDEN_WARP_NPC,{
	end;

OnBGStart:
	initnpctimer;
	end;

OnBGStop:
	stopnpctimer;
	end;

OnTimer24000:
	specialeffect(EF_SANCTUARY);
	end;

OnTimer25000:
	areapercentheal "bat_b03",2,282,17,297,100,100;
	areawarp "bat_b03",2,282,17,297,"bat_b03",72,138,93,161;
	initnpctimer;
	end;
}

// Flags
// *********************************************************************

bat_b03,304,231,1	duplicate(Guillaume camp#bat)	Guillaume camp#td_1	1_FLAG_LION
bat_b03,319,231,1	duplicate(Guillaume camp#bat)	Guillaume camp#td_2	1_FLAG_LION
bat_b03,304,218,1	duplicate(Guillaume camp#bat)	Guillaume camp#td_3	1_FLAG_LION
bat_b03,319,218,1	duplicate(Guillaume camp#bat)	Guillaume camp#td_4	1_FLAG_LION
bat_b03,304,231,1	duplicate(Guillaume camp#bat)	Guillaume camp#td_5	1_FLAG_LION
bat_b03,304,231,1	duplicate(Guillaume camp#bat)	Guillaume camp#td_6	1_FLAG_LION
bat_b03,335,142,1	duplicate(Guillaume camp#bat)	Guillaume camp#td_7	1_FLAG_LION
bat_b03,335,157,1	duplicate(Guillaume camp#bat)	Guillaume camp#td_8	1_FLAG_LION
bat_b03,390,16,1	duplicate(Guillaume camp#bat)	Guillaume camp#td_9	1_FLAG_LION
bat_b03,292,163,1	duplicate(Guillaume camp#bat)	Guillaume camp#td_10	1_FLAG_LION
bat_b03,292,136,1	duplicate(Guillaume camp#bat)	Guillaume camp#td_11	1_FLAG_LION
bat_b03,241,185,1	duplicate(Guillaume camp#bat)	Guillaume camp#td_12	1_FLAG_LION
bat_b03,247,179,1	duplicate(Guillaume camp#bat)	Guillaume camp#td_13	1_FLAG_LION

bat_b03,96,81,1	duplicate(Croix camp#bat)	Croix camp#td_1	1_FLAG_EAGLE
bat_b03,96,68,1	duplicate(Croix camp#bat)	Croix camp#td_2	1_FLAG_EAGLE
bat_b03,79,81,1	duplicate(Croix camp#bat)	Croix camp#td_3	1_FLAG_EAGLE
bat_b03,79,68,1	duplicate(Croix camp#bat)	Croix camp#td_4	1_FLAG_EAGLE
bat_b03,96,81,1	duplicate(Croix camp#bat)	Croix camp#td_5	1_FLAG_EAGLE
bat_b03,96,81,1	duplicate(Croix camp#bat)	Croix camp#td_6	1_FLAG_EAGLE
bat_b03,59,164,1	duplicate(Croix camp#bat)	Croix camp#td_7	1_FLAG_EAGLE
bat_b03,59,137,1	duplicate(Croix camp#bat)	Croix camp#td_8	1_FLAG_EAGLE
bat_b03,10,296,1	duplicate(Croix camp#bat)	Croix camp#td_9	1_FLAG_EAGLE
bat_b03,110,162,1	duplicate(Croix camp#bat)	Croix camp#td_10	1_FLAG_EAGLE
bat_b03,110,137,1	duplicate(Croix camp#bat)	Croix camp#td_11	1_FLAG_EAGLE
bat_b03,152,120,1	duplicate(Croix camp#bat)	Croix camp#td_12	1_FLAG_EAGLE
bat_b03,158,114,1	duplicate(Croix camp#bat)	Croix camp#td_13	1_FLAG_EAGLE

// MapFlags
// *********************************************************************

bat_b03	mapflag	battleground	2
bat_b03	mapflag	nomemo
bat_b03	mapflag	nosave	SavePoint
bat_b03	mapflag	noteleport
bat_b03	mapflag	nowarp
bat_b03	mapflag	nowarpto
bat_b03	mapflag	noreturn
bat_b03	mapflag	nobranch
bat_b03	mapflag	nopenalty