Как сделать чтобы эффект от зелья сохранялся после смерти. ЧТобы он зависел только от времени действия зелья?

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

RotceV, никак, все стандартные баффы удаляются после смерти.
Делаем триггерное зелье лечения, кстати проверяйте что цель мертва - с мертвыми юнитами лучше не производить манипуляции, может вылететь фатальная ошибка.
0
32
6 лет назад
0
RotceV, никак, все стандартные баффы удаляются после смерти.
Делаем триггерное зелье лечения, кстати проверяйте что цель мертва - с мертвыми юнитами лучше не производить манипуляции, может вылететь фатальная ошибка.
Принятый ответ
0
16
6 лет назад
Отредактирован avuremybe
0
Как сказал quq_CCCP, нужно вешать на юнита таймер, который будет его хилить.
local integer h = GetHandleId(GetExpiredTimer())
local integer i = LoadInteger(hash, h, 0)
local unit u = LoadUnitHandle(hash, h, 1)
local real hp = GetUnitState(u, UNIT_STATE_LIFE)
if hp>0.405 and GetUnitTypeId(u)!=UNIT_TYPE_DEAD then
    call SetUnitState(u, UNIT_STATE_LIFE, hp+100)     //лечение от зелья
    if GetUnitAbilityLevel(u, 'A000')<1 then    //твой бафф зелья
        call UnitAddAbility(u, 'A000')
    endif
endif
if i<20 then     //длительность твоего зелья
    call SaveInteger(hash, h, 0, i+1)
else
    call UnitRemoveAbility(u, 'A000')
    call FlushChildHashtable(hash, h)
    call TimerDestroy(GetExpiredTimer())
endif
set u = null
По вкусу можешь добавить спецэффектов.
Визуальным минусом является то, что бафф на юните будет появляться не сразу после воскрешения, а только при тике таймера. Но если у тебя тик лечения 1 секунда, то это вообще не проблема. Если больше - вешай на юнита булин и при воскрешении проверяй.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.