Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "Junkenstein: The Hidden Truth PVE - made by Waitedboat4#2760 - v3.2: Mercy Circles Pocket"
  • }
  • lobby
  • {
  • Max Team 1 Players: 4
  • Max Team 2 Players: 0
  • Return To Lobby: Never
  • }
  • modes
  • {
  • Assault
  • {
  • enabled maps
  • {
  • }
  • }
  • Control
  • {
  • enabled maps
  • {
  • }
  • }
  • Escort
  • {
  • enabled maps
  • {
  • }
  • }
  • Hybrid
  • {
  • enabled maps
  • {
  • }
  • }
  • Team Deathmatch
  • {
  • Game Length In Minutes: 15
  • Mercy Resurrect Counteracts Kills: Off
  • Self Initiated Respawn: Off
  • enabled maps
  • {
  • Château Guillard Halloween
  • }
  • }
  • General
  • {
  • Allow Hero Switching: Off
  • Game Mode Start: Immediately
  • Kill Cam: Off
  • Spawn Health Packs: Disabled
  • }
  • }
  • heroes
  • {
  • Team 2
  • {
  • Junkrat
  • {
  • No Ammunition Requirement: On
  • Ultimate Ability RIP-Tire: Off
  • }
  • Mercy
  • {
  • Weapons Enabled: Caduceus Staff Only
  • }
  • Symmetra
  • {
  • Spawn With Ultimate Ready: On
  • }
  • Zarya
  • {
  • Health: 40%
  • }
  • Zenyatta
  • {
  • Movement Speed: 65%
  • }
  • }
  • }
  • }
  • variables
  • {
  • global:
  • 0: _extendedGlobalCollection
  • 2: Nodes
  • 3: Segments
  • 4: Attributes
  • 5: UndeadSpawnPoints
  • 6: map
  • 7: _classIndexes
  • 8: _tempNodes
  • 9: _tempSegments
  • 10: _tempAttributes
  • 11: TeamScore
  • 12: Health
  • 13: Junkdiff
  • 14: Reapdiff
  • 15: Mondiff
  • 16: Sumdiff
  • 17: Witchdiff
  • 18: CurrentPoint
  • 19: PointChange
  • 20: TargetPoint
  • 21: Reaperintro
  • 22: Monintro
  • 23: Junkintro
  • 24: Sumintro
  • 25: Witchintro
  • 26: NumberofZomnics
  • 27: Effects
  • 28: PlayerSpeaking
  • 29: Stopspawningzomnics
  • 30: HealthText
  • 31: LastPoint
  • 32: LastLastPoint
  • 33: CurrentMission
  • 34: NumberofZombardiers
  • 35: Objectivedescription
  • 36: RevengeIntro
  • 38: CurrentBonusKills
  • 50: Normal
  • 51: Hard
  • 52: Expert
  • 53: Legendary
  • 62: Kills
  • player:
  • 0: _extendedPlayerCollection
  • 3: pathfinderDoGetCurrent
  • 4: Finishedpath
  • 5: pathmapReference
  • 6: Scoreboard
  • 7: destination
  • 8: lastAttribute
  • 9: Dijkstra_Final_Path
  • 10: parentArray
  • 11: Dijkstra_Current
  • 12: Dijkstra_Distances
  • 13: Dijkstra_Unvisited
  • 14: Dijkstra_Connected_Segments
  • 15: Dijkstra_Neighbor_Index
  • 16: Dijkstra_Distance
  • 17: Dijkstra_Neighbor_Attributes
  • 18: Dijkstra_Parent_Array
  • 19: Invis
  • 20: FarIcon
  • 23: Dijkstra_Final_Path_0
  • 24: Dijkstra_Final_Path_Attributes_0
  • 25: Dijkstra_Current_0
  • 26: Dijkstra_Distances_0
  • 27: Dijkstra_Unvisited_0
  • 28: Dijkstra_Connected_Segments_0
  • 29: Dijkstra_Neighbor_Index_0
  • 30: Dijkstra_Distance_0
  • 31: Dijkstra_Neighbor_Attributes_0
  • 32: Dijkstra_Parent_Array_0
  • 33: Dijkstra_Final_Path_1
  • 34: Dijkstra_Final_Path_Attributes_1
  • 35: Dijkstra_Current_1
  • 36: Dijkstra_Distances_1
  • 37: Dijkstra_Unvisited_1
  • 38: Dijkstra_Connected_Segments_1
  • 39: Dijkstra_Neighbor_Index_1
  • 40: Dijkstra_Distance_1
  • 41: Dijkstra_Neighbor_Attributes_1
  • 42: Dijkstra_Parent_Array_1
  • 43: Dijkstra_Final_Path_2
  • 44: Dijkstra_Final_Path_Attributes_2
  • 45: Dijkstra_Current_2
  • 46: Dijkstra_Distances_2
  • 47: Dijkstra_Unvisited_2
  • 48: Dijkstra_Connected_Segments_2
  • 49: Dijkstra_Neighbor_Index_2
  • 50: Dijkstra_Distance_2
  • 51: Dijkstra_Neighbor_Attributes_2
  • 52: Dijkstra_Parent_Array_2
  • 53: Dijkstra_Final_Path_3
  • 54: Dijkstra_Final_Path_Attributes_3
  • 55: Dijkstra_Current_3
  • 56: Dijkstra_Distances_3
  • 57: Dijkstra_Unvisited_3
  • 58: Dijkstra_Connected_Segments_3
  • 59: Dijkstra_Neighbor_Index_3
  • 60: Dijkstra_Distance_3
  • 61: Dijkstra_Neighbor_Attributes_3
  • 62: Dijkstra_Parent_Array_3
  • }
  • rule("Me")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Create HUD Text(Event Player, Null, Custom String("https://workshop.codes/hiddentruth"), Null, Right, 0, White, Green, Green,
  • Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Null, Custom String("Created by Waitedboat4#2760\r"), Right, 0, White, White, Green,
  • Visible To and String, Default Visibility);
  • }
  • }
  • rule("Set Spawn")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • (Is Waiting For Players || Is Game In Progress) == True;
  • }
  • actions
  • {
  • Global.CurrentPoint = Vector(181.170, 10.550, 101.947);
  • Global.TargetPoint = Vector(177.611, 10.551, 102.304);
  • Global.CurrentMission = Custom String("Defend The Documents");
  • }
  • }
  • rule("Initial Global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • 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(180.730, 9, 102.110));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(193.440, 8, 101.900));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(205.990, 8.030, 101.580));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(211.630, 8, 103.350));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(211.900, 8, 100.180));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(215.880, 8, 100.080));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(216.250, 8, 95.850));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(206.640, 9.030, 95.570));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(194.980, 8, 95.620));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(194.940, 8, 93.070));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(219.490, 6, 103.640));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(229.360, 4, 104.100));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(229.010, 4, 114.780));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(236.410, 4, 114.140));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(237.220, 4, 104.860));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(236.590, 2, 90.040));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(219.280, 2, 90.620));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(219.660, 1, 81.500));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(219.660, 1.060, 76.060));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(209.020, Empty Array, 80.850));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(209.430, 0.040, 74.350));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(203.050, Empty Array, 74.880));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(202.650, Empty Array, 81.650));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(197.010, 1, 81.460));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(197.430, 1, 75.070));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(186.200, 1, 80.660));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(187.300, 1, 92.590));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(176.300, 5, 92.530));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(175.810, 5, 76.560));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(170.110, 5, 76.990));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(171.310, 5, 85.390));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(176.140, 5, 85.800));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(173.140, 5, 76.200));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(172.940, 7, 66.550));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(173.400, 7, 56.770));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(183.160, 8, 56.120));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(183.870, 8, 64.480));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(183.580, 6, 76.120));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(185.690, 6, 75.440));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(185.220, 6, 85.950));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(187.970, 6, 92.680));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(188.430, 6, 80.900));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(188.660, 8, 63.910));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(200.580, 8, 62.950));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(200.910, 8, 51.080));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(211.040, 8, 51.090));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(210.620, 8, 62.100));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(220.950, 9, 62.570));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(221.420, 8, 76.320));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(220.210, 8, 81.270));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(206.510, 9, 81.220));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(206.520, 8, 62.720));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(208.960, 8.050, 48.160));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(208.050, 8, 52.020));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(208.200, 9, 44.880));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(217.610, 12, 45.250));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(216.940, 14, 61.590));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(228.900, 13, 62.170));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(230, 9, 77.460));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(193.270, 1, 75.860));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(193.850, 1, 68.560));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(188.080, 1, 69.290));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(188.390, 3, 52.500));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(196.690, 16.500, 51.100));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(196.430, 16.500, 46.590));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(212.660, 16.500, 47.750));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(205.270, 8, 110.280));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(192.890, 9, 110.840));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(21, 22, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(21, 19, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(21, 20, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(22, 19, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(22, 20, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(19, 20, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(25, 26, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(26, 27, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(27, 31, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(31, 28, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(28, 32, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(32, 29, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(29, 30, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(30, 31, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(31, 39, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(39, 40, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(39, 41, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(41, 38, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(38, 37, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(37, 36, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(36, 42, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(42, 43, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(41, 23, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(23, 22, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(23, 59, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(23, 25, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(24, 23, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(59, 24, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(24, 21, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(21, 59, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(59, 60, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(60, 61, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(61, 62, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(20, 18, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(18, 17, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(17, 16, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(16, 10, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(10, 3, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(10, 11, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(11, 14, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(14, 15, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(15, 16, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(14, 13, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(13, 12, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(12, 11, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(12, 66, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(66, 67, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(67, 1, Empty Array));
  • 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(6, 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, 40, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(8, 1, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Left);
  • Modify Global Variable(_tempSegments, Append To Array, Vector(2, 7, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(2, 66, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(17, 19, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(62, 63, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(63, 64, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(64, 65, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(63, 44, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(44, 43, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(43, 51, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(51, 46, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(46, 45, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(45, 53, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(53, 52, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(52, 54, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(54, 55, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(55, 56, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(56, 57, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(57, 58, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(58, 48, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(48, 49, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(49, 50, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(50, 51, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(46, 47, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(47, 48, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(53, 44, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(36, 35, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(35, 34, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(34, 33, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(33, 32, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(37, 28, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(62, 42, Empty Array));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(23, 41, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(44, 63, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(62, 42, 1));
  • 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 Announcer;
  • Disable Built-In Game Mode Completion;
  • Disable Built-In Game Mode Scoring;
  • Wait(1, Ignore Condition);
  • Big Message(All Players(Team 1), Custom String("DEFEND THE DOCUMENTS!"));
  • Global.Stopspawningzomnics = False;
  • Global.LastLastPoint = False;
  • }
  • }
  • rule("Disable Player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Disable Game Mode HUD(Event Player);
  • Disable Game Mode In-World UI(Event Player);
  • }
  • }
  • rule("Player Spawn")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Teleport(Event Player, Global.CurrentPoint);
  • Set Facing(Event Player, Global.CurrentPoint + Forward, To World);
  • }
  • }
  • rule("Undead Spawn Area")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.UndeadSpawnPoints = Array(Vector(234.901, 5.550, 106.058), Vector(234.456, 3.550, 90.082), Vector(193.474, 10.550, 113.696),
  • Vector(218.414, 12.455, 45.828), Vector(174.689, 7.455, 56.794));
  • Global.Health = Workshop Setting Integer(Custom String("Settings"), Custom String("Documents Health"), 2000, 80, 9999999);
  • }
  • }
  • rule("Create Zomnics")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Number of Heroes(Hero(Zenyatta), Team 2) < Global.NumberofZomnics;
  • Global.PointChange == False;
  • Global.Stopspawningzomnics == False;
  • }
  • actions
  • {
  • Wait(Random Integer(0, 5), Ignore Condition);
  • Abort If(Global.Stopspawningzomnics == True);
  • Abort If(Global.PointChange == True);
  • Create Dummy Bot(Hero(Zenyatta), Team 2, -1, Random Value In Array(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array,
  • Empty Array));
  • Loop If(Number of Heroes(Hero(Zenyatta), Team 2) < Global.NumberofZomnics);
  • }
  • }
  • rule("Pathfind to Documents")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Zenyatta;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Event Player, Global.TargetPoint) > 2;
  • Global.PointChange == False;
  • Global.Stopspawningzomnics == False;
  • }
  • actions
  • {
  • Start Facing(Event Player, Direction Towards(Event Player, Event Player._extendedPlayerCollection[2]), 200, To World,
  • Direction and Turn Rate);
  • Event Player._extendedPlayerCollection[2] = Global.TargetPoint;
  • 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.Scoreboard = 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("Documents Explode")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Zenyatta;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Distance Between(Event Player, Global.TargetPoint) <= 2;
  • }
  • actions
  • {
  • Stop Throttle In Direction(Event Player);
  • Stop Facing(Event Player);
  • Set Status(Event Player, Null, Stunned, 1);
  • Wait(1, Abort When False);
  • Play Effect(All Players(All Teams), Good Explosion, Red, Event Player, 5);
  • Damage(Players Within Radius(Event Player, 5, Team 1, Surfaces And All Barriers), Event Player, 20);
  • Global.Health -= 80;
  • Destroy Dummy Bot(Team Of(Event Player), Slot Of(Event Player));
  • }
  • }
  • rule("HUD")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Team Score: {0}", Global.TeamScore), Left, 0, White, White,
  • White, Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("{0}", Global.CurrentMission), Top, 1, White, White, White,
  • Visible To and String, Default Visibility);
  • Global.Objectivedescription = Last Created Entity;
  • Wait(0.250, Ignore Condition);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("{0} {1}%", Icon String(Plus), Global.Health), Top, 2, White,
  • White, White, Visible To and String, Default Visibility);
  • Global.HealthText = Last Text ID;
  • }
  • }
  • rule("HUD - Each Player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • actions
  • {
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("{0} | {1}HP | {2}%", Custom String("{0} {1}", Is Alive(
  • Event Player) == True ? Hero Icon String(Hero Of(Event Player)) : Icon String(X), Event Player), Health(Event Player),
  • Ultimate Charge Percent(Event Player)), Left, 2, White, White, White, Visible To and String, Default Visibility);
  • }
  • }
  • rule("Die Instantly")
  • {
  • event
  • {
  • Player Died;
  • Team 2;
  • All;
  • }
  • actions
  • {
  • Wait(0.500, Ignore Condition);
  • Destroy Dummy Bot(Team Of(Event Player), Slot Of(Event Player));
  • }
  • }
  • rule("Lose")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Health <= 0;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Declare Team Victory(Team 2);
  • }
  • }
  • rule("Pathfinder: Resolve Current")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.pathfinderDoGetCurrent == True;
  • }
  • actions
  • {
  • Event Player.Finishedpath = 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.Finishedpath == -1 ? Event Player.destination : Global.Nodes[Event Player.pathmapReference][Event Player.Finishedpath]),
  • 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.Finishedpath == -1 ? Event Player.destination : Global.Nodes[Event Player.pathmapReference][Event Player.Finishedpath])
  • <= 0.400;
  • Event Player.Scoreboard != Null;
  • }
  • actions
  • {
  • If(Event Player.Finishedpath != -1);
  • Event Player.lastAttribute = Mapped Array(Filtered Array(Global.Attributes[Event Player.pathmapReference], X Component Of(
  • Current Array Element) == Event Player.Finishedpath && Y Component Of(Current Array Element)
  • == Event Player.Scoreboard[Event Player.Finishedpath] - 1), Z Component Of(Current Array Element));
  • Event Player.Finishedpath = Event Player.Scoreboard[Event Player.Finishedpath] - 1;
  • Else;
  • Stop Throttle In Direction(Event Player);
  • Event Player.Scoreboard = Null;
  • End;
  • }
  • }
  • rule("Pathfind to Player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)))) > 3;
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Hero Of(Event Player) != Hero(Zenyatta);
  • Hero Of(Event Player) != Hero(Mercy);
  • Hero Of(Event Player) != Hero(Zarya);
  • Event Player.Finishedpath == True;
  • }
  • actions
  • {
  • Event Player._extendedPlayerCollection[0] = First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(
  • Event Player))), Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)));
  • Event Player.Dijkstra_Final_Path = Empty Array;
  • Event Player.parentArray = 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.Scoreboard = 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;
  • Wait(5, Ignore Condition);
  • Loop If(Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(
  • Event Player))), Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)))) > 3);
  • }
  • }
  • rule("Stop Pathfind to player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Hero Of(Event Player) != Hero(Zenyatta);
  • Hero Of(Event Player) != Hero(Zarya);
  • Hero Of(Event Player) != Hero(Junkrat);
  • Hero Of(Event Player) != Hero(Mercy);
  • Event Player.Finishedpath == True;
  • Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(
  • Event Player, Current Array Element)))) <= 3;
  • Hero Of(Event Player) != Hero(Symmetra);
  • Hero Of(Event Player) != Hero(Reaper);
  • }
  • actions
  • {
  • Stop Throttle In Direction(Event Player);
  • Event Player.parentArray = Null;
  • Wait(Random Integer(1, 2), Ignore Condition);
  • Start Throttle In Direction(Event Player, Direction Towards(Position Of(Event Player), Position Of(First Of(Sorted Array(
  • Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Is In Line of Sight(Event Player,
  • Current Array Element, Barriers Do Not Block LOS)), Distance Between(Event Player, Current Array Element))))
  • + Direction From Angles(Total Time Elapsed * 135, 0) * 3), 1, To World, Replace existing throttle, Direction and Magnitude);
  • Wait(Random Integer(1, 2), Ignore Condition);
  • Loop If(Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)))) <= 3);
  • }
  • }
  • rule("Reaper Circle Wraith")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Reaper;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(
  • Event Player, Current Array Element)))) <= 3;
  • Event Player.Finishedpath == True;
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Start Throttle In Direction(Event Player, Direction Towards(Position Of(Event Player), Position Of(First Of(Sorted Array(
  • Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Is In Line of Sight(Event Player,
  • Current Array Element, Barriers Do Not Block LOS)), Distance Between(Event Player, Current Array Element))))
  • + Direction From Angles(Total Time Elapsed * 135, 0) * 3), 1, To World, Replace existing throttle, Direction and Magnitude);
  • }
  • }
  • rule("Stop Pathfind to player - Reaper")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Reaper;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.Finishedpath == True;
  • Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(
  • Event Player, Current Array Element)))) <= 3;
  • Is Using Ability 1(Event Player) == False;
  • }
  • actions
  • {
  • Stop Throttle In Direction(Event Player);
  • Event Player.parentArray = Null;
  • }
  • }
  • rule("Invis")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Sombra;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.Invis = True;
  • }
  • }
  • rule("Invis")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Sombra;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.Invis = False;
  • }
  • }
  • rule("Heroes")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Workshop Setting Toggle(Custom String("Settings"), Custom String("All Heroes"), False) == False;
  • }
  • actions
  • {
  • Set Player Allowed Heroes(Event Player, Array(Hero(Brigitte), Hero(Hanzo), Hero(McCree), Hero(Soldier: 76), Hero(Torbjörn), Hero(
  • Tracer), Hero(Widowmaker), Hero(Ana), Hero(Brigitte), Hero(Zenyatta), Hero(Genji)));
  • }
  • }
  • rule("Shooting")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is In Line of Sight(Event Player, First Of(Filtered Array(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)), Current Array Element.Invis == False)), Barriers Do Not Block LOS)
  • == True;
  • Hero Of(Event Player) != Hero(Zenyatta);
  • Hero Of(Event Player) != Hero(Mercy);
  • Hero Of(Event Player) != Hero(Zarya);
  • Hero Of(Event Player) != Hero(Sigma);
  • Is Using Ultimate(Event Player) == False;
  • Event Player.Finishedpath == True;
  • Hero Of(Event Player) != Hero(Junkrat);
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Primary Fire);
  • }
  • }
  • rule("Shooting")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Hero Of(Event Player) != Hero(Zenyatta);
  • Hero Of(Event Player) != Hero(Mercy);
  • Is In Line of Sight(Event Player, First Of(Filtered Array(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)), Current Array Element.Invis == False)), Barriers Do Not Block LOS)
  • == False;
  • Hero Of(Event Player) != Hero(Sigma);
  • Event Player.Finishedpath == True;
  • Hero Of(Event Player) != Hero(Junkrat);
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Primary Fire);
  • Stop Holding Button(Event Player, Secondary Fire);
  • }
  • }
  • rule("Ability 1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Ability Cooldown(Event Player, Button(Ability 1)) == 0;
  • Hero Of(Event Player) != Hero(Junkrat);
  • Hero Of(Event Player) != Hero(Zarya);
  • Hero Of(Event Player) != Hero(Zenyatta);
  • Is In Line of Sight(Event Player, First Of(Filtered Array(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)), Current Array Element.Invis == False)), Barriers Do Not Block LOS)
  • == True;
  • Hero Of(Event Player) != Hero(Roadhog);
  • Event Player.Finishedpath == True;
  • Is Using Ability 2(Event Player) == False;
  • Hero Of(Event Player) != Hero(Reaper);
  • Hero Of(Event Player) != Hero(Symmetra);
  • Hero Of(Event Player) != Hero(Mercy);
  • }
  • actions
  • {
  • Press Button(Event Player, Ability 1);
  • }
  • }
  • rule("ULT")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Ultimate Charge Percent(Event Player) == 100;
  • Hero Of(Event Player) != Hero(Zarya);
  • Hero Of(Event Player) != Hero(Zenyatta);
  • Is In Line of Sight(Event Player, First Of(Filtered Array(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)), Current Array Element.Invis == False)), Barriers Do Not Block LOS)
  • == True;
  • Hero Of(Event Player) != Hero(Junkrat);
  • Hero Of(Event Player) != Hero(Sigma);
  • Hero Of(Event Player) != Hero(Mercy);
  • Hero Of(Event Player) != Hero(Symmetra);
  • }
  • actions
  • {
  • Press Button(Event Player, Ultimate);
  • }
  • }
  • rule("Create Junkenstein")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Number of Heroes(Hero(Mercy), Team 2) == 0;
  • Global.PointChange == False;
  • Match Time > 0;
  • }
  • actions
  • {
  • Wait(Global.Junkdiff, Ignore Condition);
  • Abort If(Global.PointChange == True);
  • Abort If(Match Time <= 0);
  • Create Dummy Bot(Hero(Junkrat), Team 2, -1, Vector(195.865, 18.050, 55.760), Vector(Empty Array, Empty Array, Empty Array));
  • Loop;
  • }
  • }
  • rule("Junkrat immune to knockback")
  • {
  • event
  • {
  • Player Received Knockback;
  • Team 2;
  • Junkrat;
  • }
  • actions
  • {
  • Apply Impulse(Event Player, Event Direction, -1, To World, Cancel Contrary Motion);
  • }
  • }
  • rule("Pathfind to Player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Junkrat;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(
  • Event Player, Current Array Element)))) > 20;
  • }
  • actions
  • {
  • Event Player._extendedPlayerCollection[8] = First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)));
  • Event Player.Dijkstra_Final_Path_3 = Empty Array;
  • Event Player.Dijkstra_Final_Path_Attributes_3 = Empty Array;
  • Event Player.Dijkstra_Current_3 = Index Of Array Value(Global.Nodes[Global.map], First Of(Sorted Array(Global.Nodes[Global.map],
  • Distance Between(Event Player._extendedPlayerCollection[8], Current Array Element))));
  • Event Player.Dijkstra_Distances_3[Event Player.Dijkstra_Current_3] = 0;
  • Event Player.Dijkstra_Unvisited_3 = Mapped Array(Global.Nodes[Global.map], Current Array Index);
  • While(Is True For Any(Event Player.Dijkstra_Unvisited_3, Event Player.Dijkstra_Distances_3[Current Array Element] != 0));
  • Wait(0.016, Ignore Condition);
  • Event Player.Dijkstra_Connected_Segments_3 = 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_3));
  • Event Player._extendedPlayerCollection[9] = 0;
  • While(Event Player._extendedPlayerCollection[9] < Count Of(Event Player.Dijkstra_Connected_Segments_3));
  • Wait(0.016, Ignore Condition);
  • Event Player.Dijkstra_Neighbor_Index_3 = First Of(Filtered Array(Append To Array(Append To Array(Empty Array, X Component Of(
  • Event Player.Dijkstra_Connected_Segments_3[Event Player._extendedPlayerCollection[9]])), Y Component Of(
  • Event Player.Dijkstra_Connected_Segments_3[Event Player._extendedPlayerCollection[9]])),
  • Current Array Element != Event Player.Dijkstra_Current_3));
  • Event Player.Dijkstra_Distance_3 = Distance Between(Global.Nodes[Global.map][Event Player.Dijkstra_Neighbor_Index_3],
  • Global.Nodes[Global.map][Event Player.Dijkstra_Current_3])
  • + Event Player.Dijkstra_Distances_3[Event Player.Dijkstra_Current_3];
  • Event Player.Dijkstra_Neighbor_Attributes_3 = Filtered Array(Global.Attributes[Global.map], Y Component Of(Current Array Element)
  • == Event Player.Dijkstra_Current_3 && X Component Of(Current Array Element) == Event Player.Dijkstra_Neighbor_Index_3);
  • If((
  • Event Player.Dijkstra_Distances_3[Event Player.Dijkstra_Neighbor_Index_3] == 0 || Event Player.Dijkstra_Distance_3 < Event Player.Dijkstra_Distances_3[Event Player.Dijkstra_Neighbor_Index_3])
  • && (!Count Of(Event Player.Dijkstra_Neighbor_Attributes_3) || Is True For Any(Event Player.Dijkstra_Neighbor_Attributes_3,
  • Array Contains(Null, Z Component Of(Current Array Element)))));
  • Event Player.Dijkstra_Distances_3[Event Player.Dijkstra_Neighbor_Index_3] = Event Player.Dijkstra_Distance_3;
  • Event Player.Dijkstra_Parent_Array_3[Event Player.Dijkstra_Neighbor_Index_3] = Event Player.Dijkstra_Current_3 + 1;
  • End;
  • Event Player._extendedPlayerCollection[9] += 1;
  • End;
  • Modify Player Variable(Event Player, Dijkstra_Unvisited_3, Remove From Array By Value, Event Player.Dijkstra_Current_3);
  • 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_3, 2);
  • Event Player.Dijkstra_Current_3 = First Of(Sorted Array(Filtered Array(Event Player.Dijkstra_Unvisited_3,
  • Event Player.Dijkstra_Distances_3[Current Array Element] != 0), Event Player.Dijkstra_Distances_3[Current Array Element]));
  • End;
  • Event Player.pathmapReference = Global.map;
  • Event Player.Scoreboard = Event Player.Dijkstra_Parent_Array_3;
  • Event Player.destination = Event Player._extendedPlayerCollection[8];
  • Event Player.pathfinderDoGetCurrent = True;
  • Event Player.Dijkstra_Current_3 = 0;
  • Event Player.Dijkstra_Distances_3 = 0;
  • Event Player.Dijkstra_Connected_Segments_3 = 0;
  • Event Player.Dijkstra_Neighbor_Index_3 = 0;
  • Event Player.Dijkstra_Distance_3 = 0;
  • Event Player.Dijkstra_Parent_Array_3 = 0;
  • Wait(5, Ignore Condition);
  • Loop If(Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)))) > 20);
  • }
  • }
  • rule("Stop Pathfind")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Junkrat;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(
  • Event Player, Current Array Element)))) <= 20;
  • }
  • actions
  • {
  • Stop Throttle In Direction(Event Player);
  • Event Player.Scoreboard = Null;
  • Wait(0.250, Ignore Condition);
  • Loop If(Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)))) <= 20);
  • }
  • }
  • rule("Create Junkenstein's Monster")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Number of Heroes(Hero(Mercy), Team 2) == 0;
  • Global.PointChange == False;
  • Match Time > 0;
  • }
  • actions
  • {
  • Wait(Global.Mondiff, Ignore Condition);
  • Abort If(Global.PointChange == True);
  • Abort If(Match Time <= 0);
  • Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(169.036, 6.550, 80.559), Forward);
  • Loop;
  • }
  • }
  • rule("Set True - Roadhog")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Roadhog;
  • }
  • actions
  • {
  • Skip If(Global.Monintro == True, 1);
  • Wait(2, Ignore Condition);
  • Event Player.Finishedpath = True;
  • }
  • }
  • rule("Roadhog Right Click")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Roadhog;
  • }
  • conditions
  • {
  • Distance Between(Event Player, Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) > 10;
  • Is In Line of Sight(Event Player, First Of(Filtered Array(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)), Current Array Element.Invis == False)), Barriers Do Not Block LOS)
  • == True;
  • Is Dummy Bot(Event Player) == True;
  • Event Player.Finishedpath == True;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Primary Fire);
  • Wait(0.250, Ignore Condition);
  • Start Holding Button(Event Player, Secondary Fire);
  • }
  • }
  • rule("Roadhog Right Click")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Roadhog;
  • }
  • conditions
  • {
  • Distance Between(Event Player, Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) <= 10;
  • Is In Line of Sight(Event Player, First Of(Filtered Array(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)), Current Array Element.Invis == False)), Barriers Do Not Block LOS)
  • == True;
  • Is Dummy Bot(Event Player) == True;
  • Event Player.Finishedpath == True;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Secondary Fire);
  • Wait(0.250, Ignore Condition);
  • Start Holding Button(Event Player, Primary Fire);
  • }
  • }
  • rule("Roadhog Abilities")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Roadhog;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Health(Event Player) < Max Health(Event Player);
  • Ability Cooldown(Event Player, Button(Ability 2)) == 0;
  • Is Using Ability 1(Event Player) == False;
  • }
  • actions
  • {
  • Press Button(Event Player, Ability 2);
  • }
  • }
  • rule("Ability 1 Roadhog")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Roadhog;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Ability Cooldown(Event Player, Button(Ability 1)) == 0;
  • Is In Line of Sight(Event Player, First Of(Filtered Array(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)), Current Array Element.Invis == False)), Barriers Do Not Block LOS)
  • == True;
  • Is Using Ability 2(Event Player) == False;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Press Button(Event Player, Ability 1);
  • }
  • }
  • rule("Create The Witch")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.PointChange == False;
  • Match Time > 0;
  • }
  • actions
  • {
  • Wait(Global.Witchdiff, Ignore Condition);
  • Abort If(Match Time <= 0);
  • Abort If(Global.PointChange == True);
  • Create Dummy Bot(Hero(Mercy), Team 2, -1, Vector(168.641, 6.549, 78.929), Vector(Empty Array, Empty Array, Empty Array));
  • Loop;
  • }
  • }
  • rule("Revive")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Mercy;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • Set Facing(Event Player, Direction Towards(Event Player, Vector(176.780, 6.551, 79.674)), To World);
  • Skip If(Global.Witchintro == True, 1);
  • Wait(2, Ignore Condition);
  • Event Player.Finishedpath = True;
  • Wait(0.250, Ignore Condition);
  • Skip If(Number of Heroes(Hero(Roadhog), Team 2) > 1, 1);
  • Create Dummy Bot(Hero(Roadhog), Team 2, -1, Position Of(Event Player), Vector(Empty Array, Empty Array, Empty Array));
  • Wait(0.250, Ignore Condition);
  • Skip If(Number of Heroes(Hero(Junkrat), Team 2) > 1, 1);
  • Create Dummy Bot(Hero(Junkrat), Team 2, -1, Vector(195.865, 18.050, 55.760), Vector(Empty Array, Empty Array, Empty Array));
  • }
  • }
  • rule("Revive")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Mercy;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Alive(Players On Hero(Hero(Roadhog), Team 2)) == True;
  • Is Alive(Players On Hero(Hero(Junkrat), Team 2)) == True;
  • Event Player.Finishedpath == True;
  • }
  • actions
  • {
  • Global.Effects = Empty Array;
  • Create Effect(All Players(All Teams), Orb, Yellow, Players On Hero(Hero(Roadhog), Team 2), 10, Visible To Position and Radius);
  • Modify Global Variable(Effects, Append To Array, Last Created Entity);
  • Create Effect(All Players(All Teams), Orb, Yellow, Players On Hero(Hero(Junkrat), Team 2), 10, Visible To Position and Radius);
  • Modify Global Variable(Effects, Append To Array, Last Created Entity);
  • Create Effect(All Players(All Teams), Orb, Yellow, Event Player, 4, Visible To Position and Radius);
  • Modify Global Variable(Effects, Append To Array, Last Created Entity);
  • Wait(2, Ignore Condition);
  • Destroy Effect(First Of(Global.Effects));
  • Destroy Effect(Global.Effects[1]);
  • Destroy Effect(Global.Effects[2]);
  • }
  • }
  • rule("Witch Heal")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Mercy;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Event Player.Finishedpath == True;
  • Distance Between(Event Player, Last Of(Filtered Array(Filtered Array(Sorted Array(All Living Players(Team 2), Hero Of(
  • Current Array Element) == Hero(Roadhog)), Hero Of(Current Array Element) != Hero(Junkrat)), Hero Of(Current Array Element)
  • != Hero(Mercy)))) > 5;
  • }
  • actions
  • {
  • Start Facing(Event Player, Direction Towards(Event Player, First Of(Sorted Array(Filtered Array(Sorted Array(All Living Players(
  • Team 2), Hero Of(Current Array Element) == Hero(Roadhog)), Hero Of(Current Array Element) != Hero(Mercy)), Distance Between(
  • Event Player, Current Array Element)))), 200, To World, Direction and Turn Rate);
  • Event Player._extendedPlayerCollection[6] = Last Of(Sorted Array(Filtered Array(All Living Players(Team 2), Hero Of(
  • Current Array Element) != Hero(Mercy)), Distance Between(Event Player, Current Array Element)));
  • Event Player.Dijkstra_Final_Path_2 = Empty Array;
  • Event Player.Dijkstra_Final_Path_Attributes_2 = Empty Array;
  • Event Player.Dijkstra_Current_2 = Index Of Array Value(Global.Nodes[Global.map], First Of(Sorted Array(Global.Nodes[Global.map],
  • Distance Between(Event Player._extendedPlayerCollection[6], Current Array Element))));
  • Event Player.Dijkstra_Distances_2[Event Player.Dijkstra_Current_2] = 0.000;
  • Event Player.Dijkstra_Unvisited_2 = Mapped Array(Global.Nodes[Global.map], Current Array Index);
  • While(Is True For Any(Event Player.Dijkstra_Unvisited_2, Event Player.Dijkstra_Distances_2[Current Array Element] != 0));
  • Wait(0.016, Ignore Condition);
  • Event Player.Dijkstra_Connected_Segments_2 = 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_2));
  • Event Player._extendedPlayerCollection[7] = 0;
  • While(Event Player._extendedPlayerCollection[7] < Count Of(Event Player.Dijkstra_Connected_Segments_2));
  • Wait(0.016, Ignore Condition);
  • Event Player.Dijkstra_Neighbor_Index_2 = First Of(Filtered Array(Append To Array(Append To Array(Empty Array, X Component Of(
  • Event Player.Dijkstra_Connected_Segments_2[Event Player._extendedPlayerCollection[7]])), Y Component Of(
  • Event Player.Dijkstra_Connected_Segments_2[Event Player._extendedPlayerCollection[7]])),
  • Current Array Element != Event Player.Dijkstra_Current_2));
  • Event Player.Dijkstra_Distance_2 = Distance Between(Global.Nodes[Global.map][Event Player.Dijkstra_Neighbor_Index_2],
  • Global.Nodes[Global.map][Event Player.Dijkstra_Current_2])
  • + Event Player.Dijkstra_Distances_2[Event Player.Dijkstra_Current_2];
  • Event Player.Dijkstra_Neighbor_Attributes_2 = Filtered Array(Global.Attributes[Global.map], Y Component Of(Current Array Element)
  • == Event Player.Dijkstra_Current_2 && X Component Of(Current Array Element) == Event Player.Dijkstra_Neighbor_Index_2);
  • If((
  • Event Player.Dijkstra_Distances_2[Event Player.Dijkstra_Neighbor_Index_2] == 0 || Event Player.Dijkstra_Distance_2 < Event Player.Dijkstra_Distances_2[Event Player.Dijkstra_Neighbor_Index_2])
  • && (!Count Of(Event Player.Dijkstra_Neighbor_Attributes_2) || Is True For Any(Event Player.Dijkstra_Neighbor_Attributes_2,
  • Array Contains(Null, Z Component Of(Current Array Element)))));
  • Event Player.Dijkstra_Distances_2[Event Player.Dijkstra_Neighbor_Index_2] = Event Player.Dijkstra_Distance_2;
  • Event Player.Dijkstra_Parent_Array_2[Event Player.Dijkstra_Neighbor_Index_2] = Event Player.Dijkstra_Current_2 + 1;
  • End;
  • Event Player._extendedPlayerCollection[7] += 1;
  • End;
  • Modify Player Variable(Event Player, Dijkstra_Unvisited_2, Remove From Array By Value, Event Player.Dijkstra_Current_2);
  • 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, 2);
  • Event Player.Dijkstra_Current_2 = First Of(Sorted Array(Filtered Array(Event Player.Dijkstra_Unvisited_2,
  • Event Player.Dijkstra_Distances_2[Current Array Element] != 0), Event Player.Dijkstra_Distances_2[Current Array Element]));
  • End;
  • Event Player.pathmapReference = Global.map;
  • Event Player.Scoreboard = Event Player.Dijkstra_Parent_Array_2;
  • Event Player.destination = Event Player._extendedPlayerCollection[6];
  • Event Player.pathfinderDoGetCurrent = True;
  • Event Player.Dijkstra_Current_2 = 0;
  • Event Player.Dijkstra_Distances_2 = 0;
  • Event Player.Dijkstra_Connected_Segments_2 = 0;
  • Event Player.Dijkstra_Neighbor_Index_2 = 0;
  • Event Player.Dijkstra_Distance_2 = 0;
  • Event Player.Dijkstra_Parent_Array_2 = 0;
  • Wait(5, Ignore Condition);
  • Loop If(Distance Between(Event Player, Last Of(Filtered Array(Filtered Array(Sorted Array(All Living Players(Team 2), Hero Of(
  • Current Array Element) == Hero(Roadhog)), Hero Of(Current Array Element) != Hero(Junkrat)), Hero Of(Current Array Element)
  • != Hero(Mercy)))) > 5);
  • }
  • }
  • rule("Witch Heal")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Mercy;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Distance Between(Event Player, Last Of(Filtered Array(Filtered Array(Sorted Array(All Living Players(Team 2), Hero Of(
  • Current Array Element) == Hero(Roadhog)), Hero Of(Current Array Element) != Hero(Junkrat)), Hero Of(Current Array Element)
  • != Hero(Mercy)))) <= 5;
  • }
  • actions
  • {
  • Stop Throttle In Direction(Event Player);
  • Event Player.parentArray = Null;
  • Wait(Random Integer(1, 2), Ignore Condition);
  • Start Throttle In Direction(Event Player, Direction Towards(Position Of(Event Player), Position Of(Last Of(Filtered Array(
  • Filtered Array(Sorted Array(All Living Players(Team 2), Hero Of(Current Array Element) == Hero(Roadhog)), Hero Of(
  • Current Array Element) != Hero(Junkrat)), Hero Of(Current Array Element) != Hero(Mercy)))) + Direction From Angles(
  • Total Time Elapsed * 135, 0) * 5), 1, To World, Replace existing throttle, Direction and Magnitude);
  • Wait(Random Integer(1, 2), Ignore Condition);
  • Loop If(Distance Between(Event Player, Last Of(Filtered Array(Filtered Array(Sorted Array(All Living Players(Team 2), Hero Of(
  • Current Array Element) == Hero(Roadhog)), Hero Of(Current Array Element) != Hero(Junkrat)), Hero Of(Current Array Element)
  • != Hero(Mercy)))) <= 5);
  • }
  • }
  • rule("Witch Heal")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Mercy;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Primary Fire);
  • }
  • }
  • rule("Create The Reaper")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.PointChange == False;
  • }
  • actions
  • {
  • Wait(Global.Reapdiff, Ignore Condition);
  • Abort If(Match Time <= 0);
  • Abort If(Global.PointChange == True);
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(229.437, 14.551, 62.200), Vector(Empty Array, Empty Array, Empty Array));
  • Loop;
  • }
  • }
  • rule("Set True - Reaper")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reaper;
  • }
  • actions
  • {
  • Skip If(Global.Reaperintro == True, 1);
  • Wait(2, Ignore Condition);
  • Event Player.Finishedpath = True;
  • }
  • }
  • rule("Ability 1 - Reaper")
  • {
  • event
  • {
  • Player Took Damage;
  • Team 2;
  • Reaper;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Ability Cooldown(Event Player, Button(Ability 1)) == 0;
  • Is In Line of Sight(Event Player, First Of(Filtered Array(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)), Current Array Element.Invis == False)), Barriers Do Not Block LOS)
  • == True;
  • Event Player.Finishedpath == True;
  • Is Using Ability 2(Event Player) == False;
  • }
  • actions
  • {
  • Press Button(Event Player, Ability 1);
  • }
  • }
  • rule("Wraith")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reaper;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Primary Fire);
  • }
  • }
  • rule("Wraith")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reaper;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Using Ability 1(Event Player) == False;
  • Event Player.Finishedpath == True;
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Primary Fire);
  • }
  • }
  • rule("Create The Summoner")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.PointChange == False;
  • Match Time > 0;
  • }
  • actions
  • {
  • Wait(Global.Sumdiff, Ignore Condition);
  • Abort If(Global.PointChange == True);
  • Abort If(Match Time <= 0);
  • Create Dummy Bot(Hero(Symmetra), Team 2, -1, Vector(211.366, 9.550, 102.233), Vector(Empty Array, Empty Array, Empty Array));
  • Loop;
  • }
  • }
  • rule("FinishedPath")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Skip If(Global.Sumintro == True, 1);
  • Wait(2, Ignore Condition);
  • Event Player.Finishedpath = True;
  • }
  • }
  • rule("Symmetra Circle")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Symmetra;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(
  • Event Player, Current Array Element)))) <= 3;
  • Event Player.Finishedpath == True;
  • }
  • actions
  • {
  • Start Throttle In Direction(Event Player, Direction Towards(Position Of(Event Player), Position Of(First Of(Sorted Array(
  • Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Is In Line of Sight(Event Player,
  • Current Array Element, Barriers Do Not Block LOS)), Distance Between(Event Player, Current Array Element))))
  • + Direction From Angles(Total Time Elapsed * 135, 0) * 3), 1, To World, Replace existing throttle, Direction and Magnitude);
  • }
  • }
  • rule("Symmetra Right Click")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Distance Between(Event Player, Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) > 10;
  • Is In Line of Sight(Event Player, First Of(Filtered Array(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)), Current Array Element.Invis == False)), Barriers Do Not Block LOS)
  • == True;
  • Is Dummy Bot(Event Player) == True;
  • Event Player.Finishedpath == True;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Primary Fire);
  • Wait(0.250, Ignore Condition);
  • Start Holding Button(Event Player, Secondary Fire);
  • }
  • }
  • rule("Symmetra Right Click")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Distance Between(Event Player, Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) <= 10;
  • Is In Line of Sight(Event Player, First Of(Filtered Array(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)), Current Array Element.Invis == False)), Barriers Do Not Block LOS)
  • == True;
  • Is Dummy Bot(Event Player) == True;
  • Event Player.Finishedpath == True;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Secondary Fire);
  • Wait(0.250, Ignore Condition);
  • Start Holding Button(Event Player, Primary Fire);
  • }
  • }
  • rule("Sym Ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Symmetra;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Ultimate Charge Percent(Event Player) == 100;
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Is In Line of Sight(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element))), Barriers Do Not Block LOS)
  • == True;
  • }
  • actions
  • {
  • Start Facing(Event Player, Direction Towards(Event Player, First Of(Filtered Array(Sorted Array(Filtered Array(Filtered Array(
  • Players in View Angle(Event Player, Opposite Team Of(Team Of(Event Player)), 180), Is Alive(Current Array Element)),
  • Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)), Distance Between(Event Player,
  • Current Array Element)), Current Array Element.Invis == False))), 200, To World, Direction and Turn Rate);
  • Wait(1, Ignore Condition);
  • Press Button(Event Player, Ultimate);
  • Wait(0.250, Ignore Condition);
  • Press Button(Event Player, Primary Fire);
  • Wait(1, Ignore Condition);
  • }
  • }
  • rule("Create Zombardiers")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Number of Heroes(Hero(Zarya), Team 2) < Global.NumberofZombardiers;
  • Is Game In Progress == True;
  • Global.PointChange == False;
  • Match Time > 0;
  • }
  • actions
  • {
  • Wait(Random Integer(10, 30), Ignore Condition);
  • Abort If(Is Game In Progress == False);
  • Abort If(Match Time <= 0);
  • Abort If(Global.PointChange == True);
  • Create Dummy Bot(Hero(Zarya), Team 2, -1, Random Value In Array(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array,
  • Empty Array));
  • Loop If(Number of Heroes(Hero(Zarya), Team 2) < Global.NumberofZombardiers);
  • }
  • }
  • rule("Pathfind to player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Zarya;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(
  • Event Player, Current Array Element)))) > 10;
  • }
  • actions
  • {
  • Event Player._extendedPlayerCollection[2] = First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element) > 10));
  • 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.Scoreboard = 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;
  • Wait(5, Ignore Condition);
  • Loop If(Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)))) > 10);
  • }
  • }
  • rule("Pathfind away from player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Zarya;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(
  • Event Player, Current Array Element)))) <= 10;
  • }
  • actions
  • {
  • Event Player._extendedPlayerCollection[4] = Position Of(Event Player) + Backward;
  • Event Player.Dijkstra_Final_Path_1 = Empty Array;
  • Event Player.Dijkstra_Final_Path_Attributes_1 = Empty Array;
  • Event Player.Dijkstra_Current_1 = Index Of Array Value(Global.Nodes[Global.map], First Of(Sorted Array(Global.Nodes[Global.map],
  • Distance Between(Event Player._extendedPlayerCollection[4], Current Array Element))));
  • Event Player.Dijkstra_Distances_1[Event Player.Dijkstra_Current_1] = 0.000;
  • Event Player.Dijkstra_Unvisited_1 = Mapped Array(Global.Nodes[Global.map], Current Array Index);
  • While(Is True For Any(Event Player.Dijkstra_Unvisited_1, Event Player.Dijkstra_Distances_1[Current Array Element] != 0));
  • Wait(0.016, Ignore Condition);
  • Event Player.Dijkstra_Connected_Segments_1 = 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_1));
  • Event Player._extendedPlayerCollection[5] = 0;
  • While(Event Player._extendedPlayerCollection[5] < Count Of(Event Player.Dijkstra_Connected_Segments_1));
  • Wait(0.016, Ignore Condition);
  • Event Player.Dijkstra_Neighbor_Index_1 = First Of(Filtered Array(Append To Array(Append To Array(Empty Array, X Component Of(
  • Event Player.Dijkstra_Connected_Segments_1[Event Player._extendedPlayerCollection[5]])), Y Component Of(
  • Event Player.Dijkstra_Connected_Segments_1[Event Player._extendedPlayerCollection[5]])),
  • Current Array Element != Event Player.Dijkstra_Current_1));
  • Event Player.Dijkstra_Distance_1 = Distance Between(Global.Nodes[Global.map][Event Player.Dijkstra_Neighbor_Index_1],
  • Global.Nodes[Global.map][Event Player.Dijkstra_Current_1])
  • + Event Player.Dijkstra_Distances_1[Event Player.Dijkstra_Current_1];
  • Event Player.Dijkstra_Neighbor_Attributes_1 = Filtered Array(Global.Attributes[Global.map], Y Component Of(Current Array Element)
  • == Event Player.Dijkstra_Current_1 && X Component Of(Current Array Element) == Event Player.Dijkstra_Neighbor_Index_1);
  • If((
  • Event Player.Dijkstra_Distances_1[Event Player.Dijkstra_Neighbor_Index_1] == 0 || Event Player.Dijkstra_Distance_1 < Event Player.Dijkstra_Distances_1[Event Player.Dijkstra_Neighbor_Index_1])
  • && (!Count Of(Event Player.Dijkstra_Neighbor_Attributes_1) || Is True For Any(Event Player.Dijkstra_Neighbor_Attributes_1,
  • Array Contains(Null, Z Component Of(Current Array Element)))));
  • Event Player.Dijkstra_Distances_1[Event Player.Dijkstra_Neighbor_Index_1] = Event Player.Dijkstra_Distance_1;
  • Event Player.Dijkstra_Parent_Array_1[Event Player.Dijkstra_Neighbor_Index_1] = Event Player.Dijkstra_Current_1 + 1;
  • End;
  • Event Player._extendedPlayerCollection[5] += 1;
  • End;
  • Modify Player Variable(Event Player, Dijkstra_Unvisited_1, Remove From Array By Value, Event Player.Dijkstra_Current_1);
  • 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_1, 2);
  • Event Player.Dijkstra_Current_1 = First Of(Sorted Array(Filtered Array(Event Player.Dijkstra_Unvisited_1,
  • Event Player.Dijkstra_Distances_1[Current Array Element] != 0), Event Player.Dijkstra_Distances_1[Current Array Element]));
  • End;
  • Event Player.pathmapReference = Global.map;
  • Event Player.Scoreboard = Event Player.Dijkstra_Parent_Array_1;
  • Event Player.destination = Event Player._extendedPlayerCollection[4];
  • Event Player.pathfinderDoGetCurrent = True;
  • Event Player.Dijkstra_Current_1 = 0;
  • Event Player.Dijkstra_Distances_1 = 0;
  • Event Player.Dijkstra_Connected_Segments_1 = 0;
  • Event Player.Dijkstra_Neighbor_Index_1 = 0;
  • Event Player.Dijkstra_Distance_1 = 0;
  • Event Player.Dijkstra_Parent_Array_1 = 0;
  • Wait(5, Ignore Condition);
  • Loop If(Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)))) <= 10);
  • }
  • }
  • rule("Shooting")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Zarya;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is In Line of Sight(Event Player, First Of(Filtered Array(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)), Current Array Element.Invis == False)), Barriers Do Not Block LOS)
  • == True;
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Secondary Fire);
  • }
  • }
  • rule("Shooting")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Zarya;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is In Line of Sight(Event Player, First Of(Filtered Array(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)), Current Array Element.Invis == False)), Barriers Do Not Block LOS)
  • == False;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Secondary Fire);
  • }
  • }
  • rule("Reaper Intro")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Reaper;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Global.Reaperintro == False;
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Set Slow Motion(35);
  • Disable Hero HUD(Event Player);
  • Set Status(All Players(Team 1), Null, Invincible, 2);
  • Start Camera(All Players(Team 1), Eye Position(Players On Hero(Hero(Reaper), Team 2)) + Facing Direction Of(Event Player),
  • Eye Position(Players On Hero(Hero(Reaper), Team 2)), 0);
  • Big Message(All Players(All Teams), Custom String("The Reaper"));
  • Wait(2, Ignore Condition);
  • Global.Reaperintro = True;
  • Stop Camera(All Players(Team 1));
  • Set Slow Motion(100);
  • Enable Hero HUD(Event Player);
  • }
  • }
  • rule("Junkrat Intro")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Junkrat;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Global.Junkintro == False;
  • Is Dummy Bot(Event Player) == True;
  • Global._tempAttributes != Event Player;
  • Global.RevengeIntro == False;
  • }
  • actions
  • {
  • Set Status(All Players(Team 1), Null, Invincible, 2);
  • Disable Hero HUD(Event Player);
  • Set Slow Motion(35);
  • Start Camera(All Players(Team 1), Eye Position(Players On Hero(Hero(Junkrat), Team 2)) + Facing Direction Of(Event Player),
  • Eye Position(Players On Hero(Hero(Junkrat), Team 2)), 0);
  • Big Message(All Players(All Teams), Custom String("Dr Junkenstein"));
  • Wait(2, Ignore Condition);
  • Global.Junkintro = True;
  • Stop Camera(All Players(Team 1));
  • Set Slow Motion(100);
  • Enable Hero HUD(Event Player);
  • }
  • }
  • rule("Road Intro")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Roadhog;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Global.Monintro == False;
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Set Status(All Players(Team 1), Null, Invincible, 2);
  • Set Slow Motion(35);
  • Disable Hero HUD(Event Player);
  • Start Camera(All Players(Team 1), Eye Position(Players On Hero(Hero(Roadhog), Team 2)) + Facing Direction Of(Event Player),
  • Eye Position(Players On Hero(Hero(Roadhog), Team 2)), 0);
  • Big Message(All Players(All Teams), Custom String("Junkenstein's Monster"));
  • Wait(2, Ignore Condition);
  • Global.Monintro = True;
  • Stop Camera(All Players(Team 1));
  • Set Slow Motion(100);
  • Enable Hero HUD(Event Player);
  • }
  • }
  • rule("Witch Intro")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Mercy;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Global.Witchintro == False;
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Set Status(All Players(Team 1), Null, Invincible, 2);
  • Set Slow Motion(35);
  • Disable Hero HUD(Event Player);
  • Start Camera(All Players(Team 1), Eye Position(Players On Hero(Hero(Mercy), Team 2)) + Facing Direction Of(Event Player),
  • Eye Position(Players On Hero(Hero(Mercy), Team 2)), 0);
  • Big Message(All Players(All Teams), Custom String("The Witch"));
  • Wait(2, Ignore Condition);
  • Global.Witchintro = True;
  • Stop Camera(All Players(Team 1));
  • Set Slow Motion(100);
  • Enable Hero HUD(Event Player);
  • }
  • }
  • rule("Summoner Intro")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Symmetra;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Global.Sumintro == False;
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Enable Messages(Event Player);
  • Set Status(All Players(Team 1), Null, Invincible, 2);
  • Disable Hero HUD(Event Player);
  • Set Slow Motion(35);
  • Start Camera(All Players(Team 1), Eye Position(Players On Hero(Hero(Symmetra), Team 2)) + Facing Direction Of(Event Player),
  • Eye Position(Players On Hero(Hero(Symmetra), Team 2)), 0);
  • Big Message(All Players(All Teams), Custom String("The Summoner"));
  • Wait(2, Ignore Condition);
  • Global.Sumintro = True;
  • Stop Camera(All Players(Team 1));
  • Set Slow Motion(100);
  • Enable Hero HUD(Event Player);
  • Disable Messages(Event Player);
  • }
  • }
  • rule("Hardness")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.Reapdiff = Workshop Setting Integer(Custom String("Difficulty"), Custom String("The Reaper Delay"), 150, 10, 500);
  • Global.Mondiff = Workshop Setting Integer(Custom String("Difficulty"), Custom String("Junkenstein's Monster Delay"), 200, 10, 500);
  • Global.Sumdiff = Workshop Setting Integer(Custom String("Difficulty"), Custom String("The Summoner Delay"), 250, 10, 500);
  • Global.Junkdiff = Workshop Setting Integer(Custom String("Difficulty"), Custom String("Dr Junkenstein Delay"), 300, 10, 500);
  • Global.Witchdiff = Workshop Setting Integer(Custom String("Difficulty"), Custom String("The Witch Delay"), 350, 10, 500);
  • }
  • }
  • rule("Hardness")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Wait(60, Ignore Condition);
  • Skip If(Global.Reapdiff <= 10, 1);
  • Global.Reapdiff -= 10;
  • Skip If(Global.Mondiff <= 10, 1);
  • Global.Mondiff -= 10;
  • Skip If(Global.Sumdiff <= 10, 1);
  • Global.Sumdiff -= 10;
  • Skip If(Global.Junkdiff <= 10, 1);
  • Global.Junkdiff -= 10;
  • Skip If(Global.Witchdiff <= 10, 1);
  • Global.Witchdiff -= 10;
  • Loop If(Is Game In Progress == True);
  • }
  • }
  • rule("Number of Zombardiers/Zomnics")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.NumberofZomnics = Workshop Setting Integer(Custom String("Settings"), Custom String("Max Number of Zomnics"), 4, 0, 8);
  • Global.NumberofZombardiers = Workshop Setting Integer(Custom String("Settings"), Custom String("Max Number of Zombardiers"), 2, 0,
  • 8);
  • }
  • }
  • rule("Mode")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.Normal = Workshop Setting Toggle(Custom String("Difficulty Mode"), Custom String("Normal"), True);
  • Global.Hard = Workshop Setting Toggle(Custom String("Difficulty Mode"), Custom String("Hard"), False);
  • Global.Expert = Workshop Setting Toggle(Custom String("Difficulty Mode"), Custom String("Expert"), False);
  • Global.Legendary = Workshop Setting Toggle(Custom String("Difficulty Mode"), Custom String("Legendary"), False);
  • }
  • }
  • rule("Junkrat Health")
  • rule("Symmetra Health")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Junkrat;
  • Symmetra;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • If(Global.Normal == True);
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.160, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 2050, True, True);
  • Add Health Pool To Player(Event Player, Health, 1300, True, True);
  • Set Damage Dealt(Event Player, 25);
  • Else If(Global.Hard == True);
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.160, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 2550, True, True);
  • Add Health Pool To Player(Event Player, Health, 1600, True, True);
  • Set Damage Dealt(Event Player, 50);
  • Else If(Global.Expert == True);
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.160, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 2800, True, True);
  • Add Health Pool To Player(Event Player, Health, 1800, True, True);
  • Set Damage Dealt(Event Player, 75);
  • Else If(Global.Legendary == True);
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.160, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 3050, True, True);
  • Add Health Pool To Player(Event Player, Health, 2100, True, True);
  • }
  • }
  • rule("Roadhog Health")
  • rule("Junkrat Health")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Roadhog;
  • Junkrat;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Set Damage Dealt(Event Player, 41);
  • If(Global.Normal == True);
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.160, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 3200, True, True);
  • Set Damage Dealt(Event Player, 25);
  • Add Health Pool To Player(Event Player, Health, 2050, True, True);
  • Else If(Global.Hard == True);
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.160, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 3650, True, True);
  • Set Damage Dealt(Event Player, 50);
  • Add Health Pool To Player(Event Player, Health, 2550, True, True);
  • Else If(Global.Expert == True);
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.160, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 3900, True, True);
  • Set Damage Dealt(Event Player, 75);
  • Add Health Pool To Player(Event Player, Health, 2800, True, True);
  • Else If(Global.Legendary == True);
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.160, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 4000, True, True);
  • Set Damage Dealt(Event Player, 100);
  • Add Health Pool To Player(Event Player, Health, 3050, True, True);
  • }
  • }
  • rule("Symmetra Health")
  • rule("Roadhog Health")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Symmetra;
  • Roadhog;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • If(Global.Normal == True);
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.160, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 1300, True, True);
  • Add Health Pool To Player(Event Player, Health, 3200, True, True);
  • Set Damage Dealt(Event Player, 25);
  • Else If(Global.Hard == True);
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.160, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 1600, True, True);
  • Add Health Pool To Player(Event Player, Health, 3650, True, True);
  • Set Damage Dealt(Event Player, 50);
  • Else If(Global.Expert == True);
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.160, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 1800, True, True);
  • Add Health Pool To Player(Event Player, Health, 3900, True, True);
  • Set Damage Dealt(Event Player, 75);
  • Else If(Global.Legendary == True);
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.160, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 2100, True, True);
  • Add Health Pool To Player(Event Player, Health, 4000, True, True);
  • Set Damage Dealt(Event Player, 80);
  • }
  • }
  • rule("Mercy Health")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Mercy;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • If(Global.Normal == True);
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.160, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 1400, True, True);
  • Else If(Global.Hard == True);
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.160, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 1550, True, True);
  • Else If(Global.Expert == True);
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.160, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 1900, True, True);
  • Set Healing Dealt(Event Player, 200);
  • Else If(Global.Legendary == True);
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.160, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 2300, True, True);
  • Set Healing Dealt(Event Player, 400);
  • }
  • }
  • rule("Reaper Health")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Reaper;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • If(Global.Normal == True);
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.160, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 750, True, True);
  • Set Damage Dealt(Event Player, 25);
  • Else If(Global.Hard == True);
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.160, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 1000, True, True);
  • Set Damage Dealt(Event Player, 50);
  • Else If(Global.Expert == True);
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.160, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 1350, True, True);
  • Set Damage Dealt(Event Player, 75);
  • Else If(Global.Legendary == True);
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.160, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 1750, True, True);
  • Set Damage Dealt(Event Player, 100);
  • }
  • }
  • rule("Facing - Zarya")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Global.RevengeIntro == False;
  • Hero Of(Event Player) != Hero(Zenyatta);
  • Hero Of(Event Player) != Hero(Mercy);
  • Hero Of(Event Player) != Hero(Reaper);
  • Hero Of(Event Player) != Hero(Junkrat);
  • Hero Of(Event Player) != Hero(Symmetra);
  • Hero Of(Event Player) != Hero(Roadhog);
  • Hero Of(Event Player) != Hero(Sigma);
  • }
  • actions
  • {
  • Start Facing(Event Player, Direction Towards(Event Player, First Of(Filtered Array(Sorted Array(Filtered Array(All Living Players(
  • Opposite Team Of(Team Of(Event Player))), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)),
  • Distance Between(Event Player, Current Array Element)), Current Array Element.Invis == False)) + Velocity Of(
  • Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) * (Distance Between(Event Player,
  • Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) / 24)), 200, To World,
  • Direction and Turn Rate);
  • }
  • }
  • rule("Facing - Roadhog + Sigma")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Global.RevengeIntro == False;
  • Hero Of(Event Player) != Hero(Zenyatta);
  • Hero Of(Event Player) != Hero(Mercy);
  • Hero Of(Event Player) != Hero(Reaper);
  • Hero Of(Event Player) != Hero(Junkrat);
  • Hero Of(Event Player) != Hero(Symmetra);
  • Hero Of(Event Player) != Hero(Zarya);
  • Event Player.Finishedpath == True;
  • }
  • actions
  • {
  • Start Facing(Event Player, Direction Towards(Event Player, First Of(Filtered Array(Sorted Array(Filtered Array(All Living Players(
  • Opposite Team Of(Team Of(Event Player))), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)),
  • Distance Between(Event Player, Current Array Element)), Current Array Element.Invis == False)) + Velocity Of(
  • Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) * (Distance Between(Event Player,
  • Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) / 24)), 200, To World,
  • Direction and Turn Rate);
  • }
  • }
  • rule("Facing - Junkrat")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Junkrat;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Global.RevengeIntro == False;
  • }
  • actions
  • {
  • Start Facing(Event Player, Direction From Angles(Horizontal Angle From Direction(Vector Towards(Eye Position(Event Player),
  • Position Of(First Of(Sorted Array(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)), Current Array Element.Invis == False),
  • Distance Between(Event Player, Current Array Element)))))), 0 - Arctangent In Degrees((625 - Square Root(
  • 390625 - 156.250 * Distance Between(Vector(0, 0, 0), Vector Towards(Eye Position(Event Player), Position Of(First Of(
  • Sorted Array(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Is In Line of Sight(
  • Event Player, Current Array Element, Barriers Do Not Block LOS)), Current Array Element.Invis == False), Distance Between(
  • Event Player, Current Array Element))))) * Vector(1, 0, 1)) * Distance Between(Vector(0, 0, 0), Vector Towards(Eye Position(
  • Event Player), Position Of(First Of(Sorted Array(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(
  • Event Player))), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element))))) * Vector(1, 0, 1))
  • - 15625 * Y Component Of(Vector Towards(Eye Position(Event Player), Position Of(First Of(Sorted Array(Filtered Array(
  • Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Is In Line of Sight(Event Player,
  • Current Array Element, Barriers Do Not Block LOS)), Current Array Element.Invis == False), Distance Between(Event Player,
  • Current Array Element)))))))) / (12.500 * Distance Between(Vector(0, 0, 0), Vector Towards(Eye Position(Event Player),
  • Position Of(First Of(Sorted Array(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)), Current Array Element.Invis == False),
  • Distance Between(Event Player, Current Array Element))))) * Vector(1, 0, 1))), 1)), 200, To World, Direction and Turn Rate);
  • }
  • }
  • rule("Facing - Reaper")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Reaper;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Start Facing(Event Player, Direction Towards(Event Player, First Of(Filtered Array(Sorted Array(Filtered Array(Filtered Array(
  • Players in View Angle(Event Player, Opposite Team Of(Team Of(Event Player)), 180), Is Alive(Current Array Element)),
  • Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)), Distance Between(Event Player,
  • Current Array Element)), Current Array Element.Invis == False))), 200, To World, Direction and Turn Rate);
  • }
  • }
  • rule("Junkrat Shooting")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Junkrat;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Primary Fire);
  • }
  • }
  • rule("Lose")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Number of Living Players(Team 1) <= 0;
  • }
  • actions
  • {
  • Declare Team Victory(Team 2);
  • }
  • }
  • rule("Far Away")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Distance Between(Event Player, Global.CurrentPoint) > 10;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Create In-World Text(Event Player, Custom String("DEFEND!"), Global.CurrentPoint, 2, Do Not Clip, Visible To Position and String,
  • Red, Default Visibility);
  • Event Player.FarIcon = Last Text ID;
  • }
  • }
  • rule("Far Away")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Distance Between(Event Player, Global.CurrentPoint) <= 10;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Destroy In-World Text(Event Player.FarIcon);
  • }
  • }
  • rule("Change Point")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Wait(300, Ignore Condition);
  • Pause Match Time;
  • Global.PointChange = True;
  • Global.CurrentPoint = Vector(206.616, 1.549, 83.514);
  • Global.TargetPoint = Vector(206.270, 1.549, 84.465);
  • Big Message(All Players(Team 1), Custom String("Get to the Catacombes!"));
  • Global.PlayerSpeaking = Random Value In Array(All Living Players(Team 1));
  • Small Message(All Players(Team 1), Custom String(
  • "{0} {1}: Control says they've found more documents. They're located in the catacombes.", Hero Icon String(Hero Of(
  • Global.PlayerSpeaking)), Global.PlayerSpeaking));
  • }
  • }
  • rule("Change Point")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.PointChange == True;
  • Count Of(Players Within Radius(Global.CurrentPoint, 10, Team 1, Off)) == Number of Living Players(Team 1);
  • Global.LastLastPoint == False;
  • }
  • actions
  • {
  • Unpause Match Time;
  • Global.PointChange = False;
  • Global.Health = 2000;
  • Big Message(All Players(Team 1), Custom String("Defend the Catacombes!"));
  • Global.CurrentMission = Custom String("Defend The Catacombes");
  • }
  • }
  • rule("Change Point")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Wait(600, Ignore Condition);
  • Global.LastLastPoint = True;
  • Pause Match Time;
  • Global.PointChange = True;
  • Global.CurrentPoint = Vector(205.047, 11.040, 56.442);
  • Big Message(All Players(Team 1), Custom String("Get to the Collection Point!"));
  • Global.PlayerSpeaking = Random Value In Array(All Living Players(Team 1));
  • Small Message(All Players(Team 1), Custom String("{0} {1}: We need to get to the pick up point, and make our final escape.",
  • Hero Icon String(Hero Of(Global.PlayerSpeaking)), Global.PlayerSpeaking));
  • Global.Stopspawningzomnics = True;
  • Destroy HUD Text(Global.HealthText);
  • Global.CurrentMission = Custom String("Get to the Collection Point {0}/{1}", Count Of(Players Within Radius(Global.CurrentPoint,
  • 10, Team 1, Off)), Number of Living Players(Team 1));
  • }
  • }
  • rule("Change Point")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.PointChange == True;
  • Count Of(Players Within Radius(Global.CurrentPoint, 10, Team 1, Off)) == Number of Living Players(Team 1);
  • Global.LastLastPoint == True;
  • }
  • actions
  • {
  • Unpause Match Time;
  • Global.PointChange = False;
  • Global.Health = 100000000;
  • Big Message(All Players(Team 1), Custom String("Wait until Pick up"));
  • Create HUD Text(All Players(Team 1), Null, Null, Custom String("Pick Up Incoming in: {0} Seconds", Match Time), Top, 0, White,
  • White, White, Visible To and String, Default Visibility);
  • Global.LastPoint = True;
  • Global.CurrentMission = Custom String("Wait For Pick Up");
  • }
  • }
  • rule("Destroy all zomnics")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Zenyatta;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Global.Stopspawningzomnics == True;
  • }
  • actions
  • {
  • Destroy Dummy Bot(Team Of(Event Player), Slot Of(Event Player));
  • }
  • }
  • rule("Victory")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.LastPoint == True;
  • Is Game In Progress == True;
  • Match Time <= 0;
  • Count Of(Players Within Radius(Global.CurrentPoint, 10, Team 1, Off)) == Number of Living Players(Team 1);
  • }
  • actions
  • {
  • Pause Match Time;
  • Destroy All Dummy Bots;
  • Set Invisible(All Players(Team 1), All);
  • Small Message(All Players(Team 1), Custom String("Pilot: Alright get in, we're heading off."));
  • Start Camera(All Players(Team 1), Vector(207.449, 15.886, 56.177), Vector(208.810, 15.634, 54.002), 0);
  • Global.PlayerSpeaking = Random Value In Array(All Living Players(Team 1));
  • Wait(3, Ignore Condition);
  • Small Message(All Players(Team 1), Custom String("{0} {1}: Hopefully that Junkenstein doesn't make our day a hell again.",
  • Hero Icon String(Hero Of(Global.PlayerSpeaking)), Global.PlayerSpeaking));
  • Wait(3, Ignore Condition);
  • Global.PlayerSpeaking = Random Value In Array(All Living Players(Team 1));
  • Wait(0.250, Ignore Condition);
  • Small Message(All Players(Team 1), Custom String("{0} {1}: Let's not bet on it okay?", Hero Icon String(Hero Of(
  • Global.PlayerSpeaking)), Global.PlayerSpeaking));
  • Start Camera(All Players(Team 1), Vector(207.675, 24.902, 55.816), Vector(209.416, 24.580, 53.032), 1);
  • Wait(1, Ignore Condition);
  • Small Message(All Players(Team 1), Custom String("Pilot: Say Goodbye!"));
  • Wait(3, Ignore Condition);
  • Start Camera(All Players(Team 1), Vector(255.561, 29.660, 34.956), Vector(251.928, 28.909, 38.075), 2);
  • Wait(3, Ignore Condition);
  • Big Message(All Players(Team 1), Custom String("Junkenstein: The Hidden Truth"));
  • Small Message(All Players(Team 1), Custom String("Thanks for Playing!"));
  • Wait(1, Ignore Condition);
  • Declare Team Victory(Team 1);
  • }
  • }
  • rule("Get to Dropship")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.LastPoint == True;
  • Is Game In Progress == True;
  • Match Time <= 0;
  • Count Of(Players Within Radius(Global.CurrentPoint, 10, Team 1, Off)) < Number of Living Players(Team 1);
  • }
  • actions
  • {
  • Big Message(All Players(Team 1), Custom String("Dropship has arrived!"));
  • Global.PlayerSpeaking = Random Value In Array(All Living Players(Team 1));
  • Wait(0.250, Ignore Condition);
  • Small Message(All Players(Team 1), Custom String("{0} {1}: Everyone get to the statue and get into the dropship", Hero Icon String(
  • Hero Of(Global.PlayerSpeaking)), Global.PlayerSpeaking));
  • Global.CurrentMission = Custom String("Get onto the Drop Ship{0}/{1}", Count Of(Players Within Radius(Global.CurrentPoint, 10,
  • Team 1, Off)), Number of Living Players(Team 1));
  • }
  • }
  • rule("Score - Reaper")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Hero Of(Victim) == Hero(Reaper);
  • }
  • actions
  • {
  • Global.TeamScore += 400;
  • }
  • }
  • rule("Score - Rest of Bosses")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Hero Of(Victim) != Hero(Reaper);
  • Hero Of(Victim) != Hero(Zenyatta);
  • Hero Of(Victim) != Hero(Zarya);
  • }
  • actions
  • {
  • Global.TeamScore += 800;
  • }
  • }
  • rule("Score - Zomnic")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Hero Of(Victim) == Hero(Zenyatta);
  • }
  • actions
  • {
  • Global.TeamScore += 20;
  • }
  • }
  • rule("Score - Zombardier")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Hero Of(Victim) == Hero(Zarya);
  • }
  • actions
  • {
  • Global.TeamScore += 20;
  • }
  • }
  • rule("Score - Enemies Killed")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Kills == 25;
  • }
  • actions
  • {
  • Global.TeamScore += 25;
  • Global.CurrentBonusKills = 25;
  • Big Message(All Players(Team 1), Custom String("Survival Bonus +25XP"));
  • }
  • }
  • rule("Score - Enemies Killed")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Kills == Global.CurrentBonusKills + 25;
  • Global.CurrentBonusKills <= 1200;
  • }
  • actions
  • {
  • Global.CurrentBonusKills = Global.Kills;
  • Wait(0.250, Ignore Condition);
  • Global.TeamScore += Global.CurrentBonusKills;
  • Big Message(All Players(Team 1), Custom String("Survival Bonus +{0}XP", Global.CurrentBonusKills));
  • }
  • }
  • rule("Score - Reset Bonus")
  • {
  • event
  • {
  • Player Died;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Global.Kills = 0;
  • Global.CurrentBonusKills = 0;
  • }
  • }
  • rule("Objective Description For Amount of Players")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.PointChange == True;
  • Global.LastLastPoint == False;
  • }
  • actions
  • {
  • Abort If(Global.LastLastPoint == True);
  • Global.CurrentMission = Custom String("Get To The Catacombes {0}/{1}", Count Of(Players Within Radius(Global.CurrentPoint, 5,
  • Team 1, Off)), Number of Living Players(Team 1));
  • Wait(0.250, Ignore Condition);
  • Loop If(Global.PointChange == True);
  • }
  • }
  • rule("Objective Description For Amount of Players")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.PointChange == True;
  • Global.LastLastPoint == True;
  • }
  • actions
  • {
  • Global.CurrentMission = Custom String("Get to the Collection Point {0}/{1}", Count Of(Players Within Radius(Global.CurrentPoint,
  • 10, Team 1, Off)), Number of Living Players(Team 1));
  • Wait(0.250, Ignore Condition);
  • Loop If(Global.PointChange == True);
  • }
  • }
Join the Workshop.codes Discord