Добавлен
При создании полностью кастомного фаерболла есть одна загвоздка - когда я направляю заклинание, способность амулета защиты от магии прокает, но мой снаряд все равно появляется, летит к цели и дамажит. Если же кастануть за сек. до перезарядки амулета, чтобы он успел откатиться до попадания фаерболла в цель, огнешар все равно дамажит а амулет ни гу-гу.
Собсно что мучает - как извратиться так, чтобы амулет работал нормально?
Мне думается, что не наносить урон, пока снаряд не подлетит к цели, а следом дамми кастер не повесит оглушение, и если бафф оглушалки прокнет - наносить урон, но опять же амулет уже будет снят кастом абилки у героя. И плюс придется лепить кучу баффов оглушения.

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

проверка на бафф. спасибо всем
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
25
9 лет назад
0
Самый простой способ сделать как ты хочешь - тригерный полет фаербола. (по крайней мере для меня)
0
20
9 лет назад
0
Ancient:
так он и летит так
0
25
9 лет назад
0
Тогда в момент подлета проверяй на наличие бафа линки и потом уничтожай фаербол и тригерно сбрасывай линку.
0
20
9 лет назад
0
Ancient:
а чем ты фаербол запустишь?
а, стопас, ты по сути предлагаешь тоже, что и мелисса
0
32
9 лет назад
0
Эмм а что мешает делать снаряд из аксид бомбы или молотка бурь?
Урон и все остальное длаем полностью триггерно.
0
20
9 лет назад
0
quq_CCCP:
при уроне все равно придется проверять на наличие таймера амулета защиты от магии или баффа оглушения от скилла
0
28
9 лет назад
0
я так и не понял в чём проблема
не знаем как проверку на баф сделать?
0
20
9 лет назад
0
nvc123:
ищу лучший способ. налепить кучу бафов стана не кажется прямо такой хорошей идеей
0
32
9 лет назад
0
ssbbssc:
quq_CCCP:
при уроне все равно придется проверять на наличие таймера амулета защиты от магии или баффа оглушения от скилла
Простите, но начем с того что негейшен блокнит стан и все, мы не попали, а про отлов маг урона уже было, могу даже кинуть пример того как делается такое, на основе аксид бомбы или стана, работает как часы, блочится линками, можно увернутся всякими иллюзиями и блинками.
0
20
9 лет назад
0
quq_CCCP:
в стандартном варе амулет блочит весь спелл, с уроном и эффектами. И проблема в том, что Канал заставляет пассивку амулета прокнуть. Если не трудно, поделись примером
0
32
9 лет назад
0
Кароче при касте скилла добавляй событие на урон от кастера по цели, если цель получила 0.00 урона и у неё есть бафф способности, то значит снаряд попал, если нет то снаряд не попал в цель.
вот простенький пример такой системы:
код
scope DummyMissile

    struct DMD
        trigger trg
        triggercondition trc
        triggeraction tra
        triggeraction extra
        unit cast
        unit targ
        integer id
        timer trix
        boolean del
            
        method FlushData takes nothing returns nothing
            call DisableTrigger( .trg )
            call TriggerRemoveCondition( .trg, .trc )
            call TriggerRemoveAction( .trg, .tra )
            call TriggerRemoveAction( .trg, .extra )
            call TriggerClearActions( .trg )
            call TriggerClearConditions( .trg )
            call RemoveDataBX( .trg )
            call RemoveDataBX( .trix )
            call DestroyTrigger( .trg )
            call DestroyTimer( .trix )

            set this.trg = null
            set this.trc = null
            set this.tra = null
            set this.extra = null
            set this.cast = null
            set this.targ = null
            set this.trix = null
            set this.id = 0
            set this.del = false
        endmethod
    endstruct

    function IsTargetHasBuff takes nothing returns boolean
        local DMD st = GetDataBX( GetTriggeringTrigger( ) )
        return GetEventDamage( ) == 0.00 and GetUnitAbilityLevel( st.targ, st.id ) > 0 and GetEventDamageSource( ) == st.cast and GetEventDamageSource( ) != DummyAttacker
    endfunction

    function Destroy_DMD takes nothing returns nothing
        local DMD st = GetDataBX( GetExpiredTimer( ) )
        call st.FlushData( )
        call st.destroy( )
    endfunction
    
    function RemoveDMDBuff takes nothing returns nothing
        local DMD st = GetDataBX( GetTriggeringTrigger( ) )
        if st.del then
            call UnitRemoveAbility( st.targ, st.id )
        endif
        call PauseTimer( st.trix )
        call DisableTrigger( st.trg )
        call TimerStart( st.trix, 0.00, false, function Destroy_DMD )
        return
    endfunction
    
    function DummyMissile takes unit target, unit caster, integer buffid, real time, boolean del, code actions returns nothing
        local DMD st = DMD.create( )
        set st.cast = caster
        set st.targ = target
        set st.id = buffid
        set st.del = del
        set st.trix = CreateTimer( )
        set st.trg = CreateTrigger( )
        set st.trc = TriggerAddCondition( st.trg, Condition( function IsTargetHasBuff ) )
        set st.tra = TriggerAddAction( st.trg, actions )
        set st.extra = TriggerAddAction( st.trg, function RemoveDMDBuff )
        call TriggerRegisterUnitEvent( st.trg, target, EVENT_UNIT_DAMAGED )
        call TimerStart( st.trix, time, false, function Destroy_DMD )
        call SetDataBX( st.trg, st )
        call SetDataBX( st.trix, st )
    endfunction
endscope
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.