EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Quests::Q&A (https://www.eqemulator.org/forums/forumdisplay.php?f=599)
-   -   Quick question, Damaging an NPC via Signal when another mob is killed (https://www.eqemulator.org/forums/showthread.php?t=33538)

Astal 05-13-2011 11:06 AM

Quick question, Damaging an NPC via Signal when another mob is killed
 
You can send a signal from one npc to another correct?

If so am I using $npc->SetHP correctly here? Can you have a -# inside the brackets or do you have to do that a different way?


Code:

#azog mon
sub EVENT_SIGNAL {
        quest::shout("Signal Sent");
        $npc->SetHP(-100000); #damage azog mon by 5%
}


Code:

#hand
sub EVENT_DEATH {
quest::signal(999430, 0); #signal azog mon to get damaged
}


Akkadius 05-13-2011 11:20 AM

Quote:

Originally Posted by Astal (Post 199871)
You can send a signal from one npc to another correct?

If so am I using $npc->SetHP correctly here? Can you have a -# inside the brackets or do you have to do that a different way?


Code:

#azog mon
sub EVENT_SIGNAL {
        quest::shout("Signal Sent");
        $npc->SetHP(-100000); #damage azog mon by 5%
}


Code:

#hand
sub EVENT_DEATH {
quest::signal(999430, 0); #signal azog mon to get damaged
}


As for the SetHP, it sets the HP to a value within the hitpoints of the NPC. So you will need to grab the NPC hitpoints first.

Code:


        my $curhp = $npc->GetHP();
        my $HealPoints = -100000;
        $npc->SetHP($curhp + $HealPoints);

Or you can use the plugin::MobHealPoints(Hitpoints to heal); from the plugins repo.

plugin::MobHealPoints(-100000);

Will achieve the same effect.

And usually a good way to go about using signals is to lace them with an ID using signalwith so that you can use different signals that do different things throughout an event.

For example:
quest::signalwith(int npc_id, int signal_id, int wait_ms);

Code:

#hand
sub EVENT_DEATH {
quest::signalwith(999430, 4, 1); #signal azog mon to get damaged
}


Code:

#azog mon
sub EVENT_SIGNAL {
        if($signal == 4){
        quest::shout("Signal Sent");
        $my $curhp = $npc->GetHP();
        my $HealPoints = -100000;
        $npc->SetHP($curhp + $HealPoints); #damage azog mon by 5%
        }
}


Astal 05-13-2011 11:48 AM

Quote:

Originally Posted by Akkadius (Post 199872)
As for the SetHP, it sets the HP to a value within the hitpoints of the NPC. So you will need to grab the NPC hitpoints first.

Code:


        my $curhp = $npc->GetHP();
        my $HealPoints = -100000;
        $npc->SetHP($curhp + $HealPoints);

Or you can use the plugin::MobHealPoints(Hitpoints to heal); from the plugins repo.

plugin::MobHealPoints(-100000);

Will achieve the same effect.

And usually a good way to go about using signals is to lace them with an ID using signalwith so that you can use different signals that do different things throughout an event.

For example:
quest::signalwith(int npc_id, int signal_id, int wait_ms);

Code:

#hand
sub EVENT_DEATH {
quest::signalwith(999430, 4, 1); #signal azog mon to get damaged
}


Code:

#azog mon
sub EVENT_SIGNAL {
        if($signal == 4){
        quest::shout("Signal Sent");
        $my $curhp = $npc->GetHP();
        my $HealPoints = -100000;
        $npc->SetHP($curhp + $HealPoints); #damage azog mon by 5%
        }
}


thanks akka, i was gonna do signalwith but i didnt know if the id was an int or a string.

You may notice its a little similar to your one mob, not on purpose of course, its hard coming up with a bunch of different unique boss fight scripts.

Did one with totems that heal the boss, this one, i need 5 more hehehe

Akkadius 05-13-2011 12:00 PM

My one mob? Oh yeah that one mob!

Astal 05-13-2011 12:12 PM

Quote:

Originally Posted by Akkadius (Post 199877)
My one mob? Oh yeah that one mob!

kurns tower or whatever hehehe

sorvani 05-13-2011 12:41 PM

Along these same lines what is the best way to self kill or depop a NPC so that the respawn timer is fired?

using quest::depop{}; does not cause the respawn timer to kick in so as soon as the dymanic zone shuts down and starts up again the NPC will be back up.
using $npc->Damage(.........); does do it since the mob "dies"


All times are GMT -4. The time now is 08:20 PM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.