Euphy 163a98cbc4 Major custom folder update!
These scripts have been chosen for being unique and useful, yet structurally simple. In this way, they can serve as usable reference material for future user scripts.

Contents:
* Battleground: bg_emp (Emperium breaker), bg_pvp (PVP match)
* Event: mvp_ladder (kill every MVP to win), devil_square (3-round monster summoning event)
* Utility: card_seller (sells all monster cards), mvp_room (private MVP summoning room), autopot (automatically use potions when hit)
Credits to AnnieRuru for offering up her scripts and modifying them for use.

Other changes:
* Moved previous custom battleground scripts into 'battleground/unofficial/'.
* Moved custom holiday event scripts into 'event/holiday/'.

Signed-off-by: Euphy <euphy.raliel@rathena.org>
2014-02-02 17:35:28 -05:00

429 lines
12 KiB
Plaintext

// ==============================================================================
// BattleGround System - Flavius 2
// ==============================================================================
// Registration NPC's
// *********************************************************************
bat_room,142,227,4 script Registration::Fl2R_Guillaume 418,{
end;
OnInit:
waitingroom "Battle Station 10 Players",10,"Flavius_BG2::OnGuillaumeJoin",1;
end;
OnEnterBG:
set $@FlaviusBG2_id1, waitingroom2bg("bat_b02",390,10,"Flavius_BG2::OnGuillaumeQuit","");
end;
}
bat_room,142,204,0 script Registration::Fl2R_Croix 414,{
end;
OnInit:
waitingroom "Battle Station 10 Players",10,"Flavius_BG2::OnCroixJoin",1;
end;
OnEnterBG:
set $@FlaviusBG2_id2, waitingroom2bg("bat_b02",10,290,"Flavius_BG2::OnCroixQuit","");
end;
}
// Battleground Engine
// *********************************************************************
- script Flavius_BG2 -1,{
end;
OnInit:
disablenpc "Guillaume Vintenar#fl2";
disablenpc "Croix Vintenar#fl2";
disablenpc "Therapist in battle#fl21";
disablenpc "Therapist in battle#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","Battleground -- Flavius [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0x808000;
end;
}
// BG Variables
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;
// Prepare NPC
donpcevent "#gfl2_respawn::OnBGStart";
donpcevent "#cfl2_respawn::OnBGStart";
enablenpc "Therapist in battle#fl21";
enablenpc "Therapist in battle#fl22";
disablenpc "Guillaume Vintenar#fl2";
disablenpc "Croix Vintenar#fl2";
// Build and Warp Teams
donpcevent "Fl2R_Guillaume::OnEnterBG";
donpcevent "Fl2R_Croix::OnEnterBG";
announce "Battleground -- Flavius [80-99] has started!",0,0x808000;
initnpctimer;
// Start Match!!
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;
// Crystal Spawn
set .Guillaume_Crystal, bg_monster($@FlaviusBG2_id1,"bat_b02",328,150,"Crystal Guillaume",1914,"Flavius_BG2::OnGuillaumeBreak");
setcell "bat_b02",327,151,329,149,cell_basilica,1;
setcell "bat_b02",327,151,329,149,cell_walkable,1;
set .Croix_Crystal, bg_monster($@FlaviusBG2_id2,"bat_b02",62,150,"Crystal Croix",1915,"Flavius_BG2::OnCroixBreak");
setcell "bat_b02",62,149,60,151,cell_basilica,1;
setcell "bat_b02",62,149,60,151,cell_walkable,1;
// Guardian Spawns
bg_monster $@FlaviusBG2_id1,"bat_b02",328,160,"Guillaume Guardian",1949,"Flavius_BG2::OnGuiGuardian";
bg_monster $@FlaviusBG2_id1,"bat_b02",328,140,"Guillaume Guardian",1950,"Flavius_BG2::OnGuiGuardian";
set .Guillaume_Guardian, 2;
bg_monster $@FlaviusBG2_id2,"bat_b02",62,160,"Croix Guardian",1949,"Flavius_BG2::OnCroGuardian";
bg_monster $@FlaviusBG2_id2,"bat_b02",61,140,"Croix Guardian",1950,"Flavius_BG2::OnCroGuardian";
set .Croix_Guardian, 2;
// Announces
mapannounce "bat_b02","The Battle of Flavius [ " + .Match + " ] Round has begun!!",1,0x808000;
end;
OnRoundStop:
// Remove Monsters
killmonster "bat_b02","Flavius_BG2::OnGuiGuardian";
killmonster "bat_b02","Flavius_BG2::OnCroGuardian";
setcell "bat_b02",327,151,329,149,cell_walkable,0;
setcell "bat_b02",327,151,329,149,cell_basilica,0;
killmonster "bat_b02","Flavius_BG2::OnGuillaumeBreak";
setcell "bat_b02",62,149,60,151,cell_walkable,0;
setcell "bat_b02",62,149,60,151,cell_basilica,0;
killmonster "bat_b02","Flavius_BG2::OnCroixBreak";
end;
OnGuiGuardian:
if( set(.Guillaume_Guardian, .Guillaume_Guardian - 1) <= 0 )
{
setcell "bat_b02",327,151,329,149,cell_walkable,0;
setcell "bat_b02",327,151,329,149,cell_basilica,0;
mapannounce "bat_b02","The Guillaume Crystal is vulnerable to attack!",1,0x0000FF;
}
end;
OnCroGuardian:
if( set(.Croix_Guardian, .Croix_Guardian - 1) <= 0 )
{
setcell "bat_b02",62,149,60,151,cell_walkable,0;
setcell "bat_b02",62,149,60,151,cell_basilica,0;
mapannounce "bat_b02","The Croix Crystal is vulnerable to attack!",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","The Guillaume Crystal has been destroyed!",1,0x0000FF;
donpcevent "Flavius_BG2::OnRoundStart";
}
else
{
bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
mapannounce "bat_b02","The Croix army has won the Battle of Flavius!",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","The Croix Crystal has been destroyed!",1,0xFF0000;
donpcevent "Flavius_BG2::OnRoundStart";
}
else
{
bg_updatescore "bat_b02",.Guillaume_Score,.Croix_Score;
mapannounce "bat_b02","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
set $@FlaviusBG2_Victory, 1;
donpcevent "Flavius_BG2::OnMatchEnd";
}
end;
OnTimer2400000:
mapannounce "bat_b02","Battle of Flavius will ends in 5 minutes",1,0x808000;
end;
OnTimer2640000:
mapannounce "bat_b02","Battle of Flavius will ends in 1 minute",1,0x808000;
end;
OnTimer2700000:
if( .Croix_Score > .Guillaume_Score )
{
mapannounce "bat_b02","The Croix army has won the Battle of Flavius!",1,0xFF0000;
set $@FlaviusBG2_Victory, 2;
}
else if( .Croix_Score < .Guillaume_Score )
{
mapannounce "bat_b02","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
set $@FlaviusBG2_Victory, 1;
}
else
{
mapannounce "bat_b02","The Battle of Flavius is over. The time is out, this is a Tie",1,0x808000;
set $@FlaviusBG2_Victory, 3;
}
OnMatchEnd:
set $@FlaviusBG2, 2;
stopnpctimer;
donpcevent "#gfl2_respawn::OnBGStop";
donpcevent "#cfl2_respawn::OnBGStop";
disablenpc "Therapist in battle#fl21";
disablenpc "Therapist in battle#fl22";
enablenpc "Guillaume Vintenar#fl2";
enablenpc "Croix Vintenar#fl2";
sleep 2000;
bg_warp $@FlaviusBG2_id1,"bat_b02",390,10;
bg_warp $@FlaviusBG2_id2,"bat_b02",10,290;
sleep 3000;
mapannounce "bat_b02","Battle of Flavius will close in 1 minute!",1,0x808000;
initnpctimer;
end;
OnTimer30000:
if( $@FlaviusBG2 == 2 )
mapannounce "bat_b02","Battle of Flavius will close in 30 seconds!",1,0x808000;
end;
OnTimer50000:
if( $@FlaviusBG2 == 2 )
mapannounce "bat_b02","Battle of Flavius will close in 10 seconds!",1,0x808000;
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's
disablenpc "Guillaume Vintenar#fl2";
disablenpc "Croix Vintenar#fl2";
disablenpc "Therapist in battle#fl21";
disablenpc "Therapist in battle#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;
}
// Battleground rewards
// *********************************************************************
bat_b02,390,13,5 script Guillaume Vintenar#fl2 419,{
if( $@FlaviusBG2_Victory )
{
if( $@FlaviusBG2_Victory == Bat_Team )
{ // Victory
mes "[Swandery]";
mes "Blessed Guillaume!!";
mes "Let's enjoy our glorious victory!";
mes "" + strcharinfo(0) + ", its a sign reflecting victory";
close2;
set .@Reward, 9;
}
else
{ //
mes "[Swandery]";
mes "You lost, but you're dedicated to this battle.";
mes "This is a reward for your great dedication by Guillaume Marollo!";
mes "Just take this defeat a lesson, and later you would definitely learn.";
close2;
set .@Reward, 3;
}
setquest 2070;
getitem 7829, .@Reward;
bg_leave;
warp "bat_room",155,150;
end;
}
end;
}
bat_b02,10,293,5 script Croix Vintenar#fl2 415,{
if( $@FlaviusBG2_Victory )
{
if( $@FlaviusBG2_Victory == Bat_Team )
{ // Victory
mes "[Swandery]";
mes "Blessed Croax!!";
mes "Let's enjoy our glorious victory!";
mes "" + strcharinfo(0) + ", its a sign reflecting victory";
close2;
set .@Reward, 9;
}
else
{ //
mes "[Swandery]";
mes "Oh, " + strcharinfo(0) + ". Don't be sad.";
mes "Even though we didn't win, we did our best.";
mes "This is a Royal gift from Croix, and please don't forget this battle. We can win the next.";
close2;
set .@Reward, 3;
}
setquest 2070;
getitem 7829, .@Reward;
bg_leave;
warp "bat_room",155,150;
end;
}
end;
}
// Battleground Therapist
// *********************************************************************
bat_b02,390,13,5 script Therapist in battle#fl22 95,{
mes "[Therapist in battle]";
mes "Just close your eyes, and take a deep breathe.";
mes "You can be free from pain.";
specialeffect2 312;
close;
}
bat_b02,10,293,5 script Therapist in battle#fl21 95,{
mes "[Therapist in battle]";
mes "Just close your eyes, and take a deep breathe.";
mes "You can be free from pain.";
specialeffect2 312;
close;
}
// Battleground Respawn
// *********************************************************************
bat_b02,390,10,0 script #gfl2_respawn 139,{
end;
OnBGStart:
initnpctimer;
end;
OnBGStop:
stopnpctimer;
end;
OnTimer24000:
misceffect EF_SANCTUARY;
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 EF_SANCTUARY;
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) Guillaume camp#bat32 973
bat_b02,319,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat33 973
bat_b02,304,218,1 duplicate(Guillaume camp#bat) Guillaume camp#bat34 973
bat_b02,319,218,1 duplicate(Guillaume camp#bat) Guillaume camp#bat35 973
bat_b02,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat36 973
bat_b02,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat37 973
bat_b02,335,142,1 duplicate(Guillaume camp#bat) Guillaume camp#bat38 973
bat_b02,335,157,1 duplicate(Guillaume camp#bat) Guillaume camp#bat39 973
bat_b02,390,16,1 duplicate(Guillaume camp#bat) Guillaume camp#bat40 973
bat_b02,292,163,1 duplicate(Guillaume camp#bat) Guillaume camp#bat41 973
bat_b02,292,136,1 duplicate(Guillaume camp#bat) Guillaume camp#bat42 973
bat_b02,241,185,1 duplicate(Guillaume camp#bat) Guillaume camp#bat43 973
bat_b02,247,179,1 duplicate(Guillaume camp#bat) Guillaume camp#bat44 973
bat_b02,96,81,1 duplicate(Croix camp#bat) Croix camp#bat30 974
bat_b02,96,68,1 duplicate(Croix camp#bat) Croix camp#bat31 974
bat_b02,79,81,1 duplicate(Croix camp#bat) Croix camp#bat32 974
bat_b02,79,68,1 duplicate(Croix camp#bat) Croix camp#bat33 974
bat_b02,96,81,1 duplicate(Croix camp#bat) Croix camp#bat34 974
bat_b02,96,81,1 duplicate(Croix camp#bat) Croix camp#bat35 974
bat_b02,59,164,1 duplicate(Croix camp#bat) Croix camp#bat36 974
bat_b02,59,137,1 duplicate(Croix camp#bat) Croix camp#bat37 974
bat_b02,10,296,1 duplicate(Croix camp#bat) Croix camp#bat38 974
bat_b02,110,162,1 duplicate(Croix camp#bat) Croix camp#bat39 974
bat_b02,110,137,1 duplicate(Croix camp#bat) Croix camp#bat40 974
bat_b02,152,120,1 duplicate(Croix camp#bat) Croix camp#bat41 974
bat_b02,158,114,1 duplicate(Croix camp#bat) Croix camp#bat42 974