import type { GameState, Inventory } from '@rpg/engine';
import { itemName } from './items';
/**
* Квест «Три цветка» (docs/world.md, акт 1): Ирвин просит собрать
* лунные колокольчики у Серых прудов и посадить их на лугу.
* Прогресс — во флагах/варах GameState, сумка — в Inventory.
*/
export const QUEST_FLOWERS = 3;
/** Одна строка журнала квестов. */
export interface QuestEntry {
done: boolean;
text: string;
}
/** Журнал квестов по флагам GameState. */
export function questLog(state: GameState): QuestEntry[] {
const entries: QuestEntry[] = [];
if (state.hasFlag('quest_bells_taken')) {
const n = Math.min(state.getNumber('flowers'), QUEST_FLOWERS);
entries.push({
done: state.hasFlag('quest_bells_done'),
text: `Собрать лунные колокольчики у Серых прудов (${n}/${QUEST_FLOWERS})`
});
}
if (state.hasFlag('quest_bells_done')) {
entries.push({ done: true, text: 'Цветы посажены у тропы. Поляна гудит.' });
}
return entries;
}
/** Строки сумки из инвентаря: имя + ×N (у одиночных — без множителя). */
export function inventoryItems(inventory: Inventory): string[] {
const items = inventory.all.map((slot) =>
slot.count > 1 ? `${itemName(slot.id)} ×${slot.count}` : itemName(slot.id)
);
if (items.length === 0) items.push('— пусто —');
return items;
}