Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "Aim Training Labs. Practice and improve your aim with various different modes. Works for all heroes. Made by Mitsiee at https://workshop.codes/aimlabs"
  • Description: "Aim Training Labs. Practice and improve your aim with various different modes. Works for Hitscan and straight Projectile heroes. Made by Mitsiee at https://workshop.codes/aimlabs"
  • }
  • lobby
  • {
  • Allow Players Who Are In Queue: Yes
  • Max Spectators: 0
  • Max Team 1 Players: 1
  • Max Team 2 Players: 0
  • }
  • modes
  • {
  • Skirmish
  • {
  • enabled maps
  • {
  • Workshop Chamber
  • }
  • }
  • General
  • {
  • Limit Roles: 2 Of Each Role Per Team
  • }
  • }
  • heroes
  • {
  • General
  • {
  • No Ammunition Requirement: On
  • Ultimate Ability: Off
  • Ana
  • {
  • Biotic Grenade: Off
  • No Ammunition Requirement: On
  • Sleep Dart: Off
  • Ultimate Generation - Combat Nano Boost: 0%
  • Ultimate Generation - Passive Nano Boost: 0%
  • Ultimate Generation Nano Boost: 10%
  • }
  • Ashe
  • {
  • Coach Gun: Off
  • Dynamite: Off
  • No Ammunition Requirement: On
  • Ultimate Generation - Combat B.O.B.: 0%
  • Ultimate Generation - Passive B.O.B.: 0%
  • Ultimate Generation B.O.B.: 10%
  • }
  • Baptiste
  • {
  • Immortality Field: Off
  • No Ammunition Requirement: On
  • Regenerative Burst: Off
  • Secondary Fire: Off
  • Ultimate Generation - Combat Amplification Matrix: 0%
  • Ultimate Generation - Passive Amplification Matrix: 0%
  • Ultimate Generation Amplification Matrix: 10%
  • }
  • Bastion
  • {
  • No Ammunition Requirement: On
  • Self-Repair: Off
  • Ultimate Generation - Combat Configuration: Tank: 0%
  • Ultimate Generation - Passive Configuration: Tank: 0%
  • Ultimate Generation Configuration: Tank: 10%
  • }
  • Echo
  • {
  • Flight: Off
  • Focusing Beam: Off
  • Glide: Off
  • No Ammunition Requirement: On
  • Quick Melee: Off
  • Sticky Bombs: Off
  • Ultimate Generation - Combat Duplicate: 0%
  • Ultimate Generation - Passive Duplicate: 0%
  • Ultimate Generation Duplicate: 10%
  • }
  • Genji
  • {
  • Deflect: Off
  • No Ammunition Requirement: On
  • Secondary Fire: Off
  • Swift Strike: Off
  • Ultimate Generation - Combat Dragonblade: 0%
  • Ultimate Generation - Passive Dragonblade: 0%
  • Ultimate Generation Dragonblade: 10%
  • }
  • McCree
  • {
  • Combat Roll: Off
  • Flashbang: Off
  • No Ammunition Requirement: On
  • Secondary Fire: Off
  • Ultimate Generation - Combat Deadeye: 0%
  • Ultimate Generation - Passive Deadeye: 0%
  • Ultimate Generation Deadeye: 10%
  • }
  • Mei
  • {
  • Cryo-Freeze: Off
  • Ice Wall: Off
  • No Ammunition Requirement: On
  • Primary Fire: Off
  • Quick Melee: Off
  • Ultimate Generation - Combat Blizzard: 0%
  • Ultimate Generation - Passive Blizzard: 0%
  • Ultimate Generation Blizzard: 10%
  • }
  • Mercy
  • {
  • Guardian Angel: Off
  • No Ammunition Requirement: On
  • Resurrect: Off
  • Ultimate Generation - Combat Valkyrie: 0%
  • Ultimate Generation - Passive Valkyrie: 0%
  • Ultimate Generation Valkyrie: 10%
  • Weapons Enabled: Caduceus Blaster Only
  • }
  • Orisa
  • {
  • Fortify: Off
  • Halt!: Off
  • No Ammunition Requirement: On
  • Protective Barrier: Off
  • Ultimate Generation - Combat Supercharger: 0%
  • Ultimate Generation - Passive Supercharger: 0%
  • Ultimate Generation Supercharger: 10%
  • }
  • Soldier: 76
  • {
  • Biotic Field: Off
  • Helix Rockets: Off
  • No Ammunition Requirement: On
  • Sprint: Off
  • Ultimate Generation - Combat Tactical Visor: 0%
  • Ultimate Generation - Passive Tactical Visor: 0%
  • Ultimate Generation Tactical Visor: 10%
  • }
  • Widowmaker
  • {
  • Grappling Hook: Off
  • No Ammunition Requirement: On
  • Quick Melee: Off
  • Ultimate Generation - Combat Infra-Sight: 0%
  • Ultimate Generation - Passive Infra-Sight: 0%
  • Ultimate Generation Infra-Sight: 10%
  • Venom Mine: Off
  • }
  • Wrecking Ball
  • {
  • Roll Always Active: On
  • Adaptive Shield: Off
  • Grappling Claw: Off
  • No Ammunition Requirement: On
  • Piledriver: Off
  • Roll: Off
  • Ultimate Generation - Combat Minefield: 0%
  • Ultimate Generation - Passive Minefield: 0%
  • Ultimate Generation Minefield: 10%
  • }
  • Zenyatta
  • {
  • No Ammunition Requirement: On
  • Orb of Discord: Off
  • Orb of Harmony: Off
  • Secondary Fire: Off
  • Ultimate Generation - Combat Transcendence: 0%
  • Ultimate Generation - Passive Transcendence: 0%
  • Ultimate Generation Transcendence: 10%
  • }
  • enabled heroes
  • {
  • Ana
  • Ashe
  • Bastion
  • Echo
  • McCree
  • Mei
  • Orisa
  • Soldier: 76
  • Widowmaker
  • Wrecking Ball
  • Zenyatta
  • }
  • }
  • }
  • }
  • variables
  • {
  • global:
  • 0: BallRadius
  • 1: BallPositions
  • 2: GridPositions
  • 3: Mode
  • 4: GridLoopZ
  • 5: GridLoopY
  • 6: GridStart
  • 7: GridDone
  • 8: RandomLoop
  • 9: GridNumberOfBalls
  • 10: BallPositionsCheckLoop
  • 11: IsInPregame
  • 12: SmallBall
  • 13: RandomBalls
  • 14: NeedToWalk
  • 15: CountdownActive
  • 16: CountdownSphereEffect
  • 17: SelectedBallRadius
  • 18: ProjectileHeroes
  • 19: SpawnPosition
  • 20: NoiseEffect
  • 21: PositiveOrNegative
  • 22: MovingTime
  • 23: MovingDirection
  • 24: HealthyTargets
  • 25: CurrentTargetHealth
  • 26: EffectsArray
  • 27: BotsArray
  • 28: Loop
  • 29: ColorSelectBubblePositions
  • 30: BubbleColor
  • 31: ModeSelectBubblePositions
  • 32: ModifierSelectBubblePositions
  • 33: SizeBubblePositions
  • player:
  • 0: RaycastPrimaryFire
  • 1: ShootLoop
  • 2: HitPosition
  • 3: CurrentCheckPosition
  • 4: ShotsFired
  • 5: ShotsLanded
  • 6: RaycastDistance
  • 7: IsProjectileHero
  • 8: ProjectileSpeed
  • 9: ProjectileDelay
  • 10: ProjectileSize
  • 11: FacingDirection
  • 12: EyeLocationWhenFired
  • 14: ReactionTimeArray
  • 15: CurrentReactionTime
  • 16: AverageReactionTime
  • 17: CalculateAverageReactionTimeLoop
  • 18: RaycastBubbleSelect
  • 19: CurrentBubbleHealth
  • }
  • subroutines
  • {
  • 0: SetRandomPosition
  • 1: SetBallSize
  • 2: EnableFire
  • 3: SetRandom360Position
  • 4: ResetTargetHealth
  • 5: ChaseReactionTime
  • 7: TeleportBots
  • 6: FiringWeapon
  • }
  • disabled rule("------------------------------------------- Initialise")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Initialise")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • disabled Disable Inspector Recording;
  • Disable Inspector Recording;
  • Disable Built-In Game Mode Music;
  • Global.BallRadius = 0.500;
  • Global.SelectedBallRadius = Global.BallRadius;
  • Global.Mode = 0;
  • Global.GridStart = Vector(-8, 1.500, 0);
  • Global.GridNumberOfBalls = 4;
  • Global.IsInPregame = True;
  • Global.NeedToWalk = False;
  • Global.SpawnPosition = Vector(0, 1.500, 0);
  • Global.PositiveOrNegative = Array(1, -1);
  • Global.PositiveOrNegative = Empty Array;
  • Global.PositiveOrNegative = Append To Array(Global.PositiveOrNegative, -1);
  • Global.PositiveOrNegative = Append To Array(Global.PositiveOrNegative, 1);
  • Global.CurrentTargetHealth = 0;
  • }
  • }
  • rule("Teleport player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • Teleport(Event Player, Global.SpawnPosition);
  • }
  • }
  • rule("Back to menu")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Crouch)) == True;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • Global.IsInPregame = True;
  • Clear Status(Event Player, Rooted);
  • }
  • }
  • rule("Swap hero")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Crouch)) == True;
  • Is Button Held(Event Player, Button(Reload)) == True;
  • Is Button Held(Event Player, Button(Jump)) == True;
  • }
  • actions
  • {
  • Set Player Allowed Heroes(Event Player, Remove From Array(All Heroes, Hero Of(Event Player)));
  • Wait(0.250, Ignore Condition);
  • Reset Player Hero Availability(Event Player);
  • }
  • }
  • disabled rule("------------------------------------------- HUD")
  • rule("Create Projectile Heroes array")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.ProjectileHeroes = Empty Array;
  • Global.ProjectileHeroes = Append To Array(Global.ProjectileHeroes, Hero(Echo));
  • Global.ProjectileHeroes = Append To Array(Global.ProjectileHeroes, Hero(Mei));
  • Global.ProjectileHeroes = Append To Array(Global.ProjectileHeroes, Hero(Ana));
  • Global.ProjectileHeroes = Append To Array(Global.ProjectileHeroes, Hero(Genji));
  • Global.ProjectileHeroes = Append To Array(Global.ProjectileHeroes, Hero(Orisa));
  • Global.ProjectileHeroes = Append To Array(Global.ProjectileHeroes, Hero(Mercy));
  • }
  • }
  • rule("HUD - Accuracy")
  • rule("Is Projectile Hero?")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Create HUD Text(Event Player, Null, Null, Custom String("Score: {1}", Event Player.ShotsFired, Event Player.ShotsLanded,
  • 100 / Event Player.ShotsFired * Event Player.ShotsLanded), Top, 1, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array((Global.IsInPregame && Count Of(Event Player.ReactionTimeArray) > 1) == True, True), Null, Null,
  • Custom String("Avg. Reaction time during last run: {0}", Event Player.AverageReactionTime), Top, 2, Color(White), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • }
  • }
  • rule("HUD - Controls")
  • {
  • event
  • conditions
  • {
  • Ongoing - Global;
  • Array Contains(Global.ProjectileHeroes, Hero Of(Event Player)) == True;
  • }
  • actions
  • {
  • Create HUD Text(All Players(All Teams), Null, Custom String("{0} + {1} to go back to the menu", Input Binding String(Button(
  • Crouch)), Input Binding String(Button(Interact))), Null, Right, -5, Color(White), Color(Blue), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Custom String("{0} + {1} + {2} to swap heroes", Input Binding String(Button(Crouch)),
  • Input Binding String(Button(Jump)), Input Binding String(Button(Reload))), Null, Right, -4, Color(White), Color(Sky Blue),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.IsProjectileHero = True;
  • "Set default values"
  • Event Player.ProjectileDelay = 0;
  • "Set values per hero"
  • If(Hero Of(Event Player) == Hero(Echo));
  • Event Player.ProjectileSpeed = 75;
  • Event Player.ProjectileSize = 0.500;
  • Else If(Hero Of(Event Player) == Hero(Mei));
  • Event Player.ProjectileSpeed = 115;
  • Event Player.ProjectileDelay = 0.400;
  • Event Player.ProjectileSize = 0.150;
  • Else If(Hero Of(Event Player) == Hero(Ana));
  • Event Player.ProjectileSpeed = 125;
  • Event Player.ProjectileSize = 0;
  • Else If(Hero Of(Event Player) == Hero(Genji));
  • Event Player.ProjectileSpeed = 60;
  • Event Player.ProjectileSize = 0.100;
  • Else If(Hero Of(Event Player) == Hero(Orisa));
  • Event Player.ProjectileSpeed = 90;
  • Event Player.ProjectileSize = 0.100;
  • Else If(Hero Of(Event Player) == Hero(Mercy));
  • Event Player.ProjectileSpeed = 50;
  • Event Player.ProjectileSize = 0.250;
  • Else If(Hero Of(Event Player) == Hero(Zenyatta));
  • Event Player.ProjectileSpeed = 90;
  • Event Player.ProjectileSize = 0.150;
  • Else If(Hero Of(Event Player) == Hero(Pharah));
  • Event Player.ProjectileSpeed = 35;
  • Event Player.ProjectileSize = 0.200;
  • Else If(Hero Of(Event Player) == Hero(Reinhardt));
  • Event Player.ProjectileSpeed = 25;
  • Event Player.ProjectileDelay = 0.480;
  • Event Player.ProjectileSize = 0.850;
  • Else If(Hero Of(Event Player) == Hero(D.Va));
  • Event Player.ProjectileSpeed = 50;
  • Event Player.ProjectileSize = 0.250;
  • Else If(Hero Of(Event Player) == Hero(Junkrat));
  • Event Player.ProjectileSpeed = 25;
  • Event Player.ProjectileSize = 0.200;
  • Else If(Hero Of(Event Player) == Hero(Torbjörn));
  • Event Player.ProjectileSpeed = 70;
  • Event Player.ProjectileSize = 0.100;
  • Else If(Hero Of(Event Player) == Hero(Hanzo));
  • Event Player.ProjectileSpeed = 110;
  • Event Player.ProjectileSize = 0.100;
  • Else If(Hero Of(Event Player) == Hero(Zarya));
  • Event Player.ProjectileSpeed = 25;
  • Event Player.ProjectileSize = 0.200;
  • Else If(Hero Of(Event Player) == Hero(Lúcio));
  • Event Player.ProjectileSpeed = 50;
  • Event Player.ProjectileSize = 0.150;
  • End;
  • }
  • }
  • rule("HUD - Workshop.codes link")
  • rule("Is not projectile hero?")
  • {
  • event
  • {
  • Ongoing - Global;
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • conditions
  • {
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Workshop.codes/aimlabs"), Top, 0, Color(White), Color(Orange),
  • Color(Orange), Visible To and String, Default Visibility);
  • Array Contains(Global.ProjectileHeroes, Hero Of(Event Player)) != True;
  • }
  • }
  • disabled rule("----------------------------------------- Pregame")
  • {
  • event
  • actions
  • {
  • Ongoing - Global;
  • Event Player.IsProjectileHero = False;
  • Event Player.ProjectileSize = 0;
  • Event Player.ProjectileDelay = 0;
  • Event Player.ProjectileSpeed = 0;
  • }
  • }
  • rule("Pregame HUD")
  • rule("Special case, Ana in scope")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • "Press interact to select button"
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Null, Null, Custom String(
  • "Press {0} on a bubble to select", Input Binding String(Button(Interact))), Top, 5, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • "Blurb about walking around"
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Null, Custom String(
  • "You can walk around freely, but you will be rooted when you start"), Null, Top, 6, Color(White), Color(Sky Blue), Color(
  • Sky Blue), Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Null, Custom String(" "), Custom String(" ",
  • Input Binding String(Button(Interact))), Top, 4, Color(White), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Null, Custom String(" "), Custom String(" ",
  • Input Binding String(Button(Interact))), Top, 4, Color(White), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Null, Custom String(" "), Custom String(" ",
  • Input Binding String(Button(Interact))), Top, 4, Color(White), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Null, Custom String(" "), Custom String(" ",
  • Input Binding String(Button(Interact))), Top, 4, Color(White), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Null, Custom String(" "), Custom String(" ",
  • Input Binding String(Button(Interact))), Top, 4, Color(White), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Null, Custom String(" "), Custom String(" ",
  • Input Binding String(Button(Interact))), Top, 4, Color(White), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Null, Custom String(" "), Custom String(" ",
  • Input Binding String(Button(Interact))), Top, 4, Color(White), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Null, Custom String(" "), Custom String(" ",
  • Input Binding String(Button(Interact))), Top, 4, Color(White), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Null, Custom String(" "), Custom String(" ",
  • Input Binding String(Button(Interact))), Top, 4, Color(White), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Null, Custom String(" "), Custom String(" ",
  • Input Binding String(Button(Interact))), Top, 4, Color(White), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Null, Custom String(" "), Custom String(" ",
  • Input Binding String(Button(Interact))), Top, 4, Color(White), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Null, Custom String(" "), Custom String(" ",
  • Input Binding String(Button(Interact))), Top, 4, Color(White), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • }
  • rule("Pregame In-world")
  • {
  • event
  • conditions
  • {
  • Ongoing - Global;
  • Hero Of(Event Player) == Hero(Ana);
  • Is Firing Secondary(Event Player) == True;
  • }
  • actions
  • {
  • "--- Select mode"
  • Create Icon(Filtered Array(All Players(All Teams), Global.IsInPregame), Vector(-20, 12, 0), Asterisk,
  • Visible To Position and Color, Color(White), True);
  • Create In-World Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Custom String("Select mode"), Vector(-20, 12, 0),
  • 2, Do Not Clip, Visible To Position and String, Color(White), Default Visibility);
  • Create In-World Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Custom String("Modes"), Vector(-20, 10, 5), 1.500,
  • Do Not Clip, Visible To Position and String, Color(Gray), Default Visibility);
  • Create In-World Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Custom String("Modifiers"), Vector(-20, 10, -5),
  • 1.500, Do Not Clip, Visible To Position and String, Color(Gray), Default Visibility);
  • "--- Customise target"
  • Create Icon(Filtered Array(All Players(All Teams), Global.IsInPregame), Vector(0, 12, -20), Circle, Visible To Position and Color,
  • Global.BubbleColor, True);
  • Create In-World Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Custom String("Customise target"), Vector(0, 12,
  • -20), 2, Do Not Clip, Visible To Position and String, Color(White), Default Visibility);
  • Create Effect(Filtered Array(All Players(All Teams), Global.IsInPregame), Sphere, Global.BubbleColor, Vector(0, 5, -15),
  • Global.BallRadius, Visible To Position Radius and Color);
  • "-- Destroy to start"
  • Create In-World Text(Global.IsInPregame, Custom String("Destroy me to start"), Global.BallPositions[0], 1, Do Not Clip,
  • Visible To Position and String, Color(Turquoise), Default Visibility);
  • "Aim"
  • Create In-World Text(Filtered Array(Global.IsInPregame, True), Custom String("Aim Training Labs"), Vector(-16, 16, 0), 5,
  • Do Not Clip, Visible To Position and String, Custom Color(14, 199, 255, 255), Default Visibility);
  • Create In-World Text(Filtered Array(Global.IsInPregame, True), Custom String("Workshop.codes/aimlabs"), Vector(-16, 15, 0), 2,
  • Do Not Clip, Visible To Position and String, Color(White), Default Visibility);
  • Create In-World Text(Filtered Array(Global.IsInPregame, True), Custom String("Made by Mitsiee"), Vector(-16, 14, 0), 1,
  • Do Not Clip, Visible To Position and String, Custom Color(180, 180, 180, 255), Default Visibility);
  • "Projectile speed per second"
  • Event Player.ProjectileSpeed = 0;
  • }
  • }
  • rule("Is in pregame")
  • rule("Special case, Ana not in scope")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsInPregame == True;
  • Has Spawned(Event Player) == True;
  • Is Assembling Heroes != True;
  • Hero Of(Event Player) == Hero(Ana);
  • Is Firing Secondary(Event Player) != True;
  • }
  • actions
  • {
  • Global.BallPositions = Empty Array;
  • Global.BallPositions = Append To Array(Global.BallPositions, Vector(-12, 1.500, 0));
  • Call Subroutine(TeleportBots);
  • Set Match Time(3599);
  • "Projectile speed per second"
  • Event Player.ProjectileSpeed = 125;
  • }
  • }
  • rule("Is not in pregame")
  • disabled rule("------------------------------------------- HUD")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsInPregame != True;
  • Ongoing - Global;
  • }
  • }
  • rule("Interact to ray cast bubble select")
  • rule("HUD - Accuracy")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • Event Player.RaycastBubbleSelect = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
  • + Facing Direction Of(Event Player) * 100, Null, All Players(All Teams), False);
  • Wait(0.016, Ignore Condition);
  • Event Player.RaycastBubbleSelect = Vector(0, 0, 0);
  • Create HUD Text(Event Player, Null, Null, Custom String("Shots: {0} Hit: {1} Accuracy: {2}%", Event Player.ShotsFired,
  • Event Player.ShotsLanded, 100 / Event Player.ShotsFired * Event Player.ShotsLanded), Top, 1, Color(White), Color(White), Color(
  • White), Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array((Global.IsInPregame && Count Of(Event Player.ReactionTimeArray) > 1) == True, True), Null, Null,
  • Custom String("Avg. Reaction time during last run: {0}", Event Player.AverageReactionTime), Top, 2, Color(White), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • }
  • }
  • rule("Start selected mode")
  • rule("HUD - Controls")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsInPregame == True;
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.IsInPregame = False;
  • Create HUD Text(All Players(All Teams), Null, Custom String("Press [Crouch] + [Interact] to go back to the menu", Server Load,
  • Server Load Peak, Server Load Average), Null, Right, -5, Color(White), Color(Blue), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Custom String("Press [Crouch] + [Reload] + [Jump] to swap heroes", Server Load,
  • Server Load Peak, Server Load Average), Null, Right, -4, Color(White), Color(Sky Blue), Color(White), Visible To and String,
  • Default Visibility);
  • }
  • }
  • disabled rule("---------------------------------------- Reaction time")
  • rule("HUD - Workshop.codes link")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Subroutine - Start chase on reaction time array")
  • {
  • event
  • {
  • Subroutine;
  • ChaseReactionTime;
  • }
  • actions
  • {
  • Event Player.ReactionTimeArray = Empty Array;
  • Chase Player Variable At Rate(Event Player, CurrentReactionTime, 1000, 1, Destination and Rate);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Workshop.codes/aimlabs"), Top, 0, Color(White), Color(Orange),
  • Color(Orange), Visible To and String, Default Visibility);
  • }
  • }
  • rule("Add to reaction time array")
  • disabled rule("----------------------------------------- Pregame")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • ((Hero Of(Event Player) == Hero(Mei) && Is Firing Secondary(Event Player)) || (Hero Of(Event Player) != Hero(Mei)
  • && Is Firing Primary(Event Player))) == True;
  • Global.IsInPregame != True;
  • }
  • actions
  • {
  • Event Player.ReactionTimeArray = Append To Array(Event Player.ReactionTimeArray, Event Player.CurrentReactionTime);
  • Event Player.CurrentReactionTime = 0;
  • Ongoing - Global;
  • }
  • }
  • rule("Calculate average reaction time")
  • rule("Is in pregame")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsInPregame == True;
  • Count Of(Event Player.ReactionTimeArray) > 1;
  • Has Spawned(Event Player) == True;
  • Is Assembling Heroes != True;
  • }
  • actions
  • {
  • For Player Variable(Event Player, CalculateAverageReactionTimeLoop, 0, Count Of(Event Player.ReactionTimeArray), 1);
  • Event Player.AverageReactionTime += Event Player.ReactionTimeArray[Event Player.CalculateAverageReactionTimeLoop];
  • End;
  • Event Player.AverageReactionTime /= Count Of(Event Player.ReactionTimeArray);
  • Event Player.CurrentReactionTime = 1000;
  • }
  • }
  • disabled rule("---------------------------------------- Mode is about to start")
  • {
  • event
  • {
  • Ongoing - Global;
  • Call Subroutine(EnableFire);
  • Global.BallPositions = Empty Array;
  • Global.BallPositions = Append To Array(Global.BallPositions, Vector(-12, 1.500, 0));
  • Set Match Time(3599);
  • }
  • }
  • rule("Countdown")
  • rule("Is not in pregame")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsInPregame != True;
  • Is Dummy Bot(Event Player) != True;
  • }
  • actions
  • {
  • Create Effect(All Players(All Teams), Sphere, Color(Aqua), Event Player, 2, Visible To Position and Radius);
  • Global.CountdownSphereEffect = Last Created Entity;
  • Wait(0.050, Ignore Condition);
  • Global.CountdownActive = True;
  • Event Player.ShotsFired = 0;
  • Event Player.ShotsLanded = 0;
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Communicate(Event Player, Countdown);
  • Small Message(All Players(All Teams), Custom String("3..."));
  • Wait(1, Ignore Condition);
  • Small Message(All Players(All Teams), Custom String("2..."));
  • Wait(1, Ignore Condition);
  • Small Message(All Players(All Teams), Custom String("1..."));
  • Wait(1, Ignore Condition);
  • Small Message(All Players(All Teams), Custom String("GO!"));
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(White), Event Player, 100);
  • Call Subroutine(EnableFire);
  • Global.CountdownActive = False;
  • Destroy Effect(Global.CountdownSphereEffect);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Aqua), Event Player, 10);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • }
  • }
  • disabled rule("--------------------------------------Timer")
  • rule("Is in pregame game selection HUD")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Start Timer")
  • {
  • event
  • actions
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • "Title"
  • Create HUD Text(Global.IsInPregame, Null, Custom String(" "), Null, Left, 0, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Wait(0.020, Ignore Condition);
  • Create HUD Text(Global.IsInPregame, Null, Null, Custom String("Select a gamemode", Global.GridNumberOfBalls), Left, 0, Color(
  • White), Color(White), Color(Turquoise), Visible To and String, Default Visibility);
  • Wait(0.020, Ignore Condition);
  • "Bunch of empty hud texts to push other text down"
  • Create HUD Text(Global.IsInPregame, Null, Custom String(" "), Null, Left, 0, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Global.IsInPregame, Null, Custom String(" "), Null, Left, 0, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Global.IsInPregame, Null, Custom String(" "), Null, Left, 0, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Global.IsInPregame, Null, Custom String(" "), Null, Left, 0, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Global.IsInPregame, Null, Custom String(" "), Null, Left, 0, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Wait(0.020, Ignore Condition);
  • "Standard mode"
  • Create HUD Text(Global.IsInPregame, Custom String("Standard"), Custom String("Select with [Ability 1] + [Primary Fire]"),
  • Custom String("1 Target at a random location"), Left, 1, Color(White), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Wait(0.020, Ignore Condition);
  • "Grid mode, available"
  • Create HUD Text(Filtered Array(Global.IsInPregame && !Global.HealthyTargets, 0 == 0), Custom String("Grid"), Custom String(
  • "Select with [Ability 1] + [Secondary Fire]"), Custom String("{0} Targets in a tight grid", Global.GridNumberOfBalls), Left, 2,
  • Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
  • "Grid mode, unavailable"
  • Create HUD Text(Filtered Array(Global.IsInPregame && Global.HealthyTargets, 0 == 0), Custom String("Grid"), Custom String(
  • "Disabled because of modifier"), Custom String("{0} Targets in a tight grid", Global.GridNumberOfBalls), Left, 2, Color(Red),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Wait(0.020, Ignore Condition);
  • "Awareness mode"
  • Create HUD Text(Global.IsInPregame, Custom String("Awareness"), Custom String("Select with [Ability 1] + [Interact]"),
  • Custom String("Targets appear all around the lab but make a constant noise to help you find them", Global.GridNumberOfBalls),
  • Left, 3, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
  • Wait(0.020, Ignore Condition);
  • "Strafing mode"
  • Create HUD Text(Global.IsInPregame, Custom String("Strafing targets"), Custom String("Select with [Ability 1] + [Crouch]"),
  • Custom String("Targets strafe in a random direction"), Left, 4, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Wait(0.020, Ignore Condition);
  • }
  • }
  • conditions
  • rule("Is in pregame in-world text")
  • {
  • event
  • {
  • Global.IsInPregame != True;
  • Global.CountdownActive != True;
  • Is Dummy Bot(Event Player) != True;
  • Ongoing - Global;
  • }
  • actions
  • {
  • "Root player"
  • Set Status(Event Player, Null, Rooted, 9999);
  • Wait(0.050, Abort When False);
  • "Start timer according to workshop setting"
  • Set Match Time(Workshop Setting Integer(Custom String("Timer"), Custom String("Time per round"), 60, 10, 180, 0) + 0.500);
  • "Reset reaction time"
  • Event Player.CurrentReactionTime = 0;
  • "Start chasing reaction time"
  • Call Subroutine(ChaseReactionTime);
  • "Reset target health, in case of healthy targets"
  • Call Subroutine(ResetTargetHealth);
  • Create In-World Text(Global.IsInPregame, Custom String("Select a mode on the left side of the screen to start"),
  • Global.BallPositions[0], 1.250, Do Not Clip, Visible To Position and String, Color(Turquoise), Default Visibility);
  • }
  • }
  • rule("End of timer")
  • rule("Start Grid Mode")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Match Time < 0.500;
  • Is Dummy Bot(Event Player) != True;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Is Button Held(Event Player, Button(Secondary Fire)) == True;
  • Global.IsInPregame == True;
  • Global.HealthyTargets != True;
  • }
  • actions
  • {
  • Set Match Time(3599);
  • Global.CountdownActive = True;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Red), Event Player, 10);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(White), Event Player, 100);
  • Create Effect(All Players(All Teams), Sphere, Color(Red), Event Player, 2, Visible To Position and Radius);
  • Global.CountdownSphereEffect = Last Created Entity;
  • Wait(3, Ignore Condition);
  • Clear Status(Event Player, Rooted);
  • Destroy Effect(Global.CountdownSphereEffect);
  • Global.IsInPregame = True;
  • Global.CountdownActive = False;
  • Event Player.CurrentReactionTime = 1000;
  • Call Subroutine(ResetTargetHealth);
  • Global.IsInPregame = False;
  • Global.Mode = 0;
  • }
  • }
  • disabled rule("------------------------------------------- Bubbles")
  • rule("Start Standard Mode")
  • {
  • event
  • {
  • Ongoing - Global;
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • }
  • rule("Create bubble effects & dummy bots")
  • {
  • event
  • conditions
  • {
  • Ongoing - Global;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Is Button Held(Event Player, Button(Primary Fire)) == True;
  • Global.IsInPregame == True;
  • }
  • actions
  • {
  • Global.EffectsArray = Empty Array;
  • Global.BotsArray = Empty Array;
  • For Global Variable(Loop, 0, 5, 1);
  • Create Dummy Bot(Hero(Wrecking Ball), Team 2, -1, Vector(1, 45, 1), Vector(0, 0, 0));
  • Global.BotsArray = Append To Array(Global.BotsArray, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Count Of(Global.BallPositions) > Evaluate Once(Global.Loop)), Sphere,
  • Global.BubbleColor, Global.BallPositions[Evaluate Once(Global.Loop)], Global.BallRadius, Visible To Position Radius and Color);
  • Global.EffectsArray = Append To Array(Global.EffectsArray, Last Created Entity);
  • End;
  • Global.IsInPregame = False;
  • Global.Mode = 1;
  • }
  • }
  • rule("Set dummy bot status")
  • rule("Start Awareness Mode")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Global.IsInPregame == True;
  • }
  • actions
  • {
  • Wait(2, Ignore Condition);
  • Teleport(Event Player, Vector(0, 45, 0));
  • Set Status(Event Player, Null, Rooted, 9999);
  • Press Button(Event Player, Button(Ability 1));
  • Set Gravity(Event Player, 0);
  • Start Scaling Player(Event Player, Global.BallRadius * 1.200, True);
  • Set Damage Received(Event Player, 0.100);
  • Set Knockback Received(Event Player, 0);
  • Set Invisible(Event Player, All);
  • Disable Movement Collision With Players(Event Player);
  • Disable Movement Collision With Environment(Event Player, False);
  • Global.IsInPregame = False;
  • Global.Mode = 2;
  • }
  • }
  • rule("Create pregame bubble")
  • rule("Start Strafing Targets Mode")
  • {
  • event
  • {
  • Ongoing - Global;
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Is Button Held(Event Player, Button(Crouch)) == True;
  • Global.IsInPregame == True;
  • Count Of(Global.BallPositions) == 0;
  • }
  • actions
  • {
  • Global.BallPositions = Empty Array;
  • Global.BallPositions = Append To Array(Global.BallPositions, Vector(-12, 1.500, 0));
  • Call Subroutine(TeleportBots);
  • Global.IsInPregame = False;
  • Global.Mode = 3;
  • }
  • }
  • rule("Bubble takes damage")
  • rule("Subroutine - Enable primary or secondary")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Subroutine;
  • EnableFire;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Good Explosion, Global.BubbleColor, Global.BallPositions[Index Of Array Value(Global.BotsArray,
  • Event Player)], 0.500);
  • Play Effect(All Players(All Teams), Bad Explosion, Global.BubbleColor, Global.BallPositions[Index Of Array Value(Global.BotsArray,
  • Event Player)], 0.500);
  • "Increment score"
  • Attacker.ShotsLanded += 1;
  • "Heal bot, just in case"
  • Heal(Event Player, Null, 1000);
  • If(Global.HealthyTargets);
  • Event Player.CurrentBubbleHealth -= 1;
  • If(Event Player.CurrentBubbleHealth == 0);
  • Call Subroutine(SetBallSize);
  • Event Player.CurrentBubbleHealth = 4;
  • "Remove effect by displacing it and it's bot"
  • Global.BallPositions = Remove From Array(Global.BallPositions, Global.BallPositions[Index Of Array Value(Global.BotsArray,
  • Event Player)]);
  • Teleport(Event Player, Vector(0, 50, 0));
  • End;
  • If(Hero Of(Event Player) == Hero(Mei));
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, True);
  • Else;
  • Call Subroutine(SetBallSize);
  • "Remove effect by displacing it and it's bot"
  • Global.BallPositions = Remove From Array(Global.BallPositions, Global.BallPositions[Index Of Array Value(Global.BotsArray,
  • Event Player)]);
  • Teleport(Event Player, Vector(0, 50, 0));
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, False);
  • End;
  • If(Hero Of(Event Player) == Hero(Widowmaker) || Hero Of(Event Player) == Hero(Ashe) || Hero Of(Event Player) == Hero(Ana));
  • Set Secondary Fire Enabled(Event Player, True);
  • End;
  • }
  • }
  • rule("Subroutine [TeleportBots] - Teleport dummy bots to bubble locations")
  • rule("Subroutine - Set Ball Size")
  • {
  • event
  • {
  • Subroutine;
  • TeleportBots;
  • SetBallSize;
  • }
  • actions
  • {
  • For Global Variable(Loop, 0, Count Of(Global.BotsArray), 1);
  • If(Global.BallPositions[Global.Loop] == True);
  • If(Global.RandomBalls);
  • Wait(0.100, Ignore Condition);
  • End;
  • Teleport(Global.BotsArray[Global.Loop], Global.BallPositions[Global.Loop] + Vector(0, Global.BallRadius * 1.340 * -1, 0));
  • If(Global.RandomBalls);
  • If(Global.SmallBall);
  • Global.BallRadius = Random Real(0.150, 0.300);
  • Else;
  • Global.BallRadius = Random Real(0.200, 0.550);
  • End;
  • Else;
  • If(Global.SmallBall);
  • Global.BallRadius = 0.250;
  • Else;
  • Teleport(Global.BotsArray[Global.Loop], Vector(0, 50, 0));
  • Global.BallRadius = 0.500;
  • End;
  • End;
  • }
  • }
  • disabled rule("----------------------------------------- Grid mode = 0")
  • disabled rule("---------------------------------------- Reaction time")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Create grid mode select bubble")
  • rule("Subroutine - Start chase on reaction time array")
  • {
  • event
  • {
  • Ongoing - Global;
  • Subroutine;
  • ChaseReactionTime;
  • }
  • actions
  • {
  • "Create array for positions of color select effects"
  • Global.ModeSelectBubblePositions[0] = Vector(-20, 10, 5);
  • Create In-World Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Custom String("Grid"),
  • Global.ModeSelectBubblePositions[0] + Vector(0, -1.250, -1.500), 1.250, Do Not Clip, Visible To Position String and Color,
  • Global.Mode == 0 ? Color(Green) : Color(White), Default Visibility);
  • "Create effects"
  • Create Effect(Filtered Array(All Players(All Teams), Global.IsInPregame), Sphere, Global.Mode == 0 ? Color(Green) : Color(White),
  • Global.ModeSelectBubblePositions[0], 0.750, Visible To and Color);
  • Event Player.ReactionTimeArray = Empty Array;
  • Chase Player Variable At Rate(Event Player, CurrentReactionTime, 1000, 1, Destination and Rate);
  • }
  • }
  • rule("Select grid mode")
  • rule("Add to reaction time array")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.RaycastBubbleSelect != False;
  • Distance Between(Event Player.RaycastBubbleSelect, Global.ModeSelectBubblePositions[0]) < 0.750;
  • ((Hero Of(Event Player) == Hero(Mei) && Is Firing Secondary(Event Player)) || (Hero Of(Event Player) != Hero(Mei)
  • && Is Firing Primary(Event Player))) == True;
  • Global.IsInPregame != True;
  • }
  • actions
  • {
  • Global.Mode = 0;
  • Play Effect(All Players(All Teams), Good Explosion, Color(Green), Global.ModeSelectBubblePositions[0], 1);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Green), Global.ModeSelectBubblePositions[0], 50);
  • Event Player.ReactionTimeArray = Append To Array(Event Player.ReactionTimeArray, Event Player.CurrentReactionTime);
  • Event Player.CurrentReactionTime = 0;
  • }
  • }
  • rule("Create grid positions array")
  • rule("Calculate average reaction time")
  • {
  • event
  • {
  • Ongoing - Global;
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Mode == 0;
  • Global.IsInPregame != True;
  • Global.IsInPregame == True;
  • Count Of(Event Player.ReactionTimeArray) > 1;
  • }
  • actions
  • {
  • Global.GridDone = False;
  • Global.GridPositions = Empty Array;
  • For Global Variable(GridLoopY, 0, 5, 1);
  • For Global Variable(GridLoopZ, -3, 3, 1);
  • Global.GridPositions = Append To Array(Global.GridPositions, Global.GridStart + Vector(0, Global.GridLoopY * 1.100,
  • Global.GridLoopZ * 1.100));
  • End;
  • For Player Variable(Event Player, CalculateAverageReactionTimeLoop, 0, Count Of(Event Player.ReactionTimeArray), 1);
  • Event Player.AverageReactionTime += Event Player.ReactionTimeArray[Event Player.CalculateAverageReactionTimeLoop];
  • End;
  • Global.GridDone = True;
  • Event Player.AverageReactionTime /= Count Of(Event Player.ReactionTimeArray);
  • Event Player.CurrentReactionTime = 1000;
  • }
  • }
  • rule("Create x number of balls")
  • disabled rule("---------------------------------------- Modifiers")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.GridDone == True;
  • Global.IsInPregame != True;
  • Global.Mode == 0;
  • }
  • actions
  • {
  • Global.BallPositions = Empty Array;
  • For Global Variable(RandomLoop, 0, Global.GridNumberOfBalls, 1);
  • Global.BallPositions = Append To Array(Global.BallPositions, Random Value In Array(Remove From Array(Global.GridPositions,
  • Global.BallPositions)));
  • End;
  • Wait(0.100, Ignore Condition);
  • Call Subroutine(TeleportBots);
  • }
  • }
  • rule("Create new grid ball if ball is removed")
  • rule("Modifiers HUD")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Count Of(Global.BallPositions) < Global.GridNumberOfBalls;
  • Global.GridDone == True;
  • Global.IsInPregame != True;
  • Global.Mode == 0;
  • }
  • actions
  • {
  • Global.BallPositions = Append To Array(Global.BallPositions, Random Value In Array(Remove From Array(Global.GridPositions,
  • Global.BallPositions)));
  • Call Subroutine(TeleportBots);
  • Loop If Condition Is True;
  • "Title"
  • Create HUD Text(Global.IsInPregame, Null, Custom String(" "), Null, Left, 10, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Wait(0.020, Ignore Condition);
  • Create HUD Text(Global.IsInPregame, Null, Null, Custom String("Select optional modifiers", Global.GridNumberOfBalls), Left, 10,
  • Color(White), Color(White), Color(Orange), Visible To and String, Default Visibility);
  • Wait(0.020, Ignore Condition);
  • "Bunch of empty hud texts to push other text down"
  • Create HUD Text(Global.IsInPregame, Null, Custom String(" "), Null, Left, 10, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Global.IsInPregame, Null, Custom String(" "), Null, Left, 10, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Global.IsInPregame, Null, Custom String(" "), Null, Left, 10, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Wait(0.020, Ignore Condition);
  • "Small ball, inactive"
  • Create HUD Text(Filtered Array(Global.IsInPregame && !Global.SmallBall, True), Custom String("Small targets"), Custom String(
  • "Select with [Ability 2] + [Primary Fire]"), Custom String("The targets are much smaller"), Left, 11, Color(White), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • "Small ball, active"
  • Create HUD Text(Filtered Array(Global.IsInPregame && Global.SmallBall, True), Custom String("Small targets"), Custom String(
  • "Select with [Ability 2] + [Primary Fire]"), Custom String("Targets are much smaller"), Left, 11, Color(Green), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • "Random balls, inactive"
  • Create HUD Text(Filtered Array(Global.IsInPregame && !Global.RandomBalls, True), Custom String("Random target size"),
  • Custom String("Select with [Ability 2] + [Secondary Fire]"), Custom String(
  • "Every time you hit a target the target size changes"), Left, 12, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • "Random balls, active"
  • Create HUD Text(Filtered Array(Global.IsInPregame && Global.RandomBalls, True), Custom String("Random target size"), Custom String(
  • "Select with [Ability 2] + [Secondary Fire]"), Custom String("Every time you hit a target size changes"), Left, 12, Color(
  • Green), Color(White), Color(White), Visible To and String, Default Visibility);
  • "Further away, inactive"
  • Create HUD Text(Filtered Array(Global.IsInPregame && X Component Of(Global.SpawnPosition) == 0, True), Custom String("Sniper"),
  • Custom String("Select with [Ability 2] + [Crouch]"), Custom String("You stand further away"), Left, 13, Color(White), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • "Further away, active"
  • Create HUD Text(Filtered Array(Global.IsInPregame && X Component Of(Global.SpawnPosition) != 0, True), Custom String("Sniper"),
  • Custom String("Select with [Ability 2] + [Crouch]"), Custom String("You stand further away"), Left, 13, Color(Green), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • "Healthy targets, inactive"
  • Create HUD Text(Filtered Array(Global.IsInPregame && !Global.HealthyTargets, True), Custom String("Healthy targets"),
  • Custom String("Select with [Ability 2] + [Interact]"), Custom String("Targets take 5 hits to destroy"), Left, 14, Color(White),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • "Healthy targets, active"
  • Create HUD Text(Filtered Array(Global.IsInPregame && Global.HealthyTargets, True), Custom String("Healthy targets"), Custom String(
  • "Select with [Ability 2] + [Interact]"), Custom String("Targets take 5 hits to destroy"), Left, 14, Color(Green), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • }
  • }
  • disabled rule("----------------------------------------- Standard mode = 1")
  • rule("Select small size modifier")
  • {
  • event
  • {
  • Ongoing - Global;
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • }
  • rule("Create standard mode select bubble")
  • {
  • event
  • conditions
  • {
  • Ongoing - Global;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Is Button Held(Event Player, Button(Primary Fire)) == True;
  • Global.IsInPregame == True;
  • }
  • actions
  • {
  • "Create array for positions of color select effects"
  • Global.ModeSelectBubblePositions[1] = Vector(-20, 8, 5);
  • Create In-World Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Custom String("Standard"),
  • Global.ModeSelectBubblePositions[1] + Vector(0, -1.250, -2.200), 1.250, Do Not Clip, Visible To Position String and Color,
  • Global.Mode == 1 ? Color(Green) : Color(White), Default Visibility);
  • "Create effects"
  • Create Effect(Filtered Array(All Players(All Teams), Global.IsInPregame), Sphere, Global.Mode == 1 ? Color(Green) : Color(White),
  • Global.ModeSelectBubblePositions[1], 0.750, Visible To and Color);
  • If(Global.SmallBall == True);
  • Global.BallRadius = 0.500;
  • Global.SmallBall = False;
  • Else;
  • Global.BallRadius = 0.250;
  • Global.SmallBall = True;
  • End;
  • }
  • }
  • rule("Select standard mode")
  • rule("Random target size")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.RaycastBubbleSelect != False;
  • Distance Between(Event Player.RaycastBubbleSelect, Global.ModeSelectBubblePositions[1]) < 0.750;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Is Button Held(Event Player, Button(Secondary Fire)) == True;
  • Global.IsInPregame == True;
  • }
  • actions
  • {
  • Global.Mode = 1;
  • Play Effect(All Players(All Teams), Good Explosion, Color(Green), Global.ModeSelectBubblePositions[1], 1);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Green), Global.ModeSelectBubblePositions[1], 50);
  • If(Global.RandomBalls == True);
  • Global.RandomBalls = False;
  • Else;
  • Global.RandomBalls = True;
  • End;
  • Call Subroutine(SetBallSize);
  • }
  • }
  • rule("Subroutine - Set random position")
  • rule("Cannot walk")
  • {
  • event
  • {
  • Subroutine;
  • SetRandomPosition;
  • }
  • actions
  • {
  • Global.BallPositions = Append To Array(Global.BallPositions, Global.GridStart + Vector(Random Real(-6, 2), Random Real(0, 4),
  • Random Real(-6, 6)));
  • Call Subroutine(TeleportBots);
  • }
  • }
  • rule("Create ball at random position")
  • {
  • event
  • {
  • Ongoing - Global;
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Mode == 1;
  • Global.IsInPregame != True;
  • Global.NeedToWalk == False;
  • Global.IsInPregame == True;
  • }
  • actions
  • {
  • Global.BallPositions = Empty Array;
  • Call Subroutine(SetRandomPosition);
  • Set Status(Event Player, Null, Rooted, 9999);
  • }
  • }
  • rule("Create new grid ball if ball is removed")
  • rule("Can walk")
  • {
  • event
  • {
  • Ongoing - Global;
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Mode == 1;
  • Global.IsInPregame != True;
  • Count Of(Global.BallPositions) == 0;
  • Global.NeedToWalk == True;
  • Global.IsInPregame == True;
  • }
  • actions
  • {
  • Call Subroutine(SetRandomPosition);
  • Clear Status(Event Player, Rooted);
  • }
  • }
  • disabled rule("----------------------------------------- 360 mode = 2")
  • rule("Location modifier")
  • {
  • event
  • {
  • Ongoing - Global;
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • }
  • rule("Create 360 mode select bubble")
  • {
  • event
  • conditions
  • {
  • Ongoing - Global;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Is Button Held(Event Player, Button(Crouch)) == True;
  • Global.IsInPregame == True;
  • }
  • actions
  • {
  • "Create array for positions of color select effects"
  • Global.ModeSelectBubblePositions[2] = Vector(-20, 6, 5);
  • Create In-World Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Custom String("360"),
  • Global.ModeSelectBubblePositions[2] + Vector(0, -1.250, -1.500), 1.250, Do Not Clip, Visible To Position String and Color,
  • Global.Mode == 2 ? Color(Green) : Color(White), Default Visibility);
  • "Create effects"
  • Create Effect(Filtered Array(All Players(All Teams), Global.IsInPregame), Sphere, Global.Mode == 2 ? Color(Green) : Color(White),
  • Global.ModeSelectBubblePositions[2], 0.750, Visible To and Color);
  • If(Global.SpawnPosition == Vector(0, 1.500, 0));
  • Global.SpawnPosition = Vector(12, 1.500, 0);
  • Else;
  • Global.SpawnPosition = Vector(0, 1.500, 0);
  • End;
  • Teleport(Event Player, Global.SpawnPosition);
  • }
  • }
  • rule("Select 360 mode")
  • rule("Healthy targets")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.RaycastBubbleSelect != False;
  • Distance Between(Event Player.RaycastBubbleSelect, Global.ModeSelectBubblePositions[2]) < 0.750;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Global.IsInPregame == True;
  • }
  • actions
  • {
  • Global.Mode = 2;
  • Play Effect(All Players(All Teams), Good Explosion, Color(Green), Global.ModeSelectBubblePositions[2], 1);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Green), Global.ModeSelectBubblePositions[2], 50);
  • Global.HealthyTargets = !Global.HealthyTargets;
  • Call Subroutine(ResetTargetHealth);
  • }
  • }
  • rule("Subroutine - Set random 360 position")
  • rule("Subroutine - Reset healthy target health")
  • {
  • event
  • {
  • Subroutine;
  • SetRandom360Position;
  • ResetTargetHealth;
  • }
  • actions
  • {
  • Global.BallPositions = Append To Array(Global.BallPositions, Vector(0, 0, 0) + Vector(Random Real(5, 15), Random Real(1, 6),
  • Random Real(5, 15)));
  • Global.BallPositions[0] = Vector(X Component Of(Global.BallPositions[0]) * Random Value In Array(Global.PositiveOrNegative),
  • Y Component Of(Global.BallPositions[0]), Z Component Of(Global.BallPositions[0]) * Random Value In Array(
  • Global.PositiveOrNegative));
  • Call Subroutine(TeleportBots);
  • Wait(0.150, Ignore Condition);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(White), Global.BallPositions[0], 100);
  • Global.CurrentTargetHealth = 4;
  • }
  • }
  • rule("Create ball at random position")
  • rule("Healthy target in-world text")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • actions
  • {
  • Global.Mode == 2;
  • Global.IsInPregame != True;
  • Create In-World Text(Filtered Array(Global.HealthyTargets && Global.CurrentTargetHealth == 4, True), Custom String("■■■■■"),
  • Global.BallPositions[0] + Vector(0, Global.BallRadius, 0), 1, Clip Against Surfaces, Visible To Position and String, Color(
  • Green), Default Visibility);
  • Create In-World Text(Filtered Array(Global.HealthyTargets && Global.CurrentTargetHealth == 3, True), Custom String("■■■■"),
  • Global.BallPositions[0] + Vector(0, Global.BallRadius, 0), 1, Clip Against Surfaces, Visible To Position and String, Color(
  • Orange), Default Visibility);
  • Create In-World Text(Filtered Array(Global.HealthyTargets && Global.CurrentTargetHealth == 2, True), Custom String("■■■"),
  • Global.BallPositions[0] + Vector(0, Global.BallRadius, 0), 1, Clip Against Surfaces, Visible To Position and String, Color(
  • Orange), Default Visibility);
  • Create In-World Text(Filtered Array(Global.HealthyTargets && Global.CurrentTargetHealth == 1, True), Custom String("■■"),
  • Global.BallPositions[0] + Vector(0, Global.BallRadius, 0), 1, Clip Against Surfaces, Visible To Position and String, Color(
  • Orange), Default Visibility);
  • Create In-World Text(Filtered Array(Global.HealthyTargets && Global.CurrentTargetHealth == 0, True), Custom String("■"),
  • Global.BallPositions[0] + Vector(0, Global.BallRadius, 0), 1, Clip Against Surfaces, Visible To Position and String, Color(
  • Red), Default Visibility);
  • }
  • }
  • actions
  • disabled rule("---------------------------------------- Mode is about to start")
  • {
  • event
  • {
  • Global.BallPositions = Empty Array;
  • Call Subroutine(SetRandom360Position);
  • Ongoing - Global;
  • }
  • }
  • rule("Create new grid ball if ball is removed")
  • rule("Countdown")
  • {
  • event
  • {
  • Ongoing - Global;
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Mode == 2;
  • Global.IsInPregame != True;
  • Count Of(Global.BallPositions) == 0;
  • }
  • actions
  • {
  • Call Subroutine(SetRandom360Position);
  • Create Effect(All Players(All Teams), Sphere, Color(Aqua), Event Player, 2, Visible To Position and Radius);
  • Global.CountdownSphereEffect = Last Created Entity;
  • Wait(0.050, Ignore Condition);
  • Global.CountdownActive = True;
  • Event Player.ShotsFired = 0;
  • Event Player.ShotsLanded = 0;
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Small Message(All Players(All Teams), Custom String("3..."));
  • Wait(1, Ignore Condition);
  • Small Message(All Players(All Teams), Custom String("2..."));
  • Wait(1, Ignore Condition);
  • Small Message(All Players(All Teams), Custom String("1..."));
  • Wait(1, Ignore Condition);
  • Small Message(All Players(All Teams), Custom String("GO!"));
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(White), Event Player, 100);
  • Call Subroutine(EnableFire);
  • Global.CountdownActive = False;
  • Destroy Effect(Global.CountdownSphereEffect);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Aqua), Event Player, 10);
  • }
  • }
  • rule("Create noise")
  • disabled rule("--------------------------------------Timer")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Start Timer")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Mode == 2;
  • Global.IsInPregame != True;
  • Global.CountdownActive != True;
  • }
  • actions
  • {
  • Create Effect(All Players(All Teams), Beacon Sound, Color(White), Global.BallPositions[0], 150, Visible To Position and Radius);
  • Global.NoiseEffect = Last Created Entity;
  • Wait(0.050, Abort When False);
  • Set Match Time(60.500);
  • Event Player.CurrentReactionTime = 0;
  • Call Subroutine(ChaseReactionTime);
  • }
  • }
  • rule("Remove noise")
  • rule("End of timer")
  • {
  • event
  • {
  • Ongoing - Global;
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsInPregame == True;
  • Match Time < 0.500;
  • }
  • actions
  • {
  • Destroy Effect(Global.NoiseEffect);
  • Set Match Time(3599);
  • Global.CountdownActive = True;
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Red), Event Player, 10);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(White), Event Player, 100);
  • Create Effect(All Players(All Teams), Sphere, Color(Red), Event Player, 2, Visible To Position and Radius);
  • Global.CountdownSphereEffect = Last Created Entity;
  • Wait(3, Ignore Condition);
  • Destroy Effect(Global.CountdownSphereEffect);
  • Global.IsInPregame = True;
  • Global.CountdownActive = False;
  • Event Player.CurrentReactionTime = 1000;
  • }
  • }
  • disabled rule("----------------------------------------- Strafing targets mode = 3")
  • disabled rule("------------------------------------------- Bubbles")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Create strafing mode select bubble")
  • rule("Create bubble effects")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • "Create array for positions of color select effects"
  • Global.ModeSelectBubblePositions[3] = Vector(-20, 4, 5);
  • Create In-World Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Custom String("Strafing"),
  • Global.ModeSelectBubblePositions[3] + Vector(0, -1.250, -2.150), 1.250, Do Not Clip, Visible To Position String and Color,
  • Global.Mode == 3 ? Color(Green) : Color(White), Default Visibility);
  • "Create effects"
  • Create Effect(Filtered Array(All Players(All Teams), Global.IsInPregame), Sphere, Global.Mode == 3 ? Color(Green) : Color(White),
  • Global.ModeSelectBubblePositions[3], 0.750, Visible To and Color);
  • Create Effect(Filtered Array(All Players(All Teams), Count Of(Global.BallPositions) > 0), Sphere, Color(Aqua),
  • Global.BallPositions[0], Global.BallRadius, Visible To Position and Radius);
  • Create Effect(Filtered Array(All Players(All Teams), Count Of(Global.BallPositions) > 1), Sphere, Color(Aqua),
  • Global.BallPositions[1], Global.BallRadius, Visible To Position and Radius);
  • Create Effect(Filtered Array(All Players(All Teams), Count Of(Global.BallPositions) > 2), Sphere, Color(Aqua),
  • Global.BallPositions[2], Global.BallRadius, Visible To Position and Radius);
  • Create Effect(Filtered Array(All Players(All Teams), Count Of(Global.BallPositions) > 3), Sphere, Color(Aqua),
  • Global.BallPositions[3], Global.BallRadius, Visible To Position and Radius);
  • Create Effect(Filtered Array(All Players(All Teams), Count Of(Global.BallPositions) > 4), Sphere, Color(Aqua),
  • Global.BallPositions[4], Global.BallRadius, Visible To Position and Radius);
  • }
  • }
  • rule("Select strafing mode")
  • rule("Ball is destroyed in pregame")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Event Player.RaycastBubbleSelect != False;
  • Distance Between(Event Player.RaycastBubbleSelect, Global.ModeSelectBubblePositions[3]) < 0.750;
  • Global.IsInPregame == True;
  • Count Of(Global.BallPositions) == 0;
  • }
  • actions
  • {
  • Global.Mode = 3;
  • Play Effect(All Players(All Teams), Good Explosion, Color(Green), Global.ModeSelectBubblePositions[3], 1);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Green), Global.ModeSelectBubblePositions[3], 50);
  • Global.BallPositions = Empty Array;
  • Global.BallPositions = Append To Array(Global.BallPositions, Vector(-12, 1.500, 0));
  • }
  • }
  • rule("Create ball at random position")
  • rule("Subroutine - FiringWeapon")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Mode == 3;
  • Global.IsInPregame != True;
  • Subroutine;
  • FiringWeapon;
  • }
  • actions
  • {
  • Global.BallPositions = Empty Array;
  • Call Subroutine(SetRandomPosition);
  • Call Subroutine(TeleportBots);
  • Event Player.FacingDirection = Facing Direction Of(Event Player);
  • If(Event Player.ProjectileDelay > 0);
  • Wait(Event Player.ProjectileDelay, Ignore Condition);
  • Event Player.FacingDirection = Facing Direction Of(Event Player);
  • End;
  • Event Player.ShotsFired += 1;
  • Event Player.EyeLocationWhenFired = Eye Position(Event Player);
  • Event Player.RaycastPrimaryFire = Ray Cast Hit Position(Event Player.EyeLocationWhenFired,
  • Event Player.EyeLocationWhenFired + Event Player.FacingDirection * 40, Null, All Players(All Teams), False);
  • Event Player.RaycastDistance = Distance Between(Event Player, Event Player.RaycastPrimaryFire);
  • If(Event Player.IsProjectileHero);
  • Wait(Distance Between(Event Player, Global.BallPositions[0]) / Event Player.ProjectileSpeed, Ignore Condition);
  • End;
  • "Loop through all ball positions"
  • For Global Variable(BallPositionsCheckLoop, 0, Count Of(Global.BallPositions), 1);
  • "Loop from player position to wall"
  • For Player Variable(Event Player, ShootLoop, 0, Event Player.RaycastDistance, 0.250);
  • "Set current position in loop"
  • Event Player.CurrentCheckPosition = Ray Cast Hit Position(Event Player.EyeLocationWhenFired,
  • Event Player.EyeLocationWhenFired + Event Player.FacingDirection * Event Player.ShootLoop, All Players(All Teams),
  • Event Player, True);
  • "Check if current loop position is in ball"
  • If(Distance Between(Global.BallPositions[Global.BallPositionsCheckLoop], Event Player.CurrentCheckPosition)
  • < Global.BallRadius + Event Player.ProjectileSize);
  • "If in healthy mode and target health is higher than 0"
  • If(Global.HealthyTargets && Global.CurrentTargetHealth > 0);
  • Global.CurrentTargetHealth -= 1;
  • Else;
  • If(Global.HealthyTargets);
  • Call Subroutine(ResetTargetHealth);
  • End;
  • "Remove current ball from array"
  • Global.BallPositions = Remove From Array(Global.BallPositions, Global.BallPositions[Global.BallPositionsCheckLoop]);
  • End;
  • "Set position for effects to play at"
  • Event Player.HitPosition[0] = Event Player.CurrentCheckPosition;
  • "Play a bunch of effects at hit location"
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(Yellow), Event Player.HitPosition, Global.BallRadius * 100);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Sky Blue), Event Player.HitPosition, Global.BallRadius * 1);
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Blue), Event Player.HitPosition, Global.BallRadius * 2);
  • Event Player.ShotsLanded += 1;
  • Global.BallPositionsCheckLoop = 20;
  • Event Player.ShootLoop = 40;
  • Call Subroutine(SetBallSize);
  • End;
  • End;
  • End;
  • }
  • }
  • rule("Create new grid ball if ball is removed")
  • rule("Using Primary Fire on most heroes")
  • {
  • event
  • {
  • Ongoing - Global;
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Mode == 3;
  • Global.IsInPregame != True;
  • Count Of(Global.BallPositions) == 0;
  • Hero Of(Event Player) != Hero(Mei);
  • Hero Of(Event Player) != Hero(Hanzo);
  • Hero Of(Event Player) != Hero(Reinhardt);
  • Hero Of(Event Player) != Hero(Zarya);
  • Is Firing Primary(Event Player) == True;
  • }
  • actions
  • {
  • Call Subroutine(SetRandomPosition);
  • If(Is Button Held(Event Player, Button(Secondary Fire)) != True);
  • Cancel Primary Action(Event Player);
  • End;
  • Call Subroutine(FiringWeapon);
  • }
  • }
  • rule("Set stuff to move ball")
  • rule("Using Secondary fire with some heroes")
  • {
  • event
  • {
  • Ongoing - Global;
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Mode == 3;
  • Global.IsInPregame != True;
  • Array Contains(Array(Hero(Mei), Hero(Zarya), Hero(Soldier: 76)), Hero Of(Event Player)) == True;
  • Is Firing Secondary(Event Player) == True;
  • }
  • actions
  • {
  • Global.MovingTime = Random Integer(0.500, 1.500);
  • Global.MovingDirection = Random Value In Array(Global.PositiveOrNegative);
  • Wait(Global.MovingTime, Ignore Condition);
  • Loop If Condition Is True;
  • Call Subroutine(FiringWeapon);
  • }
  • }
  • rule("Move ball")
  • rule("Effect where player hit ball")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Mode == 3;
  • Global.IsInPregame != True;
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Global.BallPositions[0] = Global.BallPositions[0] + Vector(0, 0, 0.100 * Global.MovingDirection);
  • Call Subroutine(TeleportBots);
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • Create Effect(Is True For All(Event Player.HitPosition, Y Component Of(Current Array Element) != 0), Sphere, Color(Red),
  • Event Player.HitPosition, Max(Event Player.ProjectileSize, 0.050), Visible To Position and Radius);
  • }
  • }
  • rule("Is ball out of bounds on the negative side")
  • rule("Remove hit effect after period")
  • {
  • event
  • {
  • Ongoing - Global;
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Mode == 3;
  • Global.IsInPregame != True;
  • Z Component Of(Global.BallPositions[0]) < -12;
  • Y Component Of(Event Player.HitPosition[0]) != 0;
  • }
  • actions
  • {
  • Global.MovingDirection = 1;
  • Wait(0.750, Abort When False);
  • Event Player.HitPosition[0] = Vector(0, 0, -100);
  • }
  • }
  • rule("Is ball out of bounds on the positive side")
  • disabled rule("----------------------------------------- Grid mode = 0")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Mode == 3;
  • Global.IsInPregame != True;
  • Z Component Of(Global.BallPositions[0]) > 12;
  • }
  • actions
  • {
  • Global.MovingDirection = -1;
  • }
  • }
  • disabled rule("--- Color select")
  • rule("Create grid positions array")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Create color select bubbles and locations")
  • {
  • event
  • conditions
  • {
  • Ongoing - Global;
  • Global.Mode == 0;
  • Global.IsInPregame != True;
  • }
  • actions
  • {
  • Global.BubbleColor = Color(Aqua);
  • Wait(1, Ignore Condition);
  • Create In-World Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Custom String("Target color"), First Of(
  • Global.ColorSelectBubblePositions) + Vector(0, 0, 0), 1.250, Do Not Clip, Visible To Position String and Color,
  • Global.BubbleColor, Default Visibility);
  • "Create array for positions of color select effects"
  • Global.ColorSelectBubblePositions = Array(Vector(5, 10, -20), Vector(5, 8.500, -20), Vector(5, 7, -20), Vector(5, 5.500, -20),
  • Vector(5, 4, -20));
  • "Create effects"
  • Create Effect(Filtered Array(All Players(All Teams), Global.IsInPregame), Sphere, Color(Aqua),
  • Global.ColorSelectBubblePositions[0], 0.500, Visible To);
  • Create Effect(Filtered Array(All Players(All Teams), Global.IsInPregame), Sphere, Color(White),
  • Global.ColorSelectBubblePositions[1], 0.500, Visible To);
  • Create Effect(Filtered Array(All Players(All Teams), Global.IsInPregame), Sphere, Color(Red), Global.ColorSelectBubblePositions[2],
  • 0.500, Visible To);
  • Create Effect(Filtered Array(All Players(All Teams), Global.IsInPregame), Sphere, Color(Lime Green),
  • Global.ColorSelectBubblePositions[3], 0.500, Visible To);
  • Create Effect(Filtered Array(All Players(All Teams), Global.IsInPregame), Sphere, Color(Violet),
  • Global.ColorSelectBubblePositions[4], 0.500, Visible To);
  • Global.GridDone = False;
  • Global.GridPositions = Empty Array;
  • For Global Variable(GridLoopY, 0, 5, 1);
  • For Global Variable(GridLoopZ, -3, 3, 1);
  • Global.GridPositions = Append To Array(Global.GridPositions, Global.GridStart + Vector(0, Global.GridLoopY * 1.100,
  • Global.GridLoopZ * 1.100));
  • End;
  • End;
  • Global.GridDone = True;
  • }
  • }
  • rule("Select aqua")
  • rule("Create x number of balls")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Event Player.RaycastBubbleSelect != False;
  • Distance Between(Event Player.RaycastBubbleSelect, Global.ColorSelectBubblePositions[0]) < 0.500;
  • Global.GridDone == True;
  • Global.IsInPregame != True;
  • Global.Mode == 0;
  • }
  • actions
  • {
  • Global.BubbleColor = Color(Aqua);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Aqua), Global.ColorSelectBubblePositions[0], 1);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Aqua), Global.ColorSelectBubblePositions[0], 50);
  • Global.BallPositions = Empty Array;
  • For Global Variable(RandomLoop, 0, Global.GridNumberOfBalls, 1);
  • Global.BallPositions = Append To Array(Global.BallPositions, Random Value In Array(Remove From Array(Global.GridPositions,
  • Global.BallPositions)));
  • End;
  • }
  • }
  • rule("Select white")
  • rule("Create new grid ball if ball is removed")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Event Player.RaycastBubbleSelect != False;
  • Distance Between(Event Player.RaycastBubbleSelect, Global.ColorSelectBubblePositions[1]) < 0.500;
  • Count Of(Global.BallPositions) < Global.GridNumberOfBalls;
  • Global.GridDone == True;
  • Global.IsInPregame != True;
  • Global.Mode == 0;
  • }
  • actions
  • {
  • Global.BubbleColor = Color(White);
  • Play Effect(All Players(All Teams), Good Explosion, Color(White), Global.ColorSelectBubblePositions[1], 1);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(White), Global.ColorSelectBubblePositions[1], 50);
  • Global.BallPositions = Append To Array(Global.BallPositions, Random Value In Array(Remove From Array(Global.GridPositions,
  • Global.BallPositions)));
  • Loop If Condition Is True;
  • }
  • }
  • rule("Select red")
  • disabled rule("----------------------------------------- Standard mode = 1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • Ongoing - Global;
  • }
  • }
  • conditions
  • rule("Subroutine - Set random position")
  • {
  • event
  • {
  • Event Player.RaycastBubbleSelect != False;
  • Distance Between(Event Player.RaycastBubbleSelect, Global.ColorSelectBubblePositions[2]) < 0.500;
  • Subroutine;
  • SetRandomPosition;
  • }
  • actions
  • {
  • Global.BubbleColor = Color(Red);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Red), Global.ColorSelectBubblePositions[2], 1);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Red), Global.ColorSelectBubblePositions[2], 50);
  • Global.BallPositions = Append To Array(Global.BallPositions, Global.GridStart + Vector(Random Real(-6, 2), Random Real(0, 4),
  • Random Real(-6, 6)));
  • }
  • }
  • rule("Select lime green")
  • rule("Create ball at random position")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Event Player.RaycastBubbleSelect != False;
  • Distance Between(Event Player.RaycastBubbleSelect, Global.ColorSelectBubblePositions[3]) < 0.500;
  • Global.Mode == 1;
  • Global.IsInPregame != True;
  • }
  • actions
  • {
  • Global.BubbleColor = Color(Lime Green);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Lime Green), Global.ColorSelectBubblePositions[3], 1);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Lime Green), Global.ColorSelectBubblePositions[3], 50);
  • Global.BallPositions = Empty Array;
  • Call Subroutine(SetRandomPosition);
  • }
  • }
  • rule("Select lime violet")
  • rule("Create new grid ball if ball is removed")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Event Player.RaycastBubbleSelect != False;
  • Distance Between(Event Player.RaycastBubbleSelect, Global.ColorSelectBubblePositions[4]) < 0.500;
  • Global.Mode == 1;
  • Global.IsInPregame != True;
  • Count Of(Global.BallPositions) == 0;
  • }
  • actions
  • {
  • Global.BubbleColor = Color(Violet);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Violet), Global.ColorSelectBubblePositions[4], 1);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Violet), Global.ColorSelectBubblePositions[4], 50);
  • Call Subroutine(SetRandomPosition);
  • }
  • }
  • disabled rule("--- Size select")
  • disabled rule("----------------------------------------- Awareness mode = 2")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Create color select bubbles and locations")
  • rule("Subroutine - Set random 360 position")
  • {
  • event
  • {
  • Ongoing - Global;
  • Subroutine;
  • SetRandom360Position;
  • }
  • actions
  • {
  • Global.BubbleColor = Color(Aqua);
  • Wait(1, Ignore Condition);
  • Create In-World Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Custom String("Target size"), First Of(
  • Global.SizeBubblePositions) + Vector(0, 0, 0), 1.250, Do Not Clip, Visible To Position String and Color, Color(Gray),
  • Default Visibility);
  • "Create array for positions of color select effects"
  • Global.SizeBubblePositions = Array(Vector(-5, 10, -20), Vector(-5, 8.500, -20), Vector(-5, 7, -20), Vector(-5, 5.500, -20));
  • "Create effects"
  • Create Effect(Filtered Array(All Players(All Teams), Global.IsInPregame), Sphere, Global.BallRadius == 0.500 ? Color(Green)
  • : Color(White), Global.SizeBubblePositions[0], 0.500, Visible To and Color);
  • Create Effect(Filtered Array(All Players(All Teams), Global.IsInPregame), Sphere, Global.BallRadius == 0.400 ? Color(Green)
  • : Color(White), Global.SizeBubblePositions[1], 0.400, Visible To and Color);
  • Create Effect(Filtered Array(All Players(All Teams), Global.IsInPregame), Sphere, Global.BallRadius == 0.300 ? Color(Green)
  • : Color(White), Global.SizeBubblePositions[2], 0.300, Visible To and Color);
  • Create Effect(Filtered Array(All Players(All Teams), Global.IsInPregame), Sphere, Global.BallRadius == 0.200 ? Color(Green)
  • : Color(White), Global.SizeBubblePositions[3], 0.200, Visible To and Color);
  • Global.BallPositions = Append To Array(Global.BallPositions, Vector(0, 0, 0) + Vector(Random Real(5, 15), Random Real(1, 6),
  • Random Real(5, 15)));
  • Global.BallPositions[0] = Vector(X Component Of(Global.BallPositions[0]) * Random Value In Array(Global.PositiveOrNegative),
  • Y Component Of(Global.BallPositions[0]), Z Component Of(Global.BallPositions[0]) * Random Value In Array(
  • Global.PositiveOrNegative));
  • Wait(0.150, Ignore Condition);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(White), Global.BallPositions[0], 100);
  • }
  • }
  • rule("Select 0.500 size")
  • rule("Create ball at random position")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Event Player.RaycastBubbleSelect != False;
  • Distance Between(Event Player.RaycastBubbleSelect, Global.SizeBubblePositions[0]) < 0.500;
  • Global.Mode == 2;
  • Global.IsInPregame != True;
  • }
  • actions
  • {
  • Global.BallRadius = 0.500;
  • Global.SelectedBallRadius = 0.500;
  • Play Effect(All Players(All Teams), Good Explosion, Color(Green), Global.SizeBubblePositions[0], 1);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Green), Global.SizeBubblePositions[0], 50);
  • Global.BallPositions = Empty Array;
  • Call Subroutine(SetRandom360Position);
  • }
  • }
  • rule("Select 0.400 size")
  • rule("Create new grid ball if ball is removed")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Event Player.RaycastBubbleSelect != False;
  • Distance Between(Event Player.RaycastBubbleSelect, Global.SizeBubblePositions[1]) < 0.400;
  • Global.Mode == 2;
  • Global.IsInPregame != True;
  • Count Of(Global.BallPositions) == 0;
  • }
  • actions
  • {
  • Global.BallRadius = 0.400;
  • Global.SelectedBallRadius = 0.400;
  • Play Effect(All Players(All Teams), Good Explosion, Color(Green), Global.SizeBubblePositions[1], 1);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Green), Global.SizeBubblePositions[1], 50);
  • Call Subroutine(SetRandom360Position);
  • }
  • }
  • rule("Select 0.300 size")
  • rule("Create noise")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Event Player.RaycastBubbleSelect != False;
  • Distance Between(Event Player.RaycastBubbleSelect, Global.SizeBubblePositions[2]) < 0.300;
  • Global.Mode == 2;
  • Global.IsInPregame != True;
  • }
  • actions
  • {
  • Global.BallRadius = 0.300;
  • Global.SelectedBallRadius = 0.300;
  • Play Effect(All Players(All Teams), Good Explosion, Color(Green), Global.SizeBubblePositions[2], 1);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Green), Global.SizeBubblePositions[2], 50);
  • Create Effect(All Players(All Teams), Beacon Sound, Color(White), Global.BallPositions[0], 150, Visible To Position and Radius);
  • Global.NoiseEffect = Last Created Entity;
  • }
  • }
  • rule("Select 0.200 size")
  • rule("Remove noise")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Event Player.RaycastBubbleSelect != False;
  • Distance Between(Event Player.RaycastBubbleSelect, Global.SizeBubblePositions[3]) < 0.200;
  • Global.IsInPregame == True;
  • }
  • actions
  • {
  • Global.BallRadius = 0.200;
  • Global.SelectedBallRadius = 0.200;
  • Play Effect(All Players(All Teams), Good Explosion, Color(Green), Global.SizeBubblePositions[3], 1);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Green), Global.SizeBubblePositions[3], 50);
  • Destroy Effect(Global.NoiseEffect);
  • }
  • }
  • disabled rule("--- Modifiers select")
  • disabled rule("----------------------------------------- Strafing targets mode = 3")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Create modifier select bubbles and locations")
  • rule("Create ball at random position")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • "Create array for positions of color select effects"
  • Global.ModifierSelectBubblePositions = Array(Vector(-20, 10, -5), Vector(-20, 8, -5), Vector(-20, 6, -5), Vector(-20, 4, 5),
  • Vector(-20, 2, -5));
  • "Healthy targets"
  • Create In-World Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Custom String("Healthy targets"),
  • Global.ModifierSelectBubblePositions[0] + Vector(0, -1.250, -3), 1.250, Do Not Clip, Visible To Position String and Color,
  • Global.HealthyTargets == 1 ? Color(Green) : Color(White), Default Visibility);
  • Create Effect(Filtered Array(All Players(All Teams), Global.IsInPregame), Sphere, Global.HealthyTargets ? Color(Green) : Color(
  • White), Global.ModifierSelectBubblePositions[0], 0.750, Visible To and Color);
  • "Random sizes"
  • Create In-World Text(Filtered Array(All Players(All Teams), Global.IsInPregame), Custom String("Random sizes"),
  • Global.ModifierSelectBubblePositions[1] + Vector(0, -1.250, -3), 1.250, Do Not Clip, Visible To Position String and Color,
  • Global.RandomBalls == 1 ? Color(Green) : Color(White), Default Visibility);
  • Create Effect(Filtered Array(All Players(All Teams), Global.IsInPregame), Sphere, Global.RandomBalls ? Color(Green) : Color(White),
  • Global.ModifierSelectBubblePositions[1], 0.750, Visible To and Color);
  • }
  • }
  • rule("Toggle healthy targets")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.RaycastBubbleSelect != False;
  • Distance Between(Event Player.RaycastBubbleSelect, Global.ModifierSelectBubblePositions[0]) < 0.750;
  • Global.Mode == 3;
  • Global.IsInPregame != True;
  • }
  • actions
  • {
  • Global.HealthyTargets = !Global.HealthyTargets;
  • Call Subroutine(ResetTargetHealth);
  • Play Effect(All Players(All Teams), Good Explosion, Global.HealthyTargets ? Color(Green) : Color(White),
  • Global.ModifierSelectBubblePositions[0], 1);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Global.HealthyTargets ? Color(Green) : Color(White),
  • Global.ModifierSelectBubblePositions[0], 50);
  • Global.BallPositions = Empty Array;
  • Call Subroutine(SetRandomPosition);
  • }
  • }
  • rule("Healthy targets health bar")
  • rule("Create new grid ball if ball is removed")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Global.Mode == 3;
  • Global.IsInPregame != True;
  • Count Of(Global.BallPositions) == 0;
  • }
  • actions
  • {
  • Create Progress Bar In-World Text(Filtered Array(All Players(All Teams), Global.HealthyTargets),
  • 100 / 4 * Event Player.CurrentBubbleHealth, Null, Update Every Frame(Position Of(Event Player) + Vector(0,
  • Global.BallRadius * 1.100, 0)), 0.050, Clip Against Surfaces, Color(Red), Color(White), Visible To Position Values and Color,
  • Default Visibility);
  • Call Subroutine(SetRandomPosition);
  • }
  • }
  • rule("Subroutine - Reset healthy target health")
  • rule("Set stuff to move ball")
  • {
  • event
  • {
  • Subroutine;
  • ResetTargetHealth;
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Mode == 3;
  • Global.IsInPregame != True;
  • }
  • actions
  • {
  • Filtered Array(All Players(All Teams), Is Dummy Bot(Current Array Element)).CurrentBubbleHealth = 4;
  • Global.MovingTime = Random Integer(0.500, 1.500);
  • Global.MovingDirection = Random Value In Array(Global.PositiveOrNegative);
  • Wait(Global.MovingTime, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Toggle random sized targets")
  • rule("Move ball")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Event Player.RaycastBubbleSelect != False;
  • Distance Between(Event Player.RaycastBubbleSelect, Global.ModifierSelectBubblePositions[1]) < 0.750;
  • Global.Mode == 3;
  • Global.IsInPregame != True;
  • }
  • actions
  • {
  • Global.RandomBalls = !Global.RandomBalls;
  • Call Subroutine(SetBallSize);
  • Play Effect(All Players(All Teams), Good Explosion, Global.RandomBalls ? Color(Green) : Color(White),
  • Global.ModifierSelectBubblePositions[1], 1);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Global.RandomBalls ? Color(Green) : Color(White),
  • Global.ModifierSelectBubblePositions[1], 50);
  • Global.BallPositions[0] = Global.BallPositions[0] + Vector(0, 0, 0.150 * Global.MovingDirection);
  • Wait(0.025, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Subroutine - Set random ball size")
  • rule("Is ball out of bounds on the negative side")
  • {
  • event
  • {
  • Subroutine;
  • SetBallSize;
  • Ongoing - Global;
  • }
  • actions
  • conditions
  • {
  • If(Global.RandomBalls);
  • Global.BallRadius = Random Real(0.150, 0.550);
  • Else;
  • Global.BallRadius = Global.SelectedBallRadius;
  • End;
  • Global.Mode == 3;
  • Global.IsInPregame != True;
  • Z Component Of(Global.BallPositions[0]) < -12;
  • }
  • }
  • disabled rule("--- Special cases")
  • {
  • event
  • actions
  • {
  • Ongoing - Global;
  • Global.MovingDirection = 1;
  • }
  • }
  • rule("Cancel Mccree right click")
  • rule("Is ball out of bounds on the positive side")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • McCree;
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Firing Secondary(Event Player) == True;
  • Global.Mode == 3;
  • Global.IsInPregame != True;
  • Z Component Of(Global.BallPositions[0]) > 12;
  • }
  • actions
  • {
  • Wait(0.780, Abort When False);
  • Cancel Primary Action(Event Player);
  • Global.MovingDirection = -1;
  • }
  • }
Join the Workshop.codes Discord