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

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

bat_room,57,97,4	script	˹ս-02ǼǴ::Fl2R_Guillaume	418,{
	end;
OnInit:
	waitingroom "ս 10 ",10,"Flavius_BG2::OnGuillaumeJoin",1;
	end;
OnEnterBG:
	set $@FlaviusBG2_id1, waitingroom2bg("bat_b02",390,10,"Flavius_BG2::OnGuillaumeQuit","");
	end;
}

bat_room,57,74,0	script	˹ս-02ǼǴ::Fl2R_Croix	414,{
	end;
OnInit:
	waitingroom "ս 10 ",10,"Flavius_BG2::OnCroixJoin",1;
	end;
OnEnterBG:
	set $@FlaviusBG2_id2, waitingroom2bg("bat_b02",10,290,"Flavius_BG2::OnCroixQuit","");
	end;
}

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

-	script	Flavius_BG2	-1,{
	end;

OnInit:
	disablenpc "˾#fl2";
	disablenpc "Ǿ˾#fl2";
	disablenpc "սʦ#fl21";
	disablenpc "սʦ#fl22";
	end;

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

OnGuillaumeJoin:
OnCroixJoin:
	if( $@FlaviusBG2 == 0 )
		donpcevent "Flavius_BG2::OnReadyCheck";
	end;

OnReadyCheck:
	if( $@FlaviusBG2 )
		end;
	set .@Guillaume, getwaitingroomstate(0,"Fl2R_Guillaume");
	set .@Croix, getwaitingroomstate(0,"Fl2R_Croix");
	
	if( .@Guillaume < 10 || .@Croix < 10 )
	{
		mapannounce "bat_room","˹ս-02 [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0x00FF00;
		end;
	}

	// BG 
	set $@FlaviusBG2, 1;
	set $@FlaviusBG2_Victory, 0;
	set .Guillaume_Score, 0;
	set .Guillaume_Loss, 0;
	set .Croix_Score, 0;
	set .Croix_Loss, 0;
	set .Match, 0;
	// NPC ׼
	donpcevent "#gfl2_respawn::OnBGStart";
	donpcevent "#cfl2_respawn::OnBGStart";
	enablenpc "սʦ#fl21";
	enablenpc "սʦ#fl22";
	disablenpc "˾#fl2";
	disablenpc "Ǿ˾#fl2";
	// ͵
	donpcevent "Fl2R_Guillaume::OnEnterBG";
	donpcevent "Fl2R_Croix::OnEnterBG";
	announce "˹ս-02 [80-99]Ѿʼ!",0,0x00FF00;
	initnpctimer;
	// ʼ!!

OnRoundStart:
	sleep 2000;
	if( $@FlaviusBG2 != 1 ) end;

	areapercentheal "bat_b02",382,2,397,17,100,100;
	areapercentheal "bat_b02",2,282,17,297,100,100;
	bg_warp $@FlaviusBG2_id1,"bat_b02",311,224;
	bg_warp $@FlaviusBG2_id2,"bat_b02",87,75;

	sleep 2000;
	if( $@FlaviusBG2 != 1 ) end;

	set .Match, .Match + 1;
	// ˮ
	set .Guillaume_Crystal, bg_monster($@FlaviusBG2_id1,"bat_b02",328,150,"ˮ",1914,"Flavius_BG2::OnGuillaumeBreak");
	setwall "bat_b02",327,149,2,6,0,"gui_wall2-1";
	setwall "bat_b02",329,149,2,0,0,"gui_wall2-2";
	setwall "bat_b02",329,151,2,2,0,"gui_wall2-3";
	setwall "bat_b02",327,151,2,4,0,"gui_wall2-4";

	set .Croix_Crystal, bg_monster($@FlaviusBG2_id2,"bat_b02",62,150,"Ǿˮ",1915,"Flavius_BG2::OnCroixBreak");
	setwall "bat_b02",61,149,2,6,0,"cro_wall2-1";
	setwall "bat_b02",63,149,2,0,0,"cro_wall2-2";
	setwall "bat_b02",63,151,2,2,0,"cro_wall2-3";
	setwall "bat_b02",61,151,2,4,0,"cro_wall2-4";

	// ໤
	bg_monster $@FlaviusBG2_id1,"bat_b02",328,160," ػ",1949,"Flavius_BG2::OnGuiGuardian";
	bg_monster $@FlaviusBG2_id1,"bat_b02",328,140," ػ",1950,"Flavius_BG2::OnGuiGuardian";
	set .Guillaume_Guardian, 2;
	bg_monster $@FlaviusBG2_id2,"bat_b02",62,160,"Ǿ ػ",1949,"Flavius_BG2::OnCroGuardian";
	bg_monster $@FlaviusBG2_id2,"bat_b02",61,140,"Ǿ ػ",1950,"Flavius_BG2::OnCroGuardian";
	set .Croix_Guardian, 2;
	// Announces
	mapannounce "bat_b02"," ˹ս-02 [ " + .Match + " ] Ѿʼ!!",1,0x00FF00;
	end;

OnRoundStop:
	// Ƴħ
	killmonster "bat_b02","Flavius_BG2::OnGuiGuardian";
	killmonster "bat_b02","Flavius_BG2::OnCroGuardian";
	delwall "gui_wall2-1";
	delwall "gui_wall2-2";
	delwall "gui_wall2-3";
	delwall "gui_wall2-4";
	killmonster "bat_b02","Flavius_BG2::OnGuillaumeBreak";
	delwall "cro_wall2-1";
	delwall "cro_wall2-2";
	delwall "cro_wall2-3";
	delwall "cro_wall2-4";
	killmonster "bat_b02","Flavius_BG2::OnCroixBreak";
	end;

OnGuiGuardian:
	if( set(.Guillaume_Guardian, .Guillaume_Guardian - 1) <= 0 )
	{
		delwall "gui_wall2-1";
		delwall "gui_wall2-2";
		delwall "gui_wall2-3";
		delwall "gui_wall2-4";
		mapannounce "bat_b02","ˮʧȥ!",1,0x0000FF;
	}
	end;

OnCroGuardian:
	if( set(.Croix_Guardian, .Croix_Guardian - 1) <= 0 )
	{
		delwall "cro_wall2-1";
		delwall "cro_wall2-2";
		delwall "cro_wall2-3";
		delwall "cro_wall2-4";
		mapannounce "bat_b02","Ǿˮʧȥ!",1,0xFF0000;
	}
	end;

OnGuillaumeBreak:
	donpcevent "Flavius_BG2::OnRoundStop";
	set .Guillaume_Loss, .Guillaume_Loss + 1;
	if( set(.Croix_Score, .Croix_Score + 1) < 2 )
	{
		bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
		mapannounce "bat_b02","ˮݻ!",1,0x0000FF;
		donpcevent "Flavius_BG2::OnRoundStart";
	}
	else
	{
		bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
		mapannounce "bat_b02","Ǿ ˹ս-02 սлʤ!",1,0xFF0000;
		set $@FlaviusBG2_Victory, 2;
		donpcevent "Flavius_BG2::OnMatchEnd";
	}
	end;

OnCroixBreak:
	donpcevent "Flavius_BG2::OnRoundStop";
	set .Croix_Loss, .Croix_Loss + 1;
	if( set(.Guillaume_Score, .Guillaume_Score + 1) < 2 )
	{
		bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
		mapannounce "bat_b02","Ǿˮݻ!",1,0xFF0000;
		donpcevent "Flavius_BG2::OnRoundStart";
	}
	else
	{
		bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
		mapannounce "bat_b02"," ˹ս-02 սлʤ!",1,0x0000FF;
		set $@FlaviusBG2_Victory, 1;
		donpcevent "Flavius_BG2::OnMatchEnd";
	}
	end;

OnTimer2400000:
	mapannounce "bat_b02"," ˹ս-02 ս5Ӻ",1,0x00FF00;
	end;
OnTimer2640000:
	mapannounce "bat_b02"," ˹ս-02 ս1Ӻ",1,0x00FF00;
	end;

OnTimer2700000:
	if( .Croix_Score > .Guillaume_Score )
	{
		mapannounce "bat_b02","Ǿ ˹ս-02 սлʤ!",1,0xFF0000;
		set $@FlaviusBG2_Victory, 2;
	}
	else if( .Croix_Score < .Guillaume_Score )
	{
		mapannounce "bat_b02"," ˹ս-02 սлʤ!",1,0x0000FF;
		set $@FlaviusBG2_Victory, 1;
	}
	else
	{
		mapannounce "bat_b02"," ˹ս-02 սѾ. ⳡսƽ",1,0x00FF00;
		set $@FlaviusBG2_Victory, 3;
	}

OnMatchEnd:
	set $@FlaviusBG2, 2;
	stopnpctimer;
	donpcevent "#gfl2_respawn::OnBGStop";
	donpcevent "#cfl2_respawn::OnBGStop";
	disablenpc "սʦ#fl21";
	disablenpc "սʦ#fl22";
	enablenpc "˾#fl2";
	enablenpc "Ǿ˾#fl2";
	sleep 2000;
	bg_warp $@FlaviusBG2_id1,"bat_b02",390,10;
	bg_warp $@FlaviusBG2_id2,"bat_b02",10,290;
	sleep 3000;
	mapannounce "bat_b02"," ˹ս-02 1Ӻر!",1,0x00FF00;
	initnpctimer;
	end;

OnTimer30000:
	if( $@FlaviusBG2 == 2 )
		mapannounce "bat_b02"," ˹ս-02 30ر!",1,0x00FF00;
	end;
OnTimer50000:
	if( $@FlaviusBG2 == 2 )
		mapannounce "bat_b02"," ˹ս-02 10ر!",1,0x00FF00;
	end;

OnTimer60000:
	if( $@FlaviusBG2 != 2 )
		end;
OnReset:
	stopnpctimer;
	donpcevent "Flavius_BG2::OnRoundStop";
	set .Guillaume_Score, 0;
	set .Guillaume_Crystal, 0;
	set .Guillaume_Loss, 0;
	set .Croix_Score, 0;
	set .Croix_Crystal, 0;
	set .Croix_Loss, 0;
	set .Match, 0;
	set $@FlaviusBG2_Victory, 0;
	// NPC
	disablenpc "˾#fl2";
	disablenpc "Ǿ˾#fl2";
	disablenpc "սʦ#fl21";
	disablenpc "սʦ#fl22";

	if( $@FlaviusBG2_id1 ) { bg_destroy $@FlaviusBG2_id1; set $@FlaviusBG2_id1, 0; }
	if( $@FlaviusBG2_id2 ) { bg_destroy $@FlaviusBG2_id2; set $@FlaviusBG2_id2, 0; }
	sleep 1000;
	mapwarp "bat_b02","bat_room",155,150;
	sleep 2000;
	maprespawnguildid "bat_b02",0,3; // Just in case someone else
	sleep 2000;
	bg_updatescore "bat_b02",0,0;
	set $@FlaviusBG2, 0;
	donpcevent "Flavius_BG2::OnReadyCheck";
	end;
}

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

bat_b02,389,13,5	script	˾#fl2	419,{
	if( $@FlaviusBG2_Victory )
	{
		if( $@FlaviusBG2_Victory == Bat_Team )
		{ // ʤ
			mes "[˹ ˹]";
			mes "ʥļ!!";
			mes "ʤҫ!";
			mes "" + strcharinfo(0) + ", ϲΪʤ";
			close2;
			set .@Reward, 9;
		}
		else
		{ // ʧ
			mes "[˹ ˹]";
			mes "ȻʧˣѾսо.";
			mes "Ǽ ޶սĽ!";
			mes "εʧܵѵ.";
			close2;
			set .@Reward, 3;
		}

		setquest 2070;
		getitem 7829, .@Reward;
		bg_leave;
		warp "bat_room",155,150;
		end;
	}
	end;
}

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

		setquest 2070;
		getitem 7829, .@Reward;
		bg_leave;
		warp "bat_room",155,150;
		end;
	}
	end;
}

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

bat_b02,391,13,5	script	սʦ#fl22	95,{
	mes "[սʦ]";
	mes "ֻҪۣȻ.";
	mes "Լʹ.";
	specialeffect2 312;
	close;
}

bat_b02,11,293,5	script	սʦ#fl21	95,{
	mes "[սʦ]";
	mes "ֻҪۣȻ.";
	mes "Լʹ.";
	specialeffect2 312;
	close;
}

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

bat_b02,390,10,0	script	#gfl2_respawn	139,{
	end;

OnBGStart:
	initnpctimer;
	end;

OnBGStop:
	stopnpctimer;
	end;

OnTimer24000:
	misceffect 83;
	end;

OnTimer25000:
	areapercentheal "bat_b02",382,2,397,17,100,100;
	areawarp "bat_b02",382,2,397,17,"bat_b02",311,224;
	initnpctimer;
	end;
}

bat_b02,10,290,0	script	#cfl2_respawn	139,{
	end;

OnBGStart:
	initnpctimer;
	end;

OnBGStop:
	stopnpctimer;
	end;

OnTimer24000:
	misceffect 83;
	end;

OnTimer25000:
	areapercentheal "bat_b02",2,282,17,297,100,100;
	areawarp "bat_b02",2,282,17,297,"bat_b02",87,75;
	initnpctimer;
	end;
}

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

bat_b02,304,231,1	duplicate(Guillaume camp#bat)	Ӫ#bat32	973
bat_b02,319,231,1	duplicate(Guillaume camp#bat)	Ӫ#bat33	973
bat_b02,304,218,1	duplicate(Guillaume camp#bat)	Ӫ#bat34	973
bat_b02,319,218,1	duplicate(Guillaume camp#bat)	Ӫ#bat35	973
bat_b02,304,231,1	duplicate(Guillaume camp#bat)	Ӫ#bat36	973
bat_b02,304,231,1	duplicate(Guillaume camp#bat)	Ӫ#bat37	973
bat_b02,335,142,1	duplicate(Guillaume camp#bat)	Ӫ#bat38	973
bat_b02,335,157,1	duplicate(Guillaume camp#bat)	Ӫ#bat39	973
bat_b02,390,16,1	duplicate(Guillaume camp#bat)	Ӫ#bat40	973
bat_b02,292,163,1	duplicate(Guillaume camp#bat)	Ӫ#bat41	973
bat_b02,292,136,1	duplicate(Guillaume camp#bat)	Ӫ#bat42	973
bat_b02,241,185,1	duplicate(Guillaume camp#bat)	Ӫ#bat43	973
bat_b02,247,179,1	duplicate(Guillaume camp#bat)	Ӫ#bat44	973

bat_b02,96,81,1	duplicate(Croix camp#bat)	ǾӪ#bat30	974
bat_b02,96,68,1	duplicate(Croix camp#bat)	ǾӪ#bat31	974
bat_b02,79,81,1	duplicate(Croix camp#bat)	ǾӪ#bat32	974
bat_b02,79,68,1	duplicate(Croix camp#bat)	ǾӪ#bat33	974
bat_b02,96,81,1	duplicate(Croix camp#bat)	ǾӪ#bat34	974
bat_b02,96,81,1	duplicate(Croix camp#bat)	ǾӪ#bat35	974
bat_b02,59,164,1	duplicate(Croix camp#bat)	ǾӪ#bat36	974
bat_b02,59,137,1	duplicate(Croix camp#bat)	ǾӪ#bat37	974
bat_b02,10,296,1	duplicate(Croix camp#bat)	ǾӪ#bat38	974
bat_b02,110,162,1	duplicate(Croix camp#bat)	ǾӪ#bat39	974
bat_b02,110,137,1	duplicate(Croix camp#bat)	ǾӪ#bat40	974
bat_b02,152,120,1	duplicate(Croix camp#bat)	ǾӪ#bat41	974
bat_b02,158,114,1	duplicate(Croix camp#bat)	ǾӪ#bat42	974

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

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