feat(game): финал акта 2 — правильный звон Старой Машины (A4)
- интерактив old_machine в зале Машины: без настроенного резонатора —
  отказ, с ним — custom lull_machine (setFlags machine_lulled);
- InteractResponse.custom: сюжетные эффекты интерактивов через sink.onCustom;
- кат-сцена финала в LocationScene: спуск камеры к устью + наезд, звон с
  тряской, резонанс CombatWorld (тот же пульс, что у героя), угольки гаснут;
- validate: custom реакций сверяется с DIALOGUE_CUSTOM;
- чек checks/final.mjs: спуск через люк -> отказ -> звон -> Машина спит (5/5);
- docs/world.md: арка акта 2 (6а); docs/demo.md: сюжетная рамка + матрица.

Co-Authored-By: Claude Code <noreply@anthropic.com>
1 parent 6068646 commit ccc3ab3982fad9935189773e49cb6e3e6e20a97b
@root root authored 6 hours ago
Showing 10 changed files
View
apps/game/src/data/effects.ts
View
apps/game/src/data/ids.ts
View
apps/game/src/data/interactables.ts
View
apps/game/src/data/locations.ts
View
apps/game/src/data/validate.ts
View
apps/game/src/scenes/LocationScene.ts
View
apps/game/src/systems/Interactables.ts
View
apps/game/tools/checks/final.mjs 0 → 100644
View
docs/demo.md
View
docs/world.md