- script bg_emp#control -1,{ OnInit: set .minplayer2start, 5; // minimum player to start setarray .rewarditem, 12334, 1; // reward to the winning team set .winningscore, 2; // final score to win set .eventlasting, 1200; // abort the system if there's no progress, 1200 seconds = 20 mins end; OnStart: if ( getwaitingroomstate( 0, "[Red Team]" ) < .minplayer2start || getwaitingroomstate( 0, "[Blue Team]" ) < .minplayer2start ) end; set .red, waitingroom2bg( "bat_c01", 50,124, strnpcinfo(0)+"::OnRedQuit", strnpcinfo(0)+"::OnRedDead", "[Red Team]" ); copyarray .team1aid, $@arenamembers, $@arenamembersnum; set .blue, waitingroom2bg( "bat_c01", 149,59, strnpcinfo(0)+"::OnBlueQuit", strnpcinfo(0)+"::OnBlueDead", "[Blue Team]" ); copyarray .team2aid, $@arenamembers, $@arenamembersnum; delwaitingroom "[Red Team]"; delwaitingroom "[Blue Team]"; bg_warp .red, "bat_c01", 50,124; bg_warp .blue, "bat_c01", 149,59; setwall "bat_c01",54,122,6,7,0,"batc01wall_a"; setwall "bat_c01",55,122,5,7,0,"batc01wall_b"; setwall "bat_c01",140,56,6,7,0,"batc01wall_c"; setwall "bat_c01",140,57,5,7,0,"batc01wall_d"; bg_updatescore "bat_c01", 0, 0; sleep 6000; areapercentheal "bat_c01",50,123,58,131,100,100; areapercentheal "bat_c01",141,52,149,60,100,100; mapannounce "bat_c01", "Rules are simple. The first one to break the opponent's emperium will get a score.", 0; sleep 3000; mapannounce "bat_c01", "Score "+ .winningscore +" rounds to win ! ... GET READY", 0; while (1) { for ( .@i = 5; .@i > 0; .@i-- ) { mapannounce "bat_c01","[ "+ .@i +" ]", 0; sleep 1000; } if ( .score[1] == .winningscore -1 && .score[2] == .winningscore -1 ) mapannounce "bat_c01", "Final Round start!", 0; else mapannounce "bat_c01", "Round "+ .round++ +" Start!", 0; bg_monster .red,"bat_c01",50,131, "--ja--",1915, strnpcinfo(3)+"::OnRedDown"; bg_monster .blue,"bat_c01",149,52, "--ja--",1914, strnpcinfo(3)+"::OnBlueDown"; donpcevent "::OnKvM01LightA"; donpcevent "::OnKvM01LightB"; donpcevent "::OnKvM01LightC"; delwall "batc01wall_a"; delwall "batc01wall_b"; delwall "batc01wall_c"; delwall "batc01wall_d"; sleep .eventlasting * 1000; .score[ .winside ]++; bg_updatescore "bat_c01", .score[1], .score[2]; killmonster "bat_c01", strnpcinfo(3)+"::OnRedDown"; killmonster "bat_c01", strnpcinfo(3)+"::OnBlueDown"; if ( .winside ) mapannounce "bat_c01","[ "+ .empkiller$ +" ] has Destroy "+( ( .winside == 1 )?"Blue":"Red" )+" Team's Emperium. "+( ( .winside == 1 )?"Red":"Blue" )+" Team score a point !", 0; if ( .score[1] == .winningscore || .score[2] == .winningscore || !.winside ) break; sleep 5000; bg_warp .red, "bat_c01", 50,124; bg_warp .blue, "bat_c01", 149,59; setwall "bat_c01",54,122,6,7,0,"batc01wall_a"; setwall "bat_c01",55,122,5,7,0,"batc01wall_b"; setwall "bat_c01",140,56,6,7,0,"batc01wall_c"; setwall "bat_c01",140,57,5,7,0,"batc01wall_d"; .winside = 0; } if ( .winside ) { mapannounce "bat_c01", ( ( .winside == 1 )?"Red":"Blue" )+" Team won !", 0; .@size = getarraysize( getd(".team"+ .winside +"aid") ); for ( .@i = 0; .@i < .@size; .@i++ ) getitem .rewarditem[0], .rewarditem[1], getd(".team"+ .winside +"aid["+ .@i +"]" ); } else mapannounce "bat_c01", "Time Out. Aborting the match.", 0; sleep 5000; L_Abort: bg_warp .red, "Welgaia", 157,96; bg_warp .blue, "Welgaia", 157,96; bg_destroy .red; bg_destroy .blue; delwall "batc01wall_a"; delwall "batc01wall_b"; delwall "batc01wall_c"; delwall "batc01wall_d"; deletearray .team1aid; deletearray .team2aid; .round = .winside = .score[2] = .score[1] = .inprogress = 0; donpcevent "[Red Team]::OnInit"; donpcevent "[Blue Team]::OnInit"; end; OnRedDown: callsub L_EmpDown, 2; OnBlueDown: callsub L_EmpDown, 1; L_EmpDown: .empkiller$ = strcharinfo(0); .winside = getarg(0); awake strnpcinfo(3); end; OnRedQuit: callsub L_quit, .red, "Red", "Blue", 2; OnBlueQuit: callsub L_quit, .blue, "Blue", "Red", 1; L_quit: if ( bg_get_data( getarg(0), 0 ) ) end; mapannounce "bat_c01", "All "+ getarg(1) +" team members has Quit ! ["+ getarg(2) +" Team] won !", 0; .@size = getarraysize( getd(".team"+ getarg(3) +"aid") ); for ( .@i = 0; .@i < .@size; .@i++ ) getitem .rewarditem[0], .rewarditem[1], getd(".team"+ getarg(3) +"aid["+ .@i +"]" ); goto L_Abort; OnRedDead: OnBlueDead: end; } Welgaia,153,114,4 script [Red Team] 414,{ end; OnInit: sleep 1; waitingroom strnpcinfo(1), getvariableofnpc( .minplayer2start, "bg_emp#control" ) +1, "bg_emp#control::OnStart", getvariableofnpc( .minplayer2start, "bg_emp#control" ); end; } Welgaia,160,114,4 duplicate([Red Team]) [Blue Team] 418 // HEALER // ***************************************************************** - script bghealbuffs -1,{ OnPCLoadMapEvent: while (getbrokenid(1)) { repair(1); set .@i, .@i +1; } getinventorylist; for (set .@j, 0; .@j < @inventorylist_count; set .@j, .@j + 1) { if (!@inventorylist_identify[.@j]) { delitem2 @inventorylist_id[.@j],1,0,0,0,0,0,0,0; getitem @inventorylist_id[.@j],1; } } percentheal 100,100; skilleffect 34,0; sc_start SC_BLESSING,1800000,10; skilleffect 29,0; sc_start SC_INCREASEAGI,1800000,10; } // Light Effects // ********************************************************************* bat_c01,54,123,0 script #bat_c01a 111,{ end; OnKvM01LightA: misceffect 54; end; OnKvM01LightB: misceffect 55; end; OnKvM01LightC: misceffect 56; end; } bat_c01,56,125,0 duplicate(#bat_c01a) #bat_c01b 111 bat_c01,58,127,0 duplicate(#bat_c01a) #bat_c01c 111 bat_c01,141,56,0 duplicate(#bat_c01a) #bat_c01d 111 bat_c01,143,58,0 duplicate(#bat_c01a) #bat_c01e 111 bat_c01,145,60,0 duplicate(#bat_c01a) #bat_c01f 111 bat_c01 mapflag loadevent bat_c01 mapflag battleground 2 bat_c01 mapflag nosave SavePoint bat_c01 mapflag nowarp bat_c01 mapflag nowarpto bat_c01 mapflag noteleport bat_c01 mapflag nomemo bat_c01 mapflag nopenalty