Go Back   EQEmulator Home > EQEmulator Forums > Quests > Quests::Custom

Quests::Custom Custom Quests here

Reply
 
Thread Tools Display Modes
  #1  
Old 01-06-2009, 01:46 PM
Joetuul
Sarnak
 
Join Date: Oct 2008
Location: AZ
Posts: 58
Default Morphing Mob randomly chosen with adds.

This is how it works. Give the furious sentry an item. This spawns Yar`lir's first form and sets the qglobal.

at 85% health the this will depop the first form and choose another 1 of 4 forms of the same mob randomly, then 5% health lower (80% health) adds will spawn based off of which form was previously chosen.

This will repeat at 70/65%, then at 55/50%, then 40/35%, then 25/20% and finally at 10/9%. upon death adds will despawn and a chest will appear with loot inside.

Also if all the players are killed, which would take the main mob out of combat, all adds will despawn.

I tested this script 3 times all with different amounts of HP of the main mobs, just to make sure it worked.

I have trevius to thank for help on completing the script. Thanks alot!!


Hand in mob code.
Code:
#Furious Sentry
sub EVENT_SAY
{
  if($text =~/Hail/i)
  {
  quest::say ("?"); #can make this say what ever you want.
  }
}

sub EVENT_ITEM
{
  if  (plugin::check_handin(\%itemcount, 57206 => 1))
    {
    quest::say("Yar = 1");
    quest::delglobal("yar");
    quest::setglobal("yar", 1, 3, "F");
    quest::spawn2(999483, 0, 0, -3491, 3142, 302, 58);
    }
}

Main mob (Morphing) code
Code:
#Yar`lir encounter


sub EVENT_SPAWN
{

	if(defined($qglobals{yar})){    #spawn at lower % of health

                if ($qglobals{yar} == 1)
                        {
                        quest::shout ("RAWR 1");
                        }

                elsif ($qglobals{yar} == 2)
                        {
                        my $max_hps = $npc->GetMaxHP();
			my $set_hps = ($max_hps * 0.85);
			$npc->SetHP($set_hps);
                        }

                elsif ($qglobals{yar} == 3)
                        {
                        my $max_hps = $npc->GetMaxHP();
			my $set_hps = ($max_hps * 0.70);
			$npc->SetHP($set_hps);                        }

                elsif ($qglobals{yar} == 4)
                        {
                        my $max_hps = $npc->GetMaxHP();
			my $set_hps = ($max_hps * 0.55);
			$npc->SetHP($set_hps);                        }

                elsif ($qglobals{yar} == 5)
                        {
                        my $max_hps = $npc->GetMaxHP();
			my $set_hps = ($max_hps * 0.40);
			$npc->SetHP($set_hps);                        }

                elsif ($qglobals{yar} == 6)
                        {
                        my $max_hps = $npc->GetMaxHP();
			my $set_hps = ($max_hps * 0.25);
			$npc->SetHP($set_hps);                        }

                elsif ($qglobals{yar} == 7)
                        {
                        my $max_hps = $npc->GetMaxHP();
			my $set_hps = ($max_hps * 0.10);
			$npc->SetHP($set_hps);
                        }
               }
}

sub EVENT_COMBAT
{

if($combat_state == 1)
 {
        if(defined($qglobals{yar})){

                if ($qglobals{yar} == 1)
                        {
                        quest::setnexthpevent(85);
			}
                elsif ($qglobals{yar} == 2)
                        {
                        quest::setnexthpevent(80);
                        }
                elsif ($qglobals{yar} == 3)
                        {
                        quest::setnexthpevent(65);
                        }
                elsif ($qglobals{yar} == 4)
                        {
                        quest::setnexthpevent(50);
                        }
                elsif ($qglobals{yar} == 5)
                        {
                        quest::setnexthpevent(35);
                        }
                elsif ($qglobals{yar} == 6)
                        {
                        quest::setnexthpevent(20);
                        }
                elsif ($qglobals{yar} == 7)
                        {
                        quest::setnexthpevent(9);
                        }
               }
 }

if($combat_state == 0)       #depop adds if all players die
 {
quest::signalwith(999488, 2, 0);
quest::signalwith(999489, 2, 0);
quest::signalwith(999021, 2, 0);
 }

}


sub EVENT_HP
{
if($hpevent == 85)     # change form randomly
    {

    my $x;
    my $y;
    my $z;
    my $h;
    my $a = int(rand(4)+1);
    if ($a == 1) {        #matriarch
    quest::spawn2(1242,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 1, 3, "F");
    }

    elsif ($a == 2) {       #winds
    quest::spawn2(1244,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 2, 3, "F");
    }

    elsif ($a == 3) {        #hurricane
    quest::spawn2(1245,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 3, 3, "F");
    }

    elsif ($a == 4) {      #storm   NO ADDS
    quest::spawn2(999483,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 4, 3, "F");
    }
    quest::delglobal("yar");
    quest::setglobal("yar", 2, 3, "F");
    quest::depop();
    }

elsif($hpevent == 80)   #spawn adds
    {
    quest::setnexthpevent(70);
        if(defined($qglobals{yaradds})){

                if ($qglobals{yaradds} == 1)     # Drake Adds
                        {
                        quest::spawn2(999021,0,0,-3467,3197,302,77);
                        quest::spawn2(999021,0,0,-3500,3198,302,116);
                        quest::spawn2(999021,0,0,-3537,3158,302,74);
                        quest::spawn2(999021,0,0,-3539,3128,302,56);
                        quest::spawn2(999021,0,0,-3502,3091,302,10);
                        quest::spawn2(999021,0,0,-3470,3090,302,50);
			}
                elsif ($qglobals{yaradds} == 2)  # Wind Dervish Adds
                        {
                        quest::spawn2(999488,0,0,-3484,3089,302,0);
                        quest::spawn2(999488,0,0,-3484,3198,302,129);
                        }
                elsif ($qglobals{yaradds} == 3)  # Water Dervish Adds
                        {
                        quest::spawn2(999489,0,0,-3484,3089,302,0);
                        quest::spawn2(999489,0,0,-3484,3198,302,129);
                        quest::spawn2(999489,0,0,-3541,3145,302,65);
                        quest::spawn2(999489,0,0,-3427,3144,302,192);
                        }
                }
    }

elsif($hpevent == 70)    #change form randomly
     {

    my $x;
    my $y;
    my $z;
    my $h;
    my $a = int(rand(4)+1);
    if ($a == 1) {        #matriarch
    quest::spawn2(1242,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 1, 3, "F");
    }

    elsif ($a == 2) {       #winds
    quest::spawn2(1244,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 2, 3, "F");
    }

    elsif ($a == 3) {        #hurricane
    quest::spawn2(1245,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 3, 3, "F");
    }

    elsif ($a == 4) {      #storm   NO ADDS
    quest::spawn2(999483,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 4, 3, "F");
    }
    quest::delglobal("yar");
    quest::setglobal("yar", 3, 3, "F");
    quest::depop();
    }

elsif($hpevent == 65)           #spawn adds
    {
    quest::setnexthpevent(55);
        if(defined($qglobals{yaradds})){

                if ($qglobals{yaradds} == 1)     # Drake Adds
                        {
                        quest::spawn2(999021,0,0,-3467,3197,302,77);
                        quest::spawn2(999021,0,0,-3500,3198,302,116);
                        quest::spawn2(999021,0,0,-3537,3158,302,74);
                        quest::spawn2(999021,0,0,-3539,3128,302,56);
                        quest::spawn2(999021,0,0,-3502,3091,302,10);
                        quest::spawn2(999021,0,0,-3470,3090,302,50);
			}
                elsif ($qglobals{yaradds} == 2)  # Wind Dervish Adds
                        {
                        quest::spawn2(999488,0,0,-3484,3089,302,0);
                        quest::spawn2(999488,0,0,-3484,3198,302,129);
                        }
                elsif ($qglobals{yaradds} == 3)  # Water Dervish Adds
                        {
                        quest::spawn2(999489,0,0,-3484,3089,302,0);
                        quest::spawn2(999489,0,0,-3484,3198,302,129);
                        quest::spawn2(999489,0,0,-3541,3145,302,65);
                        quest::spawn2(999489,0,0,-3427,3144,302,192);
                        }
                }
    }

elsif($hpevent == 55)   #change form randomly
    {

    my $x;
    my $y;
    my $z;
    my $h;
    my $a = int(rand(4)+1);
    if ($a == 1) {        #matriarch
    quest::spawn2(1242,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 1, 3, "F");
    }

    elsif ($a == 2) {       #winds
    quest::spawn2(1244,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 2, 3, "F");
    }

    elsif ($a == 3) {        #hurricane
    quest::spawn2(1245,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 3, 3, "F");
    }

    elsif ($a == 4) {      #storm   NO ADDS
    quest::spawn2(999483,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 4, 3, "F");
    }
    quest::delglobal("yar");
    quest::setglobal("yar", 4, 3, "F");
    quest::depop();
    }

elsif($hpevent == 50)     #spawn adds
    {
    quest::setnexthpevent(40);
        if(defined($qglobals{yaradds})){

                if ($qglobals{yaradds} == 1)     # Drake Adds
                        {
                        quest::spawn2(999021,0,0,-3467,3197,302,77);
                        quest::spawn2(999021,0,0,-3500,3198,302,116);
                        quest::spawn2(999021,0,0,-3537,3158,302,74);
                        quest::spawn2(999021,0,0,-3539,3128,302,56);
                        quest::spawn2(999021,0,0,-3502,3091,302,10);
                        quest::spawn2(999021,0,0,-3470,3090,302,50);
			}
                elsif ($qglobals{yaradds} == 2)  # Wind Dervish Adds
                        {
                        quest::spawn2(999488,0,0,-3484,3089,302,0);
                        quest::spawn2(999488,0,0,-3484,3198,302,129);
                        }
                elsif ($qglobals{yaradds} == 3)  # Water Dervish Adds
                        {
                        quest::spawn2(999489,0,0,-3484,3089,302,0);
                        quest::spawn2(999489,0,0,-3484,3198,302,129);
                        quest::spawn2(999489,0,0,-3541,3145,302,65);
                        quest::spawn2(999489,0,0,-3427,3144,302,192);
                        }
                }
    }

elsif($hpevent == 40)      #change form randomly
    {

    my $x;
    my $y;
    my $z;
    my $h;
    my $a = int(rand(4)+1);
    if ($a == 1) {        #matriarch
    quest::spawn2(1242,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 1, 3, "F");
    }

    elsif ($a == 2) {       #winds
    quest::spawn2(1244,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 2, 3, "F");
    }

    elsif ($a == 3) {        #hurricane
    quest::spawn2(1245,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 3, 3, "F");
    }

    elsif ($a == 4) {      #storm   NO ADDS
    quest::spawn2(999483,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 4, 3, "F");
    }
    quest::delglobal("yar");
    quest::setglobal("yar", 5, 3, "F");
    quest::depop();
    }

elsif($hpevent == 35)        #spawn adds
    {
    quest::setnexthpevent(25);
        if(defined($qglobals{yaradds})){

                if ($qglobals{yaradds} == 1)     # Drake Adds
                        {
                        quest::spawn2(999021,0,0,-3467,3197,302,77);
                        quest::spawn2(999021,0,0,-3500,3198,302,116);
                        quest::spawn2(999021,0,0,-3537,3158,302,74);
                        quest::spawn2(999021,0,0,-3539,3128,302,56);
                        quest::spawn2(999021,0,0,-3502,3091,302,10);
                        quest::spawn2(999021,0,0,-3470,3090,302,50);
			}
                elsif ($qglobals{yaradds} == 2)  # Wind Dervish Adds
                        {
                        quest::spawn2(999488,0,0,-3484,3089,302,0);
                        quest::spawn2(999488,0,0,-3484,3198,302,129);
                        }
                elsif ($qglobals{yaradds} == 3)  # Water Dervish Adds
                        {
                        quest::spawn2(999489,0,0,-3484,3089,302,0);
                        quest::spawn2(999489,0,0,-3484,3198,302,129);
                        quest::spawn2(999489,0,0,-3541,3145,302,65);
                        quest::spawn2(999489,0,0,-3427,3144,302,192);
                        }
                }
    }

elsif($hpevent == 25)       #change form randomly
    {

    my $x;
    my $y;
    my $z;
    my $h;
    my $a = int(rand(4)+1);
    if ($a == 1) {        #matriarch
    quest::spawn2(1242,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 1, 3, "F");
    }

    elsif ($a == 2) {       #winds
    quest::spawn2(1244,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 2, 3, "F");
    }

    elsif ($a == 3) {        #hurricane
    quest::spawn2(1245,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 3, 3, "F");
    }

    elsif ($a == 4) {      #storm   NO ADDS
    quest::spawn2(999483,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 4, 3, "F");
    }
    quest::delglobal("yar");
    quest::setglobal("yar", 6, 3, "F");
    quest::depop();
    }

elsif($hpevent == 20)  #spawn adds
    {
    quest::setnexthpevent(10);
        if(defined($qglobals{yaradds})){

                if ($qglobals{yaradds} == 1)     # Drake Adds
                        {
                        quest::spawn2(999021,0,0,-3467,3197,302,77);
                        quest::spawn2(999021,0,0,-3500,3198,302,116);
                        quest::spawn2(999021,0,0,-3537,3158,302,74);
                        quest::spawn2(999021,0,0,-3539,3128,302,56);
                        quest::spawn2(999021,0,0,-3502,3091,302,10);
                        quest::spawn2(999021,0,0,-3470,3090,302,50);
			}
                elsif ($qglobals{yaradds} == 2)  # Wind Dervish Adds
                        {
                        quest::spawn2(999488,0,0,-3484,3089,302,0);
                        quest::spawn2(999488,0,0,-3484,3198,302,129);
                        }
                elsif ($qglobals{yaradds} == 3)  # Water Dervish Adds
                        {
                        quest::spawn2(999489,0,0,-3484,3089,302,0);
                        quest::spawn2(999489,0,0,-3484,3198,302,129);
                        quest::spawn2(999489,0,0,-3541,3145,302,65);
                        quest::spawn2(999489,0,0,-3427,3144,302,192);
                        }
                }
    }

elsif($hpevent == 10)   #change form randomly
    {

    my $x;
    my $y;
    my $z;
    my $h;
    my $a = int(rand(4)+1);
    if ($a == 1) {        #matriarch
    quest::spawn2(1242,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 1, 3, "F");
    }

    elsif ($a == 2) {       #winds
    quest::spawn2(1244,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 2, 3, "F");
    }

    elsif ($a == 3) {        #hurricane
    quest::spawn2(1245,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 3, 3, "F");
    }

    elsif ($a == 4) {      #storm   NO ADDS
    quest::spawn2(999483,0,0,-3491,3142,302,58);
    quest::delglobal("yaradds");
    quest::setglobal("yaradds", 4, 3, "F");
    }
    quest::delglobal("yar");
    quest::setglobal("yar", 7, 3, "F");
    quest::depop();
    }

elsif($hpevent == 9)   #spawn adds
    {
        if(defined($qglobals{yaradds})){

                if ($qglobals{yaradds} == 1)     # Drake Adds
                        {
                        quest::spawn2(999021,0,0,-3467,3197,302,77);
                        quest::spawn2(999021,0,0,-3500,3198,302,116);
                        quest::spawn2(999021,0,0,-3537,3158,302,74);
                        quest::spawn2(999021,0,0,-3539,3128,302,56);
                        quest::spawn2(999021,0,0,-3502,3091,302,10);
                        quest::spawn2(999021,0,0,-3470,3090,302,50);
			}
                elsif ($qglobals{yaradds} == 2)  # Wind Dervish Adds
                        {
                        quest::spawn2(999488,0,0,-3484,3089,302,0);
                        quest::spawn2(999488,0,0,-3484,3198,302,129);
                        }
                elsif ($qglobals{yaradds} == 3)  # Water Dervish Adds
                        {
                        quest::spawn2(999489,0,0,-3484,3089,302,0);
                        quest::spawn2(999489,0,0,-3484,3198,302,129);
                        quest::spawn2(999489,0,0,-3541,3145,302,65);
                        quest::spawn2(999489,0,0,-3427,3144,302,192);
                        }
                }
    }

}

sub EVENT_DEATH       #depop adds and spawn chest with loot
{
quest::delglobal("yar");
quest::signalwith(999488, 1, 0);
quest::signalwith(999489, 1, 0);
quest::signalwith(999021, 1, 0);
quest::spawn2(999480,0,0,$x-20,$y+20,$z+10,$h);
}
Adds code

Code:
sub EVENT_SIGNAL
{
if ($signal == 1) #when mob dies
{
quest::depop();
}
elsif ($signal == 2) #when all players are dead, taking the main mob out of combat
{
quest::depop();
}

}
Feel free to use the scripts for whatever you want. Just thought I would post what I am using for one of my 2.0 encounters on my server.

~Enjoy
__________________
~Tuul
Mithaniel Marr
http://mithmarr.power-rpg.com/
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 03:48 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3