// ==============================================================================
// սϵͳ - Ͽ 1
// ==============================================================================
//飺 http://promised-land.cn
//ԱPLTeamSoul
//ȣ100%
//űPLTeamSoul
//===============================================================================

// ǼǴNPC
// *********************************************************************

bat_room,85,227,4	script	Ͽ-01ǼǴ::TV1R_Guillaume	418,{
	end;
OnInit:
	waitingroom "ս 10 ",10,"Tierra_BG1::OnGuillaumeJoin",1;
	end;
OnEnterBG:
	set $@TierraBG1_id1, waitingroom2bg("bat_a01",50,374,"Tierra_BG1::OnGuillaumeQuit","");
	end;
}

bat_room,85,204,0	script	Ͽ-01ǼǴ::TV1R_Croix	414,{
	end;
OnInit:
	waitingroom "ս 10 ",10,"Tierra_BG1::OnCroixJoin",1;
	end;
OnEnterBG:
	set $@TierraBG1_id2, waitingroom2bg("bat_a01",42,16,"Tierra_BG1::OnCroixQuit","");
	end;
}

// ս
// *********************************************************************

-	script	Tierra_BG1	-1,{
	end;

OnInit:
	disablenpc "Ǿ˾#tv1";
	disablenpc "˾#tv1";
	disablenpc "սʦ#tv11";
	disablenpc "սʦ#tv12";
	end;

OnGuillaumeQuit:
OnCroixQuit:
	set BG_Delay_Tick, gettimetick(2) + 1200;
	end;

OnGuillaumeJoin:
OnCroixJoin:
	if( $@TierraBG1 == 0 )
		donpcevent "Tierra_BG1::OnReadyCheck";
	end;

OnReadyCheck:
	if( $@TierraBG1 )
		end;
	set .@Guillaume, getwaitingroomstate(0,"TV1R_Guillaume");
	set .@Croix, getwaitingroomstate(0,"TV1R_Croix");

	if( .@Guillaume < 10 || .@Croix < 10 )
	{
		mapannounce "bat_room","Ͽս-01 [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0xFFA500;
		end;
	}

	set $@TierraBG1, 1;
	donpcevent "TV1R_Croix::OnEnterBG";
	donpcevent "TV1R_Guillaume::OnEnterBG";
	donpcevent "Guillaume_TV1B::OnBuild";
	donpcevent "Croix_TV1B::OnBuild";
	bg_monster $@TierraBG1_id1,"bat_a01",176,345,"",1909,"Tierra_BG1::OnGuillaumeBreak";
	bg_monster $@TierraBG1_id2,"bat_a01",167,50,"Ǿ",1910,"Tierra_BG1::OnCroixBreak";
	bg_monster 0,"bat_a01",273,204,"ս",1911,"Tierra_BG1::OnNeutralBreak";
	
	set .Neutral_Base, 0;
	set $@TierraBG1_Victory, 0;

	set .Guardian_1, 0;
	set .Guardian_2, 0;
	set .Guardian_3, 0;

	enablenpc "սʦ#tv11";
	enablenpc "սʦ#tv12";
	disablenpc "Ǿ˾#tv1";
	disablenpc "˾#tv1";
	// 
	donpcevent "#gtv1_respawn::OnBGStart";
	donpcevent "#ctv1_respawn::OnBGStart";
	donpcevent "#ntv1_respawn::OnBGStart";
	// ͵
	announce "Battleground -- Ͽս-01 [80-99] Ѿʼ!",0,0xFFA500;
	bg_warp $@TierraBG1_id1,"bat_a01",353,344;
	bg_warp $@TierraBG1_id2,"bat_a01",353,52;
	// Ϣ
	sleep 6000;
	mapannounce "bat_a01","˾ ˹ ˹ : ȥյǾ",1,0x0000FF;
	sleep 2000;
	mapannounce "bat_a01","Ǿ˾ ˹ : ߶õ!",1,0xFF0000;
	
	initnpctimer;
	end;

OnNeutralBreak:
	if( getcharid(4) == $@TierraBG1_id1 )
	{
		mapannounce "bat_a01","ģռи.",1,0x0000FF;
		bg_team_setxy $@TierraBG1_id2,42,16;
		areawarp "bat_a01",52,208,61,217,"bat_a01",42,16;
	}
	else if( getcharid(4) == $@TierraBG1_id2 )
	{
		mapannounce "bat_a01","Ǿģռи.",1,0xFF0000;
		bg_team_setxy $@TierraBG1_id1,50,374;
		areawarp "bat_a01",52,208,61,217,"bat_a01",50,374;
	}
	else end;

	set .Neutral_Base, getcharid(4);
	bg_team_setxy .Neutral_Base,56,212;

	if( .Guardian_1 == 0 )
		set .Guardian_1, bg_monster(.Neutral_Base,"bat_a01",280,233,"Ѹնػ",1949,"Tierra_BG1::OnGuardian1");
	else
		bg_monster_set_team .Guardian_1, .Neutral_Base;
	
	if( .Guardian_2 == 0 )
		set .Guardian_2, bg_monster(.Neutral_Base,"bat_a01",287,203,"׷ػ",1950,"Tierra_BG1::OnGuardian2");
	else
		bg_monster_set_team .Guardian_2, .Neutral_Base;

	if( .Guardian_3 == 0 )
		set .Guardian_3, bg_monster(.Neutral_Base,"bat_a01",268,204,"Ѹնػ",1949,"Tierra_BG1::OnGuardian3");
	else
		bg_monster_set_team .Guardian_3, .Neutral_Base;

	sleep 10000;
	if( $@TierraBG1 != 1 ) end;

	if( .Neutral_Base == $@TierraBG1_id1 )
		bg_monster .Neutral_Base,"bat_a01",273,204,"ս",1912,"Tierra_BG1::OnNeutralBreak";
	else if( .Neutral_Base == $@TierraBG1_id2 )
		bg_monster .Neutral_Base,"bat_a01",273,204,"Ǿս",1913,"Tierra_BG1::OnNeutralBreak";
	end;

OnGuardian1: set .Guardian_1, 0; end;
OnGuardian2: set .Guardian_2, 0; end;
OnGuardian3: set .Guardian_3, 0; end;

OnGuillaumeBreak:
	set $@TierraBG1_Victory, 2;
	mapannounce "bat_a01","Ǿ˾ ˹: Ǵݻ˼!ʤ!",1,0xFF0000;
	donpcevent "Tierra_BG1::OnStop";
	end;

OnCroixBreak:
	set $@TierraBG1_Victory, 1;
	mapannounce "bat_a01","˾ ˹ ˹: Ǵݻ˿Ǿ!ʤ!",1,0x0000FF;
	donpcevent "Tierra_BG1::OnStop";
	end;

OnTimer2400000:
	mapannounce "bat_a01"," Ͽս-01ս5Ӻ",1,0xFFA500;
	end;
OnTimer2640000:
	mapannounce "bat_a01"," Ͽս-01ս1Ӻ",1,0xFFA500;
	end;

OnTimer2700000:
	set $@TierraBG1_Victory, 3; // Draw Game
	mapannounce "bat_a01"," Ͽս-01սѾⳡսƽ",1,0xFFA500;
	donpcevent "Tierra_BG1::OnStop";
	end;

OnStop:
	set $@TierraBG1, 2;
	disablenpc "սʦ#tv11";
	disablenpc "սʦ#tv12";
	donpcevent "#gtv1_respawn::OnBGStop";
	donpcevent "#ctv1_respawn::OnBGStop";
	donpcevent "#ntv1_respawn::OnBGStop";
	enablenpc "Ǿ˾#tv1";
	enablenpc "˾#tv1";
	killmonster "bat_a01","Tierra_BG1::OnGuillaumeBreak";
	killmonster "bat_a01","Tierra_BG1::OnCroixBreak";
	killmonster "bat_a01","Tierra_BG1::OnNeutralBreak";
	killmonster "bat_a01","Tierra_BG1::OnGuardian1";
	killmonster "bat_a01","Tierra_BG1::OnGuardian2";
	killmonster "bat_a01","Tierra_BG1::OnGuardian3";
	stopnpctimer;
	sleep 3000;
	bg_warp $@TierraBG1_id1,"bat_a01",50,374;
	bg_warp $@TierraBG1_id2,"bat_a01",42,16;
	sleep 3000;
	mapannounce "bat_a01","Ͽս-011Ӻر!",1,0xFFA500;
	initnpctimer;
	end;

OnTimer30000:
	if( $@TierraBG1 == 2 )
		mapannounce "bat_a01","Ͽս-0130ر!",1,0xFFA500;
	end;
OnTimer50000:
	if( $@TierraBG1 == 2 )
		mapannounce "bat_a01","Ͽս-0110ر!",1,0xFFA500;
	end;

OnTimer60000:
	if( $@TierraBG1 != 2 )
		end;
OnReset:
	stopnpctimer;
	set .Neutral_Base, 0;
	disablenpc "Ǿ˾#tv1";
	disablenpc "˾#tv1";
	disablenpc "սʦ#tv11";
	disablenpc "սʦ#tv12";
	donpcevent "#gtv1_respawn::OnBGStop";
	donpcevent "#ctv1_respawn::OnBGStop";
	donpcevent "#ntv1_respawn::OnBGStop";

	killmonster "bat_a01","Tierra_BG1::OnGuillaumeBreak";
	killmonster "bat_a01","Tierra_BG1::OnCroixBreak";
	killmonster "bat_a01","Tierra_BG1::OnNeutralBreak";
	killmonster "bat_a01","Tierra_BG1::OnGuardian1";
	killmonster "bat_a01","Tierra_BG1::OnGuardian2";
	killmonster "bat_a01","Tierra_BG1::OnGuardian3";
	donpcevent "Guillaume_TV1B::OnDestroy";
	donpcevent "Croix_TV1B::OnDestroy";

	set $@TierraBG1_Victory, 0;
	if( $@TierraBG1_id1 ) { bg_destroy $@TierraBG1_id1; set $@TierraBG1_id1, 0; }
	if( $@TierraBG1_id2 ) { bg_destroy $@TierraBG1_id2; set $@TierraBG1_id2, 0; }
	sleep 1000;
	mapwarp "bat_a01","bat_room",155,150;
	sleep 2000;
	maprespawnguildid "bat_a01",0,3; // Just in case someone else
	sleep 2000;
	set $@TierraBG1, 0;
	donpcevent "Tierra_BG1::OnReadyCheck"; // Maybe a game is ready to start
	end;
}

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

bat_a01	mapflag	battleground
bat_a01	mapflag	nomemo
bat_a01	mapflag	nosave	SavePoint
bat_a01	mapflag	noteleport
bat_a01	mapflag	nowarp
bat_a01	mapflag	nowarpto
bat_a01	mapflag	noreturn
bat_a01	mapflag	nobranch
bat_a01	mapflag	nopenalty

// Other Flags
// *********************************************************************

bat_a01,148,85,1	duplicate(Croix camp#bat)	ǾӪ#bat10	974
bat_a01,155,85,1	duplicate(Croix camp#bat)	ǾӪ#bat11	974
bat_a01,357,75,1	duplicate(Croix camp#bat)	ǾӪ#bat12	974
bat_a01,348,74,1	duplicate(Croix camp#bat)	ǾӪ#bat13	974
bat_a01,199,49,1	duplicate(Croix camp#bat)	ǾӪ#bat14	974
bat_a01,168,16,1	duplicate(Croix camp#bat)	ǾӪ#bat15	974
bat_a01,138,12,1	duplicate(Croix camp#bat)	ǾӪ#bat16	974
bat_a01,108,35,1	duplicate(Croix camp#bat)	ǾӪ#bat17	974
bat_a01,164,308,1	duplicate(Guillaume camp#bat)	Ӫ#bat10	973
bat_a01,157,308,1	duplicate(Guillaume camp#bat)	Ӫ#bat11	973
bat_a01,359,327,1	duplicate(Guillaume camp#bat)	Ӫ#bat12	973
bat_a01,350,326,1	duplicate(Guillaume camp#bat)	Ӫ#bat13	973
bat_a01,209,344,1	duplicate(Guillaume camp#bat)	Ӫ#bat14	973
bat_a01,173,380,1	duplicate(Guillaume camp#bat)	Ӫ#bat15	973
bat_a01,150,380,1	duplicate(Guillaume camp#bat)	Ӫ#bat16	973
bat_a01,118,357,1	duplicate(Guillaume camp#bat)	Ӫ#bat17	973
bat_a01,119,336,1	duplicate(Guillaume camp#bat)	Ӫ#bat18	973

// 
// *********************************************************************

-	script	Guillaume_TV1B	-1,{
	end;

OnBuild:
	for( set .@i, 0; .@i < 16; set .@i, .@i + 1 )
		bg_monster 0,"bat_a01",170+.@i,130,"ǽ",1906,"Guillaume_TV1B::OnWall";

	setwall "bat_a01",170,130,16,6,1,"bat_a01_g1";
	set .MyMobCount,16;
	end;

OnDestroy:
	killmonster "bat_a01","Guillaume_TV1B::OnWall";
	delwall "bat_a01_g1";
	set .MyMobCount,0;
	end;

OnWall:
	if( set(.MyMobCount,.MyMobCount - 1) < 1 )
	{
		delwall "bat_a01_g1";
		mapannounce "bat_a01"," : ѱݻ!!",1,0xFFA500;
	}
	end;
}

-	script	Croix_TV1B	-1,{
	end;

OnBuild:
	for( set .@i, 0; .@i < 16; set .@i, .@i + 1 )
		bg_monster 0,"bat_a01",186+.@i,266,"ǽ",1906,"Croix_TV1B::OnWall";
	
	setwall "bat_a01",186,266,16,6,1,"bat_a01_c1";
	set .MyMobCount,16;
	end;

OnDestroy:
	killmonster "bat_a01","Croix_TV1B::OnWall";
	delwall "bat_a01_c1";
	set .MyMobCount,0;
	end;

OnWall:
	if( set(.MyMobCount,.MyMobCount - 1) < 1 )
	{
		delwall "bat_a01_c1";
		mapannounce "bat_a01"," : ѱݻ!!",1,0xFFA500;
	}
	end;
}

// ս
// *********************************************************************

bat_a01,44,20,3	script	Ǿ˾#tv1	415,{
	if( $@TierraBG1_Victory )
	{
		if( $@TierraBG1_Victory == Bat_Team )
		{ // ʤ
			set .@Reward, 3;
			mes "[˹]";
			mes "ʥĿǾ!!";
			mes "ʤҫ!";
			mes "" + strcharinfo(0) + ", ϲΪʤ";
			close2;
		}
		else
		{ // ʧ
			set .@Reward, 1;
			mes "[˹]";
			mes ", " + strcharinfo(0) + ". Ҫ̫ѹ.";
			mes "ȻûսʤѾ.";
			mes "ǿǾĻʼսǻ´Ӯ.";
			close2;
		}

		setquest 2069;
		getitem 7828, .@Reward;
		bg_leave;
		warp "bat_room",155,150;
		end;
	}
	end;
}

bat_a01,52,378,3	script	˾#tv1	419,{
	if( $@TierraBG1_Victory )
	{
		if( $@TierraBG1_Victory == Bat_Team )
		{ // ʤ
			set .@Reward, 3;
			mes "[˹ ˹]";
			mes "ʥļ!!";
			mes "ʤҫ!";
			mes "" + strcharinfo(0) + ", ϲΪʤ";
			close2;
		}
		else
		{ // ʧ
			set .@Reward, 1;
			mes "[˹ ˹]";
			mes "ȻʧˣѾսо.";
			mes "Ǽ ޶սĽ!";
			mes "εʧܵѵ.";
			close2;
		}

		setquest 2069;
		getitem 7828, .@Reward;
		bg_leave;
		warp "bat_room",155,150;
		end;
	}
	end;
}

// սʦ
// *********************************************************************

bat_a01,60,216,3	script	#tv13	950,{
	mes "[ɽе]";
	mes "......";
	specialeffect2 312;
	close;
}

bat_a01,54,376,3	script	սʦ#tv12	95,{
	mes "[սʦ]";
	mes "ֻҪۣȻ.";
	mes "Լʹ.";
	specialeffect2 312;
	close;
}

bat_a01,46,18,3	script	սʦ#tv11	95,{
	mes "[սʦ]";
	mes "ֻҪۣȻ.";
	mes "Լʹ.";
	specialeffect2 312;
	close;
}

// ս
// *********************************************************************

bat_a01,57,213,0	script	#ntv1_respawn	139,{
	end;

OnBGStart:
	initnpctimer;
	end;

OnBGStop:
	stopnpctimer;
	end;

OnTimer19000:
	misceffect 83;
	end;

OnTimer20000:
	areapercentheal "bat_a01",52,208,61,217,100,100;
	areawarp "bat_a01",52,208,61,217,"bat_a01",301,208;
	initnpctimer;
	end;
}

bat_a01,50,374,0	script	#gtv1_respawn	139,{
	end;

OnBGStart:
	initnpctimer;
	end;

OnBGStop:
	stopnpctimer;
	end;

OnTimer24000:
	misceffect 83;
	end;

OnTimer25000:
	areapercentheal "bat_a01",46,370,54,378,100,100;
	areawarp "bat_a01",46,370,54,378,"bat_a01",354,340;
	initnpctimer;
	end;
}

bat_a01,42,16,0	script	#ctv1_respawn	139,{
	end;

OnBGStart:
	initnpctimer;
	end;

OnBGStop:
	stopnpctimer;
	end;

OnTimer24000:
	misceffect 83;
	end;

OnTimer25000:
	areapercentheal "bat_a01",38,12,47,21,100,100;
	areawarp "bat_a01",38,12,47,21,"bat_a01",354,57;
	initnpctimer;
	end;
}
