OBody NG Preset Distribution Assistant NG

Addition to OBody NG for Automated Preset Distribution in the Json 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. ๐Ÿˆ

๐Ÿ”
Automatic INI Search
โšก
Fast Processing
๐Ÿ›ก๏ธ
Unicode Management Security
๐ŸŽฎ
SE, AE, GOG and VR Compatibility
๐Ÿ“œ
Simple Preset Management
๐Ÿ’ƒ
Apply predefined OBody Preset to NPC without touching JSON
๐Ÿ‘๏ธ
Automatic Blacklisted Application (Coming Soon)
๐Ÿ‘“
Automatic Preset Management List Analyzer (Coming Soon)

Main Features

๐Ÿ”

Intelligent Search

Automatically searches for files with pattern OBodyNG_PDA_*.ini in the data directory

โš™๏ธ

Rule Processing

Processes rules in a SPID-like format: Key = Element|PresetA,PresetB,...|Mode

๐ŸŽฏ

Advanced Modes

Applies different modes: x, 1, 0, -, x-, *, x*

๐Ÿ‘ฅ

NPC Distribution

Applies presets to female NPCs of a specific element

๐Ÿ’ƒ

Race Control

Applies presets to all female NPCs of a race

โš”๏ธ

Faction Management

Applies presets to female NPCs of a faction

Available Modes

x

Simple Application

Always checks and applies the preset, you can use x or leave the mode space empty

1

Once

Applies preset once, then deactivates, updates INI to |0

0

Disabled

Skips rule, makes no changes

-

Clean Preset

Clean specific preset once, updates INI to |0

x-

Clean Preset Plus

Clean preset in every execution

*

Clean Element

Clean complete element entry, updates INI to |0

x*

Clean Element Plus

Clean element in every execution

5,%&

Element Not Considered

Any unconsidered element is converted to 0

Important note: The mode that is in green (X or 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 X or the empty space, that's enough.

Interactive ini PDA NG Rule Generator

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. 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.

Rule Configuration

๐Ÿ“‹ Generated Rule

                    

INI Rules

๐Ÿ“„ OBodyNG_PDA_(MOD NAME).ini

Rule Description

npcFormID

Applies presets based on the specific NPC FormID (e.g.: xx0001). Not recommended much as IDs usually change with updates.

npc (recommended for NPC)

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.

factionFemale/factionMale

Applies presets to NPCs of a specific faction by gender. Useful when an NPC joins a faction, the body changes accordingly.

npcPluginFemale/npcPluginMale

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.

raceFemale/raceMale

Applies presets to NPCs of a specific race by gender. I use it a lot, it's easy to adjust for all of Skyrim.

Installation

Requirements

โš™๏ธ
SKSE - Skyrim Script Extender

Required for the plugin to function

๐Ÿ‘ค
OBody Next Generation

The base mod to be configured

๐Ÿ“š
Address Library for SKSE Plugins

Library required for modern SKSE plugins

Installation Steps

1

Download Mod Plugin

Get the latest version of the SKSE OBody NG PDA plugin from Nexus

2

Install Mod Plugin

Install in your mod list, whether Nexus or Vortex

3

Done

If it's ready, you can create your INI files or install mods that require PDA as a requirement

File Structure

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.

Mod Archive (ZIP/RAR) โ”œโ”€โ”€ OBodyNG_PDA_*.ini (e.g., OBodyNG_PDA_MyMod.ini) โ””โ”€โ”€ (Optional: other mod files)

System Architecture

๐Ÿ“

Rule Configuration

Creation of INI files with distribution rules

โ†’
โš™๏ธ

Rule Processing

The SKSE plugin reads and processes the rules automatically

โ†’
๐Ÿ”„

Presets Update

Safe modification of the OBody JSON file

โ†’
โœ…

Changes Application

The presets are applied in the game automatically

Data Flow

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.

Advanced Features

๐ŸŒ

Unicode Support

UTF-8 with ANSI fallbacks for international characters

๐Ÿ’พ

Automatic Backup

An automatic backup of the JSON is performed before any modification, can be configured from an ini

๐Ÿ”’

Data Preservation

Preserves existing data and order during updates

๐Ÿ“

Detailed Logging

Detailed logs for debugging and monitoring

๐ŸŽฎ

Universal Compatibility

Supports SE, AE, GOG and VR editions

๐Ÿ“Š

JSON Structure

Maintains JSON structure and element order

Security and Reliability

๐Ÿ›ก๏ธ

Backup System

Complete automatic backup before any modification:

  • Backup of the original JSON before changes
  • Automatically changes Backup = 1 to Backup = 0 after backup
  • File integrity verification
  • Automatic recovery in case of error
๐Ÿ”

Robust Validation

Multiple layers of validation to prevent errors:

  • Robust error handling in file processing
  • INI rule format validation
  • JSON structure verification
  • Early detection of corrupted files
๐ŸŒ

Unicode Compatibility

Full support for international characters:

  • Unicode-safe handling for all character types
  • UTF-8 encoding with ANSI fallbacks
  • Compatibility with non-ASCII paths
  • Prevention of crashes due to encoding
๐Ÿ’พ

Memory Management

Optimization and security in resource handling:

  • Safe memory management in all operations
  • Automatic resource release
  • Memory leak prevention
  • Safety limits in processing

Acknowledgments

Beta Testers

Special thanks to our dedicated beta testers who helped make this project possible:

Cryshy

Cryshy

Beta review, observation of future applications

IAleX

IAleX

Beta review

Lucas

Lucas

JSON analysis and observation of corrections in ini parameters

OpheliaMoonlight

OpheliaMoonlight

Testing Unicode support, multiple betas reviewed

storm12

storm12

Mod betatester in complex mod list

Thalzamar

Thalzamar

Beta tester

Edsley

Edsley

Advisor on templates and free web addons

Additional Credits

CommonLibSSE NG

Fundamental framework for developing modern SKSE plugins

SKSE Team

For the continuous development and support of the Skyrim Script Extender

OBody NG Team

For creating the base that makes this functionality possible

Modding Community

For the constant feedback and ideas for improvements

Project Schedule Outline

Project Progress

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 ๐Ÿ˜ฟ

Final Note

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.