My Attempt at a Respec Mod

Post » Tue Jun 19, 2012 6:49 am

I decided to try and create a respec potion mod without the SKSE yesterday and failed. I thought I'd share what I've learned and post the code I tried to use in the hopes that maybe it will be useful to someone else.

I quickly learned that you can't directly access perk points, I also learned that you can't directly de-level a player either. Both of these things screwed with my attempt at a workaround.

The following code is designed to:
  • Set all player skills to their default
  • Remove all player perks
  • Set all player stats to their default
  • Set the player's level to 1 (Can't be done as far as I can tell without using the in game console)
  • Re-level the skills back to what they were
At step 5 I assumed this would bump them back up to their original level however my tests gave different results. My level 35 Khajiit archer character when reset to level 1 with the console only leveled back up to 7 when using this script

Anyway I hope this will be of use to someone, here's the script: (Sorry about the indenting, in copying one level of indentation seems to have been lost)

Scriptname ResetPerks extends ActiveMagicEffectRace Property ArgonianRace  AutoRace Property BretonRace  AutoRace Property DarkElfRace  AutoRace Property HighElfRace  AutoRace Property ImperialRace  AutoRace Property KhajiitRace  AutoRace Property NordRace  AutoRace Property OrcRace  AutoRace Property RedguardRace  AutoRace Property WoodElfRace  AutoPerk Property AdeptLocks50 AutoPerk Property AdvancedArmors AutoPerk Property AgileDefender00 AutoPerk Property AgileDefender20 AutoPerk Property AgileDefender40 AutoPerk Property AgileDefender60 AutoPerk Property AgileDefender80 AutoPerk Property Alchemist00 AutoPerk Property Alchemist20 AutoPerk Property Alchemist40 AutoPerk Property Alchemist60 AutoPerk Property Alchemist80 AutoPerk Property Allure AutoPerk Property AlterationNovice00 AutoPerk Property AlterationApprentice25 AutoPerk Property AlterationAdept50 AutoPerk Property AlterationExpert75 AutoPerk Property AlterationMaster100 AutoPerk Property AlterationDualCasting AutoPerk Property Animage AutoPerk Property ApprenticeLocks25 AutoPerk Property ArcaneBlacksmith AutoPerk Property Armsman00 AutoPerk Property Armsman20 AutoPerk Property Armsman40 AutoPerk Property Armsman60 AutoPerk Property Armsman80 AutoPerk Property AspectOfTerror AutoPerk Property AssassinsBlade AutoPerk Property Atromancy AutoPerk Property atronach AutoPerk Property AugmentedFlames AutoPerk Property AugmentedFlames60 AutoPerk Property AugmentedFrost AutoPerk Property AugmentedFrost60 AutoPerk Property AugmentedShock AutoPerk Property AugmentedShock60 AutoPerk Property AvoidDeath AutoPerk Property Backstab AutoPerk Property Barbarian00 AutoPerk Property Barbarian20 AutoPerk Property Barbarian40 AutoPerk Property Barbarian60 AutoPerk Property Barbarian80 AutoPerk Property Benefactor AutoPerk Property Bladesman30 AutoPerk Property Bladesman60 AutoPerk Property Bladesman90 AutoPerk Property BlockRunner AutoPerk Property BoneBreaker30 AutoPerk Property BoneBreaker60 AutoPerk Property BoneBreaker90 AutoPerk Property Bribery AutoPerk Property Bullseye AutoPerk Property Catalyst AutoPerk Property ChampionsStance AutoPerk Property ConcentratedPoison AutoPerk Property Conditioning AutoPerk Property ConjurationNovice00 AutoPerk Property ConjurationApprentice25 AutoPerk Property ConjurationAdept50 AutoPerk Property ConjurationExpert75 AutoPerk Property ConjurationMaster100 AutoPerk Property ConjurationDualCasting AutoPerk Property CorpusEnchanter AutoPerk Property CriticalCharge AutoPerk Property CriticalShot30 AutoPerk Property CriticalShot60 AutoPerk Property CriticalShot90 AutoPerk Property Cushioned AutoPerk Property CustomFit AutoPerk Property Cutpurse AutoPerk Property DaedricSmithing AutoPerk Property DarkSouls AutoPerk Property DeadlyAim AutoPerk Property DeadlyBash AutoPerk Property DeepFreeze AutoPerk Property DeepWounds30 AutoPerk Property DeepWounds60 AutoPerk Property DeepWounds90 AutoPerk Property DeflectArrows AutoPerk Property DeftMovement AutoPerk Property DestructionNovice00 AutoPerk Property DestructionApprentice25 AutoPerk Property DestructionAdept50 AutoPerk Property DestructionExpert75 AutoPerk Property DestructionMaster100 AutoPerk Property DevastatingBlow AutoPerk Property DisarmingBash AutoPerk Property Disintegrate AutoPerk Property DragonArmor AutoPerk Property DualFlurry30 AutoPerk Property DualFlurry50 AutoPerk Property DualSavagery AutoPerk Property DwarvenSmithing AutoPerk Property EagleEye30 AutoPerk Property EbonySmithing AutoPerk Property ElementalPotency AutoPerk Property ElementalProtection AutoPerk Property ElvenSmithing AutoPerk Property Enchanter00 AutoPerk Property Enchanter20 AutoPerk Property Enchanter40 AutoPerk Property Enchanter60 AutoPerk Property Enchanter80 AutoPerk Property Experimenter50 AutoPerk Property Experimenter70 AutoPerk Property Experimenter90 AutoPerk Property ExpertLocks75 AutoPerk Property ExtraEffect AutoPerk Property ExtraPockets AutoPerk Property fence AutoPerk Property FightingStance AutoPerk Property FireEnchanter AutoPerk Property FireMastery AutoPerk Property FistsOfSteel AutoPerk Property FrostEnchanter AutoPerk Property FrostMastery AutoPerk Property GlassSmithing AutoPerk Property GoldenTouch AutoPerk Property GreatCriticalCharge AutoPerk Property GreenThumb AutoPerk Property HackAndSlash30 AutoPerk Property HackAndSlash60 AutoPerk Property HackAndSlash90 AutoPerk Property Haggling00 AutoPerk Property Haggling20 AutoPerk Property Haggling40 AutoPerk Property Haggling60 AutoPerk Property Haggling80 AutoPerk Property Headsman AutoPerk Property HuntersDiscipline AutoPerk Property HypnoticGaze AutoPerk Property IllusionNovice00 AutoPerk Property IllusionApprentice25 AutoPerk Property IllusionAdept50 AutoPerk Property IllusionExpert75 AutoPerk Property IllusionMaster100 AutoPerk Property IllusionDualCasting AutoPerk Property Impact AutoPerk Property ImprovedRemedy AutoPerk Property ImprovedVirulity AutoPerk Property InsightfulEnchanter AutoPerk Property IntenseFlames AutoPerk Property Intimidation AutoPerk Property Investor AutoPerk Property Juggernaut00 AutoPerk Property Juggernaut20 AutoPerk Property Juggernaut40 AutoPerk Property Juggernaut60 AutoPerk Property Juggernaut80 AutoPerk Property KeyMaster AutoPerk Property KindredMage AutoPerk Property LightFingers00 AutoPerk Property LightFingers20 AutoPerk Property LightFingers40 AutoPerk Property LightFingers60 AutoPerk Property LightFingers80 AutoPerk Property LightFoot AutoPerk Property LightTouch00 AutoPerk Property LightTouch20 AutoPerk Property LightTouch40 AutoPerk Property LightTouch60 AutoPerk Property LightTouch80 AutoPerk Property Limbsplitter30 AutoPerk Property Limbsplitter60 AutoPerk Property Limbsplitter90 AutoPerk Property Locksmith AutoPerk Property MageArmor30 AutoPerk Property MageArmor50 AutoPerk Property MageArmor70 AutoPerk Property MasterLocks100 AutoPerk Property MasterOfTheMind AutoPerk Property MasterTrader AutoPerk Property MatchingSet AutoPerk Property MatchingSetHeavy AutoPerk Property Merchant AutoPerk Property Misdirection AutoPerk Property MuffledMovement AutoPerk Property MysticBinding AutoPerk Property Necromage AutoPerk Property Necromancy AutoPerk Property NightThief AutoPerk Property NoviceLocks00 AutoPerk Property OblivionBinding AutoPerk Property OrcishSmithing AutoPerk Property Overdraw00 AutoPerk Property Overdraw20 AutoPerk Property Overdraw40 AutoPerk Property Overdraw60 AutoPerk Property Overdraw80 AutoPerk Property ParalyzingStrike AutoPerk Property PerfectTouch AutoPerk Property Persuasion AutoPerk Property Physician AutoPerk Property Poisoned AutoPerk Property Poisoner AutoPerk Property PowerBashPerk AutoPerk Property PowerShot AutoPerk Property Purity AutoPerk Property QuickHands AutoPerk Property QuickReflexes AutoPerk Property QuickShot AutoPerk Property QuietCasting AutoPerk Property Rage AutoPerk Property RangeOfMovement AutoPerk Property Ranger AutoPerk Property Recovery30 AutoPerk Property Recovery50 AutoPerk Property ReflectBlows AutoPerk Property Regeneration AutoPerk Property Respite AutoPerk Property RestorationNovice00 AutoPerk Property RestorationApprentice25 AutoPerk Property RestorationAdept50 AutoPerk Property RestorationExpert75 AutoPerk Property RestorationMaster100 AutoPerk Property RestorationDualCasting AutoPerk Property RuneMaster AutoPerk Property SavageBlows AutoPerk Property SavageStrike AutoPerk Property ShadowWarrior AutoPerk Property ShieldCharge AutoPerk Property ShieldWall00 AutoPerk Property ShieldWall20 AutoPerk Property ShieldWall40 AutoPerk Property ShieldWall60 AutoPerk Property ShieldWall80 AutoPerk Property Silence AutoPerk Property SilentRoll AutoPerk Property SilverTongue AutoPerk Property Skullcrusher30 AutoPerk Property Skullcrusher60 AutoPerk Property Skullcrusher90 AutoPerk Property Snakeblood AutoPerk Property SoulSiphon AutoPerk Property SoulSqueezer AutoPerk Property SoulStealer AutoPerk Property Stability AutoPerk Property SteadyHand40 AutoPerk Property SteadyHand60 AutoPerk Property Stealth00 AutoPerk Property Stealth20 AutoPerk Property Stealth40 AutoPerk Property Stealth60 AutoPerk Property Stealth80 AutoPerk Property SteelSmithing AutoPerk Property StormEnchanter AutoPerk Property StormMastery AutoPerk Property Summoner30 AutoPerk Property Summoner70 AutoPerk Property Sweep AutoPerk Property TowerOfStrength AutoPerk Property TreasureHunter AutoPerk Property TrickShot AutoPerk Property TwinSouls AutoPerk Property Unbreakable AutoPerk Property Unhindered AutoPerk Property Warmaster AutoPerk Property WaxKey AutoPerk Property WellFitted AutoPerk Property WindWalker Auto; This should only work on the player; Removes all perks, does not refund pointsFunction ResetPerks(Actor akTarget)akTarget.RemovePerk(AdeptLocks50)akTarget.RemovePerk(AdvancedArmors)akTarget.RemovePerk(AgileDefender00)akTarget.RemovePerk(AgileDefender20)akTarget.RemovePerk(AgileDefender40)akTarget.RemovePerk(AgileDefender60)akTarget.RemovePerk(AgileDefender80)akTarget.RemovePerk(Alchemist00)akTarget.RemovePerk(Alchemist20)akTarget.RemovePerk(Alchemist40)akTarget.RemovePerk(Alchemist60)akTarget.RemovePerk(Alchemist80)akTarget.RemovePerk(Allure)akTarget.RemovePerk(AlterationNovice00)akTarget.RemovePerk(AlterationApprentice25)akTarget.RemovePerk(AlterationAdept50)akTarget.RemovePerk(AlterationExpert75)akTarget.RemovePerk(AlterationMaster100)akTarget.RemovePerk(AlterationDualCasting)akTarget.RemovePerk(Animage)akTarget.RemovePerk(ApprenticeLocks25)akTarget.RemovePerk(ArcaneBlacksmith)akTarget.RemovePerk(Armsman00)akTarget.RemovePerk(Armsman20)akTarget.RemovePerk(Armsman40)akTarget.RemovePerk(Armsman60)akTarget.RemovePerk(Armsman80)akTarget.RemovePerk(AspectOfTerror)akTarget.RemovePerk(AssassinsBlade)akTarget.RemovePerk(Atromancy)akTarget.RemovePerk(atronach)akTarget.RemovePerk(AugmentedFlames)akTarget.RemovePerk(AugmentedFlames60)akTarget.RemovePerk(AugmentedFrost)akTarget.RemovePerk(AugmentedFrost60)akTarget.RemovePerk(AugmentedShock)akTarget.RemovePerk(AugmentedShock60)akTarget.RemovePerk(AvoidDeath)akTarget.RemovePerk(Backstab)akTarget.RemovePerk(Barbarian00)akTarget.RemovePerk(Barbarian20)akTarget.RemovePerk(Barbarian40)akTarget.RemovePerk(Barbarian60)akTarget.RemovePerk(Barbarian80)akTarget.RemovePerk(Benefactor)akTarget.RemovePerk(Bladesman30)akTarget.RemovePerk(Bladesman60)akTarget.RemovePerk(Bladesman90)akTarget.RemovePerk(BlockRunner)akTarget.RemovePerk(BoneBreaker30)akTarget.RemovePerk(BoneBreaker60)akTarget.RemovePerk(BoneBreaker90)akTarget.RemovePerk(Bribery)akTarget.RemovePerk(Bullseye)akTarget.RemovePerk(Catalyst)akTarget.RemovePerk(ChampionsStance)akTarget.RemovePerk(ConcentratedPoison)akTarget.RemovePerk(Conditioning)akTarget.RemovePerk(ConjurationNovice00)akTarget.RemovePerk(ConjurationApprentice25)akTarget.RemovePerk(ConjurationAdept50)akTarget.RemovePerk(ConjurationExpert75)akTarget.RemovePerk(ConjurationMaster100)akTarget.RemovePerk(ConjurationDualCasting)akTarget.RemovePerk(CorpusEnchanter)akTarget.RemovePerk(CriticalCharge)akTarget.RemovePerk(CriticalShot30)akTarget.RemovePerk(CriticalShot60)akTarget.RemovePerk(CriticalShot90)akTarget.RemovePerk(Cushioned)akTarget.RemovePerk(CustomFit)akTarget.RemovePerk(Cutpurse)akTarget.RemovePerk(DaedricSmithing)akTarget.RemovePerk(DarkSouls)akTarget.RemovePerk(DeadlyAim)akTarget.RemovePerk(DeadlyBash)akTarget.RemovePerk(DeepFreeze)akTarget.RemovePerk(DeepWounds30)akTarget.RemovePerk(DeepWounds60)akTarget.RemovePerk(DeepWounds90)akTarget.RemovePerk(DeflectArrows)akTarget.RemovePerk(DeftMovement)akTarget.RemovePerk(DestructionNovice00)akTarget.RemovePerk(DestructionApprentice25)akTarget.RemovePerk(DestructionAdept50)akTarget.RemovePerk(DestructionExpert75)akTarget.RemovePerk(DestructionMaster100)akTarget.RemovePerk(DevastatingBlow)akTarget.RemovePerk(DisarmingBash)akTarget.RemovePerk(Disintegrate)akTarget.RemovePerk(DragonArmor)akTarget.RemovePerk(DualFlurry30)akTarget.RemovePerk(DualFlurry50)akTarget.RemovePerk(DualSavagery)akTarget.RemovePerk(DwarvenSmithing)akTarget.RemovePerk(EagleEye30)akTarget.RemovePerk(EbonySmithing)akTarget.RemovePerk(ElementalPotency)akTarget.RemovePerk(ElementalProtection)akTarget.RemovePerk(ElvenSmithing)akTarget.RemovePerk(Enchanter00)akTarget.RemovePerk(Enchanter20)akTarget.RemovePerk(Enchanter40)akTarget.RemovePerk(Enchanter60)akTarget.RemovePerk(Enchanter80)akTarget.RemovePerk(Experimenter50)akTarget.RemovePerk(Experimenter70)akTarget.RemovePerk(Experimenter90)akTarget.RemovePerk(ExpertLocks75)akTarget.RemovePerk(ExtraEffect)akTarget.RemovePerk(ExtraPockets)akTarget.RemovePerk(fence)akTarget.RemovePerk(FightingStance)akTarget.RemovePerk(FireEnchanter)akTarget.RemovePerk(FireMastery)akTarget.RemovePerk(FistsOfSteel)akTarget.RemovePerk(FrostEnchanter)akTarget.RemovePerk(FrostMastery)akTarget.RemovePerk(GlassSmithing)akTarget.RemovePerk(GoldenTouch)akTarget.RemovePerk(GreatCriticalCharge)akTarget.RemovePerk(GreenThumb)akTarget.RemovePerk(HackAndSlash30)akTarget.RemovePerk(HackAndSlash60)akTarget.RemovePerk(HackAndSlash90)akTarget.RemovePerk(Haggling00)akTarget.RemovePerk(Haggling20)akTarget.RemovePerk(Haggling40)akTarget.RemovePerk(Haggling60)akTarget.RemovePerk(Haggling80)akTarget.RemovePerk(Headsman)akTarget.RemovePerk(HuntersDiscipline)akTarget.RemovePerk(HypnoticGaze)akTarget.RemovePerk(IllusionNovice00)akTarget.RemovePerk(IllusionApprentice25)akTarget.RemovePerk(IllusionAdept50)akTarget.RemovePerk(IllusionExpert75)akTarget.RemovePerk(IllusionMaster100)akTarget.RemovePerk(IllusionDualCasting)akTarget.RemovePerk(Impact)akTarget.RemovePerk(ImprovedRemedy)akTarget.RemovePerk(ImprovedVirulity)akTarget.RemovePerk(InsightfulEnchanter)akTarget.RemovePerk(IntenseFlames)akTarget.RemovePerk(Intimidation)akTarget.RemovePerk(Investor)akTarget.RemovePerk(Juggernaut00)akTarget.RemovePerk(Juggernaut20)akTarget.RemovePerk(Juggernaut40)akTarget.RemovePerk(Juggernaut60)akTarget.RemovePerk(Juggernaut80)akTarget.RemovePerk(KeyMaster)akTarget.RemovePerk(KindredMage)akTarget.RemovePerk(LightFingers00)akTarget.RemovePerk(LightFingers20)akTarget.RemovePerk(LightFingers40)akTarget.RemovePerk(LightFingers60)akTarget.RemovePerk(LightFingers80)akTarget.RemovePerk(LightFoot)akTarget.RemovePerk(LightTouch00)akTarget.RemovePerk(LightTouch20)akTarget.RemovePerk(LightTouch40)akTarget.RemovePerk(LightTouch60)akTarget.RemovePerk(LightTouch80)akTarget.RemovePerk(Limbsplitter30)akTarget.RemovePerk(Limbsplitter60)akTarget.RemovePerk(Limbsplitter90)akTarget.RemovePerk(Locksmith)akTarget.RemovePerk(MageArmor30)akTarget.RemovePerk(MageArmor50)akTarget.RemovePerk(MageArmor70)akTarget.RemovePerk(MasterLocks100)akTarget.RemovePerk(MasterOfTheMind)akTarget.RemovePerk(MasterTrader)akTarget.RemovePerk(MatchingSet)akTarget.RemovePerk(MatchingSetHeavy)akTarget.RemovePerk(Merchant)akTarget.RemovePerk(Misdirection)akTarget.RemovePerk(MuffledMovement)akTarget.RemovePerk(MysticBinding)akTarget.RemovePerk(Necromage)akTarget.RemovePerk(Necromancy)akTarget.RemovePerk(NightThief)akTarget.RemovePerk(NoviceLocks00)akTarget.RemovePerk(OblivionBinding)akTarget.RemovePerk(OrcishSmithing)akTarget.RemovePerk(Overdraw00)akTarget.RemovePerk(Overdraw20)akTarget.RemovePerk(Overdraw40)akTarget.RemovePerk(Overdraw60)akTarget.RemovePerk(Overdraw80)akTarget.RemovePerk(ParalyzingStrike)akTarget.RemovePerk(PerfectTouch)akTarget.RemovePerk(Persuasion)akTarget.RemovePerk(Physician)akTarget.RemovePerk(Poisoned)akTarget.RemovePerk(Poisoner)akTarget.RemovePerk(PowerBashPerk)akTarget.RemovePerk(PowerShot)akTarget.RemovePerk(Purity)akTarget.RemovePerk(QuickHands)akTarget.RemovePerk(QuickReflexes)akTarget.RemovePerk(QuickShot)akTarget.RemovePerk(QuietCasting)akTarget.RemovePerk(Rage)akTarget.RemovePerk(RangeOfMovement)akTarget.RemovePerk(Ranger)akTarget.RemovePerk(Recovery30)akTarget.RemovePerk(Recovery50)akTarget.RemovePerk(ReflectBlows)akTarget.RemovePerk(Regeneration)akTarget.RemovePerk(Respite)akTarget.RemovePerk(RestorationNovice00)akTarget.RemovePerk(RestorationApprentice25)akTarget.RemovePerk(RestorationAdept50)akTarget.RemovePerk(RestorationExpert75)akTarget.RemovePerk(RestorationMaster100)akTarget.RemovePerk(RestorationDualCasting)akTarget.RemovePerk(RuneMaster)akTarget.RemovePerk(SavageBlows)akTarget.RemovePerk(SavageStrike)akTarget.RemovePerk(ShadowWarrior)akTarget.RemovePerk(ShieldCharge)akTarget.RemovePerk(ShieldWall00)akTarget.RemovePerk(ShieldWall20)akTarget.RemovePerk(ShieldWall40)akTarget.RemovePerk(ShieldWall60)akTarget.RemovePerk(ShieldWall80)akTarget.RemovePerk(Silence)akTarget.RemovePerk(SilentRoll)akTarget.RemovePerk(SilverTongue)akTarget.RemovePerk(Skullcrusher30)akTarget.RemovePerk(Skullcrusher60)akTarget.RemovePerk(Skullcrusher90)akTarget.RemovePerk(Snakeblood)akTarget.RemovePerk(SoulSiphon)akTarget.RemovePerk(SoulSqueezer)akTarget.RemovePerk(SoulStealer)akTarget.RemovePerk(Stability)akTarget.RemovePerk(SteadyHand40)akTarget.RemovePerk(SteadyHand60)akTarget.RemovePerk(Stealth00)akTarget.RemovePerk(Stealth20)akTarget.RemovePerk(Stealth40)akTarget.RemovePerk(Stealth60)akTarget.RemovePerk(Stealth80)akTarget.RemovePerk(SteelSmithing)akTarget.RemovePerk(StormEnchanter)akTarget.RemovePerk(StormMastery)akTarget.RemovePerk(Summoner30)akTarget.RemovePerk(Summoner70)akTarget.RemovePerk(Sweep)akTarget.RemovePerk(TowerOfStrength)akTarget.RemovePerk(TreasureHunter)akTarget.RemovePerk(TrickShot)akTarget.RemovePerk(TwinSouls)akTarget.RemovePerk(Unbreakable)akTarget.RemovePerk(Unhindered)akTarget.RemovePerk(Warmaster)akTarget.RemovePerk(WaxKey)akTarget.RemovePerk(WellFitted)akTarget.RemovePerk(WindWalker)EndFunctionbool Function ArrayContains(String[] haystack, String needle)int index = 0While (index < haystack.Length)  Debug.Trace("Checking " + haystack[index] + " against " + needle)  If haystack[index] == needle   Debug.Trace("True")   Return True  EndIf  Debug.Trace("False")  index = index + 1EndWhileReturn FalseEndFunction; This might be bugged for vampires, need to checkfloat Function GetDefaultSkillLevelByRace(String skill, Race r)Debug.Trace("For skill: " + skill + " and race: " + r)float default = 15.0String[] twentySkills = new String[5]String twentyFiveSkill; I hate you bethesda for your lack of hash maps; Set up the twentySkills and twentyFiveSkill variableIf r == ArgonianRace ; Doublechecked  twentySkills[0] = "LightArmor"  twentySkills[1] = "Sneak"  twentySkills[2] = "Pickpocket"  twentySkills[3] = "Restoration"  twentySkills[4] = "Alteration"  twentyFiveSkill = "Lockpicking"ElseIf r == BretonRace ; Doublechecked  twentySkills[0] = "Speechcraft"  twentySkills[1] = "Alchemy"  twentySkills[2] = "Illusion"  twentySkills[3] = "Restoration"  twentySkills[4] = "Alteration"  twentyFiveSkill = "Conjuration"ElseIf r == DarkElfRace ; Doublechecked  twentySkills[0] = "LightArmor"  twentySkills[1] = "Sneak"  twentySkills[2] = "Alchemy"  twentySkills[3] = "Illusion"  twentySkills[4] = "Alteration"  twentyFiveSkill = "Destruction"ElseIf r == HighElfRace ; Doublechecked  twentySkills[0] = "Conjuration"  twentySkills[1] = "Destruction"  twentySkills[2] = "Restoration"  twentySkills[3] = "Alteration"  twentySkills[4] = "Enchanting"  twentyFiveSkill = "Illusion"ElseIf r == ImperialRace ; Doublechecked  twentySkills[0] = "HeavyArmor"  twentySkills[1] = "Block"  twentySkills[2] = "OneHanded"  twentySkills[3] = "Destruction"  twentySkills[4] = "Enchanting"  twentyFiveSkill = "Restroation"ElseIf r == KhajiitRace ; Doublechecked  twentySkills[0] = "OneHanded"  twentySkills[1] = "Marksman"  twentySkills[2] = "Lockpicking"  twentySkills[3] = "Pickpocket"  twentySkills[4] = "Alchemy"  twentyFiveSkill = "Sneak"ElseIf r == NordRace ; Doublechecked  twentySkills[0] = "Smithing"  twentySkills[1] = "Block"  twentySkills[2] = "OneHanded"  twentySkills[3] = "LightArmor"  twentySkills[4] = "Speechcraft"  twentyFiveSkill = "TwoHanded"ElseIf r == OrcRace ; Doublechecked  twentySkills[0] = "Smithing"  twentySkills[1] = "Block"  twentySkills[2] = "OneHanded"  twentySkills[3] = "TwoHanded"  twentySkills[4] = "Enchanting"  twentyFiveSkill = "HeavyArmor"ElseIf r == RedguardRace ; Doublechecked  twentySkills[0] = "Smithing"  twentySkills[1] = "Block"  twentySkills[2] = "Marksman"  twentySkills[3] = "Destruction"  twentySkills[4] = "Alteration"  twentyFiveSkill = "OneHanded"ElseIf r == WoodElfRace ; Doublechecked  twentySkills[0] = "Alchemy"  twentySkills[1] = "LightArmor"  twentySkills[2] = "Lockpicking"  twentySkills[3] = "Pickpocket"  twentySkills[4] = "Sneak"  twentyFiveSkill = "Marksman"EndIf; Set the skill to a higher value if appropriateIf skill == twentyFiveSkill  Return 25.0ElseIf ArrayContains(twentySkills, skill)  Return 20.0Else  Return 15.0EndIfDebug.Trace("End GetDefaultSkillLevel")EndFunction; Sets a given skill to it's default value then re-levels itFunction RelevelSkill(Actor akTarget, String skill); First we need to work out the default value of the skill based on facefloat default = GetDefaultSkillLevelByRace(skill, akTarget.GetActorBase().GetRace())float current = akTarget.GetActorValue(skill)Debug.Trace("RELELVING " + skill + " [current: " + current + "], [default: " + default + "]")If default != current  ; Now we reset their skill to that default  akTarget.SetActorValue(skill, default)  ; Now level it back up to what they had, doing this for all skills should re-level the player to where they where  int target = ((current - default) as int)  int start = 1  While(start < target)   Game.AdvanceSkill(skill, 1)   start += 1  EndWhileEndIfEndFunction; Sets all stats to 100; If altmer also sets magicka to 150Function ResetStats(Actor akTarget)akTarget.SetActorValue("health", 100)akTarget.SetActorValue("stamina", 100)If akTarget.GetActorBase().GetRace() == HighElfRace  akTarget.SetActorValue("magicka", 150)Else  akTarget.SetActorValue("magicka", 100)EndIfEndFunctionEvent OnEffectFinish(Actor akTarget, Actor akCaster)Debug.MessageBox("Resetting actor: " + akTarget); Remove the players gear to prevent buffs from factoring into the respecakTarget.UnequipAll()String[] skills = new String[18]skills[0] = "OneHanded"skills[1] = "TwoHanded"skills[2] = "Marksman"skills[3] = "Block"skills[4] = "Smithing"skills[5] = "HeavyArmor"skills[6] = "LightArmor"skills[7] = "Pickpocket"skills[8] = "Lockpicking"skills[9] = "Sneak"skills[10] = "Alchemy"skills[11] = "Speechcraft"skills[12] = "Alteration"skills[13] = "Conjuration"skills[14] = "Destruction"skills[15] = "Illusion"skills[16] = "Restoration"skills[17] = "Enchanting"ResetStats(akTarget)ResetPerks(akTarget)int index = 0While( index < skills.Length)  RelevelSkill(akTarget, skills[index])  index += 1EndWhileEndEvent
User avatar
Facebook me
 
Posts: 3442
Joined: Wed Nov 08, 2006 8:05 am

Post » Tue Jun 19, 2012 3:45 pm

At step 5 I assumed this would bump them back up to their original level however my tests gave different results. My level 35 Khajiit archer character when reset to level 1 with the console only leveled back up to 7 when using this script
I think that is because you can't wipe out all the old XP that was earned. The fXPLevelBase and fXPLevelMult were continuing to compound the total XP needed to make the next level without being reset. I've been trying to hack leveling for weeks.
Bugthesda indeed.
User avatar
Lady Shocka
 
Posts: 3452
Joined: Mon Aug 21, 2006 10:59 pm


Return to V - Skyrim