Trigger Dificulties

Naga'sShadow

Ultra Cool Member
Reaction score
49
I've got a trigger designed to add damage to an arrow ability. I can't see a problem with it and the phraser has no issues with it, but in testing the move does nothing and I'm not sure whats wrong. Could someone please let me know if they see anything that doesn't work?

JASS:
function OoD_Detect takes nothing returns boolean
    if GetTriggerEventId()==EVENT_PLAYER_UNIT_ATTACKED and GetUnitAbilityLevel(GetAttacker(),'A0AR')>0 then        
        return true           
    elseif GetTriggerEventId()==EVENT_PLAYER_UNIT_SPELL_EFFECT and GetSpellAbilityId()=='A0AR' then        
        return true        
    endif
    return false
endfunction

function OoD_Effects takes nothing returns nothing
    local unit targ = GetTriggerUnit()
    local unit cast = GetEventDamageSource()
    local texttag t
    local real dam
            
    if GetUnitAbilityLevel(targ,'B00D')>0 and GetUnitAbilityLevel(cast,'A0AR')>0 then
        if IsUnitType(targ,UNIT_TYPE_HERO) then
            set dam = (GetUnitAbilityLevel(cast, 'A0AR')*GetHeroInt(cast,true) - GetHeroInt(targ,true))
                if dam <= 0 then
                    set dam = (GetUnitAbilityLevel(cast, 'A0AR')* 25)
                endif 
            else 
                set dam = (GetUnitAbilityLevel(cast, 'A0AR')* 25)
        endif 
        
        call DisableTrigger(GetTriggeringTrigger())                        
        set t = CreateTextTag()
        call SetTextTagText(t,"+"+I2S(R2I(dam)),.023)
        call SetTextTagPosUnit(t,targ,15)
        call SetTextTagColor(t,255,105,180,50)               
        call SetTextTagVelocity(t,.0355 * Cos(90 * bj_DEGTORAD),.0355 * Sin(90 * bj_DEGTORAD))
        call SetTextTagLifespan(t,1.)
        call UnitDamageTarget(cast,targ,dam,false,false, ATTACK_TYPE_MAGIC, DAMAGE_TYPE_MIND,null)                
        call PolledWait(1.)
        call DestroyTextTag(t) 
        set t = null                   
    endif

    set targ = null
    set cast = null       
endfunction

function OoD_Detect_Actions takes nothing returns nothing
    local trigger trig = CreateTrigger()  
    local triggeraction ta  
    local unit u
    
    if GetTriggerEventId()==EVENT_PLAYER_UNIT_SPELL_EFFECT then        
        set u = GetSpellTargetUnit()
    else        
        set u = GetTriggerUnit()
    endif
    call TriggerRegisterUnitEvent(trig,u, EVENT_UNIT_DAMAGED)
    set ta = TriggerAddAction(trig, function OoD_Effects)
    call PolledWait(2)

    call DisableTrigger(trig)
    call TriggerRemoveAction(trig,ta)    
    call DestroyTrigger(trig)     
     
    set ta = null  
    set u = null
    set trig = null
endfunction

function InitTrig_Orb_of_Dreams takes nothing returns nothing
    local trigger gg_trg_OoD
    set gg_trg_OoD = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ(gg_trg_OoD, EVENT_PLAYER_UNIT_ATTACKED)
    call TriggerRegisterAnyUnitEventBJ(gg_trg_OoD, EVENT_PLAYER_UNIT_SPELL_EFFECT)        
    call TriggerAddCondition(gg_trg_OoD, Condition(function OoD_Detect))
    call TriggerAddAction(gg_trg_OoD, function OoD_Detect_Actions)
    set gg_trg_OoD = null
endfunction


*Edit I removed the wait in that section to see if it made any difference in the trigger's execution. It didn't and removing the disable and destroy function had no effect either.*

*Edit 2 nevermind, I flubed up and used the wrong buff. If you spot a leak let me know please.*
 

Artificial

Without Intelligence
Reaction score
326
How are you supposing the trigger you create in the actions to run if you disable it, remove its actions, and destroy it immediately after you've created it and added the event and action?
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top