private function OnStart takes nothing returns boolean
if Spell() then
if hex[index] == null then
set hex[index] = Hex.create()
endif
set hex[index].u = GetTriggerUnit()
set hex[index].x = GetLocationX(GetSpellTargetLoc())
set hex[index].y = GetLocationY(GetSpellTargetLoc())
call SaveInteger(hash, GetHandleId(hex[index].u), 1, index)
set index = index + 1
endif
return false
endfunction
private function OnStop takes nothing returns boolean
local integer i
local integer j
if Spell() then
set i = LoadInteger(hash, GetHandleId(GetTriggerUnit()), 1)
set j = index - 1
call FlushChildHashtable(hash, GetHandleId(hex[i].u))
call FlushChildHashtable(hash, GetHandleId(hex[j].u))
call SaveInteger(hash, GetHandleId(hex[j].u), 1, i)
set hex[i] = hex[j]
call hex[j].destroy()
set index = j
endif
return false
endfunction