429 lines
12 KiB
Plaintext
429 lines
12 KiB
Plaintext
// ==============================================================================
|
|
// BattleGround System - Flavius 1
|
|
// ==============================================================================
|
|
|
|
// Registration NPC's
|
|
// *********************************************************************
|
|
|
|
bat_room,86,227,4 script Registration::Fl1R_Guillaume 418,{
|
|
end;
|
|
OnInit:
|
|
waitingroom "Battle Station 10 Players",10,"Flavius_BG1::OnGuillaumeJoin",1;
|
|
end;
|
|
OnEnterBG:
|
|
set $@FlaviusBG1_id1, waitingroom2bg("bat_b01",390,10,"Flavius_BG1::OnGuillaumeQuit","");
|
|
end;
|
|
}
|
|
|
|
bat_room,85,204,0 script Registration::Fl1R_Croix 414,{
|
|
end;
|
|
OnInit:
|
|
waitingroom "Battle Station 10 Players",10,"Flavius_BG1::OnCroixJoin",1;
|
|
end;
|
|
OnEnterBG:
|
|
set $@FlaviusBG1_id2, waitingroom2bg("bat_b01",10,290,"Flavius_BG1::OnCroixQuit","");
|
|
end;
|
|
}
|
|
|
|
// Battleground Engine
|
|
// *********************************************************************
|
|
|
|
- script Flavius_BG1 -1,{
|
|
end;
|
|
|
|
OnInit:
|
|
disablenpc "Guillaume Vintenar#fl1";
|
|
disablenpc "Croix Vintenar#fl1";
|
|
disablenpc "Therapist in battle#fl11";
|
|
disablenpc "Therapist in battle#fl12";
|
|
end;
|
|
|
|
OnGuillaumeQuit:
|
|
OnCroixQuit:
|
|
set BG_Delay_Tick, gettimetick(2) + 1200;
|
|
end;
|
|
|
|
OnGuillaumeJoin:
|
|
OnCroixJoin:
|
|
if( $@FlaviusBG1 == 0 )
|
|
donpcevent "Flavius_BG1::OnReadyCheck";
|
|
end;
|
|
|
|
OnReadyCheck:
|
|
if( $@FlaviusBG1 )
|
|
end;
|
|
set .@Guillaume, getwaitingroomstate(0,"Fl1R_Guillaume");
|
|
set .@Croix, getwaitingroomstate(0,"Fl1R_Croix");
|
|
|
|
if( .@Guillaume < 10 || .@Croix < 10 )
|
|
{
|
|
mapannounce "bat_room","Battleground -- Flavius [80-99] G: " + .@Guillaume + "/10, C: " + .@Croix + "/10",1,0x006400;
|
|
end;
|
|
}
|
|
|
|
// BG Variables
|
|
set $@FlaviusBG1, 1;
|
|
set $@FlaviusBG1_Victory, 0;
|
|
set .Guillaume_Score, 0;
|
|
set .Guillaume_Loss, 0;
|
|
set .Croix_Score, 0;
|
|
set .Croix_Loss, 0;
|
|
set .Match, 0;
|
|
// Prepare NPC
|
|
donpcevent "#gfl1_respawn::OnBGStart";
|
|
donpcevent "#cfl1_respawn::OnBGStart";
|
|
enablenpc "Therapist in battle#fl11";
|
|
enablenpc "Therapist in battle#fl12";
|
|
disablenpc "Guillaume Vintenar#fl1";
|
|
disablenpc "Croix Vintenar#fl1";
|
|
// Build and Warp Teams
|
|
donpcevent "Fl1R_Guillaume::OnEnterBG";
|
|
donpcevent "Fl1R_Croix::OnEnterBG";
|
|
announce "Battleground -- Flavius [80-99] has started!",0,0x006400;
|
|
initnpctimer;
|
|
// Start Match!!
|
|
|
|
OnRoundStart:
|
|
sleep 2000;
|
|
if( $@FlaviusBG1 != 1 ) end;
|
|
|
|
areapercentheal "bat_b01",382,2,397,17,100,100;
|
|
areapercentheal "bat_b01",2,282,17,297,100,100;
|
|
bg_warp $@FlaviusBG1_id1,"bat_b01",311,224;
|
|
bg_warp $@FlaviusBG1_id2,"bat_b01",87,75;
|
|
|
|
sleep 2000;
|
|
if( $@FlaviusBG1 != 1 ) end;
|
|
|
|
set .Match, .Match + 1;
|
|
// Crystal Spawn
|
|
set .Guillaume_Crystal, bg_monster($@FlaviusBG1_id1,"bat_b01",328,150,"Crystal Guillaume",1914,"Flavius_BG1::OnGuillaumeBreak");
|
|
setcell "bat_b01",327,151,329,149,cell_basilica,1;
|
|
setcell "bat_b01",327,151,329,149,cell_walkable,1;
|
|
|
|
set .Croix_Crystal, bg_monster($@FlaviusBG1_id2,"bat_b01",62,150,"Crystal Croix",1915,"Flavius_BG1::OnCroixBreak");
|
|
setcell "bat_b01",62,149,60,151,cell_basilica,1;
|
|
setcell "bat_b01",62,149,60,151,cell_walkable,1;
|
|
|
|
// Guardian Spawns
|
|
bg_monster $@FlaviusBG1_id1,"bat_b01",328,160,"Guillaume Guardian",1949,"Flavius_BG1::OnGuiGuardian";
|
|
bg_monster $@FlaviusBG1_id1,"bat_b01",328,140,"Guillaume Guardian",1950,"Flavius_BG1::OnGuiGuardian";
|
|
set .Guillaume_Guardian, 2;
|
|
bg_monster $@FlaviusBG1_id2,"bat_b01",62,160,"Croix Guardian",1949,"Flavius_BG1::OnCroGuardian";
|
|
bg_monster $@FlaviusBG1_id2,"bat_b01",61,140,"Croix Guardian",1950,"Flavius_BG1::OnCroGuardian";
|
|
set .Croix_Guardian, 2;
|
|
// Announces
|
|
mapannounce "bat_b01","The Battle of Flavius [ " + .Match + " ] Round has begun!!",1,0x006400;
|
|
end;
|
|
|
|
OnRoundStop:
|
|
// Remove Monsters
|
|
killmonster "bat_b01","Flavius_BG1::OnGuiGuardian";
|
|
killmonster "bat_b01","Flavius_BG1::OnCroGuardian";
|
|
setcell "bat_b01",327,151,329,149,cell_walkable,0;
|
|
setcell "bat_b01",327,151,329,149,cell_basilica,0;
|
|
killmonster "bat_b01","Flavius_BG1::OnGuillaumeBreak";
|
|
setcell "bat_b01",62,149,60,151,cell_walkable,0;
|
|
setcell "bat_b01",62,149,60,151,cell_basilica,0;
|
|
killmonster "bat_b01","Flavius_BG1::OnCroixBreak";
|
|
end;
|
|
|
|
OnGuiGuardian:
|
|
if( set(.Guillaume_Guardian, .Guillaume_Guardian - 1) <= 0 )
|
|
{
|
|
setcell "bat_b01",327,151,329,149,cell_walkable,0;
|
|
setcell "bat_b01",327,151,329,149,cell_basilica,0;
|
|
mapannounce "bat_b01","The Guillaume Crystal is vulnerable to attack!",1,0x0000FF;
|
|
}
|
|
end;
|
|
|
|
OnCroGuardian:
|
|
if( set(.Croix_Guardian, .Croix_Guardian - 1) <= 0 )
|
|
{
|
|
setcell "bat_b01",62,149,60,151,cell_walkable,0;
|
|
setcell "bat_b01",62,149,60,151,cell_basilica,0;
|
|
mapannounce "bat_b01","The Croix Crystal is vulnerable to attack!",1,0xFF0000;
|
|
}
|
|
end;
|
|
|
|
OnGuillaumeBreak:
|
|
donpcevent "Flavius_BG1::OnRoundStop";
|
|
set .Guillaume_Loss, .Guillaume_Loss + 1;
|
|
if( set(.Croix_Score, .Croix_Score + 1) < 2 )
|
|
{
|
|
bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score;
|
|
mapannounce "bat_b01","The Guillaume Crystal has been destroyed!",1,0x0000FF;
|
|
donpcevent "Flavius_BG1::OnRoundStart";
|
|
}
|
|
else
|
|
{
|
|
bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score;
|
|
mapannounce "bat_b01","The Croix army has won the Battle of Flavius!",1,0xFF0000;
|
|
set $@FlaviusBG1_Victory, 2;
|
|
donpcevent "Flavius_BG1::OnMatchEnd";
|
|
}
|
|
end;
|
|
|
|
OnCroixBreak:
|
|
donpcevent "Flavius_BG1::OnRoundStop";
|
|
set .Croix_Loss, .Croix_Loss + 1;
|
|
if( set(.Guillaume_Score, .Guillaume_Score + 1) < 2 )
|
|
{
|
|
bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score;
|
|
mapannounce "bat_b01","The Croix Crystal has been destroyed!",1,0xFF0000;
|
|
donpcevent "Flavius_BG1::OnRoundStart";
|
|
}
|
|
else
|
|
{
|
|
bg_updatescore "bat_b01",.Guillaume_Score,.Croix_Score;
|
|
mapannounce "bat_b01","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
|
|
set $@FlaviusBG1_Victory, 1;
|
|
donpcevent "Flavius_BG1::OnMatchEnd";
|
|
}
|
|
end;
|
|
|
|
OnTimer2400000:
|
|
mapannounce "bat_b01","Battle of Flavius will ends in 5 minutes",1,0x006400;
|
|
end;
|
|
OnTimer2640000:
|
|
mapannounce "bat_b01","Battle of Flavius will ends in 1 minute",1,0x006400;
|
|
end;
|
|
|
|
OnTimer2700000:
|
|
if( .Croix_Score > .Guillaume_Score )
|
|
{
|
|
mapannounce "bat_b01","The Croix army has won the Battle of Flavius!",1,0xFF0000;
|
|
set $@FlaviusBG1_Victory, 2;
|
|
}
|
|
else if( .Croix_Score < .Guillaume_Score )
|
|
{
|
|
mapannounce "bat_b01","The Guillaume army has won the Battle of Flavius!",1,0x0000FF;
|
|
set $@FlaviusBG1_Victory, 1;
|
|
}
|
|
else
|
|
{
|
|
mapannounce "bat_b01","The Battle of Flavius is over. The time is out, this is a Tie",1,0x006400;
|
|
set $@FlaviusBG1_Victory, 3;
|
|
}
|
|
|
|
OnMatchEnd:
|
|
set $@FlaviusBG1, 2;
|
|
stopnpctimer;
|
|
donpcevent "#gfl1_respawn::OnBGStop";
|
|
donpcevent "#cfl1_respawn::OnBGStop";
|
|
disablenpc "Therapist in battle#fl11";
|
|
disablenpc "Therapist in battle#fl12";
|
|
enablenpc "Guillaume Vintenar#fl1";
|
|
enablenpc "Croix Vintenar#fl1";
|
|
sleep 2000;
|
|
bg_warp $@FlaviusBG1_id1,"bat_b01",390,10;
|
|
bg_warp $@FlaviusBG1_id2,"bat_b01",10,290;
|
|
sleep 3000;
|
|
mapannounce "bat_b01","Battle of Flavius will close in 1 minute!",1,0x006400;
|
|
initnpctimer;
|
|
end;
|
|
|
|
OnTimer30000:
|
|
if( $@FlaviusBG1 == 2 )
|
|
mapannounce "bat_b01","Battle of Flavius will close in 30 seconds!",1,0x006400;
|
|
end;
|
|
OnTimer50000:
|
|
if( $@FlaviusBG1 == 2 )
|
|
mapannounce "bat_b01","Battle of Flavius will close in 10 seconds!",1,0x006400;
|
|
end;
|
|
|
|
OnTimer60000:
|
|
if( $@FlaviusBG1 != 2 )
|
|
end;
|
|
OnReset:
|
|
stopnpctimer;
|
|
donpcevent "Flavius_BG1::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 $@FlaviusBG1_Victory, 0;
|
|
// NPC's
|
|
disablenpc "Guillaume Vintenar#fl1";
|
|
disablenpc "Croix Vintenar#fl1";
|
|
disablenpc "Therapist in battle#fl11";
|
|
disablenpc "Therapist in battle#fl12";
|
|
|
|
if( $@FlaviusBG1_id1 ) { bg_destroy $@FlaviusBG1_id1; set $@FlaviusBG1_id1, 0; }
|
|
if( $@FlaviusBG1_id2 ) { bg_destroy $@FlaviusBG1_id2; set $@FlaviusBG1_id2, 0; }
|
|
sleep 1000;
|
|
mapwarp "bat_b01","bat_room",155,150;
|
|
sleep 2000;
|
|
maprespawnguildid "bat_b01",0,3; // Just in case someone else
|
|
sleep 2000;
|
|
bg_updatescore "bat_b01",0,0;
|
|
set $@FlaviusBG1, 0;
|
|
donpcevent "Flavius_BG1::OnReadyCheck";
|
|
end;
|
|
}
|
|
|
|
// Battleground rewards
|
|
// *********************************************************************
|
|
|
|
bat_b01,390,13,5 script Guillaume Vintenar#fl1 419,{
|
|
if( $@FlaviusBG1_Victory )
|
|
{
|
|
if( $@FlaviusBG1_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_b01,10,293,5 script Croix Vintenar#fl1 415,{
|
|
if( $@FlaviusBG1_Victory )
|
|
{
|
|
if( $@FlaviusBG1_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_b01,390,13,5 script Therapist in battle#fl12 95,{
|
|
mes "[Therapist in battle]";
|
|
mes "Just close your eyes, and take a deep breathe.";
|
|
mes "You can be free from pain.";
|
|
specialeffect2 EF_HEAL;
|
|
close;
|
|
}
|
|
|
|
bat_b01,10,293,5 script Therapist in battle#fl11 95,{
|
|
mes "[Therapist in battle]";
|
|
mes "Just close your eyes, and take a deep breathe.";
|
|
mes "You can be free from pain.";
|
|
specialeffect2 EF_HEAL;
|
|
close;
|
|
}
|
|
|
|
// Battleground Respawn
|
|
// *********************************************************************
|
|
|
|
bat_b01,390,10,0 script #gfl1_respawn 139,{
|
|
end;
|
|
|
|
OnBGStart:
|
|
initnpctimer;
|
|
end;
|
|
|
|
OnBGStop:
|
|
stopnpctimer;
|
|
end;
|
|
|
|
OnTimer24000:
|
|
misceffect EF_SANCTUARY;
|
|
end;
|
|
|
|
OnTimer25000:
|
|
areapercentheal "bat_b01",382,2,397,17,100,100;
|
|
areawarp "bat_b01",382,2,397,17,"bat_b01",311,224;
|
|
initnpctimer;
|
|
end;
|
|
}
|
|
|
|
bat_b01,10,290,0 script #cfl1_respawn 139,{
|
|
end;
|
|
|
|
OnBGStart:
|
|
initnpctimer;
|
|
end;
|
|
|
|
OnBGStop:
|
|
stopnpctimer;
|
|
end;
|
|
|
|
OnTimer24000:
|
|
misceffect EF_SANCTUARY;
|
|
end;
|
|
|
|
OnTimer25000:
|
|
areapercentheal "bat_b01",2,282,17,297,100,100;
|
|
areawarp "bat_b01",2,282,17,297,"bat_b01",87,75;
|
|
initnpctimer;
|
|
end;
|
|
}
|
|
|
|
// Flags
|
|
// *********************************************************************
|
|
|
|
bat_b01,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat1 973
|
|
bat_b01,319,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat2 973
|
|
bat_b01,304,218,1 duplicate(Guillaume camp#bat) Guillaume camp#bat3 973
|
|
bat_b01,319,218,1 duplicate(Guillaume camp#bat) Guillaume camp#bat4 973
|
|
bat_b01,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat5 973
|
|
bat_b01,304,231,1 duplicate(Guillaume camp#bat) Guillaume camp#bat6 973
|
|
bat_b01,335,142,1 duplicate(Guillaume camp#bat) Guillaume camp#bat7 973
|
|
bat_b01,335,157,1 duplicate(Guillaume camp#bat) Guillaume camp#bat8 973
|
|
bat_b01,390,16,1 duplicate(Guillaume camp#bat) Guillaume camp#bat9 973
|
|
bat_b01,292,163,1 duplicate(Guillaume camp#bat) Guillaume camp#bat19 973
|
|
bat_b01,292,136,1 duplicate(Guillaume camp#bat) Guillaume camp#bat20 973
|
|
bat_b01,241,185,1 duplicate(Guillaume camp#bat) Guillaume camp#bat21 973
|
|
bat_b01,247,179,1 duplicate(Guillaume camp#bat) Guillaume camp#bat22 973
|
|
|
|
bat_b01,96,81,1 duplicate(Croix camp#bat) Croix camp#bat1 974
|
|
bat_b01,96,68,1 duplicate(Croix camp#bat) Croix camp#bat2 974
|
|
bat_b01,79,81,1 duplicate(Croix camp#bat) Croix camp#bat3 974
|
|
bat_b01,79,68,1 duplicate(Croix camp#bat) Croix camp#bat4 974
|
|
bat_b01,96,81,1 duplicate(Croix camp#bat) Croix camp#bat5 974
|
|
bat_b01,96,81,1 duplicate(Croix camp#bat) Croix camp#bat6 974
|
|
bat_b01,59,164,1 duplicate(Croix camp#bat) Croix camp#bat7 974
|
|
bat_b01,59,137,1 duplicate(Croix camp#bat) Croix camp#bat8 974
|
|
bat_b01,10,296,1 duplicate(Croix camp#bat) Croix camp#bat9 974
|
|
bat_b01,110,162,1 duplicate(Croix camp#bat) Croix camp#bat18 974
|
|
bat_b01,110,137,1 duplicate(Croix camp#bat) Croix camp#bat19 974
|
|
bat_b01,152,120,1 duplicate(Croix camp#bat) Croix camp#bat20 974
|
|
bat_b01,158,114,1 duplicate(Croix camp#bat) Croix camp#bat21 974
|