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 04-03-2015, 07:23 PM
markusdabrave's Avatar
markusdabrave
Sarnak
 
Join Date: Jan 2012
Location: Plano, TX
Posts: 70
Default

Will do, thanks

Edit: Ok, I know this has got to be here. I was looking at buffbot spells and got my porters to work. The only problem is everything is instacast. I've done some searching for pause and wait in the scripts but can't seem to find anything of relevance to what I'm doing. Here's what I've got so far:

Code:
sub EVENT_SAY {
    if ($text=~/Hail/i) { 
        plugin::Whisper("Hail! Where would you like to go? [Surefall] Glade?");
    }
    if ($text=~/Surefall/i) {
        quest::say("Camo for safety...");
        quest::selfcast(34);
        quest::say("Off to Surefall Glade!");
        quest::selfcast(2021);
    }
}
I tried $npc->CastSpell(2021,$userid); but that only resulted in my NPC teleporting away (which was quite humorous... and may actually be something I implement later.. but I digress). My assumption here is that 2021 (Ring of Surefall) is a self-only spell, and 2020 (Circle of Surefall) is a group spell that the druid has to be a member of, which is why they're not working. Self-cast works but it's a little hoaky seeing a warrior cast a spell to teleport. So I guess there are a couple of questions:

1. Can I suppress the player character from doing the cast animation on a SelfCast?
2. What's the keyword for inserting a pause/wait between spells being cast? I saw pause(timer) but that didn't work so I suspect it only has to do with movement.
3. Is it even possible for an NPC to cast a group spell on a non-group member (similar to target group buff only this would really be target group circle )
Reply With Quote
  #2  
Old 04-12-2015, 01:32 PM
Asylum
Sarnak
 
Join Date: Jun 2013
Posts: 81
Default

Avoid using "spells" altogether and simply use the following to move the player that triggers the event:

quest::movepc(zone_id, x, y, z, heading);

If you want a delay, set it to trigger a timer for x seconds, then under EVENT_TIMER paste the above (also may want to stop the timer...).

If you are transporting into an instance:

quest::MovePCInstance(zone_id, instance_id, x, y, z);

If you have a flare for the dramatic, have the npc cast a spell during the delay to make it appear that's the graphic he or she is casting.

See the second post in this thread http://www.eqemulator.org/forums/showthread.php?t=38773 for using proximity say to create and port player(s)/group to an instance. It can be used with quest::movepc(zone_id, x, y, z, heading); as well for static zones or to a different area of the same zone/instance. Be sure you activate the proximitysay command in EVENT_SPAWN or it will not use it.

Last edited by Asylum; 04-12-2015 at 01:48 PM.. Reason: added more information
Reply With Quote
  #3  
Old 04-15-2015, 04:54 PM
markusdabrave's Avatar
markusdabrave
Sarnak
 
Join Date: Jan 2012
Location: Plano, TX
Posts: 70
Default

Thanks for the advice, I'll give the movepc thing a try. You're exactly right on what my goal is. I'd like to make the porter cast 2-3 seconds of spell effects, then the player get teleported out. The problem I've run into is that everything happens sequentially. Timer -> Spell Effect -> Port rather than Timer & Spell Effect -> Port.

Right now this is what my code is. Functionally, it works fine. I'd like like it feel a little less botty and more pc-ish

Also, if there's a way to make this script not use so many if statements, I'm all ears. I'm new to perl but not programming so I suspect there has to be a way to combine those if statements into fewer lines of code.

Code:
sub EVENT_SAY {
	if ($text=~/Hail/i) {
	plugin::Whisper("Hail! Where would you like to go? [Butcherblock] Mountains, The [Feerrott], North [Karana], [Lavastorm] Mountains, [Misty] Thicket, [South Ro], [Steamfont] Mountains, West [Commonlands] or [Toxxulia] Forest?");
	}
#	if ($text=~/Surefall/i) {
#	quest::selfcast(34);
#	quest::say("Off to Surefall Glade!");
#	quest::selfcast(2021);
#	}
	if ($text=~/Commonlands/i) {
	quest::say("Off to West Commonlands!");
	quest::selfcast(34);
	quest::selfcast(531);
	}
	if ($text=~/Butcherblock/i) {
	quest::say("Off to Butcherblock Mountains!");
	quest::selfcast(34);
	quest::selfcast(532);
	}
	if ($text=~/Feerrott/i) {
	quest::say("Off to The Feerrott!");
	quest::selfcast(34);
	quest::selfcast(536);
	}
	if ($text=~/Karana/i) {
	quest::say("Off to North Karana!");
	quest::selfcast(34);
	quest::selfcast(530);
	}
	if ($text=~/Lavastorm/i) {
	quest::say("Off to Lavastorm Mountains!");
	quest::selfcast(34);	
	quest::selfcast(534);
	}
	if ($text=~/Misty/i) {
	quest::say("Off to Misty Thicket!");
	quest::selfcast(34);
	quest::selfcast(538);
	}
	if ($text=~/South Ro/i) {
	quest::say("Off to South Ro!");
	quest::selfcast(34);
	quest::selfcast(535);
	}
	if ($text=~/Steamfont/i) {
	quest::say("Off to Steafont Mountains!");	
	quest::selfcast(34);
	quest::selfcast(537);
	}
	if ($text=~/Toxxulia/i) {
	quest::say("Off you Toxxulia Forest!");
	quest::selfcast(34);
	quest::selfcast(533);
	}
}
Reply With Quote
Reply

Thread Tools
Display Modes

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 07: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 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3