|
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> |
|---|
|
|
| CLAUDE.md |
|---|
| apps/game/src/data/__tests__/dialogueRules.test.ts 0 → 100644 |
|---|
| apps/game/src/data/dialogueRules.ts 0 → 100644 |
|---|
| apps/game/src/data/dialogues.ts |
|---|
| apps/game/src/data/dialogues/elder_first.json 0 → 100644 |
|---|
| apps/game/src/data/dialogues/elder_hand_in.json 0 → 100644 |
|---|
| apps/game/src/data/dialogues/elder_repeat.json 0 → 100644 |
|---|
| apps/game/src/data/dialogues/trader_after.json 0 → 100644 |
|---|
| apps/game/src/data/dialogues/trader_first.json 0 → 100644 |
|---|
| apps/game/src/data/dialogues/trader_repeat.json 0 → 100644 |
|---|
| apps/game/src/data/validate.ts |
|---|
| apps/game/tools/dialogues/dry-run.ts 0 → 100644 |
|---|
| apps/game/tsconfig.json |
|---|
| docs/engine/practices.md |
|---|
| docs/engine/ui-and-dialogue.md |
|---|
| package.json |
|---|