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 03-18-2014, 01:12 PM
Esildor
Hill Giant
 
Join Date: Feb 2010
Posts: 207
Default Boss Script, activate mobs during

Hola,

I'm making a boss fight where I want to have 4 inactive mobs in the room become active at certain percentages during the fight.

Is there a way to call on a separate mob to become active, or, would the easiest way be for me to just have it spawn another version of it on the placeholder?
Reply With Quote
  #2  
Old 03-18-2014, 01:27 PM
demonstar55
Demi-God
 
Join Date: Apr 2008
Location: MA
Posts: 1,165
Default

You'd need to change the special attacks flags for the NPC

https://code.google.com/p/projecteqq...nxa_Karnkvi.pl

Here is an example of doing that. Basically this mob at 75% goes inactive and spawns 3 mobs, when these 3 mobs die, the mob goes active again.

https://github.com/EQEmu/Server/blob.../npc.cpp#L1402

You can find what the letters mean there
Reply With Quote
  #3  
Old 03-18-2014, 01:28 PM
Dunge0nMastr
Hill Giant
 
Join Date: Oct 2002
Location: Rockville, MD
Posts: 124
Default

theres a few options for this. Lets say you want it every 25%, you could do:
on the boss:
Code:
sub EVENT_HP {
if ($hpevent == 75) {
quest::signalwith(xxxxx,#,0); #xxxx = Add NPC ID, # = signal number (if using multiple signals), the third entry = delay in miliseconds (again i think)
quest::setnexthpevent(50); #set the next hp event since you have passed your first one (which you will need to initalize in a different spot, under its spawn, or combat or w/e you chose.
if ($hpevent == 50) {
#Etc Etc
}
}
Then on the adds, you have a few options, you can use the signal to just depop and repop the mob,

Code:
sub EVENT_SIGNAL {
if ($signal == 1) { #Or w/e number you chose)
quest::spawn2(npcid,0,0,x,y,z,h); #spawn a combatitive version
quest::depop(); #depop the untargetable/sleeping mob
}
}
Alternatively, you can just have the boss script include the spawn2 stuff at the hp, and ignore the signals all together, just have the boss depop the mob and spawn a targetable version in the same xyzh location.

Something ive been playing with alot recently has been using perl to set the bodytype of mobs when they spawn, and then using signals or events to change it to a targetable body type - $npc->SetBodyType(#); (i think)
__________________
Bront -Server Admin/Owner and Lead Quest Dev for Kildrukaun's Prophecy
http://kpemu.com/
Reply With Quote
  #4  
Old 03-18-2014, 01:36 PM
Esildor
Hill Giant
 
Join Date: Feb 2010
Posts: 207
Default

So, I started playing with it while waiting for a reply and this is what I've thrown in so far:

Code:
sub EVENT_SPAWN {
   quest::setnexthpevent(80);
}
sub EVENT_HP {
   if($hpevent == 80) {
     quest::depopall(#);
     quest::spawn2(ID,coordinates);
     }
}
This works pretty easily. Basically just making the 'placeholder' go away, I could use the same npc and add in a:

"quest::modifynpcstat("special_attacks","AAAA" );"

to turn the new npc on aswell. Seems like this is a pretty easy option?

EDIT:

Looking at your example a second time, Dungeon, your second line: "quest::depop();" ... In that specific instance would you have a separate mob created for every "placeholder" position, or just use the same npc and have it statically spawn without being targetable etc etc then use a modifynpcstat to "turn it on" when you respawn it?

Actually .. it just occurred to me that modifynpcstat is going to modify the BOSS'S special attack's, not the add I'm trying to activate. So, would the best way be to have placeholders for each position then spawn another version that actually fights?
Reply With Quote
  #5  
Old 03-18-2014, 01:43 PM
demonstar55
Demi-God
 
Join Date: Apr 2008
Location: MA
Posts: 1,165
Default

That, or have the boss signal the mob to do stuff (as in modify the special attacks)
Reply With Quote
  #6  
Old 03-18-2014, 01:48 PM
Esildor
Hill Giant
 
Join Date: Feb 2010
Posts: 207
Default

Quote:
Originally Posted by demonstar55 View Post
That, or have the boss signal the mob to do stuff (as in modify the special attacks)

How exactly do the signals work? Do you know of any good walk-through for them? I haven't used any signals yet.

Would I set the signal in the bosses .pl file and then create another .pl folder for the individual mob and that signal calls on the other file?
Reply With Quote
  #7  
Old 03-18-2014, 02:40 PM
Esildor
Hill Giant
 
Join Date: Feb 2010
Posts: 207
Default

Okay, got it down to a very simple script. I have inactive versions of my mobs that are placeholders, and then I created the mobs that will spawn during the event. Simple quest that depops the placeholder and spawns the active version.

Code:
sub EVENT_SPAWN {
  quest::setnexthpevent(80);
}
sub EVENT_HP {    
  if($hpevent == 80) { 
     quest::depopall(9980009);
     quest::spawn2(9980017,0,0,55.9,-18,5.5,204.4);
     quest::setnexthpevent(60);
    }
  if($hpevent == 60) { 
     quest::depopall(9980010);
     quest::spawn2(9980018,0,0,34.9,47.5,5.5,152.6);
     quest::setnexthpevent(40);
    }
  if($hpevent == 40) { 
     quest::depopall(9980011);
     quest::spawn2(9980019,0,0,-34.6,47.5,5.5,102);
     quest::setnexthpevent(20);
    }
  if($hpevent == 20) { 
     quest::depopall(9980012);
     quest::spawn2(9980020,0,0,-56.5,-18,5.5,51.4);   
    }  
}
I also want this boss to become "active" by handing him 4 items; anyone have a good example of that part of a quest?

Thanks for the help!
Reply With Quote
  #8  
Old 03-19-2014, 11:19 PM
sorvani
Dragon
 
Join Date: May 2010
Posts: 966
Default

The best thing to do is to do it all from the boss mobs and access the other mobs from there using the entity list.
Look at the Keledrix or Noquifel scripts and controllers in Inktuta.
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 03:32 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