refactor: DialogueRunner -> модель + рантайм; LocationScene 890 -> 737
Движок:
- dialogue/graph.ts (новый): типы графа, VarCondition/DialogueEffects/... и
  чистые предикаты hasConditions/evalConditions — их берут валидатор, dry-run
  и квест-стадии; DialogueRunner.ts (459 -> 298) — только рантайм обхода.
  Публичный API @rpg/engine не изменился; ui-and-dialogue.md дополнен.

Игра (сцена — оркестратор, механики — в systems/):
- systems/combat/CombatFlow.ts (новый): боевая обвязка героя — ввод атаки/
  резонанс, реакции на урон (вспышка/шейк/отброс/смерть-респаун), hp-бар,
  кольцо заряда, уровень угрозы для музыки, подписка combat:hurt.
- systems/LocationHud.ts (новый): название локации, подсказка, счётчик мотов
  (одна вьюха в uiRoot вместо трёх полей сцены).
- makeExitGlow — маркер выхода интерьера уехал в InteractableViews.

Проверки: check:fast, agent:check 16/16, smoke-act1 (квест+кат-сцена),
final-smoke (3 поездки + реальный бой) — зелёные.

Co-Authored-By: Claude Code <noreply@anthropic.com>
1 parent 30d118f commit 63aadfad25e5b29674b66e0a9d494c54b04e47d2
@root root authored 7 hours ago
Showing 9 changed files
View
apps/game/src/scenes/LocationScene.ts
View
apps/game/src/systems/InteractableViews.ts
View
apps/game/src/systems/LocationHud.ts 0 → 100644
View
apps/game/src/systems/combat/CombatFlow.ts 0 → 100644
View
docs/engine/ui-and-dialogue.md
View
packages/engine/src/dialogue/DialogueRunner.ts
View
packages/engine/src/dialogue/__tests__/DialogueRunner.test.ts
View
packages/engine/src/dialogue/graph.ts 0 → 100644
View
packages/engine/src/index.ts