Go Back   EQEmulator Home > EQEmulator Forums > Quests > Quests::Q&A

Quests::Q&A This is the quest support section

Reply
 
Thread Tools Display Modes
  #1  
Old 01-06-2009, 07:02 AM
Joetuul
Sarnak
 
Join Date: Oct 2008
Location: AZ
Posts: 58
Default How do I get $mob->SetHP($mob->GetHP()*85); to work right?

This is what I am trying to do, but cant seem to get it right is to get the mob to spawn with a lower percentage of health, in this case it would be 85% and every 15% there on after. the text in red is what I want to get to work and then proceed to copy that for each health percentage. This way I can change this mob's HP and not have to worry about changing the script each time just to adjust the HP I want the mob to be at, at each of these globals.

Code:
sub EVENT_SPAWN
{

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

                if ($qglobals{yar} == 1)
                        {
                        quest::shout ("RAWR 1"); #was used to test if the script ws working
                        }

                elsif ($qglobals{yar} == 2)
                        {
                        quest::shout ("RAWR 2");
                        $mob->SetHP($mob->GetHP()*85);
                        }

                elsif ($qglobals{yar} == 3)
                        {
                        $npc->SetHP(7000);
                        }

                elsif ($qglobals{yar} == 4)
                        {
                        $npc->SetHP(5500);
                        }

                elsif ($qglobals{yar} == 5)
                        {
                        $npc->SetHP(4000);
                        }

                elsif ($qglobals{yar} == 6)
                        {
                        $npc->SetHP(2500);
                        }

                elsif ($qglobals{yar} == 7)
                        {
                        $npc->SetHP(1000);

                        }
               }
}
I hate searching the forums for hours on end for posts similair to what I want so I can use it in my own scripts. This one has been bugging me the last few days. If I can get this one snipet to work, I think it would make for an awesome mob encounter (im going to use it for sure). I will even post it in the quest custom section of the forums for all who would like to use it or some form of it or alter it to their own needs.

I am going to bed since its 4am and I need to get up in a few hours to deal with RL stuff.

TIA!!!!!
__________________
~Tuul
Mithaniel Marr
http://mithmarr.power-rpg.com/
Reply With Quote
  #2  
Old 01-06-2009, 07:33 AM
joligario's Avatar
joligario
Developer
 
Join Date: Mar 2003
Posts: 1,497
Default

Did you try 0.85?
Reply With Quote
  #3  
Old 01-06-2009, 08:06 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Something like this should work. If it doesn't, lemme know.
Code:
my $max_hps = $npc->GetMaxHP();
my $set_hps = ($max_hps * 0.85);
$npc->SetHP($set_hps);
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #4  
Old 01-06-2009, 01:39 PM
Joetuul
Sarnak
 
Join Date: Oct 2008
Location: AZ
Posts: 58
Default Trev, you are awesome.

Ya that worked perfectly. Thanks a ton for the help. Ill post the full script here, and in the custom quests for all who would like it have it.

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.

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!!

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);
    }
}


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);
}
__________________
~Tuul
Mithaniel Marr
http://mithmarr.power-rpg.com/
Reply With Quote
  #5  
Old 01-06-2009, 05:24 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Unless you needed to respawn the quest mob through the fight as part of the effect, you probably could have saved yourself some time by using some of the new quest commands that let you adjust an NPC in almost any way you could want. Using quest::modifynpcstat(), you can adjust almost any NPC stat, which means very dynamic events are possible from a single boss that doesn't have to repop to change forms. You can also use quest::npcrace/gender/size/texture() to modify the looks to any look you want. The only thing I think that can't be changed on the fly now that is important is the name of the NPC.

Here is the wiki explaining those commands. You may already know about this, but if not, it is very helpful and more current than any of the other stuff like the Lexicon or the sticky post in the quest sections:

http://www.eqemulator.net/wiki/wikka...=QuestTutorial

BTW, your script looks like fun. We have a couple similar ones on Storm Haven. Some of them are pretty complex.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #6  
Old 01-06-2009, 07:41 PM
Joetuul
Sarnak
 
Join Date: Oct 2008
Location: AZ
Posts: 58
Default

I figured the name couldn't be changed, so thats why I did it the way I did, I have 4 mobs, they all have a different name and spells, but they all look the same, just with a different surname title.

I already looked over quest tutorial page, that's why I posted about the $mob->HP thing, just couldn't get it working right.

I hope my players like the encounter, been working on it for a few days now, the only snag is what you helped me fix. that was a wonderful thing you showed me, I will prolly end up using that again, just in a different manner. Im still pretty new at using perl. I learned HTML and Javascript about 8 years ago, I use it every know and than, but nothing major.

Thanks again. I really appreciated your help.
__________________
~Tuul
Mithaniel Marr
http://mithmarr.power-rpg.com/
Reply With Quote
  #7  
Old 01-06-2009, 10:24 PM
Neiv
Hill Giant
 
Join Date: May 2008
Location: Colorado
Posts: 238
Default

Quote:
you probably could have saved yourself some time by using some of the new quest commands that let you adjust an NPC in almost any way you could want
Question on this: Do these new commands automatically work, or do I need to download a new build of perl? The reason I ask is because I tried the quest::we("Text") function and it does not work for me.
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 08:05 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