// TMW2 Scripts.
// Author:
// Jesusalva
// Description
// Cassia and her lieutenants manages Aeros Battlegrounds
001-1,96,37,0 script Cassia NPC_FEMALE,{
mesn;
if (is_gm()) goto L_Control;
if ($@BGMaster1) goto L_Busy;
L_Intro:
mesq l("Hello! I am Cassia, Ambassator. During the Monster War outbreak, Halinarzo was almost entirely destroyed.");
next;
mesq l("To train their soldiers, they frequently face Frostia in duels. Adventurers are welcome to join their drills.");
next;
mesq l("To join a drill, right click on one of the lieutenants and join their Battle Stations. The drill can last up to 10 minutes.");
next;
mesq l("The sides accept only one adventurer. You'll also lose access to General Chat upon joining, and will have to use #world.");
next;
mesq l("Be sure to have a friend before joining, or you may have to logout in order to be able to move again!");
close;
L_Close:
close;
L_Busy:
if ($@BGMaster1 == 2) {
mesq l("The soldiers are resting at the moment.");
} else {
mesq l("People are challenging now.");
}
close;
L_Control:
menu
l("Introduce"), L_Intro,
rif($@BGMaster1 != 1 && is_gm(),l("Enable BG")), L_On,
l("Disable BG"), L_Off,
rif(is_admin(), l("Solo Try")), L_Beta;
L_On:
mes "";
mes l("Determine Team Size +1 (so 1 each side, use 2)");
input $@BG1_SIZE;
if ($@BG1_SIZE < 2) close;
donpcevent "Lt. Randy::OnSet";
donpcevent "Lt. Gerry::OnSet";
kickwaitingroomall("Lt. Randy");
kickwaitingroomall("Lt. Gerry");
if ($@BGMaster1 == 2) $@BGMaster1=0;
enablenpc "Lt. Randy";
enablenpc "Lt. Gerry";
mapannounce "001-1", l("Frostia and Halinarzo are now on a spar!"), bc_map;
mes "Event enabled.";
close;
L_Off:
delwaitingroom("Lt. Randy");
delwaitingroom("Lt. Gerry");
disablenpc "Lt. Randy";
disablenpc "Lt. Gerry";
mes "Event disabled.";
close;
OnPcQuit:
warp "002-4", 0, 0;
bg_leave();
end;
OnPcDeath:
warp "002-4", 0, 0;
bg_leave();
end;
OnTimer60000:
if (getmapusers("001-2") < 2 || .BGC > 10) goto L_Cancel;
mapannounce("001-2", "Reinforcements raise!", bc_map);
//$@FKing_T1 = bg_monster($@FK_Team1, "001-2", 125, 38, "Frostia Guard", 1081, "Cassia::OnSkip");
bg_monster($@FK_Team1, "001-2", rand(105, 108), rand(37, 80), "Frostia Guard", FallenGuard1, "Cassia::OnSkip");
//$@FKing_T2 = bg_monster($@FK_Team2, "001-2",124, 213, "Halinarzo Guard", 1082, "Cassia::OnSkip");
bg_monster($@FK_Team2, "001-2", rand(142, 145), rand(37, 80), "Halinarzo Guard", FallenGuard2, "Cassia::OnSkip");
.BGC+=1;
stopnpctimer();
initnpctimer();
end;
// Arena Cooldown (every 8 hours) (CET time)
OnClock0001:
OnClock0801:
OnClock1601:
if ($@BGMaster1 == 2) $@BGMaster1=0;
end;
OnSkip:
end;
L_Skip:
end;
L_RestartTimer:
stopnpctimer();
initnpctimer();
end;
L_Cancel:
if ($@GM_OVERRIDE)
end;
stopnpctimer();
announce "The Fallen Kings Duel ended in a draw!", bc_all;
killmonsterall "001-2";
mapwarp "001-2", "001-1", 235, 27;
bg_destroy($@FK_Team1);
bg_destroy($@FK_Team2);
$@BGMaster1=2;
end;
OnVictor1:
if (!$@BGMaster1) goto L_Skip;
stopnpctimer();
announce "Team 1 raises victorious at the Fallen Kings Duel!", bc_all; // TODO: Give players a reward
killmonsterall "001-2";
//delcells "Wall_0012_left";
//delcells "Wall_0012_right";
mapwarp "001-2", "001-1", 117, 72;
bg_destroy($@FK_Team1);
bg_destroy($@FK_Team2);
$@BGMaster1=2;
end;
OnVictor2:
if (!$@BGMaster1) goto L_Skip;
stopnpctimer();
announce "Team 2 raises victorious at the Fallen Kings Duel!", bc_all;
killmonsterall "001-2";
//delcells "Wall_0012_left";
//delcells "Wall_0012_right";
mapwarp "001-2", "001-1", 117, 72;
bg_destroy($@FK_Team1);
bg_destroy($@FK_Team2);
$@BGMaster1=2;
end;
OnInit:
.@npcId = getnpcid(.name$);
setunitdata(.@npcId, UDT_HEADTOP, GMRobe); // Dress
setunitdata(.@npcId, UDT_HEADMIDDLE, NPCEyes); // Not needed
setunitdata(.@npcId, UDT_HEADBOTTOM, LousyMoccasins); // Shoes
setunitdata(.@npcId, UDT_WEAPON, 3501);
setunitdata(.@npcId, UDT_HAIRSTYLE, 12);
setunitdata(.@npcId, UDT_HAIRCOLOR, 5);
npcsit;
.sex = G_FEMALE;
.distance = 7;
/*
// This script is TODO
if (!debug) {
disablenpc "Cassia";
}*/
end;
OnDoEvent:
//setcells "001-2", 109, 37, 109, 213, 3, "Wall_0012_left";
//setcells "001-2", 141, 37, 141, 213, 3, "Wall_0012_right";
.BGC=0;
mapannounce("001-2", "May the fight begin!", bc_map);
$@FKing_T1 = bg_monster($@FK_Team1, "001-2", rand(105, 108), rand(37, 80), "Frostia King", FallenKing1, "Cassia::OnVictor2");
$@FKing_T2 = bg_monster($@FK_Team2, "001-2", rand(142, 145), rand(37, 80), "Halinarzo King", FallenKing2, "Cassia::OnVictor1");
bg_monster($@FK_Team1, "001-2", rand(105, 108), rand(37, 80), "Frostia Guard", FallenGuard1, "Cassia::OnSkip");
bg_monster($@FK_Team2, "001-2",rand(142, 145), rand(37, 80), "Halinarzo Guard", FallenGuard2, "Cassia::OnSkip");
initnpctimer();
end;
L_Beta:
$@BGMaster1 = 1;
$@FK_Team1 = bgnew("001-2",rand(105, 108), rand(37, 80),"start#bat_a02::OnSide1Quit","");
$@FK_Team2 = bgnew("001-2",rand(142, 145), rand(37, 80),"start#bat_a02::OnSide2Quit","");
debugmes "FK Team 1 (%d) Team 2 (%d)", $@FK_Team1, $@FK_Team2;
.@i = bgjoin($@FK_Team1, "001-2", rand(105, 108), rand(37, 80), getcharid(3));
debugmes "Result: %d", .@i;
setbgteam $@FK_Team1, 1;
setbgteam $@FK_Team2, 2;
//bg_warp $@FK_Team1,"001-2",rand(105, 108), rand(37, 80);
//bg_warp $@FK_Team2,"001-2",rand(142, 145), rand(37, 80);
donpcevent "Cassia::OnDoEvent";
//initnpctimer;
end;
}
001-1,94,36,0 script Lt. Randy NPC_ELF,{
hello;
end;
OnSet:
waitingroom("Battle Station R", $@BG1_SIZE, "start#bat_a02::OnReadyCheck", $@BG1_SIZE-1);
end;
OnInit:
.@npcId = getnpcid(.name$);
setunitdata(.@npcId, UDT_HEADTOP, LightPlatemail); // Light armor
setunitdata(.@npcId, UDT_HEADMIDDLE, JeansShorts); // Pants
setunitdata(.@npcId, UDT_HEADBOTTOM, LousyMoccasins); // Shoes
setunitdata(.@npcId, UDT_WEAPON, BugSlayer);
setunitdata(.@npcId, UDT_HAIRSTYLE, 13);
setunitdata(.@npcId, UDT_HAIRCOLOR, 7);
//waitingroom("Battle Station", 2, "start#bat_a02::OnReadyCheck", 1);
disablenpc("Lt. Randy");
end;
OnEnterBG:
$@FK_Team1 = waitingroom2bg("001-2",rand(105, 108), rand(37, 80),"start#bat_a02::OnSide1Quit","");
end;
}
001-1,98,36,0 script Lt. Gerry NPC_ELF,{
hello;
end;
OnSet:
waitingroom("Battle Station G", $@BG1_SIZE, "start#bat_a02::OnReadyCheck", $@BG1_SIZE-1);
end;
OnInit:
.@npcId = getnpcid(.name$);
setunitdata(.@npcId, UDT_HEADTOP, TerraniteArmor); // Terranite armor
setunitdata(.@npcId, UDT_HEADMIDDLE, JeansShorts); // Pants
setunitdata(.@npcId, UDT_HEADBOTTOM, LousyMoccasins); // Shoes
setunitdata(.@npcId, UDT_WEAPON, BugSlayer);
setunitdata(.@npcId, UDT_HAIRSTYLE, 13);
setunitdata(.@npcId, UDT_HAIRCOLOR, 7);
//waitingroom("Battle Station", 2, "start#bat_a02::OnReadyCheck", 1);
disablenpc("Lt. Gerry");
end;
OnEnterBG:
$@FK_Team2 = waitingroom2bg("001-2",rand(142, 145), rand(37, 80),"start#bat_a02::OnSide2Quit","");
end;
}
//== Tierra Gorge Battleground Engine ======================
001-2,0,0,3 script start#bat_a02 NPC_HIDDEN,{
OnInit:
//mapwarp "bat_a02","bat_room",154,150;
end;
OnEnable:
end;
OnSide1Quit:
OnSide2Quit:
bg_leave;
end;
OnReadyCheck:
if( $@BGMaster1 )
end;
.@Guillaume = getwaitingroomstate(0,"Lt. Randy");
.@Croix = getwaitingroomstate(0,"Lt. Gerry");
if( !.@Guillaume && !.@Croix ) {
donpcevent "#bat_a02_timer::OnStop";
end;
}
else if( .@Guillaume < 1 || .@Croix < 1 )
end;
$@BGMaster1 = 1;
donpcevent "Lt. Randy::OnEnterBG";
donpcevent "Lt. Gerry::OnEnterBG";
setbgteam $@FK_Team1, 1;
setbgteam $@FK_Team2, 2;
bg_warp $@FK_Team1,"001-2",rand(105, 108), rand(37, 80);
bg_warp $@FK_Team2,"001-2",rand(142, 145), rand(37, 80);
donpcevent "Cassia::OnDoEvent";
//initnpctimer;
end;
}