64 lines
2.3 KiB
Plaintext
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
|