EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Development::Feature Requests (https://www.eqemulator.org/forums/forumdisplay.php?f=612)
-   -   spawning at certain percentage of health (https://www.eqemulator.org/forums/showthread.php?t=23397)

lanileb 08-06-2007 05:38 AM

spawning at certain percentage of health
 
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

Quote:

Originally Posted by lanileb (Post 136534)
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:

Code:

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:

Code:

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


All times are GMT -4. The time now is 08:40 AM.

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