Skip to content

v1.5.0

Choose a tag to compare

@PenguinToast PenguinToast released this 02 Apr 01:57
· 28 commits to main since this release

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.
    • useOwnershipBasedArmorMasks is now read from Data/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 TestBodyPartByIndex hook is only installed when ownership-based armor masks are enabled.
  • Refactored DynamicArmorManager internals into clearer modules with cleaner boundaries.

Technical notes

  • No shared ARMO state is mutated during partial-slot initialization.
  • The partial-slot fix uses a thread-safe TestBodyPartByIndex override instead of transiently patching armor slot data.
  • Settings loading and hook installation were simplified so hook setup reads directly from the loaded settings state.