Log in

View Full Version : Quick question, Damaging an NPC via Signal when another mob is killed


Astal
05-13-2011, 11:06 AM
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?


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


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

Akkadius
05-13-2011, 11:20 AM
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?


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


#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.


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

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


#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
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.


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

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


#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
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"