feat(game): вечер после сдачи квеста, виньетка, световые импульсы в бою
- ids.ts: флаг FLAGS.evening; граф elder_hand_in.json ставит его узлом accept
  («вернусь до темноты» — контент-driven, валидатор держит флаг упомянутым)
- LightingDef.nightAmbient: GameLighting.update ведёт ночную цель ambient
  (guard по последней цели, фейд 6 c); лампа героя — в тёмной области или вечером
- тёмные ауры зон наката: пятно на каждый тайл HazardDef (multiply под светом)
- виньетка: низкий hp (0.3) / накат без полотна (0.35), фейд 0.5 c
- импульсы: combat:hurt → тёплая вспышка в точке врага, резонанс → вспышка
  у героя + подъём ambient, урон герою → красная вспышка на весь экран
- LocationScene: maxLights: MAX_LIGHTS (движковый пул больше не теряет
  источники), setTileTracked — индекс layerTilePos живой при смене тайлов
- мост: scene:damagePlayer (полный боевой путь), снапшот lighting.vignette,
  инвариант lighting-bounded расширен виньеткой 0..1
- доки: agent.md (vignette/scene:damagePlayer), practices.md (ночь = флаг,
  импульсы = тот же пул)

Co-Authored-By: Claude Code <noreply@anthropic.com>
1 parent 8eca72f commit 03c06ea05bbef5486c891a7e83257bc4e84e9e79
@root root authored 4 hours ago
Showing 11 changed files
View
apps/game/src/agent/SceneAgentView.ts
View
apps/game/src/agent/__tests__/snapshot.test.ts
View
apps/game/src/agent/snapshot.ts
View
apps/game/src/data/dialogues/elder_hand_in.json
View
apps/game/src/data/ids.ts
View
apps/game/src/data/locations.ts
View
apps/game/src/scenes/LocationScene.ts
View
apps/game/src/systems/Lighting.ts
View
apps/game/src/systems/__tests__/lighting.test.ts
View
docs/engine/agent.md
View
docs/engine/practices.md