| 2026-09-08 |
game: карта окрестностей — предмет map_scroll и оверлей области
...
Предмет «Карта окрестностей» (набросок Ирвина) выдаётся вместе с часами
в elder_first. Использование в сумке открывает MapScene (push поверх
сумки): схема области из renderMinimap с палитрой из арт-палитры,
маркеры переходов и NPC, мигающий маркер героя. Game.activeLocation
дополнен areaId/heroTile() (регистрация локации уже была).
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
| 2026-09-07 |
feat(game): квестовая ясность — трекер цели, тост тонов, направления
...
- HUD: строка «Цель: <стадия (N/M)>» из activeStage (questTracker);
скрыта, когда активных квестов нет
- тост «Тон (N/3)» у деревьев-механизмов: InteractResponse.toast
(текст + прогресс по вару) вместо полного текста реакции
- эпилоги квестов получили doneFlag (act2_hook, новый machine_hook
в clint_repeat) — трекер корректно переходит между квестами
- журнал в сумке: текущие задачи с переносом по ширине панели,
взятия-стадия видна после принятия; панель 300×222
- направления в текстах стадий и диалогах (пруды — северо-запад
лугов, роща — восток Звенца); убран дубль ключа reply в clint_first
- фикс: сепарация тел не вталкивает врага в непроходимый тайл
(откат позиции; инвариант enemy-in-wall в resonator)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
feat(game): предмет «часы» и сумка с выбором
...
Ирвин выдаёт медные часы с квестом (giveItem в elder_first.json);
useItemLine — чистый хелпер юза́бельных предметов (часы → «Время: H:MM»,
остальные — null). InventoryScene — список с курсором MenuList и строкой
результата; время в сумке заморожено (локация не тикается). checks/time.mjs:
выдача часов и заморозка времени в сумке.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
2 days ago
|
feat(game): агентный мост — pickChoiceByText, path/mood/tags в снапшоте, сценарий quest-bells
...
- DialogueSystem.pickChoiceByText(text) — выбор варианта по тексту реплики
(реплики героя в графе — выборы по библии мира; elder_first теперь ветвится)
- DialogueSnapshot += mood/tags/path — снапшот показывает настроение и путь
прохождения графа
- мост: команда сцены scene:pickChoiceByText, GameAgent.pickChoiceByText
(ждёт waitingForChoice, берёт по тексту), прокси AgentClient (+timeout
у runDialogue)
- новый checks/quest-bells.mjs — полный цикл квеста «Три цветка»: взятие
у Ирвина выбором по тексту -> сдача (кат-сцена посадки, цветы списаны)
-> Мила (полотно из do[] в сумке) -> эпилог trader_after; входит в agent:check
- доки: agent.md (снапшот диалога, команды, API), practices.md (typewriter
и выбор в сценариях; метод моста = 3 места), в том же коммите
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
2 days ago
|
feat(game): диалоги в JSON + dialogueRules (чистый анализ графов) + CLI dry-run
...
- графы диалогов — 6 JSON-файлов в data/dialogues/ (4 пробела + \n),
реестр dialogues.ts собирается JSON-импортами
- новый data/dialogueRules.ts: чистые checkGraph/analyzeGraph — реестры
параметрами, одна истина для валидатора, CLI и будущего редактора
- validate.ts делегирует графы в checkGraph; новые инварианты:
textless-cycle (error), silent-end (warn), string-unknown, item-unknown,
do-item/do-custom-unknown, quest-stage-unreachable (error)
- CLI npm run dialogues:dry [<id>] — прогон графов через DialogueRunner
на пресетах состояния (fresh / quest-taken+flowers / quest-done)
- доки: ui-and-dialogue.md (раздел «Графы в JSON и dry-run»), practices.md,
CLAUDE.md
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
2 days ago
|