JASS:
local trigger ArrowBarrage = CreateTrigger()
local triggeraction ArrowBarrageActionsA = TriggerAddAction(ArrowBarrage, function ArrowBarrageActions)
local unit u
local location l = GetSpellTargetLoc()
set u = CreateUnit(GetOwningPlayer(GetTriggerUnit()), 'n003',GetUnitX(GetTriggerUnit()), GetUnitY(GetTriggerUnit()), 0)
call IssuePointOrderLoc(u,"clusterrockets", l)
call UnitApplyTimedLife(u,'BTLF',8)
call SaveUnitHandle(abilHash, StringHash("Unit1"), GetHandleId(GetTriggerUnit()), u)
set u = CreateUnit(GetOwningPlayer(GetTriggerUnit()), 'n003',GetUnitX(GetTriggerUnit()), GetUnitY(GetTriggerUnit()), 0)
call IssuePointOrderLoc(u,"clusterrockets", l)
call UnitApplyTimedLife(u,'BTLF',8)
call SaveUnitHandle(abilHash, StringHash("Unit2"), GetHandleId(GetTriggerUnit()), u)
call TriggerRegisterUnitEvent(ArrowBarrage,GetTriggerUnit(), EVENT_UNIT_SPELL_ENDCAST)
call TriggerSleepAction(8)
call FlushChildHashtable(abilHash,GetHandleId(GetTriggerUnit()))
call TriggerRemoveAction(ArrowBarrage, ArrowBarrageActionsA)
call DestroyTrigger(ArrowBarrage)
set ArrowBarrage = null
set ArrowBarrageActionsA= null
set u = null
call RemoveLocation(l)
set l = null