1
Fork 0

Updated SprigganFXSCRIPT

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

Loading…
Cancel
Save