Return to post
- settings
- {
- main
- {
- Description: "Junkenstein's Revenge PVE - made by Waitedboat4#2760 - Update V8.5: New Outro Update"
- }
- lobby
- {
- Map Rotation: Paused
- Max Spectators: 6
- Max Team 1 Players: 4
- Max Team 2 Players: 0
- Return To Lobby: Never
- Swap Teams After Match: No
- }
- modes
- {
- Team Deathmatch
- {
- enabled maps
- {
- Eichenwalde Halloween
- }
- }
- General
- {
- Allow Hero Switching: Off
- Kill Cam: Off
- Mercy Resurrect Counteracts Kills: Off
- Self Initiated Respawn: Off
- Spawn Health Packs: Disabled
- }
- }
- heroes
- {
- Team 2
- {
- Junkrat
- {
- No Ammunition Requirement: On
- }
- Mercy
- {
- Weapons Enabled: Caduceus Staff Only
- }
- Reaper
- {
- Health: 400%
- }
- Sigma
- {
- Spawn With Ultimate Ready: On
- }
- Symmetra
- {
- Spawn With Ultimate Ready: On
- }
- Zarya
- {
- Health: 40%
- }
- Zenyatta
- {
- Movement Speed: 65%
- }
- }
- }
- }
- variables
- {
- global:
- 0: _extendedGlobalCollection
- 2: Nodes
- 3: Segments
- 4: Attributes
- 5: map
- 6: _classIndexes
- 7: _tempNodes
- 8: _tempSegments
- 9: _tempAttributes
- 10: DoorHealth
- 11: UndeadSpawnPoints
- 12: Score
- 13: Junkdiff
- 14: Reapdiff
- 15: Mondiff
- 16: Sumdiff
- 17: Witchdiff
- 18: mins
- 19: sec
- 20: GAMEBROKE
- 21: Reaperintro
- 22: Monintro
- 23: Junkintro
- 24: Sumintro
- 25: Witchintro
- 26: BossDamage
- 27: Effects
- 28: Allheroes
- 29: Forever
- 30: TheMaeDiff
- 31: TheMaeIntro
- 32: Createmaestro
- 33: NumberofZens
- 34: NumberofZombardiers
- 35: AddAI
- 36: RevengeIntro
- 37: Cutsceneended
- 38: CurrentBonusKills
- 39: NormalWaves
- 40: EndGame
- 41: HUDtext
- 42: Endless
- 43: Waveint
- 44: MaxWave
- 45: BonusWave
- 46: WaveType
- player:
- 0: _extendedPlayerCollection
- 1: DoorPath
- 2: DoorPathIndex
- 3: Invis
- 4: Finishedpath
- 5: Lastpos
- 6: Scoreboard
- 7: pathfinderDoGetCurrent
- 8: pathfinderCurrent
- 9: pathmapReference
- 10: parentArray
- 11: destination
- 12: lastAttribute
- 13: Dijkstra_Final_Path
- 14: Dijkstra_Final_Path_Attributes
- 15: Dijkstra_Current
- 16: Dijkstra_Distances
- 17: Dijkstra_Unvisited
- 18: Dijkstra_Connected_Segments
- 19: Dijkstra_Neighbor_Index
- 20: Dijkstra_Distance
- 21: Dijkstra_Neighbor_Attributes
- 22: Dijkstra_Parent_Array
- 23: Survivalbonuskills
- }
- rule("Disable - Global")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- }
- actions
- {
- Disable Built-In Game Mode Completion;
- Disable Built-In Game Mode Scoring;
- Disable Built-In Game Mode Announcer;
- Disable Messages(All Players(Team 1));
- Wait(6, Ignore Condition);
- Enable Messages(All Players(Team 1));
- }
- }
- rule("Disable - Player")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Is Game In Progress == True;
- }
- actions
- {
- Disable Game Mode In-World UI(Event Player);
- Disable Game Mode HUD(Event Player);
- }
- }
- rule("Junkenstein's Revenge intro")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- }
- actions
- {
- Global.RevengeIntro = True;
- Create Dummy Bot(Hero(Junkrat), Team 2, -1, Vector(60.605, 20.639, -92.102), Vector(60.840, 20.152, -90.710));
- Start Camera(All Players(All Teams), Vector(61.588, 19.575, -89.057), Vector(62.016, 20.321, -92.440), 0);
- Wait(2, Ignore Condition);
- Start Camera(All Players(All Teams), Vector(73.852, 17.921, -95.652), Vector(67.776, 19.183, -94.479), 1);
- Wait(2, Ignore Condition);
- Create Dummy Bot(Hero(Zenyatta), Team 2, -1, Vector(68.333, 15.200, -97.410), Vector(0, 0, 0));
- Create Dummy Bot(Hero(Zenyatta), Team 2, -1, Vector(68.333, 15.200, -97.410), Vector(0, 0, 0));
- Create Dummy Bot(Hero(Zenyatta), Team 2, -1, Vector(68.333, 15.200, -97.410), Vector(0, 0, 0));
- Create Dummy Bot(Hero(Zenyatta), Team 2, -1, Vector(68.333, 15.200, -97.410), Vector(0, 0, 0));
- Start Camera(All Players(All Teams), Vector(75.266, 14.085, -94.347), Vector(69.998, 14.476, -97.515), 1);
- Wait(2, Ignore Condition);
- Start Camera(All Players(All Teams), Vector(81.784, 24.712, -90.594), Vector(77.399, 27.034, -95.033), 1);
- Big Message(All Players(All Teams), Custom String("JUNKENSTEIN'S REVENGE™"));
- Wait(4, Ignore Condition);
- Stop Camera(All Players(All Teams));
- Global.Cutsceneended = True;
- Wait(0.500, Ignore Condition);
- Global.RevengeIntro = False;
- Global.Cutsceneended = False;
- }
- }
- 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(87.190, 12.650, -71.510));
- Modify Global Variable(_tempNodes, Append To Array, Vector(85.470, 12.680, -77.710));
- Modify Global Variable(_tempNodes, Append To Array, Vector(76.990, 12.660, -66.540));
- Modify Global Variable(_tempNodes, Append To Array, Vector(93.590, 12.680, -72.380));
- Modify Global Variable(_tempNodes, Append To Array, Vector(93.020, 12.670, -77.800));
- Modify Global Variable(_tempNodes, Append To Array, Vector(103.010, 12.680, -74.210));
- Modify Global Variable(_tempNodes, Append To Array, Vector(103.940, 12.730, -79.220));
- Modify Global Variable(_tempNodes, Append To Array, Vector(103.320, 9.990, -86.370));
- Modify Global Variable(_tempNodes, Append To Array, Vector(101.990, 9.550, -92.100));
- Modify Global Variable(_tempNodes, Append To Array, Vector(78.530, 12.690, -99.600));
- Modify Global Variable(_tempNodes, Append To Array, Vector(74.670, 10.880, -110.610));
- Modify Global Variable(_tempNodes, Append To Array, Vector(66.730, 12.180, -94.560));
- Modify Global Variable(_tempNodes, Append To Array, Vector(72.780, 12.660, -70.900));
- Modify Global Variable(_tempNodes, Append To Array, Vector(68.040, 12.720, -70.320));
- Modify Global Variable(_tempNodes, Append To Array, Vector(65.140, 12.720, -75.570));
- Modify Global Variable(_tempNodes, Append To Array, Vector(61.610, 18.720, -88.080));
- Modify Global Variable(_tempNodes, Append To Array, Vector(60.800, 18.720, -92.610));
- Modify Global Variable(_tempNodes, Append To Array, Vector(59.170, 18.720, -98.750));
- Modify Global Variable(_tempNodes, Append To Array, Vector(70.110, 15.180, -63.960));
- Modify Global Variable(_tempNodes, Append To Array, Vector(67.400, 17.670, -68.020));
- Modify Global Variable(_tempNodes, Append To Array, Vector(63.980, 18.040, -74.490));
- Modify Global Variable(_tempNodes, Append To Array, Vector(59.470, 18.040, -76.530));
- Modify Global Variable(_tempNodes, Append To Array, Vector(59.380, 18.050, -82.820));
- Modify Global Variable(_tempNodes, Append To Array, Vector(62.720, 18.260, -87.210));
- Modify Global Variable(_tempSegments, Append To Array, Up);
- Modify Global Variable(_tempSegments, Append To Array, Vector(Empty Array, 4, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(Empty Array, 3, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(Empty Array, 2, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(1, 4, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(1, 3, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(1, 2, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(4, 2, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(3, 2, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(3, 5, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(5, 6, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(6, 4, 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(1, 9, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(9, 10, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(9, 11, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(12, 2, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(12, 13, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(13, 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(16, 17, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(16, 11, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(22, 21, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(21, 20, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(20, 19, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(19, 18, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(18, 2, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(22, 23, Empty Array));
- Modify Global Variable(_tempSegments, Append To Array, Vector(23, 15, Empty Array));
- Modify Global Variable(_tempAttributes, Append To Array, Vector(11, 16, 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("Pathfinder: Resolve Current")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Event Player.pathfinderDoGetCurrent == True;
- }
- actions
- {
- Event Player.pathfinderCurrent = Index Of Array Value(Global.Nodes[Event Player.pathmapReference], First Of(Sorted Array(
- Global.Nodes[Event Player.pathmapReference], Distance Between(Position Of(Event Player), Current Array Element))));
- Start Throttle In Direction(Event Player, Direction Towards(Position Of(Event Player),
- Event Player.pathfinderCurrent == -1 ? Event Player.destination : Global.Nodes[Event Player.pathmapReference][Event Player.pathfinderCurrent]),
- 1, To World, Replace existing throttle, Direction and Magnitude);
- Event Player.pathfinderDoGetCurrent = False;
- }
- }
- rule("Pathfinder: Resolve Next")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Distance Between(Position Of(Event Player),
- Event Player.pathfinderCurrent == -1 ? Event Player.destination : Global.Nodes[Event Player.pathmapReference][Event Player.pathfinderCurrent])
- <= 0.400;
- Event Player.parentArray != Null;
- }
- actions
- {
- If(Event Player.pathfinderCurrent != -1);
- Event Player.lastAttribute = Mapped Array(Filtered Array(Global.Attributes[Event Player.pathmapReference], X Component Of(
- Current Array Element) == Event Player.pathfinderCurrent && Y Component Of(Current Array Element)
- == Event Player.parentArray[Event Player.pathfinderCurrent] - 1), Z Component Of(Current Array Element));
- Event Player.pathfinderCurrent = Event Player.parentArray[Event Player.pathfinderCurrent] - 1;
- Else;
- Stop Throttle In Direction(Event Player);
- Event Player.parentArray = Null;
- End;
- }
- }
- rule("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);
- 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
- {
- Event Player._extendedPlayerCollection[0] = 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 = Empty Array;
- Event Player.Dijkstra_Final_Path_Attributes = Empty Array;
- Event Player.Dijkstra_Current = Index Of Array Value(Global.Nodes[Global.map], First Of(Sorted Array(Global.Nodes[Global.map],
- Distance Between(First Of(Event Player._extendedPlayerCollection), Current Array Element))));
- Event Player.Dijkstra_Distances[Event Player.Dijkstra_Current] = 0.000;
- Event Player.Dijkstra_Unvisited = Mapped Array(Global.Nodes[Global.map], Current Array Index);
- While(Is True For Any(Event Player.Dijkstra_Unvisited, Event Player.Dijkstra_Distances[Current Array Element] != 0));
- Wait(0.016, Ignore Condition);
- Event Player.Dijkstra_Connected_Segments = Filtered Array(Global.Segments[Global.map], Array Contains(Append To Array(
- Append To Array(Empty Array, X Component Of(Current Array Element)), Y Component Of(Current Array Element)),
- Event Player.Dijkstra_Current));
- Event Player._extendedPlayerCollection[1] = 0;
- While(Event Player._extendedPlayerCollection[1] < Count Of(Event Player.Dijkstra_Connected_Segments));
- Wait(0.016, Ignore Condition);
- Event Player.Dijkstra_Neighbor_Index = First Of(Filtered Array(Append To Array(Append To Array(Empty Array, X Component Of(
- Event Player.Dijkstra_Connected_Segments[Event Player._extendedPlayerCollection[1]])), Y Component Of(
- Event Player.Dijkstra_Connected_Segments[Event Player._extendedPlayerCollection[1]])),
- Current Array Element != Event Player.Dijkstra_Current));
- Event Player.Dijkstra_Distance = Distance Between(Global.Nodes[Global.map][Event Player.Dijkstra_Neighbor_Index],
- Global.Nodes[Global.map][Event Player.Dijkstra_Current]) + Event Player.Dijkstra_Distances[Event Player.Dijkstra_Current];
- Event Player.Dijkstra_Neighbor_Attributes = Filtered Array(Global.Attributes[Global.map], Y Component Of(Current Array Element)
- == Event Player.Dijkstra_Current && X Component Of(Current Array Element) == Event Player.Dijkstra_Neighbor_Index);
- If((
- Event Player.Dijkstra_Distances[Event Player.Dijkstra_Neighbor_Index] == 0 || Event Player.Dijkstra_Distance < Event Player.Dijkstra_Distances[Event Player.Dijkstra_Neighbor_Index])
- && (!Count Of(Event Player.Dijkstra_Neighbor_Attributes) || Is True For Any(Event Player.Dijkstra_Neighbor_Attributes,
- Array Contains(Null, Z Component Of(Current Array Element)))));
- Event Player.Dijkstra_Distances[Event Player.Dijkstra_Neighbor_Index] = Event Player.Dijkstra_Distance;
- Event Player.Dijkstra_Parent_Array[Event Player.Dijkstra_Neighbor_Index] = Event Player.Dijkstra_Current + 1;
- End;
- Event Player._extendedPlayerCollection[1] += 1;
- End;
- Modify Player Variable(Event Player, Dijkstra_Unvisited, Remove From Array By Value, Event Player.Dijkstra_Current);
- Skip If(Index Of Array Value(Global.Nodes[Global.map], First Of(Sorted Array(Global.Nodes[Global.map], Distance Between(
- Position Of(Event Player), Current Array Element)))) == Event Player.Dijkstra_Current, 2);
- Event Player.Dijkstra_Current = First Of(Sorted Array(Filtered Array(Event Player.Dijkstra_Unvisited,
- Event Player.Dijkstra_Distances[Current Array Element] != 0), Event Player.Dijkstra_Distances[Current Array Element]));
- End;
- Event Player.pathmapReference = Global.map;
- Event Player.parentArray = Event Player.Dijkstra_Parent_Array;
- Event Player.destination = First Of(Event Player._extendedPlayerCollection);
- Event Player.pathfinderDoGetCurrent = True;
- Event Player.Dijkstra_Current = 0;
- Event Player.Dijkstra_Distances = 0;
- Event Player.Dijkstra_Connected_Segments = 0;
- Event Player.Dijkstra_Neighbor_Index = 0;
- Event Player.Dijkstra_Distance = 0;
- Event Player.Dijkstra_Parent_Array = 0;
- 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)))) > 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;
- }
- actions
- {
- Stop Throttle In Direction(Event Player);
- Event Player.parentArray = Null;
- }
- }
- rule("Timer")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- }
- actions
- {
- Set Match Time(1620);
- }
- }
- rule("Timer")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.NormalWaves == True;
- }
- actions
- {
Set Match Time(480);
- Global.mins = 8;
- Set Match Time(Global.mins * 60);
- }
- }
- rule("Timer")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Forever == True;
- Global.NormalWaves == False;
- Global.Endless == False;
- }
- actions
- {
- Pause Match Time;
- Global.mins = 0;
- }
- }
- rule("Timer")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Forever == False;
- Global.NormalWaves == False;
- Global.Endless == False;
- }
- actions
- {
Set Match Time(900);
- Global.mins = 15;
- Set Match Time(Global.mins * 60);
- }
- }
- rule("Gamemode Made By Waitedboat4 - Please DO NOT Steal My Work As This Took Too Long To Make")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- All;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.RevengeIntro == False;
- }
- actions
- {
- Wait(0.250, Abort When False);
- Create HUD Text(Event Player, Null, Null, Custom String("Created By Waitedboat4#2760"), Right, 0, White, White, Green,
- Visible To and String, Default Visibility);
- Big Message(Event Player, Custom String("DEFEND THE CASTLE DOOR!"));
- Small Message(Event Player, Custom String("Gamemode Created By Waitedboat4#2760"));
- Global.HUDtext = Custom String("DEFEND THE DOOR");
- }
- }
- rule("Skip Setup")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is In Setup == True;
- }
- actions
- {
- Set Match Time(0);
- }
- }
- rule("Invis")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Sombra;
- }
- conditions
- {
- Is Using Ability 1(Event Player) == True;
- }
- actions
- {
- Event Player.Invis = True;
- }
- }
- rule("Invis")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Sombra;
- }
- conditions
- {
- Is Using Ability 1(Event Player) == False;
- }
- actions
- {
- Event Player.Invis = False;
- }
- }
- rule("Barrier - Effect")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Workshop Setting Toggle(Custom String("Settings"), Custom String("Show Boundaries"), False) == True;
- }
- actions
- {
- Create Effect(All Players(All Teams), Sphere, Blue, Vector(85.024, 13.948, -89.771), 35, Visible To Position and Radius);
- Create Effect(All Players(All Teams), Sphere, Blue, Vector(89.748, 14.543, -102.709), 2, Visible To Position and Radius);
- Create Effect(All Players(All Teams), Sphere, Blue, Vector(90.352, 14.543, -115.488), 2, Visible To Position and Radius);
- }
- }
- rule("Barrier - Push Back")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Distance Between(Event Player, Vector(85.024, 13.948, -89.771)) > 34;
- Is Alive(Event Player) == True;
- }
- actions
- {
- Event Player.Lastpos = Position Of(Event Player);
- }
- }
- rule("Barrier - Push Back")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Distance Between(Event Player, Vector(85.024, 13.948, -89.771)) > 35;
- Is Alive(Event Player) == True;
- Is On Ground(Event Player) == True;
- }
- actions
- {
- Abort If(Is Alive(Event Player) == False);
- Teleport(Event Player, Event Player.Lastpos);
- Wait(0.016, Ignore Condition);
- Loop If(Distance Between(Event Player, Vector(85.024, 13.948, -89.771)) > 35);
- }
- }
- rule("Player Spawn")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- All;
- }
- conditions
- {
- Has Spawned(Event Player) == True;
- Is Alive(Event Player) == True;
- }
- actions
- {
- Teleport(Event Player, Vector(87.559, 13.896, -69.931));
- Set Facing(Event Player, Direction Towards(Event Player, Vector(80.084, 14.263, -99.969)), To World);
- }
- }
- rule("Undead Spawn Points")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
- Global.UndeadSpawnPoints = Array(Vector(59.451, 19.973, -99.597), Vector(75.129, 11.941, -110.958), Vector(101.827, 10.854,
- -93.440));
- Global.DoorHealth = Workshop Setting Integer(Custom String("Settings"), Custom String("Door Health"), 2000, 80, 9999999);
- }
- }
- rule("Path to door")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Zenyatta;
- }
- conditions
- {
- Is Alive(Event Player) == True;
- Has Spawned(Event Player) == True;
- Is Dummy Bot(Event Player) == True;
- Global.RevengeIntro == False;
- }
- actions
- {
- Start Facing(Event Player, Direction Towards(Event Player, Event Player.DoorPath[Event Player.DoorPathIndex]), 200, To World,
- Direction and Turn Rate);
- Start Throttle In Direction(Event Player, Direction Towards(Event Player, Event Player.DoorPath[Event Player.DoorPathIndex]), 1,
- To World, Replace existing throttle, Direction and Magnitude);
- If(Distance Between(Event Player, First Of(Global.UndeadSpawnPoints)) <= 2);
- Event Player.DoorPath = Array(Vector(61.533, 19.973, -89.165), Vector(66.128, 13.973, -73.540), Vector(69.729, 13.973, -70.517),
- Vector(73.689, 13.910, -70.007), Vector(77.196, 13.910, -67.016), Vector(87.650, 13.969, -66.907), Vector(88.928, 14.062,
- -63.771));
- Else If(Distance Between(Event Player, Global.UndeadSpawnPoints[1]) <= 2);
- Event Player.DoorPath = Vector(88.838, 14.064, -64.502);
- Else If(Distance Between(Event Player, Global.UndeadSpawnPoints[2]) <= 2);
- Event Player.DoorPath = Array(Vector(103.648, 11.016, -87.708), Vector(103.747, 13.976, -79.025), Vector(85.959, 13.914, -75.011),
- Vector(88.725, 14.174, -64.664));
- End;
- }
- }
- rule("Zomnics Explode")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Zenyatta;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Distance Between(Event Player, Vector(88.946, 14.053, -63.987)) <= 2;
- Is Alive(Event Player) == True;
- }
- actions
- {
- Stop Throttle In Direction(Event Player);
- Set Status(Event Player, Null, Stunned, 1.250);
- Wait(1, Ignore Condition);
- Abort If(Is Alive(Event Player) == False);
- Play Effect(All Players(All Teams), Bad Explosion, Red, Event Player, 5);
- Damage(Players Within Radius(Event Player, 5, Opposite Team Of(Team Of(Event Player)), Surfaces And Enemy Barriers), Event Player,
- 40);
- Global.DoorHealth -= 80;
- Wait(0.250, Ignore Condition);
- Destroy Dummy Bot(Team Of(Event Player), Slot Of(Event Player));
- }
- }
- rule("Create Zomnics")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Number of Heroes(Hero(Zenyatta), Team 2) < Global.NumberofZens;
- Is Game In Progress == True;
- Global.RevengeIntro == False;
- Global.EndGame == False;
- }
- actions
- {
Wait(Random Integer(2, 5), Ignore Condition);
- Wait(Random Integer(1, 5), Ignore Condition);
- Abort If(Global.EndGame == True);
Create Dummy Bot(Hero(Zenyatta), Team 2, -1, Random Value In Array(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array,
Empty Array));
- Create Dummy Bot(Hero(Zenyatta), Team 2, -1, Random Value In Array(Global.UndeadSpawnPoints), Forward);
- Loop If(Number of Heroes(Hero(Zenyatta), Team 2) < Global.NumberofZens);
- }
- }
- rule("Zomnics Path")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Zenyatta;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Distance Between(Event Player, Event Player.DoorPath[Event Player.DoorPathIndex]) <= 2;
- Event Player.DoorPathIndex < Count Of(Event Player.DoorPath);
- }
- actions
- {
- Event Player.DoorPathIndex += 1;
- }
- }
- rule("Bots Die")
- {
- event
- {
- Player Died;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Global.NormalWaves == False;
- Global.Endless == False;
- }
- actions
- {
- Wait(0.250, Ignore Condition);
- Destroy Dummy Bot(Team Of(Event Player), Slot Of(Event Player));
- }
- }
- rule("HUD")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.RevengeIntro == False;
- Is Game In Progress == True;
- }
- actions
- {
- Create HUD Text(All Players(Team 1), Null, Null, Custom String("{1} {0}%", Global.DoorHealth, Icon String(Plus)), Top, 1, White,
- White, White, Visible To and String, Default Visibility);
- Create HUD Text(All Players(Team 1), Custom String("Team Score: {0}", Global.Score), Null, Null, Left, 0, White, White, White,
- Visible To and String, Default Visibility);
- Create HUD Text(All Players(Team 1), Null, Null, Custom String("{2} | {0}:{1}", Global.mins, Global.sec, Global.HUDtext), Top, 0,
- White, White, White, Visible To and String, Default Visibility);
- }
- }
- rule("Create Maestro")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
- Global.Createmaestro = Workshop Setting Toggle(Custom String("Experimental Settings"), Custom String("The Maestro"), False);
- }
- }
- rule("Create Junkenstein")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Number of Heroes(Hero(Mercy), Team 2) == 0;
- Global.NormalWaves == False;
- Global.Endless == False;
- }
- actions
- {
- Wait(Global.Junkdiff, Ignore Condition);
- Create Dummy Bot(Hero(Junkrat), Team 2, -1, Vector(56.648, 24.364, -104.668), Vector(Empty Array, Empty Array, Empty Array));
- Loop;
- }
- }
- rule("Teleport")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Junkrat;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Distance Between(Event Player, Vector(56.648, 24.364, -104.668)) > 2;
- Global.RevengeIntro == False;
- }
- actions
- {
- Start Forcing Player Position(Event Player, Vector(56.648, 24.364, -104.668), True);
- Wait(0.250, Ignore Condition);
- Stop Forcing Player Position(Event Player);
- }
- }
- rule("Health")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Junkrat;
- }
- conditions
- {
- Is Alive(Event Player) == True;
- Has Spawned(Event Player) == True;
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Set Max Health(Event Player, 1125);
- Wait(0.250, Ignore Condition);
- Heal(Event Player, Null, Max Health(Event Player));
- }
- }
- rule("Facing")
- {
- 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);
- Hero Of(Event Player) != Hero(Reaper);
- Hero Of(Event Player) != Hero(Zarya);
- Hero Of(Event Player) != Hero(Junkrat);
- Hero Of(Event Player) != Hero(Sigma);
- Hero Of(Event Player) != Hero(Symmetra);
- }
- 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("Facing - Zarya")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Zarya;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Global.RevengeIntro == False;
- }
- 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 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) + Vector(0, Distance Between(
Event Player, Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) / 3, 0)), 200, To World,
- Event Player, Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) / 4, 0)), 200, To World,
- Direction and Turn Rate);
- }
- }
- 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(Reaper);
- Hero Of(Event Player) != Hero(Sigma);
- Global.RevengeIntro == False;
- Is Using Ultimate(Event Player) == False;
- }
- 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);
- Global.RevengeIntro == False;
- }
- actions
- {
- Stop Holding Button(Event Player, Primary Fire);
- Stop 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;
- }
- actions
- {
- 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;
- }
- actions
- {
- Stop Holding Button(Event Player, Secondary Fire);
- Wait(0.250, Ignore Condition);
- Start Holding Button(Event Player, Primary 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;
- }
- actions
- {
- 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;
- }
- actions
- {
- Stop Holding Button(Event Player, Secondary Fire);
- Wait(0.250, Ignore Condition);
- Start Holding Button(Event Player, Primary Fire);
- }
- }
- rule("Create Junkenstein's Monster")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Number of Heroes(Hero(Mercy), Team 2) == 0;
- Global.NormalWaves == False;
- Global.Endless == False;
- }
- actions
- {
- Wait(Global.Mondiff, Ignore Condition);
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- Loop;
- }
- }
rule("Go to Door")
- rule("Start Following")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Roadhog;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Has Spawned(Event Player) == True;
- Is Alive(Event Player) == True;
- }
- actions
- {
- Skip If(Global.Monintro == True, 1);
- Wait(2, Ignore Condition);
Start Throttle In Direction(Event Player, Direction Towards(Event Player, Vector(86.653, 14.196, -71.812)), 1, To World,
Replace existing throttle, Direction and Magnitude);
- Event Player.Finishedpath = True;
- Set Max Health(Event Player, 633);
- Wait(0.250, Ignore Condition);
- Heal(Event Player, Null, Max Health(Event Player));
- }
- }
rule("Start Following")
{
event
{
Ongoing - Each Player;
Team 2;
Roadhog;
}
conditions
{
Is Dummy Bot(Event Player) == True;
Has Spawned(Event Player) == True;
Is Alive(Event Player) == True;
Distance Between(Event Player, Vector(86.653, 14.196, -71.812)) <= 2;
}
actions
{
Event Player.Finishedpath = True;
}
}
- rule("Sym Ult")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Symmetra;
- }
- conditions
- {
- Ultimate Charge Percent(Event Player) == 100;
- Is Dummy Bot(Event Player) == True;
- Is Alive(Event Player) == True;
Has Spawned(Event Player) == True;
- }
- actions
- {
- Start Facing(Event Player, Direction Towards(Event Player, Vector(65.948, 19.597, -76.272)), 200, To World,
- Direction and Turn Rate);
- Wait(0.500, Ignore Condition);
- Press Button(Event Player, Ultimate);
- Wait(0.250, Ignore Condition);
- Press Button(Event Player, Ultimate);
- Wait(1, Ignore Condition);
- Press Button(Event Player, Primary Fire);
- Wait(0.250, Ignore Condition);
- 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("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("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);
- }
- actions
- {
- Press Button(Event Player, Ability 1);
- }
- }
- 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("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("ULT")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Ultimate Charge Percent(Event Player) == 100;
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(Junkrat);
- }
- actions
- {
- Press Button(Event Player, Ultimate);
- }
- }
- rule("Create The Witch")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.NormalWaves == False;
- Global.Endless == False;
- }
- actions
- {
- Wait(Global.Witchdiff, Ignore Condition);
- Create Dummy Bot(Hero(Mercy), Team 2, -1, Vector(83.339, 14.454, -94.776), 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
- {
- 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(56.648, 24.364, -104.668), 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;
- }
- 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("Health")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Mercy;
- }
- conditions
- {
- Is Alive(Event Player) == True;
- Has Spawned(Event Player) == True;
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Set Max Health(Event Player, 800);
- Wait(0.250, Ignore Condition);
- Heal(Event Player, Null, Max Health(Event Player));
- }
- }
- rule("Witch Heal")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Mercy;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Distance Between(Event Player, First Of(Filtered Array(Filtered Array(All Living Players(Team Of(Event Player)), Hero Of(
- Current Array Element) != Hero(Junkrat)), Hero Of(Current Array Element) != Hero(Mercy)))) > 5;
- Has Spawned(Event Player) == True;
- Is Alive(Event Player) == True;
- }
- actions
- {
- Start Facing(Event Player, Direction Towards(Event Player, First Of(Sorted Array(Filtered Array(Filtered Array(All Living Players(
- Team Of(Event Player)), Hero Of(Current Array Element) != Hero(Mercy)), Hero Of(Current Array Element) != Hero(Junkrat)),
- Distance Between(Event Player, Current Array Element)))), 200, To World, Direction and Turn Rate);
- Event Player._extendedPlayerCollection[0] = First Of(Filtered Array(Filtered Array(All Living Players(Team Of(Event Player)),
- Hero Of(Current Array Element) != Hero(Junkrat)), Hero Of(Current Array Element) != Hero(Mercy)));
- Event Player.Dijkstra_Final_Path = Empty Array;
- Event Player.Dijkstra_Final_Path_Attributes = Empty Array;
- Event Player.Dijkstra_Current = Index Of Array Value(Global.Nodes[Global.map], First Of(Sorted Array(Global.Nodes[Global.map],
- Distance Between(First Of(Event Player._extendedPlayerCollection), Current Array Element))));
- Event Player.Dijkstra_Distances[Event Player.Dijkstra_Current] = 0.000;
- Event Player.Dijkstra_Unvisited = Mapped Array(Global.Nodes[Global.map], Current Array Index);
- While(Is True For Any(Event Player.Dijkstra_Unvisited, Event Player.Dijkstra_Distances[Current Array Element] != 0));
- Wait(0.016, Ignore Condition);
- Event Player.Dijkstra_Connected_Segments = Filtered Array(Global.Segments[Global.map], Array Contains(Append To Array(
- Append To Array(Empty Array, X Component Of(Current Array Element)), Y Component Of(Current Array Element)),
- Event Player.Dijkstra_Current));
- Event Player._extendedPlayerCollection[1] = 0;
- While(Event Player._extendedPlayerCollection[1] < Count Of(Event Player.Dijkstra_Connected_Segments));
- Wait(0.016, Ignore Condition);
- Event Player.Dijkstra_Neighbor_Index = First Of(Filtered Array(Append To Array(Append To Array(Empty Array, X Component Of(
- Event Player.Dijkstra_Connected_Segments[Event Player._extendedPlayerCollection[1]])), Y Component Of(
- Event Player.Dijkstra_Connected_Segments[Event Player._extendedPlayerCollection[1]])),
- Current Array Element != Event Player.Dijkstra_Current));
- Event Player.Dijkstra_Distance = Distance Between(Global.Nodes[Global.map][Event Player.Dijkstra_Neighbor_Index],
- Global.Nodes[Global.map][Event Player.Dijkstra_Current]) + Event Player.Dijkstra_Distances[Event Player.Dijkstra_Current];
- Event Player.Dijkstra_Neighbor_Attributes = Filtered Array(Global.Attributes[Global.map], Y Component Of(Current Array Element)
- == Event Player.Dijkstra_Current && X Component Of(Current Array Element) == Event Player.Dijkstra_Neighbor_Index);
- If((
- Event Player.Dijkstra_Distances[Event Player.Dijkstra_Neighbor_Index] == 0 || Event Player.Dijkstra_Distance < Event Player.Dijkstra_Distances[Event Player.Dijkstra_Neighbor_Index])
- && (!Count Of(Event Player.Dijkstra_Neighbor_Attributes) || Is True For Any(Event Player.Dijkstra_Neighbor_Attributes,
- Array Contains(Null, Z Component Of(Current Array Element)))));
- Event Player.Dijkstra_Distances[Event Player.Dijkstra_Neighbor_Index] = Event Player.Dijkstra_Distance;
- Event Player.Dijkstra_Parent_Array[Event Player.Dijkstra_Neighbor_Index] = Event Player.Dijkstra_Current + 1;
- End;
- Event Player._extendedPlayerCollection[1] += 1;
- End;
- Modify Player Variable(Event Player, Dijkstra_Unvisited, Remove From Array By Value, Event Player.Dijkstra_Current);
- Skip If(Index Of Array Value(Global.Nodes[Global.map], First Of(Sorted Array(Global.Nodes[Global.map], Distance Between(
- Position Of(Event Player), Current Array Element)))) == Event Player.Dijkstra_Current, 2);
- Event Player.Dijkstra_Current = First Of(Sorted Array(Filtered Array(Event Player.Dijkstra_Unvisited,
- Event Player.Dijkstra_Distances[Current Array Element] != 0), Event Player.Dijkstra_Distances[Current Array Element]));
- End;
- Event Player.pathmapReference = Global.map;
- Event Player.parentArray = Event Player.Dijkstra_Parent_Array;
- Event Player.destination = First Of(Event Player._extendedPlayerCollection);
- Event Player.pathfinderDoGetCurrent = True;
- Event Player.Dijkstra_Current = 0;
- Event Player.Dijkstra_Distances = 0;
- Event Player.Dijkstra_Connected_Segments = 0;
- Event Player.Dijkstra_Neighbor_Index = 0;
- Event Player.Dijkstra_Distance = 0;
- Event Player.Dijkstra_Parent_Array = 0;
- Wait(5, Ignore Condition);
- Loop If(Distance Between(Event Player, First Of(Filtered Array(Filtered Array(All Living Players(Team Of(Event Player)), 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, First Of(Filtered Array(Filtered Array(All Living Players(Team Of(Event Player)), 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;
- }
- }
- 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("Lose")
- {
- event
- {
Ongoing - Each Player;
All;
- Player Died;
- Team 1;
- All;
- }
- conditions
- {
- Number of Living Players(Team 1) == 0;
- Is Game In Progress == True;
- Global.Forever == False;
- }
- actions
- {
- Destroy All HUD Text;
- Set Slow Motion(35);
- Start Camera(All Players(Team 1), Position Of(Victim) + Up + Up + Up, Position Of(Victim), 0);
- Wait(2, Ignore Condition);
- Disable Built-In Game Mode Respawning(Event Player);
- Declare Team Victory(Team 2);
- }
- }
- rule("Lose")
- {
- event
- {
Ongoing - Each Player;
All;
- Player Died;
- Team 1;
- All;
- }
- conditions
- {
- Number of Living Players(Team 1) == 0;
- Is Game In Progress == True;
- Global.Forever == True;
- }
- actions
- {
- Destroy All HUD Text;
- Set Slow Motion(35);
- Start Camera(All Players(Team 1), Position Of(Victim) + Up + Up + Up, Position Of(Victim), 0);
- Wait(2, Ignore Condition);
- Disable Built-In Game Mode Respawning(Event Player);
- Declare Team Victory(Team 1);
- }
- }
- rule("Win")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Match Time == 0;
- Is Game In Progress == True;
- Global.Forever == False;
- Global.NormalWaves == False;
- Global.Endless == False;
- }
- actions
- {
- Disable Built-In Game Mode Respawning(Event Player);
- Declare Team Victory(Team 1);
- }
- }
- rule("Create The Reaper")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.NormalWaves == False;
- Global.Endless == False;
- }
- actions
- {
- Wait(Global.Reapdiff, Ignore Condition);
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- Loop;
- }
- }
- rule("Teleport")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Reaper;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Has Spawned(Event Player) == True;
- Is Alive(Event Player) == True;
- }
- actions
- {
- Wait(0.500, Ignore Condition);
- Start Facing(Event Player, Direction Towards(Event Player, Vector(85.495, 13.932, -77.854)), 500, To World,
- Direction and Turn Rate);
- Wait(0.500, Ignore Condition);
- Stop Facing(Event Player);
- Press Button(Event Player, Ability 2);
- Wait(0.500, Ignore Condition);
- Press Button(Event Player, Primary Fire);
- Wait(2, Ignore Condition);
- Event Player.Finishedpath = True;
- 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("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;
- }
- actions
- {
- Start Holding Button(Event Player, Primary Fire);
- }
- }
- rule("Create The Summoner")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.NormalWaves == False;
- Global.Endless == False;
- }
- actions
- {
- Wait(Global.Sumdiff, Ignore Condition);
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- Loop;
- }
- }
- rule("Path")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Symmetra;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Alive(Event Player) == True;
- Has Spawned(Event Player) == True;
- }
- actions
- {
- Set Max Health(Event Player, 750);
- Wait(0.250, Ignore Condition);
- Heal(Event Player, Null, Max Health(Event Player));
- Skip If(Global.Sumintro == True, 1);
- Wait(1.750, Ignore Condition);
- Event Player.DoorPathIndex = 0;
- Event Player.DoorPath = Array(Vector(61.533, 19.973, -89.165), Vector(66.128, 13.973, -73.540), Vector(69.729, 13.973, -70.517),
- Vector(73.689, 13.910, -70.007), Vector(77.196, 13.910, -67.016), Vector(87.650, 13.969, -66.907));
- Start Throttle In Direction(Event Player, Direction Towards(Event Player, Event Player.DoorPath[Event Player.DoorPathIndex]), 1,
- To World, Replace existing throttle, Direction and Magnitude);
- }
- }
- rule("Symmetra Path")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Symmetra;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Distance Between(Event Player, Event Player.DoorPath[Event Player.DoorPathIndex]) <= 2;
- Event Player.DoorPathIndex < Count Of(Event Player.DoorPath);
- }
- actions
- {
- Event Player.DoorPathIndex += 1;
- }
- }
- rule("Symmetra Path")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Symmetra;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.DoorPathIndex == 5;
- }
- actions
- {
- Event Player.Finishedpath = True;
- }
- }
- rule("Lose")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.DoorHealth <= 0;
- Is Game In Progress == True;
- Global.Endless == False;
- }
- actions
- {
- Destroy All HUD Text;
- Big Message(All Players(All Teams), Custom String("DOOR DESTROYED"));
- Disable Built-In Game Mode Respawning(All Players(Team 1));
Wait(1, Ignore Condition);
- Wait(4, Ignore Condition);
- Declare Team Victory(Team 2);
- }
- }
- rule("Create Zombardiers")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Number of Heroes(Hero(Zarya), Team 2) < Global.NumberofZombardiers;
- Is Game In Progress == True;
- Global.RevengeIntro == False;
- Global.EndGame == False;
- }
- actions
- {
- Wait(Random Integer(10, 30), Ignore Condition);
- Abort If(Global.EndGame == 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("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("Path to door")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Zarya;
- }
- conditions
- {
- Is Alive(Event Player) == True;
- Has Spawned(Event Player) == True;
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Event Player.DoorPathIndex = 0;
- Start Throttle In Direction(Event Player, Direction Towards(Event Player, Event Player.DoorPath[Event Player.DoorPathIndex]), 1,
- To World, Replace existing throttle, Direction and Magnitude);
- If(Distance Between(Event Player, First Of(Global.UndeadSpawnPoints)) <= 2);
- Event Player.DoorPath = Array(Vector(60.330, 20.148, -93.199), Vector(62.059, 20.270, -93.685));
- Else If(Distance Between(Event Player, Global.UndeadSpawnPoints[1]) <= 2);
- Event Player.DoorPath = Vector(81.578, 13.933, -93.675);
- Else If(Distance Between(Event Player, Global.UndeadSpawnPoints[2]) <= 2);
- Event Player.DoorPath = Array(Vector(103.594, 11.102, -88.685), Vector(104.527, 14.137, -77.604), Vector(102.692, 14.090, -73.167),
- Vector(95.201, 14.121, -73.396));
- End;
- }
- }
- rule("Stop")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Zarya;
- }
- conditions
- {
- Distance Between(Event Player, Last Of(Event Player.DoorPath)) <= 2;
- Is Dummy Bot(Event Player) == True;
- Is Alive(Event Player) == True;
- Has Spawned(Event Player) == True;
- }
- actions
- {
- Stop Throttle In Direction(Event Player);
- }
- }
- rule("Zarya Path")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Zarya;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Distance Between(Event Player, Event Player.DoorPath[Event Player.DoorPathIndex]) <= 2;
- Event Player.DoorPathIndex < Count Of(Event Player.DoorPath);
- }
- actions
- {
- Event Player.DoorPathIndex += 1;
- }
- }
- rule("Spawn No Heal")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Is In Spawn Room(Event Player) == True;
- }
- actions
- {
- Set Healing Received(Event Player, 0);
- }
- }
- rule("Spawn No Heal")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Is In Spawn Room(Event Player) == False;
- }
- actions
- {
- Set Healing Received(Event Player, 100);
- }
- }
rule("Barrier - Push Back")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is In Spawn Room(Event Player) == True;
Is Alive(Event Player) == True;
}
actions
{
Abort If(Is Alive(Event Player) == False);
Teleport(Event Player, Vector(87.559, 13.896, -69.931));
Wait(0.160, Ignore Condition);
Loop If(Is In Spawn Room(Event Player) == True);
}
}
- 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);
- Global.TheMaeDiff = Workshop Setting Integer(Custom String("Experimental Settings"), Custom String("The Maestro Delay"), 400, 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;
- Skip If(Global.TheMaeDiff <= 10, 1);
- Global.TheMaeDiff -= 10;
- Loop If(Is Game In Progress == True);
- }
- }
- rule("Mins")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.sec == 59;
- Global.mins > 0;
- }
- actions
- {
- Global.mins -= 1;
- }
- }
- rule("Sec")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Match Time > 0;
- }
- actions
- {
- Wait(1, Ignore Condition);
- Global.sec -= 1;
Loop If(Is Game In Progress == True);
- Loop If(Match Time > 0);
- }
- }
- rule("Sec")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.sec == 0;
- }
- actions
- {
- Wait(1, Ignore Condition);
- Global.sec = 59;
- }
- }
- rule("Shooting - Reaper")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Reaper;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.Finishedpath == 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, Primary Fire);
- }
- }
- rule("Create Zomnics - Game Broke")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Number of Heroes(Hero(Zenyatta), Team 2) < Global.NumberofZens;
- Is Game In Progress == True;
- Global.GAMEBROKE == True;
- }
- actions
- {
- Wait(Random Integer(2, 5), Ignore Condition);
- 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.NumberofZens);
- }
- }
- rule("Broke Verify")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Number of Heroes(Hero(Zenyatta), Team 2) == 0;
- Is Game In Progress == True;
- Global.RevengeIntro == False;
- Global.EndGame == False;
- }
- actions
- {
- Wait(6, Abort When False);
- Global.GAMEBROKE = True;
- Wait(0.250, Ignore Condition);
- Global.GAMEBROKE = False;
- }
- }
- 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), Vector(64.829, 20.727, -91.771), 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.DoorHealth != 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), Vector(58.352, 24.316, -102.994), 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), Vector(80.185, 13.901, -96.185), 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), Vector(83.022, 14.306, -93.029), 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), Vector(59.837, 20.211, -96.009), 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("Maestro Intro")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Sigma;
- }
- conditions
- {
- Is Alive(Event Player) == True;
- Global.TheMaeIntro == 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);
- Global.TheMaeIntro = True;
- Start Camera(All Players(Team 1), Vector(85.658, 20.763, -77.302), Eye Position(Players On Hero(Hero(Sigma), Team 2)), 0);
- Big Message(All Players(All Teams), Custom String("The Maestro"));
- Wait(2, Ignore Condition);
- Stop Camera(All Players(Team 1));
- Set Slow Motion(100);
- Enable Hero HUD(Event Player);
- }
- }
rule("Damage")
- rule("Difficulty")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
- Global.BossDamage = Workshop Setting Integer(Custom String("Difficulty"), Custom String("Boss Damage"), 100, 50, 250);
- }
- }
rule("Damage")
- rule("Boss Damage")
- {
- event
- {
- Ongoing - Each Player;
All;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Alive(Event Player) == True;
Has Spawned(Event Player) == True;
- }
- actions
- {
Set Damage Dealt(All Players(Team 2), Global.BossDamage);
- Set Damage Dealt(Event Player, Global.BossDamage);
- }
- }
- rule("Allowed heroes")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
- Global.Allheroes = Workshop Setting Toggle(Custom String("Settings"), Custom String("All Heroes"), False);
- }
- }
- rule("Allowed heroes")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Global.Allheroes == True;
- }
- actions
- {
- Set Player Allowed Heroes(Event Player, All Heroes);
- }
- }
- rule("Allowed heroes")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Global.Allheroes == False;
- }
- actions
- {
- Set Player Allowed Heroes(Event Player, Array(Hero(Genji), Hero(Hanzo), Hero(McCree), Hero(Soldier: 76), Hero(Torbjörn), Hero(
- Tracer), Hero(Widowmaker), Hero(Ana), Hero(Brigitte), Hero(Zenyatta)));
- }
- }
- rule("Forever")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
- Global.Forever = Workshop Setting Toggle(Custom String("Settings"), Custom String("Never Ending Mode"), False);
- }
- }
- rule("Scoreboard")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- All;
- }
- conditions
- {
- Global.RevengeIntro == False;
- Is Game In Progress == True;
- }
- actions
- {
- Create HUD Text(All Players(Team 1), Null, Null, Custom String("{0} | {1} | {2}%", Event Player, Event Player.Scoreboard,
- Ultimate Charge Percent(Event Player)), Left, 2, White, White, White, Visible To and String, Default Visibility);
- }
- }
- rule("Shorter Assemble Heroes")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Assembling Heroes == True;
- }
- actions
- {
- Wait(0.160, Ignore Condition);
- Set Match Time(8);
- Loop If(Number of Living Players(Team 1) < Number of Players(Team 1));
- }
- }
- rule("Invincible")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- All;
- }
- conditions
- {
- Has Status(Event Player, Invincible) == False;
- }
- actions
- {
- If(Workshop Setting Toggle(Custom String("Settings"), Custom String("Invincible Mode"), False) == True);
- Set Status(Event Player, Null, Invincible, 9999);
- Else;
- Clear Status(Event Player, Invincible);
- }
- }
- rule("Create The Maestro")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Createmaestro == True;
- Global.NormalWaves == False;
- }
- actions
- {
- Wait(Global.TheMaeDiff, Ignore Condition);
- Create Dummy Bot(Hero(Sigma), Team 2, -1, Vector(83.198, 14.183, -87.143), Vector(Empty Array, Empty Array, Empty Array));
- Loop;
- }
- }
- rule("Spawn and Ult")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Sigma;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Has Spawned(Event Player) == True;
- Is Alive(Event Player) == True;
- Ultimate Charge Percent(Event Player) == 100;
- }
- actions
- {
- Press Button(Event Player, Ultimate);
- Start Holding Button(Event Player, Jump);
- Wait(0.500, Ignore Condition);
- Stop Holding Button(Event Player, Jump);
- Wait(0.500, Ignore Condition);
- Press Button(Event Player, Primary Fire);
- Wait(0.500, Ignore Condition);
- Event Player.Finishedpath = True;
- }
- }
- rule("Health")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Sigma;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Has Spawned(Event Player) == True;
- Is Alive(Event Player) == True;
- }
- actions
- {
- Set Max Health(Event Player, 1125);
- Wait(0.250, Ignore Condition);
- Heal(Event Player, Null, Max Health(Event Player));
- }
- }
- rule("Shooting")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Sigma;
- }
- conditions
- {
- 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
- {
- Start Holding Button(Event Player, Primary Fire);
- }
- }
- rule("Shooting")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Sigma;
- }
- conditions
- {
- 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;
- Is Dummy Bot(Event Player) == True;
- Event Player.Finishedpath == True;
- }
- actions
- {
- Stop Holding Button(Event Player, Primary Fire);
- }
- }
- rule("Sigma Black Hole")
- {
- event
- {
- Player Took Damage;
- Team 2;
- Sigma;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Press Button(Event Player, Ability 1);
- }
- }
- rule("Sigma Shield")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Sigma;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is In Line of Sight(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
- Distance Between(Event Player, Current Array Element))), Barriers Do Not Block LOS) == True;
- }
- actions
- {
- Wait(5, Ignore Condition);
- Press Button(Event Player, Secondary Fire);
- Start Holding Button(Event Player, Secondary Fire);
- Wait(0.300, Ignore Condition);
- Stop Holding Button(Event Player, Secondary Fire);
- Loop If(Is In Line of Sight(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
- Distance Between(Event Player, Current Array Element))), Barriers Do Not Block LOS) == True);
- }
- }
- rule("Rock")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Sigma;
- }
- conditions
- {
- 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;
- Ability Cooldown(Event Player, Button(Ability 2)) == 0;
- }
- actions
- {
- Press Button(Event Player, Ability 2);
- Wait(0.500, Ignore Condition);
- Loop If(Ability Cooldown(Event Player, Button(Ability 2)) == 0);
- }
- }
- rule("Numberofzens")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
- Global.NumberofZens = Workshop Setting Integer(Custom String("Settings"), Custom String("Max Number of Zomnics"), 4, 0, 10);
- }
- }
- rule("Numberofzaryas")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
- Global.NumberofZombardiers = Workshop Setting Integer(Custom String("Settings"), Custom String("Max Number of Zombardiers"), 2, 0,
- 10);
- }
- }
- rule("Setting - Add AI")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
- Global.AddAI = Workshop Setting Toggle(Custom String("Settings"), Custom String("Add AI"), False);
- }
- }
- rule("Create Dummy Bot")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.AddAI == True;
- Number of Players(Team 1) < 4;
- Is Game In Progress == True;
- }
- actions
- {
- Skip If(Global.Allheroes == True, 1);
- Create Dummy Bot(Randomized Array(Array(Hero(Ana), Hero(Genji), Hero(Hanzo), Hero(McCree), Hero(Soldier: 76), Hero(Torbjörn), Hero(
- Tracer), Hero(Widowmaker), Hero(Brigitte), Hero(Zenyatta))), Team 1, -1, Vector(0, 0, 0), Vector(0, 0, 0));
- Skip If(Global.Allheroes == False, 1);
- Create Dummy Bot(Random Value In Array(All Heroes), Team 1, -1, Vector(0, 0, 0), Vector(0, 0, 0));
- Wait(0.250, Ignore Condition);
- Loop If(Number of Players(Team 1) < 4);
- }
- }
- rule("Pathfind to Enemy")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- All;
- }
- 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;
- Is Alive(Event Player) == True;
- Number of Living Players(Team 2) > 0;
- Hero Of(Event Player) != Hero(Mercy);
- }
- actions
- {
- Event Player._extendedPlayerCollection[0] = 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 = Empty Array;
- Event Player.Dijkstra_Final_Path_Attributes = Empty Array;
- Event Player.Dijkstra_Current = Index Of Array Value(Global.Nodes[Global.map], First Of(Sorted Array(Global.Nodes[Global.map],
- Distance Between(First Of(Event Player._extendedPlayerCollection), Current Array Element))));
- Event Player.Dijkstra_Distances[Event Player.Dijkstra_Current] = 0.000;
- Event Player.Dijkstra_Unvisited = Mapped Array(Global.Nodes[Global.map], Current Array Index);
- While(Is True For Any(Event Player.Dijkstra_Unvisited, Event Player.Dijkstra_Distances[Current Array Element] != 0));
- Wait(0.016, Ignore Condition);
- Event Player.Dijkstra_Connected_Segments = Filtered Array(Global.Segments[Global.map], Array Contains(Append To Array(
- Append To Array(Empty Array, X Component Of(Current Array Element)), Y Component Of(Current Array Element)),
- Event Player.Dijkstra_Current));
- Event Player._extendedPlayerCollection[1] = 0;
- While(Event Player._extendedPlayerCollection[1] < Count Of(Event Player.Dijkstra_Connected_Segments));
- Wait(0.016, Ignore Condition);
- Event Player.Dijkstra_Neighbor_Index = First Of(Filtered Array(Append To Array(Append To Array(Empty Array, X Component Of(
- Event Player.Dijkstra_Connected_Segments[Event Player._extendedPlayerCollection[1]])), Y Component Of(
- Event Player.Dijkstra_Connected_Segments[Event Player._extendedPlayerCollection[1]])),
- Current Array Element != Event Player.Dijkstra_Current));
- Event Player.Dijkstra_Distance = Distance Between(Global.Nodes[Global.map][Event Player.Dijkstra_Neighbor_Index],
- Global.Nodes[Global.map][Event Player.Dijkstra_Current]) + Event Player.Dijkstra_Distances[Event Player.Dijkstra_Current];
- Event Player.Dijkstra_Neighbor_Attributes = Filtered Array(Global.Attributes[Global.map], Y Component Of(Current Array Element)
- == Event Player.Dijkstra_Current && X Component Of(Current Array Element) == Event Player.Dijkstra_Neighbor_Index);
- If((
- Event Player.Dijkstra_Distances[Event Player.Dijkstra_Neighbor_Index] == 0 || Event Player.Dijkstra_Distance < Event Player.Dijkstra_Distances[Event Player.Dijkstra_Neighbor_Index])
- && (!Count Of(Event Player.Dijkstra_Neighbor_Attributes) || Is True For Any(Event Player.Dijkstra_Neighbor_Attributes,
- Array Contains(Null, Z Component Of(Current Array Element)))));
- Event Player.Dijkstra_Distances[Event Player.Dijkstra_Neighbor_Index] = Event Player.Dijkstra_Distance;
- Event Player.Dijkstra_Parent_Array[Event Player.Dijkstra_Neighbor_Index] = Event Player.Dijkstra_Current + 1;
- End;
- Event Player._extendedPlayerCollection[1] += 1;
- End;
- Modify Player Variable(Event Player, Dijkstra_Unvisited, Remove From Array By Value, Event Player.Dijkstra_Current);
- Skip If(Index Of Array Value(Global.Nodes[Global.map], First Of(Sorted Array(Global.Nodes[Global.map], Distance Between(
- Position Of(Event Player), Current Array Element)))) == Event Player.Dijkstra_Current, 2);
- Event Player.Dijkstra_Current = First Of(Sorted Array(Filtered Array(Event Player.Dijkstra_Unvisited,
- Event Player.Dijkstra_Distances[Current Array Element] != 0), Event Player.Dijkstra_Distances[Current Array Element]));
- End;
- Event Player.pathmapReference = Global.map;
- Event Player.parentArray = Event Player.Dijkstra_Parent_Array;
- Event Player.destination = First Of(Event Player._extendedPlayerCollection);
- Event Player.pathfinderDoGetCurrent = True;
- Event Player.Dijkstra_Current = 0;
- Event Player.Dijkstra_Distances = 0;
- Event Player.Dijkstra_Connected_Segments = 0;
- Event Player.Dijkstra_Neighbor_Index = 0;
- Event Player.Dijkstra_Distance = 0;
- Event Player.Dijkstra_Parent_Array = 0;
- 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)))) > 3);
- }
- }
- rule("Stop Pathfind to Enemy")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- All;
- }
- 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;
- Is Alive(Event Player) == True;
- Hero Of(Event Player) != Hero(Mercy);
- }
- actions
- {
- Stop Throttle In Direction(Event Player);
- Event Player.parentArray = Null;
- }
- }
- rule("Stop Pathfind to Enemy")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Number of Living Players(Team 2) == 0;
- Is Alive(Event Player) == True;
- Hero Of(Event Player) != Hero(Mercy);
- }
- actions
- {
- Stop Throttle In Direction(Event Player);
- Event Player.parentArray = Null;
- }
- }
- rule("Facing")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- All;
- }
- 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("Shooting")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- 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(Hanzo);
- Hero Of(Event Player) != Hero(Widowmaker);
- Hero Of(Event Player) != Hero(Ashe);
- Hero Of(Event Player) != Hero(Moira);
- Hero Of(Event Player) != Hero(Mercy);
- }
- actions
- {
- Start Holding Button(Event Player, Primary Fire);
- }
- }
- rule("Shooting")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- 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)
- == False;
- Hero Of(Event Player) != Hero(Mercy);
- }
- actions
- {
- Stop Holding Button(Event Player, Primary Fire);
- Stop Holding Button(Event Player, Secondary Fire);
- }
- }
- rule("Hanzo Shooting")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Hanzo;
- }
- 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, Primary Fire);
- Wait(0.900, Ignore Condition);
- Stop Holding Button(Event Player, Primary Fire);
- Loop If(Is In Line of Sight(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
- Distance Between(Event Player, Current Array Element))), Barriers Do Not Block LOS) == True);
- }
- }
- rule("Mercy Heal")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Mercy;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Alive(Event Player) == True;
- Has Spawned(Event Player) == True;
- }
- actions
- {
- Start Facing(Event Player, Direction Towards(Event Player, Closest Player To(Event Player, Team Of(Event Player))), 200, To World,
- Direction and Turn Rate);
- }
- }
- rule("Mercy Heal")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Mercy;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Distance Between(Event Player, First Of(Sorted Array(All Living Players(Team 1), Distance Between(Event Player,
- Current Array Element)))) > 3;
- Is Alive(Event Player) == True;
- }
- actions
- {
- Start Throttle In Direction(Event Player, Direction Towards(Event Player, First Of(Sorted Array(All Living Players(Team 1),
- Distance Between(Event Player, Current Array Element)))), 1, To World, Replace existing throttle, Direction and Magnitude);
- }
- }
- rule("Mercy Heal")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Mercy;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Distance Between(Event Player, First Of(Sorted Array(All Living Players(Team 1), Distance Between(Event Player,
- Current Array Element)))) <= 3;
- Is Alive(Event Player) == True;
- }
- actions
- {
- Stop Throttle In Direction(Event Player);
- }
- }
- rule("Mercy Heal")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- 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("Ability 1")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- All;
- }
- 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;
- Hero Of(Event Player) != Hero(Bastion);
- Hero Of(Event Player) != Hero(Wrecking Ball);
- Hero Of(Event Player) != Hero(Reaper);
- }
- actions
- {
- Press Button(Event Player, Ability 1);
- }
- }
- rule("Ability 2")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Ability Cooldown(Event Player, Button(Ability 2)) == 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 1(Event Player) == False;
- }
- actions
- {
- Press Button(Event Player, Ability 2);
- }
- }
- rule("Bastion Setup")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Bastion;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Alive(Event Player) == True;
- Distance Between(Event Player, Vector(87.953, 14.497, -67.948)) < 5;
- }
- actions
- {
- Press Button(Event Player, Ability 1);
- }
- }
- rule("Brigitte Shield")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Brigitte;
- }
- 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;
- Distance Between(Event Player, Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) > 5;
- }
- actions
- {
- Start Holding Button(Event Player, Secondary Fire);
- }
- }
- rule("Brigitte Shield")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Brigitte;
- }
- 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;
- Distance Between(Event Player, Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) <= 3;
- }
- actions
- {
- Stop Holding Button(Event Player, Secondary Fire);
- Start Holding Button(Event Player, Primary Fire);
- }
- }
- rule("Brigitte Shield")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Brigitte;
- }
- 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;
- Distance Between(Event Player, Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) <= 4;
- Is Firing Secondary(Event Player) == True;
- }
- actions
- {
- Press Button(Event Player, Primary Fire);
- }
- }
- rule("Mccree Ult")
- {
- event
- {
- Ongoing - Each Player;
- All;
- McCree;
- }
- conditions
- {
- Is Using Ultimate(Event Player) == True;
- 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
- {
- Wait(4, Abort When False);
- Press Button(Event Player, Primary Fire);
- }
- }
- rule("Zen Ult")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Zenyatta;
- }
- conditions
- {
- Ultimate Charge Percent(Event Player) == 100;
- 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
- {
- Press Button(Event Player, Ultimate);
- }
- }
- rule("Bap Reload")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Baptiste;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Ammo(Event Player, 0) < 1;
- }
- actions
- {
- Press Button(Event Player, Reload);
- }
- }
- rule("Widow Fire")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Widowmaker;
- }
- 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;
- Distance Between(Event Player, Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) < 10;
- }
- actions
- {
- Stop Holding Button(Event Player, Secondary Fire);
- Wait(0.250, Ignore Condition);
- Start Holding Button(Event Player, Primary Fire);
- }
- }
- rule("Widow Fire")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Widowmaker;
- }
- 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;
- Distance Between(Event Player, Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) >= 10;
- }
- actions
- {
- Stop Holding Button(Event Player, Primary Fire);
- Start Holding Button(Event Player, Secondary Fire);
- }
- }
- rule("Widow Fire")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Widowmaker;
- }
- conditions
- {
- Is Firing Secondary(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;
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Wait(0.900, Ignore Condition);
- Press Button(Event Player, Primary Fire);
- Loop If(Distance Between(Event Player, Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) >= 10);
- }
- }
- rule("Ashe Fire")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Ashe;
- }
- 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
- {
- Press Button(Event Player, Primary Fire);
- Wait(0.250, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("Ashe Scope")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Ashe;
- }
- 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;
- Distance Between(Event Player, Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) < 10;
- }
- actions
- {
- Stop Holding Button(Event Player, Secondary Fire);
- }
- }
- rule("Ashe Scope")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Ashe;
- }
- 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;
- Distance Between(Event Player, Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) >= 10;
- }
- actions
- {
- Start Holding Button(Event Player, Secondary Fire);
- }
- }
- rule("Rein Shield")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Reinhardt;
- }
- 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;
- Distance Between(Event Player, Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) > 5;
- }
- actions
- {
- Start Holding Button(Event Player, Secondary Fire);
- }
- }
- rule("Rein Shield")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Reinhardt;
- }
- 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;
- Distance Between(Event Player, Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) <= 5;
- }
- actions
- {
- Stop Holding Button(Event Player, Secondary Fire);
- }
- }
- rule("Ability 1 - Reaper")
- {
- event
- {
- Player Took Damage;
- Team 1;
- 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;
- Is Using Ability 2(Event Player) == False;
- }
- actions
- {
- Press Button(Event Player, Ability 1);
- }
- }
- rule("Hold Interact")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Alive(Event Player) == True;
- }
- actions
- {
- Start Holding Button(Event Player, Interact);
- }
- }
- rule("Doom Punch")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Doomfist;
- }
- 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;
- Ability Cooldown(Event Player, Button(Secondary Fire)) == 0;
- }
- actions
- {
- Start Holding Button(Event Player, Secondary Fire);
- Wait(2, Ignore Condition);
- Stop Holding Button(Event Player, Secondary Fire);
- }
- }
- rule("Reaper Teleport Shoot")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Reaper;
- }
- 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;
- Is Using Ability 2(Event Player) == False;
- }
- actions
- {
- Start Holding Button(Event Player, Primary Fire);
- }
- }
- rule("Mei Icycle")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Mei;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Has Status(Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player))), Frozen) == True;
- }
- actions
- {
- Start Holding Button(Event Player, Secondary Fire);
- }
- }
- rule("Mei Icycle")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Mei;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Has Status(Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player))), Frozen) == False;
- }
- actions
- {
- Stop Holding Button(Event Player, Secondary Fire);
- }
- }
- rule("Sigma Ult")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Sigma;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Has Spawned(Event Player) == True;
- Is Alive(Event Player) == True;
- Is Using Ultimate(Event Player) == True;
- }
- actions
- {
- Start Holding Button(Event Player, Jump);
- Wait(0.500, Ignore Condition);
- Stop Holding Button(Event Player, Jump);
- Wait(0.500, Ignore Condition);
- Press Button(Event Player, Primary Fire);
- }
- }
- rule("Shooting - Moira")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Moira;
- }
- 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;
- Is In Line of Sight(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Team Of(Event Player)), Health(
- Current Array Element) <= Max Health(Current Array Element) / 2), Distance Between(Event Player, Current Array Element))),
- Barriers Do Not Block LOS) == False;
- }
- actions
- {
- Start Holding Button(Event Player, Secondary Fire);
- }
- }
- rule("Reaper Teleport")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Reaper;
- }
- conditions
- {
- Is Using Ability 2(Event Player) == True;
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Wait(2, Ignore Condition);
- Press Button(Event Player, Primary Fire);
- }
- }
- rule("Shoot after teleport")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Reaper;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Using Ability 2(Event Player) == False;
- 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, Primary Fire);
- }
- }
- rule("ULT - junk")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Junkrat;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Ultimate Charge Percent(Event Player) == 100;
- 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
- {
- Press Button(Event Player, Ultimate);
- }
- }
- rule("ULT - Zarya")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Zarya;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Ultimate Charge Percent(Event Player) == 100;
- 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;
- }
- actions
- {
- Press Button(Event Player, Ultimate);
- }
- }
- rule("ULT - Zenyatta")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Zenyatta;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Ultimate Charge Percent(Event Player) == 100;
- 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;
- }
- actions
- {
- Press Button(Event Player, Ultimate);
- }
- }
- rule("Zarya Right Click")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Zarya;
- }
- 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;
- }
- actions
- {
- Start Holding Button(Event Player, Secondary Fire);
- }
- }
- rule("Zarya Right Click")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Zarya;
- }
- 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;
- }
- actions
- {
- Stop Holding Button(Event Player, Secondary Fire);
- }
- }
- rule("Jump/Fly")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is In Air(Event Player) == True;
- }
- actions
- {
- Wait(0.250, Abort When False);
- Start Holding Button(Event Player, Jump);
- }
- }
- rule("Jump/Fly")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is In Air(Event Player) == False;
- }
- actions
- {
- Wait(0.250, Abort When False);
- Stop Holding Button(Event Player, Jump);
- }
- }
- disabled rule("Stop if not alive")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Is Alive(Global._extendedGlobalCollection[0]) == False;
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Stop Throttle In Direction(Event Player);
- Event Player.parentArray = Null;
- }
- }
- rule("Junkrat go away")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Junkrat;
- }
- conditions
- {
- Global.RevengeIntro == True;
- Is Dummy Bot(Event Player) == True;
- Is Alive(Event Player) == True;
- }
- actions
- {
- Wait(2, Ignore Condition);
- Start Throttle In Direction(Event Player, Direction Towards(Event Player, Vector(58.864, 20.272, -99.861)), 1, To World,
- Replace existing throttle, Direction and Magnitude);
- Start Facing(Event Player, Direction Towards(Event Player, Vector(58.864, 20.272, -99.861)), 200, To World,
- Direction and Turn Rate);
- }
- }
- rule("Junkrat go away")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Junkrat;
- }
- conditions
- {
- Global.RevengeIntro == True;
- Is Dummy Bot(Event Player) == True;
- Is Alive(Event Player) == True;
- Distance Between(Event Player, Vector(58.864, 20.274, -99.862)) <= 2;
- }
- actions
- {
- Destroy Dummy Bot(Team Of(Event Player), Slot Of(Event Player));
- }
- }
- rule("Get rid of zens")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Zenyatta;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Global.Cutsceneended == True;
- Is Game In Progress == True;
- }
- actions
- {
- Destroy Dummy Bot(Team Of(Event Player), Slot Of(Event Player));
- }
- }
- rule("Clear HUD")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- }
- actions
- {
- Destroy All HUD Text;
- }
- }
- rule("Score - Reaper")
- {
- event
- {
- Player Dealt Final Blow;
- Team 1;
- All;
- }
- conditions
- {
- Is Game In Progress == True;
- Hero Of(Victim) == Hero(Reaper);
- }
- actions
- {
- Global.Score += 400;
- Attacker.Scoreboard += 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.Score += 800;
- Attacker.Scoreboard += 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.Score += 20;
- Attacker.Scoreboard += 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.Score += 20;
- Attacker.Scoreboard += 20;
- }
- }
- rule("Score - Enemies Killed")
- {
- event
- {
- Player Dealt Final Blow;
- Team 1;
- All;
- }
- conditions
- {
- Is Game In Progress == True;
- }
- actions
- {
- Attacker.Survivalbonuskills += 1;
- }
- }
- rule("Score - Enemies Killed")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- All;
- }
- conditions
- {
- Event Player.Survivalbonuskills == 25;
- }
- actions
- {
- Event Player.Scoreboard += 25;
- Global.Score += 25;
- Global.CurrentBonusKills = 25;
- Big Message(All Players(Team 1), Custom String("Survival Bonus +25XP"));
- }
- }
- rule("Score - Enemies Killed")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- All;
- }
- conditions
- {
- Event Player.Survivalbonuskills == Global.CurrentBonusKills + 25;
- Global.CurrentBonusKills <= 1200;
- }
- actions
- {
- Event Player.Scoreboard += Event Player.Survivalbonuskills;
- Global.Score += Event Player.Survivalbonuskills;
- Global.CurrentBonusKills = Event Player.Survivalbonuskills;
- 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
- {
- All Players(Team 1).Survivalbonuskills = 0;
- Global.CurrentBonusKills = 0;
- }
- }
- rule("Bastion Setup")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Bastion;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Alive(Event Player) == True;
- Distance Between(Event Player, Vector(61.213, 19.671, -91.980)) < 2;
- }
- actions
- {
- Press Button(Event Player, Ability 1);
- }
- }
- rule("Bastion Heal")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Bastion;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Health(Event Player) < Max Health(Event Player);
- }
- actions
- {
- Start Holding Button(Event Player, Secondary Fire);
- }
- }
- rule("Bastion Heal")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- Bastion;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Health(Event Player) == Max Health(Event Player);
- }
- actions
- {
- Stop Holding Button(Event Player, Secondary Fire);
- }
- }
- rule("Wave Mode")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
- Global.NormalWaves = Workshop Setting Toggle(Custom String("Settings"), Custom String("Normal Waves"), True);
- }
- }
- rule("The Reaper")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.NormalWaves == True;
- Is Game In Progress == True;
- Global.mins == 5;
- Global.sec == 42;
- }
- actions
- {
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Junkenstein's Monster")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.NormalWaves == True;
- Is Game In Progress == True;
- Global.mins == 3;
- Global.sec == 45;
- }
- actions
- {
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("The Summoner")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.NormalWaves == True;
- Is Game In Progress == True;
- Global.mins == 2;
- Global.sec == 45;
- }
- actions
- {
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Dr. Junkenstein")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.NormalWaves == True;
- Is Game In Progress == True;
- Global.mins == 1;
- Global.sec == 45;
- }
- actions
- {
- Create Dummy Bot(Hero(Junkrat), Team 2, -1, Vector(56.648, 24.364, -104.668), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("The Reaper 2")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.NormalWaves == True;
- Is Game In Progress == True;
- Global.mins == 1;
- Global.sec == 34;
- }
- actions
- {
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("The Reaper 3")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.NormalWaves == True;
- Is Game In Progress == True;
- Global.mins == 0;
- Global.sec == 33;
- }
- actions
- {
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("End Game")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.NormalWaves == True;
- Is Game In Progress == True;
- Match Time <= 0;
- }
- actions
- {
- Global.HUDtext = Custom String("DEFEAT THE BOSSES");
- Global.EndGame = True;
- Big Message(All Players(All Teams), Custom String("FINAL BATTLE!"));
- Pause Match Time;
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- Create Dummy Bot(Hero(Mercy), Team 2, -1, Vector(83.339, 14.454, -94.776), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Win")
- {
- event
- {
- Player Dealt Final Blow;
- Team 1;
- All;
- }
- conditions
- {
- Global.NormalWaves == True;
- Is Game In Progress == True;
- Match Time <= 0;
- Count Of(Filtered Array(All Living Players(Team 2), Hero Of(Current Array Element) == Hero(Roadhog))) == 0;
- Count Of(Filtered Array(All Living Players(Team 2), Hero Of(Current Array Element) == Hero(Mercy))) == 0;
- Count Of(Filtered Array(All Living Players(Team 2), Hero Of(Current Array Element) == Hero(Reaper))) == 0;
- Count Of(Filtered Array(All Living Players(Team 2), Hero Of(Current Array Element) == Hero(Symmetra))) == 0;
- Count Of(Filtered Array(All Living Players(Team 2), Hero Of(Current Array Element) == Hero(Junkrat))) == 0;
- }
- actions
- {
- Destroy All HUD Text;
- Set Slow Motion(35);
- Start Camera(All Players(Team 1), Position Of(Victim) + Up + Up + Up, Position Of(Victim), 0);
- Wait(2, Ignore Condition);
- Declare Team Victory(Team 1);
- }
- }
- disabled rule("set time")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Is Button Held(Event Player, Interact) == True;
- }
- actions
- {
- Set Match Time(30);
- }
- }
- rule("Bots die")
- {
- event
- {
- Player Died;
- Team 2;
- All;
- }
- conditions
- {
- Global.NormalWaves == True;
- Is Game In Progress == True;
- Is Dummy Bot(Event Player) == True;
- Hero Of(Event Player) != Hero(Reaper);
- Hero Of(Event Player) != Hero(Symmetra);
- Hero Of(Event Player) != Hero(Roadhog);
- Hero Of(Event Player) != Hero(Junkrat);
- Hero Of(Event Player) != Hero(Mercy);
- }
- actions
- {
- Destroy Dummy Bot(Team Of(Event Player), Slot Of(Event Player));
- }
- }
- rule("Bots die")
- {
- event
- {
- Player Died;
- Team 2;
- All;
- }
- conditions
- {
- Global.NormalWaves == True;
- Is Game In Progress == True;
- Is Dummy Bot(Event Player) == True;
- Hero Of(Event Player) != Hero(Zarya);
- Hero Of(Event Player) != Hero(Zenyatta);
- }
- actions
- {
- Wait(5, Ignore Condition);
- Destroy Dummy Bot(Team Of(Event Player), Slot Of(Event Player));
- }
- }
- rule("Junkenstein Endless")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
- Global.Endless = Workshop Setting Toggle(Custom String("Settings"), Custom String("Junkenstein Endless"), False);
- }
- }
- rule("WaveInt")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- }
- actions
- {
- Global.Waveint = 1;
- Global.MaxWave = 12;
- Global.mins = 0;
- Global.sec = 59;
- Global.BonusWave = False;
- Global.WaveType = Custom String("Wave");
- }
- }
- rule("WaveHUD")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- }
- actions
- {
- Create HUD Text(All Players(Team 1), Null, Custom String("{0} {1}/{2}", Global.WaveType, Global.Waveint, Global.MaxWave), Null,
- Top, 0, White, White, White, Visible To and String, Default Visibility);
- }
- }
- rule("ChangeWave")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.sec == 0;
- Is Game In Progress == True;
- Global.Endless == True;
- }
- actions
- {
- Global.sec = 59;
- Global.mins = 0;
- Skip If(Global.Waveint == Global.MaxWave, 1);
- Global.Waveint += 1;
- }
- }
- rule("ChangeToBonusWaves")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- (Global.mins && Global.sec) == 0;
- Global.Waveint == 12;
- Global.BonusWave == False;
- }
- actions
- {
- Wait(59, Ignore Condition);
- Global.BonusWave = True;
- Global.WaveType = Custom String("Bonus Wave");
- Global.Waveint = 1;
- Global.MaxWave = 15;
- Global.mins = 1;
- Global.sec = 0;
- }
- }
- rule("Wave 1 - The Reaper")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 18;
- Global.Waveint == 1;
- Global.BonusWave == False;
- }
- actions
- {
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Wave 3 - Junkenstein's Monster")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 42;
- Global.Waveint == 3;
- Global.BonusWave == False;
- }
- actions
- {
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Wave 4 - Dr. Junkenstein")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 47;
- Global.Waveint == 4;
- Global.BonusWave == False;
- }
- actions
- {
- Create Dummy Bot(Hero(Junkrat), Team 2, -1, Vector(56.648, 24.364, -104.668), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Wave 5 - The Reaper (2x)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 47;
- Global.Waveint == 5;
- Global.BonusWave == False;
- }
- actions
- {
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Wave 6 - The Summoner")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 50;
- Global.Waveint == 6;
- Global.BonusWave == False;
- }
- actions
- {
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Wave 7 - Junkenstein's Monster (2x)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 50;
- Global.Waveint == 7;
- Global.BonusWave == False;
- }
- actions
- {
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Wave 8 - The Witch")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 48;
- Global.Waveint == 8;
- Global.BonusWave == False;
- }
- actions
- {
- Create Dummy Bot(Hero(Mercy), Team 2, -1, Vector(83.339, 14.454, -94.776), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Wave 9 - The Reaper (3x)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 47;
- Global.Waveint == 9;
- Global.BonusWave == False;
- }
- actions
- {
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Wave 10 - The Summoner (2x)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 50;
- Global.Waveint == 10;
- Global.BonusWave == False;
- }
- actions
- {
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Wave 11 - Junkenstein's Monster (2x)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 50;
- Global.Waveint == 11;
- Global.BonusWave == False;
- }
- actions
- {
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Wave 12 - The Witch")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 48;
- Global.Waveint == 12;
- Global.BonusWave == False;
- }
- actions
- {
- Create Dummy Bot(Hero(Mercy), Team 2, -1, Vector(83.339, 14.454, -94.776), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Bonus Wave 1 - The Reaper (3x)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 48;
- Global.Waveint == 1;
- Global.BonusWave == True;
- }
- actions
- {
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Bonus Wave 2 - The Summoner (2x)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 48;
- Global.Waveint == 2;
- Global.BonusWave == True;
- }
- actions
- {
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Bonus Wave 3 - Junkenstein's Monster (x3)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 48;
- Global.Waveint == 3;
- Global.BonusWave == True;
- }
- actions
- {
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Bonus Wave 4 - The Witch (x2)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 48;
- Global.Waveint == 4;
- Global.BonusWave == True;
- }
- actions
- {
- Create Dummy Bot(Hero(Mercy), Team 2, -1, Vector(83.339, 14.454, -94.776), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Mercy), Team 2, -1, Vector(83.339, 14.454, -94.776), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Bonus Wave 5 - The Reaper (x4)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 48;
- Global.Waveint == 5;
- Global.BonusWave == True;
- }
- actions
- {
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Bonus Wave 6 - The Summoner (x4)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 48;
- Global.Waveint == 6;
- Global.BonusWave == True;
- }
- actions
- {
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Bonus Wave 7 - Junkenstein's Monster (x3)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 48;
- Global.Waveint == 7;
- Global.BonusWave == True;
- }
- actions
- {
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Bonus Wave 8 - The Witch (x2)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 48;
- Global.Waveint == 8;
- Global.BonusWave == True;
- }
- actions
- {
- Create Dummy Bot(Hero(Mercy), Team 2, -1, Vector(83.339, 14.454, -94.776), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Mercy), Team 2, -1, Vector(83.339, 14.454, -94.776), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Bonus Wave 9 - The Reaper (x4)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 48;
- Global.Waveint == 9;
- Global.BonusWave == True;
- }
- actions
- {
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Bonus Wave 10 - The Summoner (x4)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 48;
- Global.Waveint == 10;
- Global.BonusWave == True;
- }
- actions
- {
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Bonus Wave 11 - Junkenstein's Monster (x4)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 48;
- Global.Waveint == 11;
- Global.BonusWave == True;
- }
- actions
- {
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Bonus Wave 12 - The Witch (x2), Junkenstein's Monster (2x), Dr. Junkenstein (2x)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 48;
- Global.Waveint == 12;
- Global.BonusWave == True;
- }
- actions
- {
- Create Dummy Bot(Hero(Mercy), Team 2, -1, Vector(83.339, 14.454, -94.776), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Mercy), Team 2, -1, Vector(83.339, 14.454, -94.776), Vector(Empty Array, Empty Array, Empty Array));
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- Create Dummy Bot(Hero(Junkrat), Team 2, -1, Vector(56.648, 24.364, -104.668), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Bonus Wave 13 - The Reaper (x4)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 48;
- Global.Waveint == 13;
- Global.BonusWave == True;
- }
- actions
- {
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(62.376, 20.399, -92.766), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Bonus Wave 14 - The Summoner (x4)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 48;
- Global.Waveint == 14;
- Global.BonusWave == True;
- }
- actions
- {
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Bonus Wave 15 - Junkenstein's Monster (x4)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
- Global.sec == 48;
- Global.Waveint == 15;
- Global.BonusWave == True;
- Match Time > 0;
- }
- actions
- {
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Bonus Wave 15 - Final Battle - The Witch (x2), Junkenstein's Monster (2x), Dr. Junkenstein (2x), The Summoner (2x)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.Endless == True;
Global.sec == 0;
- Global.Waveint == 15;
- Global.BonusWave == True;
- Match Time <= 0;
- }
- actions
- {
- Global.HUDtext = Custom String("DEFEAT THE BOSSES");
- Big Message(All Players(Team 1), Custom String("FINAL BATTLE!"));
- Pause Match Time;
- Create Dummy Bot(Hero(Mercy), Team 2, -1, Vector(83.339, 14.454, -94.776), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Mercy), Team 2, -1, Vector(83.339, 14.454, -94.776), Vector(Empty Array, Empty Array, Empty Array));
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(80.076, 14.239, -98.538), Vector(Empty Array, Empty Array, Empty Array));
- Create Dummy Bot(Hero(Junkrat), Team 2, -1, Vector(56.648, 24.364, -104.668), Vector(Empty Array, Empty Array, Empty Array));
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- Wait(5, Ignore Condition);
- Create Dummy Bot(Hero(Symmetra), Team 2, -1, First Of(Global.UndeadSpawnPoints), Vector(Empty Array, Empty Array, Empty Array));
- }
- }
- rule("Win Endless")
- {
- event
- {
- Player Dealt Final Blow;
- Team 1;
- All;
- }
- conditions
- {
- Global.Endless == True;
- Is Game In Progress == True;
- Match Time <= 0;
- Count Of(Filtered Array(All Living Players(Team 2), Hero Of(Current Array Element) == Hero(Roadhog))) == 0;
- Count Of(Filtered Array(All Living Players(Team 2), Hero Of(Current Array Element) == Hero(Mercy))) == 0;
- Count Of(Filtered Array(All Living Players(Team 2), Hero Of(Current Array Element) == Hero(Reaper))) == 0;
- Count Of(Filtered Array(All Living Players(Team 2), Hero Of(Current Array Element) == Hero(Symmetra))) == 0;
- Count Of(Filtered Array(All Living Players(Team 2), Hero Of(Current Array Element) == Hero(Junkrat))) == 0;
- Global.BonusWave == True;
- Global.Waveint == 15;
- }
- actions
- {
- Destroy All HUD Text;
- Set Slow Motion(35);
- Start Camera(All Players(Team 1), Position Of(Victim) + Up + Up + Up, Position Of(Victim), 0);
- Wait(2, Ignore Condition);
- Declare Team Victory(Team 1);
- }
- }
- rule("Win Endless")
- {
- event
- {
Ongoing - Global;
- Player Died;
- All;
- All;
- }
- conditions
- {
- Global.Endless == True;
- Is Game In Progress == True;
- Global.BonusWave == True;
- Number of Living Players(Team 1) == 0;
- }
- actions
- {
- Destroy All HUD Text;
- Start Camera(All Players(Team 1), Position Of(Victim) + Up + Up + Up, Position Of(Victim), 0);
- Set Slow Motion(35);
- Disable Built-In Game Mode Respawning(All Players(Team 1));
- Wait(2, Ignore Condition);
- Declare Team Victory(Team 1);
- }
- }
- rule("Win Endless")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.Endless == True;
- Is Game In Progress == True;
- Global.BonusWave == True;
- Global.DoorHealth <= 0;
- }
- actions
- {
- Destroy All HUD Text;
- Big Message(All Players(All Teams), Custom String("DOOR DESTROYED"));
- Disable Built-In Game Mode Respawning(All Players(Team 1));
- Wait(4, Ignore Condition);
- Declare Team Victory(Team 1);
- }
- }
- rule("Lose Endless")
- {
- event
- {
Ongoing - Global;
- Player Died;
- Team 1;
- All;
- }
- conditions
- {
- Global.Endless == True;
- Is Game In Progress == True;
- Global.BonusWave == False;
- Number of Living Players(Team 1) == 0;
- }
- actions
- {
- Destroy All HUD Text;
- Start Camera(All Players(Team 1), Position Of(Victim) + Up + Up + Up, Position Of(Victim), 0);
- Set Slow Motion(35);
- Wait(2, Ignore Condition);
- Disable Built-In Game Mode Respawning(All Players(Team 1));
- Declare Team Victory(Team 2);
- }
- }
- rule("Lose Endless")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.Endless == True;
- Is Game In Progress == True;
- Global.BonusWave == False;
- Global.DoorHealth <= 0;
- }
- actions
- {
- Destroy All HUD Text;
- Big Message(All Players(All Teams), Custom String("DOOR DESTROYED"));
- Disable Built-In Game Mode Respawning(All Players(Team 1));
- Wait(4, Ignore Condition);
- Declare Team Victory(Team 2);
- }
- }
- rule("Disable Endless")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.NormalWaves == True;
- }
- actions
- {
- Global.Endless = False;
- }
- }
- rule("Bots die")
- {
- event
- {
- Player Died;
- Team 2;
- All;
- }
- conditions
- {
- Global.Endless == True;
- Is Game In Progress == True;
- Is Dummy Bot(Event Player) == True;
- Hero Of(Event Player) != Hero(Reaper);
- Hero Of(Event Player) != Hero(Symmetra);
- Hero Of(Event Player) != Hero(Roadhog);
- Hero Of(Event Player) != Hero(Junkrat);
- Hero Of(Event Player) != Hero(Mercy);
- }
- actions
- {
- Destroy Dummy Bot(Team Of(Event Player), Slot Of(Event Player));
- }
- }
- rule("Bots die")
- {
- event
- {
- Player Died;
- Team 2;
- All;
- }
- conditions
- {
- Global.Endless == True;
- Is Game In Progress == True;
- Is Dummy Bot(Event Player) == True;
- Hero Of(Event Player) != Hero(Zarya);
- Hero Of(Event Player) != Hero(Zenyatta);
- }
- actions
- {
- Wait(5, Ignore Condition);
- Destroy Dummy Bot(Team Of(Event Player), Slot Of(Event Player));
- }
- }
- rule("Door Dead cutscene")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.DoorHealth <= 0;
- }
- actions
- {
- Destroy All Dummy Bots;
- Destroy All HUD Text;
- Set Slow Motion(50);
- Set Status(All Players(Team 1), Null, Invincible, 9999);
- Set Invisible(All Players(Team 1), All);
- Create Dummy Bot(Hero(Zenyatta), Team 2, -1, Vector(87.616, 14.196, -69.726), Vector(0, 0, 0));
- Start Camera(All Players(Team 1), Vector(86.435, 14.358, -66.878), Vector(88.661, 14.463, -64.664), 0);
- Wait(2, Ignore Condition);
- Start Camera(All Players(Team 1), Vector(81.212, 14.187, -72.847), Vector(84.565, 14.131, -70.413), 1);
- Create Dummy Bot(Hero(Zenyatta), Team 2, -1, Vector(88.626, 14.167, -74.166), Vector(0, 0, 0));
- Create Dummy Bot(Hero(Zenyatta), Team 2, -1, Vector(86.304, 14.147, -73.481), Vector(0, 0, 0));
- Create Dummy Bot(Hero(Zenyatta), Team 2, -1, Vector(84.537, 14.151, -72.719), Vector(0, 0, 0));
- Wait(2, Ignore Condition);
- }
- }
- rule("Zenyatta go to door")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Zenyatta;
- }
- conditions
- {
- Is Game In Progress == True;
- Global.DoorHealth <= 0;
- }
- actions
- {
- Start Facing(Event Player, Direction Towards(Event Player, Vector(88.946, 14.053, -63.987)), 200, To World,
- Direction and Turn Rate);
- Start Throttle In Direction(Event Player, Facing Direction Of(Event Player), 1, To World, Replace existing throttle,
- Direction and Magnitude);
- }
- }