S Settings
Events
Unit - A unit Begins casting an ability
Conditions
(Ability being cast) Equal to (==) Sine
Actions
-------- Don't Change --------
Set S_Caster = (Triggering unit)
Set S_CasterOwner = (Owner of (Triggering unit))
Set S_CasterPosition = (Position of S_Caster)
Set S_DummyCasterDistance = (Distance between S_CasterPosition and (Position of (Random unit from S_WheelGroup)))
Set S_ProjectileDistance = 150.00
-------- Change --------
Set S_DamageBase = 10.00
Set S_DamageSineMultiplier = 10.00
Set S_DamageSine = ((Abs((Sin((Random angle))))) x (Real((Level of Sine for S_Caster))))
Set S_Range = 1000.00
Set S_NumberOfProjectiles = 6
Set S_AngleMultiplier = 60.00
Set S_Speed = 5.00
Set S_DamageFormula = ((S_DamageBase x (Random real number between -0.01 and 5.00)) + (S_DamageSineMultiplier x S_DamageSine))
Trigger - Run S Projectile Creation <gen> (ignoring conditions)
S Projectile Creation
Events
Conditions
Actions
Unit - Order S_Caster to Stop
Unit - Remove S_DummyCaster from the game
Unit - Create 1 Math Projectile for S_CasterOwner at S_CasterPosition facing 270.00 degrees
Set S_DummyCaster = (Last created unit)
Set S_DummyCasterPosition = (Position of S_DummyCaster)
Unit Group - Pick every unit in S_WheelGroup and do (Actions)
Loop - Actions
Unit - Remove (Picked unit) from the game
Do Multiple ActionsFor each (Integer S_Loop) from 1 to S_NumberOfProjectiles, do (Actions)
Loop - Actions
Set S_WheelPoint = (S_CasterPosition offset by S_ProjectileDistance towards ((Real(S_Loop)) x S_AngleMultiplier) degrees)
Unit - Create 1 Math Projectile for S_CasterOwner at S_WheelPoint facing Default building facing (270.0) degrees
Unit Group - Add (Last created unit) to S_WheelGroup
Unit - Set the custom value of (Last created unit) to (S_Loop x (Integer(S_AngleMultiplier)))
Custom script: call RemoveLocation (udg_S_WheelPoint)
Custom script: set udg_S_WheelPoint = null
Set S_ProjectileDistance = 150.00
Set S_Grow = True
Trigger - Turn on S Calculation <gen>
Trigger - Turn on S Effects <gen>
Trigger - Turn on S Damage <gen>
S Damage
Events
Time - Every 0.90 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in (Units within (S_DummyCasterDistance + 20.00) of S_DummyCasterPosition matching (((Matching unit) belongs to an enemy of S_CasterOwner) Equal to (==) True)) and do (Actions)
Loop - Actions
Unit - Cause S_DummyCaster to damage (Picked unit), dealing S_DamageFormula damage of attack type Spells and damage type Normal
S Calculation
Events
Time - Every 0.90 seconds of game time
Conditions
Actions
Set S_DamageFormula = ((S_DamageBase x (Random real number between 0.00 and 5.00)) + (S_DamageSineMultiplier x S_DamageSine))
S Effects
Events
Time - Every 0.05 seconds of game time
Conditions
Actions
Set S_WheelAngle = (S_WheelAngle + S_Speed)
Set S_DummyCasterDistance = (Distance between S_DummyCasterPosition and (Position of (Random unit from S_WheelGroup)))
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
S_ProjectileDistance Greater than or equal to (>=) S_Range
Then - Actions
Set S_Grow = False
Else - Actions
Set S_Grow = True
Set S_WheelAngle = (S_WheelAngle + S_Speed)
Set S_DummyCasterDistance = (Distance between S_DummyCasterPosition and (Position of (Random unit from S_WheelGroup)))
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
S_Grow Equal to (==) True
Then - Actions
Set S_ProjectileDistance = (S_ProjectileDistance + S_Speed)
Set S_DummyCasterDistance = (Distance between S_DummyCasterPosition and (Position of (Random unit from S_WheelGroup)))
Else - Actions
Unit Group - Pick every unit in S_WheelGroup and do (Actions)
Loop - Actions
Unit - Explode (Picked unit)
Set S_WheelAngle = 0.00
Unit - Explode S_DummyCaster
Trigger - Turn off (This trigger)
Trigger - Turn off S Damage <gen>
Trigger - Turn off S Calculation <gen>
Unit Group - Pick every unit in S_WheelGroup and do (Actions)
Loop - Actions
Set S_WheelPoint = (S_DummyCasterPosition offset by S_ProjectileDistance towards ((Real((Custom value of (Picked unit)))) + S_WheelAngle) degrees)
Unit - Move (Picked unit) instantly to S_WheelPoint
Unit - Make (Picked unit) face C_CasterPosition over 0.00 seconds
Custom script: call RemoveLocation (udg_S_WheelPoint)
Custom script: set udg_S_WheelPoint = null
Remove that action from S Projectile CreationUnit - Order S_Caster to Stop