83 lines
2.6 KiB
Plaintext
83 lines
2.6 KiB
Plaintext
Scriptname _00E_MAG_EldritchDamageConcSC extends activemagiceffect
|
|
|
|
Import Math
|
|
|
|
;=====================================================================================
|
|
; EVENTS
|
|
;=====================================================================================
|
|
|
|
Event OnEffectStart(Actor akTarget, Actor akCaster)
|
|
|
|
caster = akCaster
|
|
|
|
; Pre-calculate caster's damage because GetMagnitude() in DealSelfDMG fails if the ME finishes before reaching that code.
|
|
fCasterDamage = Self.GetMagnitude() / EldritchDamageDivider.GetValue()
|
|
|
|
EndEvent
|
|
|
|
Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked)
|
|
|
|
If (akProjectile == _00E_EldritchFlamesProjectile) || (akProjectile == _00E_MAGEldritchStormWaveProjectile)
|
|
If caster == PlayerRef
|
|
If _00E_EldritchDamageBlockerConc.GetValueInt() == 0 && bSelfDmgLocked == False
|
|
bSelfDmgLocked = True
|
|
_00E_EldritchDamageBlockerConc.SetValueInt(1)
|
|
DealSelfDMG()
|
|
_00E_EldritchDamageBlockerConc.SetValueInt(0)
|
|
bSelfDmgLocked = False
|
|
EndIf
|
|
ElseIf caster
|
|
If caster.IsInFaction(_00E_EldritchDamageFaction) == False && bSelfDmgLocked == False
|
|
bSelfDmgLocked = True
|
|
caster.SetFactionRank(_00E_EldritchDamageFaction, 0)
|
|
DealSelfDMG()
|
|
caster.RemoveFromFaction(_00E_EldritchDamageFaction)
|
|
bSelfDmgLocked = False
|
|
EndIf
|
|
EndIf
|
|
EndIf
|
|
|
|
EndEvent
|
|
|
|
|
|
;=====================================================================================
|
|
; FUNCTIONS
|
|
;=====================================================================================
|
|
|
|
Function DealSelfDMG()
|
|
|
|
ParalyzeFxShader.Play(caster)
|
|
|
|
If caster != PlayerRef
|
|
caster.DamageAV("Health", fCasterDamage * 0.5) ; Deal half of fCasterDamage to NPCs
|
|
Else
|
|
caster.DamageAV("Health", fCasterDamage)
|
|
EndIf
|
|
|
|
Utility.Wait(1)
|
|
|
|
ParalyzeFxShader.Stop(caster)
|
|
|
|
EndFunction
|
|
|
|
|
|
;=====================================================================================
|
|
; PROPERTIES
|
|
;=====================================================================================
|
|
|
|
Actor caster
|
|
Float fCasterDamage
|
|
Bool bSelfDmgLocked
|
|
|
|
Projectile Property _00E_EldritchFlamesProjectile Auto
|
|
Projectile Property _00E_MAGEldritchStormWaveProjectile Auto
|
|
|
|
GlobalVariable Property EldritchDamageDivider Auto
|
|
GlobalVariable Property _00E_EldritchDamageBlockerConc Auto
|
|
Faction Property _00E_EldritchDamageFaction Auto
|
|
|
|
EffectShader Property ParalyzeFxShader Auto
|
|
|
|
Actor Property PlayerRef Auto
|
|
|