Storm Bolt
You need 2 abilities, 2 triggers and 1 dummy unit here:
-Abilities-
Storm Bolt (Main) - 600 range, no missile art, animation name = attack/spell
Storm Bolt (Dummy) - 100 range, no missile art, animation name = death
-Triggers-
Events: A unit starts the effect of an ability.
Conditions: Ability being cast equal to Storm Bolt (Main)
Actions:
set VarUnit[1] = Casting unit
set VarUnit[2] = Target unit of ability being cast
set VarLoc[1] = Position of VarUnit[1]
set VarLoc[2] = VarLoc[1] offset by 50 towards facing of VarUnit[1]
Unit - Create 1 (Dummy unit with Storm Bolt model) at VarLoc[2] facing the facing of VarUnit[1]
Unit - Add a 3 second generic expiration timer to last created unit
Unit - Order last created unit to (Storm Bolt (Dummy)) VarUnit[2]
set udg_VarUnit[1] = null
set udg_VarUnit[2] = null
call RemoveLocation(udg_VarLoc[1])
call RemoveLocation(udg_VarLoc[2])
Events: A unit starts the effect of an ability
Conditions: Ability being cast equal to Storm Bolt (Dummy)
Actions: Unit - Add a 0.01 second generic expiration timer to casting unit.
[Whatever actions you like]
Because the cast range of the dummy unit's ability is only 100, the event will only start if the dummy is very close to the target, hitting the target with the ability.
That's it!