Addition to OBody NG for Automated Preset Distribution for UBE and CBBE, distribution manager and many more functions for Skyrim Special Edition
A lightweight SKSE DLL that processes simple rules written in INI, similar to SPID but called PDA, to automatically manage the OBody_presetDistributionConfig.json file without direct intervention, avoiding human errors and reading time.
It allows applying predefined presets for NPCs, races, factions, and complete plugins. If you decide to apply a different preset in-game using the 'O' menu, this will take precedence over the INI modification, so there are no configuration issues. ๐
Automatically searches for installed presets presets*.xml to automatically divide them among CBBE, 3BA, UBE, HIMBO, BHUNP. Leaves incompatible presets with NPCs separated: HIMBO with males, UBE with UBE NPCs, and the rest with NPCs that actually belong to those types
Processes rules in a SPID-like format: Key = Element|PresetA,PresetB,...|Mode with a very high level of customization. Allows modifying OBody's master JSON without having to manually edit it, preset presets for NPCs or races, and keep the JSON well organized
Applies different modes: |, |-, |*, |Key and many more combinations. Divided into basic, medium, and advanced levels, including blacklists. Allows customization so presets, plugins, races, or other elements aren't managed by OBody by player choice
With the Smart_Cleaning system, once presets are managed in the JSON, a review of names and preset existence will be performed. This way there will be no problems with OBody's automatic randomization and all presets in the JSON will be the ones you actually have in your playthrough
Can apply presets to entire races, predefined sets, and prevent issues where UBE NPCs are skinny by default. Now they'll have bodies as they should be, and you'll be able to manage them without problems
You can manage factions, races, specific NPCs, complete plugins. The customization is in your decisions or in the modder's who provides you with their INI
Always checks and applies the preset, my preferred mode
Applies preset once, then deactivates, updates INI to |0
Skips rule, makes no changes, generally used by the mod itself
Searches and cleans specific preset from the rule in json
Cleans complete preset entry in particular and applies the rule preset
Various search modes to apply presets to json
Explanation how 1* and 1- elements are incorporated into all modes (advanced use)
Any unconsidered element is converted to 0
Important note: The mode that is in green (leaving space empty) is the one that will be used by default and is the one that fulfills the function of distributing the preset.
The modes that are in red color are for advanced use and can generate actions such as cleaning presets that you no longer want to use, or applying presets in the JSON only once. I created them for testing or for you to find a use for them, but they are not very used. I recommend just going for the empty space, that's enough.
Rule generator in a simple way. It only requires knowing the name of what you are going to apply the preset to (whether NPC, faction, plugin, or race) and knowing whether it will apply one or more presets to this element. Remember that if you choose more than one preset for an element, it will be chosen randomly from the ones you write, limiting the variability between the presets you specify.
If you don't know how to get the IDs or factions, you can use the codes I left on Nexus. They are used in SSEdit and generate a complete list with a lot of information about each NPC. With those, you can do whatever you like, such as SPIDs or these PDAs.
For more information about the OBody master JSON and its internal structure, check the official OBody NG JSON Configuration Guide. It is recommended to read only if you want to delve deeper into OBody configurations. If you just want to create rules and not complicate your life too much, it is not necessary to read the guide; the mod already does everything a user might need.
Drag and drop your "OBody_NG_Preset_Distribution_Assistant-NG_List-Helper.log" file here to extract all preset names and organize them by category.
Drag & Drop your log file here
Only accepts: OBody_NG_Preset_Distribution_Assistant-NG_List-Helper.log
Applies presets based on the specific NPC FormID (e.g.: xx0001). Not recommended much as IDs usually change with updates.
Applies presets by NPC EditorID (e.g.: Serana, Lydia, Aela). The one I use the most, as it's difficult for an EditorID to change.
Applies presets to NPCs of a specific faction by gender. Useful when an NPC joins a faction, the body changes accordingly.
Applies presets to NPCs from a specific element (.esp) by gender. Recommended for giving presets to an entire mod and its NPCs from the plugin.
Applies presets to NPCs of a specific race by gender. I use it a lot, it's easy to adjust for all of Skyrim.
This rule serves to apply presets, plugins, NPCs, races, clothing sets to the blacklist and prevent incorrect auto-applications by OBody.
Required for the plugin to function
The base mod to be configured
Library required for modern SKSE plugins
Get the latest version of the SKSE OBody NG PDA plugin from Nexus
Install in your mod list, whether MO2 or Vortex
If it's ready, you can create your INI files or install mods that require PDA as a requirement
The structure is simple: you only need to place files with the OBodyNG_PDA_*.ini pattern in a zip or rar and publish it as a mod, then install it in your mod list. The plugin will detect them automatically and distribute the preset rules without additional configuration.
Creation of INI files with distribution rules
The SKSE plugin reads and processes the rules automatically
Safe modification of the OBody JSON file
The presets are applied in the game automatically
The system reads INI files with distribution rules, processes them through the SKSE plugin, updates the OBody JSON files safely, and applies the changes preserving the integrity of existing data.
It is a visual representation of how the mod works and how actions are gradually implemented. This section is extensive and not necessary to understand the mod; if you are a normal user of the mod, the INI files will suffice. However, if you want to know more about how the project is improving, you can read these flowcharts. I tend to use them a lot in all my projects.
โจ Flowchart v1.6.0: This is the first public version. Although it has proven stable for beta testers, we plan to enhance the backup system in upcoming releases. The workflow is straightforward: it begins by reviewing the INI files, then checks for the JSON file, applies the necessary changes, verifies the structure, and performs a simple backup if this option is enabled in the configuration INI.
๐งฐ Flowchart v1.7.0: This new version was created to improve the backup system, featuring more elaborate logic, structure analysis, and automatic restoration. It was designed to handle exceptionally large templates, including master JSON files exceeding 7,000 lines. As one of the first versions to incorporate this level of logical review, the process is swift when everything runs smoothly. However, if any issues are detected, the system will automatically create and restore from backups to ensure data integrity.
โฉ Flowchart v1.7.5: This is the fifth revision of version 1.7. Although the previous version performed its function perfectly, we decided to further enhance the structure, simplify some messages to prevent confusion, and include a 3-step reading and structure analysis. Additionally, a more advanced method for modifying and incorporating rules has been implemented. The entire procedure, while seemingly extensive, executes in a fraction of a second, ensuring it is both fast and robust. This level of polish was achieved thanks to the valuable feedback from our beta testers.
๐ Flowchart v1.7.12: This is likely the final and most polished revision of the 1.7 branch, designed to be exceptionally fail-proof. Its logic is engineered to prevent all types of issues by first initializing and verifying the environment. The process continues by reading the INI rules, checking the integrity of the master JSON, and then performing a backup. It re-verifies if new rules need to be applied, leaving the master JSON untouched if no changes are necessary. This is followed by a 3-step structural review, a method that minimizes direct modifications to the JSON, preventing file corruption by only writing when explicitly required. The entire operation is extremely fast, executing in less than a second, and supports highly complex JSON files, even those exceeding 7,000 lines or 50 MBโa scale we don't anticipate being common. Following this release, development will focus on version 1.8, which will introduce rules for automatic blacklisting and is expected in a few months.
๐ Flowchart v2.2.5: Version 2.2.5 adds a Smart Cleaning system with 6 levels of intelligent preset matching (exact, decoded, normalized, filename, normalized map, variations) that automatically detects incorrect or missing preset names and corrects or removes them as appropriate, with protection lists for critical presets like "Zeroed Sliders". THIS IS COMPLETELY CONFIGURABLE IN THE MOD'S CONFIGURATION INI. It incorporates automatic UBE preset detection through XML file analysis that identifies conflicting groups (3BA/3BBB/CBBE) and automatically distributes 22 UBE races (11 base + 11 vampire), adding presets to blacklist and races based on whether they have "UBE" in the name or not, with an exclusion list for special presets. It generates three specialized logs: Doctor.log lists all XMLs found in the BodySlide folder, SmartCleaning.log shows extracted internal names and filename-to-internal mappings, and Helper.log includes random usage examples with user presets and complete list separated into NORMAL vs UBE categories. It adds granular configuration through 5 independent flags (presetsSmartCleaning, blacklistedPresetsSmartCleaningFromRandomDistribution, blacklistedPresetsSmartCleaningFromAll, outfitsForceReSmartCleaning, modeUBE) that control cleaning behavior by section. It implements automatic truncation of preset names at ; and , delimiters, replacement of generic "CustomPreset" with real filename, improved multi-language support with triple fallback UTF-8โCP_ACPโASCII safe, and deep XML information extraction with HTML entity decoding {which for some reasons presets use and took me a long time to realize, hahaha.
๐ฅ Flowchart v2.4.1: This version introduces comprehensive HIMBO support alongside UBE, bringing the total to 44 UBE races (22 UBE + 22 HIMBO), intelligent conflict resolution system that automatically detects and resolves rule conflicts based on file modification timestamps, 43 different rule modes including KeyWord, KeyWordChart, KeyAuthor with filter, exclusive, and removal variants, INI Analysis Log generation that provides detailed statistics of all INI files, multi-preset extraction from single XML files, and enhanced smart cleaning with independent flags for each JSON section.
๐ Flowchart v2.4.9 and v2.5.1: This version introduces 5-log generation system with new INI Analysis Log for detailed file statistics, dynamic INI auto-update that decrements ONCE mode counters in real-time, Master Preset Map for centralized preset validation, enhanced automatic conflict resolution that modifies older INI files by setting conflicts to 0, comprehensive HIMBO support alongside UBE with 44 body races (22 UBE + 22 HIMBO), 43 rule modes including KeyWord variants with filter and exclusive options, outfit smart cleaning bypass system, multi-preset XML extraction, and independent cleaning flags per JSON section. Revision 2.5.1 is the same mod, I just cleaned up a lot of the loose code I left and some improvements in repetition and loops, minimal ones.
๐ต Flowchart v2.7.3: This version introduces MCM-ready activation system with Control INI monitoring via startAct1 boolean flag for external trigger support enabling dynamic reactivation cycles, HIMBO selective cleaning by INI pre-scan that detects male races with explicit INI rules (raceMale = NordRace|...) and performs targeted automatic HIMBO preset removal only from those detected races while preserving all 22 automatic HIMBO distributions intact for races without custom INI rules, and new PHASE 3.3 integration with PreScanMaleRacesInINI and CleanHIMBOFromSpecificMaleRaces functions executing between conflict resolution and rule application phases.
UTF-8 with ANSI fallbacks for international characters
An automatic backup of the JSON is performed before any modification, can be configured from an ini
Preserves existing data and order during updates
Detailed logs for debugging and monitoring
Supports SE, AE, GOG and VR editions
Maintains JSON structure and element order
Complete automatic backup before any modification:
Backup = true/false Backup = 1: Performs backup once, not recommendedBackup = 0: Disables backup, same as falseMultiple layers of validation to prevent errors:
Full support for international characters:
Optimization and security in resource handling:
Automatic identification of various preset mods and organization to prevent bugs:
Special thanks to our dedicated beta testers who helped make this project possible:
Beta review, observation of future applications
Beta review
JSON analysis and observation of corrections in ini parameters
Testing Unicode support, multiple betas reviewed
Mod betatester in complex mod list
Beta tester
Beta tester for COtR and multi-language analysis
Thanks to his observations on the HIMBO system, which led to improvements in it
Advisor on templates and free web addons
Advice/ideas for system modes and keys
Beta tester for the GOG platform, communicated through Nexus.
Beta review: UBE users who with their help I managed to better understand the world of this type of bodies. Thanks to their observations and ideas I implemented the automation system for UBE presets in the blacklist, and default application to UBE races. With this, NPCs with UBE will no longer appear skinny by default, but will be able to have UBE presets for them from the start. Thank you very much.
Thanks to your observation about the use of keys, the system has been modified and implemented with a more comprehensive preset search system based on the presets installed in the player's game. Thank you very much for the idea, which has been implemented in the latest version.
I thank you for testing the betas and giving me your respective observations across your different game versions and mod organizers. Thank you very much.
Thanks to his cooperation with HIMBO system testing, which led to significant improvements in the male body preset distribution logic.
Thanks to his cooperation with multiple beta tests, he provided information from his Skyrim version in Cyrillic, with which it was decided that different Skyrim versions handle different default names for each NPC depending on the language in which the game is played, so it was decided to correct these and add new functions. Thank you.
Fundamental framework for developing modern SKSE plugins.
For the continuous development and support of the Skyrim Script Extender.
For creating the base that makes this functionality possible.
For the constant feedback and ideas for improvements.
Thanks to the original authors of Skyrim for the music played directly from YouTube.
Thanks to Mermaid, Excalidraw and Graphics for being free and very useful tools for drawing and creating diagrams.
This is the progress of several projects I'm working on this year. I'll be uploading them as they are concluded, thanks to everyone who supports me with comments,
thanks for being so patient ๐ฟ
This project is open source MIT and available to the community. Contributions, bug reports, and suggestions are always welcome. Together we can make Skyrim a more welcoming and comfortable place.