Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "Retribution PVE - made by Waitedboat4#2760 - v1.1: Revive Timer"
  • Description: "Retribution PVE - made by Waitedboat4#2760 - v2: Ending Revamp"
  • }
  • lobby
  • {
  • Max Team 1 Players: 4
  • Max Team 2 Players: 0
  • Swap Teams After Match: No
  • }
  • modes
  • {
  • Escort
  • {
  • Payload Speed Modifier: 10%
  • enabled maps
  • {
  • Rialto
  • }
  • }
  • General
  • {
  • Game Mode Start: Immediately
  • Spawn Health Packs: Disabled
  • }
  • }
  • heroes
  • {
  • Team 1
  • {
  • enabled heroes
  • {
  • Genji
  • McCree
  • Moira
  • Reaper
  • }
  • }
  • Team 2
  • {
  • Genji
  • {
  • Infinite Ultimate Duration: On
  • Spawn With Ultimate Ready: On
  • }
  • Reaper
  • {
  • Movement Speed: 60%
  • }
  • Widowmaker
  • {
  • Grappling Hook Cooldown Time: 0%
  • }
  • Wrecking Ball
  • {
  • Movement Speed: 50%
  • }
  • }
  • }
  • }
  • variables
  • {
  • global:
  • 0: _extendedGlobalCollection
  • 2: Nodes
  • 3: Segments
  • 4: Attributes
  • 5: map
  • 6: _classIndexes
  • 7: _tempNodes
  • 8: _tempSegments
  • 9: _tempAttributes
  • 10: StartingArea
  • 11: Objective
  • 12: BreachStarted
  • 13: Headtoextractionpoint
  • 14: AssemblingHeroes
  • 15: Normal
  • 16: Hard
  • 17: Expert
  • 18: Legendary
  • 19: Allheroes
  • 20: Score
  • 22: BreachRound
  • 23: SmokeBomb
  • 24: SniperIntro
  • 25: IntroOver1
  • 26: Sniper
  • 27: BoatRound
  • 28: MiddleAreaRound
  • 29: _arrayBuilder1
  • 30: AllPos
  • 31: AllDir
  • 32: firstpos
  • 33: secondpos
  • 34: firstpoint2
  • 35: secondpoint2
  • 36: Assassin
  • 37: z
  • 38: Wall_ID
  • 39: showwalls
  • 40: IntroOver2
  • 41: Heavy
  • 42: beam_ID
  • 43: g_beamType
  • 44: initialized
  • 45: sphereRadius
  • 46: x
  • 47: IntroOver3
  • 48: RandomSpawns
  • 49: NumberOfPlayersAtPoint
  • 50: Survive
  • 51: SetSpawns
  • 52: Extractround
  • 53: SpawnEnforcer
  • 54: Objectivetext
  • 55: NumberOfPlayersinPortal
  • 56: SurgicalStrike
  • 57: CloseQuarters
  • 58: BreachEffect
  • 59: NightSkyNo
  • player:
  • 0: _extendedPlayerCollection
  • 1: Invis
  • 2: p_LineofSight
  • 3: pathfinderDoGetCurrent
  • 4: pathfinderCurrent
  • 5: pathmapReference
  • 6: parentArray
  • 7: destination
  • 8: lastAttribute
  • 9: Dijkstra_Current
  • 10: Dijkstra_Distances
  • 11: Dijkstra_Unvisited
  • 12: Dijkstra_Parent_Array
  • 13: Dijkstra_Neighbor_Index
  • 14: Dijkstra_Distance
  • 15: Dijkstra_Neighbor_Attributes
  • 16: Dijkstra_Connected_Segments
  • 17: AsssasinPositions
  • 18: Assasindopositions
  • 19: Washeavyassault
  • 20: ReviveEffect
  • 21: ReviveText
  • 23: Charge
  • 24: PreviousHP
  • 25: Charging
  • 26: IsAttacking
  • 27: AlreadySpawned
  • 28: filterpos
  • 29: lastsavedpos
  • 30: closestbodypos
  • 31: fullbodypos
  • 32: prevpos_intersection
  • 33: active_wall
  • 34: closestwall
  • 35: is_Grounded
  • 36: x
  • 37: intersection_length
  • 38: thickness
  • 39: intersection_length_0
  • 40: thickness_0
  • 41: intersection_length_1
  • 42: intersection_length_2
  • 43: dir
  • 44: intersection_length_3
  • 45: CanBeRevived
  • 46: ReviveTimer
  • 47: ProgressBar
  • }
  • rule("Me")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Create HUD Text(All Players(Team 1), Null, Custom String("https://workshop.codes/retribution"), Null, Right, 0, Color(White),
  • Color(Green), Color(Green), Visible To and String, Default Visibility);
  • Create HUD Text(All Players(Team 1), Null, Null, Custom String("Created by Waitedboat4#2760"), Right, 0, Color(White), Color(
  • White), Color(Green), Visible To and String, Default Visibility);
  • }
  • }
  • rule("Disable Global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Disable Inspector Recording;
  • Disable Built-In Game Mode Announcer;
  • Disable Built-In Game Mode Scoring;
  • Disable Built-In Game Mode Completion;
  • }
  • }
  • rule("Disable Global - Game in Progress")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Start Forcing Spawn Room(Team 2, 2);
  • Pause Match Time;
  • }
  • }
  • rule("Disable Player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Disable Messages(Event Player);
  • Disable Game Mode HUD(Event Player);
  • Disable Game Mode In-World UI(Event Player);
  • Disable Built-In Game Mode Respawning(Event Player);
  • }
  • }
  • rule("NightSky")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.NightSkyNo < 70;
  • Workshop Setting Toggle(Custom String("Settings"), Custom String("Enable Night Sky"), True, 0) == True;
  • }
  • actions
  • {
  • Create Effect(All Players(All Teams), Sphere, Color(Black), Vector(0, 0, 0), 200, Visible To Position and Radius);
  • Global.NightSkyNo += 1;
  • Wait(0.250, Ignore Condition);
  • Loop If(Global.NightSkyNo < 70);
  • }
  • }
  • disabled rule("------------WALL SCRIPT-------")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Initial Global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global._arrayBuilder1 = Array(Null, Null, Null, Null);
  • Global.AllPos = Array(Vector(-10.003, -2.753, -75.819), Vector(-1.772, 1.225, -85.979), Vector(-1.919, 7.308, -48.251), Vector(
  • -1.902, 1.769, -42.556), Vector(84.914, 1.801, -49.992));
  • Global.AllDir = Array(Vector(0.050, 0, 0.999), Vector(1, 0, -0.019), Vector(-0.041, 0, -0.999), Vector(-0.999, 0, -0.032), Vector(
  • -1, 0, 0.020));
  • Global.firstpos = Array(Vector(-11.368, -1.367, -75.750), Vector(-1.747, 2.661, -84.628), Vector(-0.515, 8.745, -48.309), Vector(
  • -1.738, 4.067, -47.750), Vector(84.875, 3.919, -51.899));
  • Global.secondpos = Array(Vector(-8.638, -4.139, -75.887), Vector(-1.798, -0.210, -87.330), Vector(-3.323, 5.871, -48.193), Vector(
  • -2.066, -0.528, -37.363), Vector(84.953, -0.318, -48.085));
  • Global.firstpoint2 = Array(Vector(-11.368, -4.139, -75.750), Vector(-1.747, -0.210, -84.628), Vector(-0.515, 5.871, -48.309),
  • Vector(-1.738, -0.528, -47.750), Vector(84.875, -0.318, -51.899));
  • Global.secondpoint2 = Array(Vector(-8.638, -1.367, -75.887), Vector(-1.798, 2.661, -87.330), Vector(-3.323, 8.745, -48.193),
  • Vector(-2.066, 4.067, -37.363), Vector(84.953, 3.919, -48.085));
  • Global.z = 2;
  • Global.g_beamType = Array(1, 1, 1, 1, 1);
  • Global.showwalls = True;
  • Global.Wall_ID = Array(1, 1, 1, 1, 1);
  • }
  • }
  • rule("Initial Player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Event Player.filterpos = 0;
  • Event Player.lastsavedpos = 0;
  • Event Player.closestbodypos = 0;
  • Event Player.fullbodypos = Position Of(Event Player);
  • Event Player.prevpos_intersection = Position Of(Event Player);
  • Event Player.active_wall = Empty Array;
  • }
  • }
  • rule("Collision Logic")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.initialized == True;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.lastsavedpos = (Eye Position(Event Player) + Position Of(Event Player)) / 2;
  • Wait(0.016, Ignore Condition);
  • Event Player.closestwall = Filtered Array(Global.AllPos, Distance Between(Global.AllPos[Current Array Index], Event Player)
  • <= Distance Between(Global.AllPos[Current Array Index], Global.firstpos[Current Array Index])
  • || Event Player.active_wall[Current Array Index] == 1 || (Dot Product(Direction Towards(Current Array Element,
  • Event Player.lastsavedpos), Global.AllDir[Current Array Index]) > 0) != (Dot Product(Direction Towards(Current Array Element,
  • Event Player), Global.AllDir[Current Array Index]) > 0));
  • For Player Variable(Event Player, x, 0, Count Of(Event Player.closestwall), 1);
  • Global.z = Index Of Array Value(Global.AllPos, Event Player.closestwall[Event Player.x]);
  • If(Global.Wall_ID[Global.z] == 1 || Global.Wall_ID[Global.z] == 3 || Global.Wall_ID[Global.z] == 5);
  • If(Y Component Of(Global.firstpos[Global.z]) >= Y Component Of(Position Of(Event Player)) && Y Component Of(
  • Global.firstpos[Global.z]) <= Y Component Of(Eye Position(Event Player) + Vector(Empty Array, 0.200, Empty Array)));
  • Event Player.closestbodypos = Global.firstpos[Global.z];
  • Else If(Y Component Of(Global.secondpos[Global.z]) >= Y Component Of(Position Of(Event Player)) && Y Component Of(
  • Global.secondpos[Global.z]) <= Y Component Of(Eye Position(Event Player) + Vector(Empty Array, 0.200, Empty Array)));
  • Event Player.closestbodypos = Global.secondpos[Global.z];
  • Else;
  • Event Player.closestbodypos = Position Of(Event Player);
  • End;
  • Event Player.fullbodypos = Vector(X Component Of(Eye Position(Event Player)), Y Component Of(Event Player.closestbodypos),
  • Z Component Of(Eye Position(Event Player)));
  • Event Player.filterpos = Event Player.fullbodypos + Global.AllDir[Global.z] * Dot Product(
  • Global.AllPos[Global.z] - Event Player.fullbodypos, Global.AllDir[Global.z]) / Dot Product(Global.AllDir[Global.z],
  • Global.AllDir[Global.z]);
  • If(Global.Wall_ID[Global.z] == 1 || Global.Wall_ID[Global.z] == 3);
  • If((Dot Product(Direction Towards(Global.AllPos[Global.z], Event Player.lastsavedpos), Global.AllDir[Global.z]) > 0) != (
  • Dot Product(Direction Towards(Global.AllPos[Global.z], Event Player.fullbodypos), Global.AllDir[Global.z]) > 0));
  • Event Player.intersection_length = Dot Product(Global.AllPos[Global.z] - Event Player.fullbodypos, Global.AllDir[Global.z])
  • / Dot Product(Direction Towards(Event Player.lastsavedpos, Event Player.fullbodypos), Global.AllDir[Global.z]);
  • Event Player.prevpos_intersection = Event Player.fullbodypos + Direction Towards(Event Player.lastsavedpos,
  • Event Player.fullbodypos) * Vector(1, Empty Array, 1) * Event Player.intersection_length;
  • If(Dot Product(Direction Towards(Global.firstpos[Global.z], Vector(X Component Of(Global.secondpos[Global.z]), Y Component Of(
  • Global.firstpos[Global.z]), Z Component Of(Global.secondpos[Global.z]))), Direction Towards(Global.firstpos[Global.z],
  • Event Player.prevpos_intersection)) >= 0 && Dot Product(Direction Towards(Global.firstpos[Global.z], Vector(X Component Of(
  • Global.firstpos[Global.z]), Y Component Of(Global.secondpos[Global.z]), Z Component Of(Global.firstpos[Global.z]))),
  • Direction Towards(Global.firstpos[Global.z], Event Player.prevpos_intersection)) >= 0 && Dot Product(Direction Towards(
  • Global.secondpos[Global.z], Vector(X Component Of(Global.secondpos[Global.z]), Y Component Of(Global.firstpos[Global.z]),
  • Z Component Of(Global.secondpos[Global.z]))), Direction Towards(Global.secondpos[Global.z], Event Player.prevpos_intersection))
  • >= 0 && Dot Product(Direction Towards(Global.secondpos[Global.z], Vector(X Component Of(Global.firstpos[Global.z]),
  • Y Component Of(Global.secondpos[Global.z]), Z Component Of(Global.firstpos[Global.z]))), Direction Towards(
  • Global.secondpos[Global.z], Event Player.prevpos_intersection)) >= 0);
  • Cancel Primary Action(Event Player);
  • Teleport(Event Player, Event Player.prevpos_intersection + Direction Towards(Event Player.prevpos_intersection,
  • Event Player.lastsavedpos) * Vector(1, Empty Array, 1) * 2);
  • End;
  • End;
  • End;
  • Event Player.thickness = 0;
  • If(Global.Wall_ID[Global.z] == 5);
  • Event Player.thickness = 4;
  • Else;
  • Event Player.thickness = 1;
  • End;
  • If(Distance Between(Event Player.fullbodypos, Event Player.filterpos) <= Event Player.thickness && Dot Product(Direction Towards(
  • Global.firstpos[Global.z], Vector(X Component Of(Global.secondpos[Global.z]), Y Component Of(Global.firstpos[Global.z]),
  • Z Component Of(Global.secondpos[Global.z]))), Direction Towards(Global.firstpos[Global.z], Event Player.filterpos))
  • >= 0 && Dot Product(Direction Towards(Global.firstpos[Global.z], Vector(X Component Of(Global.firstpos[Global.z]),
  • Y Component Of(Global.secondpos[Global.z]), Z Component Of(Global.firstpos[Global.z]))), Direction Towards(
  • Global.firstpos[Global.z], Event Player.filterpos)) >= 0 && Dot Product(Direction Towards(Global.secondpos[Global.z], Vector(
  • X Component Of(Global.secondpos[Global.z]), Y Component Of(Global.firstpos[Global.z]), Z Component Of(
  • Global.secondpos[Global.z]))), Direction Towards(Global.secondpos[Global.z], Event Player.filterpos)) >= 0 && Dot Product(
  • Direction Towards(Global.secondpos[Global.z], Vector(X Component Of(Global.firstpos[Global.z]), Y Component Of(
  • Global.secondpos[Global.z]), Z Component Of(Global.firstpos[Global.z]))), Direction Towards(Global.secondpos[Global.z],
  • Event Player.filterpos)) >= 0);
  • If(!Event Player.is_Grounded);
  • Set Gravity(Event Player, 100);
  • End;
  • If(Event Player.active_wall[Global.z] == False);
  • Event Player.active_wall[Global.z] = 1;
  • If((Global.Wall_ID[Global.z] == 1 || Global.Wall_ID[Global.z] == 3) && Event Player.is_Grounded == False);
  • Set Gravity(Event Player, 100);
  • Else If(Global.Wall_ID[Global.z] == 5);
  • Disable Movement Collision With Environment(Event Player, False);
  • End;
  • End;
  • If(Global.Wall_ID[Global.z] == 1);
  • Apply Impulse(Event Player, Direction Towards(Event Player.filterpos, Event Player.fullbodypos) * Vector(1, Empty Array, 1), 0.001,
  • To World, Cancel Contrary Motion);
  • Set Move Speed(Event Player, 100 - Dot Product(Direction Towards(Eye Position(Event Player), Eye Position(Event Player)
  • + World Vector Of(Throttle Of(Event Player), Event Player, Rotation)), Direction Towards(Event Player.filterpos,
  • Event Player.fullbodypos) * -1) * 100);
  • Else If(Global.Wall_ID[Global.z] == 3);
  • Apply Impulse(Event Player, Direction Towards(Event Player.filterpos, Event Player.fullbodypos), Speed Of(Event Player), To World,
  • Cancel Contrary Motion);
  • End;
  • Else;
  • Event Player.active_wall[Global.z] = 0;
  • Set Move Speed(Event Player, 100);
  • End;
  • Else If(Global.Wall_ID[Global.z] == 2 || Global.Wall_ID[Global.z] == 6 || Global.Wall_ID[Global.z] == 7);
  • If(Y Component Of(Global.firstpos[Global.z]) >= Y Component Of(Position Of(Event Player)) && Y Component Of(
  • Global.firstpos[Global.z]) <= Y Component Of(Eye Position(Event Player) + Vector(Empty Array, 0.200, Empty Array)));
  • Event Player.closestbodypos = Global.firstpos[Global.z];
  • Else If(Y Component Of(Global.firstpos[Global.z]) <= Y Component Of(Position Of(Event Player)));
  • Event Player.closestbodypos = Position Of(Event Player);
  • Else If(Y Component Of(Global.firstpos[Global.z]) >= Y Component Of(Eye Position(Event Player)));
  • Event Player.closestbodypos = Eye Position(Event Player);
  • End;
  • Event Player.fullbodypos = Vector(X Component Of(Eye Position(Event Player)), Y Component Of(Event Player.closestbodypos),
  • Z Component Of(Eye Position(Event Player)));
  • Event Player.filterpos = Event Player.fullbodypos + Global.AllDir[Global.z] * Dot Product(
  • Global.AllPos[Global.z] - Event Player.fullbodypos, Global.AllDir[Global.z]) / Dot Product(Global.AllDir[Global.z],
  • Global.AllDir[Global.z]);
  • If(Global.Wall_ID[Global.z] == 2 || Global.Wall_ID[Global.z] == 7);
  • If((Dot Product(Direction Towards(Global.AllPos[Global.z], Event Player.lastsavedpos), Global.AllDir[Global.z]) > 0) != (
  • Dot Product(Direction Towards(Global.AllPos[Global.z], Event Player.fullbodypos), Global.AllDir[Global.z]) > 0));
  • Event Player.intersection_length_0 = Dot Product(Global.AllPos[Global.z] - Event Player.fullbodypos, Global.AllDir[Global.z])
  • / Dot Product(Direction Towards(Event Player.lastsavedpos, Event Player.fullbodypos), Global.AllDir[Global.z]);
  • Event Player.prevpos_intersection = Event Player.fullbodypos + Direction Towards(Event Player.lastsavedpos,
  • Event Player.fullbodypos) * Up * Event Player.intersection_length_0;
  • If(Dot Product(Down, Direction Towards(Event Player.lastsavedpos, Event Player.prevpos_intersection)) > 0);
  • If(Dot Product(Direction Towards(Global.firstpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(
  • Global.firstpos[Global.z], Event Player.prevpos_intersection)) >= 0 && Dot Product(Direction Towards(Global.firstpos[Global.z],
  • Global.firstpoint2[Global.z]), Direction Towards(Global.firstpos[Global.z], Event Player.prevpos_intersection))
  • >= 0 && Dot Product(Direction Towards(Global.secondpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(
  • Global.secondpos[Global.z], Event Player.prevpos_intersection)) >= 0 && Dot Product(Direction Towards(
  • Global.secondpos[Global.z], Global.firstpoint2[Global.z]), Direction Towards(Global.secondpos[Global.z],
  • Event Player.prevpos_intersection)) >= 0);
  • Cancel Primary Action(Event Player);
  • If(Hero Of(Event Player) == Hero(Wrecking Ball));
  • Teleport(Event Player, Nearest Walkable Position(Event Player.prevpos_intersection));
  • Wait(0.016, Ignore Condition);
  • Teleport(Event Player, Event Player.prevpos_intersection + Up);
  • Else;
  • Teleport(Event Player, Event Player.prevpos_intersection + Up);
  • End;
  • End;
  • End;
  • End;
  • End;
  • Event Player.thickness_0 = 0;
  • If(Global.Wall_ID[Global.z] == 6);
  • Event Player.thickness_0 = 6;
  • Else;
  • Event Player.thickness_0 = 0.500;
  • End;
  • If(Distance Between(Event Player.filterpos, Event Player.fullbodypos) <= Event Player.thickness_0 && Dot Product(Direction Towards(
  • Global.firstpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(Global.firstpos[Global.z],
  • Event Player.filterpos)) >= 0 && Dot Product(Direction Towards(Global.firstpos[Global.z], Global.firstpoint2[Global.z]),
  • Direction Towards(Global.firstpos[Global.z], Event Player.filterpos)) >= 0 && Dot Product(Direction Towards(
  • Global.secondpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(Global.secondpos[Global.z],
  • Event Player.filterpos)) >= 0 && Dot Product(Direction Towards(Global.secondpos[Global.z], Global.firstpoint2[Global.z]),
  • Direction Towards(Global.secondpos[Global.z], Event Player.filterpos)) >= 0);
  • If(Global.Wall_ID[Global.z] == 2);
  • If(Dot Product(Down, Direction Towards(Event Player.fullbodypos, Event Player.filterpos)) > 0);
  • If(Event Player.active_wall[Global.z] == False);
  • Event Player.is_Grounded = True;
  • Set Gravity(Event Player, 0);
  • Event Player.active_wall[Global.z] = 1;
  • Apply Impulse(Event Player, Up, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Down, 0.001, To World, Cancel Contrary Motion);
  • If(Horizontal Speed Of(Event Player) > 0.010);
  • Apply Impulse(Event Player, Left, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Right, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Forward, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Backward, 0.001, To World, Cancel Contrary Motion);
  • End;
  • End;
  • If(Is Button Held(Event Player, Button(Jump)));
  • Apply Impulse(Event Player, Up, 5.500, To World, Cancel Contrary Motion);
  • End;
  • If(Throttle Of(Event Player) != Vector(Empty Array, Empty Array, Empty Array));
  • Apply Impulse(Event Player, Cross Product(Up, Normalize(World Vector Of(Throttle Of(Event Player), Event Player, Rotation))),
  • 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Cross Product(Down, Normalize(World Vector Of(Throttle Of(Event Player), Event Player, Rotation))),
  • 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Direction Towards(Eye Position(Event Player), Eye Position(Event Player) + Normalize(World Vector Of(
  • Throttle Of(Event Player), Event Player, Rotation))), 3, To World, Cancel Contrary Motion);
  • End;
  • If(Throttle Of(Event Player) == Vector(Empty Array, Empty Array, Empty Array) && Horizontal Speed Of(Event Player) > 0.010);
  • Apply Impulse(Event Player, Left, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Right, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Forward, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Backward, 0.001, To World, Cancel Contrary Motion);
  • End;
  • Else;
  • Apply Impulse(Event Player, Down, 0.001, To World, Cancel Contrary Motion);
  • End;
  • Else If(Global.Wall_ID[Global.z] == 6);
  • If(Event Player.active_wall[Global.z] == False);
  • Event Player.active_wall[Global.z] = 1;
  • Disable Movement Collision With Environment(Event Player, True);
  • End;
  • Else If(Global.Wall_ID[Global.z] == 7);
  • If(Dot Product(Down, Direction Towards(Event Player.fullbodypos, Event Player.filterpos)) >= 0);
  • If(Is Button Held(Event Player, Button(Jump)));
  • Apply Impulse(Event Player, Up, 5.500, To World, Cancel Contrary Motion);
  • End;
  • If(Event Player.active_wall[Global.z] == False);
  • Event Player.active_wall[Global.z] = 1;
  • Set Gravity(Event Player, 0);
  • End;
  • Apply Impulse(Event Player, Up, 0.001, To World, Cancel Contrary Motion);
  • Else;
  • Apply Impulse(Event Player, Down, 0.001, To World, Cancel Contrary Motion);
  • End;
  • End;
  • Else;
  • Event Player.active_wall[Global.z] = 0;
  • Event Player.is_Grounded = False;
  • End;
  • Else If(Global.Wall_ID[Global.z] == 4);
  • Event Player.closestbodypos = Position Of(Event Player) + Vector(Empty Array, 0.500, Empty Array);
  • Event Player.fullbodypos = Vector(X Component Of(Eye Position(Event Player)), Y Component Of(Event Player.closestbodypos),
  • Z Component Of(Eye Position(Event Player)));
  • Event Player.filterpos = Event Player.fullbodypos + Global.AllDir[Global.z] * Dot Product(
  • Global.AllPos[Global.z] - Event Player.fullbodypos, Global.AllDir[Global.z]) / Dot Product(Global.AllDir[Global.z],
  • Global.AllDir[Global.z]);
  • If((Dot Product(Direction Towards(Global.AllPos[Global.z], Event Player.lastsavedpos), Global.AllDir[Global.z]) > 0) != (
  • Dot Product(Direction Towards(Global.AllPos[Global.z], Event Player.fullbodypos), Global.AllDir[Global.z]) > 0));
  • Event Player.intersection_length_1 = Dot Product(Global.AllPos[Global.z] - Event Player.fullbodypos, Global.AllDir[Global.z])
  • / Dot Product(Direction Towards(Event Player.lastsavedpos, Event Player.fullbodypos), Global.AllDir[Global.z]);
  • Event Player.prevpos_intersection = Ray Cast Hit Position(Event Player.fullbodypos, Event Player.fullbodypos + Direction Towards(
  • Event Player.lastsavedpos, Event Player.fullbodypos) * Event Player.intersection_length_1, Null, Event Player, True);
  • If(Dot Product(Direction Towards(Global.firstpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(
  • Global.firstpos[Global.z], Event Player.prevpos_intersection)) >= 0 && Dot Product(Direction Towards(Global.firstpos[Global.z],
  • Global.firstpoint2[Global.z]), Direction Towards(Global.firstpos[Global.z], Event Player.prevpos_intersection))
  • >= 0 && Dot Product(Direction Towards(Global.secondpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(
  • Global.secondpos[Global.z], Event Player.prevpos_intersection)) >= 0 && Dot Product(Direction Towards(
  • Global.secondpos[Global.z], Global.firstpoint2[Global.z]), Direction Towards(Global.secondpos[Global.z],
  • Event Player.prevpos_intersection)) >= 0);
  • Teleport(Event Player, Ray Cast Hit Position(Event Player.prevpos_intersection,
  • Event Player.prevpos_intersection + Direction Towards(Event Player.prevpos_intersection, Event Player.lastsavedpos) * Vector(1,
  • Empty Array, 1), Null, Event Player, True));
  • If(Hero Of(Event Player) == Hero(Doomfist) && Is Using Ability 2(Event Player));
  • Teleport(Event Player, Nearest Walkable Position(Event Player.prevpos_intersection));
  • Wait(0.016, Ignore Condition);
  • Teleport(Event Player, Ray Cast Hit Position(Event Player.prevpos_intersection, Event Player.prevpos_intersection + Up, Null,
  • Event Player, True));
  • Cancel Primary Action(Event Player);
  • Else If(Hero Of(Event Player) == Hero(Wrecking Ball));
  • Cancel Primary Action(Event Player);
  • Teleport(Event Player, Nearest Walkable Position(Event Player.prevpos_intersection));
  • Wait(0.016, Ignore Condition);
  • Teleport(Event Player, Ray Cast Hit Position(Event Player.prevpos_intersection, Event Player.prevpos_intersection + Up, Null,
  • Event Player, True));
  • End;
  • Apply Impulse(Event Player, Global.AllDir[Global.z], 0.001, To World, Cancel Contrary Motion XYZ);
  • End;
  • End;
  • If(Distance Between(Event Player.filterpos, Event Player.fullbodypos) <= 1 && Dot Product(Direction Towards(
  • Global.firstpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(Global.firstpos[Global.z],
  • Event Player.filterpos)) >= 0 && Dot Product(Direction Towards(Global.firstpos[Global.z], Global.firstpoint2[Global.z]),
  • Direction Towards(Global.firstpos[Global.z], Event Player.filterpos)) >= 0 && Dot Product(Direction Towards(
  • Global.secondpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(Global.secondpos[Global.z],
  • Event Player.filterpos)) >= 0 && Dot Product(Direction Towards(Global.secondpos[Global.z], Global.firstpoint2[Global.z]),
  • Direction Towards(Global.secondpos[Global.z], Event Player.filterpos)) >= 0);
  • If(Dot Product(Up, Direction Towards(Event Player.filterpos, Event Player.closestbodypos)) > 0);
  • Apply Impulse(Event Player, Global.AllDir[Global.z], 0.001, To World, Cancel Contrary Motion XYZ);
  • Else;
  • Apply Impulse(Event Player, Global.AllDir[Global.z], 0.001, To Player, Cancel Contrary Motion XYZ);
  • End;
  • Else;
  • Event Player.active_wall[Global.z] = 0;
  • End;
  • Else If(Global.Wall_ID[Global.z] == 8);
  • Event Player.closestbodypos = Position Of(Event Player) + Vector(Empty Array, 0.500, Empty Array);
  • Event Player.fullbodypos = Vector(X Component Of(Eye Position(Event Player)), Y Component Of(Event Player.closestbodypos),
  • Z Component Of(Eye Position(Event Player)));
  • Event Player.filterpos = Event Player.fullbodypos + Global.AllDir[Global.z] * Dot Product(
  • Global.AllPos[Global.z] - Event Player.fullbodypos, Global.AllDir[Global.z]) / Dot Product(Global.AllDir[Global.z],
  • Global.AllDir[Global.z]);
  • If((Dot Product(Direction Towards(Global.AllPos[Global.z], Event Player.lastsavedpos), Global.AllDir[Global.z]) > 0) != (
  • Dot Product(Direction Towards(Global.AllPos[Global.z], Event Player.fullbodypos), Global.AllDir[Global.z]) > 0));
  • Event Player.intersection_length_2 = Dot Product(Global.AllPos[Global.z] - Event Player.fullbodypos, Global.AllDir[Global.z])
  • / Dot Product(Direction Towards(Event Player.lastsavedpos, Event Player.fullbodypos), Global.AllDir[Global.z]);
  • Event Player.prevpos_intersection = Ray Cast Hit Position(Event Player.fullbodypos, Event Player.fullbodypos + Direction Towards(
  • Event Player.lastsavedpos, Event Player.fullbodypos) * Event Player.intersection_length_2, Null, Event Player, True);
  • If(Dot Product(Direction Towards(Global.firstpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(
  • Global.firstpos[Global.z], Event Player.prevpos_intersection)) >= 0 && Dot Product(Direction Towards(Global.firstpos[Global.z],
  • Global.firstpoint2[Global.z]), Direction Towards(Global.firstpos[Global.z], Event Player.prevpos_intersection))
  • >= 0 && Dot Product(Direction Towards(Global.secondpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(
  • Global.secondpos[Global.z], Event Player.prevpos_intersection)) >= 0 && Dot Product(Direction Towards(
  • Global.secondpos[Global.z], Global.firstpoint2[Global.z]), Direction Towards(Global.secondpos[Global.z],
  • Event Player.prevpos_intersection)) >= 0);
  • Teleport(Event Player, Ray Cast Hit Position(Event Player.prevpos_intersection,
  • Event Player.prevpos_intersection + Direction Towards(Event Player.prevpos_intersection, Event Player.lastsavedpos) * Vector(1,
  • Empty Array, 1), Null, Event Player, True));
  • If(Hero Of(Event Player) == Hero(Doomfist) && Is Using Ability 2(Event Player));
  • Teleport(Event Player, Nearest Walkable Position(Event Player.prevpos_intersection));
  • Wait(0.016, Ignore Condition);
  • Teleport(Event Player, Ray Cast Hit Position(Event Player.prevpos_intersection, Event Player.prevpos_intersection + Up, Null,
  • Event Player, True));
  • Cancel Primary Action(Event Player);
  • Else If(Hero Of(Event Player) == Hero(Wrecking Ball));
  • Cancel Primary Action(Event Player);
  • Teleport(Event Player, Nearest Walkable Position(Event Player.prevpos_intersection));
  • Wait(0.016, Ignore Condition);
  • Teleport(Event Player, Ray Cast Hit Position(Event Player.prevpos_intersection, Event Player.prevpos_intersection + Up, Null,
  • Event Player, True));
  • End;
  • Apply Impulse(Event Player, Global.AllDir[Global.z], 0.001, To World, Cancel Contrary Motion);
  • End;
  • End;
  • If(Distance Between(Event Player.filterpos, Event Player.fullbodypos) <= 1 && Dot Product(Direction Towards(
  • Global.firstpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(Global.firstpos[Global.z],
  • Event Player.filterpos)) >= 0 && Dot Product(Direction Towards(Global.firstpos[Global.z], Global.firstpoint2[Global.z]),
  • Direction Towards(Global.firstpos[Global.z], Event Player.filterpos)) >= 0 && Dot Product(Direction Towards(
  • Global.secondpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(Global.secondpos[Global.z],
  • Event Player.filterpos)) >= 0 && Dot Product(Direction Towards(Global.secondpos[Global.z], Global.firstpoint2[Global.z]),
  • Direction Towards(Global.secondpos[Global.z], Event Player.filterpos)) >= 0);
  • If(Dot Product(Up, Direction Towards(Event Player.filterpos, Event Player.closestbodypos)) > 0);
  • Apply Impulse(Event Player, Global.AllDir[Global.z], 0.001, To World, Cancel Contrary Motion XYZ);
  • Else;
  • Apply Impulse(Event Player, Direction Towards(Event Player.filterpos, Event Player.fullbodypos), 0.001, To World,
  • Cancel Contrary Motion);
  • End;
  • Else;
  • Event Player.active_wall[Global.z] = 0;
  • End;
  • Else If(Global.Wall_ID[Global.z] == 9);
  • Event Player.dir = Direction Towards(Global.AllPos[Global.z] + Direction Towards(Global.AllPos[Global.z], Event Player)
  • * Global.sphereRadius[Global.z], Event Player);
  • If((Dot Product(Direction Towards(Global.AllPos[Global.z], Event Player.lastsavedpos), Event Player.dir) > 0) != (Dot Product(
  • Direction Towards(Global.AllPos[Global.z], Event Player), Event Player.dir) > 0));
  • Event Player.intersection_length_3 = Dot Product(Global.AllPos[Global.z] - Event Player, Event Player.dir) / Dot Product(
  • Direction Towards(Event Player.lastsavedpos, Event Player), Event Player.dir);
  • Event Player.prevpos_intersection = Ray Cast Hit Position(Event Player, Event Player + Direction Towards(Event Player.lastsavedpos,
  • Event Player) * Event Player.intersection_length_3, Null, Event Player, True);
  • Teleport(Event Player, Ray Cast Hit Position(Event Player.prevpos_intersection,
  • Event Player.prevpos_intersection + Direction Towards(Event Player.prevpos_intersection, Event Player.lastsavedpos), Null,
  • Event Player, True));
  • Apply Impulse(Event Player, Event Player.dir, 0.001, To World, Cancel Contrary Motion XYZ);
  • End;
  • If(Distance Between(Event Player, Global.AllPos[Global.z] + Direction Towards(Global.AllPos[Global.z], Event Player)
  • * Global.sphereRadius[Global.z]) < 1);
  • Apply Impulse(Event Player, Event Player.dir, 1, To World, Cancel Contrary Motion XYZ);
  • Else;
  • Event Player.active_wall[Global.z] = 0;
  • End;
  • End;
  • End;
  • Loop;
  • }
  • }
  • rule("Disables stuff")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Count Of(Filtered Array(Event Player.active_wall, Current Array Element != 0)) == 0;
  • }
  • actions
  • {
  • Set Gravity(Event Player, 100);
  • Stop Forcing Throttle(Event Player);
  • Stop Accelerating(Event Player);
  • Enable Movement Collision With Environment(Event Player);
  • }
  • }
  • rule("Throttle Loop")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is True For Any(Event Player.active_wall, Current Array Element) == True;
  • }
  • actions
  • {
  • Start Throttle In Direction(Event Player, Null, False, To World, Add to existing throttle, None);
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Throttle Loop")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Effect Creation")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Wait(5, Ignore Condition);
  • If(Global.showwalls);
  • For Global Variable(x, 0, Count Of(Global.AllPos), 1);
  • If(Array Contains(Array(1, 3, 5), Global.Wall_ID[Global.x]));
  • If(Global.Wall_ID[Global.x] == 5);
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.firstpos[Global.x], Vector(X Component Of(Global.secondpos[Global.x]),
  • Y Component Of(Global.firstpos[Global.x]), Z Component Of(Global.secondpos[Global.x])), Color(Red), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID)];
  • Global._arrayBuilder1[0] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID)] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Vector(X Component Of(Global.secondpos[Global.x]), Y Component Of(
  • Global.firstpos[Global.x]), Z Component Of(Global.secondpos[Global.x])), Global.secondpos[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Red), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[1] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.firstpos[Global.x] + Vector(0.001, Empty Array, Empty Array), Vector(
  • X Component Of(Global.firstpos[Global.x]), Y Component Of(Global.secondpos[Global.x]), Z Component Of(
  • Global.firstpos[Global.x])), Color(Red), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[2] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Vector(X Component Of(Global.firstpos[Global.x]), Y Component Of(
  • Global.secondpos[Global.x]), Z Component Of(Global.firstpos[Global.x])), Global.secondpos[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Red), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[3] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Else;
  • Skip(Array(50, 0, 17, 34)[Index Of Array Value(Array(1, 2, 3), Global.g_beamType[Global.x]) + 1]);
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Global.firstpos[Global.x], Vector(X Component Of(
  • Global.secondpos[Global.x]), Y Component Of(Global.firstpos[Global.x]), Z Component Of(Global.secondpos[Global.x])), Color(
  • Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID)];
  • Global._arrayBuilder1[0] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID)] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Vector(X Component Of(Global.secondpos[Global.x]), Y Component Of(
  • Global.firstpos[Global.x]), Z Component Of(Global.secondpos[Global.x])), Global.secondpos[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[1] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Global.firstpos[Global.x] + Vector(0.001, Empty Array, Empty Array),
  • Vector(X Component Of(Global.firstpos[Global.x]), Y Component Of(Global.secondpos[Global.x]), Z Component Of(
  • Global.firstpos[Global.x])), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[2] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Vector(X Component Of(Global.firstpos[Global.x]), Y Component Of(
  • Global.secondpos[Global.x]), Z Component Of(Global.firstpos[Global.x])), Global.secondpos[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[3] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Skip(33);
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.firstpos[Global.x], Vector(X Component Of(Global.secondpos[Global.x]),
  • Y Component Of(Global.firstpos[Global.x]), Z Component Of(Global.secondpos[Global.x])), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID)];
  • Global._arrayBuilder1[0] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID)] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Vector(X Component Of(Global.secondpos[Global.x]), Y Component Of(
  • Global.firstpos[Global.x]), Z Component Of(Global.secondpos[Global.x])), Global.secondpos[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[1] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.firstpos[Global.x] + Vector(0.001, Empty Array, Empty Array), Vector(
  • X Component Of(Global.firstpos[Global.x]), Y Component Of(Global.secondpos[Global.x]), Z Component Of(
  • Global.firstpos[Global.x])), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[2] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Vector(X Component Of(Global.firstpos[Global.x]), Y Component Of(
  • Global.secondpos[Global.x]), Z Component Of(Global.firstpos[Global.x])), Global.secondpos[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[3] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Skip(16);
  • Create Beam Effect(All Players(All Teams), Bad Beam, Global.firstpos[Global.x], Vector(X Component Of(Global.secondpos[Global.x]),
  • Y Component Of(Global.firstpos[Global.x]), Z Component Of(Global.secondpos[Global.x])), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID)];
  • Global._arrayBuilder1[0] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID)] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Bad Beam, Vector(X Component Of(Global.secondpos[Global.x]), Y Component Of(
  • Global.firstpos[Global.x]), Z Component Of(Global.secondpos[Global.x])), Global.secondpos[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[1] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Bad Beam, Global.firstpos[Global.x] + Vector(0.001, Empty Array, Empty Array), Vector(
  • X Component Of(Global.firstpos[Global.x]), Y Component Of(Global.secondpos[Global.x]), Z Component Of(
  • Global.firstpos[Global.x])), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[2] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Bad Beam, Vector(X Component Of(Global.firstpos[Global.x]), Y Component Of(
  • Global.secondpos[Global.x]), Z Component Of(Global.firstpos[Global.x])), Global.secondpos[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[3] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • End;
  • Else If(Array Contains(Array(2, 4, 6, 7, 8), Global.Wall_ID[Global.x]));
  • If(Global.Wall_ID[Global.x] == 6);
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.firstpos[Global.x], Global.firstpoint2[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Red), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID)];
  • Global._arrayBuilder1[0] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID)] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.firstpoint2[Global.x] + Vector(Empty Array, Empty Array, 0.001),
  • Global.secondpos[Global.x], Color(Red), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[1] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.secondpos[Global.x], Global.secondpoint2[Global.x] + Vector(
  • Empty Array, Empty Array, 0.001), Color(Red), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[2] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.secondpoint2[Global.x] + Vector(Empty Array, Empty Array, 0.001),
  • Global.firstpos[Global.x], Color(Red), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[3] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Else;
  • Skip(Array(50, 0, 17, 34)[Index Of Array Value(Array(1, 2, 3), Global.g_beamType[Global.x]) + 1]);
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Global.firstpos[Global.x], Global.firstpoint2[Global.x] + Vector(
  • Empty Array, Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID)];
  • Global._arrayBuilder1[0] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID)] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Global.firstpoint2[Global.x] + Vector(Empty Array, Empty Array, 0.001),
  • Global.secondpos[Global.x], Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[1] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Global.secondpos[Global.x], Global.secondpoint2[Global.x] + Vector(
  • Empty Array, Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[2] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Global.secondpoint2[Global.x] + Vector(Empty Array, Empty Array, 0.001),
  • Global.firstpos[Global.x], Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[3] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Skip(33);
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.firstpos[Global.x], Global.firstpoint2[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID)];
  • Global._arrayBuilder1[0] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID)] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.firstpoint2[Global.x] + Vector(Empty Array, Empty Array, 0.001),
  • Global.secondpos[Global.x], Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[1] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.secondpos[Global.x], Global.secondpoint2[Global.x] + Vector(
  • Empty Array, Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[2] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.secondpoint2[Global.x] + Vector(Empty Array, Empty Array, 0.001),
  • Global.firstpos[Global.x], Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[3] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Skip(16);
  • Create Beam Effect(All Players(All Teams), Bad Beam, Global.firstpos[Global.x], Global.firstpoint2[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID)];
  • Global._arrayBuilder1[0] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID)] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Bad Beam, Global.firstpoint2[Global.x] + Vector(Empty Array, Empty Array, 0.001),
  • Global.secondpos[Global.x], Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[1] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Bad Beam, Global.secondpos[Global.x], Global.secondpoint2[Global.x] + Vector(
  • Empty Array, Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[2] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Bad Beam, Global.secondpoint2[Global.x] + Vector(Empty Array, Empty Array, 0.001),
  • Global.firstpos[Global.x], Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[3] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • End;
  • Else If(Global.Wall_ID[Global.x] == 9);
  • Create Effect(All Players(All Teams), Sphere, Color(Orange), Global.AllPos[Global.x], Global.sphereRadius[Global.x], Visible To);
  • End;
  • Wait(0.016, Ignore Condition);
  • End;
  • End;
  • Global.initialized = True;
  • }
  • }
  • disabled rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Initial Global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global._classIndexes[1000] = 0;
  • Global._classIndexes[0] = -1;
  • 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(133.779, -1.240, -20.048));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(143.956, -1.240, -30.580));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(154.565, -1.240, -20.738));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(143.913, -1.240, -11.681));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(123.397, -1.240, -21.118));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(123.275, 1.760, -1.112));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(112.428, 5.760, -1.491));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(99.549, 5.750, -33.014));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(112.273, 5.750, -32.997));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(112.909, 5.760, -40.690));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(124.549, 1.760, -40.176));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(112.864, -1.250, -20.847));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(112.669, -0.240, -4.677));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(120.387, -0.240, -6.402));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(119.644, -1.240, -14.857));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(111.813, -1.250, -11.918));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(114.063, -1.250, -28.586));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(98.843, -1.250, -28.371));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(97.161, -1.421, -21.491));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(98.936, -1.250, -15.354));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(106.670, -1.250, -11.481));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(106.025, -1.250, 0.487));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(79.950, -1.250, -0.838));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(78.420, -1.240, -9.446));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(81.945, -1.250, -16.732));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(80.487, -1.400, -21.142));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(99.540, -0.250, -50.285));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(66.801, -0.400, -48.281));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(68.515, -0.425, -42.149));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(79.548, -0.250, -42.474));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(79.912, 3.750, -29.795));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(78.741, 3.750, -25.537));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(84.257, 3.750, -26.489));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(84.382, 3.750, -33.978));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(79.377, -1.250, -25.987));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(78.286, -1.250, -30.440));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(69.393, -1.401, -30.572));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(69.565, -1.400, -21.146));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(68.349, -1.250, -11.456));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(62.756, -1.250, -10.915));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(63.301, -1.250, -7.495));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(73.067, 2.751, -7.414));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(75.891, 3.757, -14.418));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(81.752, 3.757, -14.109));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(59.888, -1.250, -16.129));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(50.471, 0.750, -15.774));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(50.851, 4.750, -29.790));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(61.718, 4.750, -29.296));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(61.532, 4.750, -40.258));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(55.823, 4.750, -39.008));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(55.271, 4.750, -33.397));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(50.167, 4.750, -33.680));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(66.245, 4.750, -30.970));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(66.689, 4.750, -22.651));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(63.031, 4.750, -21.372));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(51.345, -0.250, -29.508));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(50.754, -0.237, -36.404));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(52.504, -0.399, -42.797));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(44.119, 0.650, -35.875));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(35.911, 0.650, -37.563));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(36.514, 5.750, -51.721));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(37.896, 5.750, -55.873));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(38.063, 5.750, -85.539));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(44.533, 4.738, -85.880));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(44.241, -0.394, -67.754));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(65.974, -0.250, -61.640));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(60.054, -0.250, -67.540));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(55.563, -0.250, -69.395));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(53.894, -1.250, -91.716));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(42.163, -1.250, -92.909));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(31.092, -1.250, -91.738));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(31.697, -1.250, -86.813));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(37.743, -0.250, -84.580));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(38.334, -0.240, -69.025));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(40.405, -0.250, -51.153));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(46.822, -0.249, -47.013));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(31.059, -0.346, -69.961));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(31.688, 0.650, -37.379));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(45.896, -1.250, -11.421));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(6.846, -0.398, -68.151));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(5.427, -0.250, -82.679));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(10.025, -0.250, -83.294));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(8.647, -0.250, -89.037));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(2.429, -0.250, -88.547));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(3.767, -0.250, -83.484));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(5.915, -0.250, -77.071));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-9.604, 5.750, -73.618));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-0.140, 5.750, -72.299));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-0.314, 5.750, -49.981));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-14.797, 5.748, -51.172));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(6.776, -0.398, -50.294));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(6.147, -0.398, -61.800));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(1.872, 3.750, -30.353));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-6.572, 1.750, -30.519));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-6.111, -0.831, -38.157));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-4.225, -0.250, -62.413));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-6.719, -0.250, -48.983));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-6.288, -0.978, -41.232));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-20.976, -1.400, -43.697));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-21.389, -1.400, -66.422));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-35.987, -1.398, -68.490));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-37.315, 1.600, -99.918));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-55.657, 1.600, -99.949));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-72.581, 1.750, -97.789));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-78.748, 1.750, -100.435));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-74.083, 1.750, -103.945));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-77.022, 1.750, -108.329));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-72.760, 1.750, -109.769));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-74.142, 2.750, -124.482));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-67.095, 2.750, -125.476));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-69.153, 4.750, -143.578));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-60.838, 4.750, -146.746));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-59.558, 4.750, -150.982));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-55.002, 4.750, -151.714));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-53.035, 4.750, -146.450));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-43.914, 4.750, -144.238));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-37.986, 4.750, -144.216));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-45.249, 2.750, -123.367));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-57.050, 2.602, -123.390));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-56.644, 1.600, -111.282));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-46.631, 2.750, -116.862));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-48.490, 1.750, -109.734));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-36.886, 1.750, -109.078));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-76.653, 2.559, -94.629));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-75.409, 2.750, -90.636));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-51.608, 2.750, -89.451));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-52.504, -1.250, -71.557));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-42.132, -1.250, -71.052));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-41.767, -1.250, -63.738));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-48.566, -1.250, -62.767));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-45.567, 2.741, -91.702));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-44.040, 2.050, -95.650));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-43.514, 4.750, -79.041));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-36.064, 4.750, -78.814));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-28.939, 4.749, -79.502));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-27.635, 4.749, -87.260));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-18.388, 1.750, -87.641));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-19.513, -1.250, -78.829));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-31.507, -1.250, -78.394));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-19.513, -1.250, -72.103));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-14.450, -1.250, -72.967));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-36.888, -2.567, -54.270));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-35.832, -2.500, -49.952));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-35.268, -2.150, -46.588));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-27.953, -1.750, -50.555));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-27.283, -1.250, -61.506));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-12.050, -1.250, -38.502));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-13.590, -1.250, -34.272));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-22.669, -1.250, -33.394));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-22.510, -1.240, -42.463));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-28.173, -1.750, -42.932));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-28.680, -1.750, -39.213));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-32.192, -1.750, -38.452));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-32.251, -1.250, -33.582));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(69.455, -0.250, -74.286));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(71.523, -0.250, -67.930));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(72.706, -0.250, -57.938));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(76.990, -0.250, -76.313));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(69.735, -0.250, -78.817));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(59.231, 1.750, -77.892));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(58.383, 3.750, -86.146));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(64.793, 0.107, -79.028));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-28.993, 1.750, -100.669));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-28.457, -1.250, -83.438));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(2.019, 3.750, -33.644));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(13.175, 3.750, -33.903));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(13.416, -0.250, -47.996));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-9.481, 5.750, -78.093));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-4.375, -0.250, -56.752));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(90.291, 0.751, -50.021));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(105.373, -1.250, -14.979));
  • Modify Global Variable(_tempSegments, Append To Array, Up);
  • Modify Global Variable(_tempSegments, Append To Array, Vector(1, 2, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(2, 3, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(3, Empty Array, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(Empty Array, 4, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(4, 5, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(5, 6, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(6, 8, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(8, 7, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(8, 9, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(9, 10, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(10, 4, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(4, 14, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(14, 13, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(13, 12, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(12, 15, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(15, 11, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(11, 16, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(15, 20, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(19, 18, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(18, 17, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(17, 16, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(20, 21, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(21, 22, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(22, 23, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(23, 24, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(24, 25, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(25, 18, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(17, 26, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(27, 28, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(28, 29, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(29, 30, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(30, 31, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(31, 32, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(32, 33, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(25, 34, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(34, 35, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(35, 36, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(36, 28, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(36, 37, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(37, 25, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(37, 38, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(38, 39, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(39, 40, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(40, 41, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(41, 42, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(42, 43, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(39, 44, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(44, 45, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(45, 46, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(46, 47, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(47, 48, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(48, 49, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(49, 50, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(50, 51, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(52, 53, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(53, 54, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(54, 47, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(47, 52, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(36, 55, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(55, 56, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(28, 57, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(57, 56, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(56, 58, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(58, 59, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(59, 60, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(60, 61, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(61, 62, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(62, 63, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(63, 64, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(57, 64, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(27, 65, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(65, 66, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(66, 67, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(67, 64, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(67, 68, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(68, 69, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(69, 70, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(70, 71, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(71, 72, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(72, 73, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(73, 64, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(73, 74, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(74, 75, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(75, 57, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(71, 76, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(76, 73, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(76, 77, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(77, 59, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(58, 78, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(78, 39, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(76, 79, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(80, 81, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(81, 82, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(82, 83, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(83, 84, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(84, 80, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(80, 85, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(85, 79, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(86, 87, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(87, 88, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(88, 89, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(90, 91, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(91, 79, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(92, 93, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(93, 94, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(91, 95, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(95, 96, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(96, 97, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(97, 94, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(97, 98, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(98, 99, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(99, 100, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(100, 101, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(101, 102, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(102, 103, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(103, 104, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(104, 105, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(105, 102, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(105, 106, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(106, 107, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(107, 108, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(108, 109, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(109, 110, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(110, 111, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(111, 112, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(112, 113, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(113, 114, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(114, 115, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(115, 116, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(115, 117, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(117, 118, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(118, 119, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(119, 102, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(117, 120, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(120, 121, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(121, 122, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(122, 101, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(121, 119, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(107, 119, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(103, 123, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(123, 124, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(124, 125, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(125, 126, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(126, 127, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(127, 128, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(128, 129, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(129, 126, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(127, 100, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(125, 130, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(130, 131, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(131, 101, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(130, 132, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(132, 133, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(133, 134, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(134, 135, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(135, 136, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(136, 137, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(137, 138, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(138, 100, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(137, 139, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(139, 99, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(139, 140, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(140, 89, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(141, 142, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(142, 143, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(142, 144, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(144, 145, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(145, 99, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(94, 146, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(146, 147, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(147, 148, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(148, 149, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(149, 98, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(149, 150, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(150, 151, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(151, 152, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(152, 153, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(153, 148, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(144, 150, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(154, 155, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(155, 156, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(154, 157, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(154, 158, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(159, 160, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(157, 158, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(159, 161, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(161, 158, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(4, 11, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(101, 162, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(162, 163, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(163, 137, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(118, 108, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(111, 114, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(164, 92, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(164, 165, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(165, 166, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(166, 90, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(86, 167, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(167, 85, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(86, 95, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(88, 168, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(168, 95, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(26, 169, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(19, 170, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(170, 20, Empty Array));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(89, 140, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(86, 167, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(95, 86, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(168, 88, 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("HUD")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Create HUD Text(All Players(Team 1), Null, Null, Custom String("Team Score: {0}", Global.Score), Left, 0, Color(White), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • }
  • }
  • rule("Scoreboard")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • actions
  • {
  • Create HUD Text(All Players(Team 1), Null, Null, Custom String("{0} | {1} HP | {2}%", Custom String("{0} {1}", Is Alive(
  • Event Player) == True ? Hero Icon String(Hero Of(Event Player)) : Icon String(X), Event Player), Round To Integer(Health(
  • Event Player), To Nearest), Ultimate Charge Percent(Event Player)), Left, 2, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • }
  • }
  • rule("Pause Time and Disable Global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Disable Built-In Game Mode Announcer;
  • Disable Built-In Game Mode Completion;
  • Disable Built-In Game Mode Scoring;
  • Wait(0.250, Ignore Condition);
  • Pause Match Time;
  • }
  • }
  • rule("Allheroes")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.Allheroes = Workshop Setting Toggle(Custom String("Settings"), Custom String("All Heroes"), False, 0);
  • }
  • }
  • rule("All Heroes")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Allheroes == True;
  • }
  • actions
  • {
  • Set Player Allowed Heroes(All Players(Team 1), All Heroes);
  • }
  • }
  • rule("All heroes - Pause Time")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Allheroes == True;
  • Is Assembling Heroes == False;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Pause Match Time;
  • }
  • }
  • rule("Objective Text")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.AssemblingHeroes == False;
  • }
  • actions
  • {
  • Wait(0.250, Abort When False);
  • Create HUD Text(All Players(Team 1), Null, Null, Global.Objective, Top, 0, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • }
  • }
  • rule("Starting Area")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Global.StartingArea = True;
  • }
  • }
  • rule("Skip Setup")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is In Setup == True;
  • }
  • actions
  • {
  • Set Match Time(0);
  • }
  • }
  • rule("Spawn")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Global.StartingArea == True;
  • Is Dummy Bot(Event Player) == False;
  • Event Player.AlreadySpawned == False;
  • }
  • actions
  • {
  • Teleport(Event Player, Vector(77.173, 0.205, -78.218));
  • Set Facing(Event Player, Direction Towards(Event Player, Vector(75.922, 1.299, -77.373)), To World);
  • Event Player.AlreadySpawned = True;
  • }
  • }
  • 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(
  • Filtered Array(Global.Nodes[Event Player.pathmapReference], Is In Line of Sight(Eye Position(Event Player),
  • Current Array Element, Barriers Do Not Block LOS) == True), 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
  • {
  • Hero Of(Event Player) != Hero(Ana);
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)))) > 5;
  • Hero Of(Event Player) != Hero(Widowmaker);
  • Event Player.p_LineofSight == True;
  • Count Of(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Current Array Element.Invis == False)) > 0;
  • }
  • actions
  • {
  • Event Player._extendedPlayerCollection[0] = First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(
  • Event Player))), Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)));
  • "Set current to the first node."
  • Event Player.Dijkstra_Current = Index Of Array Value(Global.Nodes[Global.map], First Of(Sorted Array(Global.Nodes[Global.map],
  • Distance Between(Event Player._extendedPlayerCollection[0], 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]));
  • 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 the distance between this node and the neighbor node is lower than the node's current parent,\r\nthen the current node is closer and should be set as the neighbor's parent.\r\nAlternatively, if the neighbor's distance is 0, that means it was not set so this"
  • If((
  • !Event Player.Dijkstra_Distances[Event Player.Dijkstra_Neighbor_Index] || 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)))));
  • "Set the neighbor's distance to be the distance between the current node and neighbor node."
  • Event Player.Dijkstra_Distances[Event Player.Dijkstra_Neighbor_Index] = Event Player.Dijkstra_Distance;
  • "Set the neighbor's parent ('parentArray[neighborIndex]') to be current. 1 is added to current because\r\n0 means no parent was set yet (the first node will have current equal 0). This value will be subtracted\r\nback by 1 when used."
  • 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(Filtered Array(All Living Players(Opposite Team Of(Team Of(
  • Event Player))), Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)))) > 5);
  • }
  • }
  • rule("Stop Pathfinding")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Hero Of(Event Player) != Hero(Ana);
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)))) <= 5;
  • Hero Of(Event Player) != Hero(Widowmaker);
  • Event Player.p_LineofSight == True;
  • Hero Of(Event Player) != Hero(Genji);
  • Count Of(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Current Array Element.Invis == False)) > 0;
  • }
  • actions
  • {
  • Stop Throttle In Direction(Event Player);
  • Wait(Random Integer(1, 2), Ignore Condition);
  • Start Throttle In Direction(Event Player, Direction Towards(Position Of(Event Player), Position Of(First Of(Sorted Array(
  • Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Is In Line of Sight(Event Player,
  • Current Array Element, Barriers Do Not Block LOS)), Distance Between(Event Player, Current Array Element))))
  • + Direction From Angles(Total Time Elapsed * 135, 0) * 5), 1, To World, Replace existing throttle, Direction and Magnitude);
  • Wait(Random Integer(1, 2), Ignore Condition);
  • Loop If(Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(
  • Event Player))), Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)))) <= 5);
  • }
  • }
  • rule("Shooting - Baptiste")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.p_LineofSight == True;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • > 0;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Primary Fire));
  • Wait(1, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Shooting - Reaper")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Reaper;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.p_LineofSight == True;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • > 0;
  • }
  • actions
  • {
  • Wait(1.500, Ignore Condition);
  • Press Button(Event Player, Button(Primary Fire));
  • Loop If Condition Is True;
  • }
  • }
  • rule("Start Facing")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.p_LineofSight == True;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • > 0;
  • }
  • actions
  • {
  • Start Facing(Event Player, Direction Towards(Event Player, Eye Position(First Of(Sorted Array(Filtered Array(Filtered Array(
  • All Living Players(Opposite Team Of(Team Of(Event Player))), Current Array Element.Invis == False), Is In Line of Sight(
  • Event Player, Current Array Element, Barriers Do Not Block LOS)), Distance Between(Event Player, Current Array Element))))
  • + Down + Down), 200, To World, Direction and Turn Rate);
  • }
  • }
  • rule("Stop Facing")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.p_LineofSight == True;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • <= 0;
  • }
  • actions
  • {
  • Stop Facing(Event Player);
  • }
  • }
  • rule("Bap Reload")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Ammo(Event Player, 0) < 1;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Reload));
  • }
  • }
  • rule("Damage - Troopers")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • If(Global.Normal == True);
  • Set Damage Dealt(Event Player, 8);
  • Else If(Global.Hard == True);
  • Set Damage Dealt(Event Player, 17);
  • Else If(Global.Expert == True);
  • Set Damage Dealt(Event Player, 25);
  • Else If(Global.Legendary == True);
  • Set Damage Dealt(Event Player, 42);
  • End;
  • }
  • }
  • rule("Score - Kill Trooper")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Hero Of(Victim) == Hero(Baptiste);
  • }
  • actions
  • {
  • Global.Score += 27;
  • }
  • }
  • rule("Damage - Assassin")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Set Damage Dealt(Event Player, 25);
  • }
  • }
  • rule("Shooting - Widow")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Firing Secondary(Event Player) == True;
  • Global.IntroOver1 == True;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • > 0;
  • }
  • actions
  • {
  • Wait(2, Restart When True);
  • Press Button(Event Player, Button(Primary Fire));
  • Loop If Condition Is True;
  • }
  • }
  • rule("Aiming Widow")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)))) <= 5;
  • Global.IntroOver1 == True;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • Start Throttle In Direction(Event Player, Direction Towards(Position Of(Event Player), Position Of(First Of(Sorted Array(
  • Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)),
  • Distance Between(Event Player, Current Array Element)))) + Direction From Angles(Total Time Elapsed * 1, 0) * 6), 1, To World,
  • Replace existing throttle, Direction and Magnitude);
  • }
  • }
  • rule("Aiming Widow")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Global.IntroOver1 == True;
  • Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)))) > 5;
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Button(Secondary Fire));
  • Stop Throttle In Direction(Event Player);
  • }
  • }
  • rule("Shooting - Widow")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Firing Secondary(Event Player) == False;
  • Global.IntroOver1 == True;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • > 0;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Start Holding Button(Event Player, Button(Primary Fire));
  • }
  • }
  • rule("Shooting - Widow")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Firing Secondary(Event Player) == False;
  • Global.IntroOver1 == True;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • > 0;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • }
  • }
  • rule("Sniper HP")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • If(Global.Normal == True);
  • Set Damage Dealt(Event Player, 33);
  • Set Max Health(Event Player, 150);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 300);
  • Else If(Global.Hard == True);
  • Set Damage Dealt(Event Player, 83);
  • Set Max Health(Event Player, 225);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 450);
  • Else If(Global.Expert == True);
  • Set Damage Dealt(Event Player, 125);
  • Set Max Health(Event Player, 300);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 600);
  • Else If(Global.Legendary == True);
  • Set Damage Dealt(Event Player, 167);
  • Set Max Health(Event Player, 400);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 800);
  • End;
  • }
  • }
  • rule("Modes")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.Normal = Workshop Setting Toggle(Custom String("Difficulty"), Custom String("Normal"), True, 0);
  • Global.Hard = Workshop Setting Toggle(Custom String("Difficulty"), Custom String("Hard"), False, 0);
  • Global.Expert = Workshop Setting Toggle(Custom String("Difficulty"), Custom String("Expert"), False, 0);
  • Global.Legendary = Workshop Setting Toggle(Custom String("Difficulty"), Custom String("Legendary"), False, 0);
  • }
  • }
  • rule("Assassin")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Global.IntroOver2 == True;
  • }
  • actions
  • {
  • Event Player.Assasindopositions = True;
  • }
  • }
  • rule("Force Pos")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.Assasindopositions == True;
  • Global.IntroOver2 == True;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Skip If(Is Using Ultimate(Event Player) == True, 1);
  • Press Button(Event Player, Button(Ultimate));
  • Start Forcing Player Position(Event Player, Random Value In Array(Event Player.AsssasinPositions), False);
  • Wait(1, Ignore Condition);
  • Start Forcing Player Position(Event Player, Random Value In Array(Event Player.AsssasinPositions), False);
  • Wait(1, Ignore Condition);
  • Stop Forcing Player Position(Event Player);
  • Wait(0.250, Ignore Condition);
  • Event Player.Assasindopositions = False;
  • }
  • }
  • rule("Melee to get Assassin off")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Has Status(Event Player, Knocked Down) == True;
  • Is Button Held(Event Player, Button(Melee)) == True;
  • Global.IntroOver2 == True;
  • }
  • actions
  • {
  • Clear Status(Event Player, Knocked Down);
  • Set Status(Sorted Array(Players On Hero(Hero(Genji), Team 1), Distance Between(Event Player, Current Array Element)), Null,
  • Stunned, 2);
  • Wait(2, Ignore Condition);
  • Sorted Array(Players On Hero(Hero(Genji), Team 1), Distance Between(Event Player, Current Array Element)).IsAttacking = False;
  • Sorted Array(Players On Hero(Hero(Genji), Team 1), Distance Between(Event Player, Current Array Element))
  • .Assasindopositions = True;
  • }
  • }
  • rule("Attack")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Global.IntroOver2 == True;
  • Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)))) <= 2;
  • }
  • actions
  • {
  • Damage(First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(Event Player,
  • Current Array Element))), Event Player, Global.Expert == True ? 100 : (Global.Legendary == True ? 150 : 50));
  • Stop Throttle In Direction(Event Player);
  • Set Status(Event Player, Null, Rooted, 9999);
  • Start Holding Button(Event Player, Button(Primary Fire));
  • Event Player.IsAttacking = True;
  • Set Status(First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(Event Player,
  • Current Array Element))), Null, Knocked Down, 9999);
  • }
  • }
  • rule("Attack")
  • {
  • event
  • {
  • Player Took Damage;
  • Team 2;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.Assasindopositions == False;
  • Event Player.IsAttacking == True;
  • Global.IntroOver2 == True;
  • }
  • actions
  • {
  • Wait(2, Ignore Condition);
  • Clear Status(Event Player, Rooted);
  • Set Status(Event Player, Null, Stunned, 1);
  • Clear Status(All Players(Team 1), Knocked Down);
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • Wait(1, Ignore Condition);
  • Event Player.IsAttacking = False;
  • Event Player.Assasindopositions = True;
  • }
  • }
  • rule("Attack")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.Assasindopositions == False;
  • Horizontal Speed Of(Event Player) < 1;
  • Is On Wall(Event Player) == False;
  • Event Player.IsAttacking == False;
  • Has Status(Event Player, Stunned) == True;
  • Global.IntroOver2 == True;
  • }
  • actions
  • {
  • Wait Until(Has Status(Event Player, Stunned) == False, 99999);
  • Wait(0.160, Ignore Condition);
  • Clear Status(Event Player, Rooted);
  • Set Status(Event Player, Null, Stunned, 3);
  • Clear Status(All Players(Team 1), Knocked Down);
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • Wait(3, Ignore Condition);
  • Event Player.IsAttacking = False;
  • Event Player.Assasindopositions = True;
  • }
  • }
  • rule("Stop Attack")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.Assasindopositions == False;
  • Event Player.IsAttacking == True;
  • Global.IntroOver2 == True;
  • Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)))) > 5;
  • }
  • actions
  • {
  • Clear Status(Event Player, Rooted);
  • Set Status(Event Player, Null, Stunned, 1);
  • Clear Status(All Players(Team 1), Knocked Down);
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • Wait(1, Ignore Condition);
  • Event Player.Assasindopositions = True;
  • Event Player.IsAttacking = False;
  • }
  • }
  • rule("Dead Geji")
  • {
  • event
  • {
  • Player Died;
  • Team 2;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Clear Status(Event Player, Rooted);
  • Set Status(Event Player, Null, Stunned, 1);
  • Clear Status(All Players(Team 1), Knocked Down);
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • }
  • }
  • rule("Genji")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Button(Jump));
  • }
  • }
  • rule("Cancel Hook")
  • {
  • event
  • {
  • Player Dealt Damage;
  • Team 1;
  • Roadhog;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • Array Contains(Array(Hero(Wrecking Ball), Hero(Reinhardt)), Hero Of(Victim)) == True;
  • }
  • actions
  • {
  • Cancel Primary Action(Event Player);
  • }
  • }
  • rule("Cancel Charge")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Reinhardt;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • Distance Between(Event Player, Players On Hero(Array Contains(Array(Hero(Wrecking Ball), Hero(Reinhardt)), Hero Of(
  • Closest Player To(Event Player, Opposite Team Of(Team Of(Event Player))))), Opposite Team Of(Team Of(Event Player)))) <= 2;
  • Number Of Heroes(Hero(Wrecking Ball), Team 1) > 0;
  • Number Of Heroes(Hero(Reinhardt), Team 1) > 0;
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Stunned, 0.100);
  • }
  • }
  • rule("Was Heavy Assault")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.Washeavyassault = True;
  • }
  • }
  • rule("Wrecking ball slam on entry")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Is Dummy Bot(Event Player) == True;
  • Global.IntroOver3 == True;
  • }
  • actions
  • {
  • Wait(0.500, Ignore Condition);
  • Press Button(Event Player, Button(Crouch));
  • }
  • }
  • rule("Wrecking ball slam on entry")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Is Dummy Bot(Event Player) == True;
  • Is Using Ability 1(Event Player) == True;
  • Global.IntroOver3 == True;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Ability 1));
  • Wait(0.250, Ignore Condition);
  • Loop If(Is Using Ability 1(Event Player) == True);
  • }
  • }
  • rule("Heavy Assault - Shooting")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.p_LineofSight == True;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • > 0;
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Button(Primary Fire));
  • }
  • }
  • rule("Heavy Assault - Shooting")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • <= 0;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • }
  • }
  • rule("Heavy Assault Charge")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Event Player.Washeavyassault == True;
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Wait(10, Ignore Condition);
  • Event Player.PreviousHP = Health(Event Player);
  • Event Player.Charge = True;
  • Loop;
  • }
  • }
  • rule("Heavy Assault Charge")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Event Player.Charge == True;
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Start Forcing Player To Be Hero(Event Player, Hero(Reinhardt));
  • Wait(0.250, Ignore Condition);
  • Set Player Health(Event Player, Event Player.PreviousHP);
  • Press Button(Event Player, Button(Ability 1));
  • Wait(1, Ignore Condition);
  • Event Player.Charging = True;
  • }
  • }
  • rule("Heavy Assualt Charge")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.Charging == True;
  • Is Using Ability 1(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.PreviousHP = Health(Event Player);
  • Event Player.Charging = False;
  • Event Player.Charge = False;
  • Wait(0.250, Ignore Condition);
  • Start Forcing Player To Be Hero(Event Player, Hero(Wrecking Ball));
  • Wait(0.250, Ignore Condition);
  • Set Player Health(Event Player, Event Player.PreviousHP);
  • Set Status(Event Player, Null, Stunned, 3);
  • }
  • }
  • rule("Revive")
  • {
  • event
  • {
  • Player Died;
  • Team 1;
  • All;
  • }
  • actions
  • {
  • Create Effect(All Players(Team 1), Ring, Color(Yellow), Position Of(Event Player), 3, Visible To Position and Radius);
  • Event Player.ReviveEffect = Last Created Entity;
  • Create In-World Text(All Players(Team 1), Custom String("REVIVE"), Position Of(Event Player), 1, Do Not Clip,
  • Visible To Position and String, Color(Yellow), Default Visibility);
  • Event Player.ReviveText = Last Text ID;
  • Event Player.CanBeRevived = True;
  • }
  • }
  • rule("Revive")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Distance Between(Event Player, First Of(Sorted Array(All Dead Players(Team Of(Event Player)), Distance Between(Event Player,
  • Current Array Element)))) <= 3;
  • Is Alive(Event Player) == True;
  • First Of(Sorted Array(All Dead Players(Team Of(Event Player)), Distance Between(Event Player, Current Array Element)))
  • .CanBeRevived == True;
  • }
  • actions
  • {
  • Big Message(First Of(Sorted Array(All Dead Players(Team Of(Event Player)), Distance Between(Event Player, Current Array Element))),
  • Custom String("Reviving"));
  • Small Message(Event Player, Custom String("Reviving..."));
  • Wait(3, Abort When False);
  • First Of(Sorted Array(All Dead Players(Team Of(Event Player)), Distance Between(Event Player, Current Array Element)))
  • .CanBeRevived = False;
  • Wait(0.250, Ignore Condition);
  • Destroy Effect(First Of(Sorted Array(All Dead Players(Team Of(Event Player)), Distance Between(Event Player,
  • Current Array Element))).ReviveEffect);
  • Destroy In-World Text(First Of(Sorted Array(All Dead Players(Team Of(Event Player)), Distance Between(Event Player,
  • Current Array Element))).ReviveText);
  • Destroy Progress Bar In-World Text(Event Player.ProgressBar);
  • Resurrect(First Of(Sorted Array(All Dead Players(Team Of(Event Player)), Distance Between(Event Player, Current Array Element))));
  • }
  • }
  • rule("Revive")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Destroy Effect(Event Player.ReviveEffect);
  • Destroy In-World Text(Event Player.ReviveText);
  • Destroy Progress Bar In-World Text(Event Player.ProgressBar);
  • }
  • }
  • rule("Revive")
  • {
  • event
  • {
  • Player Died;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Is In Air(Event Player) == True;
  • }
  • actions
  • {
  • Teleport(Event Player, Nearest Walkable Position(Event Player));
  • }
  • }
  • rule("Revive Timer")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Event Player.CanBeRevived == True;
  • }
  • actions
  • {
  • Event Player.ReviveTimer = 44;
  • Wait(0.250, Ignore Condition);
  • Chase Player Variable Over Time(Event Player, ReviveTimer, 0, 44, Destination and Duration);
  • Create Progress Bar In-World Text(All Players(All Teams), Event Player.ReviveTimer * 44 / 100, Null, Event Player, 2,
  • Clip Against Surfaces, Color(Red), Color(White), None, Default Visibility);
  • Create Progress Bar In-World Text(All Players(All Teams), Event Player.ReviveTimer * 44 / 100, Null, Event Player, 1,
  • Clip Against Surfaces, Color(Red), Color(White), Visible To Values and Color, Default Visibility);
  • Event Player.ProgressBar = Last Text ID;
  • Wait(44, Abort When False);
  • Abort If(Is Alive(Event Player) == True);
  • Event Player.CanBeRevived = False;
  • Destroy Effect(Event Player.ReviveEffect);
  • Destroy In-World Text(Event Player.ReviveText);
  • Create Effect(All Players(All Teams), Ring, Color(Red), Position Of(Event Player), 5, None);
  • Create In-World Text(All Players(All Teams), Custom String("DEAD"), Position Of(Event Player), 2, Do Not Clip, None, Color(Red),
  • Default Visibility);
  • Destroy Progress Bar In-World Text(Event Player.ProgressBar);
  • }
  • }
  • rule("Revive Timer")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Event Player.CanBeRevived == False;
  • }
  • actions
  • {
  • Stop Chasing Player Variable(Event Player, ReviveTimer);
  • }
  • }
  • rule("Enforcer HP")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Reaper;
  • }
  • actions
  • {
  • If(Global.Normal == True);
  • Set Damage Dealt(Event Player, 29);
  • Add Health Pool To Player(Event Player, Shields, 100, True, True);
  • Else If(Global.Hard == True);
  • Set Damage Dealt(Event Player, 71);
  • Add Health Pool To Player(Event Player, Shields, 100, True, True);
  • Else If(Global.Expert == True);
  • Set Damage Dealt(Event Player, 107);
  • Set Max Health(Event Player, 250);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 500);
  • Add Health Pool To Player(Event Player, Shields, 200, True, True);
  • Else If(Global.Legendary == True);
  • Set Damage Dealt(Event Player, 143);
  • Set Max Health(Event Player, 225);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 450);
  • Add Health Pool To Player(Event Player, Shields, 400, True, True);
  • End;
  • }
  • }
  • rule("Assassin HP")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Genji;
  • }
  • actions
  • {
  • If(Global.Normal == True);
  • Set Max Health(Event Player, 200);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 400);
  • Add Health Pool To Player(Event Player, Shields, 100, True, True);
  • Else If(Global.Hard == True);
  • Set Max Health(Event Player, 400);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 800);
  • Add Health Pool To Player(Event Player, Shields, 100, True, True);
  • Else If(Global.Expert == True);
  • Set Max Health(Event Player, 500);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 1000);
  • Add Health Pool To Player(Event Player, Shields, 100, True, True);
  • Else If(Global.Legendary == True);
  • Set Max Health(Event Player, 400);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 800);
  • Add Health Pool To Player(Event Player, Shields, 400, True, True);
  • End;
  • }
  • }
  • rule("Heavy Assault HP")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Wrecking Ball;
  • }
  • actions
  • {
  • If(Global.Normal == True);
  • Set Damage Dealt(Event Player, 120);
  • Set Max Health(Event Player, 1000);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 6000);
  • Else If(Global.Hard == True);
  • Set Damage Dealt(Event Player, 120);
  • Set Max Health(Event Player, 1166);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 7000);
  • Else If(Global.Expert == True);
  • Set Damage Dealt(Event Player, 180);
  • Set Max Health(Event Player, 1500);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 9000);
  • Else If(Global.Legendary == True);
  • Set Damage Dealt(Event Player, 240);
  • Set Max Health(Event Player, 1833);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 11000);
  • End;
  • }
  • }
  • rule("Damage - Heavy Assault Charge")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Reinhardt;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • If(Global.Normal == True);
  • Set Damage Dealt(Event Player, 100);
  • Else If(Global.Hard == True);
  • Set Damage Dealt(Event Player, 100);
  • Else If(Global.Expert == True);
  • Set Damage Dealt(Event Player, 150);
  • Else If(Global.Legendary == True);
  • Set Damage Dealt(Event Player, 200);
  • End;
  • }
  • }
  • rule("Score - Kill Trooper")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Hero Of(Victim) == Hero(Baptiste);
  • }
  • actions
  • {
  • Global.Score += 27;
  • }
  • }
  • rule("Score - Kill Enforcer")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Hero Of(Victim) == Hero(Reaper);
  • }
  • actions
  • {
  • Global.Score += 81;
  • }
  • }
  • rule("Score - Kill Sniper")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Hero Of(Victim) == Hero(Widowmaker);
  • }
  • actions
  • {
  • Global.Score += 216;
  • }
  • }
  • rule("Score - Kill Assassin")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Hero Of(Victim) == Hero(Genji);
  • }
  • actions
  • {
  • Global.Score += 216;
  • }
  • }
  • rule("Score - Kill Heavy Assault")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Hero Of(Victim) == Hero(Wrecking Ball);
  • }
  • actions
  • {
  • Global.Score += 675;
  • }
  • }
  • rule("Score - Kill Heavy Assault")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Hero Of(Victim) == Hero(Reinhardt);
  • }
  • actions
  • {
  • Global.Score += 675;
  • }
  • }
  • rule("Heavy Assault - Melee")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Wrecking Ball;
  • }
  • 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;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Melee));
  • }
  • }
  • rule("Heavy Assault - Melee")
  • {
  • event
  • {
  • Player Dealt Damage;
  • Team 2;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Meleeing(Event Player) == True;
  • }
  • actions
  • {
  • Apply Impulse(First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(Event Player,
  • Current Array Element))), Direction Towards(First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element))), Event Player), -50, To World, Cancel Contrary Motion);
  • }
  • }
  • rule("Wrecking ball takes 10% knockback")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Set Knockback Received(Event Player, 10);
  • }
  • }
  • rule("Reinhardt takes 10% knockback")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Reinhardt;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Set Knockback Received(Event Player, 10);
  • }
  • }
  • rule("Preload Reinhardt")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Preload Hero(Event Player, Hero(Reinhardt));
  • }
  • }
  • rule("Preload Wrecking ball")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Reinhardt;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Preload Hero(Event Player, Hero(Wrecking Ball));
  • }
  • }
  • rule("Invis")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Sombra;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.Invis = True;
  • }
  • }
  • rule("Invis")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Sombra;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.Invis = False;
  • }
  • }
  • rule("Line of Sight")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Hero Of(Event Player) != Hero(Widowmaker);
  • Hero Of(Event Player) != Hero(Genji);
  • Hero Of(Event Player) != Hero(Wrecking Ball);
  • }
  • actions
  • {
  • Event Player.p_LineofSight = True;
  • }
  • }
  • rule("Line of Sight - Sniper")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Global.IntroOver1 == True;
  • }
  • actions
  • {
  • Event Player.p_LineofSight = True;
  • }
  • }
  • rule("Line of Sight - Assassin")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Global.IntroOver2 == True;
  • }
  • actions
  • {
  • Event Player.p_LineofSight = True;
  • }
  • }
  • rule("Line of Sight - Heavy Assault")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Global.IntroOver3 == True;
  • }
  • actions
  • {
  • Event Player.p_LineofSight = True;
  • }
  • }
  • rule("First Area - Breach")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.AssemblingHeroes == False;
  • }
  • actions
  • {
  • Global.Objective = Custom String("PLACE BREACHING DEVICE");
  • Big Message(All Players(Team 1), Custom String("PLACE BREACHING DEVICE"));
  • Create Effect(All Players(Team 1), Sphere, Color(Blue), Vector(68.271, 1.206, -74.119), 0.500, Visible To Position and Radius);
  • Global.BreachEffect = Last Created Entity;
  • Create In-World Text(All Players(Team 1), Custom String(" {0}\r\nBREACH", Ability Icon String(Hero(Pharah), Button(Ability 2))),
  • Vector(68.271, 1.206, -74.119), 1, Do Not Clip, Visible To Position and String, Color(Blue), Default Visibility);
  • }
  • }
  • rule("Start Breach")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Distance Between(Event Player, Vector(68.271, 1.206, -74.119)) <= 2;
  • Global.BreachStarted == False;
  • }
  • actions
  • {
  • Small Message(Event Player, Custom String("Press {0} to start breach", Input Binding String(Button(Interact))));
  • }
  • }
  • rule("Start Breach - Interact")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Distance Between(Event Player, Vector(68.271, 1.206, -74.119)) <= 2;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Global.BreachStarted == False;
  • }
  • actions
  • {
  • Global.BreachStarted = True;
  • }
  • }
  • rule("Breach")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.BreachStarted == True;
  • }
  • actions
  • {
  • Destroy Effect(Global.BreachEffect);
  • Destroy All In-World Text;
  • Wait(0.250, Ignore Condition);
  • Create Effect(All Players(Team 1), Sphere, Color(Red), Vector(68.271, 1.206, -74.119), 0.500, Visible To Position and Radius);
  • Global.BreachEffect = Last Created Entity;
  • Big Message(All Players(Team 1), Custom String("OBJECTIVE COMPLETE"));
  • Global.Objective = Custom String("SURVIVE UNTIL THE BREACH");
  • Big Message(All Players(Team 1), Custom String("SURVIVE UNTIL THE BREACH"));
  • }
  • }
  • rule("Breach Duration")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.BreachStarted == True;
  • Global.Headtoextractionpoint == False;
  • Global.BreachRound == 9;
  • Number Of Living Players(Team 2) == 0;
  • }
  • actions
  • {
  • Wait(2, Ignore Condition);
  • Destroy Effect(Global.BreachEffect);
  • Wait(0.250, Ignore Condition);
  • Play Effect(All Players(Team 1), Bad Explosion, Color(Red), Vector(68.834, 1.535, -74.123), 5);
  • Play Effect(All Players(Team 1), Explosion Sound, Color(White), Vector(68.834, 1.535, -74.123), 200);
  • Big Message(All Players(Team 1), Custom String("Head to the Extraction point"));
  • Global.Objective = Custom String("Head to the extraction point");
  • Create HUD Text(All Players(Team 1), Custom String("{0}/{1}", Global.NumberOfPlayersAtPoint, Number Of Players(Team 1)), Null,
  • Null, Top, 0, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
  • Global.Objectivetext = Last Text ID;
  • Global.Headtoextractionpoint = True;
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Red), Vector(Empty Array, Empty Array, Empty Array), 5);
  • Apply Impulse(Players Within Radius(Vector(68.271, 1.206, -74.119), 5, Team 1, Off), Direction Towards(Players Within Radius(
  • Vector(68.271, 1.206, -74.119), 5, Team 1, Off), Vector(68.271, 1.206, -74.119)), -10, To World, Cancel Contrary Motion);
  • Wait(0.250, Ignore Condition);
  • Create Effect(All Players(Team 1), Ring, Color(Sky Blue), Vector(68.562, 1.100, -74.271), 1, Visible To Position and Radius);
  • }
  • }
  • rule("Teleport after breach")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Distance Between(Event Player, Vector(68.562, 1.100, -74.271)) <= 2;
  • Global.Headtoextractionpoint == True;
  • }
  • actions
  • {
  • Teleport(Event Player, Vector(-82.849, 3.450, -100.550));
  • Set Facing(Event Player, Direction Towards(Event Player, Vector(-80.846, 3.299, -100.507)), To World);
  • }
  • }
  • rule("Troopers left side")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.BreachStarted == True;
  • }
  • actions
  • {
  • Wait(5, Ignore Condition);
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(72.668, 1.300, -58.266), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(72.668, 1.300, -58.266), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(72.668, 1.300, -58.266), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(72.668, 1.300, -58.266), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(72.668, 1.300, -58.266), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(72.668, 1.300, -58.266), Vector(Empty Array, Empty Array, Empty Array));
  • Global.BreachRound = 1;
  • }
  • }
  • rule("Insta Dead")
  • {
  • event
  • {
  • Player Died;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Destroy Dummy Bot(Team Of(Event Player), Slot Of(Event Player));
  • }
  • }
  • rule("Right Side with enforcer")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Number Of Living Players(Team 2) == 0;
  • Global.BreachRound == 1;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(59.743, 4.628, -82.902), Vector(0, 0, 0));
  • Wait(2, Ignore Condition);
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(59.417, 4.846, -83.135), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(59.417, 4.846, -83.135), Vector(0, 0, 0));
  • Global.BreachRound = 2;
  • }
  • }
  • rule("Left side 4")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Number Of Living Players(Team 2) == 0;
  • Global.BreachRound == 2;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(71.935, 1.300, -60.627), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(71.935, 1.300, -60.627), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(71.935, 1.300, -60.627), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(71.935, 1.300, -60.627), Vector(0, 0, 0));
  • Global.BreachRound = 3;
  • }
  • }
  • rule("Right side 4")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Number Of Living Players(Team 2) == 0;
  • Global.BreachRound == 3;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(59.228, 4.648, -83.023), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(59.228, 4.648, -83.023), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(59.228, 4.648, -83.023), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(59.228, 4.648, -83.023), Vector(0, 0, 0));
  • Global.BreachRound = 4;
  • }
  • }
  • rule("Right side 4 - 2")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Number Of Living Players(Team 2) == 0;
  • Global.BreachRound == 4;
  • }
  • actions
  • {
  • Wait(5, Ignore Condition);
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(59.228, 4.648, -83.023), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(59.228, 4.648, -83.023), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(59.228, 4.648, -83.023), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(59.228, 4.648, -83.023), Vector(0, 0, 0));
  • Global.BreachRound = 5;
  • }
  • }
  • rule("Left side 4 + 1 enforcer")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Number Of Living Players(Team 2) == 0;
  • Global.BreachRound == 5;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(71.656, 1.450, -60.490), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(71.656, 1.450, -60.490), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(71.656, 1.450, -60.490), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(71.656, 1.450, -60.490), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(71.656, 1.450, -60.490), Vector(0, 0, 0));
  • Global.BreachRound = 6;
  • }
  • }
  • rule("Right + left side")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Number Of Living Players(Team 2) == 0;
  • Global.BreachRound == 6;
  • }
  • actions
  • {
  • Wait(5, Ignore Condition);
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(59.228, 4.648, -83.023), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(59.228, 4.648, -83.023), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(59.228, 4.648, -83.023), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(59.228, 4.648, -83.023), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(72.859, 1.450, -59.352), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(72.859, 1.450, -59.352), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(72.859, 1.450, -59.352), Vector(0, 0, 0));
  • Global.BreachRound = 7;
  • }
  • }
  • rule("SmokeBomb (replacement for ziplines)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Number Of Living Players(Team 2) == 0;
  • Global.BreachRound == 7;
  • }
  • actions
  • {
  • Wait(3, Ignore Condition);
  • Create Effect(All Players(All Teams), Cloud, Color(White), Vector(75.625, 1.450, -76.141), 5, Visible To Position and Radius);
  • Global.SmokeBomb = Last Created Entity;
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(75.625, 1.450, -76.141), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(75.625, 1.450, -76.141), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(75.625, 1.450, -76.141), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(75.625, 1.450, -76.141), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(75.625, 1.450, -76.141), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(75.625, 1.450, -76.141), Vector(0, 0, 0));
  • Global.BreachRound = 8;
  • Wait(2, Ignore Condition);
  • Destroy Effect(Global.SmokeBomb);
  • }
  • }
  • rule("Right side 3")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Number Of Living Players(Team 2) == 0;
  • Global.BreachRound == 8;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(60.108, 4.425, -82.356), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(60.108, 4.425, -82.356), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(60.108, 4.425, -82.356), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(60.108, 4.425, -82.356), Vector(0, 0, 0));
  • Global.BreachRound = 9;
  • }
  • }
  • rule("First Area Head to Extraction Point")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Headtoextractionpoint == True;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(-73.584, 3.450, -110.012), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(-73.584, 3.450, -110.012), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(-40.827, 3.450, -111.256), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(-40.827, 3.450, -111.256), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(-55.479, 3.356, -90.375), Vector(0, 0, 0));
  • Global.SniperIntro = True;
  • }
  • }
  • rule("Sniper Intro")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.SniperIntro == True;
  • Number Of Players(Team 2) == 0;
  • }
  • actions
  • {
  • Wait(1, Ignore Condition);
  • Set Slow Motion(50);
  • Wait(0.500, Ignore Condition);
  • Set Slow Motion(100);
  • Start Camera(All Players(Team 1), Vector(-39.789, 2.595, -99.865), Eye Position(Global.Sniper), 0);
  • Wait(0.500, Ignore Condition);
  • Create Dummy Bot(Hero(Widowmaker), Team 2, -1, Vector(-36.110, 2.055, -100.098), Vector(0, 0, 0));
  • Global.Sniper = Last Created Entity;
  • Wait(0.250, Ignore Condition);
  • Set Status(Global.Sniper, Null, Phased Out, 9999);
  • Set Facing(Global.Sniper, Direction Towards(Global.Sniper, Vector(-41.629, 2.724, -100.478)), To World);
  • Wait(1, Ignore Condition);
  • Start Holding Button(Global.Sniper, Button(Secondary Fire));
  • Wait(0.250, Ignore Condition);
  • Start Camera(All Players(Team 1), Evaluate Once(Facing Direction Of(Global.Sniper)) + Evaluate Once(Eye Position(Global.Sniper)),
  • Eye Position(Players On Hero(Hero(Widowmaker), Team 2)), 2);
  • Wait(2, Ignore Condition);
  • Start Facing(Global.Sniper, Direction Towards(Global.Sniper, Vector(-36.131, 2.998, -82.805)), 500, To World,
  • Direction and Turn Rate);
  • Wait(0.500, Ignore Condition);
  • Press Button(Global.Sniper, Button(Ability 1));
  • Start Camera(All Players(Team 1), Vector(-39.789, 2.595, -99.865), Eye Position(Global.Sniper), 2);
  • Wait(1, Ignore Condition);
  • Global.IntroOver1 = True;
  • Global.SniperIntro = False;
  • Stop Camera(All Players(Team 1));
  • Clear Status(Global.Sniper, Phased Out);
  • }
  • }
  • rule("Spawn after intro")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.IntroOver1 == True;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(-25.326, 2.205, -100.649), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(-25.326, 2.205, -100.649), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(-25.326, 2.205, -100.649), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(-37.596, -0.795, -63.943), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(-37.596, -0.795, -63.943), Vector(0, 0, 0));
  • Global.BoatRound = 1;
  • }
  • }
  • rule("Boat Round 1")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.BoatRound == 1;
  • Number Of Living Players(Team 2) == 0;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(-15.489, -0.795, -29.541), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(-15.489, -0.795, -29.541), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(-15.489, -0.795, -29.541), Vector(0, 0, 0));
  • Wait(3, Ignore Condition);
  • Create Effect(All Players(All Teams), Cloud, Color(White), Vector(-35.721, -0.312, -49.777), 10, Visible To Position and Radius);
  • Global.SmokeBomb = Last Created Entity;
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(-35.335, -0.488, -46.887), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(-35.335, -0.488, -46.887), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(-35.335, -0.488, -46.887), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(-37.038, 0.382, -54.625), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(-37.038, 0.382, -54.625), Vector(0, 0, 0));
  • Wait(2, Ignore Condition);
  • Destroy Effect(Global.SmokeBomb);
  • Global.BoatRound = 2;
  • }
  • }
  • rule("Boat Round 2")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.BoatRound == 2;
  • Number Of Living Players(Team 2) == 0;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Widowmaker), Team 2, -1, Vector(-18.687, 17.368, -38.554), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(-24.554, 17.432, -39.258), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(-24.554, 17.432, -39.258), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(-24.554, 17.432, -39.258), Vector(0, 0, 0));
  • Wait(3, Ignore Condition);
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(-33.696, 13.247, -53.151), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(-33.696, 13.247, -53.151), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(-23.297, 10.918, -67.053), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(-23.297, 10.918, -67.053), Vector(0, 0, 0));
  • Global.BoatRound = 3;
  • }
  • }
  • rule("Boat Round 3")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.BoatRound == 3;
  • Number Of Living Players(Team 2) == 0;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(-7.160, 0.371, -52.316), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(-7.160, 0.371, -52.316), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(-7.160, 0.371, -52.316), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(-7.160, 0.371, -52.316), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(-7.160, 0.371, -52.316), Vector(0, 0, 0));
  • Global.BoatRound = 4;
  • }
  • }
  • rule("Middle Area Round 1")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.BoatRound == 4;
  • Distance Between(Vector(-6.841, 1, -48.771), First Of(Sorted Array(All Players(Team 1), Distance Between(Vector(-6.841, 1,
  • -48.771), Current Array Element)))) <= 5;
  • }
  • actions
  • {
  • Wait(1.500, Ignore Condition);
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(0.621, 1.001, -53.219), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(0.426, 7, -54.528), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(0.235, 7, -69.348), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(0.048, 0.205, -70.810), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(3.319, 0.205, -61.948), Vector(0, 0, 0));
  • Global.MiddleAreaRound = 1;
  • Global.BoatRound = 0;
  • }
  • }
  • rule("Middle Area Round 2")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.MiddleAreaRound == 1;
  • Number Of Living Players(Team 2) == 4;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(43.080, 0.861, -68.547), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(43.080, 0.861, -68.547), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(43.080, 0.861, -68.547), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(43.080, 0.861, -68.547), Vector(0, 0, 0));
  • Global.MiddleAreaRound = 2;
  • }
  • }
  • rule("Middle Area Round 3")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.MiddleAreaRound == 2;
  • Number Of Living Players(Team 2) == 1;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Widowmaker), Team 2, -1, Vector(35.169, 7, -70.244), Vector(0, 0, 0));
  • Wait(3, Ignore Condition);
  • Create Dummy Bot(Hero(Widowmaker), Team 2, -1, Vector(34.692, 7, -77.730), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(24.761, 16.712, -71.221), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(24.761, 16.712, -71.221), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(24.761, 16.712, -71.221), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(24.761, 16.712, -71.221), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(24.761, 16.712, -71.221), Vector(0, 0, 0));
  • Global.MiddleAreaRound = 3;
  • }
  • }
  • rule("Middle Area Round 3")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.MiddleAreaRound == 3;
  • Number Of Living Players(Team 2) == 5;
  • }
  • actions
  • {
  • Wait(3, Ignore Condition);
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(32.449, 0.205, -62.456), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(32.449, 0.205, -62.456), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(32.449, 0.205, -62.456), Vector(0, 0, 0));
  • Global.MiddleAreaRound = 4;
  • }
  • }
  • rule("Assassin Intro")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.MiddleAreaRound == 4;
  • Number Of Living Players(Team 2) == 0;
  • }
  • actions
  • {
  • Wait(1, Ignore Condition);
  • Set Slow Motion(50);
  • Wait(0.500, Ignore Condition);
  • Set Slow Motion(100);
  • Create Dummy Bot(Hero(Genji), Team 2, -1, Vector(-36.110, 2.055, -100.098), Vector(0, 0, 0));
  • Global.Assassin = Last Created Entity;
  • Wait(0.250, Ignore Condition);
  • Start Camera(All Players(Team 1), Vector(57.001, 4.176, -72.333), Eye Position(Global.Assassin), 100);
  • Start Forcing Player Position(Global.Assassin, Vector(51.566, 10.049, -32.705), True);
  • Start Facing(Global.Assassin, Direction Towards(Global.Assassin, Vector(57.001, 4.176, -72.333)), 500, To World,
  • Direction and Turn Rate);
  • Set Status(Global.Assassin, Null, Phased Out, 9999);
  • Wait(1, Ignore Condition);
  • Start Forcing Player Position(Global.Assassin, Vector(46.204, 6.750, -42.253), True);
  • Wait(0.500, Ignore Condition);
  • Start Forcing Player Position(Global.Assassin, Vector(42.555, 12.599, -59.818), True);
  • Wait(0.500, Ignore Condition);
  • Start Forcing Player Position(Global.Assassin, Vector(57.866, 4.115, -72.253), True);
  • Wait(3, Ignore Condition);
  • Global.Assassin.AsssasinPositions = Array(Vector(53.810, 9.508, -32.705), Vector(46.074, 6.904, -42.203), Vector(42.555, 15.410,
  • -60.036), Vector(57.798, 4.157, -72.504), Vector(49.306, 5.614, -74.256), Vector(67.943, 6.073, -63.538));
  • Global.IntroOver2 = True;
  • Global.MiddleAreaRound = 5;
  • Stop Camera(All Players(Team 1));
  • Clear Status(Global.Assassin, Phased Out);
  • }
  • }
  • rule("Middle Area Round 4")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.MiddleAreaRound == 5;
  • }
  • actions
  • {
  • Wait(2, Ignore Condition);
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(51.854, 10.314, -65.891), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(51.854, 10.314, -65.891), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(51.854, 10.314, -65.891), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(51.854, 10.314, -65.891), Vector(0, 0, 0));
  • Global.MiddleAreaRound = 6;
  • }
  • }
  • rule("Middle Area Round 5")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.MiddleAreaRound == 6;
  • Number Of Living Players(Team 2) == 0;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(62.180, 0.417, -73.826), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(67.986, -0.562, -35.125), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(47.173, 1.205, -36.155), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(41.868, 0.304, -49.535), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(76.182, 0.205, -42.189), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(42.318, 0.205, -50.972), Vector(0, 0, 0));
  • Global.MiddleAreaRound = 7;
  • }
  • }
  • rule("Middle Area Round 6")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.MiddleAreaRound == 7;
  • Number Of Living Players(Team 2) == 0;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(97.688, -0.795, -25.295), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(97.688, -0.795, -25.295), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(97.688, -0.795, -25.295), Vector(0, 0, 0));
  • Global.MiddleAreaRound = 8;
  • }
  • }
  • rule("Heavy Assault Intro")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.MiddleAreaRound == 8;
  • Number Of Living Players(Team 2) == 0;
  • }
  • actions
  • {
  • Wait(1, Ignore Condition);
  • Set Slow Motion(50);
  • Wait(0.500, Ignore Condition);
  • Set Slow Motion(100);
  • Start Camera(All Players(Team 1), Vector(72.779, 3.458, -22.976), Vector(108.198, 10.196, -20.544), 2);
  • Wait(1, Ignore Condition);
  • Create Dummy Bot(Hero(Wrecking Ball), Team 2, -1, Vector(96.341, 14.772, -20.631), Vector(0, 0, 0));
  • Global.Heavy = Last Created Entity;
  • Wait(0.500, Ignore Condition);
  • Set Facing(Global.Heavy, Direction Towards(Global.Heavy, Closest Player To(Global.Heavy, Opposite Team Of(Team Of(Global.Heavy)))),
  • To World);
  • Press Button(Global.Heavy, Button(Crouch));
  • Set Status(Global.Heavy, Null, Phased Out, 9999);
  • Start Camera(All Players(Team 1), Vector(77.628, -0.145, -23.085), Vector(108.012, 5.646, -20.709), 2);
  • Wait Until(Is On Ground(Global.Heavy) == True, 99999);
  • Wait(1, Ignore Condition);
  • Press Button(Global.Heavy, Button(Ability 1));
  • Start Camera(All Players(Team 1), Vector(93.903, -0.392, -18.243), Eye Position(Global.Heavy), 0);
  • Wait(3, Ignore Condition);
  • Global.IntroOver3 = True;
  • Global.MiddleAreaRound = 9;
  • Stop Camera(All Players(Team 1));
  • Clear Status(Global.Heavy, Phased Out);
  • }
  • }
  • rule("Middle Area Round 7")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.MiddleAreaRound == 9;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(96.477, -0.795, -17.094), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(96.477, -0.795, -17.094), Vector(0, 0, 0));
  • Global.MiddleAreaRound = 10;
  • }
  • }
  • disabled rule("Heavy Assault Random Spawns")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Alive(Players On Hero(Hero(Wrecking Ball), Team 2)) == True;
  • Global.IntroOver3 == True;
  • }
  • actions
  • {
  • Global.RandomSpawns = Array(Vector(38.102, 6.205, -79.015), Vector(77.925, -0.795, -31.937), Vector(53.854, 0.361, -30.707),
  • Vector(62.921, 0.205, -72.901), Vector(39.375, 0.205, -56.880));
  • While(True);
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Random Value In Array(Filtered Array(Global.RandomSpawns, Is In Line of Sight(
  • All Players(Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Random Value In Array(Filtered Array(Global.RandomSpawns, Is In Line of Sight(
  • All Players(Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Random Value In Array(Filtered Array(Global.RandomSpawns, Is In Line of Sight(
  • All Players(Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Wait(10, Abort When False);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Middle Area Round 8")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.MiddleAreaRound == 10;
  • Number Of Living Players(Team 2) == 0;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(112.194, -0.795, -20.375), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(112.194, -0.795, -20.375), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(112.194, -0.795, -20.375), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(112.194, -0.795, -20.375), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(112.194, -0.795, -20.375), Vector(0, 0, 0));
  • Global.MiddleAreaRound = 11;
  • }
  • }
  • rule("Middle Area Round 9")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.MiddleAreaRound == 11;
  • Number Of Living Players(Team 2) == 0;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(112.194, -0.795, -20.375), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(112.194, -0.795, -20.375), Vector(0, 0, 0));
  • Global.MiddleAreaRound = 12;
  • }
  • }
  • rule("Middle Area Round 10")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.MiddleAreaRound == 12;
  • Number Of Living Players(Team 2) == 0;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(142.545, -0.785, -13.980), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(144.276, -0.785, -29.239), Vector(0, 0, 0));
  • Global.MiddleAreaRound = 13;
  • }
  • }
  • rule("Middle Area Round 11")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.MiddleAreaRound == 13;
  • Number Of Living Players(Team 2) == 0;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(143.660, 25.874, -22.028), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(143.660, 25.874, -22.028), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(143.660, 25.874, -22.028), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(143.660, 25.874, -22.028), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(162.143, -0.785, -20.508), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(162.143, -0.785, -20.508), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(162.143, -0.785, -20.508), Vector(0, 0, 0));
  • Wait(3, Ignore Condition);
  • Create Dummy Bot(Hero(Genji), Team 2, -1, Vector(148.999, 10.695, -33.285), Vector(0, 0, 0));
  • Global.Assassin = Last Created Entity;
  • Wait(0.250, Ignore Condition);
  • Global.Assassin.AsssasinPositions = Array(Vector(148.999, 10.695, -33.285), Vector(132.111, 12.653, -21.307), Vector(148.289,
  • 13.067, -9.726), Vector(156.048, 13.793, -21.275));
  • Global.MiddleAreaRound = 14;
  • }
  • }
  • rule("Move to next Area")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.MiddleAreaRound == 14;
  • Number Of Living Players(Team 2) == 0;
  • }
  • actions
  • {
  • Big Message(All Players(All Teams), Custom String("Objective Complete"));
  • Destroy HUD Text(Global.Objectivetext);
  • Wait(2, Ignore Condition);
  • Small Message(All Players(All Teams), Custom String(
  • "BlackWatch pilot: Turns out the extraction area has been blocked off by Talon..."));
  • Wait(3, Ignore Condition);
  • Small Message(All Players(All Teams), Custom String(
  • "BlackWatch pilot: We need to meet somewhere else, I've put where the new extraction area is on your HUD"));
  • Wait(3, Ignore Condition);
  • Big Message(All Players(All Teams), Custom String("Get to the new extraction area"));
  • Global.Objective = Custom String("Get to the new extraction area");
  • Create HUD Text(All Players(Team 1), Custom String("{0}/{1}", Global.NumberOfPlayersAtPoint, Number Of Players(Team 1)), Null,
  • Null, Top, 0, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
  • Global.Objectivetext = Last Text ID;
  • Global.MiddleAreaRound = 15;
  • Create In-World Text(All Players(All Teams), Custom String(" {0}\r\nGET TO NEW EXTRACTION AREA",
  • Ability Icon String(Hero(Pharah), Button(Ability 2))), Vector(58.650, 1.327, -55.664), 2, Clip Against Surfaces,
  • Visible To Position and String, Color(White), Default Visibility);
  • }
  • }
  • rule("Number of Players at extract point")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Distance Between(Event Player, Vector(142.770, -0.295, -20.427)) <= 20;
  • Global.MiddleAreaRound == 14;
  • Distance Between(Event Player, Vector(58.650, 1.327, -55.664)) <= 20;
  • Global.MiddleAreaRound == 15;
  • }
  • actions
  • {
  • Global.NumberOfPlayersAtPoint += 1;
  • }
  • }
  • rule("Number of Players at extract point")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.NumberOfPlayersAtPoint >= Number Of Players(Team 1);
  • Global.MiddleAreaRound == 14;
  • Global.MiddleAreaRound == 15;
  • }
  • actions
  • {
  • Destroy HUD Text(Global.Objectivetext);
  • Global.Objective = Custom String("SURVIVE UNTIL EXTRACTION");
  • Big Message(All Players(Team 1), Custom String("OBJECTIVE COMPLETE"));
  • Big Message(All Players(Team 1), Custom String("SURVIVE UNTIL EXTRACTION"));
  • Global.Survive = True;
  • Global.MiddleAreaRound = 15;
  • Global.SetSpawns = Array(Vector(144.019, -0.785, -31.598), Vector(159.407, -0.785, -20.527), Vector(144.245, -0.785, -10.981),
  • Vector(123.949, -0.785, -15.104), Vector(123.340, -0.785, -27.639));
  • Global.MiddleAreaRound = 16;
  • Wait(0.250, Ignore Condition);
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(All Players(
  • Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(
  • All Players(Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Global.SetSpawns = Array(Vector(41.282, 1.255, -35.154), Vector(38.780, 0.205, -56.192), Vector(37.935, 0.205, -79.053), Vector(
  • 61.398, 0.205, -67.357), Vector(48.024, 5.195, -85.190), Vector(54.401, -0.795, -91.664), Vector(61.607, -0.795, -32.560),
  • Vector(75.343, 0.205, -43.057), Vector(77.197, 0.055, -49.857));
  • }
  • }
  • rule("Survive Positions")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Global.Survive == True;
  • }
  • actions
  • {
  • Event Player.AsssasinPositions = Array(Vector(148.999, 10.695, -33.285), Vector(132.111, 12.653, -21.307), Vector(148.289, 13.067,
  • -9.726), Vector(156.048, 13.793, -21.275));
  • Event Player.AsssasinPositions = Array(Vector(53.810, 9.508, -32.705), Vector(46.074, 6.904, -42.203), Vector(42.555, 15.410,
  • -60.036), Vector(57.798, 4.157, -72.504), Vector(49.306, 5.614, -74.256), Vector(67.943, 6.073, -63.538));
  • }
  • }
  • rule("Extract round 1")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Survive == True;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(142.725, 22.271, -21.548), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(142.725, 22.271, -21.548), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(142.725, 22.271, -21.548), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(142.725, 22.271, -21.548), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(58.668, 18.309, -52.006), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(58.668, 18.309, -52.006), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(58.668, 18.309, -52.006), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(58.668, 18.309, -52.006), Vector(0, 0, 0));
  • Global.Extractround = 1;
  • }
  • }
  • rule("Extract round 2")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Extractround == 1;
  • Number Of Living Players(Team 2) == 0;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(All Players(
  • Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(
  • All Players(Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(
  • All Players(Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(All Players(
  • Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(
  • All Players(Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(
  • All Players(Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(
  • All Players(Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(
  • All Players(Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Global.Extractround = 2;
  • }
  • }
  • rule("Extract round 3")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Extractround == 2;
  • Number Of Living Players(Team 2) == 0;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(
  • All Players(Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(
  • All Players(Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(
  • All Players(Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Wait(1, Ignore Condition);
  • Create Dummy Bot(Hero(Widowmaker), Team 2, -1, Vector(143.997, 9.150, -20.954), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Widowmaker), Team 2, -1, Vector(43.732, 6.205, -54.772), Vector(0, 0, 0));
  • Global.Extractround = 3;
  • }
  • }
  • rule("Random Survive Spawns")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Extractround >= 3;
  • Global.Survive == True;
  • Global.Extractround < 8;
  • }
  • actions
  • {
  • Global.SpawnEnforcer = Random Integer(0, 1);
  • Wait(0.250, Ignore Condition);
  • Abort If(Global.Extractround == 8);
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(
  • All Players(Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(
  • All Players(Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(
  • All Players(Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Skip If(Global.SpawnEnforcer == 0, 1);
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(All Players(
  • Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Wait(Random Integer(20, 30), Ignore Condition);
  • Loop If(Global.Survive == True);
  • }
  • }
  • rule("Extract round 4")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Extractround == 3;
  • Number Of Living Players(Team 2) == 0;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Genji), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(All Players(
  • Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Global.Extractround = 4;
  • }
  • }
  • rule("Extract round 5")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Extractround == 4;
  • Number Of Living Players(Team 2) == 0;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Widowmaker), Team 2, -1, Vector(143.997, 9.150, -20.954), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Widowmaker), Team 2, -1, Vector(43.732, 6.205, -54.772), Vector(0, 0, 0));
  • Wait(3, Ignore Condition);
  • Create Dummy Bot(Hero(Widowmaker), Team 2, -1, Vector(143.997, 9.150, -20.954), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Widowmaker), Team 2, -1, Vector(64.108, 5.205, -40.218), Vector(0, 0, 0));
  • Wait(5, Ignore Condition);
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(143.521, 26.334, -21.596), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(143.521, 26.334, -21.596), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(143.521, 26.334, -21.596), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(143.521, 26.334, -21.596), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(38.467, 0.205, -55.190), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(38.467, 0.205, -55.190), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(38.467, 0.205, -55.190), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(38.467, 0.205, -55.190), Vector(0, 0, 0));
  • Global.Extractround = 5;
  • }
  • }
  • rule("Extract round 6")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Extractround == 5;
  • Number Of Living Players(Team 2) == 0;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(143.521, 26.334, -21.596), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(143.521, 26.334, -21.596), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(143.521, 26.334, -21.596), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(53.787, 19.029, -63.892), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Vector(53.787, 19.029, -63.892), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Vector(53.787, 19.029, -63.892), Vector(0, 0, 0));
  • Global.Extractround = 6;
  • }
  • }
  • rule("Extract round 7")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Extractround == 6;
  • Number Of Living Players(Team 2) == 0;
  • }
  • actions
  • {
  • Wait(5, Ignore Condition);
  • Create Dummy Bot(Hero(Wrecking Ball), Team 2, -1, Vector(143.521, 26.334, -21.596), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Wrecking Ball), Team 2, -1, Vector(56.458, 18.080, -64.037), Vector(0, 0, 0));
  • Wait(30, Ignore Condition);
  • Create Dummy Bot(Hero(Wrecking Ball), Team 2, -1, Vector(143.521, 26.334, -21.596), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Wrecking Ball), Team 2, -1, Vector(57.130, 18.080, -47.729), Vector(0, 0, 0));
  • Global.Extractround = 7;
  • }
  • }
  • rule("Extract round 8")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Extractround == 7;
  • Number Of Heroes(Hero(Wrecking Ball), Team 2) == 0;
  • Number Of Heroes(Hero(Reinhardt), Team 2) == 0;
  • }
  • actions
  • {
  • Wait(5, Ignore Condition);
  • Big Message(All Players(Team 1), Custom String("OBJECTIVE COMPLETE"));
  • Big Message(All Players(Team 1), Custom String("PORTAL OPENING"));
  • Global.Objective = Custom String("PORTAL OPENING");
  • Global.Extractround = 8;
  • Wait(3, Ignore Condition);
  • Big Message(All Players(Team 1), Custom String("GET IN THE PORTAL"));
  • Global.Objective = Custom String("GET IN THE PORTAL");
  • Create HUD Text(All Players(Team 1), Custom String("{0}/{1}", Global.NumberOfPlayersinPortal, Number Of Living Players(Team 1)),
  • Null, Null, Top, 0, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
  • Global.Objectivetext = Last Text ID;
  • Create Effect(All Players(Team 1), Good Aura, Color(Blue), Vector(160.690, 0.423, -21.116), 3, Visible To Position and Radius);
  • Create Icon(All Players(Team 1), Vector(160.690, 0.423, -21.116), Dizzy, Visible To and Position, Color(Blue), True);
  • Play Effect(All Players(All Teams), Good Explosion, Color(White), Vector(160.690, 0.423, -21.116), 200);
  • Create Effect(All Players(Team 1), Good Aura, Color(Blue), Vector(34.106, 2.917, -31.280), 3, Visible To Position and Radius);
  • Create In-World Text(All Players(All Teams), Custom String(" {0}\r\nGet in the portal"), Vector(34.106, 2.917, -31.280), 1,
  • Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
  • Wait(1, Ignore Condition);
  • Small Message(All Players(All Teams), Custom String("Blackwatch pilot: Get in the portal, it should teleport you to my ship"));
  • }
  • }
  • rule("RANDOM SPAWNS FOR ENDING")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Extractround == 8;
  • }
  • actions
  • {
  • Wait(15, Ignore Condition);
  • While(True);
  • Global.SpawnEnforcer = Random Integer(0, 1);
  • Wait(0.250, Ignore Condition);
  • Create Dummy Bot(Hero(Wrecking Ball), Team 2, -1, Vector(143.521, 26.334, -21.596), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Wrecking Ball), Team 2, -1, Random Value In Array(Array(Vector(56.458, 18.080, -64.037), Vector(57.130,
  • 18.080, -47.729))), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(
  • All Players(Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(
  • All Players(Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(
  • All Players(Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Skip If(Global.SpawnEnforcer == 0, 1);
  • Create Dummy Bot(Hero(Reaper), Team 2, -1, Random Value In Array(Filtered Array(Global.SetSpawns, Is In Line of Sight(All Players(
  • Team 1), Current Array Element, Barriers Do Not Block LOS) == False)), Vector(0, 0, 0));
  • Wait(Random Integer(20, 30), Ignore Condition);
  • Loop If(Global.Extractround == 8);
  • }
  • }
  • rule("Teleport")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Global.Extractround == 8;
  • Distance Between(Event Player, Vector(160.690, 0.423, -21.116)) <= 3;
  • Distance Between(Event Player, Vector(34.106, 2.917, -31.280)) <= 3;
  • }
  • actions
  • {
  • Event Player.Invis = True;
  • Small Message(Event Player, Custom String("wait for others to enter the portal"));
  • Play Effect(All Players(Team 1), Buff Impact Sound, Color(White), Event Player, 200);
  • Start Camera(Event Player, Vector(156.508, 2.661, -18.822), Vector(160.690, 0.423, -21.116), 0);
  • Start Camera(Event Player, Vector(31.415, 5.659, -36.207), Vector(34.106, 2.917, -31.280), 0);
  • Global.NumberOfPlayersinPortal += 1;
  • Start Forcing Player Position(Event Player, Vector(29.874, 12.507, -13.366), True);
  • Set Status(Event Player, Null, Phased Out, 9999);
  • Set Invisible(Event Player, All);
  • }
  • }
  • rule("Win")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.NumberOfPlayersinPortal >= Number Of Living Players(Team 1);
  • Global.Extractround == 8;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Good Explosion, Color(Blue), Vector(0, 0, 0), 3);
  • Wait(0.250, Ignore Condition);
  • Destroy All Effects;
  • Wait(1, Ignore Condition);
  • Declare Team Victory(Team 1);
  • }
  • }
  • rule("Defeat")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Number Of Living Players(Team 1) == 0;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Declare Team Victory(Team 2);
  • }
  • }
  • rule("damage = heal")
  • {
  • event
  • {
  • Player Dealt Damage;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Workshop Setting Toggle(Custom String("Settings"), Custom String("Damage Dealt Heals You"), False, 0) == True;
  • }
  • actions
  • {
  • Heal(Event Player, Null, Event Damage);
  • }
  • }
  • rule("Challenge Missions")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.SurgicalStrike = Workshop Setting Toggle(Custom String("Challenge Missions"), Custom String("Surgical Strike"), False, 0);
  • Global.CloseQuarters = Workshop Setting Toggle(Custom String("Challenge Missions"), Custom String("Close Quarters"), False, 0);
  • }
  • }
  • rule("Surgical Strike")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Global.SurgicalStrike == True;
  • }
  • actions
  • {
  • Set Player Allowed Heroes(Event Player, Array(Hero(D.Va), Hero(Orisa), Hero(Roadhog), Hero(Wrecking Ball), Hero(Ashe), Hero(Echo),
  • Hero(Genji), Hero(Hanzo), Hero(McCree), Hero(Mei), Hero(Reaper), Hero(Soldier: 76), Hero(Sombra), Hero(Torbjörn), Hero(Tracer),
  • Hero(Widowmaker), Hero(Baptiste), Hero(Lúcio), Hero(Mercy), Hero(Zenyatta)));
  • }
  • }
  • rule("Surgical Strike")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.SurgicalStrike == True;
  • }
  • actions
  • {
  • Global.Normal = False;
  • Global.Expert = True;
  • Global.Legendary = False;
  • Global.Hard = False;
  • Global.Allheroes = False;
  • }
  • }
  • rule("Surgical Strike")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Global.SurgicalStrike == True;
  • Distance Between(Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player)
  • * 100, All Players(Team 2), Event Player, False), Eye Position(Player Closest To Reticle(Event Player, Opposite Team Of(
  • Team Of(Event Player))))) > 0.340;
  • }
  • actions
  • {
  • Set Damage Dealt(Event Player, 0);
  • }
  • }
  • rule("Surgical Strike")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Global.SurgicalStrike == True;
  • Distance Between(Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player)
  • * 100, All Players(Team 2), Event Player, False), Eye Position(Player Closest To Reticle(Event Player, Opposite Team Of(
  • Team Of(Event Player))))) <= 0.340;
  • }
  • actions
  • {
  • Set Damage Dealt(Event Player, 100);
  • }
  • }
  • rule("Close Quaters")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Global.CloseQuarters == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Global.Normal = False;
  • Global.Expert = True;
  • Global.Legendary = False;
  • Global.Hard = False;
  • Global.Allheroes = True;
  • }
  • }
  • rule("Close Quaters")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Distance Between(Event Player, Closest Player To(Event Player, Team 1)) <= 3;
  • Global.CloseQuarters == True;
  • }
  • actions
  • {
  • Wait(0.250, Abort When False);
  • Clear Status(Event Player, Invincible);
  • }
  • }
  • rule("Close Quaters")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Distance Between(Event Player, Closest Player To(Event Player, Team 1)) > 3;
  • Global.CloseQuarters == True;
  • }
  • actions
  • {
  • Wait(0.250, Abort When False);
  • Set Status(Event Player, Null, Invincible, 9999);
  • }
  • }
  • rule("Reaper Gets Ignored")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Reaper;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.Invis = True;
  • }
  • }
  • rule("Reaper Gets Ignored")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Reaper;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.Invis = False;
  • }
  • }
  • rule("Force WIn")
  • disabled rule("Force WIn")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Is Button Held(Event Player, Button(Crouch)) == True;
  • }
  • actions
  • {
  • Declare Team Victory(Team Of(Event Player));
  • }
  • }
  • rule("Widow Hook")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Widowmaker;
  • }
  • 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)))) <= 5;
  • Global.IntroOver1 == True;
  • }
  • actions
  • {
  • Wait(5, Ignore Condition);
  • Start Facing(Event Player, Direction Towards(Event Player, Evaluate Once(Vector(Random Integer(-500, 500), 13, Random Integer(-500,
  • 500)))), 500, To World, Direction and Turn Rate);
  • Wait(0.500, Ignore Condition);
  • Press Button(Event Player, Button(Ability 1));
  • Wait(1, Ignore Condition);
  • Skip If(Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • <= 0, 1);
  • Start Facing(Event Player, Direction Towards(Event Player, Eye Position(First Of(Sorted Array(Filtered Array(Filtered Array(
  • All Living Players(Opposite Team Of(Team Of(Event Player))), Current Array Element.Invis == False), Is In Line of Sight(
  • Event Player, Current Array Element, Barriers Do Not Block LOS)), Distance Between(Event Player, Current Array Element))))
  • + Down + Down), 200, To World, Direction and Turn Rate);
  • }
  • }
  • rule("Spawn")
  • {
  • event
  • {
  • Player Died;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Global.Headtoextractionpoint == False;
  • }
  • actions
  • {
  • Teleport(Event Player, Vector(77.173, 0.205, -78.218));
  • }
  • }
  • rule("Trooper Melee")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)))) <= 3;
  • Count Of(Filtered Array(All Players(Opposite Team Of(Team Of(Event Player))), Current Array Element.Invis == False)) > 0;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Melee));
  • }
  • }
Join the Workshop.codes Discord