Спасительный щит
При получении смертельного урона любой единицы игрока, эта единица, которой был нанесён урон, получает щит, блокирующий любой входящий урон на 15 секунд. Время перезарядки на единицу 180 секунд
особенности
- Пассивная способность верхней панели
- работает на союзные войска
- единица, получавшая щит последние 180 секунд назад, не может получить его вновь
Принцип работы в COOP COMMANDERS
В пользовательской модификации спасительный щит основан на использовании такого типа объекта данных как Player Response, который работает по принципу системы реакции на урон (damage response) в баффах, но только глобально на всего игрока в целом.
Реализация
- Заведен новый Player Response - Artanis Commander - Guardian Shell типа Unit Damage
- Он предназначен для глобального отслеживания получения фатального урона всеми единицами игрока.
- Для включения режима реагирования на фатальный урон, надо поставить галку в поле fatal
- Тогда при получении такого смертельного урона любой из единиц игрока, этот Player Response обнуляет входящий урон и накладывает на такую единицу эффект, указанный в поле Handle
- Обнуление урона происходит, за счёт указанного 0 в поле Factor
Таким образом получается логика, что ни одна из единиц игрока, для которого активен этот Player Response просто не способна умереть
В Handle нужно будет указать тот эффект, который должен наложить бафф с неуязвимостью.
Неуязвимость в баффе (Behavior типа Buff), можно включить в поле Modification - State Flags поставив галочку напротив Invulnerable
Но как добавить куллдаун на щит?
А это вторая часть способности.
Нам нужно чтобы единица получала неуязвимый щит только один раз в 180 секунд. Соответственно, нам нужно как-то пометить единицу, которая уже получала щит недавно.
Сделать это можно благодаря отдельному баффу, с такой продолжительностью, которую хотим сделать на "перезарядку щита"
Тогда мы сможем ещё на стадии момента получения смертельного урона в Player Response определить, имеет ли единица наш бафф-метку, только если единица не будет иметь бафф, то есть проверка валидатора в поле validators пройдёт, только тогда обнулять урон и накладывать этот бафф-метку
Для этой реализации, нам необходимо будет создать новый бафф в каталоге Behaviors и ему задать длительность в его поле duration
Также нужно будет сразу для него сделать эффект Apply Behavior, который будет его накладывать. И этот эффект необходимо указать в поле Final Effect нашего баффа с неуязвимостью
Это нужно для того, чтобы этот бафф-метка накладывался на единицу сразу ПОСЛЕ того, как пройдёт действие щита.
То есть:
- Единица получила смертельный урон -> Player Response проверил что единица ранее не получала щит, обнулил урон и наложил бафф неуязвимости
- Бафф неуязвимости прошёл -> наложился бафф-метка для перезарядки щита
- Единица ещё раз получила смертельный урон -> Player Response увидел валидатором бафф-метку и не стал обнулять урон
Бафф сделали, теперь проверка на него
С проверкой наличия баффа на единице нам поможет валидатор типа Unit Compare Behavior Stack Count. Он то и проверить имеется ли бафф-метка на единице (что будет означать, что этот юнит находился недавно пол щитом)
- В созданном валидаторе, нужно задать проверяемый бафф на единице.
- Также в этом валидаторе нужно указать на ком? проверять наличие баффа и сколько баффов ожидать?
Как только разобрались с настройкой валидаторе, его уже надо вставить в валидаторы Validators нашего player response
Ещё одна ответственность баффа-метки
Помимо этого, от получения этого баффа, можно создавать визуальную модель щита.
Сделать это можно актором типа Model и созданной для него объектом-модели типа CModel.

CCL









