• Nikitos's avatar
    Порт заданий из audm-neko: $.quest
    · 043a6894
    Nikitos создал
    Второй блок порта (docs/TASKS.md §12.8, §6.2). В audm-neko задание было
    .tres-ресурсом (QuestDef + QuestObjective + QuestBook, 744 строки); здесь это
    обычный объект, который описывается кодом или пачкой из JSON, а ядро остаётся
    чистым и проверяется без движка.
    
    * цели шести видов (fetch, kill, haul, extract, spare, object) с фильтром по
      карте и своей подписью; события рейда onKill/onExtract/onSpare/onObject/onFetch
      помечают цели и возвращают список готовых к сдаче заданий;
    * статусы locked/available/active/ready/done и правила открытия: after (все),
      after_any (любое — развилка), excludes (взаимоисключение),
      requires_flags/requires_scenes, merciful_branch (ветка по числу флагов);
    * главное правило оригинала перенесено дословно: ВЗЯТОЕ задание не пропадает из
      журнала, даже если ветка-близнец сдана раньше;
    * accept/turnIn ставят флаги сценок ($.story.flags), turnIn возвращает награду
      (деньги, предметы, доверие) — раздаёт её игра;
    * save/load состояния, line() — строка журнала с прогрессом, forGiver() —
      список выдающего, loadFile() — пачка заданий из JSON.
    
    Тест поймал настоящую ошибку трактовки: у haul `count` — это ПОРОГ стоимости
    рюкзака, а не число повторов, поэтому прогресс уходил в 1500/1000 и задание не
    становилось готовым. Теперь зачёт хранится отдельной отметкой.
    
    Проверка: tests/js/quest_test.mjs (17 проверок: условия открытия, прогресс,
    события, награда, сейв), полный набор qjs и агентских тестов зелёный.
    043a6894