0 of 0

File information

Last updated

Original upload

Created by

SeaSparrow

Uploaded by

Shekhinaga

Virus scan

Safe to use

Tags for this mod

About this mod

SKSE framework for the manipulation of perk descriptions, positions, and even adding new perks in trees without conflicts.

Requirements
Permissions and credits
Changelogs
Perk Adjuster is a framework for changing the description of perks, and even adding them on perk trees based on config files. Think of Heavy Armory tweaks for Ordinator - In order to change the description of the perk, you have to edit the perk itself.
This creates version incompatibilities, and makes it automatically incompatible with patches that might also need to edit the perks for functionality. This is where the renaming part of the framework comes in. By editing JUST the description, every headache is removed, both for the author and the user.

The other part of the framework is more of a "proof of concept" mod that allows you to place new perks on existing trees. Fewer use cases for that, though, but think of Pilgrim - A Religion Overhaul. It adds 2 new perks to conjuration and restoration, and perk overhauls not named "Adamant" need a patch. In theory, this framework addresses that issue.



Requirements and runtimes:
1. Skyrim SE version 1.6.1130+
2.
Skyrim Script Extender
3.
Address Library for SKSE Plugins

A note on the Address Library:
This mod needs the
All in one Address Library (Anniversary Edition) version, regardless of whether or not you have purchased the AE DLC.

A note on runtime:
As stated above, this requires Skyrim SE version 1.6.1130+, sometimes called Skyrim AE. Please do not ask me to support older versions, I
don't want to have multiple Skyrim installations. The mod is licensed under MIT, meaning that you are more than free to port it.


Getting Started
Spoiler:  
Show

{
    "descriptions": [
      {
        "plugins": [                             //Plugins that MUST be enabled in the load order for the
                                                 //changes to occur.
          "Plugin1.esm"                          //Plugin name, array of strings.
        ],
        "changes": [                             //The actual changes. Array of objects.
          {
            "perk": "0xFormID|PluginSource.esp", //Target perk. usual format is "0x123|coolmod.esp", but
                                                 //can be just "PerkEditorID" if powerofthree's tweaks are on.

            "newDescription": "..."              //New description, string.
          }
        ]
      }
    ],
    "additions": [                              //Additions adds a perk to a specified tree. Array of objects.
      {
        "perk": "0xFormID|PluginSource.esp",    //Perk to add. See changes perk for specifications.
        "skill": "0xFormID|PluginSource.esp",   //Skill to add to, see perk for format.
        "x": 1.0,                               //X position of the perk. Float.
        "y": 0.5,                               //Y position of the perk. Float.
        "parents": [                            //Perk parents. Connecting lines are drawn from parents to
                                                //children.
          "0xFormID|PluginSource.esp"
        ],
        "children": [                           //Perk children, same as parents.
          "0xFormID|PluginSource.esp"
        ]
      }
    ]
}


Papyrus:
As of 2.1.0, the plugin comes with 3 new functions for manipulating perk trees via Papyrus. The three new functions are as follows:
Spoiler:  
Show

Int[] Function GetVersion()

Bool Function AddPerkToTree(Perk a_kPerk, ActorValueInfo a_kAV, Float a_x, Float a_y,\
                            Perk[] a_parents = NONE, Perk[] a_children = NONE)

Bool Function RemoveFromPerkTree(Perk a_kPerk, ActorValueInfo a_kAV)

GetVersion returns an array of integers that allows you to verify what version of the plugin is installed. For example, as of version 2.1.0, it returns [2, 1, 0].

AddPerkToTree is the function that adds perks to the perk tree. It returns true if it successfully adds, false otherwise. The arguments it takes are as such:
a_kPerk: The perk to add
a_kAV:    The ActorValueInfo to add the perk to. To access it, use the SKSE function ActorValueInfo.GetActorValueInfoByName("Alchemy")
a_x:         The x position to place the perk in.
a_y:         The y position to place the perk in.
a_parents: An array of perks that the perk will be connected to.
a_children: An array of perks that will connect to the perk.

RemoveFromPerkTree is the function used for removing perks from trees. It returns true if it manages to remove the perk, false otherwise. Note that only perks added by AddPerkToTree are remove-able with this function. This is a design decision to prevent headaches.
a_kPerk: The perk to remove.
a_kAV:    The ActorValueInfo to remove the perk from. See AddPerkToTree for how to access it.

Source Code:
Github

Acknowledgements:

NoahBoddie - Offset for perk description.
Every gigabrain that worked on Commonlib.