enderalse/scripts/source/_00e_a2_danceofbladessc.psc

103 lines
3.4 KiB
Plaintext

Scriptname _00E_A2_DanceOfBladesSC extends activemagiceffect
Import debug
import _00E_TalentLibrary
;=====================================================================================
; EVENTS
;=====================================================================================
Event OnEffectStart(Actor akTarget, Actor akCaster)
Victim = akTarget
EndEvent
Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked)
If PlayerREF.HasMagicEffectWithKeyword(MagicDanceOfBlades) && !Victim.IsDead()
If ((akAggressor == PlayerREF) && !abHitBlocked)
If iCounter < 4
_00E_A2_DanceOfBladesHit01M.Play(PlayerREF)
iCounter = (_00E_A2_DanceOfBladesGlobal.GetValueInt() + 1)
_00E_A2_DanceOfBladesGlobal.SetValueInt(iCounter)
ElseIf iCounter == 4
_00E_A2_DanceOfBladesGlobal.SetValue(0)
iCounter = 0
DealALotOfDamage()
PlayerREF.DispelSpell(_00E_A2_DanceOfBladesSP)
Victim.RemoveSpell(_00E_A2_DanceOfBladesMonitorAb)
EndIf
EndIf
Else
Victim.DispelSpell(_00E_A2_DanceOfBladesMonitorAb)
EndIf
EndEvent
;Fix for http://sureai.net:9898/browse/ERB-252
Event OnEffectFinish(Actor akTarget, Actor akCaster)
Victim = akTarget
PlayerREF.DispelSpell(_00E_A2_DanceOfBladesSP)
Victim.RemoveSpell(_00E_A2_DanceOfBladesMonitorAb)
EndEvent
;=====================================================================================
; FUNCTIONS
;=====================================================================================
Function DealALotOfDamage()
int iDanceIndex = GetPlayerTalentLevel(_00E_Class_Derwish_P09b_Talent_DanceOfBlades, _00E_Class_Derwish_P09b_Talent_DanceOfBlades2, _00E_Class_Derwish_P09b_Talent_DanceOfBlades3)
float iDamage = _00E_A2_DanceOfBladesSP.GetNthEffectMagnitude(iDanceIndex)
float iStaggerIntensity = _00E_A2_DanceOfBladesSP.GetNthEffectMagnitude(iDanceIndex + 3)
_00E_A2_DanceOfBladesCriticalHitSP.SetNthEffectMagnitude(0, iDamage)
_00E_A2_DanceOfBladesCriticalHitSP.SetNthEffectMagnitude(1, iStaggerIntensity)
_00E_A2_DanceOfBladesCriticalHitSP.RemoteCast(Victim, PlayerREF, Victim)
_00E_A2_DanceOfBladesImpactM.Play(PlayerREF)
If iDanceIndex == 3
PlayerREF.PushActorAway(Victim, 5.0)
EndIf
Game.ShakeCamera(afStrength = 0.2)
EndFunction
;=====================================================================================
; PROPERTIES
;=====================================================================================
int iCounter
Actor Victim
Actor Caster
Spell DamageSpell
GlobalVariable Property _00E_A2_DanceOfBladesGlobal Auto
Perk Property _00E_Class_Derwish_P09b_Talent_DanceOfBlades Auto
Perk Property _00E_Class_Derwish_P09b_Talent_DanceOfBlades2 Auto
Perk Property _00E_Class_Derwish_P09b_Talent_DanceOfBlades3 Auto
Keyword Property MagicDanceOfBlades Auto
Sound Property _00E_A2_DanceOfBladesImpactM Auto
Sound Property _00E_A2_DanceOfBladesHit01M Auto
Sound Property _00E_A2_DanceOfBladesHit02M Auto
Sound Property _00E_A2_DanceOfBladesHit03M Auto
Sound Property _00E_A2_DanceOfBladesHit04M Auto
Actor Property PlayerREF Auto
Spell Property _00E_A2_DanceOfBladesSP Auto
Spell Property _00E_A2_DanceOfBladesCriticalHitSP Auto
Spell Property _00E_A2_DanceOfBladesMonitorAb Auto