Всех приветствую. Создавал заклинание на коде и столкнулся с такой проблемой: при ошибке применения способности (делал SpellSteal Рубика), которая связана тип с тем, что юнит не кастовал ранее никаких способностей (на протяжении 3 минут), после чего делал вывод об ошибке и возвращал ману, потраченную на каст. Все бы хорошо, достаточно лишь после применения взять оставшуюся ману юнита и добавить к ней затраченную на заклинание, но происходит всегда такой нюанс: если герой обладает максимальным запасом маны на момент применения, то ему затраченная мана не возвращается вовсе (как бы ее не стараться прописать в коде). Если герой не с полным запасом, то все работает должным образом.
Вопрос: в чем порочность этого механизма и существуют ли какие пути решения?
P.S.: версия патча 1.29.2.

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

А если таймером на 0.01 секунды с момента каста отсрочить пополнение маны?
Где-то читал, что триггер срабатывает чуть раньше, чем происходит событие.
`
ОЖИДАНИЕ РЕКЛАМЫ...
4
18
6 лет назад
4
А если таймером на 0.01 секунды с момента каста отсрочить пополнение маны?
Где-то читал, что триггер срабатывает чуть раньше, чем происходит событие.
Принятый ответ
0
13
6 лет назад
Отредактирован Пушистый
0
Maniac_91, пробовал даже через 3 секунды после снятия маны. Попытка поставить юниту максимум маны игрой игнорируется.
Суть в том, что за ту долю секунды юнит успевает отрегенить немного маны и когда происходит наполнение, то сверхлимита мана не заливается, просто игнорится (помогает, если -10 единиц откинуть, но костыльно, ибо никогда не знаешь, сколько маны нарегенит юнит).
TriggerSleepAction(0.000) - добавил эту строчку - заработало, так как вроде как восполнение прошло не сразу, таймером не делал, потому что поток близок к завершению в том месте кода (тем более сама функция вызвана через Execute).
Чтобы оставить комментарий, пожалуйста, войдите на сайт.