W!†A_cRaft
Ultra Cool Member
- Reaction score
- 28
GetEventDamage not working for enemies? wtf
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
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??
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, 039;B004039;) >= 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??