Кондишены и их параметры. Полный список
Экшены и их параметры. Полный список
ВСЯ скриптовая логика в игре собирается путем сочетания и комбинирования простейших связок — Триггеров:
ЕСЛИ выполнилось “**Условие-X**” → ТО активируется “**Действие-Y**”.
“Условие-X” — condition / ”кондишн” “Действие-Y” — action / ”экшен”
{ "c": "ConditionName", "p": [ "parameter1", "parameter2" ], "counter": X }
Кондишены БЕЗ параметров могут быть прописаны любым из следующих способов:
❗Кондишен = слушатель. То есть он срабатывает ОДИН РАЗ, когда впервые удовлетворяется его условие, и ВЫКЛЮЧАЕТСЯ.
Кондишен не включится обратно и не сработает повторно, если, условие перестало выполняться Например, сработавший единожды кондишен “Counter” не узнает, если счетчик принял значение, которое больше не удовлетворяет его условию.
<aside> ❗
Все кондишены проверяются ТОЛЬКО для тех игроков, у кого активен квест, который их содержит (определяется полем “sharing” квеста. Подробнее — см. ПОДРОБНОЕ ОПИСАНИЕ ВНУТРЕННИХ ПОЛЕЙ “quests”
ОДНАКО кондишены Игрока X все еще могут проверять героев / захваченные объекты Игрока Y — если их конкретные сиды прописаны в параметрах.
</aside>
Существует возможность создавать комплексные слушатели, требующего выполнения / не-выполнения нескольких кондишенов одновременно. Для этого используется вспомогательное опциональное поле “conditionsLogic”.
Пример использования:
{
"conditionsLogic": "Or",
"conditions":
[
{ "c": "HeroKill", "p": [ "campaign_hero_1" ] },
{ "c": "HeroKill", "p": [ "campaign_hero_2" ] }
],
"actions":
[
{ "a": "GameLose" }
]
}
Возможные значения поля “conditionsLogic”:
<aside> ❗
Так как кондишены — одноразовые слушатели, комбинированные условия типа “And” будут считаться выполненными, как только каждый из кондишенов сработает по 1 разу. ДАЖЕ если условия обоих никогда не будут удовлетворены одновременно.
Для решения этой проблемы используются вспомогательные экшены TriggerClear и TriggerClearCustom. Подробнее — см. Действия с квестлогом
</aside>
{ "a": "ActionName", "p": [ "parameter1", "parameter2" ] }
Экшены БЕЗ параметров могут быть прописаны любым из следующих способов:
Экшен — одно простейшее действие, которое выполняется мгновенно.
Все действия совершаются последовательно одно за другим. Экшены в скрипт-файле срабатывают сразу друг за другом (если у одного из действий в цепочке не был указан дополнительный параметр break, прерывающий выполнение всех последующих действий).
<aside> ❗
Все экшены, кроме диалогов, по умолчанию не умеют “дожидаться” завершения предыдущего вызванного экшена. Например, если вызывать подряд два экшена MoveCamera, камера лишь на долю секунды начнет движение в первую точку, прежде чем сразу же перейти к полноценному движению во вторую.
</aside>
<aside> ❗
Если в написании экшена была допущена ошибка, то не только он, но и ВСЕ экшены данного триггера не будут работать.
</aside>
Скриптовая логика добавляется на карту в двух формах:
Скрипты Более сложные логические последовательности из нескольких триггеров, не обязательно привязанных к какому-либо конкретному объекту на карте. Прописываются в квест-файле.
❗По умолчанию не могут прерывать выполнение стандартной игровой логики. (Например, скрипт “вызвать диалог при взаимодействии с отрядом” не сможет приостановить инициализацию боя — диалог при интеракте откроется, и сразу же закроется, в связи с началом сражения).
Подробнее — см.Скрипты в квестовом файле
Триггеры взаимодействия Простые действия, срабатывающие, когда герой взаимодействует с объектом. ****Выставляются в свойствах Actions Before и Action After объекта в редакторе.
💡Полностью прерывают выполнение стандартной игровой логики. (Например, анимация смерти побежденного отряда проиграется только ПОСЛЕ завершения диалога, вызванного через Action After)
Подробнее — см.Триггеры взаимодействия (на карте)
<aside> ❗
Чтобы КАКАЯ-ЛИБО скриптовая логика работала на карте, в той же папке, где хранится файл *название_карты.map* обязательно нужно создать квестовый файл *название_карты*.json с блоком “quests”.
(хотя бы пустой — см. Заготовка — пустой скрипт-файл: map_name.json)
Иначе даже самые простые триггеры взаимодействия, прикрепленные через Actions Before / After к объектам, сломают загрузку карты.
</aside>
Кондишены и их параметры. Полный список
Экшены и их параметры. Полный список