Why does this only work for player units?

W!†A_cRaft

Ultra Cool Member
Reaction score
28
GetEventDamage not working for enemies? wtf

JASS:

ffunction hgdamagecheck takes nothing returns boolean
    local unit u = LoadUnitHandle(udg_hash, GetHandleId(GetTriggerUnit()), StringHash("hgattacker"))
    local unit target = LoadUnitHandle(udg_hash, GetHandleId(GetTriggerUnit()), StringHash("hgself"))
    local boolean bool = LoadBoolean(udg_hash, GetHandleId(u), StringHash("HGactive"))
    local boolean dafired = LoadBoolean(udg_hash, GetHandleId(u), StringHash("DAfired"))
    set hgpassed = true
    call BJDebugMsg(GetUnitName(u))
    call BJDebugMsg(GetUnitName(target))
    if (GetEventDamage() >= 1.0) then
        call BJDebugMsg("damage >1")
        if(GetEventDamageSource() == u) then
        call BJDebugMsg("passed damage source check")
            if((GetUnitAbilityLevel(target, 'B004') >= 1)) then
                call BJDebugMsg("Has B004")
                return true
            else
                if (GetBooleanAnd(dafired, bool))then
                call SaveBoolean(udg_hash, GetHandleId(u), StringHash("DAfired"), false)
                call BJDebugMsg("has B003 and is active")
                return true
                else
                endif
            endif
        else
        endif
    else
    endif
    call BJDebugMsg("falsed it")
    set hgpassed = false
    return true
endfunction


when the check is called for a player owned unit it passess the checks and returns true.

when check is called for an enemy unit it doesnt pass the
JASS:
if (GetEventDamage() >= 1.0) then


Why does this not work for enemy units?

EDIT: return value of GetEventDamage() = 0.0 when the damaged unit is an enemy, but he still gets damage by the attack (which i seen), WTF?
EDIT: EDIT: the function i posted is used as a condition in a trigger.

Purpose:
I attack a unit while having an ability (Item Attack Frost Damage Bonus)
and save the attacker and the aterget to hesh, create a new trigger that registers when the target is damaged.
If the target is damaged i than check if the damage is >=1
if it is than i check is the attacker = damage dealer
and finally does unit have a "slowed" debuf (to avoid having attacked, than damage via spell of the attacker before the projectile hits, resulting in double effect)

if it does it returns true to the trigger conditions
if it doest it sets the global bool to false and returns true.

The action in the trigger first checks if the global bool is true, i it is than it continues with it's course otherwise it does nothing

Problem is when the enemy unit is attacked by my hero, the trigger is made, event is registered but the condition doesnt pass,
the EventDamage displays as 0.0, even though the target clearly gets damaged....

so what gives??
 

eXirrah

New Member
Reaction score
51
Problem is when the enemy unit is attacked by my hero, the trigger is made, event is registered but the condition doesnt pass,
the EventDamage displays as 0.0, even though the target clearly gets damaged....

so what gives??

What do you mean by 'the condition doesn't pass'?

Is that the condition function doesn't run at all, or the damage >= 1 condition doesn't pass.

Maybe ppl will understand your problem better if you post the whole trigger(creation,event registration...)

Add a line call BJDebugMsg(R2S(GetEventDamage())) and see what it displays.
 
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