A status effect added without an explicit duration started with no remaining
turns and the countdown skipped it, so it never expired. OnTurnEnd counted
down a second time, expired unlimited effects after one turn and removed
expired stacks by id; it is now a pure hook. The victory screen rolls loot
through LootEntry.Roll, so a loot table with MinCount > MaxCount no longer
throws half-way through the battle end, and its success-path diagnostics are
no longer logged as errors. Mod unit tests for the status effect lifetime.
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.
- 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.