enderalse/source/scripts/magicabsorbfxscript.psc

93 lines
2.8 KiB
Plaintext

ScriptName magicAbsorbFXScript extends ActiveMagicEffect
{Scripted effect for Playing Visual Effects that look like absorb connect beams.}
import debug
import game
;======================================================================================;
; PROPERTIES /
;=============/
ImageSpaceModifier property TrapImod auto
{IsMod applied with this effect}
;sound property TrapSoundFX auto ; create a sound property we'll point to in the editor
;{Sound played when we trap a soul}
VisualEffect property TargetVFX auto
{Visual Effect on Target aiming at Caster}
VisualEffect property CasterVFX auto
{Visual Effect on Caster aming at Target}
; EffectShader property CasterFXS auto
; {Effect Shader on Caster during Soul trap}
; EffectShader property TargetFXS auto
; {Effect Shader on Target during Soul trap}
Float Property fImodFadeDistance = 2048.0 auto
Float Property fEffectDurationMax = 40.0 auto
{Optional property for controling the time of these effects should they be on a zero duration hit effect Default = 40.0}
;======================================================================================;
; VARIABLES /
;=============/
Float fTDistance
bool bIsFinishing = False
;======================================================================================;
; EVENTS /
;=============/
Event OnEffectStart(Actor Target, Actor Caster)
if TrapImod
if Caster != GetPlayer()
;We want to base the Imod Strength roughly off the distance the Player is from the caster.
fTDistance = GetPlayer().GetDistance(Caster)
; ;debug.trace ("Target Distance is: "+ fTDistance)
fTDistance = (fImodFadeDistance - fTDistance)
if fTDistance <= 0
TrapImod.apply(0.25)
else
fTDistance = (fTDistance / fImodFadeDistance)
if fTDistance < 0.25
fTDistance = 0.25
endif
; ;debug.trace ("Imod Strength is: "+ fTDistance)
TrapImod.apply(fTDistance)
endif
else
TrapImod.apply() ; apply isMod at full strength
endif
endif
if bIsFinishing == False
if TargetVFX
TargetVFX.Play(Target,fEffectDurationMax,Caster) ; Play TargetVFX and aim them at the player
endif
if CasterVFX
CasterVFX.Play(Caster,fEffectDurationMax,Target)
endif
else
if TargetVFX
TargetVFX.Play(Target,2.0,Caster) ; Play TargetVFX and aim them at the player
endif
if CasterVFX
CasterVFX.Play(Caster,2.0,Target)
endif
endif
; TargetFXS.Play(Target,2) ; Play Effect Shaders
; CasterFXS.Play(Caster,3)
EndEvent
Event OnEffectFinish(Actor Target, Actor Caster)
bIsFinishing = True
if TargetVFX
TargetVFX.Stop(Target) ; Play TargetVFX and aim them at the player
endif
if CasterVFX
CasterVFX.Stop(Caster)
endif
endevent