PRIOR KNOWLEDGE
I'm assuming as a skill system author, you are aware of what a perk record is and what perk requirements are. If you do not know this, please look at a base game perk in Creation Kit. Then compare a perk record in Creation Kit to a perk record in xEdit, and familiarize yourself with its format. This will help you when working in xEdit.
I'm also assuming as a skill system author, you know that LevelUpMenuEx uses two separate Formlists for Perks and Skills. You'll need to use these as well for setting up Skill Trees.
HOW IT WORKS
Basically, I stored data on extra perk records (an extra rank for each perk in Perk list) that can be used to manipulate what's going on in Level Up Menu. You'll see in later instructions.
RECORDS NEEDED
You will need to make two types of Perk records to facilitate Skill Trees.
FIRST:
A Skill Tree Separator (Perk record)
In a Skill Tree Separator perk, you must put the skill in the Perk Requirements. The requirement must be = -1
If the skill was Small Guns, this would be Small Guns = -1
Skill Tree Separators will need to appear in the Perks Formlist in the same order they are in the Skills Formlist (the separators don't have to be right next to each other though in Perk Formlist, just in same sequence).
IF: I have Skill Tree Separator Small Guns, and my next Skill Tree Separator is Energy Weapons in my Perks Formlist
THEN: All perks after the Small Guns separator and before Energy Weapons separator will be considered Small Guns perks for the skill tree.
If you don't properly set up the Skill Tree Separators in Perks formlist, the Level Up Menu will default to the perk list instead of skill tree. This is a safety check, and determines if you've messed something up at this stage.
SECOND:
Every perk you plan to put in the Perks formlist (and thus visible to player) EXCEPT for the Skill Tree Separators, will need to have an additional rank for them.
1. For example, Gunslinger in vanilla has 5 ranks. In order for it to appear properly for Skill Trees, we'll need to add a 6th rank. We'll call this DummySkillTree in its editorID, so we can find it much more easily. We'll need to do this for EVERY perk (except Skill Tree Separators).
2. You'll also need to set the NextPerk of Gunslinger rank 5 to the DummySkillTree, and the NextPerk of DummySkillTree to Gunslinger rank 1. This is very important, and also is conflict prone, so make sure users place your skill system late in load order.
3. You'll also need to set the Level of the DummySkillTree perk to something higher than the last rank of the true perk. I recommend just setting this to 99 as a safety check. Level is how the game determines order of ranked perks that use the NextPerk subrecord to make its ranks (the majority of vanilla perks like all 70 in base game tree, with a few exceptions for magazine perks).
4. In order to hide the last rank we just added (which shows up in Pipboy Menu), you need to make the description of DummySkillTree perk EXACTLY: $PRKF:DELETEME
ORMax rank already achieved. See previous ranks for more information.
You do this for each DummySkillTreePerk.
5. In each DummySkillTree perk record's perk requirements, you need to add any condition that has an exact 4 digit integer. Like 1000
, for example. This integer is a code that tells the perk where to go on the skill tree.
In the dummy plugin, I use the ActorValue Strength. It really doesn't matter what you use, as long as there is a 4 digit integer (no more and no less).
6. You'll know something is messed up because incorrect codes or missing codes will display the perk orphaned on the bottom of skill tree instead of where you want them.
7. IMPORTANT: The DummySkillTree still needs its SWF and Sound filepaths filled with what's in the normal record equivalent (i.e. Gunslinger DummySkillTree would need Gunslinger sound and SWF records filled.)
8. If you're using all vanilla perks in your skill system, I recommend copying the DummySkillTree records from the demo plugin as new records in your plugin via xEdit. It'll make your life easier. You'll still need to link the final ranks of vanilla perks to those new DummySkillTree perk records, however.
Let's talk about this code next:
DESCRIPTOR CODE:
Every DummySkillTree perk is going to have a perk requirement that has a 4 digit integer. This 4 digit integer (in combination with others) dictates where the perk goes on perk tree. Let's dive in.
1000
The first digit is the tree ID. This does not mean a separate perk tree, but think of it as its own branch to start from.
1000
The second digit is the tier ID. Tier refers to what row the perk is displayed. A tier of 0, is bottom row. If there are a total of 4 tiers (1000, 1100, 1200, 1300), the lower tiers appear on bottom of tree and higher tiers appear in higher rows.
1000
The third digit is the parent branch ID. The parent branch ID helps the perk node to identify what lower tier node it should connect to. If we had 1000 and 1100, 1100 would connect to 1000 because it has the same parent branch ID and tree ID, and it is 1 tier below it. Perk nodes only connect by a difference of one tier.
1000
The fourth digit is the branch index. This tells us what branch the perk node is on. If you had the codes 1000, 1100, 1101, and 1102:
1000 would branch off into three separate perk nodes (1100, 1101, and 1102). If you wanted to branch off of 1101, you would use 1210, 1211, etc.
If this is confusing to read, its because it is. Let's throw some visual examples in here so you can visualize the logic.

At the top, we've got some Strong Back, Quick Hands, and Chem Resistant that are in trees 2, 3 and 4, but they don't link to anything. That's because their parent branch ID is 9, which matches to no tier 3 perks (Intimidation, Wasteland Whisperer, or Attack Dog). Quick Hands is in same tree as Intimidation, Wasteland Whisperer, and Attack Dog, but since its parent branch ID is 9, and none of those perks have a branch index of 9, they don't link. That's why they are by themselves at the top.
At the bottom, Aqua Boy and Action Boy are by themselves, in separate trees. There are no other perks in the next tier that have the same tree ID, so they are orphaned by themslves.
Party Boy, is quite the party it seems. Inspirational and Animal Friend are tier 1 perks in tree 3, and since they have the same parent branch ID (0) as Party Boy (the tier below) they are linked.
Back to Intimidation, Wasteland Whisperer, and Attack Dog. Wasteland Whisperer and Intimidation have parent branch IDs of 0, so they link to Inspirational, the tier below, because Inspirational's branch index is 0, which matches.
Attack Dog has a parent branch ID of 1, which matches Animal's friend's branch index of 1, so they link (since they share tree ID and are one tier away from each other).
Obviously, the limitation of using a 4 digit code, is that you're limited to 9 trees per skill tree. But I think this offers enough flexibility since skill trees are per skill, and you're probably going to have at least 10 skills.
THINGS TO CONSIDER
Perks in next tier that have a branch, require the previous perk connected to them.
At this time, having multiple tier 1 perks go to a tier 2 perk is not supported in the code.
You can, however, have multiple multiple tier 2 perks come from one tier 1 perk.
NEXT UP
You should now take a look at the Demo plugin. You'll learn alot more by looking at how the records are set up now that you have the information here in your brain (hopefully).
I suggest using xEdit to copy the SkillTreeDummy perk records over from the demo plugin if you plan to use vanilla perks in your skill system's Perk formlist. Don't copy over the skill tree dividers, since those require your skills, and not the demo plugin's skills.
DEMO PLUGIIN REFERENCE
Crafting
- Blacksmith 1000
- Cap Collector 3100
- Chemist 2000
- Local Leader 1300
- Medic 2100
- Armorer 1200
- Gun Nut 1100
- Nuclear Physicicst 4200
- Robotics Expert 4100
- Science 4000
Weaponry
- Ninja 2200
- Steady Aim 4000
- Sniper 4100
- Rifleman 1100
- Iron Fist 2000
- Heavy Gunner 3200
- Demolition Expert 3100
- Gunslinger 1000
- Commando 1200
- Bloody Mess 5390
- Black Widow/lady killer 4390
- Big Leagues 2100
- Mister Sandman 2201
- Basher 2101
Defense
- Toughness 1000
- Rooted 1200
- Ricochet 3100
- Refractor 3000
- Rad Resistant 2100
- Pain Train 4200
- Moving Target 4100
- Sneak 4000
- Life Giver 1100
- Adamantium Skeleton 1300
- Nerd Rage 1301
- Lead Belly 2000
Support
- Action person 2000
- Animal friend 3101
- Aqua person 1000
- Attack dog 3210
- Chem resistant 4390
- Inspirational 3100
- Intimidation 3200
- Party person 3000
- Quick hands 3390
- Strong back 2390
- Wasteland whisperer 3201
VATS
- Penetrator 1101
- Blitz 2100
- Gun Fu 1102
- Awareness 1000
- Mysterious Stranger 2300
- Concentrated Fire 1100
- Better Criticals 3000
- Grim Reaper 2200
- Critical Banker 3100
- VANS 2000
- Four Leaf Clover 3200

As you can see here, we can actually just make another vanilla perk tree, if we really desired to. No perks HAVE to be linked to each other, its optional.
Misc
- Solar Powered 1220
- Ghoulish 2220
- Scrounger 1000
- Scrapper 2000
- Fortune Finder 3000
- Pickpocket 4000
- Night Person 3220
- Locksmith 1110
- Idiot Savant 4110
- Hacker 2110
- Cannibal 3110
- Lone Wanderer 4220
0 comments