function Hashtables_A1 takes nothing returns nothing
call InitHashtableBJ()
set udg_Demisence_Hashtable = GetLastCreatedHashtableBJ()
endfunction
function Demisence_C1 takes nothing returns boolean
if ( not (GetSpellAbilityId() == 'A000')) then
return false
endif
return true
endfunction
function Demisence_T1 takes nothing returns nothing
local real Demisence_Angle = LoadRealBJ(0, GetHandleId(GetEnumUnit()), udg_Demisence_Hashtable)
local real Demisence_Distance = LoadRealBJ(1, GetHandleId(GetEnumUnit()), udg_Demisence_Hashtable)
local real Demisence_Counter = LoadRealBJ(2, GetHandleId(GetEnumUnit()), udg_Demisence_Hashtable)
if Demisence_Counter < 100.00 then
call SetUnitPositionLoc(GetEnumUnit(), PolarProjectionBJ(GetUnitLoc(GetEnumUnit()), Demisence_Distance, Demisence_Angle))
call SaveRealBJ((Demisence_Counter + 1.00), 2, GetHandleId(GetEnumUnit()), udg_Demisence_Hashtable)
else
call FlushChildHashtableBJ(GetHandleIdBJ(GetEnumUnit()), udg_Demisence_Hashtable)
call GroupRemoveUnit(udg_Demisence_Targets, GetEnumUnit())
endif
endfunction
function Demisence_A2 takes nothing returns nothing
local timer Demisence_Timer = GetExpiredTimer()
call ForGroupBJ(udg_Demisence_Targets, function Demisence_T1)
if CountUnitsInGroup(udg_Demisence_Targets) == 0 then
call PauseTimer(Demisence_Timer)
else
call DoNothing()
endif
endfunction
function Demisence_A1 takes nothing returns nothing
local timer Demisence_Timer = CreateTimer()
local real Demisence_Angle = AngleBetweenPoints(GetUnitLoc(GetSpellAbilityUnit()), GetUnitLoc(GetSpellTargetUnit()))
local real Demisence_Distance = 5.00
local real Demisence_Counter = 0.00
call SaveRealBJ(Demisence_Angle, 0, GetHandleId(GetSpellTargetUnit()), udg_Demisence_Hashtable)
call SaveRealBJ(Demisence_Distance, 1, GetHandleId(GetSpellTargetUnit()), udg_Demisence_Hashtable)
call SaveRealBJ(Demisence_Counter, 2, GetHandleId(GetSpellTargetUnit()), udg_Demisence_Hashtable)
call GroupAddUnit(udg_Demisence_Targets, GetSpellTargetUnit())
if CountUnitsInGroup(udg_Demisence_Targets) == 1 then
call TimerStart(Demisence_Timer, 0.04, true, function Demisence_A2)
else
call DoNothing()
endif
endfunction
function InitTrig_INIT takes nothing returns nothing
local trigger Hashtables_M1 = CreateTrigger()
local trigger Demisence_M1 = CreateTrigger()
call TriggerRegisterTimerEventSingle(Hashtables_M1, 0.01)
call TriggerAddAction(Hashtables_M1, function Hashtables_A1)
call TriggerRegisterAnyUnitEventBJ(Demisence_M1, EVENT_PLAYER_UNIT_SPELL_CAST)
call TriggerAddAction(Demisence_M1, function Demisence_A1)
endfunction