- Joined
- Feb 22, 2025
- Messages
- 315
Created a system that sometimes works in the way intended but sometimes not
Any suggestions or help are very welcome, tnx!
------------------------

Any suggestions or help are very welcome, tnx!
------------------------
-
GuardIni
-

Events
-


Map initialization
-


Time - Elapsed game time is 1.00 seconds
-
-

Conditions
-

Actions
-


Set Guard_Counter = 0
-


Set Guard_Group = (Create new unit group)
-


Unit Group - Add |cffb40000Elite Dreadguard|r 0063 <gen> to Guard_Group
-


Unit Group - Add Forsaken Dreadguard 0053 <gen> to Guard_Group
-


Unit Group - Add Forsaken Dreadguard 0054 <gen> to Guard_Group
-


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



Loop - Actions
-




Set Guard_Unit = (Picked unit)
-




Set Guard_Index = (Custom value of Guard_Unit)
-




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





If - Conditions
-






Guard_Index Equal to 0
-
-





Then - Actions
-






Set Guard_Counter = (Guard_Counter + 1)
-






Set Guard_Index = Guard_Counter
-






Unit - Set the custom value of Guard_Unit to Guard_Index
-






Set Guard_Position[Guard_Index] = (Position of Guard_Unit)
-






Set Guard_Facing[Guard_Index] = (Facing of Guard_Unit)
-






Set Guard_SpeedBoost[Guard_Index] = False
-
-





Else - Actions
-
-
-
-


Trigger - Turn on Guard Behaviour <gen>
-


Custom script: call DestroyGroup( udg_Guard_Group)
-
-
-
Guard Behaviour
-

Events
-


Time - Every 1.00 seconds of game time
-
-

Conditions
-

Actions
-


Set Guard_Group = (Units of type Forsaken Dreadguard)
-


Unit Group - Add |cffb40000Elite Dreadguard|r 0063 <gen> to Guard_Group
-


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



Loop - Actions
-




Set Guard_Unit = (Picked unit)
-




Set Guard_Index = (Custom value of Guard_Unit)
-




Set Guard_Temp_Point = (Position of Guard_Unit)
-
-
-


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



If - Conditions
-




(Current order of Guard_Unit) Equal to (Order(smart))
-




(Current order of Guard_Unit) Equal to (Order(attack))
-
-



Then - Actions
-




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





If - Conditions
-






(Distance between Guard_Temp_Point and Guard_Position[Guard_Index]) Greater than 400.00
-
-





Then - Actions
-






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







If - Conditions
-








(Guard_Unit is in Guard_MovingGroup.) Equal to False
-
-







Then - Actions
-








Unit Group - Add Guard_Unit to Guard_MovingGroup
-
-







Else - Actions
-
-
-





Else - Actions
-






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







If - Conditions
-








(Distance between Guard_Temp_Point and Guard_Position[Guard_Index]) Greater than or equal to 50.00
-








(Current order of Guard_Unit) Not equal to (Order(smart))
-








(Current order of Guard_Unit) Not equal to (Order(attack))
-








(Current order of Guard_Unit) Not equal to (Order(move))
-








(Current order of Guard_Unit) Not equal to (Order(spell))
-
-







Then - Actions
-








Animation - Change Guard_Unit's animation speed to 100.00% of its original speed
-








Unit - Make Guard_Unit face Guard_Facing[Guard_Index] over 0.50 seconds
-








Unit Group - Remove Guard_Unit from Guard_MovingGroup.
-
-







Else - Actions
-
-
-
-
-



Else - Actions
-
-


Custom script: call RemoveLocation( udg_Guard_Temp_Point)
-


Custom script: call DestroyGroup( udg_Guard_Group)
-
-
-
Guard Movement
-

Events
-


Time - Every 0.05 seconds of game time
-
-

Conditions
-

Actions
-


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



Loop - Actions
-




Set Guard_Unit = (Picked unit)
-




Set Guard_Index = (Custom value of Guard_Unit)
-




Set Guard_Temp_Point = (Position of Guard_Unit)
-




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





If - Conditions
-






(Distance between Guard_Temp_Point and Guard_Position[Guard_Index]) Greater than 10.00
-
-





Then - Actions
-






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







If - Conditions
-








Guard_SpeedBoost[Guard_Index] Equal to False
-
-







Then - Actions
-








Set Guard_SpeedBoost[Guard_Index] = True
-








Animation - Change Guard_Unit's animation speed to 200.00% of its original speed
-








Unit - Set Guard_Unit movement speed to ((Default movement speed of Guard_Unit) + 150.00)
-








Set Guard_Temp_Point = (Guard_Position[Guard_Index] offset by 10.00 towards (Angle from Guard_Temp_Point to Guard_Position[Guard_Index]) degrees.)
-








Unit - Order Guard_Unit to Move To Guard_Temp_Point
-
-







Else - Actions
-








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









If - Conditions
-










Guard_SpeedBoost[Guard_Index] Equal to True
-
-









Then - Actions
-










Set Guard_SpeedBoost[Guard_Index] = False
-










Animation - Change Guard_Unit's animation speed to 100.00% of its original speed
-










Unit - Set Guard_Unit movement speed to (Default movement speed of Guard_Unit)
-










Unit Group - Remove Guard_Unit from Guard_MovingGroup.
-
-









Else - Actions
-
-
-
-
-





Else - Actions
-
-
-
-


Custom script: call RemoveLocation( udg_Guard_Temp_Point)
-
-
-
Guard Mech
-

Events
-


Time - Every 1.00 seconds of game time
-
-

Conditions
-

Actions
-


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



If - Conditions
-




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



Then - Actions
-




Trigger - Turn on Guard Movement <gen>
-
-



Else - Actions
-




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





If - Conditions
-






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





Then - Actions
-






Trigger - Turn off Guard Movement <gen>
-
-





Else - Actions
-
-
-
-
-




