// (c) 2008 - 2012 eAmod Project; Andres Garbanzo / Zephyrus // // - gaiaro.staff@yahoo.com // - MSN andresjgm.cr@hotmail.com // - Skype: Zephyrus_cr // - Site: http://dev.terra-gaming.com // // This file is NOT public - you are not allowed to distribute it. // Authorized Server List : http://dev.terra-gaming.com/index.php?/topic/72-authorized-eamod-servers/ // eAmod is a non Free, extended version of eAthena Ragnarok Private Server. // ============================================================================== // BattleGround System - Rush // ============================================================================== // Registration NPC's // ********************************************************************* sec_in01,77,170,6 script Registration Rush::RushR_Guillaume 418,{ end; OnInit: waitingroom "Battle Station 4 Players",4,"Rush::OnGuillaumeJoin",4; end; OnEnterBG: set $@Rush_id1, waitingroom2bg(getvariableofnpc(.Castle$,"Rush"),getvariableofnpc(.GX,"Rush"),getvariableofnpc(.GY,"Rush"),0,"Rush::OnGuillaumeQuit",""); end; } sec_in01,77,165,6 script Registration Rush::RushR_Croix 414,{ end; OnInit: waitingroom "Battle Station 4 Players",4,"Rush::OnCroixJoin",4; end; OnEnterBG: set $@Rush_id2, waitingroom2bg(getvariableofnpc(.Castle$,"Rush"),getvariableofnpc(.CX,"Rush"),getvariableofnpc(.CY,"Rush"),1,"Rush::OnCroixQuit",""); end; } // Battleground Engine // ********************************************************************* - script Rush -1,{ end; OnSetRotation: if( set(.Index,.Index + 1) > 3 ) set .Index, 0; switch( .Index ) { case 0: set .Castle$,"rush_cas01"; set .GX,202; set .GY,230; set .CX,202; set .CY,226; break; case 1: set .Castle$,"rush_cas02"; set .GX,146; set .GY, 50; set .CX,146; set .CY, 46; break; case 2: set .Castle$,"rush_cas03"; set .GX, 60; set .GY, 13; set .CX, 64; set .CY, 13; break; case 3: set .Castle$,"rush_cas04"; set .GX,270; set .GY,292; set .CX,270; set .CY,288; break; } end; OnInit: setwall "rush_cas01",198,228,10,6,0,"Rush_wall_a"; setcell "rush_cas01",198,224,207,233,cell_basilica,1; setwall "rush_cas02",142,48,10,6,0,"Rush_wall_b"; setcell "rush_cas02",142,44,151,53,cell_basilica,1; setwall "rush_cas03",62,8,10,0,0,"Rush_wall_c"; setcell "rush_cas03",56,6,69,17,cell_basilica,1; setwall "rush_cas04",266,290,10,6,0,"Rush_wall_d"; setcell "rush_cas04",266,286,275,295,cell_basilica,1; set .Index,0; donpcevent "Rush::OnSetRotation"; end; OnGuillaumeQuit: OnCroixQuit: setquest 8506; // Deserter if( $@Rush != 0 ) donpcevent "Rush::OnDoBalance"; end; OnGuillaumeJoin: OnCroixJoin: if( $@Rush == 0 ) donpcevent "Rush::OnReadyCheck"; else donpcevent "Rush::OnDoBalance"; end; OnDoBalance: if( $@Rush != 1 ) end; // No Balance if BG runing set .@Guillaume, bg_get_data($@Rush_id1, 0); set .@Croix, bg_get_data($@Rush_id2, 0); if( .@Guillaume < .@Croix ) waitingroom2bg_single $@Rush_id1,.Castle$,.GX,.GY,"RushR_Guillaume"; else if( .@Guillaume > .@Croix ) waitingroom2bg_single $@Rush_id2,.Castle$,.CX,.CY,"RushR_Croix"; else { set .@GuillaumeR, getwaitingroomstate(0,"RushR_Guillaume"); set .@CroixR, getwaitingroomstate(0,"RushR_Croix"); if( .@GuillaumeR <= .@CroixR ) set .@Limit, .@GuillaumeR; else set .@Limit, .@CroixR; if( .@Limit + .@Guillaume > 30 ) set .@Limit, 30 - .@Guillaume; if( .@Limit <= 0 ) end; for( set .@i, 0; .@i < .@Limit; set .@i, .@i + 1 ) { waitingroom2bg_single $@Rush_id1,.Castle$,.GX,.GY,"RushR_Guillaume"; waitingroom2bg_single $@Rush_id2,.Castle$,.CX,.CY,"RushR_Croix"; } set .@Guillaume, .@Guillaume + .@Limit; set .@Croix, .@Croix + .@Limit; mapannounce "bat_room","Battleground -- Rush [80-99] G: " + .@Guillaume + "/30, C: " + .@Croix + "/30 (Playing)",1,0xDDA0DD; } end; OnReadyCheck: if( $@Rush ) end; set .@Guillaume, getwaitingroomstate(0,"RushR_Guillaume"); set .@Croix, getwaitingroomstate(0,"RushR_Croix"); if( .@Guillaume < 4 || .@Croix < 4 ) { if( .@Guillaume > 10 && .@Croix > 10 && !agitcheck() && $@Rush_Flood < gettimetick(2) ) { announce "Battleground -- Rush [80-99] G: " + .@Guillaume + "/15, C: " + .@Croix + "/15",0,0xDDA0DD; set $@Rush_Flood, gettimetick(2) + 15; } else mapannounce "bat_room","Battleground -- Rush [80-99] G: " + .@Guillaume + "/15, C: " + .@Croix + "/15",1,0xDDA0DD; end; } set $@Rush, 1; set .Guillaume_Score, 0; set .Croix_Score, 0; donpcevent "RushR_Guillaume::OnEnterBG"; donpcevent "RushR_Croix::OnEnterBG"; announce "Battleground -- Rush [80-99] has started!",0,0xDDA0DD; // Emperium ===================== switch( .Index ) { case 0: // ========================================================================= bg_monster 0,.Castle$,158,174,"Emperium",2107,"Rush::OnEmperium"; break; case 1: // ========================================================================= bg_monster 0,.Castle$,271,29,"Emperium",2107,"Rush::OnEmperium"; break; case 2: // ========================================================================= bg_monster 0,.Castle$,28,102,"Emperium",2107,"Rush::OnEmperium"; break; case 3: // ========================================================================= bg_monster 0,.Castle$,245,167,"Emperium",2107,"Rush::OnEmperium"; break; } // ====================================== set .Defender, 0; // No Defender donpcevent "::OnEmblemRush"; sleep 2000; switch( .Index ) { case 0: bg_warp $@Rush_id1,.Castle$,43,229; bg_warp $@Rush_id2,.Castle$,43,229; break; case 1: bg_warp $@Rush_id1,.Castle$,252,271; bg_warp $@Rush_id2,.Castle$,252,271; break; case 2: bg_warp $@Rush_id1,.Castle$,216,103; bg_warp $@Rush_id2,.Castle$,216,103; break; case 3: bg_warp $@Rush_id1,.Castle$,100,280; bg_warp $@Rush_id2,.Castle$,100,280; break; } initnpctimer; initnpctimer "Rush_Respawn"; end; OnTimer60000: mapannounce .Castle$,"Battle of Rush will ends in 6 minutes",1,0xDDA0DD; end; OnTimer360000: mapannounce .Castle$,"Battle of Rush will ends in 1 minute",1,0xDDA0DD; end; OnEmperium: if( $@Rush != 1 ) end; if( .Defender == 0 ) { // First Capture initnpctimer; set .Defender,getcharid(4); if( .Defender == $@Rush_id1 ) { set .Guillaume_Score,1; mapannounce .Castle$,"General Guillaume : Castle captured, now prepare to Defend it!!",1,0x0000FF; bg_warp $@Rush_id2,"RespawnPoint",0,0; // To Cementery and Wait } else { set .Croix_Score,1; mapannounce .Castle$,"Prince Croix : Castle captured, now prepare to Defend it!!",1,0xFF0000; bg_warp $@Rush_id1,"RespawnPoint",0,0; // To Cementery and Wait } bg_updatescore .Castle$,.Guillaume_Score,.Croix_Score; // Emperium ===================== switch( .Index ) { case 0: // ========================================================================= bg_monster .Defender,.Castle$,158,174,"Emperium",2107,"Rush::OnEmperium"; break; case 1: // ========================================================================= bg_monster .Defender,.Castle$,271,29,"Emperium",2107,"Rush::OnEmperium"; break; case 2: // ========================================================================= bg_monster .Defender,.Castle$,28,102,"Emperium",2107,"Rush::OnEmperium"; break; case 3: // ========================================================================= bg_monster .Defender,.Castle$,245,167,"Emperium",2107,"Rush::OnEmperium"; break; } // ====================================== initnpctimer "Rush_Respawn"; sleep 5000; if( .Defender == $@Rush_id1 ) mapannounce .Castle$,"Prince Croix : Capture the Castle, it's our last chance to Win!!",1,0xFF0000; else mapannounce .Castle$,"General Guillaume : Capture the Castle, it's our last chance to Win!!",1,0x0000FF; end; } // Second Capture if( .Defender == $@Rush_id1 ) { set .Croix_Score,2; mapannounce .Castle$,"Prince Croix : Castle captured, we won the Battle!!",1,0xFF0000; } else { set .Guillaume_Score,2; mapannounce .Castle$,"General Guillaume : Castle captured, we won the Battle!!",1,0x0000FF; } donpcevent "Rush::OnMatchEnd"; end; OnTimer420000: if( .Defender == 0 ) mapannounce .Castle$,"Castle captured Fail. No winners",1,0xDDA0DD; else if( .Defender == $@Rush_id1 ) { set .Guillaume_Score,3; mapannounce .Castle$,"General Guillaume : Castle protected, we won the Battle!!",1,0x0000FF; } else { set .Croix_Score,3; mapannounce .Castle$,"Prince Croix : Castle protected, we won the Battle!!",1,0xFF0000; } donpcevent "Rush::OnMatchEnd"; end; OnMatchEnd: stopnpctimer; stopnpctimer "Rush_Respawn"; set $@Rush, 2; // BG Status killmonster .Castle$,"Rush::OnEmperium"; bg_updatescore .Castle$,.Guillaume_Score,.Croix_Score; // ======================================================= // Team Rewards // ======================================================= set .@Reward, 30 + (.Guillaume_Score * 18); if( .Guillaume_Score > .Croix_Score ) set .@Won,0; else set .@Won,2; bg_reward $@Rush_id1,7773,.@Reward,0,8510,"BG_RUSH",1,7,.@Won; bg_reward $@Rush_id1,7828,.@Reward,0,8520,"BG_RUSH",1,7,.@Won; bg_reward $@Rush_id1,7829,.@Reward,0,8530,"BG_RUSH",1,7,.@Won; // ======================================================= set .@Reward, 30 + (.Croix_Score * 18); if( .Croix_Score > .Guillaume_Score ) set .@Won,0; else set .@Won,2; bg_reward $@Rush_id2,7773,.@Reward,0,8510,"BG_RUSH",1,7,.@Won; bg_reward $@Rush_id2,7828,.@Reward,0,8520,"BG_RUSH",1,7,.@Won; bg_reward $@Rush_id2,7829,.@Reward,0,8530,"BG_RUSH",1,7,.@Won; // ======================================================= mapannounce .Castle$,"Battle of Rush will start 15 in seconds!",1,0xDDA0DD; sleep 2000; bg_destroy $@Rush_id1; set $@Rush_id1, 0; bg_destroy $@Rush_id2; set $@Rush_id2, 0; mapwarp .Castle$,"sec_in01",85,167; sleep 1000; maprespawnguildid .Castle$,0,3; // Just in case someone else sleep 12000; set $@Rush, 0; set .Guillaume_Score, 0; set .Croix_Score, 0; bg_updatescore .Castle$,.Guillaume_Score,.Croix_Score; donpcevent "Rush::OnSetRotation"; donpcevent "Rush::OnReadyCheck"; end; } // Battleground Respawn // ********************************************************************* - script Rush_Respawn -1,{ end; OnTimer24000: mapannounce .Castle$,"-- Reinforcements entering the Battle of Rush --",1,0xDDA0DD; end; OnTimer25000: set .@Castle$,getvariableofnpc(.Castle$,"Rush"); set .@Defender,getvariableofnpc(.Defender,"Rush"); switch( getvariableofnpc(.Index,"Rush") ) { case 0: // rush_cas01 ======================================================================== areapercentheal .@Castle$,198,224,207,233,100,100; if( .@Defender == 0 ) areawarp .@Castle$,198,224,207,233,.@Castle$,43,229; else if( $@Rush_id1 == .@Defender ) { areawarp .@Castle$,198,229,207,233,.@Castle$,71,36; areawarp .@Castle$,198,224,207,227,.@Castle$,43,229; } else { areawarp .@Castle$,198,229,207,233,.@Castle$,43,229; areawarp .@Castle$,198,224,207,227,.@Castle$,71,36; } break; case 1: // rush_cas02 ======================================================================== areapercentheal .@Castle$,142,44,151,53,100,100; if( .@Defender == 0 ) areawarp .@Castle$,142,44,151,53,.@Castle$,252,271; else if( $@Rush_id1 == .@Defender ) { areawarp .@Castle$,142,49,151,53,.@Castle$,40,235; areawarp .@Castle$,142,44,151,47,.@Castle$,252,271; } else { areawarp .@Castle$,142,49,151,53,.@Castle$,252,271; areawarp .@Castle$,142,44,151,47,.@Castle$,40,235; } break; case 2: // rush_cas03 ======================================================================== areapercentheal .@Castle$,56,6,69,17,100,100; if( .@Defender == 0 ) areawarp .@Castle$,56,6,69,17,.@Castle$,216,103; else if( $@Rush_id1 == .@Defender ) { areawarp .@Castle$,56,6,61,17,.@Castle$,31,190; areawarp .@Castle$,63,6,69,17,.@Castle$,216,103; } else { areawarp .@Castle$,56,6,61,17,.@Castle$,216,103; areawarp .@Castle$,63,6,69,17,.@Castle$,31,190; } break; case 3: // rush_cas04 ======================================================================== areapercentheal .@Castle$,266,286,275,295,100,100; if( .@Defender == 0 ) areawarp .@Castle$,266,286,275,295,.@Castle$,100,280; else if( $@Rush_id1 == .@Defender ) { areawarp .@Castle$,266,291,275,295,.@Castle$,116,89; areawarp .@Castle$,266,286,275,289,.@Castle$,100,280; } else { areawarp .@Castle$,266,291,275,295,.@Castle$,100,280; areawarp .@Castle$,266,286,275,289,.@Castle$,116,89; } break; } initnpctimer; end; } // Battleground Therapist // ********************************************************************* rush_cas01,198,233,6 script Therapist in battle#rh1 95,{ mes "[Therapist in battle]"; mes "Just close your eyes, and take a deep breathe."; mes "You can be free from pain."; specialeffect2 312; percentheal 100,100; repairall; close2; openstorage; end; } rush_cas01,198,224,6 script Therapist in battle#rh2 95,{ mes "[Therapist in battle]"; mes "Just close your eyes, and take a deep breathe."; mes "You can be free from pain."; specialeffect2 312; percentheal 100,100; repairall; close2; openstorage; end; } rush_cas02,142,53,6 script Therapist in battle#rh3 95,{ mes "[Therapist in battle]"; mes "Just close your eyes, and take a deep breathe."; mes "You can be free from pain."; specialeffect2 312; percentheal 100,100; repairall; close2; openstorage; end; } rush_cas02,142,44,6 script Therapist in battle#rh4 95,{ mes "[Therapist in battle]"; mes "Just close your eyes, and take a deep breathe."; mes "You can be free from pain."; specialeffect2 312; percentheal 100,100; repairall; close2; openstorage; end; } rush_cas03,68,17,4 script Therapist in battle#rh5 95,{ mes "[Therapist in battle]"; mes "Just close your eyes, and take a deep breathe."; mes "You can be free from pain."; specialeffect2 312; percentheal 100,100; repairall; close2; openstorage; end; } rush_cas03,66,17,4 script Therapist in battle#rh6 95,{ mes "[Therapist in battle]"; mes "Just close your eyes, and take a deep breathe."; mes "You can be free from pain."; specialeffect2 312; percentheal 100,100; repairall; close2; openstorage; end; } rush_cas04,266,295,6 script Therapist in battle#rh7 95,{ mes "[Therapist in battle]"; mes "Just close your eyes, and take a deep breathe."; mes "You can be free from pain."; specialeffect2 312; percentheal 100,100; repairall; close2; openstorage; end; } rush_cas04,266,286,6 script Therapist in battle#rh8 95,{ mes "[Therapist in battle]"; mes "Just close your eyes, and take a deep breathe."; mes "You can be free from pain."; specialeffect2 312; percentheal 100,100; repairall; close2; openstorage; end; } // Warp Portals // ********************************************************************* rush_cas01,157,135,0 warp rush106-1 1,1,rush_cas01,184,40 rush_cas01,161,41,0 warp rush102-1 1,1,rush_cas01,57,202 rush_cas01,184,44,0 warp rush106 1,1,rush_cas01,157,140 rush_cas01,203,21,0 warp rush105-1 1,1,rush_cas01,45,25 rush_cas01,210,41,0 warp rush101-1 1,1,rush_cas01,84,215 rush_cas01,35,183,0 warp rush104 1,1,rush_cas01,71,82 rush_cas01,45,21,0 warp rush105 1,1,rush_cas01,203,25 rush_cas01,53,202,0 warp rush102 1,1,rush_cas01,165,41 rush_cas01,64,164,0 warp rush103 1,1,rush_cas01,98,25 rush_cas01,71,86,0 warp rush104-1 1,1,rush_cas01,35,187 rush_cas01,88,215,0 warp rush101 1,1,rush_cas01,206,41 rush_cas01,98,21,0 warp rush103-1 1,1,rush_cas01,64,168 rush_cas02,259,212,0 warp rush201 1,1,rush_cas02,72,240 rush_cas02,75,240,0 warp rush201-1 1,5,rush_cas02,256,212 rush_cas02,232,189,0 warp rush202 1,1,rush_cas02,74,261 rush_cas02,78,261,0 warp rush202-1 1,1,rush_cas02,236,189 rush_cas02,229,208,0 warp rush203 1,1,rush_cas02,70,282 rush_cas02,74,282,0 warp rush203-1 1,1,rush_cas02,225,208 rush_cas02,7,261,0 warp rush204 1,1,rush_cas02,55,30 rush_cas02,59,30,0 warp rush204-1 1,1,rush_cas02,11,261 rush_cas02,28,31,0 warp rush205 1,1,rush_cas02,251,42 rush_cas02,254,45,0 warp rush205-1 1,1,rush_cas02,24,31 rush_cas03,194,71,0 warp rush301 1,1,rush_cas03,129,194 rush_cas03,125,194,0 warp rush301-1 1,1,rush_cas03,199,70 rush_cas03,164,86,0 warp rush302 1,1,rush_cas03,66,189 rush_cas03,70,189,0 warp rush302-1 1,1,rush_cas03,166,81 rush_cas03,150,67,0 warp rush303 1,1,rush_cas03,9,187 rush_cas03,5,187,0 warp rush303-1 1,1,rush_cas03,151,62 rush_cas03,165,232,0 warp rush304 1,1,rush_cas03,193,49 rush_cas03,188,49,0 warp rush304-1 1,1,rush_cas03,165,228 rush_cas03,195,42,0 warp rush305 1,1,rush_cas03,19,227 rush_cas03,15,227,0 warp rush305-1 1,1,rush_cas03,195,46 rush_cas03,13,175,0 warp rush306 1,1,rush_cas03,162,194 rush_cas03,166,194,0 warp rush306-1 1,1,rush_cas03,13,179 rush_cas03,156,231,0 warp rush307 1,1,rush_cas03,18,88 rush_cas03,14,88,0 warp rush307-1 1,1,rush_cas03,156,227 rush_cas04,106,217,0 warp rush407 1,1,rush_cas04,131,15 rush_cas04,115,210,0 warp rush408 1,1,rush_cas04,92,215 rush_cas04,135,15,0 warp rush407-1 1,1,rush_cas04,110,217 rush_cas04,135,92,0 warp rush402-1 1,1,rush_cas04,34,282 rush_cas04,152,92,0 warp rush404-1 1,1,rush_cas04,59,255 rush_cas04,154,16,0 warp rush414 1,1,rush_cas04,252,11 rush_cas04,17,206,0 warp rush406-1 1,1,rush_cas04,29,219 rush_cas04,212,46,0 warp rush415 1,1,rush_cas04,225,158 rush_cas04,225,154,0 warp rush415-1 1,1,rush_cas04,212,42 rush_cas04,237,74,0 warp rush412-1 1,1,rush_cas04,62,213 rush_cas04,256,11,0 warp rush414-1 1,1,rush_cas04,159,16 rush_cas04,266,47,0 warp rush409-1 1,1,rush_cas04,45,175 rush_cas04,27,215,0 warp rush406-2 1,1,rush_cas04,17,202 rush_cas04,34,286,0 warp rush402 1,1,rush_cas04,131,92 rush_cas04,38,243,0 warp rush406 1,1,rush_cas04,29,219 rush_cas04,38,259,0 warp rush403-1 1,1,rush_cas04,43,271 rush_cas04,42,175,0 warp rush409 1,1,rush_cas04,266,43 rush_cas04,43,191,0 warp rush410-1 1,1,rush_cas04,70,185 rush_cas04,47,271,0 warp rush403 1,1,rush_cas04,38,255 rush_cas04,50,248,0 warp rush405 1,1,rush_cas04,54,229 rush_cas04,58,232,0 warp rush405-1 1,1,rush_cas04,62,213 rush_cas04,63,255,0 warp rush404 1,1,rush_cas04,156,92 rush_cas04,65,215,0 warp rush412 1,1,rush_cas04,233,74 rush_cas04,66,223,0 warp rush401 1,1,rush_cas04,96,53 rush_cas04,70,182,0 warp rush410 1,1,rush_cas04,39,191 rush_cas04,79,244,0 warp rush413-1 1,1,rush_cas04,91,250 rush_cas04,88,248,0 warp rush411-1 1,1,rush_cas04,76,242 rush_cas04,90,218,0 warp rush408-1 1,1,rush_cas04,111,210 rush_cas04,92,53,0 warp rush401-1 1,1,rush_cas04,62,223 rush_cas04,93,209,0 warp rush411 1,1,rush_cas04,92,250 rush_cas04,95,251,0 warp rush413 1,1,rush_cas04,91,209 // MapFlags // ********************************************************************* rush_cas01 mapflag battleground 2 rush_cas01 mapflag nomemo rush_cas01 mapflag nosave SavePoint rush_cas01 mapflag noteleport rush_cas01 mapflag nowarp rush_cas01 mapflag nowarpto rush_cas01 mapflag noreturn rush_cas01 mapflag nobranch rush_cas01 mapflag nopenalty rush_cas02 mapflag battleground 2 rush_cas02 mapflag nomemo rush_cas02 mapflag nosave SavePoint rush_cas02 mapflag noteleport rush_cas02 mapflag nowarp rush_cas02 mapflag nowarpto rush_cas02 mapflag noreturn rush_cas02 mapflag nobranch rush_cas02 mapflag nopenalty rush_cas03 mapflag battleground 2 rush_cas03 mapflag nomemo rush_cas03 mapflag nosave SavePoint rush_cas03 mapflag noteleport rush_cas03 mapflag nowarp rush_cas03 mapflag nowarpto rush_cas03 mapflag noreturn rush_cas03 mapflag nobranch rush_cas03 mapflag nopenalty rush_cas04 mapflag battleground 2 rush_cas04 mapflag nomemo rush_cas04 mapflag nosave SavePoint rush_cas04 mapflag noteleport rush_cas04 mapflag nowarp rush_cas04 mapflag nowarpto rush_cas04 mapflag noreturn rush_cas04 mapflag nobranch rush_cas04 mapflag nopenalty [spoiler/] rangel, em 22 Dez 2013 - 21:40, disse: desculpe amigo '-' [spoiler] // (c) 2008 - 2012 eAmod Project; Andres Garbanzo / Zephyrus // // - gaiaro.staff@yahoo.com // - MSN andresjgm.cr@hotmail.com // - Skype: Zephyrus_cr // - Site: http://dev.terra-gaming.com // // This file is NOT public - you are not allowed to distribute it. // Authorized Server List : http://dev.terra-gaming.com/index.php?/topic/72-authorized-eamod-servers/ // eAmod is a non Free, extended version of eAthena Ragnarok Private Server. // ============================================================================== // BattleGround System - Rush // ============================================================================== // Registration NPC's // ********************************************************************* sec_in01,77,170,6 script Registration Rush::RushR_Guillaume 418,{ end; OnInit: waitingroom "Battle Station 4 Players",4,"Rush::OnGuillaumeJoin",4; end; OnEnterBG: set $@Rush_id1, waitingroom2bg(getvariableofnpc(.Castle$,"Rush"),getvariableofnpc(.GX,"Rush"),getvariableofnpc(.GY,"Rush"),0,"Rush::OnGuillaumeQuit",""); end; } sec_in01,77,165,6 script Registration Rush::RushR_Croix 414,{ end; OnInit: waitingroom "Battle Station 4 Players",4,"Rush::OnCroixJoin",4; end; OnEnterBG: set $@Rush_id2, waitingroom2bg(getvariableofnpc(.Castle$,"Rush"),getvariableofnpc(.CX,"Rush"),getvariableofnpc(.CY,"Rush"),1,"Rush::OnCroixQuit",""); end; } // Battleground Engine // ********************************************************************* - script Rush -1,{ end; OnSetRotation: if( set(.Index,.Index + 1) > 3 ) set .Index, 0; switch( .Index ) { case 0: set .Castle$,"rush_cas01"; set .GX,202; set .GY,230; set .CX,202; set .CY,226; break; case 1: set .Castle$,"rush_cas02"; set .GX,146; set .GY, 50; set .CX,146; set .CY, 46; break; case 2: set .Castle$,"rush_cas03"; set .GX, 60; set .GY, 13; set .CX, 64; set .CY, 13; break; case 3: set .Castle$,"rush_cas04"; set .GX,270; set .GY,292; set .CX,270; set .CY,288; break; } end; OnInit: setwall "rush_cas01",198,228,10,6,0,"Rush_wall_a"; setcell "rush_cas01",198,224,207,233,cell_basilica,1; setwall "rush_cas02",142,48,10,6,0,"Rush_wall_b"; setcell "rush_cas02",142,44,151,53,cell_basilica,1; setwall "rush_cas03",62,8,10,0,0,"Rush_wall_c"; setcell "rush_cas03",56,6,69,17,cell_basilica,1; setwall "rush_cas04",266,290,10,6,0,"Rush_wall_d"; setcell "rush_cas04",266,286,275,295,cell_basilica,1; set .Index,0; donpcevent "Rush::OnSetRotation"; end; OnGuillaumeQuit: OnCroixQuit: setquest 8506; // Deserter if( $@Rush != 0 ) donpcevent "Rush::OnDoBalance"; end; OnGuillaumeJoin: OnCroixJoin: if( $@Rush == 0 ) donpcevent "Rush::OnReadyCheck"; else donpcevent "Rush::OnDoBalance"; end; OnDoBalance: if( $@Rush != 1 ) end; // No Balance if BG runing set .@Guillaume, bg_get_data($@Rush_id1, 0); set .@Croix, bg_get_data($@Rush_id2, 0); if( .@Guillaume < .@Croix ) waitingroom2bg_single $@Rush_id1,.Castle$,.GX,.GY,"RushR_Guillaume"; else if( .@Guillaume > .@Croix ) waitingroom2bg_single $@Rush_id2,.Castle$,.CX,.CY,"RushR_Croix"; else { set .@GuillaumeR, getwaitingroomstate(0,"RushR_Guillaume"); set .@CroixR, getwaitingroomstate(0,"RushR_Croix"); if( .@GuillaumeR <= .@CroixR ) set .@Limit, .@GuillaumeR; else set .@Limit, .@CroixR; if( .@Limit + .@Guillaume > 30 ) set .@Limit, 30 - .@Guillaume; if( .@Limit <= 0 ) end; for( set .@i, 0; .@i < .@Limit; set .@i, .@i + 1 ) { waitingroom2bg_single $@Rush_id1,.Castle$,.GX,.GY,"RushR_Guillaume"; waitingroom2bg_single $@Rush_id2,.Castle$,.CX,.CY,"RushR_Croix"; } set .@Guillaume, .@Guillaume + .@Limit; set .@Croix, .@Croix + .@Limit; mapannounce "bat_room","Battleground -- Rush [80-99] G: " + .@Guillaume + "/30, C: " + .@Croix + "/30 (Playing)",1,0xDDA0DD; } end; OnReadyCheck: if( $@Rush ) end; set .@Guillaume, getwaitingroomstate(0,"RushR_Guillaume"); set .@Croix, getwaitingroomstate(0,"RushR_Croix"); if( .@Guillaume < 4 || .@Croix < 4 ) { if( .@Guillaume > 10 && .@Croix > 10 && !agitcheck() && $@Rush_Flood < gettimetick(2) ) { announce "Battleground -- Rush [80-99] G: " + .@Guillaume + "/15, C: " + .@Croix + "/15",0,0xDDA0DD; set $@Rush_Flood, gettimetick(2) + 15; } else mapannounce "bat_room","Battleground -- Rush [80-99] G: " + .@Guillaume + "/15, C: " + .@Croix + "/15",1,0xDDA0DD; end; } set $@Rush, 1; set .Guillaume_Score, 0; set .Croix_Score, 0; donpcevent "RushR_Guillaume::OnEnterBG"; donpcevent "RushR_Croix::OnEnterBG"; announce "Battleground -- Rush [80-99] has started!",0,0xDDA0DD; // Emperium ===================== switch( .Index ) { case 0: // ========================================================================= bg_monster 0,.Castle$,158,174,"Emperium",2107,"Rush::OnEmperium"; break; case 1: // ========================================================================= bg_monster 0,.Castle$,271,29,"Emperium",2107,"Rush::OnEmperium"; break; case 2: // ========================================================================= bg_monster 0,.Castle$,28,102,"Emperium",2107,"Rush::OnEmperium"; break; case 3: // ========================================================================= bg_monster 0,.Castle$,245,167,"Emperium",2107,"Rush::OnEmperium"; break; } // ====================================== set .Defender, 0; // No Defender donpcevent "::OnEmblemRush"; sleep 2000; switch( .Index ) { case 0: bg_warp $@Rush_id1,.Castle$,43,229; bg_warp $@Rush_id2,.Castle$,43,229; break; case 1: bg_warp $@Rush_id1,.Castle$,252,271; bg_warp $@Rush_id2,.Castle$,252,271; break; case 2: bg_warp $@Rush_id1,.Castle$,216,103; bg_warp $@Rush_id2,.Castle$,216,103; break; case 3: bg_warp $@Rush_id1,.Castle$,100,280; bg_warp $@Rush_id2,.Castle$,100,280; break; } initnpctimer; initnpctimer "Rush_Respawn"; end; OnTimer60000: mapannounce .Castle$,"Battle of Rush will ends in 6 minutes",1,0xDDA0DD; end; OnTimer360000: mapannounce .Castle$,"Battle of Rush will ends in 1 minute",1,0xDDA0DD; end; OnEmperium: if( $@Rush != 1 ) end; if( .Defender == 0 ) { // First Capture initnpctimer; set .Defender,getcharid(4); if( .Defender == $@Rush_id1 ) { set .Guillaume_Score,1; mapannounce .Castle$,"General Guillaume : Castle captured, now prepare to Defend it!!",1,0x0000FF; bg_warp $@Rush_id2,"RespawnPoint",0,0; // To Cementery and Wait } else { set .Croix_Score,1; mapannounce .Castle$,"Prince Croix : Castle captured, now prepare to Defend it!!",1,0xFF0000; bg_warp $@Rush_id1,"RespawnPoint",0,0; // To Cementery and Wait } bg_updatescore .Castle$,.Guillaume_Score,.Croix_Score; // Emperium ===================== switch( .Index ) { case 0: // ========================================================================= bg_monster .Defender,.Castle$,158,174,"Emperium",2107,"Rush::OnEmperium"; break; case 1: // ========================================================================= bg_monster .Defender,.Castle$,271,29,"Emperium",2107,"Rush::OnEmperium"; break; case 2: // ========================================================================= bg_monster .Defender,.Castle$,28,102,"Emperium",2107,"Rush::OnEmperium"; break; case 3: // ========================================================================= bg_monster .Defender,.Castle$,245,167,"Emperium",2107,"Rush::OnEmperium"; break; } // ====================================== initnpctimer "Rush_Respawn"; sleep 5000; if( .Defender == $@Rush_id1 ) mapannounce .Castle$,"Prince Croix : Capture the Castle, it's our last chance to Win!!",1,0xFF0000; else mapannounce .Castle$,"General Guillaume : Capture the Castle, it's our last chance to Win!!",1,0x0000FF; end; } // Second Capture if( .Defender == $@Rush_id1 ) { set .Croix_Score,2; mapannounce .Castle$,"Prince Croix : Castle captured, we won the Battle!!",1,0xFF0000; } else { set .Guillaume_Score,2; mapannounce .Castle$,"General Guillaume : Castle captured, we won the Battle!!",1,0x0000FF; } donpcevent "Rush::OnMatchEnd"; end; OnTimer420000: if( .Defender == 0 ) mapannounce .Castle$,"Castle captured Fail. No winners",1,0xDDA0DD; else if( .Defender == $@Rush_id1 ) { set .Guillaume_Score,3; mapannounce .Castle$,"General Guillaume : Castle protected, we won the Battle!!",1,0x0000FF; } else { set .Croix_Score,3; mapannounce .Castle$,"Prince Croix : Castle protected, we won the Battle!!",1,0xFF0000; } donpcevent "Rush::OnMatchEnd"; end; OnMatchEnd: stopnpctimer; stopnpctimer "Rush_Respawn"; set $@Rush, 2; // BG Status killmonster .Castle$,"Rush::OnEmperium"; bg_updatescore .Castle$,.Guillaume_Score,.Croix_Score; // ======================================================= // Team Rewards // ======================================================= set .@Reward, 30 + (.Guillaume_Score * 18); if( .Guillaume_Score > .Croix_Score ) set .@Won,0; else set .@Won,2; bg_reward $@Rush_id1,7773,.@Reward,0,8510,"BG_RUSH",1,7,.@Won; bg_reward $@Rush_id1,7828,.@Reward,0,8520,"BG_RUSH",1,7,.@Won; bg_reward $@Rush_id1,7829,.@Reward,0,8530,"BG_RUSH",1,7,.@Won; // ======================================================= set .@Reward, 30 + (.Croix_Score * 18); if( .Croix_Score > .Guillaume_Score ) set .@Won,0; else set .@Won,2; bg_reward $@Rush_id2,7773,.@Reward,0,8510,"BG_RUSH",1,7,.@Won; bg_reward $@Rush_id2,7828,.@Reward,0,8520,"BG_RUSH",1,7,.@Won; bg_reward $@Rush_id2,7829,.@Reward,0,8530,"BG_RUSH",1,7,.@Won; // ======================================================= mapannounce .Castle$,"Battle of Rush will start 15 in seconds!",1,0xDDA0DD; sleep 2000; bg_destroy $@Rush_id1; set $@Rush_id1, 0; bg_destroy $@Rush_id2; set $@Rush_id2, 0; mapwarp .Castle$,"sec_in01",85,167; sleep 1000; maprespawnguildid .Castle$,0,3; // Just in case someone else sleep 12000; set $@Rush, 0; set .Guillaume_Score, 0; set .Croix_Score, 0; bg_updatescore .Castle$,.Guillaume_Score,.Croix_Score; donpcevent "Rush::OnSetRotation"; donpcevent "Rush::OnReadyCheck"; end; } // Battleground Respawn // ********************************************************************* - script Rush_Respawn -1,{ end; OnTimer24000: mapannounce .Castle$,"-- Reinforcements entering the Battle of Rush --",1,0xDDA0DD; end; OnTimer25000: set .@Castle$,getvariableofnpc(.Castle$,"Rush"); set .@Defender,getvariableofnpc(.Defender,"Rush"); switch( getvariableofnpc(.Index,"Rush") ) { case 0: // rush_cas01 ======================================================================== areapercentheal .@Castle$,198,224,207,233,100,100; if( .@Defender == 0 ) areawarp .@Castle$,198,224,207,233,.@Castle$,43,229; else if( $@Rush_id1 == .@Defender ) { areawarp .@Castle$,198,229,207,233,.@Castle$,71,36; areawarp .@Castle$,198,224,207,227,.@Castle$,43,229; } else { areawarp .@Castle$,198,229,207,233,.@Castle$,43,229; areawarp .@Castle$,198,224,207,227,.@Castle$,71,36; } break; case 1: // rush_cas02 ======================================================================== areapercentheal .@Castle$,142,44,151,53,100,100; if( .@Defender == 0 ) areawarp .@Castle$,142,44,151,53,.@Castle$,252,271; else if( $@Rush_id1 == .@Defender ) { areawarp .@Castle$,142,49,151,53,.@Castle$,40,235; areawarp .@Castle$,142,44,151,47,.@Castle$,252,271; } else { areawarp .@Castle$,142,49,151,53,.@Castle$,252,271; areawarp .@Castle$,142,44,151,47,.@Castle$,40,235; } break; case 2: // rush_cas03 ======================================================================== areapercentheal .@Castle$,56,6,69,17,100,100; if( .@Defender == 0 ) areawarp .@Castle$,56,6,69,17,.@Castle$,216,103; else if( $@Rush_id1 == .@Defender ) { areawarp .@Castle$,56,6,61,17,.@Castle$,31,190; areawarp .@Castle$,63,6,69,17,.@Castle$,216,103; } else { areawarp .@Castle$,56,6,61,17,.@Castle$,216,103; areawarp .@Castle$,63,6,69,17,.@Castle$,31,190; } break; case 3: // rush_cas04 ======================================================================== areapercentheal .@Castle$,266,286,275,295,100,100; if( .@Defender == 0 ) areawarp .@Castle$,266,286,275,295,.@Castle$,100,280; else if( $@Rush_id1 == .@Defender ) { areawarp .@Castle$,266,291,275,295,.@Castle$,116,89; areawarp .@Castle$,266,286,275,289,.@Castle$,100,280; } else { areawarp .@Castle$,266,291,275,295,.@Castle$,100,280; areawarp .@Castle$,266,286,275,289,.@Castle$,116,89; } break; } initnpctimer; end; } // Battleground Therapist // ********************************************************************* rush_cas01,198,233,6 script Therapist in battle#rh1 95,{ mes "[Therapist in battle]"; mes "Just close your eyes, and take a deep breathe."; mes "You can be free from pain."; specialeffect2 312; percentheal 100,100; repairall; close2; openstorage; end; } rush_cas01,198,224,6 script Therapist in battle#rh2 95,{ mes "[Therapist in battle]"; mes "Just close your eyes, and take a deep breathe."; mes "You can be free from pain."; specialeffect2 312; percentheal 100,100; repairall; close2; openstorage; end; } rush_cas02,142,53,6 script Therapist in battle#rh3 95,{ mes "[Therapist in battle]"; mes "Just close your eyes, and take a deep breathe."; mes "You can be free from pain."; specialeffect2 312; percentheal 100,100; repairall; close2; openstorage; end; } rush_cas02,142,44,6 script Therapist in battle#rh4 95,{ mes "[Therapist in battle]"; mes "Just close your eyes, and take a deep breathe."; mes "You can be free from pain."; specialeffect2 312; percentheal 100,100; repairall; close2; openstorage; end; } rush_cas03,68,17,4 script Therapist in battle#rh5 95,{ mes "[Therapist in battle]"; mes "Just close your eyes, and take a deep breathe."; mes "You can be free from pain."; specialeffect2 312; percentheal 100,100; repairall; close2; openstorage; end; } rush_cas03,66,17,4 script Therapist in battle#rh6 95,{ mes "[Therapist in battle]"; mes "Just close your eyes, and take a deep breathe."; mes "You can be free from pain."; specialeffect2 312; percentheal 100,100; repairall; close2; openstorage; end; } rush_cas04,266,295,6 script Therapist in battle#rh7 95,{ mes "[Therapist in battle]"; mes "Just close your eyes, and take a deep breathe."; mes "You can be free from pain."; specialeffect2 312; percentheal 100,100; repairall; close2; openstorage; end; } rush_cas04,266,286,6 script Therapist in battle#rh8 95,{ mes "[Therapist in battle]"; mes "Just close your eyes, and take a deep breathe."; mes "You can be free from pain."; specialeffect2 312; percentheal 100,100; repairall; close2; openstorage; end; } // Warp Portals // ********************************************************************* rush_cas01,157,135,0 warp rush106-1 1,1,rush_cas01,184,40 rush_cas01,161,41,0 warp rush102-1 1,1,rush_cas01,57,202 rush_cas01,184,44,0 warp rush106 1,1,rush_cas01,157,140 rush_cas01,203,21,0 warp rush105-1 1,1,rush_cas01,45,25 rush_cas01,210,41,0 warp rush101-1 1,1,rush_cas01,84,215 rush_cas01,35,183,0 warp rush104 1,1,rush_cas01,71,82 rush_cas01,45,21,0 warp rush105 1,1,rush_cas01,203,25 rush_cas01,53,202,0 warp rush102 1,1,rush_cas01,165,41 rush_cas01,64,164,0 warp rush103 1,1,rush_cas01,98,25 rush_cas01,71,86,0 warp rush104-1 1,1,rush_cas01,35,187 rush_cas01,88,215,0 warp rush101 1,1,rush_cas01,206,41 rush_cas01,98,21,0 warp rush103-1 1,1,rush_cas01,64,168 rush_cas02,259,212,0 warp rush201 1,1,rush_cas02,72,240 rush_cas02,75,240,0 warp rush201-1 1,5,rush_cas02,256,212 rush_cas02,232,189,0 warp rush202 1,1,rush_cas02,74,261 rush_cas02,78,261,0 warp rush202-1 1,1,rush_cas02,236,189 rush_cas02,229,208,0 warp rush203 1,1,rush_cas02,70,282 rush_cas02,74,282,0 warp rush203-1 1,1,rush_cas02,225,208 rush_cas02,7,261,0 warp rush204 1,1,rush_cas02,55,30 rush_cas02,59,30,0 warp rush204-1 1,1,rush_cas02,11,261 rush_cas02,28,31,0 warp rush205 1,1,rush_cas02,251,42 rush_cas02,254,45,0 warp rush205-1 1,1,rush_cas02,24,31 rush_cas03,194,71,0 warp rush301 1,1,rush_cas03,129,194 rush_cas03,125,194,0 warp rush301-1 1,1,rush_cas03,199,70 rush_cas03,164,86,0 warp rush302 1,1,rush_cas03,66,189 rush_cas03,70,189,0 warp rush302-1 1,1,rush_cas03,166,81 rush_cas03,150,67,0 warp rush303 1,1,rush_cas03,9,187 rush_cas03,5,187,0 warp rush303-1 1,1,rush_cas03,151,62 rush_cas03,165,232,0 warp rush304 1,1,rush_cas03,193,49 rush_cas03,188,49,0 warp rush304-1 1,1,rush_cas03,165,228 rush_cas03,195,42,0 warp rush305 1,1,rush_cas03,19,227 rush_cas03,15,227,0 warp rush305-1 1,1,rush_cas03,195,46 rush_cas03,13,175,0 warp rush306 1,1,rush_cas03,162,194 rush_cas03,166,194,0 warp rush306-1 1,1,rush_cas03,13,179 rush_cas03,156,231,0 warp rush307 1,1,rush_cas03,18,88 rush_cas03,14,88,0 warp rush307-1 1,1,rush_cas03,156,227 rush_cas04,106,217,0 warp rush407 1,1,rush_cas04,131,15 rush_cas04,115,210,0 warp rush408 1,1,rush_cas04,92,215 rush_cas04,135,15,0 warp rush407-1 1,1,rush_cas04,110,217 rush_cas04,135,92,0 warp rush402-1 1,1,rush_cas04,34,282 rush_cas04,152,92,0 warp rush404-1 1,1,rush_cas04,59,255 rush_cas04,154,16,0 warp rush414 1,1,rush_cas04,252,11 rush_cas04,17,206,0 warp rush406-1 1,1,rush_cas04,29,219 rush_cas04,212,46,0 warp rush415 1,1,rush_cas04,225,158 rush_cas04,225,154,0 warp rush415-1 1,1,rush_cas04,212,42 rush_cas04,237,74,0 warp rush412-1 1,1,rush_cas04,62,213 rush_cas04,256,11,0 warp rush414-1 1,1,rush_cas04,159,16 rush_cas04,266,47,0 warp rush409-1 1,1,rush_cas04,45,175 rush_cas04,27,215,0 warp rush406-2 1,1,rush_cas04,17,202 rush_cas04,34,286,0 warp rush402 1,1,rush_cas04,131,92 rush_cas04,38,243,0 warp rush406 1,1,rush_cas04,29,219 rush_cas04,38,259,0 warp rush403-1 1,1,rush_cas04,43,271 rush_cas04,42,175,0 warp rush409 1,1,rush_cas04,266,43 rush_cas04,43,191,0 warp rush410-1 1,1,rush_cas04,70,185 rush_cas04,47,271,0 warp rush403 1,1,rush_cas04,38,255 rush_cas04,50,248,0 warp rush405 1,1,rush_cas04,54,229 rush_cas04,58,232,0 warp rush405-1 1,1,rush_cas04,62,213 rush_cas04,63,255,0 warp rush404 1,1,rush_cas04,156,92 rush_cas04,65,215,0 warp rush412 1,1,rush_cas04,233,74 rush_cas04,66,223,0 warp rush401 1,1,rush_cas04,96,53 rush_cas04,70,182,0 warp rush410 1,1,rush_cas04,39,191 rush_cas04,79,244,0 warp rush413-1 1,1,rush_cas04,91,250 rush_cas04,88,248,0 warp rush411-1 1,1,rush_cas04,76,242 rush_cas04,90,218,0 warp rush408-1 1,1,rush_cas04,111,210 rush_cas04,92,53,0 warp rush401-1 1,1,rush_cas04,62,223 rush_cas04,93,209,0 warp rush411 1,1,rush_cas04,92,250 rush_cas04,95,251,0 warp rush413 1,1,rush_cas04,91,209 // MapFlags // ********************************************************************* rush_cas01 mapflag battleground 2 rush_cas01 mapflag nomemo rush_cas01 mapflag nosave SavePoint rush_cas01 mapflag noteleport rush_cas01 mapflag nowarp rush_cas01 mapflag nowarpto rush_cas01 mapflag noreturn rush_cas01 mapflag nobranch rush_cas01 mapflag nopenalty rush_cas02 mapflag battleground 2 rush_cas02 mapflag nomemo rush_cas02 mapflag nosave SavePoint rush_cas02 mapflag noteleport rush_cas02 mapflag nowarp rush_cas02 mapflag nowarpto rush_cas02 mapflag noreturn rush_cas02 mapflag nobranch rush_cas02 mapflag nopenalty rush_cas03 mapflag battleground 2 rush_cas03 mapflag nomemo rush_cas03 mapflag nosave SavePoint rush_cas03 mapflag noteleport rush_cas03 mapflag nowarp rush_cas03 mapflag nowarpto rush_cas03 mapflag noreturn rush_cas03 mapflag nobranch rush_cas03 mapflag nopenalty rush_cas04 mapflag battleground 2 rush_cas04 mapflag nomemo rush_cas04 mapflag nosave SavePoint rush_cas04 mapflag noteleport rush_cas04 mapflag nowarp rush_cas04 mapflag nowarpto rush_cas04 mapflag noreturn rush_cas04 mapflag nobranch rush_cas04 mapflag nopenalty