// TMW2 scripts.
// Authors:
// Jesusalva
// Description:
// Protect Halinarzo
009-1,71,24,0 script Lieutenant Jacob NPC_PLAYER,{
// The Monster King guild have a special menu
if (strcharinfo(2) == "Monster King") goto L_MKControl;
mesn;
mesq l("Sorry! The monsters are gone, but this gate stays closed.");
next;
mesn;
mesq l("Past this way is the Great River and the Eternal Swamps. But the river flooded.");
next;
mesn;
mesq l("Various people already went missing. We are not allowing anyone to pass, not even GMs!");
if (GHQUEST)
GHQ_Assign(Snake, "Halinarzo", "250.000 GP");
end;
L_MKControl:
mesn;
mes l("Oh noes! You've found the Halinarzo control panel!");
menu
l("Initiate small siege (lv. 20)"), L_MKSmall,
l("Initiate medium siege (lv. 30)"), L_MKMedium,
l("Initiate huge siege (lv. 40)"), L_MKHuge,
l("Abort"), -;
close;
L_MKSmall:
addmapmask "009-1", MASK_MATTACK;
changemusic "009-1", "mythica.ogg";
disablenpc("Mana Stone");
$@SIEGE_HALI=0; // factor zero
pvpon("009-1");
pvpon("010-2");
announce(l("##1WARNING! WARNING! Siege starting at Halinarzo!!"), bc_all);
areamonster("010-2", 0, 0, 79, 81, l("Black Scorpion"), 1074, 15, "Lieutenant Jacob::OnBlackScorpionDeath");
initnpctimer;
close;
L_MKMedium:
addmapmask "009-1", MASK_MATTACK;
changemusic "009-1", "eric matyas - ghoulish fun.ogg";
disablenpc("Mana Stone");
$@SIEGE_HALI=1; // factor one
pvpon("009-1");
pvpon("010-2");
announce(l("##1WARNING! WARNING! Siege starting at Halinarzo!!"), bc_all);
areamonster("010-2", 0, 0, 79, 81, l("Black Scorpion"), 1074, 25, "Lieutenant Jacob::OnBlackScorpionDeath");
initnpctimer;
close;
L_MKHuge:
addmapmask "009-1", MASK_MATTACK;
changemusic "009-1", "misuse.ogg";
disablenpc("Mana Stone");
$@SIEGE_HALI=5; // factor five
pvpon("009-1");
pvpon("010-2");
announce(l("##1WARNING! WARNING! Siege starting at Halinarzo!!"), bc_all);
areamonster("010-2", 0, 0, 79, 81, l("Black Scorpion"), 1074, 40, "Lieutenant Jacob::OnBlackScorpionDeath");
initnpctimer;
close;
OnBlackScorpionDeath:
areamonster("010-2", 0, 0, 79, 81, l("Black Scorpion"), 1074, 1, "Lieutenant Jacob::OnBlackScorpionDeath");
if (rand(10000) <= 90+($@SIEGE_HALI*10))
getitem StrangeCoin, 1;
end;
OnBlackScorpion2Death:
areamonster("009-1", 0, 0, 120, 155, l("Black Scorpion"), 1074, 1, "Lieutenant Jacob::OnBlackScorpion2Death");
if (rand(10000) <= 850+($@SIEGE_HALI*100))
getitem StrangeCoin, 1;
end;
OnGreenSlimeDeath:
areamonster("009-1", 0, 0, 120, 155, l("Green Slime"), 1085, 1, "Lieutenant Jacob::OnGreenSlimeDeath");
if (rand(10000) <= 200+($@SIEGE_HALI*100))
getitem StrangeCoin, 1;
end;
OnCandiedSlimeDeath:
areamonster("009-1", 0, 0, 120, 155, l("Candied Slime"), 1089, 1, "Lieutenant Jacob::OnCandiedSlimeDeath");
if (rand(10000) <= 150+($@SIEGE_HALI*100))
getitem StrangeCoin, 1;
end;
OnManaGhostDeath:
areamonster("009-1", 0, 0, 120, 155, l("Mana Ghost"), 1068, 1, "Lieutenant Jacob::OnManaGhostDeath");
if (rand(10000) <= 900+($@SIEGE_HALI*100))
getitem StrangeCoin, 1;
end;
OnLieutenantDeath:
getitem StrangeCoin, 1;
Karma=Karma+1;
mapannounce("009-1", l("##2The Monster Lieutenant was defeated by @@!", strcharinfo(0)), bc_map);
end;
OnColonelDeath:
getitem StrangeCoin, 1;
Karma=Karma+1;
$MOST_HEROIC$=strcharinfo(0);
mapannounce("009-1", l("##2The Monster Colonel was defeated by @@!", strcharinfo(0)), bc_map);
end;
OnTimer5000:
areamonster("010-2", 0, 0, 79, 81, "Black Scorpion", 1074, 5+$@SIEGE_HALI, "Lieutenant Jacob::OnBlackScorpionDeath");
areamonster("009-1", 0, 0, 120, 155, "Black Scorpion", 1074, 5+$@SIEGE_HALI, "Lieutenant Jacob::OnBlackScorpion2Death");
mapannounce("009-1", "##2Message to all Halinarzo NPCs: Take shelter!", bc_map);
disablenpc "Lynn The Traveler";
end;
OnTimer15000:
areamonster("010-2", 0, 0, 79, 81, ("Black Scorpion"), 1074, 5, "Lieutenant Jacob::OnBlackScorpionDeath");
areamonster("009-1", 0, 0, 120, 155, ("Black Scorpion"), 1074, 10, "Lieutenant Jacob::OnBlackScorpion2Death");
end;
OnTimer60000:
if ($@SIEGE_HALI == 1) {
mapannounce("009-1", "##1The Monster Lieutenant arrived!", bc_map);
areamonster("009-1", 0, 0, 120, 155, ("Monster Lieutenant"), 1077, 1, "Lieutenant Jacob::OnLieutenantDeath");
}
areamonster("009-1", 0, 0, 120, 155, ("Black Scorpion"), 1074, 3, "Lieutenant Jacob::OnBlackScorpion2Death");
areamonster("009-1", 0, 0, 120, 155, ("Green Slime"), 1085, 10+$@SIEGE_HALI, "Lieutenant Jacob::OnGreenSlimeDeath");
areamonster("009-1", 0, 0, 120, 155, ("Candied Slime"), 1089, 1+$@SIEGE_HALI, "Lieutenant Jacob::OnCandiedSlimeDeath");
end;
OnTimer120000:
if ($@SIEGE_HALI == 5) {
mapannounce("009-1", "##1The Monster Colonel arrived!", bc_map);
areamonster("009-1", 0, 0, 120, 155, ("Monster Colonel"), 1036, 1, "Lieutenant Jacob::OnColonelDeath");
}
areamonster("009-1", 0, 0, 120, 155, ("Slime Blast"), 1090, 15);
areamonster("009-1", 0, 0, 120, 155, ("Black Scorpion"), 1074, 1, "Lieutenant Jacob::OnBlackScorpion2Death");
areamonster("009-1", 0, 0, 120, 155, ("Green Slime"), 1085, 10, "Lieutenant Jacob::OnGreenSlimeDeath");
areamonster("009-1", 0, 0, 120, 155, ("Mana Ghost"), 1068, 2, "Lieutenant Jacob::OnManaGhostDeath");
end;
OnTimer180000:
areamonster("009-1", 0, 0, 120, 155, ("Slime Blast"), 1090, 25);
areamonster("009-1", 0, 0, 120, 155, ("Black Scorpion"), 1074, 1, "Lieutenant Jacob::OnBlackScorpion2Death");
areamonster("009-1", 0, 0, 120, 155, ("Candied Slime"), 1089, 10, "Lieutenant Jacob::OnCandiedSlimeDeath");
areamonster("009-1", 0, 0, 120, 155, ("Mana Ghost"), 1068, 2, "Lieutenant Jacob::OnManaGhostDeath");
end;
OnTimer240000:
areamonster("009-1", 0, 0, 120, 155, ("Slime Blast"), 1090, 25);
areamonster("009-1", 0, 0, 120, 155, ("Black Scorpion"), 1074, 1, "Lieutenant Jacob::OnBlackScorpion2Death");
areamonster("009-1", 0, 0, 120, 155, ("Mana Ghost"), 1068, 2, "Lieutenant Jacob::OnManaGhostDeath");
end;
OnTimer300000:
areamonster("009-1", 0, 0, 120, 155, ("Slime Blast"), 1090, 5);
areamonster("009-1", 0, 0, 120, 155, ("Candied Slime"), 1089, 1, "Lieutenant Jacob::OnCandiedSlimeDeath");
areamonster("009-1", 0, 0, 120, 155, ("Mana Ghost"), 1068, 1, "Lieutenant Jacob::OnManaGhostDeath");
end;
OnTimer360000:
OnTimer420000:
OnTimer480000:
areamonster("009-1", 0, 0, 120, 155, ("Slime Blast"), 1090, 5+$@SIEGE_HALI);
areamonster("009-1", 0, 0, 120, 155, ("Red Slime"), 1092, 1+$@SIEGE_HALI);
end;
OnTimer540000:
mapannounce("009-1", "##1The Monster Army is getting tired of resistance!", bc_map);
areamonster("009-1", 0, 0, 120, 155, ("Slime Blast"), 1090, 5+$@SIEGE_HALI);
areamonster("009-1", 0, 0, 120, 155, ("Mana Ghost"), 1068, 1, "Lieutenant Jacob::OnManaGhostDeath");
end;
OnTimer600000:
mapannounce("009-1", "##1The Monster King army is preparing to withdraw!", bc_map);
end;
OnTimer630000:
removemapmask "009-1", MASK_MATTACK;
changemusic "009-1", "dragon_and_toast.ogg"; // Restore to default
enablenpc("Mana Stone");
$@SIEGE_HALI$=0;
killmonsterall("009-1", 0);
killmonsterall("010-2", 0);
pvpoff("009-1");
announce(("Halinarzo siege is over!"), bc_all);
enablenpc "Lynn The Traveler";
stopnpctimer;
end;
OnInit:
.sex = G_MALE;
.distance = 4;
// Check items.xml for info about this.
// NOTE: Why Dausen item list is on Philip...?
.@npcId = getnpcid(0, "Lieutenant Jacob");
setunitdata(.@npcId, UDT_HEADTOP, Bull);
setunitdata(.@npcId, UDT_HEADMIDDLE, LegionTrainingShirt);
setunitdata(.@npcId, UDT_HEADBOTTOM, RaidTrousers);
setunitdata(.@npcId, UDT_SHIELD, LousyMoccasins); // TODO FIXME: Display Boots
setunitdata(.@npcId, UDT_WEAPON, ArtisBacksword);
setunitdata(.@npcId, UDT_HAIRSTYLE, 12);
setunitdata(.@npcId, UDT_HAIRCOLOR, 15);
end;
}
// Handle Guard's logic
function script HaliGuardHandler {
legiontalk;
return;
}
009-1,100,30,0 script Guard Corina NPC_GUARD2,{
HaliGuardHandler();
end;
OnInit:
.sex = G_OTHER;
.distance = 5;
end;
}
009-1,111,48,0 script Guard Jhon NPC_GUARD1,{
HaliGuardHandler();
end;
OnInit:
.sex = G_OTHER;
.distance = 5;
end;
}
009-1,41,56,0 script Guard Laurie NPC_GUARD2,{
HaliGuardHandler();
end;
OnInit:
.sex = G_OTHER;
.distance = 5;
end;
}
009-1,62,74,0 script Guard Amy NPC_GUARD2,{
HaliGuardHandler();
end;
OnInit:
.sex = G_OTHER;
.distance = 5;
end;
}