Skip to content

v0.23.0 — disable-not-reorder skin blocking + library custom-character detection

Choose a tag to compare

@ing-gom ing-gom released this 30 Jun 18:31
· 10 commits to main since this release

v0.23.0 — load-order: disable instead of reorder

SkinManager no longer reorders settings.save's mod_list. Reordering shifted the load order of content/framework mods (RitsuLib and the custom characters built on it), which reshuffled the numeric ids in the game's ModelIdSerializationCache — so an existing progress.save would mis-map and the player's progress appeared "not loaded." The reorder also never reliably stuck, so it re-armed the restart modal every boot.

  • A skin that loads before SkinManager (so the TryLoadMod intercept can't catch it) is now blocked by disabling it (is_enabled = false) instead of reordering. Disabling is order-preserving and content-safe (a managed skin defines no ModelDb entities). Skins that load after SkinManager are unaffected. Resolution is deterministic — one restart, no modal loop.
  • Hard guard: never auto-disables BaseLib, Sts2* sister mods, or any mod whose DLL defines game-entity subclasses (a content mod) — those are left loaded-but-unblocked so their save data and dependencies stay intact.

v0.22.0 — generic library-based custom-character detection

  • Custom characters built on any framework (RitsuLib, not just BaseLib) are now recognized via a framework-agnostic signal: a character-select asset for a non-base character id. Fixes RitsuLib characters (e.g. Hornet) being mis-classified as a base-character skin and DLL-blocked so they never appeared in Character Select.
  • Manifest dependencies in object form ({ "id": ..., "min_version": ... }) are now parsed, not just bare strings.
  • Fallback: every DLL-blocked mod is also surfaced in the Other Mods tab with a restore toggle, so a misclassified mod can always be switched back on.