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

проверка на бафф. спасибо всем
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Запоминай в локальные переменные всех и вся (разумеется, то, что тебе пригодится). И делай проверки по этим локальным переменным в тот момент, когда они должны сработать, а не хз когда.
24
Ну я лечил так:
юнит приводит способность в действие
способность - амулет защиты магии
запустить таймер[привязан к игроку или юниту. по усмотрению]

Юнит начинает направлять способность
если юнит цель имеет амулет и
если пройденное время таймера[юнита цели] = 0.00
то значит твоя кастомная способность сбила амулет и нужно сделать skip remainig actions - не триггерить заклинание
23
Melissa, зависит от шмоток и бафов. По идее всё норм и проще.
24
Я не помню почему я не стал делать через руну, по моему затруднение со спеллами, что игнорировали аватар но должны были бы сбиваться линкой. Мб был ещё какой-то подвох. Щас я не помню.

А лёл, когда вешать руну защиты с этим самым бафом - как ты определишь? хД
20
Все было бы намного проще, если бы способность фаербола (на основе канала) не прокала амулет. все вообще было бы идеально.
Погодите. А канал не может повесить бафф на цель?
24
Не может.
Волна силы наводится на точку и юнита и вроде не триггерит амулет.
Перст смерти не триггерит амулет тоже.
20
Melissa:
тогда у меня есть два варианта - либо сделать спелл на основе стандартного фаерболла, и наносить урон при проверке баффа оглушения от этого заклинания. а волна наводится на землю. блин.
ладно, есть над чем покопаться. всем спасибо, пока что попробую слепить чего и отпишусь
24
Мой вариант показался тебе слишком сложным?
20
Melissa:
нет, просто хочется сделать все максимально красиво. чтобы огнешар долетал и разбивался о амулет, а не умирал еще в зародыше.
24
Можно помечать шар какой-нить абилкой и если шар долетел до цели имея эту абилку - то не бахать что ли. Он аоешный или на 1 цель?
25
Самый простой способ сделать как ты хочешь - тригерный полет фаербола. (по крайней мере для меня)
25
Тогда в момент подлета проверяй на наличие бафа линки и потом уничтожай фаербол и тригерно сбрасывай линку.
20
Ancient:
а чем ты фаербол запустишь?
а, стопас, ты по сути предлагаешь тоже, что и мелисса
32
Эмм а что мешает делать снаряд из аксид бомбы или молотка бурь?
Урон и все остальное длаем полностью триггерно.
20
quq_CCCP:
при уроне все равно придется проверять на наличие таймера амулета защиты от магии или баффа оглушения от скилла
28
я так и не понял в чём проблема
не знаем как проверку на баф сделать?
20
nvc123:
ищу лучший способ. налепить кучу бафов стана не кажется прямо такой хорошей идеей
32
ssbbssc:
quq_CCCP:
при уроне все равно придется проверять на наличие таймера амулета защиты от магии или баффа оглушения от скилла
Простите, но начем с того что негейшен блокнит стан и все, мы не попали, а про отлов маг урона уже было, могу даже кинуть пример того как делается такое, на основе аксид бомбы или стана, работает как часы, блочится линками, можно увернутся всякими иллюзиями и блинками.
20
quq_CCCP:
в стандартном варе амулет блочит весь спелл, с уроном и эффектами. И проблема в том, что Канал заставляет пассивку амулета прокнуть. Если не трудно, поделись примером
32
Кароче при касте скилла добавляй событие на урон от кастера по цели, если цель получила 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
Чтобы оставить комментарий, пожалуйста, войдите на сайт.