<aside> 💡

Знак “>” в списке параметров означает, что на этом месте может быть указан любой из следующих знаков сравнения: <, <=, =, >=, >

</aside>

Действия с квестлогом


Название действия Параметры Ограничения области вызова Описание Примечания
КВЕСТЫ
NextQuest “sidQuest” Только в скрипт-файле 1. Выключает квест, внутри которого вызывается этот экшен.
  1. Включает квест с указанным sid. | ❗Можно включить только один новый квест.

sidQuest можно полностью пропустить. Тогда просто выключится данный квест. | | EndQuest | “sidQuest1”, “sidQuest2”, “sidQuest3”, … | Только в скрипт-файле | Выключает ВСЕ квесты с указанными sid. | | | САБКВЕСТЫ | | | | | | NextSubQuest | “sidSubQuest1”, “sidSubQuest2”, … | Только в скрипт-файле | 1. Выключает ВСЕ сабквесты того квеста, внутри которого вызывается этот экшен. 2. Включает ВСЕ сабквесты с указанными sid. | | | SubQuestActivate | “sidQuest”, “sidSubQuest” | Только в скрипт-файле | 1. Ищет по скрипт-файлу квест с указанным sid. 2. Включает его сабквест с указанным sid. | | | SubQuestDeactivate | “sidQuest”, “sidSubQuest” | Только в скрипт-файле | 1. Ищет по скрипт-файлу квест с указанным sid. 2. Выключает его сабквест с указанным sid. | | | CurrentSubQuestDone | — | Только в скрипт-файле | “Вычеркивает” в квестлоге текущий сабквест (т.е. тот, внутри которого вызывается данный экшен).

| ❗Сабквест при этом остается активным.

Данный экшен влияет только на визуал для игрока. | | SubQuestDone | “sidQuest”, “sidSubQuest” | Только в скрипт-файле | 1. Ищет по скрипт-файлу квест с указанным sid. 2. “Вычеркивает” в квестлоге его сабквест с указанным sid. | ❗Сабквест при этом остается активным.

Данный экшен влияет только на визуал для игрока. | | САБКВЕСТ-ГРУППЫ | | | | | | NextQuestAfterGroup | “sidSubQuestGroup”, “sidQuest” | Только в скрипт-файле | КОГДА завершаются ВСЕ сабквесты, составляющие сабквест-группу с указанным sid, включает квест с указанным sid. | 🔑 Экшен с предусловием = срабатывает только при удовлетворении внутреннего кондишена. | | NextAfterGroup | “sidSubQuestGroup”, “sidSubQuest” | Только в скрипт-файле | КОГДА завершаются ВСЕ сабквесты, составляющие сабквест-группу с указанным sid, включает сабквест с указанным sid. | 🔑 Экшен с предусловием. | | NextSubGroupAfterGroup | “sidSubQuestGroup1”, “sidSubQuestGroup2” | Только в скрипт-файле | КОГДА завершаются ВСЕ сабквесты, составляющие сабквест-группу с sid1, включает ВСЕ сабквесты, составляющие сабквест-группу с sid2. | 🔑 Экшен с предусловием. | | “ПЕРЕЗАРЯДКА” КОНДИШЕНОВ | | | | | | TriggerClear | “sidQuest”, “sidSubQuest”, “indexTrigger” | Только в скрипт-файле | 1. Ищет по скрипт-файлу квест с указанным sid. 2. Ищет его сабквест с указанным sid. 3. ЗАНОВО включает ВСЕ кондишены триггера с указанным index. | Фактически аставляет кондишены “забыть”,, что они сработали ранее.

❗Присваивание index-ов происходит автоматически, согласну порядку строк в скрипт-файле.

❗Нумерация index-ов начинается с 0. ”Триггер1” = 0, “Триггер2” = 1 и т.п. | | TriggerClearCustom | “sidQuest”, “sidSubQuest”, “indexTrigger”, “indexCondition” | Только в скрипт-файле | 1. Ищет по скрипт-файлу квест с указанным sid. 2. Ищет его сабквест с указанным sid. 3. Ищет его триггер под указанным index. 4. ЗАНОВО включает его кондишен под указанным index. | Фактически заставляет кондишены “забыть”, что они сработали ранее.

Используется в первую очередь для выключения отдельных кондишенов, связанных "conditionsLogic": "And".

❗Присваивание index-ов происходит автоматически, согласну порядку строк в скрипт-файле.

❗Нумерация index-ов начинается с 0. Кондишен-1 = 0, Кондишен-2 = 1 и т.п. |

Технические вещи / взаимодействие со счетчиками


Название действия Параметры Ограничения области вызова Описание Примечания
ОБЩИЕ ДЕЙСТВИЯ
AutoSave Искусственно заставляет игру сделать автосейв в момент вызова экшена. ❗Все экшены, которые должны были выполниться ПОСЛЕ вызова AutoSave не будут сохранены.

❗В текущей реализации НЕ создает новый автосейв, а перезаписывает автосейв последнего дня. | | Print | “string1”, “string2”, … | — | Выводит указанные строки текста в лог / консоль разработчика. | Исключительно инструмент дебаггинга. Не оказывает никакого эффекта в игре. | | СИСТЕМА ПРЕРЫВАНИЙ (”ИНТЕРРАПШЕНЫ”) | | | | | | DisableInterruption | “sidInterruption” | Только в скрипт-файле | Заставляет указанный интеррапшен перестать срабатывать. | Интеррапшен продолжает физически существовать. Но он больше не будет вызываться при удовлетворении своего условия (которое зависит от типа интеррапшена и его параметров). | | EnableInterruption | “sidInterruption” | Только в скрипт-файле | Заставляет указанный отключенный интеррапшен начать вновь срабатывать. | | | BreakInterruptions | — | Только в диалогах | Прекращает текущее прерывание, позволяя игре продолжить работать по обычным правилам. | Технический вспомогательный экшен. Используется для отведения одного героя из агрозоны другого, когда нужно завершить их интеракт, не начиная бой. (т.к. пока интеррапшен активен, герои не могут двигаться)

❗Используется исключительно внутри следующего контекста: "mapActions": [ { "a": "BreakInterruptions" }, { "a": "StepBack" } ], "actions": [ { "a": "End", "p": [ "break" ] } ] | | ЛОКАЛЬНЫЕ СЧЕТЧИКИ (МИССИИ) | | | | | | CounterPlus | “sidCounter”, “X” | — | Увеличивает значение локального счетчика с данным sidCounter на указанное целое X. | 📌 Экшен конкретной карты = Взаимодействует с локальными счетчиками той карты, внутри которой он был вызван. Их список определяется в блоке "counters” файла *map_name*.json. | | CounterMinus | “sidCounter”, “X” | — | Уменьшает значение локального счетчика с данным sidCounter на указанное целое X. | 📌 Экшен конкретной карты. | | CounterSet | “sidCounter”, “X” | — | Перезаписывает значение локального счетчика с данным sidCounter на новое указанное целое X. | 📌 Экшен конкретной карты. | | CounterSetRandom | “counterSid”, ”XMin”, ”XMax” | — | Перезаписывает значение локального счетчика с данным sidCounter на случайное целое значение в промежутке от XMin до XMax. | 📌 Экшен конкретной карты. | | ГЛОБАЛЬНЫЕ СЧЕТЧИКИ (КАМПАНИИ) | | | | | | StoryCounterPlus | “sidStoryCounter”, “X” | — | Увеличивает значение глобального счетчика с данным sidStoryCounter на указанное целое X. | 🗺️ Экшен конкретной кампании = Взаимодействует с глобальными счетчиками той кампании, внутри которой он был вызван. Их список определяется в файле: HeroesOldenEra_Data\StreamingAssets\Core.zip\DB\campaigns\*campaign_name*\storyCounters.json

❗Не сработает вне кампании. ❗При добавлении внутрь диалога должен записываться в блок “actions”, а не “mapActions”. | | StoryCounterMinus | “sidStoryCounter”, “X” | — | Уменьшает значение глобального счетчика с данным sidStoryCounter на указанное целое X. | 🗺️ Экшен конкретной кампании.

❗При добавлении внутрь диалога должен записываться в блок “actions”, а не “mapActions”. | | StoryCounterSet | “sidStoryCounter”, “X” | — | Перезаписывает значение глобального счетчика с данным sidStoryCounter на новое указанное целое X. | 🗺️ Экшен конкретной кампании.

❗При добавлении внутрь диалога должен записываться в блок “actions”, а не “mapActions”. |

Вызов диалогов или иных UI окон

Все диалоги вызываются мгновенно поверх всех прочих интерфейсов. Если в момент вызова одного диалога уже открыт другой, новый диалог добавляется в диалоговую очередь.

У всех диалоговых экшенов, кроме RandomDialog, может быть добавлен опциональный параметр “break”. Если он указан, после завершения диалога будет прервана ВСЯ дальнейшая игровая логика из очереди. Т.е. если был указан “break”:


Название действия Параметры Ограничения области вызова Описание Примечания
ДИАЛОГИ
Dialog “sidDialogue”, “break” Вызывает диалог с указанным sid.
DialogIfHero “sidDialogue”, “sidHero”, “break” ЕСЛИ текущий выбранный герой имеет указанный sid, вызывает диалог с указанным sid. 🔑 Экшен с предусловием = срабатывает только при удовлетворении внутреннего кондишена.
DialogIfRes “sidDialogue”, “sidResource”, ”>”, ”X”, “break” ЕСЛИ в момент вызова данного экшена у игрока есть запас ресурса указанным sid, удовлетворяющий указанному неравенству, вызывает диалог с указанным sid.

Х — любое целое число. | 🔑 Экшен с предусловием. **** | | DialogIfCounter | “sidDialogue”, “sidCounter”, ”>”, ”X”, “break” | — | ЕСЛИ в момент вызова данного экшена значение локального счетчика с указанным sid удовлетворяет указанному неравенству, вызывает диалог с указанным sid.

Х — любое целое число. | 🔑 Экшен с предусловием. ****

❗Работает только с локальными счетчиками. | | DialogIfItem | “sidDialogue”, “sidItem”, “break” | — | ЕСЛИ в момент вызова данного экшена у текущего выбранного героя в инвентаре / рюкзаке есть предмет с указанным sidItem, вызывает диалог с указанным sid. | 🔑 Экшен с предусловием. **** | | RandomDialog | “sidDialogue1”, “sidDialogue2”, … | — | Вызывает один случайный диалог из указанного списка sid. | ❗Нельзя указать “break”. | | “ОДНОРАЗОВЫЕ” ДИАЛОГИ | | | | | | DialogOne | “sidDialogue”, “break” | — | Экшен Dialog, который срабатывает лишь один раз и отключается до конца партии. | | | DialogOneIfHero | “sidDialogue”, “sidHero”, “break” | — | Экшен DialogIfHero, который срабатывает лишь один раз и отключается до конца партии. | | | DialogOneIfRes | “sidDialogue”, “sidResource”, ”>”, ”X”, “break” | — | Экшен DialogIfRes, который срабатывает лишь один раз и отключается до конца партии. | | | DialogOneIfCounter | “sidDialogue”, “sidCounter”, ”>”, ”X”, “break” | — | Экшен DialogIfCounter, который срабатывает лишь один раз и отключается до конца партии. | | | ПРОЧИЕ ИНТЕРФЕЙСЫ | | | | | | ShowFloatingUI | “sidIcon”, “string” | — | Выводит над текущим выбранным героем всплывающую и растворяющуюся в воздухе иконку с указанным sid и указанный текст string. | В текущий момент используется только для отображения изменений репутации фракций.

Возможные значения sidIcon: dungeon_icon — Подземелье human_icon — Храм undead_icon — Некрополь spring_icon — Роща unfrozen_icon — Раскол hive_icon — Рой | | OpenUI | “sidUI” | — | Форсированно открывает интерфейс с указанным sid. | Возможные значения sidUI: LevelUp — повышения уровня HeroUI — инвентарь героя HeroWithHero — обмен между героями MagicBook — книга магии на карте MagicBookBattle — книга магии в бою | | Guide | “sidGuide” | — | Открывает обучающее окно (блок из нескольких слайдов) с указанным sid. | ❗При добавлении внутрь диалога должен записываться в блок “actions”, а не “mapActions”.

Список доступных sid находится в файлах: HeroesOldenEra_Data\StreamingAssets\Core.zip\DB\guides\*tutorial_name*\*guide_name*.json |

Общие правила игры и игроки


Название действия Параметры Ограничения области вызова Описание Примечания
ПРАВИЛА ИГРЫ
SideLose “indexPlayer” Заставляет игрока с указанным index проиграть. • Выводится сообщение о его поражении;
• Все его герои удаляются;
• Все его замки и захваченные объекты становятся нейтральными.
GameLose Заставляет игрока, взаимодействующего с данным квестом/триггером, проиграть. В скрипт-файле действует на того игрока, кто попадает в указанный тип “sharing”.

Как триггер срабатывает на того игрока, чей герой производит взаимодействие. | | GameVictory | — | — | Заставляет игрока, взаимодействующего с данным квестом/триггером, выиграть. | В скрипт-файле действует на того игрока, кто попадает в указанный тип “sharing”.

Как триггер срабатывает на того игрока, чей герой производит взаимодействие. | | ChangeCampaignOneStep | “bool” | — | Включает или выключает режим одного хода. | Режим одного хода: • Все герои получают бесконечный запас хода; • Блокируется возможность пропускать ходы.

Возможные значения bool: true — включить false — выключить | | AddGlobalBuff | “sidBuff”, ”durationType”, ”X” | — | Накладывает глобальный эффект с указанным sid на один или несколько ходов/боев. (или на X ходов/боев— зависит от длительности эффекта durationType) | Список доступных sidBuff находится в файле: HeroesOldenEra_Data\StreamingAssets\Core.zip\DB\logic_global_buffs\logic_global_buffs.json

X — опциональный параметр. Указывается только для определенных значений durationType.

Возможные значения durationType: Infinite — до конца партии UntilNextWeek — до конца недели UntilNextDay — до конца хода UntilNextBattle — до конца 1 боя ForSeveralDays — на Х дней ForSeveralBattles — на Х боев | | RemoveGlobalBuff | “sidBuff” | — | Отключает глобальный эффект с указанным sid. | Эффект удаляется из игры. Для повторного его включения нужно будет заново наложить его при помощи AddGlobalBuff. | | КАМЕРА И ТУМАН ВОЙНЫ | | | | | | MoveCamera | “indexNode” | — | Передвигает центр камеры данного игрока в ноду/клетку с указанным index. | Индекс ноды можно увидеть в редакторе в правом нижнем углу экрана, если навести на нее курсор. | | MoveCameraToSelectHero | — | — | Передвигает центр камеры данного игрока в ноду/клетку, в которой находится текущий выбранный герой. | | | RevealFogOfWar | “indexNode”, “X” | — | Развеивает туман войны в радиусе X вокруг ноды с указанным index. | При минимально возможном X=1 туман развеется в клетке с указанным indexNode и во всех смежных с ней клетках.

❗Если X=0, то ни одна клетка не будет развеяна. | | CreateFogOfWar | “indexNode”, “X” | — | Создает туман войны в радиусе X вокруг ноды с указанным index. | ❗Не может создать туман в области видимости героя / замка / объекта с владельцем. | | ЭКОНОМИКА, ЗАМКИ И ВЛАДЕНИЕ ОБЪЕКТАМИ | | | | т | | GiveRes | “sidResource”, “X” | — | Выдает данному игроку X единиц ресурса с указанным sid. | | | RemoveRes | “sidResource”, “X” | — | Отнимает у данного игрока X единиц ресурса с указанным sid. | Отнимает вплоть до 0. У игрока не может быть отрицательное количество ресурсов. | | UnlockSpell | “sidSpell” | — | Открывает заклинание с указанным sid в обсерватории магии игрока. | Списки всех sidSpell находятся в файлах: HeroesOldenEra_Data\StreamingAssets\Core.zip\DB\magic\*magic_type*.json | | UnlockBuildingCity | ”sidBuilding”, “level”, ”entityObject” | — | Разблокирует для строительства здание с указанным sid уровня level в замке с указанным entity. | Используется только для тех замков, где были изначальные ограничения на отстройку того или иного здания.

❗level — обязательный параметр. Возможные значения level • У гильдии магов — 1-5 • У главного здания и стен — 1-3 • У бараков — 1-2 • У всех прочих зданий — только 1. | | CreateBuildingCity | ”sidBuilding”, “level”, ”entityObject” | — | Строит здание с указанным sid уровня level в замке с указанным entity. | ❗level — обязательный параметр. Возможные значения level • У гильдии магов — 1-5 • У главного здания и стен — 1-3 • У бараков — 1-2 • У всех прочих зданий — только 1. | | CaptureObject | “entityObject” | — | Передает объект с указанным entity под контроль данного игрока. | | | LoseObject | “entityObject” | — | Делает нейтральным объект с указанным entity. | |

Объекты на карте


Название действия Параметры Ограничения области вызова Описание Примечания
СОЗДАНИЕ / ПЕРЕЗАРЯДКА ОБЪЕКТОВ
SpawnObject “sidObject”, “indexNode”, “boolMirror”, “entityObject” 1. Создает интерактивный объект c указанным sidObject в ноде indexNode.
  1. Отражает / не отражает его по горизонтали в зависимости от значения boolMirror.
  2. Присваивает ему entityObject. | ❗Только для интерактивных объектов.

entityObject — опциональный параметр

Возможные значения boolMirror: true — отразить по горизонтали false — не отражать | | SpawnMapObject | “sidMapObject”, “indexNode”, “rotation”, “entityObject” | — | 1. Создает НЕинтерактивный объект c указанным sidMapObject в ноде indexNode. 2. Поворачивает его в соответствии с указанным rotation. 3. Присваивает ему entityObject. | ❗Только для декора.

entityObject — опциональный параметр

Возможные значения поворота rotation соответствуют таковым в свойствах объекта: 0 — 0° 1 — 90° 2 — 180° 3 — 270° | | CreateVFX | “sidVFX”, “indexNode”, “boolRotation”, “isActive”, “entityVFX” | — | 1. Создает визуальный эффект c указанным sid в ноде indexNode. 2. Поворачивает / не поворачивает его в случайную позицию в соответствии со значением boolRotation. 3. Включает/выключает его. 4. Присваивает ему entityVFX.

| entityVFX — опциональный параметр

Возможные значения boolRotation: true — повернуть в случайную позицию false — не поворачивать

Пример: "a": "CreateVFX", "p": [ "fx_map_fire", "520", "false", "true", "fire_ending" ]

  1. Создает эффект огня в ноде 520.
  2. НЕ поворачивает его.
  3. Включает его.
  4. Присваевает ему entity “fire_ending”. | | EventBankRefresh | “entityObject” | — | “Перезаряжает” здание, которое до этого было помечено маркером “Уже посещено”. | | | ПЕРЕКЛЮЧЕНИЕ СОСТОЯНИЯ ОБЪЕКТОВ | | | | | | SetActiveVFX | “entityVFX”, ”bool” | — | Включает или выключает визуальный эффект c указанным sid. | Выключенный эффект будет полностью скрыт для игрока, но все еще останется технически существовать на карте.

Возможные значения bool: true — включить false — выключить | | SetQuestMarker | “entityObject”, “locationQMarker” | — | Выставляет любому объекту с указанным entity свойство Квест-маркер — визуальную метку над моделью, (тип метки определяется по указанному адресу locationQMarker) | Квест-маркеры бывают двух категорий: • Золотые (основные квесты) • Серебряные (сайд-квесты)

Квест-маркеры бывают трех видов: ? — диалоговый объект / квестодатель ! — цель квеста (с чем проинтерактить, …) ^ — объект/точка, к которой нужно пройти

❗Новый квест-маркер не будет виден над объектом, если у того было выключено свойство Active (подробнее — см. SetActiveQuestMarker)

Возможные значения locationQMarker: effects/global_map/quest_mark_gold_01 = ? effects/global_map/quest_mark_gold_02 = ! effects/global_map/quest_mark_gold_03 = ^ effects/global_map/quest_mark_silver_01 = ? effects/global_map/quest_mark_silver_02 = ! effects/global_map/quest_mark_silver_03 = ^ | | SetActiveQuestMarker | “entityObject”, “bool” | — | Включает или выключает видимость квест-маркера у любого объекта с указанным entity. | ❗Никакой метки не будет видно над объектом, если перед этим ему не был выставлен квест-маркер (подробнее — см. SetQuestMarker)

Возможные значения bool: true — включить false — выключить | | SetActivePortal | “entityPortal”, “bool” | — | Включает или выключает портал с указанным entity. | Выключенный портал начинает отображаться на карте как “портал-выход”.

Возможные значения bool: true — включить false — выключить | | SetActiveMarker | “entityZone”, ”bool” | — | Включает или выключает триггер-зону с указанным entity. | ❗Не выключенные триггер-зоны будут каждый раз прерывать движение героев. | | УДАЛЕНИЕ ОБЪЕКТОВ / ИХ ТРИГГЕРОВ | | | | | | DeleteEntity | “entityObject” | — | Удаляет с карты любую сущность (интерактивный объект / объект декора / VFX / замок / нейтральный отряд), КРОМЕ героев. | Для удаления героев используется отдельный экшен DeleteHero — см. Герои

❗НЕинтерактивный объект можно удалить только если в его параметрах было добавлено и включено свойство Не включать в общую геометрию”.

❗Нейтральные отряды удаляются данным экшеном только с анимацией смерти. Для настройки иной анимации используется отдельный экшен DeleteSquad — см. Нейтральные отряды на карте | | DeleteMarkerByNode | “indexNode” | — | Удаляет одну триггер-зону, любая из клеток которой лежит в клетке с указанным indexNode. | Используется для форсированного удаления триггер-зон, не обладающих собственным entity.

Чаще всего — для триггер-зон, вызывающих диалог, заканчивающийся слайдом с "resultDialog": "Interrupt” (т.к. данное поле не дает зоне далее автоматически удалиться галочкой "Delete after trigger”). | | EntityActionsOff | “entityObject” | — | Отключает все триггеры у объекта с указанным entity. | Экшен безвозвратно удаляет все содержимое свойств Actions Before и Actions After. | | ЗАХВАТ ОБЪЕКТОВ | | | | | | CaptureObject | “entityObject” | — | Передает объект с указанным entity под контроль данного игрока. | | | LoseObject | “entityObject” | — | Делает нейтральным объект с указанным entity. | |