The reason that it doesn't work is because the "Target unit of Ability being cast" isn't that unit anymore after a wait (no matter how short it is), it doesn't recognize the unit anymore.
Set it the unit to a variable (yeah, with an array... to make it MPI) then remove the ability from the variable-unit.
I would also suggest:
- Not using waits (use timers instead)
- Removing the leaks
- Improving the terrain (a lot), it's too plain now, the tile variation is bad and try to stay away from blizzard cliffs.
- Add some original features.