Ok, so, you'll need (at least) 2 triggers. On "on cast" and one "periodic". The ability itself should not do anything. You do it all in triggers.
Depending if there are more than 1 unit that should be able to cast it at the same time or not, you'll need indexing of an array or just a single variable.
The basic idea is that, on cast, you add the unit to a unit group ("dashingUnits" or just a unit variable if only 1 unit can cast this), setup destination (target point of ability?, or just check nearby units and go in the direction of nearest unit but like 64 units or so further).
I guess that each unit hit should be damaged once, the first time hit, right?
If so, you'll need a "hitGroup" too that should be empty when starting.
Maybe you want to attach a special effect to casting unit for some flair. I'd recommend one of the slashes from
@Vinz resources.
Then in periodic (initially off trigger, with 0.04 interval), if the "dashingUnits" group has more than 0 units, do trigger, else turn it off.
For each unit in "dashingUnits", move them towards their destination (maybe 20 units towards the destination-point), check nearby units and loop through them and if they are not in "hitGroup", deal damage and add them to it.
If you are within like 10 units or so from your destination, you the distance you moved were less than half of what you expected, remove the unit from the "dashingUnits" group, clean-up destination-point and other variables used that would leak otherwise.
Do you understand how it would work? Does something sounds hard?
If you have trouble doing the trigger, I should have time to do something later, or maybe a wild Uncle will appear, you never know
Edit: of course, upon reaching the destination, maybe you want to dash back again, or is that a separate cast? You could have a counter and dash back and forth until you've dashed X amount of times or the target is dead or something. You might need to add some extra variables for that, but it's not a big deal.