Create
Return to post

Comparing difference between and

View raw
  • 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;
  • }
  • }
Join the Workshop.codes Discord