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
- }
- }
- }
- 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("Created by Waitedboat4#2760 Please Do Not Steal :)")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- actions
- {
- Create HUD Text(Event Player, Null, Custom String("https://workshop.codes/overwatch2push"), Null, Top, 0, White, Green, Green,
- Visible To and String, Default Visibility);
- Create HUD Text(Event Player, Null, Null, Custom String("Created By Waitedboat4#2760"), Top, 0, White, Green, Green,
- Visible To and String, Default Visibility);
- }
- }
- 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;
- }
- 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("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(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(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);
- 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(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(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.FollowingTeam2 == True;
- }
- actions
- {
- Wait(0.250, Ignore Condition);
- Stop Throttle In Direction(Event Player);
- Event Player.parentArray = Null;
- 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.FollowingTeam1 == True;
- }
- actions
- {
- Wait(0.250, Ignore Condition);
- Stop Throttle In Direction(Event Player);
- Event Player.parentArray = Null;
- 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("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
- {
- Destroy All HUD Text;
- Wait(0.250, Ignore Condition);
- 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;
- }
- 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);
- Set Move Speed(Event Player, Workshop Setting Integer(Custom String("Settings"), Custom String("Robot Walking Speed"), 50, 50,
- 100));
- }
- }
- 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);
- Filtered Array(Players On Hero(Hero(Bastion), Team 1), Is Dummy Bot(Current Array Element)), 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;
- Global.CaptureObjective == True;
- }
- actions
- {
- 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("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
- {
- Global.Contested == True;
- Global.CaptureObjective == True;
- }
- actions
- {
- Stop Chasing Global Variable(CapturePercent);
- }
- }
- rule("Last on point")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.FollowingTeam2 == True;
- Global.Contested == False;
- Global.CaptureObjective == True;
- }
- actions
- {
- Global.Lastonpointteam2 = True;
- Wait(1, Ignore Condition);
- Global.Lastonpointteam1 = False;
- }
- }
- rule("Last on point")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.FollowingTeam1 == True;
- Global.Contested == False;
- Global.CaptureObjective == True;
- }
- actions
- {
- Global.Lastonpointteam1 = True;
- Wait(1, Ignore Condition);
- Global.Lastonpointteam2 = False;
- }
- }
- rule("Sombra Invis")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Sombra;
- }
- conditions
- {
- Is Using Ability 1(Event Player) == True;
- }
- actions
- {
- Event Player.Invis = True;
- }
- }
- rule("Sombra Invis")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Sombra;
- }
- conditions
- {
- Is Using Ability 1(Event Player) == False;
- }
- actions
- {
- Event Player.Invis = False;
- }
- }