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

Структура квеста

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

Обязательные задачи двигают квест вперёд и решают его исход. Необязательные на исход не влияют — это побочные цели и награды рядом с основной линией.

Как завершается задача

Задача может завершиться тремя путями:

Так у завершённой задачи появляется исход — успех, провал или пропуск.

Все поля файла квеста и задачи — с типами и значениями по умолчанию — собраны в Формат файла квеста. Там же разобрано, какие формы принимают title и description и какие стили работают.

Как складывается исход квеста

Итог квеста считается по исходам обязательных задач всех этапов:

  • Успех (success) — все обязательные задачи выполнены успешно или пропущены, но не все пропущены.
  • Провал (failure) — хотя бы одна обязательная задача провалена; квест завершается немедленно, не дожидаясь остальных.
  • Пропуск (skipped) — все обязательные задачи пропущены.

Отдельного шага «завершить квест» нет: исход выводится из обязательных задач, и как только выполнена последняя из них, квест переходит в завершённые. Что эти состояния значат и как прочитать их командой — в Статусы квестов и задач.

Когда фиксируется завершение. Задача, выполнившая своё условие, завершает квест в тот же игровой тик — вместе с её хуком on.success. Но если закрыть обязательную задачу командой или кнопкой, завершение квеста зарегистрируется только на следующем тике: статус самой задачи изменится сразу, а идущая следом в той же функции проверка execute if quest … complete ещё застанет квест активным.


Квесты без этапов

Этапы и задачи необязательны — квест может не иметь ни одного этапа. Такой квест:

  • появляется в книге как active после quest give;
  • не показывается в HUD — закреплять нечего;
  • никогда не завершается автоматически — у него нет ни одной обязательной задачи, по которой система могла бы вычислить исход.

Это удобно для нарративных записей — слухов, заметок, фрагментов лора, — которые должны лежать в дневнике игрока, ничего не требуя. Готовый рецепт — Квест-заметка.


См. также