Store categories as authored strings. Trim and deduplicate without changing case, compare without case sensitivity, and keep all observed categories available to filters and editors.
Describe independent ambient executions and their editing/debugging through npc_barks_base. Extend localized guidance on expressions_base calculations.
It was visible until the first dialog ended, so a scene entered without a
running scenario (a loaded save on an RPG map, the return from a battle)
showed an empty box that nothing closed. SetDialogQueueAndRun shows it.
The mod holding the main game's own scenes and story follows the <game>_game
naming rule; further parts stay <game>_<part>, reusable content is <theme>_pack.
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.
Enter/Space do not advance the dialog while a text field has focus, and a
click over another control that stops the mouse (a tool panel drawn over the
dialog area) belongs to that control. DialogBox reads input in _Input, before
the GUI, so both used to advance the dialog as well.
Actions carry the scenario line they were parsed from (SourceLine);
ScenarioParser.SplitLine exposes the parser's line split. ScenarioEvent
remembers its source mod/file and can start at a label. DialogRuntime asks an
optional IDialogDebugger before every action and can be held; DialogBox
resumes a held dialog and aborts one without completing it.