import type { DialogueGraph } from '@rpg/engine';
/**
* Диалоги NPC как графы для DialogueRunner (по docs/world.md, акт 1).
* Мила — безгласная: говорит шёпотом, коротко. Ирвин — экономит дыхание.
*
* Флаги сюжета:
* met_elder — познакомились с Ирвином
* quest_bells_taken — Ирвин дал задание о колокольчиках
* quest_bells_done — колокольчики собраны и посажены (акт 1, дальше)
* met_mila — познакомились с Милой
* got_cloth — Мила дала вощёное полотно
*/
export const DIALOGUES: Record<string, DialogueGraph> = {
elder_first: {
start: 'greet',
nodes: {
greet: {
speaker: 'Старейшина Ирвин',
text: 'Вернулся. Хорошо. Слышал гул на закате? Это пепел дышит у прудов.',
next: 'ask'
},
ask: {
speaker: 'Старейшина Ирвин',
text: 'Три поляны лунных колокольчиков там, у Серых прудов. Если не собрать цветы до выдоха — задохнутся.',
next: 'task'
},
task: {
speaker: 'Старейшина Ирвин',
text: 'Собери. Посади здесь, на лугу. Поляна без цветов — поляна без завтра.',
next: 'give'
},
// Узел-действие: выдача задания без реплики.
give: { setFlags: ['met_elder', 'quest_bells_taken'], next: 'ring' },
ring: { speaker: 'Звонарь', text: 'Прозвоню дорогу до прудов и вернусь до темноты.' }
}
},
elder_repeat: {
start: 'again',
nodes: {
again: {
whenNot: ['quest_bells_done'],
next: 'waiting'
},
waiting: { speaker: 'Старейшина Ирвин', text: 'Цветы ждут у прудов, звонарь. А пепел не ждёт.' }
}
},
trader_first: {
start: 'stop',
nodes: {
stop: {
speaker: 'Торговка Мила',
text: '*звонит ручным колокольчиком дважды* ...Стой.',
next: 'warn'
},
warn: {
speaker: 'Торговка Мила',
text: 'У прудов... свежий накат. Дышать поверх — голос отдашь. Как я отдала.',
next: 'gift'
},
gift: {
speaker: 'Торговка Мила',
text: 'Держи вощёное полотно. На губы. И звони тихо — пепел не буди.',
next: 'give_cloth'
},
give_cloth: { setFlags: ['met_mila', 'got_cloth'], next: 'reply' },
reply: { speaker: 'Звонарь', text: 'Спасибо, Мила. Верну и полотно, и голос — твой точно.' }
}
}
};