enderalse/source/scripts/_00e_fs_affinity_brutesc.psc

64 lines
2.3 KiB
Plaintext

Scriptname _00E_FS_Affinity_BruteSC extends activemagiceffect
Int Property MaxDamageBoosts = 5 Autoreadonly Hidden
{each kill will increase the damage boost until this count of kills is reached}
Float Property DamageBoostPercentagePerKill = 5 Autoreadonly Hidden
{the percentage of the base damage which each kill will add as a boost to the dealt damage}
_FS_TheriantrophistControlQuest Property controlQuest Auto
_00E_Theriantrophist_WolfAttributes Property wolfAttributes Auto
Spell Property _00E_FS_Affinity_AbBrute_AlreadyDeadSP Auto
MagicEffect Property _00E_FS_Affinity_AbBrute_AlreadyDead Auto
Sound Property _00E_FS_Affinity_Brute_Sound_DamageBoost1 Auto
Sound Property _00E_FS_Affinity_Brute_Sound_DamageBoost2 Auto
Sound Property _00E_FS_Affinity_Brute_Sound_DamageBoost3 Auto
Sound Property _00E_FS_Affinity_Brute_Sound_DamageBoost4 Auto
Sound Property _00E_FS_Affinity_Brute_Sound_DamageBoostReset Auto
int boostCount
Event OnEffectStart(Actor akTarget, Actor akCaster)
controlQuest.GetAffinityControl().RegisterForBruteAffinityEvents(self)
EndEvent
Event OnEffectFinish(Actor akTarget, Actor akCaster)
controlQuest.GetAffinityControl().UnRegisterForBruteAffinityEvents()
EndEvent
Function OnWolfCombatHit(Actor target)
if (!target.HasMagicEffect(_00E_FS_Affinity_AbBrute_AlreadyDead)) && target.isDead()
_00E_FS_Affinity_AbBrute_AlreadyDeadSP.Cast(target, target)
boostCount += 1
if (boostCount > MaxDamageBoosts)
boostCount = MaxDamageBoosts
EndIf
self._UpdateBoost()
EndIf
RegisterForSingleUpdate(7)
EndFunction
Function _UpdateBoost()
wolfAttributes.SetWolfTempWolfUnarmedDamageMod(wolfAttributes.GetWolfUnarmedDamage() * boostCount * DamageBoostPercentagePerKill / 100)
_PlaySound()
EndFunction
Event OnUpdate()
boostCount = 0
_UpdateBoost()
EndEvent
Function _PlaySound()
if (boostCount == 1)
_00E_FS_Affinity_Brute_Sound_DamageBoost1.Play(self.getTargetActor())
Elseif (boostCount == 2)
_00E_FS_Affinity_Brute_Sound_DamageBoost2.Play(self.getTargetActor())
Elseif (boostCount == 3)
_00E_FS_Affinity_Brute_Sound_DamageBoost3.Play(self.getTargetActor())
Elseif (boostCount == 4)
_00E_FS_Affinity_Brute_Sound_DamageBoost4.Play(self.getTargetActor())
Else
_00E_FS_Affinity_Brute_Sound_DamageBoostReset.Play(self.getTargetActor())
EndIf
EndFunction