i is just a variable I created as an example. One thing people do that I like is set all variables to explain what they are. In coding this is call being semantic. It means that it is named exactly what it is. For example, a spell is called "flash dash" then all variables should start with FD. So now we have an FD_Caster. That's a unit. But we might have more than one, so now we need an index. So now we have FD_Caster[FD_Int]. Now we make everything else to match FD_CastingPoit[FD_Int] and FD_TargetPoint[FD_Int] and FD_Distance[FD_Int]. This way anyone looking at your spell (including you) will be able to make sense of it quickly.
I made one like you are doing with a nice transparency flash effect. Check this out:Flash
Events
Unit - A unit Begins casting an ability
Conditions
(Ability being cast) Equal to Blitz
Actions
Set Flash_Caster = (Casting unit)
Set FlashCaster_Loc = (Position of Flash_Caster)
Set FlashTarget_Loc = (Target point of ability being cast)
Set Flash_LVL = (Level of Blitz for (Triggering unit))
Set Flash_Int = 0
Set Flash_Distance = (Distance between FlashCaster_Loc and FlashTarget_Loc)
Set Flash_Angle = (Angle from FlashCaster_Loc to FlashTarget_Loc)
For each (Integer A) from 1 to 5, do (Actions)
Loop - Actions
Unit - Create 1 Warden_Dummy for Neutral Passive at (FlashCaster_Loc offset by (40.00 x (Real((Integer A)))) towards Flash_Angle degrees) facing Flash_Angle degrees
Set Flash_Dummy[(Integer A)] = (Last created unit)
Animation - Change Flash_Dummy[(Integer A)]'s vertex coloring to (100.00%, 100.00%, 100.00%) with (((Real((Integer A))) x -20.00) + 110.00)% transparency
Animation - Change Flash_Dummy[(Integer A)] blend time to 0.00
Animation - Play Flash_Dummy[(Integer A)]'s walk animation
Trigger - Turn on Flash Loop <gen>
Flash Loop
Events
Time - Every 0.04 seconds of game time
Conditions
Actions
Set Flash_Int = (Flash_Int + 40)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Flash_Distance Greater than ((Real(Flash_Int)) + 200.00)
Then - Actions
For each (Integer A) from 1 to 5, do (Actions)
Loop - Actions
Set FlashCaster_Loc = (Position of Flash_Dummy[(Integer A)])
Unit - Move Flash_Dummy[(Integer A)] instantly to (FlashCaster_Loc offset by 40.00 towards Flash_Angle degrees), facing FlashTarget_Loc
Animation - Play Flash_Dummy[(Integer A)]'s walk animation
Custom script: call RemoveLocation(udg_FlashCaster_Loc)
Set FlashCaster_Loc = (Position of Flash_Dummy[5])
Set Flash_UnitGroup = (Units within 120.00 of FlashCaster_Loc)
Set KB_Point[0] = FlashCaster_Loc
Custom script: call RemoveLocation(udg_FlashCaster_Loc)
Unit Group - Pick every unit in Flash_UnitGroup and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Owner of (Picked unit)) is an enemy of (Owner of Flash_Caster)) Equal to True
Then - Actions
Unit - Cause Flash_Caster to damage (Picked unit), dealing ((Real(Flash_LVL)) x 15.00) damage of attack type Pierce and damage type Normal
Else - Actions
Custom script: call DestroyGroup(udg_Flash_UnitGroup)
Else - Actions
For each (Integer A) from 1 to 5, do (Actions)
Loop - Actions
Unit - Remove Flash_Dummy[(Integer A)] from the game
Custom script: call RemoveLocation(udg_FlashTarget_Loc)
Trigger - Turn off (This trigger)
See it here:
https://www.youtube.com/watch?v=U2-RPhpUiugI use five dummies that vary in transparency from nearly clear to nearly solid color. It is not MUI but it happens so fast, it shouldn't have too much trouble. It would never be approved in the spell section though, for that reason.