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
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Else - Actions
-
If - Conditions
- 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)
-
Loop - Actions
- 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 - Conditions
-
Loop - 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
-
If - Conditions
-
If - Conditions
-
Events