I assumed this is for a pre-placed tower because I'm lazy at the moment and didn't want to go through making this MUI. We can do that later on if you need to, but you'll have to give us some more information about your spell and possibly your map. In the meantime, there's this.
The first trigger just sets up a few variables. Since you said it was a tower, I assumed that it wouldn't be able to move and so you can store it's position in a variable without having to clear the leak and create a dummy unit at that same position. I also stored the number of waves and the degrees between each wave; in this case, 18 and 20 respectively.
-
Aqua Nova Setup
-

Events
-

Conditions
-

Actions
-


Set Position = (Position of Tower 0000 <gen>)
-


Set NumberOfWaves = 18
-


Set Angle = (360 / TempIntLevels)
-


Unit - Create 1 DummySpecial for (Owner of Tower 0000 <gen>) at Position facing Default building facing degrees
-


Set DummySpecial = (Last created unit)
-


-------- No need to clear the location leak here because we will use it for the loop --------
The key thing to take from the periodic trigger is the loop; it will run though the actions once from 1 to 18 (18 = NumberOfWaves). For each time, it will set the angle, the target point and cast the wave. So at 1, 2, 3, ..., 18, the angles will be 20, 40, 60, ..., 360 (0). The offset amount isn't an issue unless it's beyond the cast range of the dummy spell. And a Rheiko stated above, it's best to use
Carrion Swarm as
Crushing Wave has an inherent lag associated with it that cannot be fixed (same goes for
War Stomp,
Thunder Clap and
Shockwave).
-
Aqua Nova Periodic
-

Events
-


Time - Every 2.00 seconds of game time
-

Conditions
-

Actions
-


For each (Integer TempInteger) from 1 to NumberOfWaves, do (Actions)
-



Loop - Actions
-




Set TempReal = (0.00 + (Real((Angle x TempInteger))))
-




Set Location = (Position offset by 256.00 towards TempReal degrees)
-




Unit - Order DummySpecial to Undead Dreadlord - Carrion Swarm Location
-




Custom script: call RemoveLocation( udg_Location )