Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "Created by Provoxin#1418 | Ultimate Nanoblade Practice - Practice your dragonblades with an arena of bots, tuning your experience with a large amount of gameplay settings to tweak for any specific need. Press interact to go to mode settings. View/change keybinds in the first few rules of the workshop script. Code: OREBZ - Discord: Provoxin#5368"
  • }
  • lobby
  • {
  • Allow Players Who Are In Queue: Yes
  • Max Spectators: 12
  • Max Team 1 Players: 2
  • Max Team 2 Players: 0
  • }
  • modes
  • {
  • Skirmish
  • {
  • enabled maps
  • {
  • Workshop Chamber
  • }
  • }
  • General
  • {
  • Game Mode Start: Manual
  • Respawn Time Scalar: 0%
  • }
  • }
  • heroes
  • {
  • Team 1
  • {
  • enabled heroes
  • {
  • Genji
  • }
  • }
  • General
  • {
  • Genji
  • {
  • Infinite Ultimate Duration: On
  • }
  • }
  • }
  • }
  • variables
  • {
  • global:
  • 0: genjiPlayer
  • 1: reset
  • 2: centerPos
  • 3: botHeroes
  • 4: shieldHeroes
  • 7: orderedBots
  • 8: inSettings
  • 9: undoStack
  • 10: botTimeout
  • 11: floatSpherePositions
  • 12: boolSpherePositions
  • 6: orderedBots
  • 7: inSettings
  • 8: undoStack
  • 9: botTimeout
  • 10: floatSpherePositions
  • 11: gameplayBoolSpherePositions
  • 12: generalBoolSpherePositions
  • 13: botControlsSpherePositions
  • 14: returnPos
  • 15: floatSettingsArray
  • 16: floatSettingsStrings
  • 17: boolSettingsArray
  • 18: boolSettingsStrings
  • 19: floatSettingsInfoStrings
  • 20: loopIndex
  • 21: undoSpherePosition
  • 22: cancelBlade
  • 23: teleToCenter
  • 24: preventShieldRegen
  • 25: endlessModeRespawnTime
  • 26: numBots
  • 15: gameplayBoolSettingsArray
  • 16: gameplayBoolSettingsStrings
  • 17: generalBoolSettingsArray
  • 18: generalBoolSettingsStrings
  • 19: floatSettingsArray
  • 20: floatSettingsStrings
  • 21: floatSettingsInfoStrings
  • 22: loopIndex
  • 23: undoSpherePosition
  • 27: endlessModeRespawnTime
  • 28: numBots
  • 127: DX
  • player:
  • 0: normalizedDistance
  • 1: angles
  • 2: temp
  • 3: inSettings
  • 4: isChangingBot
  • 5: selectedBotToChange
  • 6: selectedBotToAddOrRemove
  • 7: selectedSphereIndex
  • 8: isSetup
  • 9: needsDash
  • 5: selectedBot
  • 6: selectedSphereIndex
  • 7: isSetup
  • 8: needsDash
  • 9: transceHoTid
  • }
  • subroutines
  • {
  • 0: resetPlayer
  • 1: giveNano
  • 2: returnToArena
  • }
  • rule("​ Made by Provoxin - Contact me on Discord @Provoxin#5368")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.DX = 0;
  • }
  • }
  • rule("​ /// CHANGE DEFAULT SETTINGS HERE ///")
  • rule("​Get default settings")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • "default bots"
  • Global.botHeroes = Array(Hero(Ana), Hero(Ashe), Hero(Hanzo), Hero(McCree), Hero(Soldier: 76), Hero(Zenyatta), Hero(Moira), Hero(
  • Widowmaker), Hero(Baptiste), Hero(Mercy));
  • "if true, cancel blade when resetting bots; if false, never cancel blade unless player requests a reset (ult charge voice line)"
  • Global.cancelBlade = False;
  • Global.generalBoolSettingsArray[0] = Workshop Setting Toggle(Custom String("General Settings"), Custom String(
  • "Cancel Blade on Reset"), False);
  • "if true, teleport to the center of the ring when killing a whole wave; if false, do nothing NOTE - using this without cancelBlade can result in it bugging out when dashing after the player kills the last bot in the wave"
  • Global.teleToCenter = False;
  • Global.generalBoolSettingsArray[1] = Workshop Setting Toggle(Custom String("General Settings"), Custom String(
  • "​Teleport to Center on Reset"), False);
  • "if true, damage heroes with shields/passive regen for a miniscule amount often enough to prevent shield regen/self healing; if false, let these heroes regen health"
  • Global.preventShieldRegen = True;
  • Global.generalBoolSettingsArray[2] = Workshop Setting Toggle(Custom String("General Settings"), Custom String(
  • "​Prevent Shield Regeneration"), True);
  • "time it takes for each bot to respawn after dying in endless mode"
  • Global.endlessModeRespawnTime = 0.250;
  • Global.endlessModeRespawnTime = Workshop Setting Real(Custom String("General Settings"), Custom String(
  • "​Endless Mode Respawn Time"), 0.250, 0, 10);
  • "the number of bots the game will create at the start"
  • Global.numBots = 6;
  • "default bots"
  • Global.botHeroes = Array(Hero(Ana), Hero(Ashe), Hero(Hanzo), Hero(McCree), Hero(Soldier: 76), Hero(Zenyatta));
  • Global.numBots = Workshop Setting Integer(Custom String("General Settings"), Custom String("​Number of Bots at Start"), 6, 0, 10);
  • "defaults for non-true/false values (currently only spawn radius)"
  • Global.floatSettingsArray = Empty Array;
  • "spawn radius"
  • Global.floatSettingsArray[0] = 7.500;
  • Global.floatSettingsArray[0] = Workshop Setting Real(Custom String("Arena Modifiers"), Custom String("Spawn Radius"), 7.500, 0,
  • 15);
  • "defaults for spheres"
  • Global.boolSettingsArray = Empty Array;
  • "nanoEnabled, nanoVFXEnabled"
  • Global.boolSettingsArray[0] = Array(True, True);
  • "botMovementEnabled"
  • Global.boolSettingsArray[1] = False;
  • "instakillEnabled"
  • Global.boolSettingsArray[2] = False;
  • "infiniteDashEnabled"
  • Global.boolSettingsArray[3] = False;
  • "floatingBotsEnabled"
  • Global.boolSettingsArray[4] = False;
  • "transcenenceEnabled"
  • Global.boolSettingsArray[5] = False;
  • "invisibleBotsEnabled"
  • Global.boolSettingsArray[6] = False;
  • "endlessEnabled"
  • Global.boolSettingsArray[7] = False;
  • Global.gameplayBoolSettingsArray = Empty Array;
  • Global.gameplayBoolSettingsArray[0] = Array(Workshop Setting Toggle(Custom String("Gameplay Modifiers"), Custom String(
  • "Nanoboost"), True), Workshop Setting Toggle(Custom String("Gameplay Modifiers"), Custom String("​Nanoboost VFX"), True));
  • Global.gameplayBoolSettingsArray[1] = Workshop Setting Toggle(Custom String("Gameplay Modifiers"), Custom String("​Bot Movement"),
  • False);
  • Global.gameplayBoolSettingsArray[2] = Workshop Setting Toggle(Custom String("Gameplay Modifiers"), Custom String("​Instakill"),
  • False);
  • Global.gameplayBoolSettingsArray[3] = Workshop Setting Toggle(Custom String("Gameplay Modifiers"), Custom String(
  • "​Infinite Dash"), False);
  • Global.gameplayBoolSettingsArray[4] = Workshop Setting Toggle(Custom String("Gameplay Modifiers"), Custom String(
  • "​Floating Bots"), False);
  • Global.gameplayBoolSettingsArray[5] = Workshop Setting Toggle(Custom String("Gameplay Modifiers"), Custom String(
  • "​Transcendence Healing"), False);
  • Global.gameplayBoolSettingsArray[6] = Workshop Setting Toggle(Custom String("Gameplay Modifiers"), Custom String(
  • "​Invisible Bots"), False);
  • Global.gameplayBoolSettingsArray[7] = Workshop Setting Toggle(Custom String("Gameplay Modifiers"), Custom String("​ Endless Mode"),
  • False);
  • "orderedEnabled, orderedMarkerEnabled"
  • Global.boolSettingsArray[8] = Array(False, True);
  • Global.gameplayBoolSettingsArray[8] = Array(Workshop Setting Toggle(Custom String("Gameplay Modifiers"), Custom String(
  • "​ Ordered Mode"), False), Workshop Setting Toggle(Custom String("Gameplay Modifiers"), Custom String("​Ordered Marker"),
  • True));
  • }
  • }
  • rule("​ /// CHANGE KEYBINDS BELOW HERE ///")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.DX = 0;
  • }
  • }
  • rule("/// Quick reset keybind")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Event Player.inSettings == False;
  • Number of Living Players(Team 2) > 0;
  • "CHANGE THIS TO WHATEVER YOU WANT"
  • Is Communicating(Event Player, Ultimate Status) == True;
  • }
  • actions
  • {
  • "used later to make resetting smooth"
  • Event Player.temp = Velocity Of(Event Player);
  • "cancel blade and refund cooldowns"
  • Call Subroutine(resetPlayer);
  • "apply impulse giving speed before resetting back (changing heroes resets velocity)"
  • Apply Impulse(Event Player, Event Player.temp, Distance Between(Vector(0, 0, 0), Event Player.temp), To World,
  • Cancel Contrary Motion);
  • Wait(0.016, Ignore Condition);
  • If(Global.boolSettingsArray[6]);
  • If(Global.gameplayBoolSettingsArray[6]);
  • "reset bot invisibility"
  • Set Invisible(All Players(Team 2), None);
  • End;
  • "prevent spamming"
  • Wait(0.200, Ignore Condition);
  • }
  • }
  • rule("/// Request dash keybind")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • "CHANGE THIS TO WHATEVER YOU WANT"
  • Is Communicating(Event Player, Acknowledge) == True;
  • }
  • actions
  • {
  • Event Player.needsDash = True;
  • }
  • }
  • rule("/// Request nano keybind")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Ana;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Using Ultimate(Event Player) == False;
  • "CHANGE THIS TO WHATEVER YOU WANT"
  • Is Communicating(Global.genjiPlayer, Need Healing) == True;
  • }
  • actions
  • {
  • "make sure arena isn't resetting"
  • If(Global.boolSettingsArray[7] || !Global.cancelBlade || Number of Living Players(Team 2) > 0);
  • If(Global.gameplayBoolSettingsArray[7] || !First Of(Global.generalBoolSettingsArray) || Number of Living Players(Team 2) > 0);
  • Call Subroutine(giveNano);
  • End;
  • }
  • }
  • rule("​--- Normal workshop stuff from here out - Take a look if you want, I comment a lot :) ---")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.DX = 0;
  • }
  • }
  • disabled rule("")
  • disabled rule("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.DX = 0;
  • }
  • }
  • rule("sub_resetPlayer")
  • {
  • event
  • {
  • Subroutine;
  • resetPlayer;
  • }
  • actions
  • {
  • "force player off of and back onto genji, cancelling blade and resetting cooldowns"
  • Start Forcing Player To Be Hero(Event Player, Hero(Ana));
  • Start Forcing Player To Be Hero(Event Player, Hero(Genji));
  • Stop Forcing Player To Be Hero(Event Player);
  • }
  • }
  • rule("sub_giveNano")
  • {
  • event
  • {
  • Subroutine;
  • giveNano;
  • }
  • actions
  • {
  • "teleport behind genji"
  • Teleport(Event Player, Ray Cast Hit Position(Position Of(Global.genjiPlayer), Position Of(Global.genjiPlayer) + Normalize(
  • Facing Direction Of(Global.genjiPlayer) * Vector(1, 0, 1)) * -1 * 2, Empty Array, Empty Array, False));
  • Facing Direction Of(Global.genjiPlayer) * Vector(1, 0, 1)) * -2, Empty Array, Empty Array, False));
  • "face towards the center of genji"
  • Start Facing(Event Player, Direction Towards(Eye Position(Event Player), (Position Of(Global.genjiPlayer) + Eye Position(
  • Global.genjiPlayer)) / 2), 5000, To World, Direction and Turn Rate);
  • "press nano"
  • Press Button(Event Player, Ultimate);
  • "wait for casting time"
  • Wait(0.145, Ignore Condition);
  • "if didn't cast, retry"
  • Loop If(!Is Using Ultimate(Event Player));
  • "let ult line play out"
  • Wait(1.500, Ignore Condition);
  • Teleport(Event Player, Up * 10000);
  • "start facing the same way as the genji to make future nanos more consistent"
  • Start Facing(Event Player, Facing Direction Of(Global.genjiPlayer) * Vector(1, 0, 1), 5000, To World, Direction and Turn Rate);
  • }
  • }
  • rule("sub_returnToArena")
  • {
  • event
  • {
  • Subroutine;
  • returnToArena;
  • }
  • actions
  • {
  • "these are disabled when entering settings"
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • "reset movespeed (set to 150 while in settings)"
  • Set Move Speed(Event Player, 100);
  • "prevent accidental dashes"
  • Set Ability 1 Enabled(Event Player, False);
  • "if the spawn radius is really small, put the player above the bots"
  • Teleport(Event Player, Global.centerPos + Vector(0, (Global.floatSettingsArray[0] <= 1) * 2, 0));
  • Teleport(Event Player, Global.centerPos + Vector(0, (First Of(Global.floatSettingsArray) <= 1) * 2, 0));
  • Event Player.inSettings = False;
  • Global.botTimeout = 2.250;
  • "if invisibleBotsEnabled"
  • If(Global.boolSettingsArray[6]);
  • If(Global.gameplayBoolSettingsArray[6]);
  • "this shouldn't be needed, but in case bots are invisible while in settings reset them"
  • Set Invisible(All Players(Team 2), None);
  • End;
  • "if orderedEnabled"
  • If(Global.boolSettingsArray[8][0]);
  • If(First Of(Global.gameplayBoolSettingsArray[8]));
  • "clear the next target's invincibility"
  • Clear Status(Global.orderedBots[0], Invincible);
  • Clear Status(First Of(Global.orderedBots), Invincible);
  • Else;
  • "clear all invincibility given when going to settings"
  • Clear Status(All Players(Team 2), Invincible);
  • End;
  • Wait(0.175, Ignore Condition);
  • "allow dashes again"
  • Set Ability 1 Enabled(Event Player, True);
  • }
  • }
  • disabled rule("")
  • disabled rule("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.DX = 0;
  • }
  • }
  • rule("global setup")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Pause Match Time;
  • Set Match Time(0);
  • "center of ring/spawn area"
  • Global.centerPos = Vector(0, 0, 0);
  • "position player walks to to return to the arena"
  • Global.returnPos = Vector(-1 * 19, 46, 19);
  • Global.returnPos = Vector(-19, 46, 19);
  • "position of the orb used to undo bot hero changes"
  • Global.undoSpherePosition = Vector(-1 * 19, 47, 15);
  • Global.undoSpherePosition = Vector(-19, 47, 15);
  • "chase the timer to 0"
  • Chase Global Variable At Rate(botTimeout, 0, 1, None);
  • "positions of the spheres used to modify float values"
  • Global.floatSpherePositions = Empty Array;
  • "positions of the spheres used to toggle boolean values"
  • Global.boolSpherePositions = Empty Array;
  • "positions of the spheres used to toggle boolean values which affect gameplay"
  • Global.gameplayBoolSpherePositions = Empty Array;
  • "positions of the spheres used to toggle general boolean values"
  • Global.generalBoolSpherePositions = Empty Array;
  • "positions of the spheres used to add/remove bots"
  • Global.botControlsSpherePositions = Empty Array;
  • "order of the bots for ordered mode, [0]: current target, [1]: next target, etc."
  • Global.orderedBots = Empty Array;
  • "info used to undo bot hero changes, [[0]: hero of bot before changing, [1]: hero of bot after changing, [2]: slot of changed bot]"
  • Global.undoStack = Empty Array;
  • "heroes who have health regen, used as a check for players to damage, preventing hp regen"
  • Global.shieldHeroes = Array(Hero(Mercy), Hero(Sigma), Hero(Symmetra), Hero(Zarya), Hero(Zenyatta));
  • "strings shown above the float settings spheres as in-world text"
  • Global.floatSettingsStrings = Array(Custom String("INCREASE"), Custom String("DECREASE"));
  • "strings shown above and between the previous texts showing current values"
  • Global.floatSettingsInfoStrings = Array(Custom String("CURRENT SPAWN RADIUS: "));
  • "strings shown above the bool settings spheres, indices with arrays contain related strings for special cases"
  • Global.boolSettingsStrings = Array(Array(Custom String("NANOBOOST"), Custom String("NANOBOOST VFX")), Custom String(
  • Global.gameplayBoolSettingsStrings = Array(Array(Custom String("NANOBOOST"), Custom String("NANOBOOST VFX")), Custom String(
  • "BOT MOVEMENT"), Custom String("INSTAKILL"), Custom String("UNLIMITED DASH"), Custom String("FLOATING BOTS"), Custom String(
  • "TRANSCENDENCE"), Custom String("INVISIBLE BOTS"), Custom String("ENDLESS MODE"), Array(Custom String("ORDERED MODE"),
  • Custom String("TARGET MARKER")));
  • Global.generalBoolSettingsStrings = Array(Custom String("CANCEL BLADE"), Custom String("TELE TO CENTER"), Custom String(
  • "PREVENT SHIELD REGEN"));
  • }
  • }
  • rule("timer")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • "increment match time"
  • Set Match Time(Match Time + 1);
  • "every one second"
  • Wait(1, Ignore Condition);
  • Loop;
  • }
  • }
  • rule("create texts + effects")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • "create in-world texts\r\n\n press interact to go to settings, shown on a chamber wall if player isn't already in settings"
  • Create In-World Text(Filtered Array(All Players(Team 1), !Current Array Element.inSettings), Custom String(
  • Create In-World Text(Global.genjiPlayer.inSettings ? Empty Array : All Players(Team 1), Custom String(
  • "PRESS {0} TO {1} TO SETTINGS", String("Interact"), String("Go")), Vector(0, 5, 20), 1.500, Do Not Clip, Visible To, White,
  • Default Visibility);
  • "return, shown over where the player needs to stand to return to the arena while in settings"
  • Create In-World Text(Filtered Array(All Players(Team 1), Current Array Element.inSettings), Custom String("RETURN"),
  • Create In-World Text(Global.genjiPlayer.inSettings ? All Players(Team 1) : Empty Array, Custom String("RETURN"),
  • Global.returnPos + Vector(0, 1, 0), 1.250, Do Not Clip, Visible To and String, White, Default Visibility);
  • "primary fire on a setting to change it, shown above the settings spheres"
  • Create In-World Text(Filtered Array(All Players(Team 1), Current Array Element.inSettings), Custom String(
  • "{0} ON A SETTING TO CHANGE IT", String("Primary Fire")), (Global.floatSpherePositions[0] + Last Of(
  • Global.boolSpherePositions)) / 2 + Up * 3.500, 1.500, Do Not Clip, Visible To and Position, White, Default Visibility);
  • Create In-World Text(Global.genjiPlayer.inSettings ? All Players(Team 1) : Empty Array, Custom String(
  • "{0} ON A SETTING TO CHANGE IT", String("Primary Fire")), (First Of(Global.floatSpherePositions) + Last Of(
  • Global.gameplayBoolSpherePositions)) / 2 + Up * 3.500, 1.500, Do Not Clip, Visible To and Position, White, Default Visibility);
  • "primary fire on a bot to change their hero, shown above the line of bots while in settings"
  • Create In-World Text(Filtered Array(All Players(Team 1), Current Array Element.inSettings), Custom String(
  • Create In-World Text(Global.genjiPlayer.inSettings ? All Players(Team 1) : Empty Array, Custom String(
  • " {0} ON A BOT TO CHANGE THEIR {1}\n{2} ON THEIR ORB TO ADD/REMOVE THEM", String("Primary Fire"), String("Hero"), String(
  • "Primary Fire")), Vector(-1 * 19, 51, 0), 1.500, Do Not Clip, Visible To, White, Default Visibility);
  • "Primary Fire")), Vector(-19, 51, -4.125), 1.500, Do Not Clip, Visible To, White, Default Visibility);
  • "undo, shown above undo button/orb"
  • Create In-World Text(Filtered Array(All Players(Team 1), Current Array Element.inSettings), Custom String("UNDO"),
  • Create In-World Text(Global.genjiPlayer.inSettings ? All Players(Team 1) : Empty Array, Custom String("UNDO"),
  • Global.undoSpherePosition, 1, Do Not Clip, Visible To, White, Default Visibility);
  • "ordered mode target marker, shown over the bot who's not invincible when ordered mode is enabled, the marker is enabled (or there's ambiguity as to which bot the HUD texts are referring to), and there's still bots alive"
  • Create In-World Text(Global.boolSettingsArray[8][0] && !Global.genjiPlayer.inSettings && Number of Living Players(Team 2) > 0 && (
  • Global.boolSettingsArray[8][1] || Count Of(Filtered Array(Remove From Array(All Living Players(Team 2), Global.orderedBots[0]),
  • Hero Of(Current Array Element) == Hero Of(Global.orderedBots[0]))) > 0) ? All Players(Team 1) : Empty Array, Custom String(
  • "V"), Eye Position(Global.orderedBots[0]) + Vector(0, 0.100, 0), 1.500, Do Not Clip, Visible To Position and String, White,
  • Default Visibility);
  • Create In-World Text(First Of(Global.gameplayBoolSettingsArray[8]) && !Global.genjiPlayer.inSettings && Number of Living Players(
  • Team 2) > 0 && (Global.gameplayBoolSettingsArray[8][1] || Is True For Any(Remove From Array(All Living Players(Team 2),
  • First Of(Global.orderedBots)), Hero Of(Current Array Element) == Hero Of(First Of(Global.orderedBots)))) ? All Players(Team 1)
  • : Empty Array, Custom String("V"), Eye Position(First Of(Global.orderedBots)) + Vector(0, 0.100, 0), 1.500, Do Not Clip,
  • Visible To Position and String, White, Default Visibility);
  • "create effects\r\n\n orange ring showing spawn radius"
  • Create Effect(All Players(All Teams), Ring, Orange, Global.centerPos, Global.floatSettingsArray[0] + 1.500,
  • Create Effect(All Players(All Teams), Ring, Orange, Global.centerPos, First Of(Global.floatSettingsArray) + 1.500,
  • Visible To Position and Radius);
  • "purple cylinder showing where to walk to return to the arena"
  • Create Effect(All Players(Team 1), Light Shaft, Purple, Global.returnPos, 1.500, Visible To);
  • "undo button, shown next to the lined up bots"
  • Create Effect(All Players(All Teams), Orb, Orange, Global.undoSpherePosition, 1, Visible To);
  • "create HUD text warning when multiple players are in the game"
  • Create HUD Text(Number of Heroes(Hero(Genji), Team 1) > 1 ? All Players(Team 1) : Empty Array, Custom String(
  • "THIS MODE IS NOT MADE FOR TWO PLAYERS - THINGS MAY NOT FUNCTION AS INTENDED"), Null, Null, Left, -1 * 1, Red, White, White,
  • "THIS MODE IS NOT MADE FOR TWO PLAYERS - THINGS MAY NOT FUNCTION AS INTENDED"), Null, Null, Left, -1, Red, White, White,
  • Visible To, Default Visibility);
  • "create hud texts for ordered mode"
  • Create HUD Text(Global.boolSettingsArray[8][0] && !Global.inSettings ? All Players(Team 1) : Empty Array, Hero Icon String(Hero Of(
  • Global.orderedBots[0])), Null, Null, Left, 0, White, White, White, Visible To and String, Default Visibility);
  • Create HUD Text(Global.boolSettingsArray[8][0] && !Global.inSettings ? All Players(Team 1) : Empty Array, Hero Icon String(Hero Of(
  • Global.orderedBots[1])), Null, Null, Left, 1, White, White, White, Visible To and String, Default Visibility);
  • Create HUD Text(Global.boolSettingsArray[8][0] && !Global.inSettings ? All Players(Team 1) : Empty Array, Hero Icon String(Hero Of(
  • Global.orderedBots[2])), Null, Null, Left, 2, White, White, White, Visible To and String, Default Visibility);
  • Create HUD Text(Global.boolSettingsArray[8][0] && !Global.inSettings ? All Players(Team 1) : Empty Array, Hero Icon String(Hero Of(
  • Global.orderedBots[3])), Null, Null, Left, 3, White, White, White, Visible To and String, Default Visibility);
  • Create HUD Text(Global.boolSettingsArray[8][0] && !Global.inSettings ? All Players(Team 1) : Empty Array, Hero Icon String(Hero Of(
  • Global.orderedBots[4])), Null, Null, Left, 4, White, White, White, Visible To and String, Default Visibility);
  • Create HUD Text(Global.boolSettingsArray[8][0] && !Global.inSettings ? All Players(Team 1) : Empty Array, Hero Icon String(Hero Of(
  • Global.orderedBots[5])), Null, Null, Left, 5, White, White, White, Visible To and String, Default Visibility);
  • Create HUD Text(First Of(Global.gameplayBoolSettingsArray[8]) && !Global.inSettings ? All Players(Team 1) : Empty Array,
  • Hero Icon String(Hero Of(First Of(Global.orderedBots))), Null, Null, Left, 0, White, White, White, Visible To and String,
  • Default Visibility);
  • Create HUD Text(First Of(Global.gameplayBoolSettingsArray[8]) && !Global.inSettings ? All Players(Team 1) : Empty Array,
  • Hero Icon String(Hero Of(Global.orderedBots[1])), Null, Null, Left, 1, White, White, White, Visible To and String,
  • Default Visibility);
  • Create HUD Text(First Of(Global.gameplayBoolSettingsArray[8]) && !Global.inSettings ? All Players(Team 1) : Empty Array,
  • Hero Icon String(Hero Of(Global.orderedBots[2])), Null, Null, Left, 2, White, White, White, Visible To and String,
  • Default Visibility);
  • Create HUD Text(First Of(Global.gameplayBoolSettingsArray[8]) && !Global.inSettings ? All Players(Team 1) : Empty Array,
  • Hero Icon String(Hero Of(Global.orderedBots[3])), Null, Null, Left, 3, White, White, White, Visible To and String,
  • Default Visibility);
  • Create HUD Text(First Of(Global.gameplayBoolSettingsArray[8]) && !Global.inSettings ? All Players(Team 1) : Empty Array,
  • Hero Icon String(Hero Of(Global.orderedBots[4])), Null, Null, Left, 4, White, White, White, Visible To and String,
  • Default Visibility);
  • Create HUD Text(First Of(Global.gameplayBoolSettingsArray[8]) && !Global.inSettings ? All Players(Team 1) : Empty Array,
  • Hero Icon String(Hero Of(Global.orderedBots[5])), Null, Null, Left, 5, White, White, White, Visible To and String,
  • Default Visibility);
  • Create HUD Text(First Of(Global.gameplayBoolSettingsArray[8]) && !Global.inSettings ? All Players(Team 1) : Empty Array,
  • Hero Icon String(Hero Of(Global.orderedBots[6])), Null, Null, Left, 6, White, White, White, Visible To and String,
  • Default Visibility);
  • Create HUD Text(First Of(Global.gameplayBoolSettingsArray[8]) && !Global.inSettings ? All Players(Team 1) : Empty Array,
  • Hero Icon String(Hero Of(Global.orderedBots[7])), Null, Null, Left, 7, White, White, White, Visible To and String,
  • Default Visibility);
  • Create HUD Text(First Of(Global.gameplayBoolSettingsArray[8]) && !Global.inSettings ? All Players(Team 1) : Empty Array,
  • Hero Icon String(Hero Of(Global.orderedBots[8])), Null, Null, Left, 8, White, White, White, Visible To and String,
  • Default Visibility);
  • Create HUD Text(First Of(Global.gameplayBoolSettingsArray[8]) && !Global.inSettings ? All Players(Team 1) : Empty Array,
  • Hero Icon String(Hero Of(Global.orderedBots[9])), Null, Null, Left, 9, White, White, White, Visible To and String,
  • Default Visibility);
  • "create sparkles for transcendence"
  • Create Effect(Global.boolSettingsArray[5] && Is Alive(Players In Slot(0, Team 2)) ? All Players(Team 1) : Empty Array, Sparkles,
  • Yellow, Position Of(Players In Slot(0, Team 2)), 0.200, Visible To Position and Radius);
  • Create Effect(Global.boolSettingsArray[5] && Is Alive(Players In Slot(1, Team 2)) ? All Players(Team 1) : Empty Array, Sparkles,
  • Yellow, Position Of(Players In Slot(1, Team 2)), 0.200, Visible To Position and Radius);
  • Create Effect(Global.boolSettingsArray[5] && Is Alive(Players In Slot(2, Team 2)) ? All Players(Team 1) : Empty Array, Sparkles,
  • Yellow, Position Of(Players In Slot(2, Team 2)), 0.200, Visible To Position and Radius);
  • Create Effect(Global.boolSettingsArray[5] && Is Alive(Players In Slot(3, Team 2)) ? All Players(Team 1) : Empty Array, Sparkles,
  • Yellow, Position Of(Players In Slot(3, Team 2)), 0.200, Visible To Position and Radius);
  • Create Effect(Global.boolSettingsArray[5] && Is Alive(Players In Slot(4, Team 2)) ? All Players(Team 1) : Empty Array, Sparkles,
  • Yellow, Position Of(Players In Slot(4, Team 2)), 0.200, Visible To Position and Radius);
  • Create Effect(Global.boolSettingsArray[5] && Is Alive(Players In Slot(5, Team 2)) ? All Players(Team 1) : Empty Array, Sparkles,
  • Yellow, Position Of(Players In Slot(5, Team 2)), 0.200, Visible To Position and Radius);
  • Create Effect(Global.gameplayBoolSettingsArray[5] && Is Alive(Players In Slot(0, Team 2)) ? All Players(Team 1) : Empty Array,
  • Sparkles, Yellow, Position Of(Players In Slot(0, Team 2)), 0.200, Visible To Position and Radius);
  • Create Effect(Global.gameplayBoolSettingsArray[5] && Is Alive(Players In Slot(1, Team 2)) ? All Players(Team 1) : Empty Array,
  • Sparkles, Yellow, Position Of(Players In Slot(1, Team 2)), 0.200, Visible To Position and Radius);
  • Create Effect(Global.gameplayBoolSettingsArray[5] && Is Alive(Players In Slot(2, Team 2)) ? All Players(Team 1) : Empty Array,
  • Sparkles, Yellow, Position Of(Players In Slot(2, Team 2)), 0.200, Visible To Position and Radius);
  • Create Effect(Global.gameplayBoolSettingsArray[5] && Is Alive(Players In Slot(3, Team 2)) ? All Players(Team 1) : Empty Array,
  • Sparkles, Yellow, Position Of(Players In Slot(3, Team 2)), 0.200, Visible To Position and Radius);
  • Create Effect(Global.gameplayBoolSettingsArray[5] && Is Alive(Players In Slot(4, Team 2)) ? All Players(Team 1) : Empty Array,
  • Sparkles, Yellow, Position Of(Players In Slot(4, Team 2)), 0.200, Visible To Position and Radius);
  • Create Effect(Global.gameplayBoolSettingsArray[5] && Is Alive(Players In Slot(5, Team 2)) ? All Players(Team 1) : Empty Array,
  • Sparkles, Yellow, Position Of(Players In Slot(5, Team 2)), 0.200, Visible To Position and Radius);
  • }
  • }
  • rule("set spherePositions array and create spheres + text")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • "count of floatSettingsStrings is number of float settings"
  • For Global Variable(loopIndex, 0, Count Of(Global.floatSettingsStrings), 1);
  • Modify Global Variable(floatSpherePositions, Append To Array, Vector(14.750 + Global.loopIndex * (-1 * 14.750 - 14.750) / (
  • Count Of(Global.floatSettingsStrings) + Count Of(Global.boolSettingsStrings) - 1), 47, 19));
  • Modify Global Variable(floatSpherePositions, Append To Array, Vector(14.750 + Global.loopIndex * -29.500 / (Count Of(
  • Global.floatSettingsStrings) + Count Of(Global.gameplayBoolSettingsStrings) - 1), 47, 19));
  • End;
  • "start at number of float spheres, end at number of float spheres + number of bool spheres (total increase is number of bool spheres)"
  • For Global Variable(loopIndex, Count Of(Global.floatSettingsStrings), Count Of(Global.boolSettingsStrings) + Count Of(
  • For Global Variable(loopIndex, Count Of(Global.floatSettingsStrings), Count Of(Global.gameplayBoolSettingsStrings) + Count Of(
  • Global.floatSettingsStrings), 1);
  • Modify Global Variable(boolSpherePositions, Append To Array, Vector(14.750 + Global.loopIndex * (-1 * 14.750 - 14.750) / (Count Of(
  • Global.floatSettingsStrings) + Count Of(Global.boolSettingsStrings) - 1), 47, 19));
  • Modify Global Variable(gameplayBoolSpherePositions, Append To Array, Vector(14.750 + Global.loopIndex * -29.500 / (Count Of(
  • Global.floatSettingsStrings) + Count Of(Global.gameplayBoolSettingsStrings) - 1), 47, 19));
  • End;
  • For Global Variable(loopIndex, 0, Count Of(Global.generalBoolSettingsStrings), 1);
  • Modify Global Variable(generalBoolSpherePositions, Append To Array, Vector(19, 47, 14.750 + Global.loopIndex * -29.500 / (Count Of(
  • Global.floatSettingsStrings) + Count Of(Global.gameplayBoolSettingsStrings) - 1)));
  • End;
  • For Global Variable(loopIndex, 0, Count Of(Global.floatSettingsStrings), 1);
  • "create blue spheres for float settings"
  • Create Effect(All Players(Team 1), Sphere, Blue, Global.floatSpherePositions[Global.loopIndex], 1, Visible To);
  • "take strings from floatSettingsStrings and put them on the spheres"
  • Create In-World Text(Filtered Array(All Players(Team 1), Current Array Element.inSettings),
  • Global.floatSettingsStrings[Global.loopIndex], Global.floatSpherePositions[Global.loopIndex], 0.800, Do Not Clip, Visible To,
  • White, Default Visibility);
  • End;
  • "create info strings"
  • Create In-World Text(Filtered Array(All Players(Team 1), Current Array Element.inSettings), Custom String("{0}{1}",
  • Global.floatSettingsInfoStrings[0], Global.floatSettingsArray[0]), (
  • Global.floatSpherePositions[0] + Global.floatSpherePositions[1]) / 2 + Up, 0.800, Do Not Clip, Visible To and String, White,
  • Default Visibility);
  • Create In-World Text(Filtered Array(All Players(Team 1), Current Array Element.inSettings), Custom String("{0}{1}", First Of(
  • Global.floatSettingsInfoStrings), First Of(Global.floatSettingsArray)), (First Of(Global.floatSpherePositions)
  • + Global.floatSpherePositions[1]) / 2 + Up, 0.800, Do Not Clip, Visible To and String, White, Default Visibility);
  • "create nano spheres"
  • Create Effect(Global.boolSettingsArray[0][0] ? All Players(Team 1) : Empty Array, Sphere, Green, Global.boolSpherePositions[0], 1,
  • Visible To);
  • Create Effect(Global.boolSettingsArray[0][0] ? Empty Array : All Players(Team 1), Sphere, Red, Global.boolSpherePositions[0], 1,
  • Visible To);
  • Create Effect(First Of(First Of(Global.gameplayBoolSettingsArray)) ? All Players(Team 1) : Empty Array, Sphere, Green, First Of(
  • Global.gameplayBoolSpherePositions), 1, Visible To);
  • Create Effect(First Of(First Of(Global.gameplayBoolSettingsArray)) ? Empty Array : All Players(Team 1), Sphere, Red, First Of(
  • Global.gameplayBoolSpherePositions), 1, Visible To);
  • "create nanoVFX spheres, visible only if nanoEnabled is true"
  • Create Effect(Global.boolSettingsArray[0][0] && Global.boolSettingsArray[0][1] ? All Players(Team 1) : Empty Array, Sphere, Green,
  • Global.boolSpherePositions[0] + Up * 2.250, 1, Visible To);
  • Create Effect(!Global.boolSettingsArray[0][0] || Global.boolSettingsArray[0][1] ? Empty Array : All Players(Team 1), Sphere, Red,
  • Global.boolSpherePositions[0] + Up * 2.250, 1, Visible To);
  • "create botMovement spheres"
  • Create Effect(Global.boolSettingsArray[1] ? All Players(Team 1) : Empty Array, Sphere, Green, Global.boolSpherePositions[1], 1,
  • Visible To);
  • Create Effect(Global.boolSettingsArray[1] ? Empty Array : All Players(Team 1), Sphere, Red, Global.boolSpherePositions[1], 1,
  • Create Effect(First Of(First Of(Global.gameplayBoolSettingsArray)) && First Of(Global.gameplayBoolSettingsArray)[1] ? All Players(
  • Team 1) : Empty Array, Sphere, Green, First Of(Global.gameplayBoolSpherePositions) + Up * 2.250, 1, Visible To);
  • Create Effect(!First Of(First Of(Global.gameplayBoolSettingsArray)) || First Of(Global.gameplayBoolSettingsArray)
  • [1] ? Empty Array : All Players(Team 1), Sphere, Red, First Of(Global.gameplayBoolSpherePositions) + Up * 2.250, 1,
  • Visible To);
  • "create botMovement spheres"
  • Create Effect(Global.gameplayBoolSettingsArray[1] ? All Players(Team 1) : Empty Array, Sphere, Green,
  • Global.gameplayBoolSpherePositions[1], 1, Visible To);
  • Create Effect(Global.gameplayBoolSettingsArray[1] ? Empty Array : All Players(Team 1), Sphere, Red,
  • Global.gameplayBoolSpherePositions[1], 1, Visible To);
  • "create instakill spheres"
  • Create Effect(Global.boolSettingsArray[2] ? All Players(Team 1) : Empty Array, Sphere, Green, Global.boolSpherePositions[2], 1,
  • Visible To);
  • Create Effect(Global.boolSettingsArray[2] ? Empty Array : All Players(Team 1), Sphere, Red, Global.boolSpherePositions[2], 1,
  • Visible To);
  • Create Effect(Global.gameplayBoolSettingsArray[2] ? All Players(Team 1) : Empty Array, Sphere, Green,
  • Global.gameplayBoolSpherePositions[2], 1, Visible To);
  • Create Effect(Global.gameplayBoolSettingsArray[2] ? Empty Array : All Players(Team 1), Sphere, Red,
  • Global.gameplayBoolSpherePositions[2], 1, Visible To);
  • "create infiniteDash spheres"
  • Create Effect(Global.boolSettingsArray[3] ? All Players(Team 1) : Empty Array, Sphere, Green, Global.boolSpherePositions[3], 1,
  • Visible To);
  • Create Effect(Global.boolSettingsArray[3] ? Empty Array : All Players(Team 1), Sphere, Red, Global.boolSpherePositions[3], 1,
  • Visible To);
  • Create Effect(Global.gameplayBoolSettingsArray[3] ? All Players(Team 1) : Empty Array, Sphere, Green,
  • Global.gameplayBoolSpherePositions[3], 1, Visible To);
  • Create Effect(Global.gameplayBoolSettingsArray[3] ? Empty Array : All Players(Team 1), Sphere, Red,
  • Global.gameplayBoolSpherePositions[3], 1, Visible To);
  • "create floatingBots spheres"
  • Create Effect(Global.boolSettingsArray[4] ? All Players(Team 1) : Empty Array, Sphere, Green, Global.boolSpherePositions[4], 1,
  • Visible To);
  • Create Effect(Global.boolSettingsArray[4] ? Empty Array : All Players(Team 1), Sphere, Red, Global.boolSpherePositions[4], 1,
  • Visible To);
  • Create Effect(Global.gameplayBoolSettingsArray[4] ? All Players(Team 1) : Empty Array, Sphere, Green,
  • Global.gameplayBoolSpherePositions[4], 1, Visible To);
  • Create Effect(Global.gameplayBoolSettingsArray[4] ? Empty Array : All Players(Team 1), Sphere, Red,
  • Global.gameplayBoolSpherePositions[4], 1, Visible To);
  • "create transcendence spheres"
  • Create Effect(Global.boolSettingsArray[5] ? All Players(Team 1) : Empty Array, Sphere, Green, Global.boolSpherePositions[5], 1,
  • Visible To);
  • Create Effect(Global.boolSettingsArray[5] ? Empty Array : All Players(Team 1), Sphere, Red, Global.boolSpherePositions[5], 1,
  • Visible To);
  • Create Effect(Global.gameplayBoolSettingsArray[5] ? All Players(Team 1) : Empty Array, Sphere, Green,
  • Global.gameplayBoolSpherePositions[5], 1, Visible To);
  • Create Effect(Global.gameplayBoolSettingsArray[5] ? Empty Array : All Players(Team 1), Sphere, Red,
  • Global.gameplayBoolSpherePositions[5], 1, Visible To);
  • "create invisibleBots spheres"
  • Create Effect(Global.boolSettingsArray[6] ? All Players(Team 1) : Empty Array, Sphere, Green, Global.boolSpherePositions[6], 1,
  • Visible To);
  • Create Effect(Global.boolSettingsArray[6] ? Empty Array : All Players(Team 1), Sphere, Red, Global.boolSpherePositions[6], 1,
  • Visible To);
  • Create Effect(Global.gameplayBoolSettingsArray[6] ? All Players(Team 1) : Empty Array, Sphere, Green,
  • Global.gameplayBoolSpherePositions[6], 1, Visible To);
  • Create Effect(Global.gameplayBoolSettingsArray[6] ? Empty Array : All Players(Team 1), Sphere, Red,
  • Global.gameplayBoolSpherePositions[6], 1, Visible To);
  • "create endless spheres"
  • Create Effect(Global.boolSettingsArray[7] ? All Players(Team 1) : Empty Array, Sphere, Green, Global.boolSpherePositions[7], 1,
  • Visible To);
  • Create Effect(Global.boolSettingsArray[7] ? Empty Array : All Players(Team 1), Sphere, Red, Global.boolSpherePositions[7], 1,
  • Visible To);
  • Create Effect(Global.gameplayBoolSettingsArray[7] ? All Players(Team 1) : Empty Array, Sphere, Green,
  • Global.gameplayBoolSpherePositions[7], 1, Visible To);
  • Create Effect(Global.gameplayBoolSettingsArray[7] ? Empty Array : All Players(Team 1), Sphere, Red,
  • Global.gameplayBoolSpherePositions[7], 1, Visible To);
  • "create ordered spheres"
  • Create Effect(Global.boolSettingsArray[8][0] ? All Players(Team 1) : Empty Array, Sphere, Green, Global.boolSpherePositions[8], 1,
  • Visible To);
  • Create Effect(Global.boolSettingsArray[8][0] ? Empty Array : All Players(Team 1), Sphere, Red, Global.boolSpherePositions[8], 1,
  • Visible To);
  • Create Effect(First Of(Global.gameplayBoolSettingsArray[8]) ? All Players(Team 1) : Empty Array, Sphere, Green,
  • Global.gameplayBoolSpherePositions[8], 1, Visible To);
  • Create Effect(First Of(Global.gameplayBoolSettingsArray[8]) ? Empty Array : All Players(Team 1), Sphere, Red,
  • Global.gameplayBoolSpherePositions[8], 1, Visible To);
  • "create orderedMarker spheres, visible only if orderedEnabled is true"
  • Create Effect(Global.boolSettingsArray[8][0] && Global.boolSettingsArray[8][1] ? All Players(Team 1) : Empty Array, Sphere, Green,
  • Global.boolSpherePositions[8] + Up * 2.250, 1, Visible To);
  • Create Effect(!Global.boolSettingsArray[8][0] || Global.boolSettingsArray[8][1] ? Empty Array : All Players(Team 1), Sphere, Red,
  • Global.boolSpherePositions[8] + Up * 2.250, 1, Visible To);
  • "for all of the bool spheres"
  • For Global Variable(loopIndex, 0, Count Of(Global.boolSettingsStrings), 1);
  • Create Effect(First Of(Global.gameplayBoolSettingsArray[8]) && Global.gameplayBoolSettingsArray[8][1] ? All Players(Team 1)
  • : Empty Array, Sphere, Green, Global.gameplayBoolSpherePositions[8] + Up * 2.250, 1, Visible To);
  • Create Effect(!First Of(Global.gameplayBoolSettingsArray[8]) || Global.gameplayBoolSettingsArray[8][1] ? Empty Array : All Players(
  • Team 1), Sphere, Red, Global.gameplayBoolSpherePositions[8] + Up * 2.250, 1, Visible To);
  • "for all of the gameplay bool spheres"
  • For Global Variable(loopIndex, 0, Count Of(Global.gameplayBoolSettingsStrings), 1);
  • "create respective string as in-world text on sphere"
  • Create In-World Text(Filtered Array(All Players(Team 1), Current Array Element.inSettings),
  • Global.boolSettingsStrings[Global.loopIndex], Global.boolSpherePositions[Global.loopIndex], 0.800, Do Not Clip, Visible To,
  • White, Default Visibility);
  • Global.gameplayBoolSettingsStrings[Global.loopIndex], Global.gameplayBoolSpherePositions[Global.loopIndex], 0.800, Do Not Clip,
  • Visible To, White, Default Visibility);
  • End;
  • "special case in-world texts - nanoVFX and target marker"
  • Create In-World Text(Filtered Array(All Players(Team 1), Current Array Element.inSettings && Global.boolSettingsArray[0][0]),
  • Global.boolSettingsStrings[0][1], Global.boolSpherePositions[0] + Up * 2.250, 0.800, Do Not Clip, Visible To, White,
  • Default Visibility);
  • Create In-World Text(Filtered Array(All Players(Team 1), Current Array Element.inSettings && Global.boolSettingsArray[8][0]),
  • Global.boolSettingsStrings[8][1], Global.boolSpherePositions[8] + Up * 2.250, 0.800, Do Not Clip, Visible To, White,
  • Default Visibility);
  • For Global Variable(loopIndex, 0, 6, 1);
  • Modify Global Variable(botControlsSpherePositions, Append To Array, Vector(-1 * 19, 49, 10.750 - Global.loopIndex * 4.250));
  • Create In-World Text(Filtered Array(All Players(Team 1), Current Array Element.inSettings && First Of(First Of(
  • Global.gameplayBoolSettingsArray))), First Of(Global.gameplayBoolSettingsStrings)[1], First Of(
  • Global.gameplayBoolSpherePositions) + Up * 2.250, 0.800, Do Not Clip, Visible To, White, Default Visibility);
  • Create In-World Text(Filtered Array(All Players(Team 1), Current Array Element.inSettings && First Of(
  • Global.gameplayBoolSettingsArray[8])), Global.gameplayBoolSettingsStrings[8][1],
  • Global.gameplayBoolSpherePositions[8] + Up * 2.250, 0.800, Do Not Clip, Visible To, White, Default Visibility);
  • Create Effect(First Of(Global.generalBoolSettingsArray) ? All Players(Team 1) : Empty Array, Sphere, Green, First Of(
  • Global.generalBoolSpherePositions), 1, Visible To);
  • Create Effect(First Of(Global.generalBoolSettingsArray) ? Empty Array : All Players(Team 1), Sphere, Red, First Of(
  • Global.generalBoolSpherePositions), 1, Visible To);
  • Create Effect(Global.generalBoolSettingsArray[1] ? All Players(Team 1) : Empty Array, Sphere, Green,
  • Global.generalBoolSpherePositions[1], 1, Visible To);
  • Create Effect(Global.generalBoolSettingsArray[1] ? Empty Array : All Players(Team 1), Sphere, Red,
  • Global.generalBoolSpherePositions[1], 1, Visible To);
  • Create Effect(Global.generalBoolSettingsArray[2] ? All Players(Team 1) : Empty Array, Sphere, Green,
  • Global.generalBoolSpherePositions[2], 1, Visible To);
  • Create Effect(Global.generalBoolSettingsArray[2] ? Empty Array : All Players(Team 1), Sphere, Red,
  • Global.generalBoolSpherePositions[2], 1, Visible To);
  • "for all of the general bool spheres"
  • For Global Variable(loopIndex, 0, Count Of(Global.gameplayBoolSettingsStrings), 1);
  • "create respective string as in-world text on sphere"
  • Create In-World Text(Filtered Array(All Players(Team 1), Current Array Element.inSettings),
  • Global.generalBoolSettingsStrings[Global.loopIndex], Global.generalBoolSpherePositions[Global.loopIndex], 0.800, Do Not Clip,
  • Visible To, White, Default Visibility);
  • End;
  • For Global Variable(loopIndex, 0, 10, 1);
  • Modify Global Variable(botControlsSpherePositions, Append To Array, Vector(-19, 49, 10.750 + Global.loopIndex * -29.750 / 9));
  • End;
  • "create orbs and text above lined up bots"
  • Create Effect(Entity Exists(Players In Slot(0, Team 2)) ? Empty Array : All Players(Team 1), Orb, Red,
  • Global.botControlsSpherePositions[0], 1, Visible To);
  • Create Effect(Entity Exists(Players In Slot(0, Team 2)) ? Empty Array : All Players(Team 1), Orb, Red, First Of(
  • Global.botControlsSpherePositions), 1, Visible To);
  • Create In-World Text(Entity Exists(Players In Slot(0, Team 2)) ? Empty Array : Filtered Array(All Players(Team 1),
  • Current Array Element.inSettings), Custom String("+"), Global.botControlsSpherePositions[0], 2.500, Do Not Clip, Visible To,
  • Green, Default Visibility);
  • Create Effect(Entity Exists(Players In Slot(0, Team 2)) ? All Players(Team 1) : Empty Array, Orb, Green,
  • Global.botControlsSpherePositions[0], 1, Visible To);
  • Current Array Element.inSettings), Custom String("+"), First Of(Global.botControlsSpherePositions), 2.500, Do Not Clip,
  • Visible To, Green, Default Visibility);
  • Create Effect(Entity Exists(Players In Slot(0, Team 2)) ? All Players(Team 1) : Empty Array, Orb, Green, First Of(
  • Global.botControlsSpherePositions), 1, Visible To);
  • Create In-World Text(Entity Exists(Players In Slot(0, Team 2)) ? Filtered Array(All Players(Team 1),
  • Current Array Element.inSettings) : Empty Array, Custom String("-"), Global.botControlsSpherePositions[0], 2.500, Do Not Clip,
  • Visible To, Red, Default Visibility);
  • Current Array Element.inSettings) : Empty Array, Custom String("-"), First Of(Global.botControlsSpherePositions), 2.500,
  • Do Not Clip, Visible To, Red, Default Visibility);
  • Create Effect(Entity Exists(Players In Slot(1, Team 2)) ? Empty Array : All Players(Team 1), Orb, Red,
  • Global.botControlsSpherePositions[1], 1, Visible To);
  • Create In-World Text(Entity Exists(Players In Slot(1, Team 2)) ? Empty Array : Filtered Array(All Players(Team 1),
  • Current Array Element.inSettings), Custom String("+"), Global.botControlsSpherePositions[1], 2.500, Do Not Clip, Visible To,
  • Green, Default Visibility);
  • Create Effect(Entity Exists(Players In Slot(1, Team 2)) ? All Players(Team 1) : Empty Array, Orb, Green,
  • Global.botControlsSpherePositions[1], 1, Visible To);
  • Create In-World Text(Entity Exists(Players In Slot(1, Team 2)) ? Filtered Array(All Players(Team 1),
  • Current Array Element.inSettings) : Empty Array, Custom String("-"), Global.botControlsSpherePositions[1], 2.500, Do Not Clip,
  • Visible To, Red, Default Visibility);
  • Create Effect(Entity Exists(Players In Slot(2, Team 2)) ? Empty Array : All Players(Team 1), Orb, Red,
  • Global.botControlsSpherePositions[2], 1, Visible To);
  • Create In-World Text(Entity Exists(Players In Slot(2, Team 2)) ? Empty Array : Filtered Array(All Players(Team 1),
  • Current Array Element.inSettings), Custom String("+"), Global.botControlsSpherePositions[2], 2.500, Do Not Clip, Visible To,
  • Green, Default Visibility);
  • Create Effect(Entity Exists(Players In Slot(2, Team 2)) ? All Players(Team 1) : Empty Array, Orb, Green,
  • Global.botControlsSpherePositions[2], 1, Visible To);
  • Create In-World Text(Entity Exists(Players In Slot(2, Team 2)) ? Filtered Array(All Players(Team 1),
  • Current Array Element.inSettings) : Empty Array, Custom String("-"), Global.botControlsSpherePositions[2], 2.500, Do Not Clip,
  • Visible To, Red, Default Visibility);
  • Create Effect(Entity Exists(Players In Slot(3, Team 2)) ? Empty Array : All Players(Team 1), Orb, Red,
  • Global.botControlsSpherePositions[3], 1, Visible To);
  • Create In-World Text(Entity Exists(Players In Slot(3, Team 2)) ? Empty Array : Filtered Array(All Players(Team 1),
  • Current Array Element.inSettings), Custom String("+"), Global.botControlsSpherePositions[3], 2.500, Do Not Clip, Visible To,
  • Green, Default Visibility);
  • Create Effect(Entity Exists(Players In Slot(3, Team 2)) ? All Players(Team 1) : Empty Array, Orb, Green,
  • Global.botControlsSpherePositions[3], 1, Visible To);
  • Create In-World Text(Entity Exists(Players In Slot(3, Team 2)) ? Filtered Array(All Players(Team 1),
  • Current Array Element.inSettings) : Empty Array, Custom String("-"), Global.botControlsSpherePositions[3], 2.500, Do Not Clip,
  • Visible To, Red, Default Visibility);
  • Create Effect(Entity Exists(Players In Slot(4, Team 2)) ? Empty Array : All Players(Team 1), Orb, Red,
  • Global.botControlsSpherePositions[4], 1, Visible To);
  • Create In-World Text(Entity Exists(Players In Slot(4, Team 2)) ? Empty Array : Filtered Array(All Players(Team 1),
  • Current Array Element.inSettings), Custom String("+"), Global.botControlsSpherePositions[4], 2.500, Do Not Clip, Visible To,
  • Green, Default Visibility);
  • Create Effect(Entity Exists(Players In Slot(4, Team 2)) ? All Players(Team 1) : Empty Array, Orb, Green,
  • Global.botControlsSpherePositions[4], 1, Visible To);
  • Create In-World Text(Entity Exists(Players In Slot(4, Team 2)) ? Filtered Array(All Players(Team 1),
  • Current Array Element.inSettings) : Empty Array, Custom String("-"), Global.botControlsSpherePositions[4], 2.500, Do Not Clip,
  • Visible To, Red, Default Visibility);
  • Create Effect(Entity Exists(Players In Slot(5, Team 2)) ? Empty Array : All Players(Team 1), Orb, Red,
  • Global.botControlsSpherePositions[5], 1, Visible To);
  • Create In-World Text(Entity Exists(Players In Slot(5, Team 2)) ? Empty Array : Filtered Array(All Players(Team 1),
  • Current Array Element.inSettings), Custom String("+"), Global.botControlsSpherePositions[5], 2.500, Do Not Clip, Visible To,
  • Green, Default Visibility);
  • Create Effect(Entity Exists(Players In Slot(5, Team 2)) ? All Players(Team 1) : Empty Array, Orb, Green,
  • Global.botControlsSpherePositions[5], 1, Visible To);
  • Create In-World Text(Entity Exists(Players In Slot(5, Team 2)) ? Filtered Array(All Players(Team 1),
  • Current Array Element.inSettings) : Empty Array, Custom String("-"), Global.botControlsSpherePositions[5], 2.500, Do Not Clip,
  • Visible To, Red, Default Visibility);
  • Create Effect(Entity Exists(Players In Slot(6, Team 2)) ? Empty Array : All Players(Team 1), Orb, Red,
  • Global.botControlsSpherePositions[6], 1, Visible To);
  • Create In-World Text(Entity Exists(Players In Slot(6, Team 2)) ? Empty Array : Filtered Array(All Players(Team 1),
  • Current Array Element.inSettings), Custom String("+"), Global.botControlsSpherePositions[6], 2.500, Do Not Clip, Visible To,
  • Green, Default Visibility);
  • Create Effect(Entity Exists(Players In Slot(6, Team 2)) ? All Players(Team 1) : Empty Array, Orb, Green,
  • Global.botControlsSpherePositions[6], 1, Visible To);
  • Create In-World Text(Entity Exists(Players In Slot(6, Team 2)) ? Filtered Array(All Players(Team 1),
  • Current Array Element.inSettings) : Empty Array, Custom String("-"), Global.botControlsSpherePositions[6], 2.500, Do Not Clip,
  • Visible To, Red, Default Visibility);
  • Create Effect(Entity Exists(Players In Slot(7, Team 2)) ? Empty Array : All Players(Team 1), Orb, Red,
  • Global.botControlsSpherePositions[7], 1, Visible To);
  • Create In-World Text(Entity Exists(Players In Slot(7, Team 2)) ? Empty Array : Filtered Array(All Players(Team 1),
  • Current Array Element.inSettings), Custom String("+"), Global.botControlsSpherePositions[7], 2.500, Do Not Clip, Visible To,
  • Green, Default Visibility);
  • Create Effect(Entity Exists(Players In Slot(7, Team 2)) ? All Players(Team 1) : Empty Array, Orb, Green,
  • Global.botControlsSpherePositions[7], 1, Visible To);
  • Create In-World Text(Entity Exists(Players In Slot(7, Team 2)) ? Filtered Array(All Players(Team 1),
  • Current Array Element.inSettings) : Empty Array, Custom String("-"), Global.botControlsSpherePositions[7], 2.500, Do Not Clip,
  • Visible To, Red, Default Visibility);
  • Create Effect(Entity Exists(Players In Slot(8, Team 2)) ? Empty Array : All Players(Team 1), Orb, Red,
  • Global.botControlsSpherePositions[8], 1, Visible To);
  • Create In-World Text(Entity Exists(Players In Slot(8, Team 2)) ? Empty Array : Filtered Array(All Players(Team 1),
  • Current Array Element.inSettings), Custom String("+"), Global.botControlsSpherePositions[8], 2.500, Do Not Clip, Visible To,
  • Green, Default Visibility);
  • Create Effect(Entity Exists(Players In Slot(8, Team 2)) ? All Players(Team 1) : Empty Array, Orb, Green,
  • Global.botControlsSpherePositions[8], 1, Visible To);
  • Create In-World Text(Entity Exists(Players In Slot(8, Team 2)) ? Filtered Array(All Players(Team 1),
  • Current Array Element.inSettings) : Empty Array, Custom String("-"), Global.botControlsSpherePositions[8], 2.500, Do Not Clip,
  • Visible To, Red, Default Visibility);
  • Create Effect(Entity Exists(Players In Slot(9, Team 2)) ? Empty Array : All Players(Team 1), Orb, Red,
  • Global.botControlsSpherePositions[9], 1, Visible To);
  • Create In-World Text(Entity Exists(Players In Slot(9, Team 2)) ? Empty Array : Filtered Array(All Players(Team 1),
  • Current Array Element.inSettings), Custom String("+"), Global.botControlsSpherePositions[9], 2.500, Do Not Clip, Visible To,
  • Green, Default Visibility);
  • Create Effect(Entity Exists(Players In Slot(9, Team 2)) ? All Players(Team 1) : Empty Array, Orb, Green,
  • Global.botControlsSpherePositions[9], 1, Visible To);
  • Create In-World Text(Entity Exists(Players In Slot(9, Team 2)) ? Filtered Array(All Players(Team 1),
  • Current Array Element.inSettings) : Empty Array, Custom String("-"), Global.botControlsSpherePositions[9], 2.500, Do Not Clip,
  • Visible To, Red, Default Visibility);
  • }
  • }
  • rule("create bots")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • "only create as many as numBots, set in default settings rule"
  • For Global Variable(loopIndex, 0, Global.numBots, 1);
  • Create Dummy Bot(Global.botHeroes[Global.loopIndex], Team 2, Global.loopIndex, Global.centerPos, Forward);
  • End;
  • "initialize orderedBots"
  • Global.orderedBots = Randomized Array(All Players(Team 2));
  • }
  • }
  • rule("bot setup")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • "respawning is handled by the mode"
  • Disable Built-In Game Mode Respawning(Event Player);
  • "start facing towards player"
  • Start Facing(Event Player, Vector Towards(Eye Position(Event Player), Eye Position(Global.genjiPlayer)), 10000, To World,
  • Direction and Turn Rate);
  • "used to place the bot at a random point in the circle (shoutout to stackOverflow)"
  • "eventPlayer.startHoT(eventPlayer, 9999, 300)\r\n\n used to place the bot at a random point in the circle (shoutout to stackOverflow)"
  • Event Player.normalizedDistance = Square Root(Random Real(0, 1));
  • "horizontal and vertical angle used to get a direction to spawn the bot in, direction is multiplied by normalizedDistance and spawnRadius to get a point within a sphere"
  • Event Player.angles = Array(Random Real(0, 360), Random Real(0, -1 * 180));
  • Event Player.angles = Array(Random Real(0, 360), Random Real(0, -180));
  • Wait(0.016, Ignore Condition);
  • If(Global.boolSettingsArray[5]);
  • Start Heal Over Time(Event Player, Null, 9999, 300);
  • End;
  • If(Global.genjiPlayer.inSettings);
  • "teleport up to settings platform so player can see the bot"
  • Start Forcing Player Position(Event Player, Vector(-1 * 19, 46, 10.750 - Slot Of(Event Player) * 4.250), False);
  • Start Forcing Player Position(Event Player, Vector(-19, 46, 10.750 + Slot Of(Event Player) * -29.750 / 9), False);
  • "don't let player damage bot while in settings"
  • Set Status(Event Player, Null, Invincible, 9999);
  • Else;
  • "if not in settings, tele to random point within spawn radius"
  • Teleport(Event Player, Global.centerPos + Direction From Angles(Event Player.angles[0],
  • Global.boolSettingsArray[4] ? Event Player.angles[1] : 0) * Event Player.normalizedDistance * Global.floatSettingsArray[0]);
  • End;
  • Teleport(Event Player, Global.centerPos + Direction From Angles(First Of(Event Player.angles),
  • Global.gameplayBoolSettingsArray[4] ? Event Player.angles[1] : 0) * Event Player.normalizedDistance * First Of(
  • Global.floatSettingsArray));
  • }
  • }
  • rule("create ana bot")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Ana), Team 1, 5, Vector(0, 1000, 0), Forward);
  • }
  • }
  • rule("ana bot setup")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Ana;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Teleport(Event Player, Up * 10000);
  • "make ana a genie who magically gives nano while out of sight"
  • Set Invisible(Event Player, All);
  • "don't collide with players"
  • Set Status(Event Player, Null, Phased Out, 9999);
  • "falling can mess up nano"
  • Set Gravity(Event Player, 0);
  • "face the same direction as genji, but disregard vertical component (because looking up/down can get werid)"
  • Start Facing(Event Player, Facing Direction Of(Global.genjiPlayer) * Vector(1, 0, 1), 5000, To World, Direction and Turn Rate);
  • }
  • }
  • rule("player setup")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Event Player.isSetup == False;
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • "teleport to center of arena"
  • Teleport(Event Player, Global.centerPos);
  • "need to be able to wake from sleep darts and maybe detect damage for other purposes in the future"
  • Set Damage Received(Event Player, 0.001);
  • Start Heal Over Time(Event Player, Event Player, 9999, 10000);
  • "when using blade with nano enabled, if ana isn't using ult, give same damage as nano would. works as a failsafe as well as allowing the player to disable nano VFX while keeping the damage"
  • Start Damage Modification(All Players(Team 2), Event Player, Is Using Ultimate(Event Player) && !Is Using Ultimate(Players On Hero(
  • Hero(Ana), Team 1)[0]) && Global.boolSettingsArray[0][0] ? 150 : 100, Receivers Damagers and Damage Percent);
  • Start Damage Modification(All Players(Team 2), Event Player, Is Using Ultimate(Event Player) && !Is Using Ultimate(First Of(
  • Players On Hero(Hero(Ana), Team 1))) && First Of(First Of(Global.gameplayBoolSettingsArray)) ? 150 : 100,
  • Receivers Damagers and Damage Percent);
  • Global.botTimeout = 3;
  • Preload Hero(Event Player, Hero(Genji));
  • "has spawned get re-triggered when entering and exiting hero select"
  • Event Player.isSetup = True;
  • }
  • }
  • rule("keep track of genji player")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • "there's a genji player, and this variable is not set to them"
  • Entity Exists(Global.genjiPlayer) == False;
  • Number of Heroes(Hero(Genji), Team 1) > 0;
  • }
  • actions
  • {
  • "arbitrarily pick a genji if there are multiple (note: this mode is not built for multiple players, but it shouldn't break at least)"
  • Global.genjiPlayer = Players On Hero(Hero(Genji), Team 1)[0];
  • Global.genjiPlayer = First Of(Players On Hero(Hero(Genji), Team 1));
  • }
  • }
  • rule("give ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Using Ultimate(Event Player) == False;
  • Ultimate Charge Percent(Event Player) < 100;
  • }
  • actions
  • {
  • Set Ultimate Charge(Event Player, 100);
  • }
  • }
  • rule("reset player if they die")
  • {
  • event
  • {
  • Player Died;
  • Team 1;
  • Genji;
  • }
  • actions
  • {
  • Respawn(Event Player);
  • "respawning is deferred to the end of the tick"
  • Wait(0.016, Ignore Condition);
  • Call Subroutine(returnToArena);
  • }
  • }
  • rule("botTimeout for blade casting")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • True == False;
  • Is Using Ultimate(Event Player) == True;
  • }
  • actions
  • {
  • "currently not used"
  • Global.botTimeout = 1.200;
  • }
  • }
  • rule("reset when all dead")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • "prevent triggering before bots are created"
  • Number of Players(Team 2) > 0;
  • Global.boolSettingsArray[7] == False;
  • Global.gameplayBoolSettingsArray[7] == False;
  • Number of Living Players(Team 2) == 0;
  • }
  • actions
  • {
  • "give player some time before resetting to let them understand why they're resetting"
  • Wait(0.128, Ignore Condition);
  • If(Is Using Ability 1(Global.genjiPlayer));
  • Wait(0.150, Ignore Condition);
  • End;
  • "kinda scuffed way to call an each player rule from a global rule"
  • Global.reset = True;
  • Wait(0.016, Ignore Condition);
  • Global.reset = False;
  • Global.botTimeout = 2.250;
  • "reshuffle ordered bots"
  • Global.orderedBots = Randomized Array(All Players(Team 2));
  • If(Global.boolSettingsArray[6]);
  • If(Global.gameplayBoolSettingsArray[6]);
  • "reset invisibility"
  • Set Invisible(All Players(Team 2), None);
  • End;
  • If(Global.boolSettingsArray[8][0]);
  • If(First Of(Global.gameplayBoolSettingsArray[8]));
  • "handle statuses for ordered mode"
  • Set Status(Remove From Array(All Players(Team 2), Global.orderedBots[0]), Null, Invincible, 9999);
  • Set Status(Remove From Array(All Players(Team 2), First Of(Global.orderedBots)), Null, Invincible, 9999);
  • End;
  • Wait(0.500, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("reset players")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Global.reset == True;
  • }
  • actions
  • {
  • If(Global.teleToCenter);
  • If(Global.generalBoolSettingsArray[1]);
  • "tele above bots if spawn radius is small, rather than getting teleported into the middle of a blob of enemies"
  • Teleport(Event Player, Global.centerPos + Vector(0, (Global.floatSettingsArray[0] <= 1) * 2, 0));
  • Teleport(Event Player, Global.centerPos + Vector(0, (First Of(Global.floatSettingsArray) <= 1) * 2, 0));
  • End;
  • If(Global.cancelBlade);
  • If(First Of(Global.generalBoolSettingsArray));
  • Call Subroutine(resetPlayer);
  • Else;
  • "if using dash while resetting, give it back"
  • If(Is Using Ability 1(Event Player));
  • Event Player.needsDash = True;
  • End;
  • End;
  • }
  • }
  • rule("give player dash back after arena reset or on request")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Genji;
  • }
  • conditions
  • {
  • Event Player.needsDash == True;
  • Is Using Ability 1(Event Player) == False;
  • }
  • actions
  • {
  • "roughly the time limit for a ghost dash - allow player to chain ghost dashes and give their dash back at the end of the chain"
  • Wait(0.128, Abort When False);
  • Set Ability Cooldown(Event Player, Button(Ability 1), 0);
  • Event Player.needsDash = False;
  • }
  • }
  • rule("reset bots")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Global.reset == True;
  • }
  • actions
  • {
  • Respawn(Event Player);
  • Event Player.normalizedDistance = Square Root(Random Real(0, 1));
  • Event Player.angles = Array(Random Real(0, 360), Random Real(0, -1 * 180));
  • Event Player.angles = Array(Random Real(0, 360), Random Real(0, -180));
  • "respawn is deferred to the end of the tick"
  • Wait(0.016, Ignore Condition);
  • Teleport(Event Player, Global.centerPos + Direction From Angles(Event Player.angles[0],
  • Global.boolSettingsArray[4] ? Event Player.angles[1] : 0) * Event Player.normalizedDistance * Global.floatSettingsArray[0]);
  • Teleport(Event Player, Global.centerPos + Direction From Angles(First Of(Event Player.angles),
  • Global.gameplayBoolSettingsArray[4] ? Event Player.angles[1] : 0) * Event Player.normalizedDistance * First Of(
  • Global.floatSettingsArray));
  • }
  • }
  • rule("prevent shield regen")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • "hero has shields or other health regen"
  • Array Contains(Global.shieldHeroes, Hero Of(Event Player)) == True;
  • Global.preventShieldRegen == True;
  • Global.generalBoolSettingsArray[2] == True;
  • "don't run if there's no health to regen"
  • Health(Event Player) != Max Health(Event Player);
  • }
  • actions
  • {
  • "regen starts after 3 seconds"
  • Wait(2.750, Abort When False);
  • "enough to prevent regen"
  • Damage(Event Player, Null, 0.001 * 0.001);
  • Damage(Event Player, Null, 0);
  • Loop If Condition Is True;
  • }
  • }
  • rule("==================================================SETTING CONTROLS==================================================")
  • rule("================================================SETTING CONTROLS================================================")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.DX = 0;
  • }
  • }
  • rule("goto settings")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Interact) == True;
  • Event Player.inSettings == False;
  • "don't want anything unintended to happen if trying to go to settings while arena is resetting"
  • Number of Living Players(Team 2) > 0;
  • }
  • actions
  • {
  • Event Player.inSettings = True;
  • Call Subroutine(resetPlayer);
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Move Speed(Event Player, 150);
  • "above the chamber"
  • Teleport(Event Player, Vector(0, 46, -1 * 8.500));
  • Teleport(Event Player, Vector(0, 46, -8.500));
  • "towards setting spheres"
  • Set Facing(Event Player, Forward, To World);
  • Respawn(All Dead Players(Team 2));
  • For Global Variable(loopIndex, 0, Number of Players(Team 2), 1);
  • "sort bots by slot and place them in a line on the edge of the chamber roof"
  • Start Forcing Player Position(All Players(Team 2)[Global.loopIndex], Vector(-1 * 19, 46, 10.750 - Slot Of(All Players(Team 2)
  • [Global.loopIndex]) * 4.250), False);
  • Start Forcing Player Position(Players In Slot(Global.loopIndex, Team 2), Vector(-19, 46, 10.750 + Global.loopIndex * -29.750 / 9),
  • False);
  • "every bot gets forced to the same position without this wait, idk why. start forcing pos is probably deferred to end of tick"
  • Wait(0.016, Ignore Condition);
  • End;
  • If(Global.boolSettingsArray[6]);
  • If(Global.gameplayBoolSettingsArray[6]);
  • "let player see bots"
  • Set Invisible(All Players(Team 2), None);
  • End;
  • Heal(All Players(Team 2), Null, 9999);
  • Set Gravity(All Players(Team 2), 100);
  • "don't let player damage bots"
  • Set Status(All Players(Team 2), Null, Invincible, 9999);
  • "reshuffle orderedBots because some may have been respawned"
  • Global.orderedBots = Randomized Array(All Players(Team 2));
  • }
  • }
  • rule("increase spawn radius")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • Event Player.inSettings == True;
  • Is Button Held(Event Player, Primary Fire) == True;
  • Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player) * Distance Between(Eye Position(Event Player),
  • Global.floatSpherePositions[0]), Global.floatSpherePositions[0]) <= 1;
  • First Of(Global.floatSpherePositions)), First Of(Global.floatSpherePositions)) <= 1;
  • }
  • actions
  • {
  • "max 15"
  • If(Global.floatSettingsArray[0] < 15);
  • "increment by 0.5 or less if maximum value is less than 0.5 away"
  • Global.floatSettingsArray[0] = Global.floatSettingsArray[0] + Min(0.500, 15 - Global.floatSettingsArray[0]);
  • If(First Of(Global.floatSettingsArray) < 15);
  • Global.floatSettingsArray[0] += Min(0.500, 15 - First Of(Global.floatSettingsArray));
  • "hold primary fire to keep increasing"
  • Wait(0.200, Ignore Condition);
  • Loop If Condition Is True;
  • "confirmation message when no longer looping"
  • Small Message(Event Player, Custom String("INCREASED SPAWN RADIUS"));
  • Else;
  • "let player know they hit limit"
  • Small Message(Event Player, Custom String("TOO LARGE!"));
  • End;
  • }
  • }
  • rule("decrease spawn radius")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • Event Player.inSettings == True;
  • Is Button Held(Event Player, Primary Fire) == True;
  • Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player) * Distance Between(Eye Position(Event Player),
  • Global.floatSpherePositions[1]), Global.floatSpherePositions[1]) <= 1;
  • }
  • actions
  • {
  • "min 0"
  • If(Global.floatSettingsArray[0] > 0);
  • "decrement by 0.5 or less if minimum value is less than 0.5 away"
  • Global.floatSettingsArray[0] = Global.floatSettingsArray[0] - Min(0.500, Global.floatSettingsArray[0]);
  • If(First Of(Global.floatSettingsArray) > 0);
  • Global.floatSettingsArray[0] -= Min(0.500, First Of(Global.floatSettingsArray));
  • "hold primary fire to keep decreasing"
  • Wait(0.200, Ignore Condition);
  • Loop If Condition Is True;
  • "confirmation message when no longer looping"
  • Small Message(Event Player, Custom String("DECREASED SPAWN RADIUS"));
  • Else;
  • "let player know they hit limit"
  • Small Message(Event Player, Custom String("TOO SMALL!"));
  • End;
  • }
  • }
  • rule("general bool toggles")
  • rule("gameplay bool toggles")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.inSettings == True;
  • Is Button Held(Event Player, Primary Fire) == True;
  • "player is aiming within 1 meter of any add/remove spheres"
  • Is True For Any(Global.boolSpherePositions, Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player)
  • Is True For Any(Global.gameplayBoolSpherePositions, Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player)
  • * Distance Between(Eye Position(Event Player), Current Array Element), Current Array Element) <= 1) == True;
  • }
  • actions
  • {
  • "index of closest sphere to player's crosshair"
  • Event Player.selectedSphereIndex = Index Of Array Value(Global.boolSpherePositions, Sorted Array(Global.boolSpherePositions,
  • Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player) * Distance Between(Eye Position(Event Player),
  • Current Array Element), Current Array Element))[0]);
  • Global.boolSettingsArray[Event Player.selectedSphereIndex] = Count Of(Global.boolSettingsArray[Event Player.selectedSphereIndex])
  • == 0 ? !Global.boolSettingsArray[Event Player.selectedSphereIndex] : Append To Array(
  • !Global.boolSettingsArray[Event Player.selectedSphereIndex], Array Slice(
  • Global.boolSettingsArray[Event Player.selectedSphereIndex], 1, Count Of(
  • Global.boolSettingsArray[Event Player.selectedSphereIndex])));
  • If(Global.boolSettingsArray[Event Player.selectedSphereIndex]);
  • Small Message(All Players(Team 1), Custom String("{0} ENABLED", Global.boolSettingsStrings[Event Player.selectedSphereIndex][0]));
  • Event Player.selectedSphereIndex = Index Of Array Value(Global.gameplayBoolSpherePositions, First Of(Sorted Array(
  • Global.gameplayBoolSpherePositions, Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player)
  • * Distance Between(Eye Position(Event Player), Current Array Element), Current Array Element))));
  • Global.gameplayBoolSettingsArray[Event Player.selectedSphereIndex] = Count Of(
  • Global.gameplayBoolSettingsArray[Event Player.selectedSphereIndex])
  • == 0 ? !Global.gameplayBoolSettingsArray[Event Player.selectedSphereIndex] : Append To Array(
  • !Global.gameplayBoolSettingsArray[Event Player.selectedSphereIndex], Array Slice(
  • Global.gameplayBoolSettingsArray[Event Player.selectedSphereIndex], 1, Count Of(
  • Global.gameplayBoolSettingsArray[Event Player.selectedSphereIndex])));
  • If(Global.gameplayBoolSettingsArray[Event Player.selectedSphereIndex]);
  • Small Message(All Players(Team 1), Custom String("{0} ENABLED", First Of(
  • Global.gameplayBoolSettingsStrings[Event Player.selectedSphereIndex])));
  • Else;
  • Small Message(All Players(Team 1), Custom String("{0} DISABLED", Global.boolSettingsStrings[Event Player.selectedSphereIndex][0]));
  • End;
  • Small Message(All Players(Team 1), Custom String("{0} DISABLED", First Of(
  • Global.gameplayBoolSettingsStrings[Event Player.selectedSphereIndex])));
  • }
  • }
  • rule("toggle nano")
  • rule("general bool toggles")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • All;
  • All;
  • }
  • conditions
  • {
  • True == False;
  • Event Player.inSettings == True;
  • Is Button Held(Event Player, Primary Fire) == True;
  • Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player) * Distance Between(Eye Position(Event Player),
  • Global.boolSpherePositions[0]), Global.boolSpherePositions[0]) <= 1;
  • "player is aiming within 1 meter of any add/remove spheres"
  • Is True For Any(Global.generalBoolSpherePositions, Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player)
  • * Distance Between(Eye Position(Event Player), Current Array Element), Current Array Element) <= 1) == True;
  • }
  • actions
  • {
  • "can't assign to multi-dimensional arrays, but since this only has length 2 it's pretty easy to recreate the array"
  • Global.boolSettingsArray[0] = Array(!Global.boolSettingsArray[0][0], Global.boolSettingsArray[0][1]);
  • "if toggled to true"
  • If(Global.boolSettingsArray[0][0]);
  • Small Message(All Players(All Teams), Custom String("NANOBOOST ENABLED"));
  • "if toggled to false"
  • "index of closest sphere to player's crosshair"
  • Event Player.selectedSphereIndex = Index Of Array Value(Global.generalBoolSpherePositions, First Of(Sorted Array(
  • Global.generalBoolSpherePositions, Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player)
  • * Distance Between(Eye Position(Event Player), Current Array Element), Current Array Element))));
  • Global.generalBoolSettingsArray[Event Player.selectedSphereIndex] = Count Of(
  • Global.generalBoolSettingsArray[Event Player.selectedSphereIndex])
  • == 0 ? !Global.generalBoolSettingsArray[Event Player.selectedSphereIndex] : Append To Array(
  • !Global.generalBoolSettingsArray[Event Player.selectedSphereIndex], Array Slice(
  • Global.generalBoolSettingsArray[Event Player.selectedSphereIndex], 1, Count Of(
  • Global.generalBoolSettingsArray[Event Player.selectedSphereIndex])));
  • If(Global.generalBoolSettingsArray[Event Player.selectedSphereIndex]);
  • Small Message(All Players(Team 1), Custom String("{0} ENABLED", First Of(
  • Global.generalBoolSettingsStrings[Event Player.selectedSphereIndex])));
  • Else;
  • Small Message(All Players(All Teams), Custom String("NANOBOOST DISABLED"));
  • End;
  • Small Message(All Players(Team 1), Custom String("{0} DISABLED", First Of(
  • Global.generalBoolSettingsStrings[Event Player.selectedSphereIndex])));
  • }
  • }
  • rule("toggle nano VFX")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • Event Player.inSettings == True;
  • Global.boolSettingsArray[0][0] == True;
  • First Of(First Of(Global.gameplayBoolSettingsArray)) == True;
  • Is Button Held(Event Player, Primary Fire) == True;
  • Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player) * Distance Between(Eye Position(Event Player),
  • Global.boolSpherePositions[0] + Up * 2.250), Global.boolSpherePositions[0] + Up * 2.250) <= 1;
  • First Of(Global.gameplayBoolSpherePositions) + Up * 2.250), First Of(Global.gameplayBoolSpherePositions) + Up * 2.250) <= 1;
  • }
  • actions
  • {
  • Global.boolSettingsArray[0] = Array(True, !Global.boolSettingsArray[0][1]);
  • Global.gameplayBoolSettingsArray[0] = Array(True, !First Of(Global.gameplayBoolSettingsArray)[1]);
  • "if toggled to true"
  • If(Global.boolSettingsArray[0][1]);
  • If(First Of(Global.gameplayBoolSettingsArray)[1]);
  • Small Message(All Players(All Teams), Custom String("NANOBOOST VFX ENABLED"));
  • "if toggled to false"
  • Else;
  • Small Message(All Players(All Teams), Custom String("NANOBOOST VFX DISABLED"));
  • End;
  • }
  • }
  • rule("toggle movement")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • True == False;
  • Event Player.inSettings == True;
  • Is Button Held(Event Player, Primary Fire) == True;
  • Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player) * Distance Between(Eye Position(Event Player),
  • Global.boolSpherePositions[1]), Global.boolSpherePositions[1]) <= 1;
  • }
  • actions
  • {
  • "toggle botMovementEnabled"
  • Global.boolSettingsArray[1] = !Global.boolSettingsArray[1];
  • "if toggled to true"
  • If(Global.boolSettingsArray[1]);
  • Small Message(All Players(All Teams), Custom String("BOT MOVEMENT ENABLED"));
  • "if toggled to false"
  • Else;
  • Small Message(All Players(All Teams), Custom String("BOT MOVEMENT DISABLED"));
  • End;
  • }
  • }
  • rule("toggle instakillEnabled")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • True == False;
  • Event Player.inSettings == True;
  • Is Button Held(Event Player, Primary Fire) == True;
  • Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player) * Distance Between(Eye Position(Event Player),
  • Global.boolSpherePositions[2]), Global.boolSpherePositions[2]) <= 1;
  • }
  • actions
  • {
  • "toggle instakillEnabled"
  • Global.boolSettingsArray[2] = !Global.boolSettingsArray[2];
  • "if toggled to true"
  • If(Global.boolSettingsArray[2]);
  • Set Damage Dealt(Event Player, 10000);
  • Set Damage Received(All Players(Team 2), 10000);
  • Small Message(All Players(All Teams), Custom String("INSTAKILL ENABLED"));
  • "if toggled to false"
  • Else;
  • Set Damage Dealt(Event Player, 100);
  • Set Damage Received(All Players(Team 2), 100);
  • Small Message(All Players(All Teams), Custom String("INSTAKILL DISABLED"));
  • End;
  • }
  • }
  • rule("toggle unlimited dash")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • True == False;
  • Event Player.inSettings == True;
  • Is Button Held(Event Player, Primary Fire) == True;
  • Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player) * Distance Between(Eye Position(Event Player),
  • Global.boolSpherePositions[3]), Global.boolSpherePositions[3]) <= 1;
  • }
  • actions
  • {
  • "toggle infiniteDashEnabled"
  • Global.boolSettingsArray[3] = !Global.boolSettingsArray[3];
  • "if toggled to true"
  • If(Global.boolSettingsArray[3]);
  • Small Message(All Players(All Teams), Custom String("UNLIMITED DASH ENABLED"));
  • "if toggled to false"
  • Else;
  • Small Message(All Players(All Teams), Custom String("UNLIMITED DASH DISABLED"));
  • End;
  • }
  • }
  • rule("toggle floating bots")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • True == False;
  • Event Player.inSettings == True;
  • Is Button Held(Event Player, Primary Fire) == True;
  • Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player) * Distance Between(Eye Position(Event Player),
  • Global.boolSpherePositions[4]), Global.boolSpherePositions[4]) <= 1;
  • }
  • actions
  • {
  • "toggle floatingBotsEnabled"
  • Global.boolSettingsArray[4] = !Global.boolSettingsArray[4];
  • "if toggled to true"
  • If(Global.boolSettingsArray[4]);
  • Small Message(All Players(All Teams), Custom String("FLOATING BOTS ENABLED"));
  • "if toggled to false"
  • Else;
  • Small Message(All Players(All Teams), Custom String("FLOATING BOTS DISABLED"));
  • End;
  • }
  • }
  • rule("toggle transcendence heal")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • True == False;
  • Event Player.inSettings == True;
  • Is Button Held(Event Player, Primary Fire) == True;
  • Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player) * Distance Between(Eye Position(Event Player),
  • Global.boolSpherePositions[5]), Global.boolSpherePositions[5]) <= 1;
  • }
  • actions
  • {
  • "toggle transcendenceEnabled"
  • Global.boolSettingsArray[5] = !Global.boolSettingsArray[5];
  • "if toggled to true"
  • If(Global.boolSettingsArray[5]);
  • Small Message(All Players(All Teams), Custom String("TRANSCENDENCE HEALING ENABLED"));
  • "300hp/s is the same as transcendence"
  • Start Heal Over Time(All Players(Team 2), Null, 9999, 300);
  • "if toggled to false"
  • Else;
  • Small Message(All Players(All Teams), Custom String("TRANSCENDENCE HEALING DISABLED"));
  • Stop All Heal Over Time(All Players(Team 2));
  • End;
  • }
  • }
  • rule("toggle invisible bots")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • True == False;
  • Event Player.inSettings == True;
  • Is Button Held(Event Player, Primary Fire) == True;
  • Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player) * Distance Between(Eye Position(Event Player),
  • Global.boolSpherePositions[6]), Global.boolSpherePositions[6]) <= 1;
  • }
  • actions
  • {
  • "toggle invisibleBotsEnabled"
  • Global.boolSettingsArray[6] = !Global.boolSettingsArray[6];
  • "if toggled to true"
  • If(Global.boolSettingsArray[6]);
  • Small Message(All Players(All Teams), Custom String("INVISIBLE BOTS ENABLED"));
  • "if endlessEnabled"
  • If(Global.boolSettingsArray[7]);
  • "disable endless"
  • Global.boolSettingsArray[7] = False;
  • Small Message(All Players(All Teams), Custom String("ENDLESS MODE DISABLED (INCOMPATIBLE)"));
  • End;
  • "if toggled to false"
  • Else;
  • Small Message(All Players(All Teams), Custom String("INVISIBLE BOTS DISABLED"));
  • End;
  • }
  • }
  • rule("toggle endless")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • True == False;
  • Event Player.inSettings == True;
  • Is Button Held(Event Player, Primary Fire) == True;
  • Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player) * Distance Between(Eye Position(Event Player),
  • Global.boolSpherePositions[7]), Global.boolSpherePositions[7]) <= 1;
  • }
  • actions
  • {
  • "toggle endlessEnabled"
  • Global.boolSettingsArray[7] = !Global.boolSettingsArray[7];
  • "if toggled to true"
  • If(Global.boolSettingsArray[7]);
  • Small Message(All Players(All Teams), Custom String("ENDLESS MODE ENABLED"));
  • "if invisibleBotsEnabled"
  • If(Global.boolSettingsArray[6]);
  • "disable invisible bots"
  • Global.boolSettingsArray[6] = False;
  • Small Message(All Players(All Teams), Custom String("INVISIBLE BOTS DISABLED (INCOMPATIBLE)"));
  • End;
  • "if orderedEnabled"
  • If(Global.boolSettingsArray[8][0]);
  • "make everyone but the first target invincible"
  • Set Status(Remove From Array(All Players(Team 2), Global.orderedBots[0]), Null, Invincible, 9999);
  • End;
  • "if toggled to false"
  • Else;
  • Small Message(All Players(All Teams), Custom String("ENDLESS MODE DISABLED"));
  • End;
  • }
  • }
  • rule("toggle ordered mode")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • True == False;
  • Event Player.inSettings == True;
  • Is Button Held(Event Player, Primary Fire) == True;
  • Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player) * Distance Between(Eye Position(Event Player),
  • Global.boolSpherePositions[8]), Global.boolSpherePositions[8]) <= 1;
  • }
  • actions
  • {
  • "toggle orderedEnabled"
  • Global.boolSettingsArray[8] = Array(!Global.boolSettingsArray[8][0], Global.boolSettingsArray[8][1]);
  • "if toggled to true"
  • If(Global.boolSettingsArray[8][0]);
  • Small Message(All Players(All Teams), Custom String("ORDERED MODE ENABLED"));
  • "if toggled to false"
  • Else;
  • Small Message(All Players(All Teams), Custom String("ORDERED MODE DISABLED"));
  • End;
  • }
  • }
  • rule("toggle ordered marker")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • Event Player.inSettings == True;
  • Global.boolSettingsArray[8][0] == True;
  • First Of(Global.gameplayBoolSettingsArray[8]) == True;
  • Is Button Held(Event Player, Primary Fire) == True;
  • Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player) * Distance Between(Eye Position(Event Player),
  • Global.boolSpherePositions[8] + Up * 2.250), Global.boolSpherePositions[8] + Up * 2.250) <= 1;
  • Global.gameplayBoolSpherePositions[8] + Up * 2.250), Global.gameplayBoolSpherePositions[8] + Up * 2.250) <= 1;
  • }
  • actions
  • {
  • "toggle orderedMarkerEnabled"
  • Global.boolSettingsArray[8] = Array(True, !Global.boolSettingsArray[8][1]);
  • Global.gameplayBoolSettingsArray[8] = Array(True, !Global.gameplayBoolSettingsArray[8][1]);
  • "if toggled to true"
  • If(Global.boolSettingsArray[8][0]);
  • If(First Of(Global.gameplayBoolSettingsArray[8]));
  • Small Message(All Players(All Teams), Custom String("TARGET MARKER ENABLED"));
  • "if toggled to false"
  • Else;
  • Small Message(All Players(All Teams), Custom String("TARGET MARKER DISABLED"));
  • End;
  • }
  • }
  • rule("add/remove bot")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • Event Player.inSettings == True;
  • Is Button Held(Event Player, Primary Fire) == True;
  • "player is aiming within 1 meter of any add/remove spheres"
  • Is True For Any(Global.botControlsSpherePositions, Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player)
  • * Distance Between(Eye Position(Event Player), Current Array Element), Current Array Element) <= 1) == True;
  • }
  • actions
  • {
  • "index of closest add/remove sphere to player's crosshair"
  • Event Player.selectedSphereIndex = Index Of Array Value(Global.botControlsSpherePositions, Sorted Array(
  • Event Player.selectedSphereIndex = Index Of Array Value(Global.botControlsSpherePositions, First Of(Sorted Array(
  • Global.botControlsSpherePositions, Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player)
  • * Distance Between(Eye Position(Event Player), Current Array Element), Current Array Element))[0]);
  • * Distance Between(Eye Position(Event Player), Current Array Element), Current Array Element))));
  • "simplifies later code"
  • Event Player.selectedBotToAddOrRemove = Players In Slot(Event Player.selectedSphereIndex, Team 2);
  • Event Player.selectedBot = Players In Slot(Event Player.selectedSphereIndex, Team 2);
  • "if the player below sphere that was clicked on exists, remove them"
  • If(Entity Exists(Event Player.selectedBotToAddOrRemove));
  • If(Entity Exists(Event Player.selectedBot));
  • "nothing will break if you have 0 bots... but why?"
  • If(Number of Players(Team 2) <= 1);
  • Small Message(Event Player, Custom String("TOO FEW BOTS!"));
  • Else;
  • "last change was adding selected bot, second-last was removing selected bot"
  • If(Count Of(Global.undoStack) >= 2 && Last Of(Global.undoStack)[0] == Null && Last Of(Global.undoStack)
  • If(Count Of(Global.undoStack) >= 2 && First Of(Last Of(Global.undoStack)) == Null && Last Of(Global.undoStack)
  • [2] == Event Player.selectedSphereIndex && Global.undoStack[Count Of(Global.undoStack)
  • - 2][1] == Null && Global.undoStack[Count Of(Global.undoStack) - 2][2] == Event Player.selectedSphereIndex);
  • Modify Global Variable(undoStack, Remove From Array By Index, Count Of(Global.undoStack) - 1);
  • Else;
  • Modify Global Variable(undoStack, Append To Array, Hero Of(Event Player.selectedBotToAddOrRemove));
  • Modify Global Variable At Index(undoStack, Count Of(Global.undoStack) - 1, Append To Array, Null);
  • Modify Global Variable At Index(undoStack, Count Of(Global.undoStack) - 1, Append To Array, Slot Of(
  • Event Player.selectedBotToAddOrRemove));
  • "changed from current hero to null"
  • Global.undoStack[Count Of(Global.undoStack)] = Array(Hero Of(Event Player.selectedBot), Null, Slot Of(Event Player.selectedBot));
  • End;
  • Play Effect(All Players(Team 1), Good Pickup Effect, Red, Vector(-1 * 19, 46, 10.750 - Event Player.selectedSphereIndex * 4.250),
  • Play Effect(All Players(Team 1), Good Pickup Effect, Red, Vector(-19, 46, 10.750 + Event Player.selectedSphereIndex * -29.750 / 9),
  • 1);
  • Modify Global Variable(orderedBots, Remove From Array By Value, Event Player.selectedBotToAddOrRemove);
  • Modify Global Variable(orderedBots, Remove From Array By Value, Event Player.selectedBot);
  • "destroy the selected bot"
  • Destroy Dummy Bot(Team 2, Event Player.selectedSphereIndex);
  • If(Global.boolSettingsArray[8][0]);
  • Set Status(Remove From Array(All Players(Team 2), Global.orderedBots[0]), Null, Invincible, 9999);
  • If(First Of(Global.gameplayBoolSettingsArray[8]));
  • Set Status(Remove From Array(All Players(Team 2), First Of(Global.orderedBots)), Null, Invincible, 9999);
  • End;
  • "show which bot was removed"
  • Small Message(All Players(All Teams), Custom String("REMOVED {0}", Hero Icon String(
  • Global.botHeroes[Event Player.selectedSphereIndex])));
  • End;
  • "add"
  • Else;
  • "last change was removing selected bot, second-last was adding selected bot"
  • If(Count Of(Global.undoStack) >= 2 && Last Of(Global.undoStack)[0] == Null && Last Of(Global.undoStack)
  • [2] == Event Player.selectedSphereIndex && Global.undoStack[Count Of(Global.undoStack)
  • - 2][0] == Null && Global.undoStack[Count Of(Global.undoStack) - 2][2] == Event Player.selectedSphereIndex);
  • If(Count Of(Global.undoStack) >= 2 && Last Of(Global.undoStack)[1] == Null && Last Of(Global.undoStack)
  • [2] == Event Player.selectedSphereIndex && First Of(Global.undoStack[Count Of(Global.undoStack) - 2])
  • == Null && Global.undoStack[Count Of(Global.undoStack) - 2][2] == Event Player.selectedSphereIndex);
  • Modify Global Variable(undoStack, Remove From Array By Index, Count Of(Global.undoStack) - 1);
  • Else;
  • Modify Global Variable(undoStack, Append To Array, Null);
  • Modify Global Variable At Index(undoStack, Count Of(Global.undoStack) - 1, Append To Array,
  • Global.botHeroes[Event Player.selectedSphereIndex]);
  • Modify Global Variable At Index(undoStack, Count Of(Global.undoStack) - 1, Append To Array, Event Player.selectedSphereIndex);
  • "changed from null to the hero they will be created as"
  • Global.undoStack[Count Of(Global.undoStack)] = Array(Null, Global.botHeroes[Event Player.selectedSphereIndex],
  • Event Player.selectedSphereIndex);
  • End;
  • Play Effect(All Players(Team 1), Good Pickup Effect, Green, Vector(-1 * 19, 46, 10.750 - Event Player.selectedSphereIndex * 4.250),
  • 1);
  • Play Effect(All Players(Team 1), Good Pickup Effect, Green, Vector(-19, 46,
  • 10.750 + Event Player.selectedSphereIndex * -29.750 / 9), 1);
  • Create Dummy Bot(Global.botHeroes[Event Player.selectedSphereIndex], Team 2, Event Player.selectedSphereIndex, Global.centerPos,
  • Forward);
  • Modify Global Variable(orderedBots, Append To Array, Last Created Entity);
  • If(Global.boolSettingsArray[8][0]);
  • Set Status(Remove From Array(All Players(Team 2), Global.orderedBots[0]), Null, Invincible, 9999);
  • If(First Of(Global.gameplayBoolSettingsArray[8]));
  • Set Status(Remove From Array(All Players(Team 2), First Of(Global.orderedBots)), Null, Invincible, 9999);
  • End;
  • "show hero of bot who was just added"
  • Small Message(All Players(All Teams), Custom String("ADDED {0}", Hero Icon String(
  • Global.botHeroes[Event Player.selectedSphereIndex])));
  • End;
  • }
  • }
  • rule("change bot hero")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Event Player.inSettings == True;
  • Event Player.isChangingBot == False;
  • Is Button Held(Event Player, Primary Fire) == True;
  • "player is aiming at a bot"
  • Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player) * 100, All Players(
  • All Teams), Event Player, False) != Null;
  • }
  • actions
  • {
  • "store position and facing direction for later so that player doesn't get disoriented"
  • Event Player.temp = Array(Position Of(Event Player) - Vector(0, Altitude Of(Event Player) < 15 ? Altitude Of(Event Player) : 0, 0),
  • Facing Direction Of(Event Player));
  • "selectedBotToChange is the bot the player has their crosshair over"
  • Event Player.selectedBotToChange = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player)
  • + Facing Direction Of(Event Player) * 100, All Players(All Teams), Event Player, False);
  • Event Player.selectedBot = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(
  • Event Player) * 100, All Players(All Teams), Event Player, False);
  • "force player into hero select"
  • Set Player Allowed Heroes(Event Player, Remove From Array(All Heroes, Hero Of(Event Player)));
  • Set Player Allowed Heroes(Event Player, Hero Of(Event Player.selectedBot) != Hero(Genji) ? Hero Of(Event Player.selectedBot)
  • : Random Value In Array(Remove From Array(All Heroes, Hero(Genji))));
  • Wait(0.016, Ignore Condition);
  • Event Player.isChangingBot = True;
  • "wait is needed to prevent hero select bugging. increase this value if it immediately kicks you out"
  • Wait(0.500, Ignore Condition);
  • Wait(0.250, Ignore Condition);
  • Set Player Allowed Heroes(Event Player, All Heroes);
  • Wait(0.500, Ignore Condition);
  • }
  • }
  • rule("undo bot changes")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Primary Fire) == True;
  • Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player) * Distance Between(Eye Position(Event Player),
  • Global.undoSpherePosition), Global.undoSpherePosition) <= 1;
  • }
  • actions
  • {
  • "if nothing left in undo stack"
  • If(Count Of(Global.undoStack) == 0);
  • Small Message(Event Player, Custom String("NOTHING LEFT TO UNDO"));
  • Else;
  • If(Last Of(Global.undoStack)[0] == Null);
  • If(First Of(Last Of(Global.undoStack)) == Null);
  • Small Message(Event Player, Custom String("UNDID CREATION OF {0}\n", Hero Icon String(Last Of(Global.undoStack)[1])));
  • Modify Global Variable(orderedBots, Remove From Array By Value, Players In Slot(Last Of(Global.undoStack)[2], Team 2));
  • Destroy Dummy Bot(Team 2, Last Of(Global.undoStack)[2]);
  • Play Effect(All Players(Team 1), Good Pickup Effect, Orange, Vector(-1 * 19, 46, 10.750 - Last Of(Global.undoStack)[2] * 4.250),
  • 1);
  • Else If(Last Of(Global.undoStack)[1] == Null);
  • Small Message(Event Player, Custom String("ADDED {0} BACK\n", Hero Icon String(Last Of(Global.undoStack)[0])));
  • Create Dummy Bot(Last Of(Global.undoStack)[0], Team 2, Last Of(Global.undoStack)[2], Global.centerPos, Forward);
  • Play Effect(All Players(Team 1), Good Pickup Effect, Orange, Vector(-1 * 19, 46, 10.750 - Last Of(Global.undoStack)[2] * 4.250),
  • 1);
  • Small Message(Event Player, Custom String("ADDED {0} BACK\n", Hero Icon String(First Of(Last Of(Global.undoStack)))));
  • Create Dummy Bot(First Of(Last Of(Global.undoStack)), Team 2, Last Of(Global.undoStack)[2], Global.centerPos, Forward);
  • Modify Global Variable(orderedBots, Append To Array, Last Created Entity);
  • Else;
  • "show which hero changed to what"
  • Small Message(Event Player, Custom String("CHANGED {0} BACK TO {1}\n", Hero Icon String(Last Of(Global.undoStack)[1]),
  • Hero Icon String(Last Of(Global.undoStack)[0])));
  • Hero Icon String(First Of(Last Of(Global.undoStack)))));
  • "update botHeroes to match the actual bot heroes"
  • Global.botHeroes[Last Of(Global.undoStack)[2]] = Last Of(Global.undoStack)[0];
  • Global.botHeroes[Last Of(Global.undoStack)[2]] = First Of(Last Of(Global.undoStack));
  • "replace bot"
  • Create Dummy Bot(Last Of(Global.undoStack)[0], Team 2, Last Of(Global.undoStack)[2], Global.centerPos, Forward);
  • Play Effect(All Players(Team 1), Good Pickup Effect, Orange, Vector(-1 * 19, 46, 10.750 - Last Of(Global.undoStack)[2] * 4.250),
  • 1);
  • Create Dummy Bot(First Of(Last Of(Global.undoStack)), Team 2, Last Of(Global.undoStack)[2], Global.centerPos, Forward);
  • Modify Global Variable(orderedBots, Append To Array, Last Created Entity);
  • End;
  • Play Effect(All Players(Team 1), Good Pickup Effect, Orange, Vector(-19, 46, 10.750 + Last Of(Global.undoStack)[2] * -29.750 / 9),
  • 1);
  • Modify Global Variable(undoStack, Remove From Array By Index, Count Of(Global.undoStack) - 1);
  • "hold to loop"
  • Wait(0.250, Ignore Condition);
  • Loop If Condition Is True;
  • End;
  • }
  • }
  • rule("return to arena")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Event Player.inSettings == True;
  • "check if in cylinder by negating y components of both vectors"
  • Distance Between(Position Of(Event Player) * Vector(1, 0, 1), Global.returnPos * Vector(1, 0, 1)) <= 2;
  • }
  • actions
  • {
  • If(Global.cancelBlade);
  • If(First Of(Global.generalBoolSettingsArray));
  • Call Subroutine(resetPlayer);
  • Else If(Is Using Ability 1(Event Player));
  • Event Player.needsDash = True;
  • End;
  • Call Subroutine(returnToArena);
  • }
  • }
  • rule("tele bots back when returning")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Global.genjiPlayer.inSettings == False;
  • }
  • actions
  • {
  • Stop Forcing Player Position(Event Player);
  • If(Global.boolSettingsArray[4]);
  • If(Global.gameplayBoolSettingsArray[4]);
  • Set Gravity(Event Player, 0);
  • End;
  • "stop forcing is deferred to end of tick"
  • Wait(0.016, Ignore Condition);
  • Teleport(Event Player, Global.centerPos + Direction From Angles(Event Player.angles[0],
  • Global.boolSettingsArray[4] ? Event Player.angles[1] : 0) * Event Player.normalizedDistance * Global.floatSettingsArray[0]);
  • Teleport(Event Player, Global.centerPos + Direction From Angles(First Of(Event Player.angles),
  • Global.gameplayBoolSettingsArray[4] ? Event Player.angles[1] : 0) * Event Player.normalizedDistance * First Of(
  • Global.floatSettingsArray));
  • }
  • }
  • rule("=================================================SETTING SCRIPTS=================================================")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.DX = 0;
  • }
  • }
  • rule("change bot")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • "is in hero select"
  • Event Player.isChangingBot == True;
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • "if the player didn't select the hero a bot already was"
  • If(Hero Of(Event Player) != Hero Of(Event Player.selectedBotToChange));
  • If(Hero Of(Event Player) != Hero Of(Event Player.selectedBot));
  • "update botHeroes"
  • Global.botHeroes[Slot Of(Event Player.selectedBotToChange)] = Hero Of(Event Player);
  • Modify Global Variable(undoStack, Append To Array, Hero Of(Event Player.selectedBotToChange));
  • Modify Global Variable At Index(undoStack, Count Of(Global.undoStack) - 1, Append To Array, Hero Of(Event Player));
  • Modify Global Variable At Index(undoStack, Count Of(Global.undoStack) - 1, Append To Array, Slot Of(
  • Event Player.selectedBotToChange));
  • Global.botHeroes[Slot Of(Event Player.selectedBot)] = Hero Of(Event Player);
  • "last change was changing from new hero to old hero, second-last was changing from old hero to new hero"
  • If(Count Of(Global.undoStack) >= 2 && Global.undoStack[Count Of(Global.undoStack) - 1] == Array(Hero Of(Event Player), Hero Of(
  • Event Player.selectedBot), Slot Of(Event Player.selectedBot)) && Global.undoStack[Count Of(Global.undoStack) - 2] == Array(
  • Hero Of(Event Player.selectedBot), Hero Of(Event Player), Slot Of(Event Player.selectedBot)));
  • Modify Global Variable(undoStack, Remove From Array By Index, Count Of(Global.undoStack) - 1);
  • Else;
  • "changed from bot's current hero to player's current hero"
  • Global.undoStack[Count Of(Global.undoStack)] = Array(Hero Of(Event Player.selectedBot), Hero Of(Event Player), Slot Of(
  • Event Player.selectedBot));
  • End;
  • "replace old bot"
  • Create Dummy Bot(Hero Of(Event Player), Team 2, Slot Of(Event Player.selectedBotToChange), Position Of(
  • Event Player.selectedBotToChange), Forward);
  • Create Dummy Bot(Hero Of(Event Player), Team 2, Slot Of(Event Player.selectedBot), Position Of(Event Player.selectedBot), Forward);
  • "update orderedBots, replacing the old bot with the new one"
  • Global.orderedBots[Index Of Array Value(Global.orderedBots, Event Player.selectedBotToChange)] = Last Created Entity;
  • Global.orderedBots[Index Of Array Value(Global.orderedBots, Event Player.selectedBot)] = Last Created Entity;
  • End;
  • Wait(0.016, Ignore Condition);
  • "force player back to genji"
  • Start Forcing Player To Be Hero(Event Player, Hero(Genji));
  • Stop Forcing Player To Be Hero(Event Player);
  • "use temp values from other rule to smoothly return to where the player was"
  • Teleport(Event Player, Event Player.temp[0]);
  • Teleport(Event Player, First Of(Event Player.temp));
  • Set Facing(Event Player, Event Player.temp[1], To World);
  • "hero select bugs if spammed"
  • Wait(1, Ignore Condition);
  • Event Player.isChangingBot = False;
  • }
  • }
  • rule("repeatedly nano player while blading")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Ana;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Global.boolSettingsArray[0][0] == True;
  • Global.boolSettingsArray[0][1] == True;
  • First Of(First Of(Global.gameplayBoolSettingsArray)) == True;
  • First Of(Global.gameplayBoolSettingsArray)[1] == True;
  • Global.genjiPlayer.inSettings == False;
  • Is Using Ultimate(Global.genjiPlayer) == True;
  • }
  • actions
  • {
  • "make sure arena isn't resetting"
  • If(Global.boolSettingsArray[7] || !Global.cancelBlade || Number of Living Players(Team 2) > 0);
  • If(Global.gameplayBoolSettingsArray[7] || !First Of(Global.generalBoolSettingsArray) || Number of Living Players(Team 2) > 0);
  • Start Rule(giveNano, Do Nothing);
  • "nano duration + casting time"
  • Wait(8.145, Abort When False);
  • Loop If Condition Is True;
  • End;
  • }
  • }
  • rule("randomize movement")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Global.genjiPlayer.inSettings == False;
  • Global.boolSettingsArray[1] == True;
  • Global.gameplayBoolSettingsArray[1] == True;
  • }
  • actions
  • {
  • "start moving in a random direction"
  • Start Throttle In Direction(Event Player, Vector(Random Real(-1 * 1, 1), 0, Random Real(-1 * 1, 1)), 1, To World,
  • Start Throttle In Direction(Event Player, Vector(Random Real(-1, 1), 0, Random Real(-1, 1)), 1, To World,
  • Replace existing throttle, None);
  • If(!Global.boolSettingsArray[4] && Random Integer(0, 24) == 0);
  • If(!Global.gameplayBoolSettingsArray[4] && Random Integer(0, 24) == 0);
  • "1/24 chance to jump"
  • Press Button(Event Player, Jump);
  • End;
  • "change movement at random intervals"
  • Wait(Random Real(0.064, 0.512), Ignore Condition);
  • Loop If Condition Is True;
  • "stop throttle if conditions are false"
  • Stop Throttle In Direction(Event Player);
  • }
  • }
  • rule("instakill damage modification")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • actions
  • {
  • Start Damage Modification(All Players(Team 2), Event Player, Global.boolSettingsArray[2] ? 10000 : 100,
  • Start Damage Modification(All Players(Team 2), Event Player, Global.gameplayBoolSettingsArray[2] ? 10000 : 100,
  • Receivers Damagers and Damage Percent);
  • }
  • }
  • rule("start transcendence heal")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Global.gameplayBoolSettingsArray[5] == True;
  • }
  • actions
  • {
  • Start Heal Over Time(Event Player, Event Player, 9999, 300);
  • Event Player.transceHoTid = Last Heal Over Time ID;
  • }
  • }
  • rule("stop transcendence heal")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Global.gameplayBoolSettingsArray[5] == False;
  • }
  • actions
  • {
  • Stop Heal Over Time(Event Player.transceHoTid);
  • }
  • }
  • rule("keep bots in spawn radius")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is In Spawn Room(Event Player) == False;
  • Global.genjiPlayer.inSettings == False;
  • Distance Between(Position Of(Event Player), Global.centerPos) > Max(Global.floatSettingsArray[0], 1);
  • Distance Between(Position Of(Event Player), Global.centerPos) > Max(First Of(Global.floatSettingsArray), 1);
  • }
  • actions
  • {
  • "push towards center, ignore vertical component so that floating bots aren't pushed downwards"
  • Apply Impulse(Event Player, Vector Towards(Position Of(Event Player) * Vector(1, 0, 1), Global.centerPos * Vector(1, 0, 1)), 2.500,
  • To World, Cancel Contrary Motion);
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("remove bot momentum if they're moving while floating")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Speed Of(Event Player) >= 0.050;
  • "floating bots is enabled"
  • Global.boolSettingsArray[4] == True;
  • Global.gameplayBoolSettingsArray[4] == True;
  • "bot movement is disabled"
  • Global.boolSettingsArray[1] == False;
  • Distance Between(Position Of(Event Player), Global.centerPos) < Max(Global.floatSettingsArray[0], 1);
  • Global.gameplayBoolSettingsArray[1] == False;
  • Distance Between(Position Of(Event Player), Global.centerPos) < Max(First Of(Global.floatSettingsArray), 1);
  • }
  • actions
  • {
  • Apply Impulse(Event Player, Velocity Of(Event Player) * -1 * 1, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Velocity Of(Event Player) * -1, 0.001, To World, Cancel Contrary Motion);
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("no dash cooldown while in settings or when unlimited dash is enabled")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • (Event Player.inSettings || Global.boolSettingsArray[3]) == True;
  • (Event Player.inSettings || Global.gameplayBoolSettingsArray[3]) == True;
  • Is Using Ability 1(Event Player) == False;
  • }
  • actions
  • {
  • Set Ability Cooldown(Event Player, Button(Ability 1), 0);
  • }
  • }
  • rule("invisible bots")
  • {
  • event
  • {
  • Player Dealt Damage;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • Global.boolSettingsArray[6] == True;
  • Global.gameplayBoolSettingsArray[6] == True;
  • }
  • actions
  • {
  • "set invisible when player deals damage"
  • Set Invisible(All Players(Team 2), Enemies);
  • }
  • }
  • rule("endless mode")
  • {
  • event
  • {
  • Player Died;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Global.boolSettingsArray[7] == True;
  • Global.gameplayBoolSettingsArray[7] == True;
  • }
  • actions
  • {
  • "move from front to back of list"
  • Modify Global Variable(orderedBots, Remove From Array By Value, Event Player);
  • Modify Global Variable(orderedBots, Append To Array, Event Player);
  • If(Global.boolSettingsArray[8][0]);
  • If(First Of(Global.gameplayBoolSettingsArray[8]));
  • "remove the next target's invincibility"
  • Clear Status(Global.orderedBots[0], Invincible);
  • Clear Status(First Of(Global.orderedBots), Invincible);
  • End;
  • Event Player.normalizedDistance = Square Root(Random Real(0, 1));
  • Event Player.angles = Array(Random Real(0, 360), Random Real(0, -1 * 180));
  • Event Player.angles = Array(Random Real(0, 360), Random Real(0, -180));
  • Wait(Global.endlessModeRespawnTime, Ignore Condition);
  • Respawn(Event Player);
  • Wait(0.016, Ignore Condition);
  • "set invincible if not the next target"
  • If(Global.boolSettingsArray[8][0] && Global.orderedBots[0] != Event Player);
  • If(First Of(Global.gameplayBoolSettingsArray[8]) && First Of(Global.orderedBots) != Event Player);
  • Set Status(Event Player, Null, Invincible, 9999);
  • End;
  • Teleport(Event Player, Global.centerPos + Direction From Angles(Event Player.angles[0],
  • Global.boolSettingsArray[4] ? Event Player.angles[1] : 0) * Event Player.normalizedDistance * Global.floatSettingsArray[0]);
  • Teleport(Event Player, Global.centerPos + Direction From Angles(First Of(Event Player.angles),
  • Global.gameplayBoolSettingsArray[4] ? Event Player.angles[1] : 0) * Event Player.normalizedDistance * First Of(
  • Global.floatSettingsArray));
  • }
  • }
  • rule("remove from orderedBots when dying")
  • {
  • event
  • {
  • Player Died;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Global.boolSettingsArray[7] == False;
  • Global.gameplayBoolSettingsArray[7] == False;
  • }
  • actions
  • {
  • Modify Global Variable(orderedBots, Remove From Array By Value, Event Player);
  • If(Global.boolSettingsArray[8][0]);
  • If(First Of(Global.gameplayBoolSettingsArray[8]));
  • "remove next target's invincibility"
  • Clear Status(Global.orderedBots[0], Invincible);
  • End;
  • Clear Status(First Of(Global.orderedBots), Invincible);
  • }
  • }
  • rule("creator debug")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Custom String("{0}", Event Player) == Custom String("Provoxin");
  • }
  • actions
  • {
  • Create HUD Text(Event Player, Custom String("{0} | {1} | {2}", Server Load, Server Load Average, Server Load Peak), Null, Null,
  • Top, -1, White, White, White, Visible To and String, Visible Never);
  • }
  • }
Join the Workshop.codes Discord