function Trig_lightning_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A00E'
endfunction
function Filter1 takes nothing returns boolean
local unit filt = GetFilterUnit()
if IsUnitEnemy (filt, GetOwningPlayer(udg_L_Caster)) then
call UnitDamageTarget (udg_L_Caster, filt, 50, true, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)
endif
return true
set filt = null
endfunction
function Timer takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer id = GetHandleId(t)
local real x = LoadReal (udg_L_Hash, id, StringHash("x"))
local real y = LoadReal (udg_L_Hash, id, StringHash("y"))
local effect sfx
call AddSpecialEffect("Doodads\\Cinematic\\Lightningbolt\\Lightningbolt.mdl", x, y)
call GroupEnumUnitsInRange (udg_L_Group, x, y, 300, Filter (function Filter1))
set t = null
call DestroyTimer (t)
call FlushChildHashtable (udg_L_Hash, id)
call DestroyEffect (sfx)
endfunction
function Trig_lightning_Actions takes nothing returns nothing
local real x = GetSpellTargetX()
local real y = GetSpellTargetY()
local timer t = CreateTimer()
local unit u = GetTriggerUnit()
local real r = GetRandomReal (0, 3)
set udg_L_Caster = u
call SaveReal (udg_L_Hash, GetHandleId(t), StringHash("x"), x)
call SaveReal (udg_L_Hash, GetHandleId(t), StringHash("y"), y)
call TimerStart (t, r, false, function Timer)
set u = null
set t = null
endfunction
//===========================================================================
function InitTrig_lightning takes nothing returns nothing
local trigger t = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( t, Condition( function Trig_lightning_Conditions ) )
call TriggerAddAction( t, function Trig_lightning_Actions )
endfunction