Here is example of quest in Anguish, maybe memory leak for not enough undef? Every one of the 17 Bosses have a similar script:
For Overlord_Mata_Muram:
Code:
#####################################################################
### NPC ID : 2700489
### NPC NAME: Overlord_Mata_Muram
### Anguish Boss: Level 17
#####################################################################
sub EVENT_SPAWN
{
$BaseNumber = 3; ### Minimin number of times to pop NPCs waves
$Additional = 0; ### and additional number for max pop NPCs waves
$wavenum = int (rand($Additional)) + $BaseNumber + 1; ###(3 to 3)
$gap = 100;
$gap /= int $wavenum; ### percentage of gap between spawns
$gap = int $gap; ### Remove Decimal Point
$percent = int (rand($gap)); ### Random number in that percentage
$nextwave = ($gap * $wavenum) - $percent; ### percentage - (random percentage)
quest::setnexthpevent("$nextwave"); ### set next wave
} # end EVENT_SPAWN
sub EVENT_HP
{
if($hpevent == "$nextwave") { ### when the current HP == setnexthpevent
if($wavenum > 0) { ### If waves left > 0
$wavenum -= 1; ### deincrement number (-1) of waves
$percent = int (rand($gap)); ### Random number in that percentage
$nextwave = ($gap * $wavenum) - $percent; ### percentage - (random percentage)
quest::say("Help!");
my $a = 2700505; ### ID of Add to spawn 2 (an_ikaav_Mastermind) 2.0 Trash
my $x = $npc->GetX(); ### Get Trash mob X
my $y = $npc->GetY(); ### Get Trash mob Y
my $z = $npc->GetZ(); ### Get Trash mob Z
my $h = $npc->GetHeading(); ### Get Trash mob H
quest::spawn2($a,0,0,$x,$y,$z,$h); ### Spawn Add
quest::spawn2($a,0,0,$x,$y,$z,$h); ### Spawn Add
quest::spawn2($a,0,0,$x,$y,$z,$h); ### Spawn Add
quest::spawn2($a,0,0,$x,$y,$z,$h); ### Spawn Add
$npc->WipeHateList();
if($nextwave >= 0) {
quest::setnexthpevent("$nextwave");
} # end $nextwave >= 0
else { ### Last wave will have a negative number
quest::setnexthpevent(0);
} # end else
} # end $wavenum > 0
} # end $hpevent == $nextwave
} # end EVENT_HP
sub EVENT_ATTACK
{
my $anguish_boss_one = $entity_list->GetMobByNpcTypeID(2700469); # 1
my $anguish_boss_two = $entity_list->GetMobByNpcTypeID(2700471); # 2
my $anguish_boss_three = $entity_list->GetMobByNpcTypeID(2700468); # 3
my $anguish_boss_four = $entity_list->GetMobByNpcTypeID(2700467); # 4
my $anguish_boss_five = $entity_list->GetMobByNpcTypeID(2700464); # 5
my $anguish_boss_six = $entity_list->GetMobByNpcTypeID(2700474); # 6
my $anguish_boss_seven = $entity_list->GetMobByNpcTypeID(2700472); # 7
my $anguish_boss_eight = $entity_list->GetMobByNpcTypeID(2700473); # 8
my $anguish_boss_nine = $entity_list->GetMobByNpcTypeID(2700470); # 9
my $anguish_boss_ten = $entity_list->GetMobByNpcTypeID(2700463); # 10
my $anguish_boss_eleven = $entity_list->GetMobByNpcTypeID(2700466); # 11
my $anguish_boss_twelve = $entity_list->GetMobByNpcTypeID(2700465); # 12
my $anguish_boss_thirteen = $entity_list->GetMobByNpcTypeID(2700462); # 13
my $anguish_boss_fourteen = $entity_list->GetMobByNpcTypeID(2700461); # 14
my $anguish_boss_fifteen = $entity_list->GetMobByNpcTypeID(2700460); # 15
my $anguish_boss_sixteen = $entity_list->GetMobByNpcTypeID(2700488); # 16
if ($anguish_boss_one) { # 1
my $hate_anguish_boss_one = $anguish_boss_one->CastToNPC();
$hate_anguish_boss_one->AddToHateList($client, 1); }
if ($anguish_boss_two) { # 2
my $hate_anguish_boss_two = $anguish_boss_two->CastToNPC();
$hate_anguish_boss_two->AddToHateList($client, 1); }
if ($anguish_boss_three) { # 3
my $hate_anguish_boss_three = $anguish_boss_three->CastToNPC();
$hate_anguish_boss_three->AddToHateList($client, 1); }
if ($anguish_boss_four) { # 4
my $hate_anguish_boss_four = $anguish_boss_four->CastToNPC();
$hate_anguish_boss_four->AddToHateList($client, 1); }
if ($anguish_boss_five) { # 5
my $hate_anguish_boss_five = $anguish_boss_five->CastToNPC();
$hate_anguish_boss_five->AddToHateList($client, 1); }
if ($anguish_boss_six) { # 6
my $hate_anguish_boss_six = $anguish_boss_six->CastToNPC();
$hate_anguish_boss_six->AddToHateList($client, 1); }
if ($anguish_boss_seven) { # 7
my $hate_anguish_boss_seven = $anguish_boss_seven->CastToNPC();
$hate_anguish_boss_seven->AddToHateList($client, 1); }
if ($anguish_boss_eight) { # 8
my $hate_anguish_boss_eight = $anguish_boss_eight->CastToNPC();
$hate_anguish_boss_eight->AddToHateList($client, 1); }
if ($anguish_boss_nine) { # 9
my $hate_anguish_boss_nine = $anguish_boss_nine->CastToNPC();
$hate_anguish_boss_nine->AddToHateList($client, 1); }
if ($anguish_boss_ten) { # 10
my $hate_anguish_boss_ten = $anguish_boss_ten->CastToNPC();
$hate_anguish_boss_ten->AddToHateList($client, 1); }
if ($anguish_boss_eleven) { # 11
my $hate_anguish_boss_eleven = $anguish_boss_eleven->CastToNPC();
$hate_anguish_boss_eleven->AddToHateList($client, 1); }
if ($anguish_boss_twelve) { # 12
my $hate_anguish_boss_twelve = $anguish_boss_twelve->CastToNPC();
$hate_anguish_boss_twelve->AddToHateList($client, 1); }
if ($anguish_boss_thirteen) { # 13
my $hate_anguish_boss_thirteen = $anguish_boss_thirteen->CastToNPC();
$hate_anguish_boss_thirteen->AddToHateList($client, 1); }
if ($anguish_boss_fourteen) { # 14
my $hate_anguish_boss_fourteen = $anguish_boss_fourteen->CastToNPC();
$hate_anguish_boss_fourteen->AddToHateList($client, 1); }
if ($anguish_boss_fifteen) { # 15
my $hate_anguish_boss_fifteen = $anguish_boss_fifteen->CastToNPC();
$hate_anguish_boss_fifteen->AddToHateList($client, 1); }
if ($anguish_boss_sixteen) { # 16
my $hate_anguish_boss_sixteen = $anguish_boss_sixteen->CastToNPC();
$hate_anguish_boss_sixteen->AddToHateList($client, 1); }
} # End EVENT_ATTACK
sub EVENT_DEATH {
quest::spawn2(2700493,0,0,504,4921,296,0); ### Spawn Chest
quest::spawn2(2700520,0,0,512,5012,297,0); ### Spawn Chest
quest::spawn2(2700521,0,0,543,4967,298,0); ### Spawn Chest
quest::spawn2(2700522,0,0,468,4971,299,0); ### Spawn Chest
quest::spawn2(2700523,0,0,505,4972,300,0); ### Spawn Chest
my $npc_name = $npc->GetCleanName();
$datetime = localtime();
quest::write("Anguish_Boss_Kills.txt","$datetime -- $name killed Level 17 $npc_name.");
quest::setglobal("killed_overlord_mata_muram","$datetime","7","F");
$datetime=undef;
$killed_overlord_mata_muram=undef;
} # End EVENT_DEATH
And here is one from a Trash Mob:
Code:
#####################################################################
### NPC ID :
### NPC NAME:
### Anguish Trash 1.0
#####################################################################
sub EVENT_SPAWN {
}
sub EVENT_AGGRO {
my $Phrase1 = "For Mata Muram! Now you die!";
my $Phrase2 = "I shall rid Anguish of another infamous villain.";
my $Phrase3 = "Your foul deeds have earned my contempt.";
my $Phrase4 = "${class}s like you are better left dead than alive.";
my $Phrase5 = "It's ${races}s like you who have ruined your own lands, You'll not Anguish!";
my $Phrase6 = "Heathen! Unbeliever! Anguish must be cleansed!";
my $Phrase7 = "Your beliefs are an insult to us all!";
my $Phrase8 = "Your actions force me to kill you.";
my $Phrase9 = "Your intolerable reputation insults all in Anguish.";
my $Phrase10 = "It's time for you to take your blasphemy into the next realm.";
my $Phrase11 = "${race}s like you are better left dead than alive.";
my $Phrase12 = "No loots for you! Go away!";
my $Phrase = quest::ChooseRandom($Phrase1,$Phrase2,$Phrase3,$Phrase4,$Phrase5,$Phrase6,$Phrase7,$Phrase8,$Phrase9,$Phrase10,$Phrase11,$Phrase12);
quest::say("$Phrase");
}
sub EVENT_ATTACK {
}
sub EVENT_HP {
}
sub EVENT_DEATH {
$random_one = int (rand(100)); ### random_one 100 for a 3% chance
if($random_one > 96) { ### 3% chance spawn on death
my $x = $npc->GetX();
my $y = $npc->GetY();
my $z = $npc->GetZ();
$random_two = int (rand(100)); ### random_two 100 for 1%, 33%, and 66% chances
if($random_two > 33) { ### 66% chance spawn Chest 2700496
quest::spawn2(2700496,0,0,$x,$y,$z,0); ### Spawn Chest 2700496
quest::say("Don't touch my treasures!");
} # end if random_two
elsif ($random_two < 1) { ### 1% chance spawn Rare Chest 2700491
quest::spawn2(2700491,0,0,$x,$y,$z,0); ### Spawn Rare Chest 2700491
quest::say("You found my rare loot! Don't steal it!");
} # end elsif random_two
else { ### else 33% chance spawn Named
my $namednpc = quest::ChooseRandom(2700507, # Shalvo
2700508, # Ofanso
2700509, # Novara
2700510, # Jansio
2700511, # Arisisi
2700512, # Laveng
2700513, # Vonaasha
2700514, # Yhinra
2700515); # Uchti
quest::spawn2($namednpc,0,0,$x,$y,$z+5,0); ### Spawn named npc (5 higher Z)
quest::say("My friend will avenge my death!");
} # end else random_two
} # end if random_one
} # End EVENT_DEATH
Let me know if you see anything wrong. Thanks.
|