Mods are renamed by role (shell2d_base, menu_base, ui_base, live2d_base,
editor_tools, cthangover_story, cthangover_murakami, cthangover_party) and
every reference follows. Engine UI prefabs (dialog, answers, message, game
menu, inventory, map, skills) and their panel entries moved out of the story
mod into the subsystem mods; the card_novel and vn_starter_novel collections
are removed.
Battle cores, winground listeners and status effect behaviours reach their
registries through ModTypeConsumer subclasses instead of per-mod assembly
lookups and AppDomain rescans, and leave again when their mod unloads, so a
game switch or hot reload never keeps a released mod's types alive.
- The win/defeat sounds (sounds/battle/winground, deadground) used by the
battle report move here from visual_novel_core.
- The basic physics actions (attack, defence, stun) are character data
every mod with characters uses; they move to characters_base.
- depends no longer lists visual_novel_core: the battle platform does not
use the novel content.
BattleCoreRegistry.GetActive: without an explicit battle.set_core the
active game collection's settings["battle.core"] chooses the core (e.g.
card_battle for cthangover and card_novel), then the first registered one.