v1.5.0
Dynamic Armor Variants Extended
This release improves DAVE’s partial-slot behavior and makes the new armor-mask handling configurable.
Highlights
- Fixed partial armor hiding for multi-addon armors.
- DAVE now handles cases like robes with separate body and hood addons more correctly, so hiding one branch no longer incorrectly suppresses unrelated body rendering.
- Fixed race-specific resolved mask coverage.
- Worn-mask aggregation now ignores inactive race-specific source addons, preventing incorrect slot masking from branches that do not apply to the current actor.
- Added a new settings toggle for ownership-based armor masks.
useOwnershipBasedArmorMasksis now read fromData/SKSE/Plugins/DynamicArmorVariants/settings.json- The distributed config defaults this to
true - If the settings file is missing or unreadable, it safely defaults to
false
- Kept the new partial-slot path narrowly scoped.
- The
TestBodyPartByIndexhook is only installed when ownership-based armor masks are enabled.
- The
- Refactored
DynamicArmorManagerinternals into clearer modules with cleaner boundaries.
Technical notes
- No shared
ARMOstate is mutated during partial-slot initialization. - The partial-slot fix uses a thread-safe
TestBodyPartByIndexoverride instead of transiently patching armor slot data. - Settings loading and hook installation were simplified so hook setup reads directly from the loaded settings state.