Инструкция редактора по программированию в Берлоге

Язык используется для программирования логики, управляющей дронами (юнитами) в игре «Защита Пасеки».

Задача дронов игрока – защита базы от различных нападающих дронов.

Успешной работой группы дронов считается полное уничтожение отрядов противников в рамках текущей волны.

Автобортник
Автобортник, дрон ближнего боя со способностью «Починка» (временное лечение себя или союзника).

Степлер
Степлер, дрон дальнего боя с целевым оружием и способностью «На максимум» (временное повышение скорострельности).

Дымарь
Дымарь, дрон дальнего боя с массовым оружием и способностью «Струя дыма» (стрельба с уроном по площади).

Генератор
Генератор, дрон поддержки с лечением союзников по площади и способностью «Самоуничтожение» (взрыв с уроном по площади).
Управление дронами осуществляется через модули.
Модули - программные компоненты, помогающие выполнять заложенные в них функции через
события
(сигнал, возникающий при наступлении определённой ситуации, например, срабатывание датчика или завершение действия) и
действия (отдельные воздействия, влияющие на модули и окружающую среду). Помимо этого, модуль может предоставлять доступ к числовым и логическим переменным, позволяющим отслеживать состояние модулей и использовать его при построении поведения дрона.

Модули бывают 2-ух типов:
  • Универсальные: модули, используемые в каждом дроне.
  • Уникальные: модули, используемые узким кругом дронов и выделяющие их особенности.
Дроны














Рис. 1 - Расположение кнопки редактора

Запуск редактора можно выполнить через следующие шаги:
  1. Выделить дрона, в котором будет меняться поведение.
  2. В появившемся окне юнита нажать кнопку cd:/ (см. Рис. 1).
  3. Откроется “Рабочий стол” редактора (см. Рис. 2).








Редактор
Запуск редактора
Рис. 2 - Рабочий стол редактора
















Интерфейс рабочего стола состоит из следующих компонентов (см. Рис. 3):
  1. Кнопка выхода. Возвращает обратно в игру и предупредит, если изменения были не сохранены.
  2. Название текущей, редактируемой программы.
  3. Кнопка подтверждения. Подтверждает изменения в текущей программе и выходит в игру.
  4. Тело программы, образуемое из состояний и связей. Более подробно раскрыты в разделах “Работа с состояниями” и “Работа со связями”.
  5. Кнопка сохранения. Позволяет сохранить текущую программу.
  6. Кнопка загрузки. Позволяет загрузить ранее сохраненную программу.
  7. Блок управления состояниями. Будет подробнее рассмотрена в разделе “Работа с состояниями”.
  8. Кнопка с переходом на инструкцию по работе с редактором.
Интерфейс рабочего стола

Рис. 3 - Компоненты рабочего стола














Рис. 4 - Тело программы

Программирование описывается в теле (см. Рис. 4). Рассмотрим элементы тела программы:
  1. Состояние. Блок состояния можно описать как папку, которая содержит в себе блоки из исполняемых команд.
  2. Команда состояния. Исполняемая команда модуля, которая состоит из события, действия и параметра.
  3. Связь. Белые стрелки с направлением показывают, как будут взаимодействовать состояния между друг другом.
  4. Команда связи. Блок исполняемых команд, которые обозначают при каких событиях и условиях одно состояние может перейти в другое. Помимо этого, внутри связей сразу могут исполняться и действия.
  5. Дочернее состояние. Состояние, которое вложено в другое состояние. В таком случае вложенное состояние является дочерним состоянием, а состояние, в которое было вложение становится родительским состоянием.

Управление состояниями и нодами осуществляется через кнопки в редакторе. Сейчас пройдемся по списку этих кнопок, а далее будет более подробный их разбор на примере.

Список кнопок:
Программирование
Создание состояния
Кнопка для создания блока состояния. При создании появляется блок, в который можно складывать команды для исполнения.

Создание команды
Кнопка создания команды в блоке состояния. При создании переходит в окно создания команды и после его оформления. Кнопка доступна только на выделенном состоянии.

Удаление команды
Кнопка удаления позволяет стереть выбранную команду.
Кнопка доступна только на выделенной команде.

Изменение команды
Кнопка изменения команды позволяет скорректировать ранее написанную команду. Кнопка доступна только на выделенной команде.

Отвязка состояния
Кнопка отвязывает дочернее состояние от родительского. Кнопка доступна только при удержании состояния(см. Рис. 5), которое является вложенным в родительское.

Удаление состояния
Кнопка для удаления выбранного состояния. Осторожно, если удалить состояние, то с ним удалятся и все вложенные команды. Кнопка доступна только при удержании состояния(см. Рис. 5).

Изменение названия
Кнопка позволяет редактировать название состояния.
Кнопка доступна только при удержании состояния(см. Рис. 5).

Копирование
Кнопка позволяет скопировать состоянием, сохранив все записанные в нём команды. Кнопка доступна только при удержании состояния(см. Рис. 5).
Рис 5. - удержание состояния

Дрон имеет конечный набор состояний. Состояния могут вкладываться друг в друга, образуя древовидную иерархию для выражения подпроцессов (например, меняющиеся тактики во время атаки). Состояние, в которое вложено одно или более состояний, называется надсостоянием или родительским состоянием. Состояние, вложенное в другое, называется подсостоянием или дочерним состоянием.

Со входа в программу _____________________начинается моделирование логики дрона. Может быть соединён только с одним состоянием..
Переход между состояниями осуществляется по возникновении событий. Переход в определённое состояние активирует все родительские ему состояния, а переходы родительского состояния действительны для всех активных состояний, вложенных в него. При этом кроме переключения состояния предусмотрено выполнение набора действий. Переход может не влечь смену состояния, тогда считается, что действие выполняется в рамках текущего состояния, но в таком случае на переход нельзя наложить условие. Переход в родительское состояние не активирует дочерние, даже если они активизировались ранее.

Чтобы создать новое состояние, необходимо нажать на кнопку ________, после этого появится новое состояние(см. Рис. 6).
Чтобы выделить состояние, необходимо нажать на блок состояния. После нажатия его края будут подсвечены и появятся коннекторы “+”, которые отвечают за создание связей (см. Рис. 6). Помимо этого, появятся возможности по созданию команд внутри выделенного состояния.
Работа с состояниями

Рис. 6 - Новое/Выделенное состояние

Чтобы вложить одно состояние в другое, необходимо просто перетянуть один блок в другой. При этом действии, родительское состояние будет подсвечено, обозначая, что вложение происходит именно в него (см. Рис. 7). После этого необходимо отпустить блок и он будет уже вложенным (дочерним).
Рис. 7 - Вложение состояния

Чтобы отвязать вложенное состояние, необходимо задержать вложенное состояние, которое необходимо отвязать, и нажать на кнопку

Важно отметить, что для всех состояний предусмотрены «общие» события (см. Рис. 8):
Вход - действия при активации состояния.
Выход - действия при выходе из состояния.
Строго говоря, это не отдельные события, а общие наборы действий, подставляемые в переходы между состояниями.
Рис. 8 - События входа и выхода

Чтобы создать новую команду необходимо сделать ряд действий:
  1. Выделить состояние, в котором будет создана команда. Выделение состояний было описано ранее.
  2. Нажать на кнопку создания команды________ . После нажатия откроется рабочая область по работе с командами (см. Рис. 9). Область поделена на левую и правую зоны. В левой зоне отображается получаемая команда в виде блока и текста. В правой зоне выбираются компоненты команды, состоящие из события, действия и параметров этого действия.
Для примера создадим команду.
Работа с командами

Рис. 9 - Рабочая область по работе с редактором

3. Первый блок, который необходимо сформировать - событие.
____a. Необходимо выбрать, какой именно модуль будет вызывать событие. В примере выберем пункт Общее (см. Рис. 9).
____b. В открывшемся списке появились события компонента, который был выбран. Так как был выбран пункт Общее, то нам стали ____доступны для выбора 2 события: Вход и Выход. Выбираем Вход (см. Рис. 10).
Создание команды

Рис. 10 - События Входа и Выхода
4. Второй блок, который необходимо сформировать - действие.
___a. В появившемся списке мы должны выбрать модуль для исполнения действия. Выберем Сенсор (см. Рис. 11).
Рис. 11 - Список доступных модулей для действия

___b. В появившемся списке мы должны выбрать, какое именно действие исполнит выбранный модуль.
Выберем ПоискВрагаПоДистанции (см. Рис. 12).
Рис. 12 - Список доступных действий выбранного модуля
5. После выбора предлагается выбрать параметр для действия. Не все действия могут иметь параметры, если их нет, то этот пункт будет недоступен для настройки.
Выберем параметр Мин (см. Рис. 13).
Рис. 13 - Список доступных параметров для выбранного действия
6. Выбор параметра является финальной стадией создания команды, так что после этого сразу стала доступна кнопка “Сохранить”. При нажатии на неё команда будет создана. Если есть желание прервать создание команды, то можно воспользоваться крестиком в левом верхнем углу.
Для примера нажимаем на кнопку Сохранить (см. Рис. 14).
Рис. 14 - Завершение создания команды
7. Команда была успешно создана. Окно рабочей области автоматически закрывается и показывается наше состояние с созданной командой внутри неё (см. Рис. 15).

Рис. 15 - Завершение создания команды
Ранее созданную команду можно редактировать. Для этого необходимо сделать следующие шаги:
  1. Выделить команду через нажатие на неё. Выбранная команда будет выделена белой обводкой.
  2. Нажать на кнопку редактирования________.После этого откроется окно рабочей области по работе с командами.
  3. В открывшемся окне можно менять команды абсолютно также, как и при создании команды, переключаясь между категориями события, действия и параметра.
Редактирование команды
Команду можно удалить. Для этого необходимо сделать следующие шаги:
  1. Выделить команду через нажатие на неё. Выбранная команда будет выделена белой обводкой.
  2. Нажать на кнопку удаления_________. После этого выбранная команда будет удалена.
Удаление команды
Чтобы создать новую связь необходимо:
1. Выделить состояние, из которого будет идти новая связь (см. Рис. 16). Связь будет выделяться белым свечением и появятся коннекторы для создания связи “+”.
Работа со связями

Рис. 16 - Выделенное состояние и его коннекторы
Создание связи

2. Нажать на кнопку коннектора “+” и протянуть появившуюся стрелку к состоянию, в которое необходимо будет перейти
(см. Рис. 17).
Рис. 17 - Процесс протягивания связи
3. После этого автоматически откроется окно настройки связи (см. Рис. 18). К этому окну мы ещё вернемся, а пока завершим
сам процесс создания связи.
Рис. 18 - Окно настройки связи
4. В каждой связи должно быть событие, которое отвечает за переход из одного состояния в другое. Для примера выбираем из раскрывающегося списка модуль Сенсор (см. Рис. 19).
Рис. 19 - Окно настройки связи
5. А в качестве события выбранного модуля выберем ЦельПолучена (см. Рис. 20).
Рис. 20 - Окно настройки связи
6. Нажимаем применить. После этого окно настройки связи закрывается и создаётся новая связь (см. Рис. 21).
Рис. 21 - Созданная связь
Рис. 22 - Окно настройки связи
Окно настройки связей
Теперь более подробно можем рассмотреть, из каких компонентов состоит окно настройки связи:
1. Крестик. Закрывает окно создания связи.
2. События связи. Какое именно событие связи вызовет переход в новое состояние.
Выбирается через 2 действия:
___a. Выбор модуля. Выбираем модуль, ответственный за событие.
___b. Выбор события. Выбираем необходимое событие, доступное от выбранного модуля.
3. Условие. Если необходимо выполнять переход не только во время наступления события, но ещё и проверять условия, то можно воспользоваться этой функцией. Включает или отключает блок условий. Условие может сравниваться между 2-мя типами параметров:
___a. Параметр модуля
___b. Значение пользователя
4. Первый параметр условия. Галочка переключает параметры между параметрами модуля и значением пользователя. Параметр состоит из 2-ух компонентов:
___a. Выбор модуля. Модуль, который передаст параметр.
___b. Выбор параметра. Параметр, который берется от модуля.
5. Оператор. Позволяет сравнить два параметра.
6. Второй параметр условия. Галочка переключает параметры между параметрами модуля и значением пользователя. Параметр состоит из 2-ух компонентов:
___a. Выбор модуля. Модуль, который передаст параметр.
___b. Выбор параметра. Параметр, который берется от модуля.
7. Блок команд. Сюда попадают все команды, которые необходимо выполнить во время перехода.
8. Кнопка добавления команды. Позволяет создать новую команду, через открытие интерфейса по созданию команд. Создание происходит аналогично тому, как было описано ранее.
9. Кнопка редактирования команды. Позволяет изменить ранее созданную команду. Чтобы кнопка стала активной, необходимо выделить команду, которую необходимо изменить.
10. Кнопка удаления команды. Позволяет удалить ранее созданную команду. Чтобы кнопка стала активной, необходимо выделить команду, которую необходимо удалить.
11. Удалить связь. При нажатии полностью удаляет связь со всеми условиями и содержащимися командами.
12. Применить. Сохраняет и создаёт связь.
Ранее созданную связь можно редактировать. Для этого необходимо сделать следующие шаги:
  1. Нажать на стрелочку связи. Автоматически откроется окно редактирования связи.
  2. Начать редактировать связь по тому же принципу, что и создание связи.
Изменение связи
Связь можно удалить. Для этого необходимо сделать следующие шаги:
  1. Нажать на стрелочку связи. Автоматически откроется окно редактирования связи.
  2. Нажать на кнопку удаления. После этого выбранная связь будет удалена.
Удаление связи
Модули дронов, их состав и описание. В списке значками будут отмечаться элементы компонентов:
🚩 – событие.
Сигнал, возникающий при наступлении определённой ситуации, например, срабатывание датчика или завершение действия
👉 – действие.
Отдельные воздействия, влияющие на компонент и окружающую среду.
1️⃣ – переменная.
Числовые и логические значения, позволяющие отслеживать состояние модуля и использовать его при построении поведения.
Описание компонентов
Сенсор
Сенсор позволяет сканировать окружение дрона для поиска, отбора и подсчета количества противников в качестве цели для оружия или атакующей способности.
Цикл работы сенсора представляет собой запуск (через действие) поиска по заданному критерию, при нахождении подходящего дрона возникает соответствующее событие и он помечается целью.

🚩 ЦельПолучена
Сигнализирует о взятии дрона в статус цели.

🚩 ЦельНеОбнаружена
Сигнализирует о том, что сенсор не обнаружил цель.

👉 ПоискВрагаПоДистанции (мин/макс)
Запускает процесс сканирования зоны видимости.
Сканирование основывается на критерии дистанции от сканирующего юнита к найденному противнику.
Параметр определяет направление поиска (наибольшее или наименьшее значение).

👉 ПоискВрагаПоЗдоровью (мин/макс)
Запускает процесс сканирования зоны видимости.
Сканирование основывается на критерии количества здоровья противника.
Параметр определяет направление поиска (наибольшее или наименьшее значение).

👉 ПоискВрагаПоСкорости (мин/макс)
Запускает процесс сканирования зоны видимости.
Сканирование основывается на критерии значения скорости противника.
Параметр определяет направление поиска (наибольшее или наименьшее значение).

👉 ПоискВрагаПоУрону (мин/макс)
Запускает процесс сканирования зоны видимости.
Сканирование основывается на критерии значения урона противника.
Параметр определяет направление поиска (наибольшее или наименьшее значение).

👉 ПоискВрагаПоУронуБазы (мин/макс)
Запускает процесс сканирования зоны видимости.
Сканирование основывается на критерии значения урона по базе со стороны противника.
Параметр определяет направление поиска (наибольшее или наименьшее значение).

👉 ПоискСоюзникаПоДистанции (мин/макс)
Запускает процесс сканирования зоны видимости.
Сканирование основывается на критерии дистанции от сканирующего дрона к найденному союзнику.
Параметр определяет направление поиска (наибольшее или наименьшее значение).

👉 ПоискСоюзникаПоЗдоровью (мин/макс)
Запускает процесс сканирования зоны видимости.
Сканирование основывается на критерии количества здоровья союзника.
Параметр определяет направление поиска (наибольшее или наименьшее значение).

👉 ПоискСоюзникаПоСкорости (мин/макс)
Запускает процесс сканирования зоны видимости.
Сканирование основывается на критерии значения скорости союзника.
Параметр определяет направление поиска (наибольшее или наименьшее значение).

👉 ПоискСоюзникаПоУрону (мин/макс)
Запускает процесс сканирования зоны видимости.
Сканирование основывается на критерии значения урона союзника.
Параметр определяет направление поиска (наибольшее или наименьшее значение).

👉 ОстановкаПоиска
Останавливает процесс сканирования зоны видимости.

1️⃣ Кол-воВраговВЗонеВидимости
Количество дронов противника на игровом поле

1️⃣ Кол-воСоюзниковВЗонеВидимости
Количество дронов противника на игровом поле


АнализаторЦели
Анализатор цели позволяет работать с полученной целью. С помощью модуля можно выставлять условия на основе параметров (здоровье, скорости, урон, дистанция) и передавать сигналы состояния цели (потеряна, получила урон, уничтожена, активировала способность).
🚩 ЦельПотеряна
Сигнализирует о потере цели из зоны видимости. Уничтожение не вызывает этот сигнал.

🚩 ЦельПолучилаУрон
Сигнализирует о получении урона на стороне цели.

🚩 ЦельУничтожена
Сигнализирует об уничтожении цели. Потеря цели из зоны видимости не вызывает этот сигнал.

🚩 ЦельАктивировалаСпособность
Сигнализирует о применении способности со стороны цели.

👉 СбросЦели
Сбрасывает текущее значение цели.

1️⃣ ЗдоровьеЦели
Количество оставшихся очков здоровья целевого дрона.

1️⃣ ЗдоровьеЦелиВПроцентах
Процентное количество оставшегося здоровья у целевого дрона (от 0 до 100).

1️⃣ СкоростьЦели
Скорость перемещения целевого дрона.

1️⃣ УронОтОружияЦели
Количество очков урона, наносимых целевым юнитом.

1️⃣ ДистанцияДоЦели
Единиц дистанции до целевого дрона.

1️⃣ ВидПротивника
Код вида дрона противника 1, 2, 3, 4 — муравей, оса, бомбардир, жук соответственно.

1️⃣ ТипПротивника
Код типа дрона противника 1, 2, 3, 4 — обычный, разрушитель (синеватый), охотник (чёрный), таран (белый) соответственно.
МодульДвижения

Модуль движение отвечает за позиционирование дрона.
С его помощью можно управлять координатами и управлять движением дрона.
🚩 Выполнено
Сигнализирует о завершении действий по передвижению.

🚩 СтолкновениеСПрепятствием
Сигнализирует о столкновении юнита с препятствием.

👉 ЗадатьКоординатуВверх
(N: целое)
Позволяет установить координату в единицах длины вверх.

👉 ЗадатьКоординатуВниз
(N: целое)
Позволяет установить координату в единицах длины вниз.

👉 ЗадатьКоординатуВправо
(N: целое)
Позволяет установить координату в единицах длины вправо.

👉 ЗадатьКоординатуВлево
(N: целое)
Позволяет установить координату в единицах длины влево.

👉 ДвигатьсяПоКоординатам
Заставляет дрона двигаться напрямую к заданной координате.

👉 СбросКоординат
Сбрасывает текущее значение установленной координаты.

👉 ДвигатьсяКЦели
Заставляет дрона двигаться к заданной цели.

👉 ДвигатьсяОтЦели
Заставляет дрона двигаться от заданной цели.

👉 ДвигатьсяКБазе
Заставляет дрона двигаться к своей базе.

👉 Стоп
Останавливает работу модуля.

1️⃣ ДистанцияПоПоследнейКоманде
Текущая пройденная дистанция после активации движения по координатам.

1️⃣ Скорость
Текущая скорость движения.

Самодиагностика

Этот компонент служит сенсором уровня здоровья, предоставляя событие для получения урона и переменные с уровнем здоровья.
🚩 ПолученУрон
Сигнализирует о получении урона исполняющим юнитом.

1️⃣ Кол-воЗдоровья
Количество оставшихся очков здоровья исполняющего дрона.

1️⃣ Кол-воЗдоровьяПроценты
Количество оставшихся очков здоровья исполняющего дрона в процентах (от 0 до 100).
СвязьСБазой

Этот компонент служит сенсором уровня здоровья, предоставляя событие для получения урона и переменные с уровнем здоровья.
🚩 БазаАтакована
Сигнализирует о получении урона по базе.

🚩 ВрагБлизкоКБазе
Сигнализирует о приближении противника к базе.

1️⃣ Кол-воЗдоровья
Количество оставшихся очков здоровья базы.

1️⃣ Кол-воЗдоровьяПроцентов
Количество оставшихся очков здоровья базы в процентах (от 0 до 100).

1️⃣ ДистанцияДоБазы
Единиц дистанции от базы.

Таймер
Модуль предоставляет таймер, который можно устанавливать на единоразовое срабатывание через заданный интервал времени, после чего возникает соответствующее событие. Таймер можно использовать для организации задержек, а также циклов (при использовании внутри состояния).

🚩 ТаймерВыполнен
Сигнализирует об исполнении таймера.

🚩 Тик
Сигнализирует каждый тик (наименьшей единицы времени в программе)

🚩 Тик1Секунд
Сигнализирует каждую секунду.

👉 ТаймерЗапуск (T: целое)
Запускает отсчёт таймера на T секунд, по истечении которых возникнет событие.

👉 ТаймерСтоп
Останавливает действие таймера.

👉 ТаймерСброс
Сбрасывает значение таймера и при этому продолжает его работу.

1️⃣ ТекущееЗначениеТаймера
Показывает текущее значение таймера в секундах.
Счётчик
Модуль предоставляет одну целочисленную ячейку памяти, которую можно изменять и использовать в условиях переходов между состояниями.
👉 Прибавить (N: целое)
Увеличивает значение счётчика на N.

👉 Отнять (N: целое)
Уменьшает значение счётчика на N.

👉 Сброс
Обнуляет значение счётчика.

1️⃣ ТекущееЗначениеСчетчика
Число, записанное в счётчике на текущий момент.
ОружиеЦелевое
Модуль предоставляет вооружение (ближнего или дальнего боя), которым можно атаковать конкретную цель. Цель определяется через модуль сенсора, а модуль вооружения позволяет оперативно отслеживать нахождение цели в зоне поражения.
(эксклюзивно для Автобортника и Степлера)

🚩 Атаковали
Сигнализирует факт начала стрельбы/ударов.

🚩 ЦельВошлаВЗонуАтаки
Сигнализирует о появлении целевого дрона в зоне досягаемости орудия.

🚩 ЦельВышлаИзЗоныАтаки
Сигнализирует о выходе целевого дрона из зоны досягаемости орудия.

👉 АтаковатьЦель
Начинает производить удары/выстрелы оружием в сторону цели.

👉 Стоп
Останавливает удары/стрельбу.

1️⃣ ЦельВЗонеАтаки
Равно 0, если цель находится за пределами зоны атаки, иначе 1.

1️⃣ Кол-воВраговВЗонеАтаки
Количество вражеских дронов в пределах зоны досягаемости орудия.

1️⃣ Кол-воСоюзниковВЗонеАтаки
Количество союзных дронов в пределах зоны досягаемости орудия.

ОружиеМассовое
Модуль предоставляет вооружение дальнего боя с уроном по площади. Выстрел осуществляется по цели, выбираемой через модуль сенсор,
а модуль вооружения позволяет оперативно отслеживать нахождение юнитов
в зоне поражения. Принцип управления аналогичен модулю ОружиеЦелевое, но добавляются элементы, связанные с ударом по площади.
(эксклюзивно для дрона Дымарь)


🚩 Атаковали
Сигнализирует факт начала стрельбы/ударов.

🚩 ЦельВошлаВЗонуАтаки
Сигнализирует о появлении целевого дрона в зоне досягаемости орудия.

🚩 ЦельВышлаИзЗоныАтаки
Сигнализирует о выходе целевого дрона из зоны досягаемости орудия.

👉 АтаковатьЦель
Начинает производить удары/выстрелы оружием в сторону цели.

👉 Стоп
Останавливает удары/стрельбу.

1️⃣ ЦельВЗонеАтаки
Равно 0, если цель находится за пределами зоны атаки, иначе 1.

1️⃣ Кол-воВраговВЗонеАтаки
Количество вражеских дронов в пределах зоны досягаемости орудия.

1️⃣ Кол-воСоюзниковВЗонеАтаки
Количество союзных дронов в пределах зоны досягаемости орудия.

1️⃣ Кол-воВраговВЗонеПоражения
Количество вражеских дронов в зоне поражения выстрелом.

1️⃣ Кол-воСоюзниковВЗонеПоражения
Количество союзных дронов в зоне поражения выстрелом.

Зарядка
Модуль зарядки предоставляет возможность увеличивать скорострельность союзных дронов в определённом радиусе от исполняющего юнита. Увеличение скорости выполняется по площади, без прицеливания, но при этом модуль позволяет отслеживать нахождение дронов в зоне действия.
(эксклюзивно для дрона Генератор)
🚩 ЦельВошлаВЗонуДействия
Сигнализирует о появлении целевого дрона в зоне досягаемости зарядки.

🚩 ЦельВышлаИзЗоныДействия
Сигнализирует о выходе целевого дрона из зоны досягаемости зарядки.

👉 Активация
Активирует модуль зарядки.

👉 Стоп
Останавливает работу модуля зарядки.

1️⃣ Кол-воСоюзниковВЗонеДействия
Количество союзных юнитов в пределах зоны досягаемости зарядки.

1️⃣ ЦельВЗонеДействия
Количество целей в пределах зоны действия зарядки.

СпособностьПочинка
Способность «Починка» позволяет лечить исполняющий юнит или союзный ему в непосредственной близости. Союзный дрон определяется через сенсор. Кроме этого, модуль содержит элементы для отслеживания доступности и перезарядки способности.
(эксклюзивно для Автобортника)
🚩 ПерезарядкаЗавершилась
Сигнализирует о завершении перезарядки и готовности способности к активации.

🚩 СпособностьЗавершилась
Сигнализирует о деактивации способности после её использования.

👉 ЧинитьСебя
Начинает лечение исполняющего дрона..

👉 ЧинитьСоюзника
Начинает лечение союзного дрона, выбранного через сенсор.

👉 Стоп
Останавливает лечение.

1️⃣ ДоступнаДляАктивации
Равно 1, если способность можно активировать, иначе 0.

1️⃣ ОсталосьСекундПерезарядки
Количество секунд, оставшееся до завершения перезарядки способности.
СпособностьНаМаксимум
Способность «На максимум» временно увеличивает скорострельность целевого орудия исполняющего юнита. Модуль содержит элементы для запуска, отслеживания доступности и перезарядки способности.
(эксклюзивно для Степлера)
🚩 ПерезарядкаЗавершилась
Сигнализирует о завершении перезарядки и готовности способности к активации.

🚩 СпособностьЗавершилась
Сигнализирует о деактивации способности после её использования.

👉 АктивацияСпособности
Активирует способность, если она готова к активации.

👉 Стоп
Останавливает действие способности.

1️⃣ ДоступнаДляАктивации
Равно 1, если способность можно активировать, иначе 0.

1️⃣ ОсталосьСекундПерезарядки
Количество секунд, оставшееся до завершения перезарядки способности.

СпособностьСтруяДыма
Способность «Струя дыма» представляет собой альтернативное орудие дальнего боя с уроном по площади. Принцип действия схожий с модулем ОружиеМассовое, но отличается поражаемым радиусом и имеет ограничения, связанные с временем действия и перезарядки способности.
(эксклюзивно для дрона Дымарь)

🚩 ПерезарядкаЗавершилась
Сигнализирует о завершении перезарядки и готовности способности к активации.

🚩 СпособностьЗавершилась
Сигнализирует о деактивации способности после её использования.

🚩 ЦельВошлаВЗонуАтаки
Сигнализирует появлении цели в зоне досягаемости орудия.

🚩 ЦельВышлаИзЗоныАтаки
Сигнализирует о выходе цели из зоны досягаемости орудия.

👉 АтаковатьЦель
Начинает производить выстрел в сторону цели.
Считается активацией способности.

👉 АтаковатьПередСобой
Начинает производить выстрел в направлении движения.
Считается активацией способности.

👉 Стоп
Останавливает действие способности.

1️⃣ ДоступнаДляАктивации
Равно 1, если способность можно активировать, иначе 0.

1️⃣ ОсталосьСекундПерезарядки
Количество секунд, оставшееся до завершения перезарядки способности.

1️⃣ Кол-воВраговВЗонеПоражения
Количество вражеских дронов в зоне поражения выстрелом.

1️⃣ Кол-воСоюзниковВЗонеПоражения
Количество союзных дронов в зоне поражения выстрелом.

СпособностьСамоуничтожение
Способность «Самоуничтожение», как следует из названия, предоставляет дрону возможность подорваться, нанеся значительный урон по площади. Модуль позволяет отслеживать нахождение дронов в зоне поражения. Принцип отслеживания аналогичен модулю ОружиеМассовое.
(эксклюзивно для дрона Генератор)
🚩 ЦельВошлаВЗонуАтаки
Сигнализирует о появление цели в зоне досягаемости взрыва.

🚩 ЦельВышлаИзЗоныАтаки
Сигнализирует о выходе цели из зоны досягаемости взрыва.

👉 Взорвать
Выполняет самоуничтожение дрона с уроном по площади.

1️⃣ Кол-воВраговВЗонеПоражения
Количество вражеских дронов в зоне поражения взрыва.

1️⃣ Кол-воСоюзниковВЗонеПоражения
Количество союзных дронов в зоне поражения взрыва.

Диод
Модуль позволяет взаимодействовать с лампочкой на корпусе, которую можно использовать в качестве индикатора.

👉 Включить (красный/зеленый/синий)
Включает светодиод, либо меняет его цвет.

👉 Выключить
Выключает светодиод.

👉 ЗадатьЯркость (N: от 0 до 1)
Устанавливает яркость светодиода.

1️⃣ Яркость
Текущая яркость светодиода от 0 до 1.

1️⃣ Включен
1 если светодиод включен, 0 если светодиод выключен.