Структура квеста¶
Квест — это набор задач, сгруппированных в этапы. В каждом этапе ровно одна обязательная задача и любое число необязательных. Этапы проходятся по порядку: следующий открывается только после того, как завершена обязательная задача текущего.
Обязательные задачи двигают квест вперёд и решают его исход. Необязательные на исход не влияют — это побочные цели и награды рядом с основной линией.
Как завершается задача¶
Задача может завершиться тремя путями:
- по условию — система сама проверяет условие успеха или провала задачи;
- кнопкой в квестовой книге — если у задачи задано поле
buttons; - командой
quest complete ... task— с нужным исходом.
Так у завершённой задачи появляется исход — успех, провал или пропуск.
Все поля файла квеста и задачи — с типами и значениями по умолчанию — собраны в Формат файла квеста. Там же разобрано, какие формы принимают
titleиdescriptionи какие стили работают.
Как складывается исход квеста¶
Итог квеста считается по исходам обязательных задач всех этапов:
- Успех (
success) — все обязательные задачи выполнены успешно или пропущены, но не все пропущены. - Провал (
failure) — хотя бы одна обязательная задача провалена; квест завершается немедленно, не дожидаясь остальных. - Пропуск (
skipped) — все обязательные задачи пропущены.
Отдельного шага «завершить квест» нет: исход выводится из обязательных задач, и как только выполнена последняя из них, квест переходит в завершённые. Что эти состояния значат и как прочитать их командой — в Статусы квестов и задач.
Когда фиксируется завершение. Задача, выполнившая своё условие, завершает квест в тот же игровой тик — вместе с её хуком
on.success. Но если закрыть обязательную задачу командой или кнопкой, завершение квеста зарегистрируется только на следующем тике: статус самой задачи изменится сразу, а идущая следом в той же функции проверкаexecute if quest … completeещё застанет квест активным.
Квесты без этапов¶
Этапы и задачи необязательны — квест может не иметь ни одного этапа. Такой квест:
- появляется в книге как
activeпослеquest give; - не показывается в HUD — закреплять нечего;
- никогда не завершается автоматически — у него нет ни одной обязательной задачи, по которой система могла бы вычислить исход.
Это удобно для нарративных записей — слухов, заметок, фрагментов лора, — которые должны лежать в дневнике игрока, ничего не требуя. Готовый рецепт — Квест-заметка.
См. также¶
- Активный этап — какой этап система считает текущим и почему он сдвигается на ходу.
- Статусы квестов и задач — что значат
active,completeи три исхода, как прочитать их командой. - Формат файла квеста — поля
stages,tasks,condition,buttonsв JSON. - Условия выполнения задачи — чем задаётся автоматическое завершение.
- Квест-заметка — паттерн квеста без задач.