PDA

View Full Version : spawning at certain percentage of health


lanileb
08-06-2007, 05:38 AM
I was wondering if it would be possible to write a sub EVENT_SPAWN or sub EVENT_ATTACK script for a mob to make him spawn certain things when his health gets to a certain %. Like when he reaches 70% have him spawn 10-15 little mini versions that the people have to kill, then 40% maybe he takes on another form, stuff like that. And if it's possible to do this, anyone know the commands you would write? I've written some quests before but not sure how you would do a health check.

Ueguvil
08-06-2007, 07:21 AM
I'm pretty sure you can do this using EVENT_HP.

sfisque
08-06-2007, 09:13 AM
yes EVENT_HP will do this quite well. some points to note:

1) the spawned mobs will need to be tuned for aggro. if they spawn and are green to the players they might just stand there and watch their overlord get spanked. (set aggro appropriately similar to how undead ignore level for aggro).

2) add in a "despawn" timer or "upper minion limit" so that if the players attempt the mob several times, they dont end up having to fight several waves of the same minions.

3) add in some form of quest::shout or quest::say so that the players get some clue as to whats happened, otherwise they might assume the server screwed them with a spurious spawn.

have fun :)

== sfisque

lanileb
08-06-2007, 10:00 AM
ok cool thanks I'll play around with that. How would I Set the HP check though? I can't seem to find anything in the checks that would be like quest::hp or something of that sort. What's the check? SOmething like quest::health or such?

lanileb
08-06-2007, 10:39 AM
Ok i found the quest::setnexthpevent but I'm not sure how to set the correct percentage. I tried quest::setnexthpevent(80) for 80% and also tried quest::setnexthpevent(1480200) because thats 80% of his max health and neither worked. Heres the .pl file right now.

sub EVENT_DEATH
{
quest::spawn(2700027,0,0,-532.4,-1920.9,15.6);
}

sub EVENT_HP
{
quest::setnexthpevent(1480200){
quest::spawn(2700036,0,0,-532.4,-1920.9,15.6);
quest::spawn(2700036,0,0,-540.8,-1902.8,15.6);
quest::spawn(2700036,0,0,-569.5,-1895.7,15.6);
quest::spawn(2700036,0,0,-582.0,-1913.3,16.5);
}
}

Striat
08-06-2007, 01:35 PM
Ok i found the quest::setnexthpevent but I'm not sure how to set the correct percentage. I tried quest::setnexthpevent(80) for 80% and also tried quest::setnexthpevent(1480200) because thats 80% of his max health and neither worked. Heres the .pl file right now.

sub EVENT_DEATH
{
quest::spawn(2700027,0,0,-532.4,-1920.9,15.6);
}

sub EVENT_HP
{
quest::setnexthpevent(1480200){
quest::spawn(2700036,0,0,-532.4,-1920.9,15.6);
quest::spawn(2700036,0,0,-540.8,-1902.8,15.6);
quest::spawn(2700036,0,0,-569.5,-1895.7,15.6);
quest::spawn(2700036,0,0,-582.0,-1913.3,16.5);
}
}

There are a few examples in the quest q and a section.

Would do this:


sub EVENT_SPAWN {
quest::setnexthpevent(80);
}

sub EVENT_AGGRO
{
quest::stoptimer(1);
}

sub EVENT_SLAY {
quest::settimer(1,20);
}

sub EVENT_TIMER {
if ($timer == 1) {
quest::stoptimer(1);
quest::signalwith(2700036,1,0000);
}
}

sub EVENT_HP
{
if($hpevent == 80) {
quest::spawn(2700036,0,0,-532.4,-1920.9,15.6);
quest::spawn(2700036,0,0,-540.8,-1902.8,15.6);
quest::spawn(2700036,0,0,-569.5,-1895.7,15.6);
quest::spawn(2700036,0,0,-582.0,-1913.3,16.5);
}
}

sub EVENT_DEATH
{
quest::spawn(2700027,0,0,-532.4,-1920.9,15.6);
}


You can ignore my timer, event aggro and event slay. They're just for controlling add despawn. I'd add this for your adds 2700036.pl:

sub EVENT_SIGNAL {
if ($signal == 1) {
quest::depop();
}
}

sfisque
08-06-2007, 01:38 PM
add:

sub EVENT_SPAWN
{
#sets the HP event signal for 80% health
quest::setnexthpevent(80);
}



== sfisque

ps: lol striat posted just before me.

lanileb
08-06-2007, 01:50 PM
Awesome thank you so much for that script, except the despawn doesn't seem to work properly. I'm gonna try writing my own right now and I'll let ya know how it turns out.

lanileb
08-06-2007, 02:00 PM
Ahh I didn't notice the sub EVENT_SIGNAL goes into 2700036.pl I put into 25, one second and I'll try that

lanileb
08-06-2007, 03:02 PM
OK I got it working. Didn't have the signal set properly in my 2700025.pl file so I set that for

sub EVENT_DEATH

quest::signalwith(2700036,1)

so now the signal properly identifies to the minions to despawn. Now to start adding in my health checks, I want him to spawn 4 at 80% 6 at 60% 10 at 40% and 15 at 20% hehe

lanileb
08-07-2007, 02:46 AM
Ok sorry to keep this thread goin like this...now I can't get something else to work. The spawn/despawn scripts work perfect. I can't seem to get a quest::shout included in those though. This is what I have.

{
if($hpevent == 80) {
quest::shout("Come forward my Wraiths! Bring Terror upon these foolish ones who have disturbed me!");
quest::spawn(2700036,0,0,-532.4,-1920.9,15.6);
quest::spawn(2700036,0,0,-540.8,-1902.8,15.6);
quest::spawn(2700036,0,0,-569.5,-1895.7,15.6);
quest::spawn(2700036,0,0,-582.0,-1913.3,16.5);
}
if($hpevent == 60) {
quest::shout("You have gotten this far and here you will die. Prepare for the worst ignorant fools!");
quest::spawn(2700036,0,0,-536.2,-1907.0,15.6);
quest::spawn(2700036,0,0,-548.3,-1894.2,15.6);
quest::spawn(2700036,0,0,-532.4,-1920.9,15.6);
quest::spawn(2700036,0,0,-540.8,-1902.8,15.6);
quest::spawn(2700036,0,0,-569.5,-1895.7,15.6);
quest::spawn(2700036,0,0,-582.0,-1913.3,16.5);
}

The first shout will work while the second one will not. I dont see any coding problems in it however...