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

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

bat_room,85,97,4	script	Ͽ-02ǼǴ::TV2R_Guillaume	418,{
	end;
OnInit:
	waitingroom "ս 10 ",10,"Tierra_BG2::OnGuillaumeJoin",1;
	end;
OnEnterBG:
	set $@TierraBG2_id1, waitingroom2bg("bat_a02",50,374,"Tierra_BG2::OnGuillaumeQuit","");
	end;
}

bat_room,85,74,0	script	Ͽ-02ǼǴ::TV2R_Croix	414,{
	end;
OnInit:
	waitingroom "ս 10 ",10,"Tierra_BG2::OnCroixJoin",1;
	end;
OnEnterBG:
	set $@TierraBG2_id2, waitingroom2bg("bat_a02",42,16,"Tierra_BG2::OnCroixQuit","");
	end;
}

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

-	script	Tierra_BG2	-1,{
	end;

OnInit:
	disablenpc "Ǿ˾#tv2";
	disablenpc "˾#tv2";
	disablenpc "սʦ#tv21";
	disablenpc "սʦ#tv22";
	end;

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

OnGuillaumeJoin:
OnCroixJoin:
	if( $@TierraBG2 == 0 )
		donpcevent "Tierra_BG2::OnReadyCheck";
	end;

OnReadyCheck:
	if( $@TierraBG2 )
		end;
	set .@Guillaume, getwaitingroomstate(0,"TV2R_Guillaume");
	set .@Croix, getwaitingroomstate(0,"TV2R_Croix");

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

	set $@TierraBG2, 1;
	donpcevent "TV2R_Croix::OnEnterBG";
	donpcevent "TV2R_Guillaume::OnEnterBG";
	donpcevent "Guillaume_TV2B::OnBuild";
	donpcevent "Croix_TV2B::OnBuild";
	bg_monster $@TierraBG2_id1,"bat_a02",176,345,"",1909,"Tierra_BG2::OnGuillaumeBreak";
	bg_monster $@TierraBG2_id2,"bat_a02",167,50,"Ǿ",1910,"Tierra_BG2::OnCroixBreak";
	bg_monster 0,"bat_a02",273,204,"ս",1911,"Tierra_BG2::OnNeutralBreak";
	
	set .Neutral_Base, 0;
	set $@TierraBG2_Victory, 0;

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

	enablenpc "սʦ#tv21";
	enablenpc "սʦ#tv22";
	disablenpc "Ǿ˾#tv2";
	disablenpc "˾#tv2";
	// 
	donpcevent "#gtv2_respawn::OnBGStart";
	donpcevent "#ctv2_respawn::OnBGStart";
	donpcevent "#ntv2_respawn::OnBGStart";
	// ͵
	announce "Battleground -- Ͽս-02 [80-99] Ѿʼ!",0,0xF4A460;
	bg_warp $@TierraBG2_id1,"bat_a02",353,344;
	bg_warp $@TierraBG2_id2,"bat_a02",353,52;
	// Ϣ
	sleep 6000;
	mapannounce "bat_a02","˾ ˹ ˹ : ȥյǾ",1,0x0000FF;
	sleep 2000;
	mapannounce "bat_a02","Ǿ˾ ˹ : ߶õ!",1,0xFF0000;
	
	initnpctimer;
	end;

OnNeutralBreak:
	if( getcharid(4) == $@TierraBG2_id1 )
	{
		mapannounce "bat_a02","ģռи.",1,0x0000FF;
		bg_team_setxy $@TierraBG2_id2,42,16;
		areawarp "bat_a02",52,208,61,217,"bat_a02",42,16;
	}
	else if( getcharid(4) == $@TierraBG2_id2 )
	{
		mapannounce "bat_a02","Ǿģռи.",1,0xFF0000;
		bg_team_setxy $@TierraBG2_id1,50,374;
		areawarp "bat_a02",52,208,61,217,"bat_a02",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_a02",280,233,"Ѹնػ",1949,"Tierra_BG2::OnGuardian1");
	else
		bg_monster_set_team .Guardian_1, .Neutral_Base;
	
	if( .Guardian_2 == 0 )
		set .Guardian_2, bg_monster(.Neutral_Base,"bat_a02",287,203,"׷ػ",1950,"Tierra_BG2::OnGuardian2");
	else
		bg_monster_set_team .Guardian_2, .Neutral_Base;

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

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

	if( .Neutral_Base == $@TierraBG2_id1 )
		bg_monster .Neutral_Base,"bat_a02",273,204,"ս",1912,"Tierra_BG2::OnNeutralBreak";
	else if( .Neutral_Base == $@TierraBG2_id2 )
		bg_monster .Neutral_Base,"bat_a02",273,204,"Ǿս",1913,"Tierra_BG2::OnNeutralBreak";
	end;

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

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

OnCroixBreak:
	set $@TierraBG2_Victory, 1;
	mapannounce "bat_a02","˾ ˹ ˹: Ǵݻ˿Ǿ!ʤ!",1,0x0000FF;
	donpcevent "Tierra_BG2::OnStop";
	end;

OnTimer2400000:
	mapannounce "bat_a02"," Ͽս-02ս5Ӻ",1,0xF4A460;
	end;
OnTimer2640000:
	mapannounce "bat_a02"," Ͽս-02ս1Ӻ",1,0xF4A460;
	end;

OnTimer2700000:
	set $@TierraBG2_Victory, 3; // Draw Game
	mapannounce "bat_a02"," Ͽս-02սѾⳡսƽ",1,0xF4A460;
	donpcevent "Tierra_BG2::OnStop";
	end;

OnStop:
	set $@TierraBG2, 2;
	disablenpc "սʦ#tv21";
	disablenpc "սʦ#tv22";
	donpcevent "#gtv2_respawn::OnBGStop";
	donpcevent "#ctv2_respawn::OnBGStop";
	donpcevent "#ntv2_respawn::OnBGStop";
	enablenpc "Ǿ˾#tv2";
	enablenpc "˾#tv2";
	killmonster "bat_a02","Tierra_BG2::OnGuillaumeBreak";
	killmonster "bat_a02","Tierra_BG2::OnCroixBreak";
	killmonster "bat_a02","Tierra_BG2::OnNeutralBreak";
	killmonster "bat_a02","Tierra_BG2::OnGuardian1";
	killmonster "bat_a02","Tierra_BG2::OnGuardian2";
	killmonster "bat_a02","Tierra_BG2::OnGuardian3";
	stopnpctimer;
	sleep 3000;
	bg_warp $@TierraBG2_id1,"bat_a02",50,374;
	bg_warp $@TierraBG2_id2,"bat_a02",42,16;
	sleep 3000;
	mapannounce "bat_a02"," Ͽս-021Ӻر!",1,0xF4A460;
	initnpctimer;
	end;

OnTimer30000:
	if( $@TierraBG2 == 2 )
		mapannounce "bat_a02"," Ͽս-0230ر!",1,0xF4A460;
	end;
OnTimer50000:
	if( $@TierraBG2 == 2 )
		mapannounce "bat_a02"," Ͽս-0210ر!",1,0xF4A460;
	end;

OnTimer60000:
	if( $@TierraBG2 != 2 )
		end;
OnReset:
	stopnpctimer;
	set .Neutral_Base, 0;
	disablenpc "Ǿ˾#tv2";
	disablenpc "˾#tv2";
	disablenpc "սʦ#tv21";
	disablenpc "սʦ#tv22";
	donpcevent "#gtv2_respawn::OnBGStop";
	donpcevent "#gtv2_respawn::OnBGStop";
	donpcevent "#ctv2_respawn::OnBGStop";

	killmonster "bat_a02","Tierra_BG2::OnGuillaumeBreak";
	killmonster "bat_a02","Tierra_BG2::OnCroixBreak";
	killmonster "bat_a02","Tierra_BG2::OnNeutralBreak";
	killmonster "bat_a02","Tierra_BG2::OnGuardian1";
	killmonster "bat_a02","Tierra_BG2::OnGuardian2";
	killmonster "bat_a02","Tierra_BG2::OnGuardian3";
	donpcevent "Guillaume_TV2B::OnDestroy";
	donpcevent "Croix_TV2B::OnDestroy";

	set $@TierraBG2_Victory, 0;
	if( $@TierraBG2_id1 ) { bg_destroy $@TierraBG2_id1; set $@TierraBG2_id1, 0; }
	if( $@TierraBG2_id2 ) { bg_destroy $@TierraBG2_id2; set $@TierraBG2_id2, 0; }
	sleep 1000;
	mapwarp "bat_a02","bat_room",155,150;
	sleep 2000;
	maprespawnguildid "bat_a02",0,3; // Just in case someone else
	sleep 2000;
	set $@TierraBG2, 0;
	donpcevent "Tierra_BG2::OnReadyCheck"; // Maybe a game is ready to start
	end;
}

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

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

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

bat_a02,148,85,1	duplicate(Croix camp#bat)	ǾӪ#bat22	974
bat_a02,155,85,1	duplicate(Croix camp#bat)	ǾӪ#bat23	974
bat_a02,357,75,1	duplicate(Croix camp#bat)	ǾӪ#bat24	974
bat_a02,348,74,1	duplicate(Croix camp#bat)	ǾӪ#bat25	974
bat_a02,199,49,1	duplicate(Croix camp#bat)	ǾӪ#bat26	974
bat_a02,168,16,1	duplicate(Croix camp#bat)	ǾӪ#bat27	974
bat_a02,138,12,1	duplicate(Croix camp#bat)	ǾӪ#bat28	974
bat_a02,108,35,1	duplicate(Croix camp#bat)	ǾӪ#bat29	974
bat_a02,164,308,1	duplicate(Guillaume camp#bat)	Ӫ#bat23	973
bat_a02,157,308,1	duplicate(Guillaume camp#bat)	Ӫ#bat24	973
bat_a02,359,327,1	duplicate(Guillaume camp#bat)	Ӫ#bat25	973
bat_a02,350,326,1	duplicate(Guillaume camp#bat)	Ӫ#bat26	973
bat_a02,209,344,1	duplicate(Guillaume camp#bat)	Ӫ#bat27	973
bat_a02,173,380,1	duplicate(Guillaume camp#bat)	Ӫ#bat28	973
bat_a02,150,380,1	duplicate(Guillaume camp#bat)	Ӫ#bat29	973
bat_a02,118,357,1	duplicate(Guillaume camp#bat)	Ӫ#bat30	973
bat_a02,119,336,1	duplicate(Guillaume camp#bat)	Ӫ#bat31	973

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

-	script	Guillaume_TV2B	-1,{
	end;

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

	setwall "bat_a02",170,130,16,6,1,"bat_a02_g1";
	set .MyMobCount,16;
	end;

OnDestroy:
	killmonster "bat_a02","Guillaume_TV2B::OnWall";
	delwall "bat_a02_g1";
	set .MyMobCount,0;
	end;

OnWall:
	if( set(.MyMobCount,.MyMobCount - 1) < 1 )
	{
		delwall "bat_a02_g1";
		mapannounce "bat_a02"," : ѱݻ!!",1,0xF4A460;
	}
	end;
}

-	script	Croix_TV2B	-1,{
	end;

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

OnDestroy:
	killmonster "bat_a02","Croix_TV2B::OnWall";
	delwall "bat_a02_c1";
	set .MyMobCount,0;
	end;

OnWall:
	if( set(.MyMobCount,.MyMobCount - 1) < 1 )
	{
		delwall "bat_a02_c1";
		mapannounce "bat_a02"," : ѱݻ!!",1,0xF4A460;
	}
	end;
}

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

bat_a02,44,20,3	script	Ǿ˾#tv2	415,{
	if( $@TierraBG2_Victory )
	{
		if( $@TierraBG2_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_a02,52,378,3	script	˾#tv2	419,{
	if( $@TierraBG2_Victory )
	{
		if( $@TierraBG2_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_a02,60,216,3	script	#tv23	950,{
	mes "[ɽе]";
	mes "......";
	specialeffect2 312;
	close;
}

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

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

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

bat_a02,57,213,0	script	#ntv2_respawn	139,{
	end;

OnBGStart:
	initnpctimer;
	end;

OnBGStop:
	stopnpctimer;
	end;

OnTimer19000:
	misceffect 83;
	end;

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

bat_a02,50,374,0	script	#gtv2_respawn	139,{
	end;

OnBGStart:
	initnpctimer;
	end;

OnBGStop:
	stopnpctimer;
	end;

OnTimer24000:
	misceffect 83;
	end;

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

bat_a02,42,16,0	script	#ctv2_respawn	139,{
	end;

OnBGStart:
	initnpctimer;
	end;

OnBGStop:
	stopnpctimer;
	end;

OnTimer24000:
	misceffect 83;
	end;

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