Skip to content

MaskPlague/ESLifier

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ESLifier

ESLifier allows users to scan their Skyrim Special Edition directory for plugins that can either be flagged as ESL or compacted to fit ESL conditions. The user can then flag or compact the relevant plugins. If the user compacts a plugin, then ESLifier will also patch and rename all files that have that mod as a master (plugins and files that directly reference a Form ID present in the compacted plugin). The user can also scan for files and plugins that are added after compacting so that they can also be patched to fit the new Form IDs of the compacted master.

Nexus Mods ESLifier

Nexus Mods ESLifier MO2 Integration Plugin

For Users

Files that are patched by ESLifier

Files Patched
.INI Files
AutoBody
Base Object Swapper
Completionist
Description Framework
DtryKeyUtil
DynDOLOD Rules
ENB Lights for Effect Shaders
Experience
Form List Manipulator
Item Property Manipulator
Keyword Item Distributor
KreatE (with caveats)
Leveled List Object Swapper
Light Placer
Music Type Distributor
NPCs Use Potions
Payload Interpreter
Poise Breaker
Seasons of Skyrim
SkyPatcher
Spell Perk Item Distributor
TrueHUD
Valhalla Combat
Various States of Undress
.JSON Files
Achievement Injector
Alternate Perspective
CaptiveFollowers
CoMAP
Container Distribution Framework
Creature Framework
Custom Skills Framework (old format CustomSkill.<name>.config.txt supported)
Dress Up Lover's NPC Outfit Changer
dse-display-model
Dynamic Armor Variants
Dynamic Key Activation Framework NG
Dynamic String Distributor
Generic Synthesis Patcher (GSP)
Immersive Equipment Display
Immersive Hair Growth and Styling
Inte's Devious Devices - Equip
Inte's Skyrim - Utility Mod
Inventory Injector
Magic Fixes and Tweaks SKSE
MCM Helper
OBody NG
Open Animation Replacer
OStim Standalone
PapyrusUtil's StorageDataUtil
Player Equipment Manager
Race Compatibility SKSE
Rain Extinguished Fires
Skyrim Unbound
SL Config/Expressions/Animations
SL Scaler
Sleep In Lingerie
Smart Harvest Auto NG AutoLoot
Sound Record Distributor
Spell Organizer
Spell Research
Undaunted
XEMI Utility
.TOML Files
Actor Value Generator
Dynamic Animation Casting
Loki Poise
Precision
True Directional Movement
YATSM - Yet Another Soul Trap Manager
Other Types
  - .pex: Compiled script files
  - _conditions.txt: Dynamic Animation Replacer
  - _srd.: Sound Record Distributor
  - .jslot: Racemenu Presets
  - facegeom's .nif: Texture paths in face mesh files
  - voice, facetint, facegeom: The names of these files are patched
  - .seq: SEQ files

BSArch.exe

ESLifier includes a modified BSArch.exe (from TES5Edit) to extract pex, seq, facetint, facegeom, and voice files. The modified .dpr file is included in the repo here.

User Manual

Notes:

  • If you use MO2 do NOT add ESLifier.exe as an executable. Launching ESLifier through MO2 significantly slows down the file scanning process. Instead enable MO2 mode in the settings of ESLifier. Also, ESLifier can scan the Overwrite folder however, you will probably want to move everything in it to a mod instead, so that ESLifier's output can win any file conflicts and you won't keep the only copy of any configs generated in overwrite patched to ESLifier Output as your only copy.
  • There is now a MO2 plugin that will notify users of when a plugin is ESLify-able and can allow users to edit the plugin blacklist.
  • Almost every element in the program has a tooltip that is activated by hovering over it.
  • ESLifier may cause issues in existing save games as is the nature of compacting Form IDs.
  • Almost all the following info on CELL records can be ignore if you're on Skyrim 1.6.1170+ with SSE Engine Fixes v7+ installed as it fixes the ESL cell bugs.

On the first launch or when the paths are not set, you will be redirected to the settings page. Set all available paths to the required folders and files. You will not be able to exit the settings page until they are set. The settings available are by default in the recommended configuration that should ensure the fewest issues when compacting or ESL flagging. You may want to disable Show plugins with new CELL records if you think you may often install mods that will patch your existing mods with CELLs (the Patch New Page will warn you if you do install mods that do so later).

After setting the paths you can now move to the Main Page where you can hit the scan button. The first scan, or any scan after selecting Reset BSA in the settings, will extract compiled scripts and SEQ files from BSAs to a new folder called bsa_extracted. Leave this folder alone as ESLifier uses it as a source of files to compact if necessary. After the scanning process completes you will see the left and right lists populate. In the left list are all mods that can be ESL flagged without compacting. There are various flags that may show next to the plugin names which have tool tips describing what they mean. The right list are all mods that can be compacted to fit ESL conditions. These mods are heavily filtered by the settings page and are mostly safe to compact. They also have various flags. Check off each plugin that you wish to ESL flag or compact and ESL flag and then select the buttons below.

After that simply install the ESLifier Output as a mod to your mod manager. MO2 users can either drag and drop the folder into the MO2 UI or generate it directly in the mods folder. Vortex users can zip the folder and then install it or generate the output to the mods staging folder. Simply let the ESLifier Output win any file conflicts. Do not move the contents of ESLifer Ouput to the source mods as you risk doing permanent damage to your mod list that way.

More in Depth Page Descriptions:

The first page, Main, is where one can select plugins to patch or compact. Select the Scan Mod Files button and wait for the scan to complete. Then the left and right lists will populate. The plugins in the left list are ready to be ESL flagged with almost no worries. The plugins in the right list are one of the main features of ESLifier, these are able to be compacted via the program and all files and plugins that rely on the compacted plugins will have any form IDs in them patched to reflect the form ID changes. You can check off each plugin you want to flag/compact. You can right click for various functions including adding a mod to the blacklist. Pushing Space Bar with multiple mods highlighted will toggle their checkboxes. As of v0.9.0 there are three new buttons:

  • Scan and Rebuild ESLifier's Output which deletes the existing output folder contents, scans mod files, and re-flags and compacts any files that were previously flagged/compacted and fit the current filters in settings.

  • Reset ESLifier's Ouput which deletes the exising output folder contents and all data used to patch new files and plugins.

  • Delete extracted BSA files Rescan BSA on next Scan which deletes all extracted BSA files and makes ESLifier re-extract seq and scripts on the next mod file scan.

  • Scan and Patch New or Changed Files, is another main feature of ESLifier. It allows you to scan for any new files and plugins that rely on a compacted plugin and are not already patched, for MO2 users it will also detect file conflicts that have changed from the last run. This means you can install mods that rely on a compacted mod and not worry about the new mods not working properly as this will allow you to patch them in a single click. For example you can install a Spell Perk Item Distributor ini file for a previous form ID compacted armor mod, open ESLifier, patch the new ini file, and it will function normally in game. This button will also re-check if any compacted plugin is referenced in a dll and display a pop-up warning that the listed dll(s) may have a broken FormLookup() calls as they require hard-coded Form IDs from before a plugin was compacted.

The second page, Settings, mostly controls what is displayed in the Main page.

  • Allow Form IDs below 0x000800 + Update plugin headers to 1.71 affects the scanning, flagging, and compacting functions of ESLifier. It is on by default and requires Backported Extended ESL Support if your Skyrim version is below 1.6.1130+. For scanning, it will only find and display plugins in the ESLifyable and Compactable lists that fit in the 1.71 range unless disabled, then it will only show ones that fit in the older 1.70 range. For flagging, it will update the plugin header to 1.71 if enabled. For compacting, it will update the plugin header to 1.71 and compact the Form IDs to fit in the 1.71 range if enabled.
  • Show ESM Plugins will determine whether or not .esm and ESM flagged plugins are displayed in the Main page.
  • Show Plugins with new CELL records affects the scanning and display of both lists. It is on by default. If enabled, it will scan for and display mods that have new CELL records. If a new CELL record is defined in an ESL flagged plugin and then edited by another plugin then it can break the new CELL. This setting is used in combination with the setting Hide ESM plugins with new CELL records that are overwriten.
  • Show plugins with BSA files will show plugins that have .bsa files that may contain files that need patching. It is off by default. If enabled, it will display the BSA flag in Main's Compact list. Hovering over the flag of each plugin will display what kinds of files ESLifier detected may be present in the .bsa that need extracting so that the program can scan and patch them. This program does not extract .bsas automatically and will require the user to do it manually. Compacting a plugin with the BSA flag will likely lead to various issues if you have not extracted the relevant files.
  • Hide ESM plugins with new CELL records that are overwriten hides ESM plugins that have new CELLs that are also edited/overwitten by a dependent plugin that has it as a master. It is on by default. This should probably be left on as if the setting is disabled then you will see plugins that may have their new CELLs' temporary child references broken by ESL flagging them.
  • Hide plugins with new interior CELL records hides plugins that have new interior CELLs as they can have issues with not reloading properly on save load if the player doesn't restart the game. This is off by default. The user should decide if they think these kinds of plugins are safe to ESL.
  • Hide plugins with new WRLD (worldspace) records hides plugins that have a new WRLD record as they lose landscape data when ESL flagged (the ground will disappear in the new worldspace).
  • Show plugins that are in SKSE dlls will display plugins that have their name present in SKSE dlls. This is off by default and should probably be left off. If a plugin has its name in a dll then it is likely that its form IDs are hard-coded in a FormLookup() call which will fail if the form IDs are changed via compacting.
  • Generate Cell Master will create a new plugin called ESLifier_Cell_Master.esm which is used to define new cells and worldspaces in ESLifier ESL flagged/compacted plugins. This circumvents the ESL + ESM cell bug and the ESL worldspace bug. This is enabled by default as users may come across broken cells if they compact files without reading when this setting is disabled. It also disabled the Interior CEll Record setting and the WorldSpace setting.

Documentation

How to Build

Fork this project and install python 3.13 then install these libraries via pip: PyQt6, Regex, mmap, intervalTree, requests, and pyinstaller. Run "build_ESLifier_EXE.py" either via a terminal opened in the ESLifier directory or via your IDE.

About

A tool to find ESL flaggable mods, compact form IDs, and patch dependent plugins/files automatically.

Resources

License

Stars

Watchers

Forks

Packages

No packages published