SUppose when you attack the target another unit is created that attacks the unit behind the target but it doesn't do that.
-
Shooter
-

Events
-


Game - DamageModifierEvent becomes Equal to 1.00
-
-

Conditions
-


(Unit-type of DamageEventTarget) Equal to Scout
-


(Unit-type of DamageEventSource) Equal to Sniper
-


DamageEventOverride Equal to False
-
-

Actions
-


Set DamageEventOverride = True
-


Custom script: call ExecuteFunc("shackle")
-


Custom script: endfunction
-


Custom script: function shackle takes nothing returns nothing
-


Wait until ((Unit-type of DamageEventSource) Equal to Sniper), checking every 1.00 seconds
-


Wait until ((Unit-type of DamageEventTarget) Equal to Scout), checking every 1.00 seconds
-


Set ShackleCasterPosition = (Position of DamageEventSource)
-


Set ShackleTargetPosition = (Position of (Triggering unit))
-


Set ShackleGroup = (Units within 550.00 of ShackleTargetPosition)
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




((Picked unit) is A structure) Equal to False
-




((Picked unit) belongs to an enemy of (Owner of DamageEventSource)) Equal to True
-




(Angle from ShackleTargetPosition to ShacklePickedUnitPosition) Greater than or equal to ((Angle from ShackleCasterPosition to ShackleTargetPosition) - 3.00)
-




(Angle from ShackleTargetPosition to ShacklePickedUnitPosition) Less than or equal to ((Angle from ShackleCasterPosition to ShackleTargetPosition) + 3.00)
-




((Picked unit) is alive) Equal to True
-




(Picked unit) Not equal to (Triggering unit)
-




(Picked unit) Not equal to DamageEventSource
-
-



Then - Actions
-




If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-





If - Conditions
-






(Number of units in ShackleTargetsBehind) Equal to 0
-
-





Then - Actions
-






Unit Group - Add (Picked unit) to ShackleTargetsBehind
-
-





Else - Actions
-
-
-



Else - Actions
-
-


Set ShackleTargetPick = (Random 1 units from ShackleTargetsBehind)
-


Unit Group - Remove all units of ShackleTargetsBehind from ShackleTargetsBehind
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




(Number of units in ShackleTargetPick) Greater than 0
-
-



Then - Actions
-




Unit - Create 1 Shooter for (Owner of DamageEventSource) at ShackleTargetPosition facing ShackleTargetPosition2
-




Set TempUnit = (Last created unit)
-




Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
-




Unit Group - Pick every unit in ShackleTargetPick and do (Actions)
-





Loop - Actions
-






Unit Group - Remove (Picked unit) from ShackleTargetsBehind
-






Set ShacklePickedUnitPosition2 = (Position of (Picked unit))
-






Unit - Order TempUnit to Attack (Picked unit)
-
-
-




Custom script: call RemoveLocation(udg_ShacklePickedUnitPosition2)
-




Set ShackleInstances[0] = (ShackleInstances[0] + 1)
-




Set ShackleInstances[1] = (ShackleInstances[1] + 1)
-




Custom script: if udg_ShackleInstances[0] >= 8000 then
-




Set ShackleInstances[0] = 0
-




Custom script: call RemoveLocation(udg_ShackleCasterPosition)
-




Custom script: call RemoveLocation(udg_ShackleTargetPosition)
-




Custom script: call RemoveLocation(udg_ShacklePickedUnitPosition)
-




Custom script: call RemoveLocation(udg_ShacklePickedTreePosition)
-




Custom script: call DestroyGroup(udg_ShackleTargetPick)
-




Custom script: call DestroyGroup(udg_ShackleGroup)
-




Custom script: endif
-
-



Else - Actions
-




Set ShackleTargetPosition2 = (ShackleTargetPosition offset by 353.55 towards (Angle from ShackleCasterPosition to ShackleTargetPosition) degrees)
-




Destructible - Pick every destructible in (Region centered at ShackleTargetPosition2 with size (500.00, 500.00)) and do (Actions)
-





Loop - Actions
-






Set ShacklePickedTreePosition = (Position of (Picked destructible))
-






If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-







If - Conditions
-








((Picked destructible) is alive) Equal to True
-








(Angle from ShackleTargetPosition to ShacklePickedTreePosition) Greater than or equal to ((Angle from ShackleCasterPosition to ShackleTargetPosition) - 3.00)
-








(Angle from ShackleTargetPosition to ShacklePickedTreePosition) Less than or equal to ((Angle from ShackleCasterPosition to ShackleTargetPosition) + 3.00)
-
-







Then - Actions
-








Unit - Create 1 Shooter for (Owner of DamageEventSource) at ShackleTargetPosition facing ShackleTargetPosition2
-








Set TempUnit = (Last created unit)
-








Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
-








Unit - Order TempUnit to Attack (Picked unit)
-








Custom script: if udg_ShacklePickedTree == null then
-








Set ShacklePickedTree = (Picked destructible)
-








Set ShacklePickedTreePosition2 = (Position of ShacklePickedTree)
-








Custom script: endif
-
-







Else - Actions
-
-
-
-




If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-





If - Conditions
-






ShacklePickedTree Not equal to No destructible
-
-





Then - Actions
-






Custom script: call RemoveLocation(udg_ShackleCasterPosition)
-






Custom script: call RemoveLocation(udg_ShackleTargetPosition)
-






Custom script: call RemoveLocation(udg_ShacklePickedUnitPosition)
-






Custom script: call RemoveLocation(udg_ShacklePickedTreePosition)
-






Custom script: call DestroyGroup(udg_ShackleTargetPick)
-






Custom script: call DestroyGroup(udg_ShackleGroup)
-
-





Else - Actions
-
-
-
-
-
