Можно ли отключить стандартное применение способностей ИИ (например, "Волна силы" или "Неуязвимость", когда враг применяет ее сразу, как только его начнут атаковать), не отключая при этом всего ИИ? Имею в виду, что способности перестают применяться автоматически только если убрать "Компьютер" из слота игрока. Но при этом все поведение игрока в атаке меняется.
Принятый ответ
В результате решил использовать такой вариант - пока вроде, работает.
- Создаем способность-дубликат на основе Канала и даем ее боевой единице.
- Сохраняем в кэш ключ - ID дубликата и значение - ID основной способности.
- Применяем при помощи специальной функции, которая берет из кэша нужную способность, добавляет ее боевой единице, заставляет применить и отключает через пару секунд. Пример такой функции:
nothing order_Immediate(unit u, integer abilId) {
integer realAbilId = GetStoredIntegerBJ(I2S(abilId), "abildoubles", cache)
if (GetUnitAbilityLevelSwapped(realAbilId, u) == 0) {UnitAddAbility(u, realAbilId)}
else {SetUnitAbilityLevel(u, realAbilId, 1)}
IssueImmediateOrder(u, AbilityId2String(realAbilId))
PolledWait(3)
SetUnitAbilityLevel(u, realAbilId, 0)
}
Отключаем, а не удаляем - чтобы не сбрасывалась перезарядка. К тому же, если удалить способность, то она перестанет применяться (например, неуязвимость), а если обнулить ее уровень, то не перестанет. Проблем с таким методом пока не обнаружил.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован MpW