diff --git a/Enderal - Forgotten Stories.esm b/Enderal - Forgotten Stories.esm index 3f096cf7..f4c56317 100644 Binary files a/Enderal - Forgotten Stories.esm and b/Enderal - Forgotten Stories.esm differ diff --git a/scripts/_00E_AffinityControl.pex b/scripts/_00E_AffinityControl.pex new file mode 100644 index 00000000..0b662a03 Binary files /dev/null and b/scripts/_00E_AffinityControl.pex differ diff --git a/scripts/_00e_func_getpointsinclass.pex b/scripts/_00e_func_getpointsinclass.pex new file mode 100644 index 00000000..a970ffcd Binary files /dev/null and b/scripts/_00e_func_getpointsinclass.pex differ diff --git a/scripts/_00e_heromenualias.pex b/scripts/_00e_heromenualias.pex index ebc1460b..55570de1 100644 Binary files a/scripts/_00e_heromenualias.pex and b/scripts/_00e_heromenualias.pex differ diff --git a/scripts/_00e_questfunctions.pex b/scripts/_00e_questfunctions.pex index 2b755e27..ad777a33 100644 Binary files a/scripts/_00e_questfunctions.pex and b/scripts/_00e_questfunctions.pex differ diff --git a/source/scripts/_00e_game_skillmenusc.psc b/source/scripts/_00E_AffinityControl.psc similarity index 97% rename from source/scripts/_00e_game_skillmenusc.psc rename to source/scripts/_00E_AffinityControl.psc index 1f0064f0..78f208f0 100644 --- a/source/scripts/_00e_game_skillmenusc.psc +++ b/source/scripts/_00E_AffinityControl.psc @@ -1,4 +1,4 @@ -Scriptname _00E_Game_SkillmenuSC extends ReferenceAlias +Scriptname _00E_AffinityControl extends ReferenceAlias Hidden ; ; ATTENTION ; this script contains a new affinity system that requires FS. Therefore, many elements in this script are redundant, as @@ -138,32 +138,13 @@ Function UpdateMajorSchool() EndIf EndFunction -int Function GetPointsInClass(Formlist akClassPerkformlist) Global - - Actor PlREF = Game.GetForm(0x14) as Actor - Form[] perkForms = akClassPerkformlist.ToArray() - int PointsSpentInClass - - int iClassIndex = 0 - While iClassIndex < perkForms.Length - Perk iPerk = perkForms[iClassIndex] as Perk - If iPerk && PlREF.HasPerk(iPerk) - PointsSpentInClass += 1 - EndIf - iClassIndex += 1 - EndWhile - - Return PointsSpentInClass - -EndFunction - Int[] Function GetPerkDistribution() Int[] PerkDistribution = Utility.CreateIntArray(PerkTree_Trees.Length, 0) Int Index = 0 While Index < PerkTree_Trees.Length If PerkTree_Trees[Index] - PerkDistribution[Index] = GetPointsInClass(PerkTree_Trees[Index]) + PerkDistribution[Index] = _00E_Func_GetPointsInClass.Run(PerkTree_Trees[Index]) EndIf Index += 1 EndWhile diff --git a/source/scripts/_00e_func_getpointsinclass.psc b/source/scripts/_00e_func_getpointsinclass.psc new file mode 100644 index 00000000..eeba650c --- /dev/null +++ b/source/scripts/_00e_func_getpointsinclass.psc @@ -0,0 +1,20 @@ +Scriptname _00E_Func_GetPointsInClass Hidden + +int Function Run(Formlist akClassPerkformlist) Global + + Actor PlayerREF = Game.GetForm(0x14) as Actor + Form[] perkForms = akClassPerkformlist.ToArray() + int PointsSpentInClass + + int iClassIndex = 0 + While iClassIndex < perkForms.Length + Perk iPerk = perkForms[iClassIndex] as Perk + If iPerk && PlayerREF.HasPerk(iPerk) + PointsSpentInClass += 1 + EndIf + iClassIndex += 1 + EndWhile + + Return PointsSpentInClass + +EndFunction diff --git a/source/scripts/_00e_heromenualias.psc b/source/scripts/_00e_heromenualias.psc index 723b5755..0c5dc1a9 100644 --- a/source/scripts/_00e_heromenualias.psc +++ b/source/scripts/_00e_heromenualias.psc @@ -227,4 +227,4 @@ ActorValueInfo AiLockpicking ; Vanilla - Lockpicking ActorValueInfo AiSmithing ; Vanilla - Smithing ActorValueInfo AiSpeechcraft ; Vanilla - Speechcraft -_00E_Game_SkillmenuSC Property AffinityAlias Auto +_00E_AffinityControl Property AffinityAlias Auto diff --git a/source/scripts/_00e_questfunctions.psc b/source/scripts/_00e_questfunctions.psc index 5546e406..17ee1dd6 100644 --- a/source/scripts/_00e_questfunctions.psc +++ b/source/scripts/_00e_questfunctions.psc @@ -1041,7 +1041,7 @@ bool Function RequirementsMetMemoryBook(int iTier, Perk Perk01, Perk Perk02, Per ClassFormList03 = ManipulationPerks EndIf - int iTotalPointsInRequiredClass = (_00E_Game_SkillmenuSC.GetPointsInClass(ClassFormList01) + _00E_Game_SkillmenuSC.GetPointsInClass(ClassFormList02) + _00E_Game_SkillmenuSC.GetPointsInClass(ClassFormList03)) + int iTotalPointsInRequiredClass = (_00E_Func_GetPointsInClass.Run(ClassFormList01) + _00E_Func_GetPointsInClass.Run(ClassFormList02) + _00E_Func_GetPointsInClass.Run(ClassFormList03)) if iTotalPointsInRequiredClass >= iRequiredPoints Return True Else