4
Fork 0

Updated SprigganFXSCRIPT

development
Eddoursul 3 months ago
parent fd7a9aaa3c
commit d59ee1f499
  1. BIN
      scripts/sprigganfxscript.pex
  2. 143
      source/scripts/sprigganfxscript.psc

Binary file not shown.

@ -7,36 +7,35 @@ VisualEffect Property SprigganFXAttachEffect Auto
Spell Property crSprigganHeal01 Auto
Spell Property crSprigganCallCreatures Auto
Idle Property FFselfIdle Auto
bool bBledout
bool bIsDead
bool bAnimEffects = true
;===============================================
auto state Alive
EVENT OnEffectStart(Actor Target, Actor Caster)
if Target == None
Return
EndIf
If Target.IsDead() || Target == Game.GetForm(0x14)
event OnEffectStart(Actor Target, Actor Caster)
If ! Target || Target == Game.GetForm(0x14)
GotoState("DoNothing")
Dispel()
return
EndIf
;test to see if spriggan is not in ambush mode
if (Target.IsInCombat() || Target.GetSleepState() == 0) && Target.Is3DLoaded()
SprigganFXAttachEffect.Play(Target, -1)
if bAnimEffects
bAnimEffects = false
Target.PlaySubGraphAnimation("KillFX")
endif
ENDEVENT
; May fire when dispelled with a script or console
Event OnEffectFinish(Actor akTarget, Actor akCaster)
If Target.IsDead()
GotoState("DoNothing")
Dispel()
EndIf
endevent
event OnEffectFinish(Actor akTarget, Actor akCaster)
GotoState("DoNothing")
SprigganFXAttachEffect.Stop(akTarget)
endEvent
endevent
EVENT onCombatStateChanged(Actor akTarget, int aeCombatState)
event OnCombatStateChanged(Actor akTarget, int aeCombatState)
Actor actorRef = GetTargetActor()
if ! actorRef || ! actorRef.Is3DLoaded()
@ -53,92 +52,98 @@ auto state Alive
endif
if aeCombatState == 1
if ! bAnimEffects
bAnimEffects = true
actorRef.PlaySubGraphAnimation("Revive")
endif
SprigganFXAttachEffect.Play(actorRef, -1)
actorRef.playIdle(FFselfIdle)
Utility.Wait(Utility.RandomFloat(1.0, 4.0))
crSprigganCallCreatures.cast(actorRef, actorRef)
endif
endEVENT
Event OnGetUp(ObjectReference akFurniture)
Actor actorRef = GetTargetActor()
if ! actorRef
return
Utility.Wait(Utility.RandomFloat(1.0, 3.0))
if GetState() == "Alive"
crSprigganCallCreatures.cast(actorRef, actorRef)
endif
endif
SprigganFXAttachEffect.Play(actorRef, -1)
actorRef.PlaySubGraphAnimation("Revive")
endEvent
endevent
EVENT onDying(actor myKiller)
event onDying(actor myKiller)
GotoState("Dying")
ENDEVENT
endevent
EVENT onDeath(actor myKiller)
event onDeath(actor myKiller)
GotoState("Dying")
endevent
Event OnEnterBleedout()
if bBledout
return
endif
bBledout = true
RegisterForSingleUpdate(2.0)
ENDEVENT
; Heals itself
event OnUpdate()
event OnEnterBleedout()
Actor actorRef = GetTargetActor()
if ! actorRef
SprigganFXAttachEffect.Stop(actorRef)
if actorRef.GetActorValue("Variable07")
RegisterForAnimationEvent(actorRef, "BleedoutStop")
return
endif
if actorRef.Is3DLoaded()
actorRef.SetActorValue("Variable07", 1)
Utility.Wait(Utility.RandomFloat(2.0, 3.5))
if GetState() == "Alive"
RegisterForAnimationEvent(actorRef, "BleedoutStop")
crSprigganHeal01.Cast(actorRef)
actorRef.setActorValue("variable07",1)
Utility.Wait(Utility.RandomFloat(1.5, 2.5))
actorRef.evaluatePackage()
actorRef.EvaluatePackage()
endif
endevent
event OnAnimationEvent(ObjectReference akSource, string asEventName)
UnregisterForAnimationEvent(akSource, asEventName)
SprigganFXAttachEffect.Play(akSource)
endevent
endstate
state Dying
event OnBeginState()
RegisterForSingleUpdate(Utility.RandomFloat(2.5, 4.5))
RegisterForSingleUpdate(Utility.RandomFloat(2.0, 3.5))
UnregisterForAnimationEvent(GetTargetActor(), "BleedoutStop")
endevent
Event OnEffectFinish(Actor akTarget, Actor akCaster)
GotoState("DoNothing")
akTarget.PlaySubGraphAnimation("KillFX")
endEvent
event OnCellAttach()
RegisterForSingleUpdate(1.0)
endevent
event OnCellDetach()
UnregisterForUpdate()
GotoState("Dead")
SprigganFXAttachEffect.Stop(GetTargetActor())
Dispel()
endevent
event OnUpdate()
if bIsDead
Dispel()
return
endif
bIsDead = true
Actor actorRef = GetTargetActor()
SprigganFXAttachEffect.Stop(GetTargetActor())
GotoState("Dead")
RegisterForSingleUpdate(Utility.RandomFloat(3.0, 7.5))
endevent
if actorRef
SprigganFXAttachEffect.Stop(actorRef)
endstate
state Dead
event OnUpdate()
Dispel()
endevent
event OnEffectFinish(Actor akTarget, Actor akCaster)
GotoState("DoNothing")
if bAnimEffects
bAnimEffects = false
akTarget.PlaySubGraphAnimation("KillFX")
endif
RegisterForSingleUpdate(Utility.RandomFloat(3.0, 7.5))
endevent
endstate
state DoNothing
endstate
; Compiler wants it here
Event OnEnterBleedout()
ENDEVENT
event OnEnterBleedout()
endevent

Loading…
Cancel
Save