Jump to content

Shout for lesser power


Recommended Posts

This does work but only when set to FF and Self. I need it to work with FF and Aimed. I have already tried MySpell.Cast(PlayerRef) but it didn't play the animation.

Event OnEffectStart(Actor akTarget, Actor akCaster)

	Debug.SendAnimationEvent(PlayerRef, "ShoutStart")

EndEvent


Event OnEffectFinish(Actor akTarget, Actor akCaster)

	Debug.SendAnimationEvent(akCaster, "ShoutStop")

EndEvent
Link to comment
Share on other sites

It's not working for aimed because that event doesn't fire unless the effect hits an actor. Try putting it in your projectile script.

Can't do that. The point of it is to simulate blowing, if the projectile is already out the animation doesn't make sense. I'm going to try and reverse it, have the projectile fire but the spell by FF and Self. Wish me luck!

 

Edit: That seems to work! Only problem is the animation lasts like 0.7s and the I can't set the duration to that as far as I know.

Edited by Elias555
Link to comment
Share on other sites

You could also try putting the animation in the OnInit block of the spell. That will always fire regardless of whether or not there is a target.

 

I'm still fairly certain that PlayIdle is the preferred function here. Refer to the notes under SendAnimationEvent in the CK Wiki:

 

http://www.creationkit.com/index.php?title=SendAnimationEvent_-_Debug

 

This bypasses the check on ObjectReference that prevents sending events to actors. If you use it to send an event to actors, you will most likely mess up the actor permanently as the internal actor data may no longer match their animation state.

 

 

Link to comment
Share on other sites

 

You could also try putting the animation in the OnInit block of the spell. That will always fire regardless of whether or not there is a target.

 

I'm still fairly certain that PlayIdle is the preferred function here. Refer to the notes under SendAnimationEvent in the CK Wiki:

 

http://www.creationkit.com/index.php?title=SendAnimationEvent_-_Debug

 

This bypasses the check on ObjectReference that prevents sending events to actors. If you use it to send an event to actors, you will most likely mess up the actor permanently as the internal actor data may no longer match their animation state.

 

 

 

It already fires regardless of a target or not. :confused:

 

Doesn't that only happens when you don't tell the animation to stop?

Debug.SendAnimationEvent(akCaster, "ShoutStop")

Does it apply to any actor or NPC only?

Link to comment
Share on other sites

I'm by no means the expert on animations, so probably best to get somebody else to answer that. It was just my impression that the debug function was really for testing purposes and PlayIdle is the function that is intended to be used to make actors perform animations. The player's animation variables seem to reset more often than other actors, but I don't know if that resolves this issue.

 

According to the wiki, in order to prevent issues you should use PlayIdle(IdleStop_Loose) in order to reset the actor and prevent issues with SendAnimationEvent.

Edited by lofgren
Link to comment
Share on other sites

Alright, here's what it looks like now.

Actor Property PlayerRef Auto
Idle Property MyAnimation Auto
Idle Property MyAnimation2 Auto
Spell Property MySpell Auto
Float Property duration  Auto 



Event OnEffectStart(Actor akTarget, Actor akCaster)

	PlayerRef.PlayIdle(MyAnimation) ;VoiceStart
	Utility.Wait(Duration)
	MySpell.Cast(PlayerRef)

EndEvent


Event OnEffectFinish(Actor akTarget, Actor akCaster)

	PlayerRef.PlayIdle(MyAnimation2);VoiceInterruptRoot. Should I change this to what you said or is this fine? Seems to be so far.

EndEvent

Edit: It needs to be VoiceInterruptRoot.

Edited by Elias555
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...