I liked the Frost Arrow Spell the most for some reason 
So I edited it into a vJASS version (requires Cohadars ABC system)
Im planning to use this spell in my map for frost ranger (In Dawn of Corruption)
So I edited it into a vJASS version (requires Cohadars ABC system)
JASS:
scope FrostArrow
globals
constant integer FA_ArrowUnitRaw = 'n005'
constant integer FA_Raw = 'A00Q'
constant integer FA_FNRaw = 'A00S'
constant integer FA_DummyRaw = 'e003'
constant real FA_Delay = 0.25
constant real FA_DmgConst = 25.
constant real FA_DmgLvl = 75.
endglobals
struct Arrow
unit arr
unit t
unit u
endstruct
function FA_Arrow takes nothing returns nothing
local timer tim = GetExpiredTimer()
local unit d
local real dist
local Arrow Data = GetTimerStructA(tim)
set dist = SquareRoot((GetUnitX(Data.t) - GetUnitX(Data.arr)) * (GetUnitX(Data.t) - GetUnitX(Data.arr)) + (GetUnitY(Data.t) - GetUnitY(Data.arr)) * (GetUnitY(Data.t) - GetUnitY(Data.arr)))
if dist >= 125 and (GetUnitState(Data.t, UNIT_STATE_LIFE) > .405) then
set d = CreateUnit(GetOwningPlayer(Data.arr), FA_DummyRaw, GetUnitX(Data.arr), GetUnitY(Data.arr), 270)
call UnitApplyTimedLife(d, 'BTLF', 0.5)
call UnitAddAbility(d, FA_FNRaw)
call SetUnitAbilityLevel(d, FA_FNRaw, GetUnitAbilityLevel(Data.u, FA_Raw))
call IssueTargetOrder(d, "frostnova", d)
else
call UnitDamageTarget(Data.arr, Data.t, (FA_DmgLvl + FA_DmgConst * GetUnitAbilityLevel(Data.u, FA_Raw)), true, false, ATTACK_TYPE_MAGIC, DAMAGE_TYPE_COLD, WEAPON_TYPE_WHOKNOWS)
call RemoveUnit(Data.arr)
call ClearTimerStructA(tim)
call PauseTimer(GetExpiredTimer())
call DestroyTimer(GetExpiredTimer())
endif
set d = null
set tim = null
endfunction
function FA_Conds takes nothing returns boolean
return GetSpellAbilityId() == FA_Raw
endfunction
function FA_Acts takes nothing returns nothing
local Arrow Data = Arrow.create()
local location p
local location tp
local timer tim
set Data.t = GetSpellTargetUnit()
set Data.u = GetTriggerUnit()
set p = GetUnitLoc(Data.u)
set tp = GetUnitLoc(Data.t)
set Data.arr = CreateUnit(GetOwningPlayer(Data.u), FA_ArrowUnitRaw, GetLocationX(p), GetLocationY(p), AngleBetweenPoints( p, tp))
set tim = CreateTimer()
call IssueTargetOrder(Data.arr, "attack", Data.t)
call SetTimerStructA(tim, Data)
call TimerStart(tim, 0.25, true, function FA_Arrow)
call RemoveLocation(p)
call RemoveLocation(tp)
endfunction
endscope
function InitTrig_FrostArrow takes nothing returns nothing
set gg_trg_FrostArrow = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ( gg_trg_FrostArrow, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition(gg_trg_FrostArrow, Condition(function FA_Conds))
call TriggerAddAction(gg_trg_FrostArrow, function FA_Acts)
endfunction
Im planning to use this spell in my map for frost ranger (In Dawn of Corruption)