Delaying an effect using an NPC's action queue

I am trying to do something very simple, but the timing for NPC action queues doesn’t work the way I thought it did. I want to have an NPC walk to a spot, wait a few seconds, play a visual effect on him, then have him disappear about 2.5 seconds later.

Here is the segment of code that is supposed to do this

// We're done here.  Walk the NPC to the sextant and get rid of him
AssignCommand(oNPC, ActionMoveToLocation(GetLocation(oSextant),FALSE));
AssignCommand(oNPC, ActionWait(3.0f));
AssignCommand(oNPC, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), oNPC));
AssignCommand(oNPC, DestroyObject(oNPC, 2.5f));

Note that it doesn’t always take the NPC the same amount of time to get to his destination, so it’s not quite just a matter of playing with the timing.

But, this isn’t working the way I want. Instead of waiting until the NPC gets to his destination and then playing 3 seconds later, the effect plays almost immediately. The NPC also disappears too soon - seemingly the 2.5 second timer starting before he gets to his destination.

So, to be clear, I want the other events (the played effect and the disappearance) to NOT start until the NPC has gotten to his destination and then waited 3 seconds. Apparently, just adding those things to his action queue isn’t the right way to do this. I was hoping to accomplish this without kludging together a bunch of silly scripts triggered by other events (e.g. draw a trigger at the NPC’s destination and don’t start the effect and destroy sequence until he triggers that OnEnter event).

Is there a nice way to do this that takes advantage of the NPC’s event queue?

Try encapsulating it in an ActionDoCommand:

AssignCommand(oNPC, ActionDoCommand(ApplyEffectToObject(parameters parameters parameters)));

I think as is, it isn’t getting added to the action queue at all - or if it is, then it’s being added at the very start of it. See the difference between ActionSpeakString and SpeakString, too.

1 Like

Excellent! That was bang on! Thank you. I knew there had to be a straightforward way. :sunglasses:

1 Like