2023-12-04 15:02:58 +00:00
|
|
|
Scriptname DragonPriestActorScript extends ActiveMagicEffect
|
|
|
|
{Abilities and FX for Dragon Priest}
|
|
|
|
|
|
|
|
import debug
|
|
|
|
|
|
|
|
armor property DragonPriestArmor01 auto
|
|
|
|
{Glowing cape and mouth streams armor}
|
|
|
|
VisualEffect Property DragonPriestParticlesFX Auto
|
|
|
|
{Floor based stream of upward particles}
|
|
|
|
VisualEffect Property DragonPriestEyeGlowFX Auto
|
|
|
|
{eye glow fx}
|
|
|
|
VisualEffect Property FXfallingSandDragonPriestEffect Auto
|
|
|
|
{falling sand from holes fx}
|
|
|
|
Explosion Property FXDragonPriestSmallExplosion Auto
|
|
|
|
{dust and fabric explosion played on state change}
|
|
|
|
Explosion Property FXDragonPriestLargeExplosion Auto
|
|
|
|
{large dust fabric and metal bits explosion played on dying}
|
|
|
|
Activator property AshPileObject auto
|
|
|
|
{The object we use as a pile.}
|
|
|
|
int doOnce = 0 ;Stops on hit from spamming
|
|
|
|
Actor selfRef ;local pointer to the curren dragon priest
|
|
|
|
|
|
|
|
EVENT OnEffectStart(Actor Target, Actor Caster)
|
|
|
|
selfRef = caster ;local pointer to the curren dragon priest
|
2023-12-06 15:31:10 +00:00
|
|
|
|
|
|
|
;Added by USKP to prevent this effect from appearing on the player.
|
|
|
|
If selfRef == Game.GetPlayer()
|
|
|
|
Dispel()
|
|
|
|
return
|
|
|
|
EndIf
|
|
|
|
|
|
|
|
;USSEP 4.1.5 Bug #13749: added this line:
|
|
|
|
USSEP_RegisterForAnimationEvents (selfRef)
|
|
|
|
|
2023-12-04 15:02:58 +00:00
|
|
|
if (selfRef.GetSleepState() == 3)
|
|
|
|
; Debug.Trace("DP is sleeping! 3")
|
|
|
|
else
|
|
|
|
;Play all of the magic fx
|
|
|
|
selfRef.equipitem(DragonPriestArmor01)
|
|
|
|
DragonPriestParticlesFX.play(selfRef, -1)
|
|
|
|
DragonPriestEyeGlowFX.play(selfRef, -1)
|
|
|
|
endIf
|
|
|
|
ENDEVENT
|
|
|
|
|
|
|
|
Event OnGetUp(ObjectReference akFurniture)
|
|
|
|
; Debug.Trace("Dragon preist just got up from " )
|
|
|
|
;Play all of the magic fx
|
2023-12-06 15:31:10 +00:00
|
|
|
|
|
|
|
;Added by USKP to prevent this effect from appearing on the player.
|
|
|
|
If selfRef == Game.GetPlayer()
|
|
|
|
Dispel()
|
|
|
|
return
|
|
|
|
EndIf
|
|
|
|
|
2023-12-04 15:02:58 +00:00
|
|
|
selfRef.equipitem(DragonPriestArmor01)
|
|
|
|
DragonPriestParticlesFX.play(selfRef, -1)
|
|
|
|
DragonPriestEyeGlowFX.play(selfRef, -1)
|
|
|
|
endEvent
|
|
|
|
|
|
|
|
Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked)
|
|
|
|
;When hit incriments and plays the trasition to hirt state fx. Currently plays on the 5th hit. To be redone by design to work on health
|
|
|
|
doOnce = doOnce + 1
|
|
|
|
if doOnce == 5
|
|
|
|
selfRef.placeAtMe(FXDragonPriestSmallExplosion, 1)
|
|
|
|
DragonPriestParticlesFX.Stop(selfRef)
|
|
|
|
FXfallingSandDragonPriestEffect.play(selfRef, -1)
|
|
|
|
selfRef.PlaySubGraphAnimation( "stage2" )
|
|
|
|
doOnce = doOnce + 1
|
|
|
|
endIf
|
|
|
|
ENDEVENT
|
|
|
|
|
|
|
|
EVENT OnDying(Actor akKiller)
|
|
|
|
; play all of the many dying fx and clean up the magic fx
|
|
|
|
selfRef.placeAtMe(FXDragonPriestLargeExplosion, 1)
|
|
|
|
selfRef.PlaySubGraphAnimation( "stage3" )
|
|
|
|
selfRef.unequipitem(DragonPriestArmor01)
|
|
|
|
DragonPriestEyeGlowFX.Stop(selfRef)
|
|
|
|
;place ash pile
|
|
|
|
utility.wait(1.0)
|
|
|
|
selfRef.AttachAshPile(AshPileObject)
|
|
|
|
utility.wait(2.0)
|
|
|
|
FXfallingSandDragonPriestEffect.Stop(selfRef)
|
|
|
|
|
|
|
|
ENDEVENT
|
|
|
|
|
2023-12-06 15:31:10 +00:00
|
|
|
;-----------------------------------------------------------------
|
|
|
|
; Added by USSEP 4.1.5 for Bug #13749
|
|
|
|
;-----------------------------------------------------------------
|
|
|
|
|
|
|
|
Event OnAnimationEvent (ObjectReference akSource, string asEventName)
|
|
|
|
;do nothing
|
|
|
|
EndEvent
|
|
|
|
|
|
|
|
function USSEP_RegisterForAnimationEvents (actor actorRef)
|
|
|
|
if actorRef
|
|
|
|
RegisterForAnimationEvent (actorRef, "stage2")
|
|
|
|
RegisterForAnimationEvent (actorRef, "stage3")
|
|
|
|
endif
|
|
|
|
endFunction
|