Хочу создать совместимость триггерных баффных/дебаффных способностей со стандартным Рассеиванием и Похищением заклинания (второе не обязательно).
Но, хочу все оптимизировать и найти наилучший путь.
Вот мое видение как это реализовать:
Создаём логическую переменную массив. Например buff.
Когда накладываем бафф на юнита также присваиваем переменной buff, которая относится к нашему юниту через UserData, значение true.
Затем в цикле проверяем наложен ли бафф на юнитов и значение его buff, если и то и то нет, то ничего не делаем. Если баффа нет, а buff == true, то убираем то, что давал бафф. И наоборот, если бафф есть, а buff = false, то даём то, что давал бафф.
Вопрос в том, не проблематично ли будет проверять постоянно юнитов в цикле? Скажем, примерно, 10 раз в сек.
Также реквестирую способы получше

Принятый ответ

KaneThaumaturge:
8gabriel8, да, но рассеивание бывает разное, там вроде и цепной диспелл есть и аое. А с кастом похищение магии вообще ужс будет.
С: Юнит Приводит способность в действие
У: Множественное ИЛИ (Ability being cast) равно одиночный диспел/цепной диспел/диспел в радиусе
Д: Проверить наличие баффа и при отсутствии снять способности, которые даются с баффом.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
26
5 лет назад
0
По идее просто в триггерном воздействии способности нужна проверка, что на юните есть необходимый бафф.
Хотя, если имеешь ввиду наложение каких-нибудь доп. атак и доп. защит с баффом, то лучше было бы отслеживать применение Рассеивания.
0
19
5 лет назад
0
8gabriel8, мы даём, к примеру +200 к хп, а бафф рассеяли, хп то не денутся.
0
26
5 лет назад
0
Запускать проверку баффов после срабатывания Рассеивания.
0
28
5 лет назад
0
Если есть N баффов и K юнитов, то нужен массив размер N * K, или K массивов размером N.

Можно и по-другому сделать: хранить у каждого юнита список баффов, при касте рассеивания на него, очищать список. Но этот способ не подойдёт для стандартных АоЕ диспеллов.

Вопрос в том, не проблематично ли будет проверять постоянно юнитов в цикле? Скажем, примерно, 10 раз в сек.
Нет, с чего бы. Если речь идёт про всех юнитов, то лучше группой брать всех юнитов, но в саму группу их не добавлять и все действия делать в фильтре.
0
19
5 лет назад
0
PT153, сейчас сделаю и скажу результаты, также скину код.
8gabriel8, да, но рассеивание бывает разное, там вроде и цепной диспелл есть и аое. А с кастом похищение магии вообще ужс будет.
0
28
5 лет назад
Отредактирован PT153
0
сейчас сделаю и скажу результаты, также скину код.
Не-не-не, я сейчас занят, просто зашёл проветриться, в пятницу буду свободен только.
0
19
5 лет назад
0
Да я и не хотел тебя мучать) Залью, как правильный ответ.
0
26
5 лет назад
0
KaneThaumaturge:
8gabriel8, да, но рассеивание бывает разное, там вроде и цепной диспелл есть и аое. А с кастом похищение магии вообще ужс будет.
С: Юнит Приводит способность в действие
У: Множественное ИЛИ (Ability being cast) равно одиночный диспел/цепной диспел/диспел в радиусе
Д: Проверить наличие баффа и при отсутствии снять способности, которые даются с баффом.
Принятый ответ
0
19
5 лет назад
Отредактирован KaneThaumaturge
0
8gabriel8, мне придется снять способности со всех юнитов, на которых нет баффа, а это довольно громоздко. Также я добавляю хп через функцию, а не способность.
Я уже сделал, как описал выше, все работает отлично. Всем спасибо.
Промазал ответом, но ничего страшного
Чтобы оставить комментарий, пожалуйста, войдите на сайт.