Perks break if you make any changes to them after a save game. What it sounds like you want to do is use the companion for the alias reference, attach a script and have a condition that will trigger the adding and removal of perks, I personally use a detection event for when the player sleeps, but you could have it trigger when the companion is dismissed or hired. One way of doing it: https://www.creationkit.com/index.php?title=Dynamically_Attaching_Scripts Empty Quset Method(my prefered way of doing it): Create a new quest, make sure start game enabled and allow repeated stages is checked Click the Quest Stage tab, make sure Run on Start? is checked and make a new stage with index 0, make a new empty log entry, finally add this papyrus fragment kmyQuest.OnInit() In the Quest Stage tab make sure that complete/fail quest is not enabled In the Scripts tab create a new quest and paste the code below or make your own script. If you want to make sure its working paste Debug.Notification("Testing") after both 'MyActor.AddPerk(PerkC)' lines Example:
ScriptName FelixCombatMod:FelixQuest extends Quest
;-- Properties --------------------------------------
Perk Property PerkA Auto Const
Perk Property PerkB Auto Const
Perk Property PerkC Auto Const
;-- Variables ---------------------------------------
Actor Property MyActor Auto Const
;-- Functions ---------------------------------------
Event OnInit()
RegisterForPlayerSleep()
EndEvent
Event OnPlayerSleepStop(bool abInterrupted, ObjectReference akBed)
If (abInterrupted)
MyActor.RemovePerk(PerkA)
MyActor.RemovePerk(PerkB)
MyActor.RemovePerk(PerkC)
Utility.Wait(0.05)
MyActor.AddPerk(PerkA)
MyActor.AddPerk(PerkB)
MyActor.AddPerk(PerkC)
Else
MyActor.RemovePerk(PerkA)
MyActor.RemovePerk(PerkB)
MyActor.RemovePerk(PerkC)
Utility.Wait(0.05)
MyActor.AddPerk(PerkA)
MyActor.AddPerk(PerkB)
MyActor.AddPerk(PerkC)
EndIf
EndEvent