Return to post
- settings
- {
- main
- {
- Description: "Overwatch 2 Push Gamemode - made by Waitedboat4#2760 - Update V2: New Way to Capture"
- }
- lobby
- {
- Max Team 1 Players: 5
- Max Team 2 Players: 5
- }
- modes
- {
- Control
- {
- Capture Speed Modifier: 10%
- Limit Valid Control Points: First
- Score To Win: 1
- Scoring Speed Modifier: 10%
- enabled maps
- {
- Busan
- }
- }
- disabled Skirmish
- {
- Limit Valid Control Points: First
- }
General
{
Game Mode Start: Immediately
Limit Roles: 2 Of Each Role Per Team
}
- }
- }
- variables
- {
- global:
- 0: _extendedGlobalCollection
- 2: Nodes
- 3: Segments
- 4: Attributes
- 5: map
- 6: _classIndexes
- 7: _tempNodes
- 8: _tempSegments
- 9: _tempAttributes
- 10: FollowingTeam1
- 11: FollowingTeam2
- 12: Contested
- 13: ContestedHUD
- 14: CapturePercent
- 15: InWorldNames
- 16: CaptureObjective
- 17: CapturePercentText
- 18: Lastonpointteam1
- 19: Lastonpointteam2
- player:
- 0: _extendedPlayerCollection
- 1: pathfinderDoGetCurrent
- 2: pathfinderCurrent
- 3: pathmapReference
- 4: parentArray
- 5: destination
- 6: lastAttribute
- 7: Dijkstra_Final_Path
- 8: Dijkstra_Final_Path_Attributes
- 9: Dijkstra_Current
- 10: Dijkstra_Distances
- 11: Dijkstra_Unvisited
- 12: Dijkstra_Connected_Segments
- 13: Dijkstra_Neighbor_Index
- 14: Dijkstra_Distance
- 15: Dijkstra_Neighbor_Attributes
- 16: Dijkstra_Parent_Array
- 17: Dijkstra_Final_Path_0
- 18: Dijkstra_Final_Path_Attributes_0
- 19: Dijkstra_Current_0
- 20: Dijkstra_Distances_0
- 21: Dijkstra_Unvisited_0
- 22: Dijkstra_Connected_Segments_0
- 23: Dijkstra_Neighbor_Index_0
- 24: Dijkstra_Distance_0
- 25: Dijkstra_Neighbor_Attributes_0
- 26: Dijkstra_Parent_Array_0
- 27: Invis
- }
- rule("Stop time")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Control Mode Point Locked == True;
- }
- actions
- {
- Pause Match Time;
- }
- }
- rule("Initial Global")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Current Map == Map(Busan);
- }
- actions
- {
- Global._classIndexes[1000] = 0;
- Global._extendedGlobalCollection[1] = Index Of Array Value(Global._classIndexes, 0);
- Global._classIndexes[Global._extendedGlobalCollection[1]] = -1;
- Global._tempNodes = Empty Array;
- Global._tempSegments = Empty Array;
- Global._tempAttributes = Empty Array;
- Modify Global Variable(_tempNodes, Append To Array, Vector(52.020, 6, -91.870));
- Modify Global Variable(_tempNodes, Append To Array, Vector(45.190, 6, -91.690));
- Modify Global Variable(_tempNodes, Append To Array, Vector(44.660, 4.870, -79.360));
- Modify Global Variable(_tempNodes, Append To Array, Vector(19.010, 8, -81.320));
- Modify Global Variable(_tempNodes, Append To Array, Vector(18, 10, -96.220));
- Modify Global Variable(_tempNodes, Append To Array, Vector(16.630, 12.930, -125.690));
- Modify Global Variable(_tempNodes, Append To Array, Vector(-6.520, 15.930, -125.540));
- Modify Global Variable(_tempNodes, Append To Array, Vector(58.750, 6, -92.350));
- Modify Global Variable(_tempNodes, Append To Array, Vector(60.430, 4.870, -80.500));
- Modify Global Variable(_tempNodes, Append To Array, Vector(85.570, 8, -82.620));
- Modify Global Variable(_tempNodes, Append To Array, Vector(86.150, 12.930, -125.360));
- Modify Global Variable(_tempNodes, Append To Array, Vector(109.380, 15.930, -125.410));
- Modify Global Variable(_tempSegments, Append To Array, Up);
- Modify Global Variable(_tempSegments, Append To Array, Vector(1, 2, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(2, 3, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(3, 4, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(4, 5, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(5, 6, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(Empty Array, 7, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(7, 8, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(8, 9, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(9, 10, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(10, 11, Empty Array));
- Global.Nodes[Global._extendedGlobalCollection[1]] = Global._tempNodes;
- Global.Segments[Global._extendedGlobalCollection[1]] = Global._tempSegments;
- Global.Attributes[Global._extendedGlobalCollection[1]] = Global._tempAttributes;
- Global.map = Global._extendedGlobalCollection[1];
- }
- }
- rule("Disable - Global")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- }
- actions
- {
- Disable Built-In Game Mode Completion;
- Disable Built-In Game Mode Scoring;
- Big Message(All Players(All Teams), Custom String("ESCORT THE ROBOT"));
- }
- }
- rule("Disable - Player")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
conditions
{
Is Game In Progress == True;
}
- actions
- {
- Disable Game Mode In-World UI(Event Player);
- Disable Game Mode HUD(Event Player);
- }
- }
- disabled rule("Skip")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Host Player == Event Player;
- (Is Assembling Heroes || Is In Setup == True) == True;
- }
- actions
- {
- Set Match Time(0);
- }
- }
- rule("Reset Variables")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- }
- actions
- {
- Global.FollowingTeam1 = False;
- Global.FollowingTeam2 = False;
- Global.Contested = False;
- }
- }
- rule("Create Robot - Busan")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Current Map == Map(Busan);
- Is Game In Progress == True;
- }
- actions
- {
- Create Dummy Bot(Hero(Bastion), Team 1, 6, Vector(51.926, 7.551, -92.998), Forward);
- }
- }
rule("Create Robot Icon")
{
event
{
Ongoing - Each Player;
All;
Bastion;
}
conditions
{
Is Dummy Bot(Event Player) == True;
}
actions
{
Create Icon(All Players(All Teams), Event Player, Flag, Visible To and Position, Blue, True);
}
}
- rule("Robot Settings")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Bastion;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Alive(Event Player) == True;
- }
- actions
- {
- Start Scaling Player(Event Player, 2, True);
- Disable Nameplates(Event Player, All Players(All Teams));
- Start Forcing Player Outlines(Event Player, All Players(All Teams), False, White);
- Set Status(Event Player, Null, Phased Out, 9999);
- Disable Movement Collision With Environment(Event Player, False);
- Disable Movement Collision With Players(Event Player);
- Create Effect(All Players(All Teams), Ring, Blue, Position Of(Event Player), 5, Visible To Position and Radius);
- }
- }
- rule("Robot Throttle - Team 1")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Bastion;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
Count Of(Filtered Array(Filtered Array(Players Within Radius(Event Player, 5, Team 1, Off), !Is Dummy Bot(Current Array Element)),
Is Alive(Current Array Element))) >= 1;
Count Of(Filtered Array(Filtered Array(Players Within Radius(Event Player, 5, Team 2, Off), !Is Dummy Bot(Current Array Element)),
Is Alive(Current Array Element))) <= 0;
- Count Of(Filtered Array(Filtered Array(Filtered Array(Players Within Radius(Event Player, 5, Team 1, Off),
- Current Array Element.Invis == False), !Is Dummy Bot(Current Array Element)), Is Alive(Current Array Element))) >= 1;
- Count Of(Filtered Array(Filtered Array(Filtered Array(Players Within Radius(Event Player, 5, Team 2, Off),
- Current Array Element.Invis == False), !Is Dummy Bot(Current Array Element)), Is Alive(Current Array Element))) <= 0;
- Is Game In Progress == True;
- }
- actions
- {
- Global.FollowingTeam1 = True;
- Global.Contested = False;
- }
- }
- rule("Robot Throttle - Team 2")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Bastion;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
Count Of(Filtered Array(Filtered Array(Players Within Radius(Event Player, 5, Team 1, Off), !Is Dummy Bot(Current Array Element)),
Is Alive(Current Array Element))) <= 0;
Count Of(Filtered Array(Players Within Radius(Event Player, 5, Team 2, Off), Is Alive(Current Array Element))) >= 1;
- Count Of(Filtered Array(Filtered Array(Filtered Array(Players Within Radius(Event Player, 5, Team 1, Off),
- Current Array Element.Invis == False), !Is Dummy Bot(Current Array Element)), Is Alive(Current Array Element))) <= 0;
- Count Of(Filtered Array(Filtered Array(Filtered Array(Players Within Radius(Event Player, 5, Team 2, Off),
- Current Array Element.Invis == False), !Is Dummy Bot(Current Array Element)), Is Alive(Current Array Element))) >= 1;
- Is Game In Progress == True;
- }
- actions
- {
- Global.FollowingTeam2 = True;
- Global.Contested = False;
- }
- }
- rule("Pathfinder: Resolve Current")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Event Player.pathfinderDoGetCurrent == True;
- }
- actions
- {
- Event Player.pathfinderCurrent = Index Of Array Value(Global.Nodes[Event Player.pathmapReference], First Of(Sorted Array(
- Global.Nodes[Event Player.pathmapReference], Distance Between(Position Of(Event Player), Current Array Element))));
- Start Throttle In Direction(Event Player, Direction Towards(Position Of(Event Player),
- Event Player.pathfinderCurrent == -1 ? Event Player.destination : Global.Nodes[Event Player.pathmapReference][Event Player.pathfinderCurrent]),
- 1, To World, Replace existing throttle, Direction and Magnitude);
Start Facing(Event Player, Direction Towards(Position Of(Event Player),
Event Player.pathfinderCurrent == -1 ? Event Player.destination : Global.Nodes[Event Player.pathmapReference][Event Player.pathfinderCurrent]),
1, To World, Direction and Turn Rate);
- Event Player.pathfinderDoGetCurrent = False;
- }
- }
- rule("Pathfinder: Resolve Next")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Distance Between(Position Of(Event Player),
- Event Player.pathfinderCurrent == -1 ? Event Player.destination : Global.Nodes[Event Player.pathmapReference][Event Player.pathfinderCurrent])
- <= 0.400;
- Event Player.parentArray != Null;
- }
- actions
- {
- If(Event Player.pathfinderCurrent != -1);
- Event Player.lastAttribute = Mapped Array(Filtered Array(Global.Attributes[Event Player.pathmapReference], X Component Of(
- Current Array Element) == Event Player.pathfinderCurrent && Y Component Of(Current Array Element)
- == Event Player.parentArray[Event Player.pathfinderCurrent] - 1), Z Component Of(Current Array Element));
- Event Player.pathfinderCurrent = Event Player.parentArray[Event Player.pathfinderCurrent] - 1;
- Else;
- Stop Throttle In Direction(Event Player);
- Event Player.parentArray = Null;
- End;
- }
- }
- rule("Robot Stop Throttle")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Bastion;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
Count Of(Filtered Array(Filtered Array(Players Within Radius(Event Player, 5, Team 1, Off), !Is Dummy Bot(Current Array Element)),
Is Alive(Current Array Element))) >= 1;
Count Of(Filtered Array(Players Within Radius(Event Player, 5, Team 2, Off), Is Alive(Current Array Element))) >= 1;
- Count Of(Filtered Array(Filtered Array(Filtered Array(Players Within Radius(Event Player, 5, Team 1, Off),
- Current Array Element.Invis == False), !Is Dummy Bot(Current Array Element)), Is Alive(Current Array Element))) >= 1;
- Count Of(Filtered Array(Filtered Array(Filtered Array(Players Within Radius(Event Player, 5, Team 2, Off),
- Current Array Element.Invis == False), !Is Dummy Bot(Current Array Element)), Is Alive(Current Array Element))) >= 1;
- Is Game In Progress == True;
- }
- actions
- {
- Stop Throttle In Direction(Event Player);
- Global.Contested = True;
- Global.FollowingTeam1 = False;
- Global.FollowingTeam2 = False;
- }
- }
- rule("Robot Stop Throttle")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Bastion;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
Count Of(Filtered Array(Filtered Array(Players Within Radius(Event Player, 5, Team 1, Off), !Is Dummy Bot(Current Array Element)),
Is Alive(Current Array Element))) <= 0;
Count Of(Filtered Array(Players Within Radius(Event Player, 5, Team 2, Off), Is Alive(Current Array Element))) <= 0;
- Count Of(Filtered Array(Filtered Array(Filtered Array(Players Within Radius(Event Player, 5, Team 1, Off),
- Current Array Element.Invis == False), !Is Dummy Bot(Current Array Element)), Is Alive(Current Array Element))) <= 0;
- Count Of(Filtered Array(Filtered Array(Filtered Array(Players Within Radius(Event Player, 5, Team 2, Off),
- Current Array Element.Invis == False), !Is Dummy Bot(Current Array Element)), Is Alive(Current Array Element))) <= 0;
- Is Game In Progress == True;
- }
- actions
- {
- Stop Throttle In Direction(Event Player);
- Global.Contested = False;
- Global.FollowingTeam1 = False;
- Global.FollowingTeam2 = False;
- }
- }
- rule("Stop at End")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Bastion;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Global.Contested == False;
- Distance Between(Event Player, Vector(-4.995, 17.185, -125.529)) <= 2;
Global.FollowingTeam1 == True;
- Global.FollowingTeam2 == True;
- }
- actions
- {
- Wait(0.250, Ignore Condition);
- Stop Throttle In Direction(Event Player);
- Event Player.parentArray = Null;
Declare Team Victory(Team 1);
- Declare Team Victory(Team 2);
- }
- }
- rule("Stop at End")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Bastion;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Global.Contested == False;
- Distance Between(Event Player, Vector(109.500, 17.185, -125.672)) <= 2;
Global.FollowingTeam2 == True;
- Global.FollowingTeam1 == True;
- }
- actions
- {
- Wait(0.250, Ignore Condition);
- Stop Throttle In Direction(Event Player);
- Event Player.parentArray = Null;
Declare Team Victory(Team 2);
- Declare Team Victory(Team 1);
- }
- }
- rule("Throttle - Team 1")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Bastion;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Alive(Event Player) == True;
- Global.FollowingTeam1 == True;
- Global.Contested == False;
- Is Game In Progress == True;
- Global.CaptureObjective == False;
- }
- actions
- {
- Event Player._extendedPlayerCollection[2] = Vector(109.500, 17.185, -125.672);
- Event Player.Dijkstra_Final_Path_0 = Empty Array;
- Event Player.Dijkstra_Final_Path_Attributes_0 = Empty Array;
- Event Player.Dijkstra_Current_0 = Index Of Array Value(Global.Nodes[Global.map], First Of(Sorted Array(Global.Nodes[Global.map],
- Distance Between(Event Player._extendedPlayerCollection[2], Current Array Element))));
- Event Player.Dijkstra_Distances_0[Event Player.Dijkstra_Current_0] = 0.000;
- Event Player.Dijkstra_Unvisited_0 = Mapped Array(Global.Nodes[Global.map], Current Array Index);
- While(Is True For Any(Event Player.Dijkstra_Unvisited_0, Event Player.Dijkstra_Distances_0[Current Array Element] != 0));
- Wait(0.016, Ignore Condition);
- Event Player.Dijkstra_Connected_Segments_0 = Filtered Array(Global.Segments[Global.map], Array Contains(Append To Array(
- Append To Array(Empty Array, X Component Of(Current Array Element)), Y Component Of(Current Array Element)),
- Event Player.Dijkstra_Current_0));
- Event Player._extendedPlayerCollection[3] = 0;
- While(Event Player._extendedPlayerCollection[3] < Count Of(Event Player.Dijkstra_Connected_Segments_0));
- Wait(0.016, Ignore Condition);
- Event Player.Dijkstra_Neighbor_Index_0 = First Of(Filtered Array(Append To Array(Append To Array(Empty Array, X Component Of(
- Event Player.Dijkstra_Connected_Segments_0[Event Player._extendedPlayerCollection[3]])), Y Component Of(
- Event Player.Dijkstra_Connected_Segments_0[Event Player._extendedPlayerCollection[3]])),
- Current Array Element != Event Player.Dijkstra_Current_0));
- Event Player.Dijkstra_Distance_0 = Distance Between(Global.Nodes[Global.map][Event Player.Dijkstra_Neighbor_Index_0],
- Global.Nodes[Global.map][Event Player.Dijkstra_Current_0])
- + Event Player.Dijkstra_Distances_0[Event Player.Dijkstra_Current_0];
- Event Player.Dijkstra_Neighbor_Attributes_0 = Filtered Array(Global.Attributes[Global.map], Y Component Of(Current Array Element)
- == Event Player.Dijkstra_Current_0 && X Component Of(Current Array Element) == Event Player.Dijkstra_Neighbor_Index_0);
- If((
- Event Player.Dijkstra_Distances_0[Event Player.Dijkstra_Neighbor_Index_0] == 0 || Event Player.Dijkstra_Distance_0 < Event Player.Dijkstra_Distances_0[Event Player.Dijkstra_Neighbor_Index_0])
- && (!Count Of(Event Player.Dijkstra_Neighbor_Attributes_0) || Is True For Any(Event Player.Dijkstra_Neighbor_Attributes_0,
- Array Contains(Null, Z Component Of(Current Array Element)))));
- Event Player.Dijkstra_Distances_0[Event Player.Dijkstra_Neighbor_Index_0] = Event Player.Dijkstra_Distance_0;
- Event Player.Dijkstra_Parent_Array_0[Event Player.Dijkstra_Neighbor_Index_0] = Event Player.Dijkstra_Current_0 + 1;
- End;
- Event Player._extendedPlayerCollection[3] += 1;
- End;
- Modify Player Variable(Event Player, Dijkstra_Unvisited_0, Remove From Array By Value, Event Player.Dijkstra_Current_0);
- Skip If(Index Of Array Value(Global.Nodes[Global.map], First Of(Sorted Array(Global.Nodes[Global.map], Distance Between(
- Position Of(Event Player), Current Array Element)))) == Event Player.Dijkstra_Current_0, 2);
- Event Player.Dijkstra_Current_0 = First Of(Sorted Array(Filtered Array(Event Player.Dijkstra_Unvisited_0,
- Event Player.Dijkstra_Distances_0[Current Array Element] != 0), Event Player.Dijkstra_Distances_0[Current Array Element]));
- End;
- Event Player.pathmapReference = Global.map;
- Event Player.parentArray = Event Player.Dijkstra_Parent_Array_0;
- Event Player.destination = Event Player._extendedPlayerCollection[2];
- Event Player.pathfinderDoGetCurrent = True;
- Event Player.Dijkstra_Current_0 = 0;
- Event Player.Dijkstra_Distances_0 = 0;
- Event Player.Dijkstra_Connected_Segments_0 = 0;
- Event Player.Dijkstra_Neighbor_Index_0 = 0;
- Event Player.Dijkstra_Distance_0 = 0;
- Event Player.Dijkstra_Parent_Array_0 = 0;
- }
- }
- rule("Throttle - Team 2")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Bastion;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Alive(Event Player) == True;
- Global.FollowingTeam2 == True;
- Global.Contested == False;
- Is Game In Progress == True;
- Global.CaptureObjective == False;
- }
- actions
- {
- Event Player._extendedPlayerCollection[0] = Vector(-4.995, 17.185, -125.529);
- Event Player.Dijkstra_Final_Path = Empty Array;
- Event Player.Dijkstra_Final_Path_Attributes = Empty Array;
- Event Player.Dijkstra_Current = Index Of Array Value(Global.Nodes[Global.map], First Of(Sorted Array(Global.Nodes[Global.map],
- Distance Between(First Of(Event Player._extendedPlayerCollection), Current Array Element))));
- Event Player.Dijkstra_Distances[Event Player.Dijkstra_Current] = 0.000;
- Event Player.Dijkstra_Unvisited = Mapped Array(Global.Nodes[Global.map], Current Array Index);
- While(Is True For Any(Event Player.Dijkstra_Unvisited, Event Player.Dijkstra_Distances[Current Array Element] != 0));
- Wait(0.016, Ignore Condition);
- Event Player.Dijkstra_Connected_Segments = Filtered Array(Global.Segments[Global.map], Array Contains(Append To Array(
- Append To Array(Empty Array, X Component Of(Current Array Element)), Y Component Of(Current Array Element)),
- Event Player.Dijkstra_Current));
- Event Player._extendedPlayerCollection[1] = 0;
- While(Event Player._extendedPlayerCollection[1] < Count Of(Event Player.Dijkstra_Connected_Segments));
- Wait(0.016, Ignore Condition);
- Event Player.Dijkstra_Neighbor_Index = First Of(Filtered Array(Append To Array(Append To Array(Empty Array, X Component Of(
- Event Player.Dijkstra_Connected_Segments[Event Player._extendedPlayerCollection[1]])), Y Component Of(
- Event Player.Dijkstra_Connected_Segments[Event Player._extendedPlayerCollection[1]])),
- Current Array Element != Event Player.Dijkstra_Current));
- Event Player.Dijkstra_Distance = Distance Between(Global.Nodes[Global.map][Event Player.Dijkstra_Neighbor_Index],
- Global.Nodes[Global.map][Event Player.Dijkstra_Current]) + Event Player.Dijkstra_Distances[Event Player.Dijkstra_Current];
- Event Player.Dijkstra_Neighbor_Attributes = Filtered Array(Global.Attributes[Global.map], Y Component Of(Current Array Element)
- == Event Player.Dijkstra_Current && X Component Of(Current Array Element) == Event Player.Dijkstra_Neighbor_Index);
- If((
- Event Player.Dijkstra_Distances[Event Player.Dijkstra_Neighbor_Index] == 0 || Event Player.Dijkstra_Distance < Event Player.Dijkstra_Distances[Event Player.Dijkstra_Neighbor_Index])
- && (!Count Of(Event Player.Dijkstra_Neighbor_Attributes) || Is True For Any(Event Player.Dijkstra_Neighbor_Attributes,
- Array Contains(Null, Z Component Of(Current Array Element)))));
- Event Player.Dijkstra_Distances[Event Player.Dijkstra_Neighbor_Index] = Event Player.Dijkstra_Distance;
- Event Player.Dijkstra_Parent_Array[Event Player.Dijkstra_Neighbor_Index] = Event Player.Dijkstra_Current + 1;
- End;
- Event Player._extendedPlayerCollection[1] += 1;
- End;
- Modify Player Variable(Event Player, Dijkstra_Unvisited, Remove From Array By Value, Event Player.Dijkstra_Current);
- Skip If(Index Of Array Value(Global.Nodes[Global.map], First Of(Sorted Array(Global.Nodes[Global.map], Distance Between(
- Position Of(Event Player), Current Array Element)))) == Event Player.Dijkstra_Current, 2);
- Event Player.Dijkstra_Current = First Of(Sorted Array(Filtered Array(Event Player.Dijkstra_Unvisited,
- Event Player.Dijkstra_Distances[Current Array Element] != 0), Event Player.Dijkstra_Distances[Current Array Element]));
- End;
- Event Player.pathmapReference = Global.map;
- Event Player.parentArray = Event Player.Dijkstra_Parent_Array;
- Event Player.destination = First Of(Event Player._extendedPlayerCollection);
- Event Player.pathfinderDoGetCurrent = True;
- Event Player.Dijkstra_Current = 0;
- Event Player.Dijkstra_Distances = 0;
- Event Player.Dijkstra_Connected_Segments = 0;
- Event Player.Dijkstra_Neighbor_Index = 0;
- Event Player.Dijkstra_Distance = 0;
- Event Player.Dijkstra_Parent_Array = 0;
- }
- }
rule("Throttle - Team 2")
- rule("Contested")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Contested == True;
- }
- actions
- {
- Big Message(All Players(All Teams), Custom String("CONTESTED!"));
- Create HUD Text(All Players(All Teams), Null, Custom String("Contested!"), Null, Top, 0, White, White, White,
- Visible To and String, Default Visibility);
- Global.ContestedHUD = Last Text ID;
- }
- }
- rule("Stop Contested")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Contested == False;
- }
- actions
- {
- Set Objective Description(All Players(All Teams), Custom String("Escort The Robot"), Visible To and String);
- Destroy HUD Text(Global.ContestedHUD);
- }
- }
- rule("HUD")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- }
- actions
- {
- Create HUD Text(All Players(All Teams), Null, Custom String("Players Escorting:"), Count Of(Filtered Array(Filtered Array(
- Filtered Array(Players Within Radius(Filtered Array(Players On Hero(Hero(Bastion), Team 1), Is Dummy Bot(
- Current Array Element)), 5, Team 1, Off), Current Array Element.Invis == False), !Is Dummy Bot(Current Array Element)),
- Is Alive(Current Array Element))), Left, 0, White, Blue, Blue, Visible To and String, Default Visibility);
- Create HUD Text(All Players(All Teams), Null, Custom String("Players Escorting:"), Count Of(Filtered Array(Filtered Array(
- Filtered Array(Players Within Radius(Filtered Array(Players On Hero(Hero(Bastion), Team 1), Is Dummy Bot(
- Current Array Element)), 5, Team 2, Off), Current Array Element.Invis == False), !Is Dummy Bot(Current Array Element)),
- Is Alive(Current Array Element))), Right, 0, Red, Red, Red, Visible To and String, Default Visibility);
- Create HUD Text(All Players(All Teams), Null, Custom String("{0} THE ROBOT | {1}", Global.InWorldNames,
- Global.CapturePercent < 100 ? Custom String("{0}%", Global.CapturePercent) : Custom String("{0}", (
- Global.FollowingTeam1 || Global.FollowingTeam2) == True ? Custom String("Escorting") : Custom String("Escort"))), Null, Top, 0,
- White, White, White, Visible To and String, Default Visibility);
- }
- }
- rule("Distance Between Points")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Bastion;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
Is Alive(Event Player) == True;
- }
- actions
- {
- Create HUD Text(All Players(All Teams), Null, Custom String("Distance to End (m):"), Round To Integer(Distance Between(
- Event Player, Vector(109.500, 17.185, -125.672)) / 67.110 * 100, To Nearest), Left, 0, Blue, Blue, Blue, Visible To and String,
- Default Visibility);
- Create HUD Text(All Players(All Teams), Null, Custom String("Distance to End (m):"), Round To Integer(Distance Between(
- Event Player, Vector(-4.995, 17.185, -125.529)) / 66.260 * 100, To Nearest), Right, 0, Red, Red, Red, Visible To and String,
- Default Visibility);
- }
- }
- rule("Speed")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Bastion;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Set Move Speed(Event Player, 50);
- }
- }
- rule("Create In World Text")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- }
- actions
- {
- Create In-World Text(All Players(All Teams), Global.InWorldNames, Filtered Array(Players On Hero(Hero(Bastion), Team 1),
- Is Dummy Bot(Current Array Element)), 2, Do Not Clip, Visible To Position and String, Blue, Default Visibility);
- Create In-World Text(All Players(All Teams), Custom String("{0}%", Round To Integer(Global.CapturePercent, To Nearest)),
- Filtered Array(Players On Hero(Hero(Bastion), Team 1), Is Dummy Bot(Current Array Element)) + Vector(0, -0.001, 0), 1,
- Do Not Clip, Visible To Position and String, White, Default Visibility);
- Global.CapturePercentText = Last Text ID;
- }
- }
- rule("In World Names")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.CaptureObjective == True;
- }
- actions
- {
- Global.InWorldNames = Custom String("Capture");
- }
- }
- rule("In World Names")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.CaptureObjective == False;
- }
- actions
- {
- Global.InWorldNames = Custom String("Escort");
- }
- }
- rule("Remove Capture Percent Text")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.CapturePercent == 100;
- }
- actions
- {
- Destroy In-World Text(Global.CapturePercentText);
- Global.CaptureObjective = False;
- Play Effect(All Players(All Teams), Ring Explosion, Blue, Filtered Array(Position Of(Players On Hero(Hero(Bastion), Team 1)),
- Is Dummy Bot(Current Array Element)), 5);
- }
- }
- rule("Start Capturing")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.FollowingTeam1 == True;
- Global.Contested == False;
- Global.CaptureObjective == True;
- }
- actions
- {
- Skip If(Global.Lastonpointteam2 == False, 2);
- Wait(0.500, Abort When False);
- Global.CapturePercent = 0;
- Chase Global Variable Over Time(CapturePercent, 100, 5, Destination and Duration);
- }
- }
- rule("Start Capturing")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.FollowingTeam2 == True;
- Global.Contested == False;
Is Game In Progress == True;
- Global.CaptureObjective == True;
- }
- actions
- {
Event Player._extendedPlayerCollection[2] = Vector(109.500, 17.185, -125.672);
Event Player.Dijkstra_Final_Path_0 = Empty Array;
Event Player.Dijkstra_Final_Path_Attributes_0 = Empty Array;
Event Player.Dijkstra_Current_0 = Index Of Array Value(Global.Nodes[Global.map], First Of(Sorted Array(Global.Nodes[Global.map],
Distance Between(Event Player._extendedPlayerCollection[2], Current Array Element))));
Event Player.Dijkstra_Distances_0[Event Player.Dijkstra_Current_0] = 0.000;
Event Player.Dijkstra_Unvisited_0 = Mapped Array(Global.Nodes[Global.map], Current Array Index);
While(Is True For Any(Event Player.Dijkstra_Unvisited_0, Event Player.Dijkstra_Distances_0[Current Array Element] != 0));
Wait(0.016, Ignore Condition);
Event Player.Dijkstra_Connected_Segments_0 = Filtered Array(Global.Segments[Global.map], Array Contains(Append To Array(
Append To Array(Empty Array, X Component Of(Current Array Element)), Y Component Of(Current Array Element)),
Event Player.Dijkstra_Current_0));
Event Player._extendedPlayerCollection[3] = 0;
While(Event Player._extendedPlayerCollection[3] < Count Of(Event Player.Dijkstra_Connected_Segments_0));
Wait(0.016, Ignore Condition);
Event Player.Dijkstra_Neighbor_Index_0 = First Of(Filtered Array(Append To Array(Append To Array(Empty Array, X Component Of(
Event Player.Dijkstra_Connected_Segments_0[Event Player._extendedPlayerCollection[3]])), Y Component Of(
Event Player.Dijkstra_Connected_Segments_0[Event Player._extendedPlayerCollection[3]])),
Current Array Element != Event Player.Dijkstra_Current_0));
Event Player.Dijkstra_Distance_0 = Distance Between(Global.Nodes[Global.map][Event Player.Dijkstra_Neighbor_Index_0],
Global.Nodes[Global.map][Event Player.Dijkstra_Current_0])
+ Event Player.Dijkstra_Distances_0[Event Player.Dijkstra_Current_0];
Event Player.Dijkstra_Neighbor_Attributes_0 = Filtered Array(Global.Attributes[Global.map], Y Component Of(Current Array Element)
== Event Player.Dijkstra_Current_0 && X Component Of(Current Array Element) == Event Player.Dijkstra_Neighbor_Index_0);
If((
Event Player.Dijkstra_Distances_0[Event Player.Dijkstra_Neighbor_Index_0] == 0 || Event Player.Dijkstra_Distance_0 < Event Player.Dijkstra_Distances_0[Event Player.Dijkstra_Neighbor_Index_0])
&& (!Count Of(Event Player.Dijkstra_Neighbor_Attributes_0) || Is True For Any(Event Player.Dijkstra_Neighbor_Attributes_0,
Array Contains(Null, Z Component Of(Current Array Element)))));
Event Player.Dijkstra_Distances_0[Event Player.Dijkstra_Neighbor_Index_0] = Event Player.Dijkstra_Distance_0;
Event Player.Dijkstra_Parent_Array_0[Event Player.Dijkstra_Neighbor_Index_0] = Event Player.Dijkstra_Current_0 + 1;
End;
Event Player._extendedPlayerCollection[3] += 1;
End;
Modify Player Variable(Event Player, Dijkstra_Unvisited_0, Remove From Array By Value, Event Player.Dijkstra_Current_0);
Skip If(Index Of Array Value(Global.Nodes[Global.map], First Of(Sorted Array(Global.Nodes[Global.map], Distance Between(
Position Of(Event Player), Current Array Element)))) == Event Player.Dijkstra_Current_0, 2);
Event Player.Dijkstra_Current_0 = First Of(Sorted Array(Filtered Array(Event Player.Dijkstra_Unvisited_0,
Event Player.Dijkstra_Distances_0[Current Array Element] != 0), Event Player.Dijkstra_Distances_0[Current Array Element]));
End;
Event Player.pathmapReference = Global.map;
Event Player.parentArray = Event Player.Dijkstra_Parent_Array_0;
Event Player.destination = Event Player._extendedPlayerCollection[2];
Event Player.pathfinderDoGetCurrent = True;
Event Player.Dijkstra_Current_0 = 0;
Event Player.Dijkstra_Distances_0 = 0;
Event Player.Dijkstra_Connected_Segments_0 = 0;
Event Player.Dijkstra_Neighbor_Index_0 = 0;
Event Player.Dijkstra_Distance_0 = 0;
Event Player.Dijkstra_Parent_Array_0 = 0;
- Skip If(Global.Lastonpointteam1 == False, 2);
- Wait(0.500, Abort When False);
- Global.CapturePercent = 0;
- Chase Global Variable Over Time(CapturePercent, 100, 5, Destination and Duration);
- }
- }
rule("Contested")
- rule("Set Capture Objective to True")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
- Global.CaptureObjective = True;
- }
- }
- rule("Stop Capturing")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.FollowingTeam1 == False;
- Global.Contested == False;
- Global.FollowingTeam2 == False;
- Global.CaptureObjective == True;
- }
- actions
- {
- Stop Chasing Global Variable(CapturePercent);
- }
- }
- rule("Stop Capturing")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
Is Game In Progress == True;
- Global.Contested == True;
- Global.CaptureObjective == True;
- }
- actions
- {
Big Message(All Players(All Teams), Custom String("CONTESTED!"));
Create HUD Text(All Players(All Teams), Null, Custom String("Contested!"), Null, Top, 0, White, White, White,
Visible To and String, Default Visibility);
Global.ContestedHUD = Last Text ID;
- Stop Chasing Global Variable(CapturePercent);
- }
- }
rule("Stop Contested")
- rule("Last on point")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
Is Game In Progress == True;
- Global.FollowingTeam2 == True;
- Global.Contested == False;
- Global.CaptureObjective == True;
- }
- actions
- {
Set Objective Description(All Players(All Teams), Custom String("Escort The Robot"), Visible To and String);
Destroy HUD Text(Global.ContestedHUD);
- Global.Lastonpointteam2 = True;
- Wait(1, Ignore Condition);
- Global.Lastonpointteam1 = False;
- }
- }
rule("HUD")
- rule("Last on point")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.FollowingTeam1 == True;
- Global.Contested == False;
- Global.CaptureObjective == True;
- }
- actions
- {
Create HUD Text(All Players(All Teams), Count Of(Filtered Array(Filtered Array(Players Within Radius(Filtered Array(
Players On Hero(Hero(Bastion), All Teams), Is Dummy Bot(Current Array Element)), 5, Team 1, Off), !Is Dummy Bot(
Current Array Element)), Is Alive(Current Array Element))), Null, Null, Left, 0, Blue, White, White, Visible To and String,
Default Visibility);
Create HUD Text(All Players(All Teams), Count Of(Filtered Array(Filtered Array(Players Within Radius(Filtered Array(
Players On Hero(Hero(Bastion), All Teams), Is Dummy Bot(Current Array Element)), 5, Team 2, Off), !Is Dummy Bot(
Current Array Element)), Is Alive(Current Array Element))), Null, Null, Right, 0, Red, White, White, Visible To and String,
Default Visibility);
- Global.Lastonpointteam1 = True;
- Wait(1, Ignore Condition);
- Global.Lastonpointteam2 = False;
- }
- }
rule("Distance Between Points")
- rule("Sombra Invis")
- {
- event
- {
- Ongoing - Each Player;
- All;
Bastion;
- Sombra;
- }
- conditions
- {
Is Dummy Bot(Event Player) == True;
- Is Using Ability 1(Event Player) == True;
- }
- actions
- {
Create HUD Text(All Players(All Teams), Round To Integer(Distance Between(Event Player, Vector(-4.995, 17.185, -125.529))
/ 66.260 * 100, To Nearest), Null, Null, Left, 0, Blue, White, White, Visible To and String, Default Visibility);
Create HUD Text(All Players(All Teams), Round To Integer(Distance Between(Event Player, Vector(109.500, 17.185, -125.672))
/ 66.260 * 100, To Nearest), Null, Null, Right, 0, Red, White, White, Visible To and String, Default Visibility);
- Event Player.Invis = True;
- }
- }
rule("Speed")
- rule("Sombra Invis")
- {
- event
- {
- Ongoing - Each Player;
- All;
Bastion;
- Sombra;
- }
- conditions
- {
Is Dummy Bot(Event Player) == True;
- Is Using Ability 1(Event Player) == False;
- }
- actions
- {
Set Move Speed(Event Player, 50);
- Event Player.Invis = False;
- }
- }