Scriptname _00E_BoneSpiritControlScript extends Quest Event OnInit() RegisterForSingleUpdate(3.0) EndEvent Event OnUpdate() If bSetupDone == False Setup() EndIf EndEvent Function Setup() boneSpiritSpells = New Spell[12] boneSpiritMagnitudes = New Float[12] Actor PlayerRef = Game.GetPlayer() Form[] spells = _00E_FS_Entropy_BoneSpiritSpells.ToArray() Int Index = 0 Bool bPlayerHasBoneSpirits = False While Index < spells.Length boneSpiritSpells[Index] = spells[Index] as Spell boneSpiritMagnitudes[Index] = boneSpiritSpells[Index].GetNthEffectMagnitude(0) If bPlayerHasBoneSpirits == False && PlayerRef.HasSpell(boneSpiritSpells[Index]) bPlayerHasBoneSpirits = True EndIf Index += 1 EndWhile ; Mid-game version update If bPlayerHasBoneSpirits Index = 0 While Index < boneSpiritSpells.Length && boneSpiritSpells[Index] Spell spellBoneSpirit = boneSpiritSpells[Index] If spellBoneSpirit == _07E_FS_BoneSpirit boneSpiritMagnitudes[Index] = 11.0 ElseIf spellBoneSpirit == _17E_FS_BoneSpirit boneSpiritMagnitudes[Index] = 17.0 ElseIf spellBoneSpirit == _25E_FS_BoneSpirit boneSpiritMagnitudes[Index] = 22.0 ElseIf spellBoneSpirit == _40E_FS_BoneSpirit boneSpiritMagnitudes[Index] = 30.0 ElseIf spellBoneSpirit == _50E_FS_BoneSpirit boneSpiritMagnitudes[Index] = 38.0 EndIf Index += 1 EndWhile RestoreSpellMagnitudes() EndIf bSetupDone = True EndFunction Float Function GetOriginalSpellDamage(Spell spellBoneSpirit) If bSetupDone == False Setup() EndIf Int Index = 0 While Index < boneSpiritSpells.Length && boneSpiritSpells[Index] && boneSpiritSpells[Index] != spellBoneSpirit Index += 1 EndWhile If Index >= boneSpiritSpells.Length Debug.Trace(self + ", RegisterSpell: ERROR - out of free slots for spells") Return spellBoneSpirit.GetNthEffectMagnitude(0) EndIf If boneSpiritSpells[Index] == None boneSpiritSpells[Index] = spellBoneSpirit boneSpiritMagnitudes[Index] = spellBoneSpirit.GetNthEffectMagnitude(0) EndIf Return boneSpiritMagnitudes[Index] EndFunction Function RestoreSpellMagnitudes() Int Index = 0 While Index < boneSpiritSpells.Length && boneSpiritSpells[Index] boneSpiritSpells[Index].SetNthEffectMagnitude(0, boneSpiritMagnitudes[Index]) Index += 1 EndWhile EndFunction Spell[] boneSpiritSpells Float[] boneSpiritMagnitudes Bool bSetupDone Formlist Property _00E_FS_Entropy_BoneSpiritSpells Auto Spell Property _07E_FS_BoneSpirit Auto Spell Property _17E_FS_BoneSpirit Auto Spell Property _25E_FS_BoneSpirit Auto Spell Property _40E_FS_BoneSpirit Auto Spell Property _50E_FS_BoneSpirit Auto