// This script controls the Keshlam Abandoned Maze
// Part of Doomsday Event : Act 5
// Monster Script Control
-|script|Keshlam Maze|32767
{
close;
OnInit:
goto L_Main;
// They'll respawn at midday.
OnClock1200:
goto L_Main;
L_Main:
// 1 MONSTER PER 30 TILES, TOTAL 4320 MONSTERS
// 1440 monsters of each kind
// 360 monsters per quadrand; Center is the pillar in (201, 201)
// TYPE 1141, SASQUATCH
set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath1")+1;
if ($@KeshlamMc < 360)
areamonster "099-8", 20, 20, 201, 201, "", 1141, 360-$@KeshlamMc, "Keshlam Maze::OnDeath1";
set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath2")+1;
if ($@KeshlamMc < 360)
areamonster "099-8", 201, 20, 402, 201, "", 1141, 360-$@KeshlamMc, "Keshlam Maze::OnDeath2";
set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath3")+1;
if ($@KeshlamMc < 360)
areamonster "099-8", 20, 201, 201, 402, "", 1141, 360-$@KeshlamMc, "Keshlam Maze::OnDeath3";
set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath4")+1;
if ($@KeshlamMc < 360)
areamonster "099-8", 201, 201, 402, 402, "", 1141, 360-$@KeshlamMc, "Keshlam Maze::OnDeath4";
// TYPE 1140, TENGU
set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath5")+1;
if ($@KeshlamMc < 360)
areamonster "099-8", 20, 20, 201, 201, "", 1140, 360-$@KeshlamMc, "Keshlam Maze::OnDeath5";
set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath6")+1;
if ($@KeshlamMc < 360)
areamonster "099-8", 201, 20, 402, 201, "", 1140, 360-$@KeshlamMc, "Keshlam Maze::OnDeath6";
set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath7")+1;
if ($@KeshlamMc < 360)
areamonster "099-8", 20, 201, 201, 402, "", 1140, 360-$@KeshlamMc, "Keshlam Maze::OnDeath7";
set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath8")+1;
if ($@KeshlamMc < 360)
areamonster "099-8", 201, 201, 402, 402, "", 1140, 360-$@KeshlamMc, "Keshlam Maze::OnDeath8";
/*
// TYPE 1141, more SASQUATCH
// Used to be 1143 Mana Slayer
set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath9")+1;
if ($@KeshlamMc < 300)
areamonster "099-8", 20, 20, 201, 201, "", 1141, 300-$@KeshlamMc, "Keshlam Maze::OnDeath9";
set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath10")+1;
if ($@KeshlamMc < 300)
areamonster "099-8", 201, 20, 402, 201, "", 1141, 300-$@KeshlamMc, "Keshlam Maze::OnDeath10";
set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath11")+1;
if ($@KeshlamMc < 300)
areamonster "099-8", 20, 201, 201, 402, "", 1141, 300-$@KeshlamMc, "Keshlam Maze::OnDeath11";
set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath12")+1;
if ($@KeshlamMc < 300)
areamonster "099-8", 201, 201, 402, 402, "", 1141, 300-$@KeshlamMc, "Keshlam Maze::OnDeath12";
*/
// Maintain a minimal MANA SLAYER guarnition
set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath13")+1;
if ($@KeshlamMc < 200)
areamonster "099-8", 20, 20, 402, 402, "", 1143, 200-$@KeshlamMc, "Keshlam Maze::OnDeath13";
// Extra Layer: The bonus layer
// Density: 50 monsters or 0.04% of the maze
set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnBoss")+1;
if ($@KeshlamMc < 40)
areamonster "099-8", 20, 20, 360, 360, "", 1147, 40-$@KeshlamMc, "Keshlam Maze::OnBoss"; // Koyntety
// Done
set $@KeshlamMc, 0;
stopnpctimer;
end;
// Labels
OnDeath1:
end;
OnDeath2:
end;
OnDeath3:
end;
OnDeath4:
end;
OnDeath5:
end;
OnDeath6:
end;
OnDeath7:
end;
OnDeath8:
end;
OnDeath9:
end;
OnDeath10:
end;
OnDeath11:
end;
OnDeath12:
end;
OnDeath13:
end;
OnBoss:
// If a player is attached, give them a reward
getitem "TreasureKey", 1;
getexp 50000, 0;
end;
}
// Oddities
099-8,201,201,0|script|Central Pillar#DD5|400
{
// Default distance is 4 tiles - all we need
callfunc "PCtoNPCRange";
if(@npc_check) end;
mes ".:: KESHLAM MAZE ::.";
mes "WE KEPT POWERFUL EARTH MONSTERS HERE.";
mes "IT WOULD BE TERRIBLE IF THE SASQUATCH ESCAPED.";
mes "";
mes "WHATEVER HAPPENS: DO NOT OPEN THE GATE!";
close;
}
099-8,375,27,0|script|Northeast Pillar#DD5|400
{
// Default distance is 4 tiles - all we need
callfunc "PCtoNPCRange";
if(@npc_check) end;
mes ".:: KESHLAM MAZE ::.";
mes ".:: :: CONTROL PANEL :: ::.";
mes "";
mes "Security Level: ##1CRITICAL - WORLD'S EXISTENCE THREATENED##0";
mes "Defensive Measures Level 1: ##1DEFEATED##0";
mes "Defensive Measures Level 2: ##1DEFEATED##0";
mes "Defensive Measures Level 3: ##2STAND BY##0";
next;
mes "##9The controls seems to have been destroyed!";
mes "##9The panel says the situtation is critical.";
mes "##9Why the final defensive measures didn't engage?";
next;
mes "What's happening?";
close;
}
099-8,87,261,0|script|Southwest Pillar#DD5|400
{
// Default distance is 4 tiles - all we need
callfunc "PCtoNPCRange";
if(@npc_check) end;
mes ".:: KESHLAM MAZE ::.";
mes ".:: :: CONTROL PANEL :: ::.";
mes "";
mes "West gate: ##1OPEN##0";
mes "East gate: ##1OPEN##0";
mes "North gate: ##1OPEN##0";
mes "South gate: ##1OPEN##0";
mes "";
mes "Security Level: ##1CRITICAL - WORLD'S EXISTENCE THREATENED##0";
next;
mes "##9The controls seems to have been destroyed!";
next;
mes "Where are these gates? I don't recall seeing anything like that.";
mes "What's happening, after all?";
close;
}
099-8,285,237,0|script|Southeast Pillar#DD5|400
{
// Default distance is 4 tiles - all we need
callfunc "PCtoNPCRange";
if(@npc_check) end;
mes ".:: KESHLAM MAZE ::.";
mes ".:: :: CONTROL PANEL :: ::.";
mes "";
mes "Laboratory: ##1CONTACT LOST##0";
mes "The Archives: ##1CONTACT LOST##0";
mes "Crystal Room: ##1CONTACT LOST##0";
mes "";
mes "Security Level: ##1CRITICAL - WORLD'S EXISTENCE THREATENED##0";
next;
mes "##9The controls seems to have been destroyed!";
mes "##9I wonder where these three rooms are.";
mes "##9What sort of research was being conducted?";
mes "##9What is a Crystal Room? I don't saw any passage.";
next;
mes "What's happening?";
close;
}
099-8,75,105,0|script|Northwest Pillar#DD5|400
{
// Default distance is 4 tiles - all we need
callfunc "PCtoNPCRange";
if(@npc_check) end;
mes ".:: KESHLAM MAZE ::.";
mes ".:: :: STATUS REPORT PANEL :: ::.";
mes "";
mes "Earth Crystal: ##1NOT FOUND##0";
mes "Security Level: ##1CRITICAL - WORLD'S EXISTENCE THREATENED##0";
next;
mes "##9Earth Crystal? I never heard anything about it.";
next;
mes "What's happening?";
close;
}