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

379 lines
9.4 KiB
Plaintext

// ==============================================================================
// BattleGround System - KvM 1~59
// ==============================================================================
// Registration NPC's
// *********************************************************************
bat_room,197,227,4 script Registration::KvM03R_Guillaume 418,{ // KvM Guillaume
end;
OnInit:
waitingroom "Battle Station 5 Players",5,"KvM03_BG::OnGuillaumeJoin",1;
end;
OnEnterBG:
set $@KvM03BG_id1, waitingroom2bg("bat_c03",53,128,"KvM03_BG::OnGuillaumeQuit","KvM03_BG::OnGuillaumeDie");
end;
}
bat_room,197,204,0 script Registration::KvM03R_Croix 414,{ // KvM Croix
end;
OnInit:
waitingroom "Battle Station 5 Players",5,"KvM03_BG::OnCroixJoin",1;
end;
OnEnterBG:
set $@KvM03BG_id2, waitingroom2bg("bat_c03",146,55,"KvM03_BG::OnCroixQuit","KvM03_BG::OnCroixDie");
end;
}
// Light Effects
// *********************************************************************
bat_c03,54,123,0 script #bat_c03a 111,{
end;
OnKvM03LightA: specialeffect EF_BEGINSPELL2; end;
OnKvM03LightB: specialeffect EF_BEGINSPELL3; end;
OnKvM03LightC: specialeffect EF_BEGINSPELL4; end;
}
bat_c03,56,125,0 duplicate(#bat_c03a) #bat_c03b 111
bat_c03,58,127,0 duplicate(#bat_c03a) #bat_c03c 111
bat_c03,141,56,0 duplicate(#bat_c03a) #bat_c03d 111
bat_c03,143,58,0 duplicate(#bat_c03a) #bat_c03e 111
bat_c03,145,60,0 duplicate(#bat_c03a) #bat_c03f 111
// Battleground Engine
// *********************************************************************
- script KvM03_BG -1,{
end;
OnInit:
setwall "bat_c03",54,122,6,7,0,"batc03wall_a";
setwall "bat_c03",55,122,5,7,0,"batc03wall_b";
setwall "bat_c03",140,56,6,7,0,"batc03wall_c";
setwall "bat_c03",140,57,5,7,0,"batc03wall_d";
disablenpc "TherapistKvM03a";
disablenpc "TherapistKvM03b";
disablenpc "VintenarKvM03a";
disablenpc "VintenarKvM03b";
end;
OnGuillaumeJoin:
OnCroixJoin:
donpcevent "KvM03_BG::OnReadyCheck";
end;
OnGuillaumeQuit:
set BG_Delay_Tick, gettimetick(2) + 1200;
OnGuillaumeDie:
if( $@KvM03BG == 2 )
{
set .Guillaume_Count, .Guillaume_Count - 1;
set .Croix_Score, .Croix_Score + 1;
bg_updatescore "bat_c03",.Guillaume_Score,.Croix_Score;
if( .Guillaume_Count < 1 ) donpcevent "KvM03_BG::OnCroixWin";
}
end;
OnCroixQuit:
set BG_Delay_Tick, gettimetick(2) + 1200;
OnCroixDie:
if( $@KvM03BG == 2 )
{
set .Croix_Count, .Croix_Count - 1;
set .Guillaume_Score, .Guillaume_Score + 1;
bg_updatescore "bat_c03",.Guillaume_Score,.Croix_Score;
if( .Croix_Count < 1 ) donpcevent "KvM03_BG::OnGuillaumeWin";
}
end;
OnReadyCheck:
if( $@KvM03BG )
end;
set .@Guillaume, getwaitingroomstate(0,"KvM03R_Guillaume");
set .@Croix, getwaitingroomstate(0,"KvM03R_Croix");
if( .@Guillaume < 5 || .@Croix < 5 )
{
if( .@Guillaume > 3 && .@Croix > 3 && !agitcheck() && !agitcheck2() && $@KvM_Flood < gettimetick(2) )
{
announce "Battleground -- Kreiger Von Midgard [1-59] G: " + .@Guillaume + "/5, C: " + .@Croix + "/5",0,0xC0C0C0;
set $@KvM_Flood, gettimetick(2) + 15;
}
else
mapannounce "bat_room","Battleground -- Kreiger Von Midgard [1-59] G: " + .@Guillaume + "/5, C: " + .@Croix + "/5",1,0xC0C0C0;
end;
}
set $@KvM03BG, 1; // Starting
donpcevent "KvM03R_Croix::OnEnterBG";
donpcevent "KvM03R_Guillaume::OnEnterBG";
donpcevent "KvM03_BG::OnStart";
end;
OnStart:
announce "Battleground -- Kreiger Von Midgard [1-59] has started!",0,0xC0C0C0;
enablenpc "TherapistKvM03a";
enablenpc "TherapistKvM03b";
disablenpc "VintenarKvM03a";
disablenpc "VintenarKvM03b";
set $@KvM03BG_Victory, 0;
sleep 2000;
// Warp Teams
bg_warp $@KvM03BG_id1,"bat_c03",53,128;
bg_warp $@KvM03BG_id2,"bat_c03",146,55;
// ScoreBoard
set .Guillaume_Score, 0;
set .Croix_Score, 0;
initnpctimer;
end;
OnTimer5000:
areapercentheal "bat_c03",50,123,58,131,100,100;
areapercentheal "bat_c03",141,52,149,60,100,100;
mapannounce "bat_c03","The Battle will start in 25 seconds!!",1,0xC0C0C0;
end;
OnTimer26000:
mapannounce "bat_c03","The Battle will start in 4 seconds!!",1,0xC0C0C0;
end;
OnTimer27000:
donpcevent "::OnKvM03LightA";
end;
OnTimer28000:
donpcevent "::OnKvM03LightB";
end;
OnTimer29000:
donpcevent "::OnKvM03LightC";
end;
OnTimer30000:
// Team Members
set .Guillaume_Count, bg_get_data($@KvM03BG_id1, 0);
set .Croix_Count, bg_get_data($@KvM03BG_id2, 0);
if( .Guillaume_Count < 5 || .Croix_Count < 5 )
{
set $@KvM03BG_Victory, 3;
set $@KvM03BG, 3;
mapannounce "bat_c03","There are not enough players to start the battle",1,0xC0C0C0;
stopnpctimer;
sleep 2000;
donpcevent "KvM03_BG::OnStop";
end;
}
set $@KvM03BG, 2; // Playing
areapercentheal "bat_c03",50,123,58,131,100,100;
bg_warp $@KvM03BG_id1,"bat_c03",62,119;
areapercentheal "bat_c03",141,52,149,60,100,100;
bg_warp $@KvM03BG_id2,"bat_c03",137,64;
end;
OnTimer32000:
mapannounce "bat_c03","The Battle of Kreiger Von Midgard has begun!!",1,0xC0C0C0;
end;
OnTimer300000:
mapannounce "bat_c03","The Battle will ends in 30 seconds!!",1,0xC0C0C0;
end;
OnTimer330000:
if( .Croix_Count > .Guillaume_Count )
donpcevent "KvM03_BG::OnCroixWin";
else if( .Croix_Count < .Guillaume_Count )
donpcevent "KvM03_BG::OnGuillaumeWin";
else
{ // Draw Game
set $@KvM03BG, 3;
set $@KvM03BG_Victory, 3;
stopnpctimer;
sleep 2000;
mapannounce "bat_c03","The time is out! This is a Tie...",1,0xC0C0C0;
donpcevent "KvM03_BG::OnStop";
}
end;
OnGuillaumeWin:
set $@KvM03BG, 3;
set $@KvM03BG_Victory, 1;
stopnpctimer;
sleep 2000;
mapannounce "bat_c03","The Guillaume Army has won the Battle of Kreiger Von Midgard",1,0x0000FF;
donpcevent "KvM03_BG::OnStop";
end;
OnCroixWin:
set $@KvM03BG, 3;
set $@KvM03BG_Victory, 2;
stopnpctimer;
sleep 2000;
mapannounce "bat_c03","The Croix Army has won the Battle of Kreiger Von Midgard",1,0xFF0000;
donpcevent "KvM03_BG::OnStop";
end;
OnStop:
disablenpc "TherapistKvM03a";
disablenpc "TherapistKvM03b";
enablenpc "VintenarKvM03a";
enablenpc "VintenarKvM03b";
// Warp Teams
bg_warp $@KvM03BG_id1,"bat_c03",53,128;
bg_warp $@KvM03BG_id2,"bat_c03",146,55;
donpcevent "KvM03_BG_Out::OnBegin";
end;
OnReset:
stopnpctimer;
stopnpctimer "KvM03_BG_Out";
set .Croix_Count, 0;
set .Guillaume_Count, 0;
set .Croix_Score, 0;
set .Guillaume_Score, 0;
set $@KvM03BG_Victory, 0;
if( $@KvM03BG_id1 ) { bg_destroy $@KvM03BG_id1; set $@KvM03BG_id1, 0; }
if( $@KvM03BG_id2 ) { bg_destroy $@KvM03BG_id2; set $@KvM03BG_id2, 0; }
disablenpc "TherapistKvM03a";
disablenpc "TherapistKvM03b";
disablenpc "VintenarKvM03a";
disablenpc "VintenarKvM03b";
sleep 1000;
mapwarp "bat_c03","bat_room",155,150;
sleep 2000;
maprespawnguildid "bat_c03",0,3; // Just in case someone else
bg_updatescore "bat_c03",0,0;
sleep 2000;
set $@KvM03BG, 0;
donpcevent "KvM03_BG::OnReadyCheck"; // Maybe a game is ready to start
end;
}
- script KvM03_BG_Out -1,{
end;
OnBegin:
initnpctimer;
end;
OnTimer3000:
mapannounce "bat_c03","Battle of Kreiger Von Midgard will close in 1 minute!",1,0xC0C0C0;
end;
OnTimer30000:
mapannounce "bat_c03","Battle of Kreiger Von Midgard will close in 30 seconds!",1,0xC0C0C0;
end;
OnTimer50000:
mapannounce "bat_c03","Battle of Kreiger Von Midgard will close in 10 seconds!",1,0xC0C0C0;
end;
OnTimer60000:
donpcevent "KvM03_BG::OnReset";
end;
}
// Battleground Therapist
// *********************************************************************
bat_c03,51,130,5 script Therapist in battle::TherapistKvM03a 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_c03,148,53,1 script Therapist in battle::TherapistKvM03b 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 rewards
// *********************************************************************
bat_c03,51,130,5 script Guillaume Vintenar::VintenarKvM03a 419,{
if( $@KvM03BG_Victory )
{
if( $@KvM03BG_Victory == 3 )
{
setquest 6025;
bg_leave;
warp "bat_room",155,150;
end;
}
else if( $@KvM03BG_Victory == Bat_Team )
{ // Victory
set .@Reward, 1;
mes "[Swandery]";
mes "Blessed Guillaume!!";
mes "Let's enjoy our glorious victory!";
mes "" + strcharinfo(0) + ", its a sign reflecting victory";
close2;
}
else
{ //
set .@Reward, 0;
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;
}
setquest 6025;
getitem 7773, .@Reward;
bg_leave;
warp "bat_room",155,150;
end;
}
end;
}
bat_c03,148,53,1 script Croix Vintenar::VintenarKvM03b 415,{
if( $@KvM03BG_Victory )
{
if( $@KvM03BG_Victory == 3 )
{
setquest 6025;
bg_leave;
warp "bat_room",155,150;
end;
}
else if( $@KvM03BG_Victory == Bat_Team )
{ // Victory
set .@Reward, 1;
mes "[Swandery]";
mes "Blessed Croax!!";
mes "Let's enjoy our glorious victory!";
mes "" + strcharinfo(0) + ", its a sign reflecting victory";
close2;
}
else
{ //
set .@Reward, 0;
mes "[Swandery]";
mes "Oh, " + strcharinfo(0) + ". Don't be sad.";
mes "Even though we didn't win, we did our best.";
mes "Please don't forget this battle. We can win the next.";
close2;
}
setquest 6025;
getitem 7773, .@Reward;
bg_leave;
warp "bat_room",155,150;
end;
}
end;
}