Перейти к содержанию

Повторяемые квесты

Обычный квест проходится один раз: после завершения его нельзя выдать тому же игроку снова. Повторяемый квест снимает это ограничение — завершённый квест можно выдать заново сколько угодно раз. Это основа ежедневных заданий, фарм-квестов и повторяющихся ивентов.

Квест становится повторяемым через флаг repeatable:

{
    "version": 3,
    "variant": 1,
    "title": "Дневной сбор древесины",
    "repeatable": true
}

По умолчанию repeatable: false — квест одноразовый.


Как работает повторная выдача

Когда повторяемый квест выдают игроку, который его уже завершил — командой quest give или через свиток квеста — система сама сбрасывает прогресс прошлого прохождения перед новой выдачей. Квест начинается заново с чистого листа: задачи снова не выполнены, активный этап снова первый.

Ключевая граница: повторно выдать можно только завершённый квест.

Состояние квеста у игрока repeatable: false repeatable: true
Не выдан Выдаётся Выдаётся
Активен (не завершён) Повторная выдача запрещена Повторная выдача запрещена
Завершён (успех/провал/пропуск) Повторная выдача запрещена Выдаётся заново, прогресс сбрасывается

Активный квест нельзя перевыдать ни при каком значении repeatable — сначала его нужно завершить или снять командой quest drop.

Повторная выдача начинает новую «жизнь» задач квеста: хук on.load срабатывает заново, как при первой выдаче. Если на нём висят побочные действия — выдача предметов, реплики, теги — они повторятся. Подробнее — в Хуки жизненного цикла задачи.


Включение через команду

У динамического квеста флаг можно переключать на лету:

/quest modify example:daily_quest repeatable true

Команда работает только с динамическими квестами (созданными через quest new); у квеста из датапака флаг задаётся в JSON. См. Справочник команд.


Сброс по расписанию

Сам по себе repeatable не «обновляет» квест по таймеру — он лишь разрешает повторную выдачу. Чтобы получилась настоящая ежедневка, повторную выдачу запускает функция датапака по своему расписанию — например, по игровому времени суток. Полный рецепт с готовым JSON и mcfunction — в паттерне Повторяемый квест.


См. также