Adding or removing the perks themselves is easily done by script. As others have said, it's
perk points that cannot be given or removed as yet.
As to the removal script, here's a snippent of what I wrote for my mod...
Properties and functions not shown - it's just something to get you thinking...
;Removal;;;;;;;;;;;;if GetStage() == 20debug.MessageBox("ASAP is removing perks it added. Do not perform any action that will increase any skill levels until removal is complete. Wait for the 'removal completed' message."); first while loop - sort through skills and initialize temporary arrays to equal skill arrays;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SkillNameElement = 0 While (SkillNameElement < SkillName.Length) SelectSkill(SkillNameElement) ; Check if perk was added and remove it ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; TempPerksElement = 0 While (TempPerksElement < TempPerks.Length) if (Game.GetPlayer().HasPerk(TempPerks[TempPerksElement])) && (TempPerksAdded[TempPerksElement].IsEnabled()) Game.GetPlayer().RemovePerk(TempPerks[TempPerksElement]) TempPerksAdded[TempPerksElement].Disable() endif TempPerksElement += 1 EndWhile SkillNameElement += 1 endWhile debug.MessageBox("ASAP removal has completed. Save your game. Exit Skyrim. Uninstall ASAP.esp and scripts.") SetStage(30) UnregisterForUpdate() ASAP.Stop()endIf
Admittedly it's crude, but it does the job. I used arrays instead of formlists, but I plan on re-thinking that...
edir: damn formatting....