Реализация на текущий момент - Graff46/ProcedureGenerationTasks GitHub Wiki
Да данный момент реализация рабочей системы системы выглядит следующим образом:
Основные данные динамического квеста записываюся в *.ltx файлах как и обычные квесты (ЗП формат) с дополнительными полями и синтаксическими соглашениями.
Определение исполнитель - это НПС или ГГ которые выполняют квест.
Важно: *.ltx файлы с динамическими квестами должны быть "проинклужены" как и все остальные *.ltx файлы с квестами! Динамический квест в своём *.ltx файле оформляется как обычный квест.
Единственное дополнительное поле (ключ) target указывает на сториИд (глобальной) цели дин. квеста. Данный ключ имеет значение в виде строки на вышеуказанный сториИд, но имеет несколько синтаксических соглашений и расширений:
- Стандартные кондлисты ({} %%)
- Строка имеет свои расширения в виде подстрок разделенных символом | (вертикальная черта)
Если в строке есть один символ-разделитель (две подстроки), то первая подстрока это сториИд цели, а вторая это имя ф-ции (из dtask_actions.script) которая выполняет нужные действия при достижении цели исполнителем должна возвратить true обозначая завершение действия и переход к следующему шагу (посткондишн, эффектор).
Если в строке три подстроки разделенные |, то первая подстрока это сториИд цели, вторая это имя ф-ции (из dtask_actions.script) которая должна которая должна возвратить true как только исполнитель достиг цели (предусловие). Третья подстрока это посткондишн описанный ранее.
По умолчанию (если пред- пост- кондишены не устанавливать (оставить только сториИД)) пред- пост- кондишены будут установлены по умолчанию - предкондишен возвратит true когда исполнитель достигнет цели на расстоянии менее 2-ух метров; эффектор.
В качестве аргументов ф-ции-посткондишены получают 1 аргумент - класс дин. квеста. ф-ции-прекондишены получают 2 аргумента: класс дин. квеста и класс экшена из логики (base_action) под которым сейчас НПС.
Выполнение и провал задания для исполнителей вызывается соответствующим событием, это событие может быть вызвано откуда угодно где доступен класс динамического квеста.