Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "Color War Made by EfeDursun125#2815 | Look at your team on top left | Kill the enemy team and don't die! | For more: workshop.codes/colorwar"
  • Mode Name: "COLOR WAR"
  • }
  • lobby
  • {
  • Allow Players Who Are In Queue: Yes
  • Match Voice Chat: Enabled
  • Max Spectators: 12
  • Use Experimental Update If Available: Yes
  • }
  • modes
  • {
  • Deathmatch
  • {
  • Game Length In Minutes: 5
  • Score To Win: 5000
  • disabled maps
  • {
  • Malevento
  • Workshop Chamber
  • Workshop Expanse
  • Workshop Expanse Night
  • Workshop Green Screen
  • Workshop Island
  • Workshop Island Night
  • }
  • }
  • General
  • {
  • Game Mode Start: Immediately
  • Health Pack Respawn Time Scalar: 200%
  • Hero Limit: 1 Per Game
  • Kill Cam: Off
  • Spawn Health Packs: Enabled
  • }
  • }
  • heroes
  • {
  • General
  • {
  • Ashe
  • {
  • Ultimate Ability B.O.B.: Off
  • }
  • Baptiste
  • {
  • Damage Dealt: 75%
  • No Ammunition Requirement: On
  • }
  • Bastion
  • {
  • Self-Repair Maximum Time: 500%
  • }
  • Hanzo
  • {
  • Lunge Cooldown Time: 75%
  • Lunge Distance Scalar: 125%
  • Storm Arrows Cooldown Time: 200%
  • Storm Arrows Quantity: 12
  • }
  • Sombra
  • {
  • Hack Cooldown Time: 75%
  • Stealth: Off
  • Translocator Cooldown Time: 150%
  • }
  • Symmetra
  • {
  • Sentry Turret: Off
  • }
  • Torbjörn
  • {
  • Deploy Turret: Off
  • Overload Cooldown Time: 500%
  • Overload Duration Scalar: 500%
  • }
  • disabled heroes
  • {
  • Mercy
  • Symmetra
  • Torbjörn
  • }
  • }
  • }
  • workshop
  • {
  • AI Bot Count: 1
  • }
  • }
  • variables
  • {
  • global:
  • 0: EnableAIBots
  • 1: Nodes
  • 2: AIBotCount
  • 3: SelfNodes
  • 4: MatchTime
  • 5: EnableImprovedMechanics
  • 6: OffWalls
  • 7: KillFeedArray
  • player:
  • 0: PlayerTeam
  • 1: IsEverythingOk
  • 2: NameText
  • 3: BotMovePosition
  • 4: BotEnemy
  • 5: BotBattleRange
  • 6: BotAimPosition
  • 7: TeamBlueText
  • 8: TeamRedText
  • 9: TeamGreenText
  • 10: TeamYellowText
  • 11: NodeBlacklist
  • 12: TempNode
  • 13: TargetEnemyUnSeen
  • 14: StartHiding
  • 15: NameTextTeam
  • 16: TeamPinkText
  • 17: TeamWhiteText
  • 18: TurnSpeed
  • 19: AFKMode
  • 20: LastKnownEnemyPosition
  • 21: BestHidingNode
  • 22: DamageModification
  • 23: LastHit
  • 24: Comm
  • 26: NearestLucio
  • 27: KillHero
  • }
  • subroutines
  • {
  • 0: ResetAll
  • }
  • rule("Made by EfeDursun125#2815")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Disable Built-In Game Mode Announcer;
  • Disable Built-In Game Mode Completion;
  • Disable Built-In Game Mode Music;
  • Disable Built-In Game Mode Scoring;
  • Disable Inspector Recording;
  • Global.Nodes = Empty Array;
  • Global.EnableAIBots = Workshop Setting Toggle(Custom String("Game"), Custom String("Enable AI Bots"), False, 0);
  • Global.AIBotCount = Workshop Setting Integer(Custom String("Game"), Custom String("AI Bot Count"), 12, 1, 12, 1);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("COLOR WAR"), Top, 0, Color(White), Color(White), Color(Aqua),
  • Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Custom String("Time Left: {0}", Round To Integer(Match Time, Up)), Null, Top, 1,
  • Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
  • Global.MatchTime = Workshop Setting Integer(Custom String("Game"), Custom String("Match Time"), 300, 60, 900, 2);
  • Create HUD Text(All Players(All Teams), Null, Custom String("For more: workshop.codes/colorwar\r\n "), Null, Right, -1, Color(
  • White), Color(White), Color(White), Visible To and String, Default Visibility);
  • Global.EnableImprovedMechanics = Workshop Setting Toggle(Custom String("Game"), Custom String("Enable Improved Mechanics"), True,
  • 0);
  • Global.OffWalls = Workshop Setting Toggle(Custom String("Game"), Custom String("Show Icons Off Wall"), True, 0);
  • Global.KillFeedArray = Empty Array;
  • }
  • }
  • rule("Match Time")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Assembling Heroes == True;
  • }
  • actions
  • {
  • Set Match Time(7);
  • }
  • }
  • rule("Set Player Variables")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsEverythingOk == False;
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Wait(1, Abort When False);
  • Event Player.PlayerTeam = 0;
  • Create HUD Text(Event Player, Null, Null, Custom String("Number of Blue - {0}/{1} {2}", Count Of(Filtered Array(All Players(
  • All Teams), Current Array Element.PlayerTeam == 1)), Count Of(All Players(All Teams)), Event Player.TeamBlueText), Left, 0,
  • Color(White), Color(White), Color(Blue), Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Null, Custom String("Number of Red - {0}/{1} {2}", Count Of(Filtered Array(All Players(
  • All Teams), Current Array Element.PlayerTeam == 2)), Count Of(All Players(All Teams)), Event Player.TeamRedText), Left, 1,
  • Color(White), Color(White), Color(Red), Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Null, Custom String("Number of Green - {0}/{1} {2}", Count Of(Filtered Array(All Players(
  • All Teams), Current Array Element.PlayerTeam == 3)), Count Of(All Players(All Teams)), Event Player.TeamGreenText), Left, 2,
  • Color(White), Color(White), Color(Green), Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Null, Custom String("Number of Yellow - {0}/{1} {2}", Count Of(Filtered Array(All Players(
  • All Teams), Current Array Element.PlayerTeam == 4)), Count Of(All Players(All Teams)), Event Player.TeamYellowText), Left, 3,
  • Color(White), Color(White), Color(Yellow), Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Null, Custom String("Number of Pink - {0}/{1} {2}", Count Of(Filtered Array(All Players(
  • All Teams), Current Array Element.PlayerTeam == 5)), Count Of(All Players(All Teams)), Event Player.TeamPinkText), Left, 4,
  • Color(White), Color(White), Custom Color(255, 105, 180, 255), Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Null, Custom String("Number of White - {0}/{1} {2}", Count Of(Filtered Array(All Players(
  • All Teams), Current Array Element.PlayerTeam == 6)), Count Of(All Players(All Teams)), Event Player.TeamWhiteText), Left, 5,
  • Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.IsEverythingOk = True;
  • Wait(10, Ignore Condition);
  • }
  • }
  • rule("Player Leaves")
  • {
  • event
  • {
  • Player Left Match;
  • All;
  • All;
  • }
  • actions
  • {
  • Destroy In-World Text(Event Player.NameText);
  • Destroy In-World Text(Event Player.NameTextTeam);
  • Stop Forcing Player Outlines(Event Player, All Players(All Teams));
  • Remove All Health Pools From Player(Event Player);
  • Destroy Icon(Event Player.Comm);
  • }
  • }
  • rule("Health Regen")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Stop All Heal Over Time(Event Player);
  • Wait(5, Abort When False);
  • Start Heal Over Time(Event Player, Event Player, 9999, 10);
  • }
  • }
  • rule("Anti-Friendly Fire")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • disabled Event Player.NearestLucio = First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Has Spawned(Current Array Element) && Is In Line of Sight(Eye Position(Event Player), Eye Position(Current Array Element),
  • Barriers Do Not Block LOS) == True && Event Player != Current Array Element && Distance Between(Eye Position(Event Player),
  • Eye Position(Current Array Element)) <= 12 && Event Player.PlayerTeam == Current Array Element.PlayerTeam), Distance Between(
  • Event Player, Current Array Element)));
  • Stop Damage Modification(Event Player.DamageModification);
  • If(Hero Of(Event Player) == Hero(Ana));
  • Start Damage Modification(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == Event Player.PlayerTeam),
  • Event Player, 0.500, Receivers and Damagers);
  • Else If(Hero Of(Event Player) == Hero(Sigma));
  • Start Damage Modification(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == Event Player.PlayerTeam),
  • Event Player, 0.500, Receivers and Damagers);
  • Else If(Hero Of(Event Player) == Hero(Zarya));
  • Start Damage Modification(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == Event Player.PlayerTeam),
  • Event Player, 0.500, Receivers and Damagers);
  • Else If(Hero Of(Event Player) == Hero(Mei) && Is Using Ultimate(Event Player));
  • Start Damage Modification(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == Event Player.PlayerTeam),
  • Event Player, 0.500, Receivers and Damagers);
  • Else If(Hero Of(Event Player) == Hero(Cassidy));
  • Start Damage Modification(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == Event Player.PlayerTeam),
  • Event Player, 0.500, Receivers and Damagers);
  • Else If(Hero Of(Event Player) == Hero(Roadhog));
  • Start Damage Modification(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == Event Player.PlayerTeam),
  • Event Player, 0.500, Receivers and Damagers);
  • Else;
  • Start Damage Modification(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == Event Player.PlayerTeam),
  • Event Player, 0, Receivers and Damagers);
  • End;
  • Event Player.DamageModification = Last Damage Modification ID;
  • If(Event Player.PlayerTeam == 1);
  • Event Player.TeamBlueText = Custom String("(YOU)");
  • Else;
  • Event Player.TeamBlueText = Custom String(" ");
  • End;
  • If(Event Player.PlayerTeam == 2);
  • Event Player.TeamRedText = Custom String("(YOU)");
  • Else;
  • Event Player.TeamRedText = Custom String(" ");
  • End;
  • If(Event Player.PlayerTeam == 3);
  • Event Player.TeamGreenText = Custom String("(YOU)");
  • Else;
  • Event Player.TeamGreenText = Custom String(" ");
  • End;
  • If(Event Player.PlayerTeam == 4);
  • Event Player.TeamYellowText = Custom String("(YOU)");
  • Else;
  • Event Player.TeamYellowText = Custom String(" ");
  • End;
  • If(Event Player.PlayerTeam == 5);
  • Event Player.TeamPinkText = Custom String("(YOU)");
  • Else;
  • Event Player.TeamPinkText = Custom String(" ");
  • End;
  • If(Event Player.PlayerTeam == 6);
  • Event Player.TeamWhiteText = Custom String("(YOU)");
  • Else;
  • Event Player.TeamWhiteText = Custom String(" ");
  • End;
  • }
  • }
  • rule("Reset Player Team")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Event Player.PlayerTeam == 0;
  • }
  • actions
  • {
  • Stop Forcing Player Outlines(Event Player, All Players(All Teams));
  • Destroy In-World Text(Event Player.NameText);
  • Destroy In-World Text(Event Player.NameTextTeam);
  • Disable Nameplates(Event Player, All Players(All Teams));
  • Disable Scoreboard(Event Player);
  • Disable Game Mode HUD(Event Player);
  • Disable Movement Collision With Players(Event Player);
  • Enable Death Spectate Target HUD(Event Player);
  • Enable Death Spectate All Players(Event Player);
  • }
  • }
  • rule("Blue Team")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Event Player.PlayerTeam == 1;
  • }
  • actions
  • {
  • Destroy In-World Text(Event Player.NameText);
  • Destroy In-World Text(Event Player.NameTextTeam);
  • Wait(0.016, Ignore Condition);
  • Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam != 1), Custom String("{0}",
  • Event Player), Event Player, 0.800, Clip Against Surfaces, Visible To Position and String, Color(Blue), Visible Always);
  • Event Player.NameText = Last Text ID;
  • Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 1), Custom String("{0}",
  • Event Player), Event Player, 0.800, Do Not Clip, Visible To Position and String, Color(Blue), Visible Always);
  • Event Player.NameTextTeam = Last Text ID;
  • Wait(1, Abort When False);
  • Big Message(Event Player, Custom String("BLUE TEAM!"));
  • Small Message(Event Player, Custom String("Your Team Is Blue!"));
  • }
  • }
  • rule("Blue Team Outlines")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Event Player.PlayerTeam == 1;
  • }
  • actions
  • {
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams),
  • Event Player.PlayerTeam == Current Array Element.PlayerTeam), True, Color(Blue), Always);
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams),
  • Event Player.PlayerTeam != Current Array Element.PlayerTeam), True, Color(Blue), Default);
  • Wait(1, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Red Team")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Event Player.PlayerTeam == 2;
  • }
  • actions
  • {
  • Destroy In-World Text(Event Player.NameText);
  • Destroy In-World Text(Event Player.NameTextTeam);
  • Wait(0.016, Ignore Condition);
  • Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam != 2), Custom String("{0}",
  • Event Player), Event Player, 0.800, Clip Against Surfaces, Visible To Position and String, Color(Red), Visible Always);
  • Event Player.NameText = Last Text ID;
  • Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 2), Custom String("{0}",
  • Event Player), Event Player, 0.800, Do Not Clip, Visible To Position and String, Color(Red), Visible Always);
  • Event Player.NameTextTeam = Last Text ID;
  • Wait(1, Abort When False);
  • Big Message(Event Player, Custom String("RED TEAM!"));
  • Small Message(Event Player, Custom String("Your Team Is Red!"));
  • }
  • }
  • rule("Red Team Outlines")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Event Player.PlayerTeam == 2;
  • }
  • actions
  • {
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams),
  • Event Player.PlayerTeam == Current Array Element.PlayerTeam), True, Color(Red), Always);
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams),
  • Event Player.PlayerTeam != Current Array Element.PlayerTeam), True, Color(Red), Default);
  • Wait(1, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Green Team")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Event Player.PlayerTeam == 3;
  • }
  • actions
  • {
  • Destroy In-World Text(Event Player.NameText);
  • Destroy In-World Text(Event Player.NameTextTeam);
  • Wait(0.016, Ignore Condition);
  • Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam != 3), Custom String("{0}",
  • Event Player), Event Player, 0.800, Clip Against Surfaces, Visible To Position and String, Color(Green), Visible Always);
  • Event Player.NameText = Last Text ID;
  • Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 3), Custom String("{0}",
  • Event Player), Event Player, 0.800, Do Not Clip, Visible To Position and String, Color(Green), Visible Always);
  • Event Player.NameTextTeam = Last Text ID;
  • Wait(1, Abort When False);
  • Big Message(Event Player, Custom String("GREEN TEAM!"));
  • Small Message(Event Player, Custom String("Your Team Is Green!"));
  • }
  • }
  • rule("Green Team Outlines")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Event Player.PlayerTeam == 3;
  • }
  • actions
  • {
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams),
  • Event Player.PlayerTeam == Current Array Element.PlayerTeam), True, Color(Green), Always);
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams),
  • Event Player.PlayerTeam != Current Array Element.PlayerTeam), True, Color(Green), Default);
  • Wait(1, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Yellow Team")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Event Player.PlayerTeam == 4;
  • }
  • actions
  • {
  • Destroy In-World Text(Event Player.NameText);
  • Destroy In-World Text(Event Player.NameTextTeam);
  • Wait(0.016, Ignore Condition);
  • Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam != 4), Custom String("{0}",
  • Event Player), Event Player, 0.800, Clip Against Surfaces, Visible To Position and String, Color(Yellow), Visible Always);
  • Event Player.NameText = Last Text ID;
  • Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 4), Custom String("{0}",
  • Event Player), Event Player, 0.800, Do Not Clip, Visible To Position and String, Color(Yellow), Visible Always);
  • Event Player.NameTextTeam = Last Text ID;
  • Wait(1, Abort When False);
  • Big Message(Event Player, Custom String("YELLOW TEAM!"));
  • Small Message(Event Player, Custom String("Your Team Is Yellow!"));
  • }
  • }
  • rule("Yellow Team Outlines")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Event Player.PlayerTeam == 4;
  • }
  • actions
  • {
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams),
  • Event Player.PlayerTeam == Current Array Element.PlayerTeam), True, Color(Yellow), Always);
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams),
  • Event Player.PlayerTeam != Current Array Element.PlayerTeam), True, Color(Yellow), Default);
  • Wait(1, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Pink Team")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Event Player.PlayerTeam == 5;
  • }
  • actions
  • {
  • Destroy In-World Text(Event Player.NameText);
  • Destroy In-World Text(Event Player.NameTextTeam);
  • Wait(0.016, Ignore Condition);
  • Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam != 5), Custom String("{0}",
  • Event Player), Event Player, 0.800, Clip Against Surfaces, Visible To Position and String, Custom Color(255, 105, 180, 255),
  • Visible Always);
  • Event Player.NameText = Last Text ID;
  • Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 5), Custom String("{0}",
  • Event Player), Event Player, 0.800, Do Not Clip, Visible To Position and String, Custom Color(255, 105, 180, 255),
  • Visible Always);
  • Event Player.NameTextTeam = Last Text ID;
  • Wait(1, Abort When False);
  • Big Message(Event Player, Custom String("PINK TEAM!"));
  • Small Message(Event Player, Custom String("Your Team Is Pink!"));
  • }
  • }
  • rule("Pink Team Outlines")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Event Player.PlayerTeam == 5;
  • }
  • actions
  • {
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams),
  • Event Player.PlayerTeam == Current Array Element.PlayerTeam), True, Custom Color(255, 105, 180, 255), Always);
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams),
  • Event Player.PlayerTeam != Current Array Element.PlayerTeam), True, Custom Color(255, 105, 180, 255), Default);
  • Wait(1, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("White Team")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Event Player.PlayerTeam == 6;
  • }
  • actions
  • {
  • Destroy In-World Text(Event Player.NameText);
  • Destroy In-World Text(Event Player.NameTextTeam);
  • Wait(0.016, Ignore Condition);
  • Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam != 6), Custom String("{0}",
  • Event Player), Event Player, 0.800, Clip Against Surfaces, Visible To Position and String, Color(White), Visible Always);
  • Event Player.NameText = Last Text ID;
  • Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 6), Custom String("{0}",
  • Event Player), Event Player, 0.800, Do Not Clip, Visible To Position and String, Color(White), Visible Always);
  • Event Player.NameTextTeam = Last Text ID;
  • Wait(1, Abort When False);
  • Big Message(Event Player, Custom String("WHITE TEAM!"));
  • Small Message(Event Player, Custom String("Your Team Is White!"));
  • }
  • }
  • rule("White Team Outlines")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Event Player.PlayerTeam == 6;
  • }
  • actions
  • {
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams),
  • Event Player.PlayerTeam == Current Array Element.PlayerTeam), True, Color(White), Always);
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams),
  • Event Player.PlayerTeam != Current Array Element.PlayerTeam), True, Color(White), Default);
  • Wait(1, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Destroy Outlines")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • actions
  • {
  • Stop Forcing Player Outlines(Event Player, All Players(All Teams));
  • }
  • }
  • rule("Set Random Teams")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Count Of(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 0)) >= 1;
  • }
  • actions
  • {
  • Skip If(Count Of(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 1)) >= Round To Integer(Count Of(
  • All Players(All Teams)) / 6, To Nearest), 2);
  • Random Value In Array(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 0)).PlayerTeam = 1;
  • Wait(0.016, Ignore Condition);
  • Skip If(Count Of(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 2)) >= Round To Integer(Count Of(
  • All Players(All Teams)) / 6, To Nearest), 2);
  • Random Value In Array(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 0)).PlayerTeam = 2;
  • Wait(0.016, Ignore Condition);
  • Skip If(Count Of(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 3)) >= Round To Integer(Count Of(
  • All Players(All Teams)) / 6, To Nearest), 2);
  • Random Value In Array(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 0)).PlayerTeam = 3;
  • Wait(0.016, Ignore Condition);
  • Skip If(Count Of(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 4)) >= Round To Integer(Count Of(
  • All Players(All Teams)) / 6, To Nearest), 2);
  • Random Value In Array(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 0)).PlayerTeam = 4;
  • Wait(0.016, Ignore Condition);
  • Skip If(Count Of(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 5)) >= Round To Integer(Count Of(
  • All Players(All Teams)) / 6, To Nearest), 2);
  • Random Value In Array(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 0)).PlayerTeam = 5;
  • Wait(0.016, Ignore Condition);
  • Skip If(Count Of(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 6)) >= Round To Integer(Count Of(
  • All Players(All Teams)) / 6, To Nearest), 2);
  • Random Value In Array(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 0)).PlayerTeam = 6;
  • Wait(0.250, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • disabled rule("Set Force Team")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Count Of(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 0)) >= 1;
  • }
  • actions
  • {
  • Random Value In Array(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 0)).PlayerTeam = 1;
  • }
  • }
  • rule("Change Team On Kill")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • All;
  • All;
  • }
  • conditions
  • {
  • Victim != Null;
  • Victim != Event Player;
  • Event Player.PlayerTeam != Victim.PlayerTeam;
  • }
  • actions
  • {
  • Victim.PlayerTeam = Event Player.PlayerTeam;
  • disabled Heal(Event Player, Null, Max Health(Event Player) / 4);
  • Destroy In-World Text(Victim.NameText);
  • Destroy In-World Text(Victim.NameTextTeam);
  • Remove All Health Pools From Player(Victim);
  • }
  • }
  • rule("Draw")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Match Time <= 0;
  • }
  • actions
  • {
  • Big Message(All Players(All Teams), Custom String("DRAW!"));
  • Wait(2, Ignore Condition);
  • Call Subroutine(ResetAll);
  • }
  • }
  • rule("Blue Wins")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Count Of(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 1)) >= Count Of(All Players(All Teams));
  • Count Of(All Players(All Teams)) >= 2;
  • }
  • actions
  • {
  • Big Message(All Players(All Teams), Custom String("BLUE WINS!"));
  • Wait(2, Ignore Condition);
  • Call Subroutine(ResetAll);
  • }
  • }
  • rule("Red Wins")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Count Of(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 2)) >= Count Of(All Players(All Teams));
  • Count Of(All Players(All Teams)) >= 2;
  • }
  • actions
  • {
  • Big Message(All Players(All Teams), Custom String("RED WINS!"));
  • Wait(2, Ignore Condition);
  • Call Subroutine(ResetAll);
  • }
  • }
  • rule("Green Wins")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Count Of(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 3)) >= Count Of(All Players(All Teams));
  • Count Of(All Players(All Teams)) >= 2;
  • }
  • actions
  • {
  • Big Message(All Players(All Teams), Custom String("GREEN WINS!"));
  • Wait(2, Ignore Condition);
  • Call Subroutine(ResetAll);
  • }
  • }
  • rule("Yellow Wins")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Count Of(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 4)) >= Count Of(All Players(All Teams));
  • Count Of(All Players(All Teams)) >= 2;
  • }
  • actions
  • {
  • Big Message(All Players(All Teams), Custom String("YELLOW WINS!"));
  • Wait(2, Ignore Condition);
  • Call Subroutine(ResetAll);
  • }
  • }
  • rule("Pink Wins")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Count Of(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 5)) >= Count Of(All Players(All Teams));
  • Count Of(All Players(All Teams)) >= 2;
  • }
  • actions
  • {
  • Big Message(All Players(All Teams), Custom String("PINK WINS!"));
  • Wait(2, Ignore Condition);
  • Call Subroutine(ResetAll);
  • }
  • }
  • rule("White Wins")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Count Of(Filtered Array(All Players(All Teams), Current Array Element.PlayerTeam == 6)) >= Count Of(All Players(All Teams));
  • Count Of(All Players(All Teams)) >= 2;
  • }
  • actions
  • {
  • Big Message(All Players(All Teams), Custom String("WHITE WINS!"));
  • Wait(2, Ignore Condition);
  • Call Subroutine(ResetAll);
  • }
  • }
  • rule("Anti Knockback")
  • {
  • event
  • {
  • Player Received Knockback;
  • All;
  • All;
  • }
  • conditions
  • {
  • "for use ability 2"
  • Hero Of(Event Player) != Hero(Pharah);
  • Event Player.PlayerTeam == Attacker.PlayerTeam;
  • }
  • actions
  • {
  • Set Knockback Received(Event Player, 0);
  • }
  • }
  • rule("Enable Knockback")
  • {
  • event
  • {
  • Player Received Knockback;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.PlayerTeam != Attacker.PlayerTeam;
  • }
  • actions
  • {
  • Set Knockback Received(Event Player, 100);
  • }
  • }
  • rule("Reset All")
  • {
  • event
  • {
  • Subroutine;
  • ResetAll;
  • }
  • actions
  • {
  • Remove All Health Pools From Player(All Players(All Teams));
  • Stop Forcing Player Outlines(All Players(All Teams), All Players(All Teams));
  • Destroy In-World Text(All Players(All Teams).NameText);
  • Destroy In-World Text(All Players(All Teams).NameTextTeam);
  • Wait(0.016, Ignore Condition);
  • Respawn(All Players(All Teams));
  • Wait(0.016, Ignore Condition);
  • All Players(All Teams).PlayerTeam = 0;
  • Set Ultimate Charge(All Players(All Teams), 0);
  • Set Ability Cooldown(All Players(All Teams), Button(Ability 1), 0);
  • Set Ability Cooldown(All Players(All Teams), Button(Ability 2), 0);
  • Set Ability Cooldown(All Players(All Teams), Button(Jump), 0);
  • Set Ability Cooldown(All Players(All Teams), Button(Secondary Fire), 0);
  • Set Ability Cooldown(All Players(All Teams), Button(Crouch), 0);
  • Set Match Time(Global.MatchTime);
  • Set Move Speed(All Players(All Teams), 100);
  • }
  • }
  • rule("Add Bots")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Count Of(Filtered Array(All Players(All Teams), Is Dummy Bot(Current Array Element))) < Global.AIBotCount;
  • Count Of(All Players(All Teams)) < 12;
  • Global.EnableAIBots == True;
  • }
  • actions
  • {
  • Create Dummy Bot(Random Value In Array(Allowed Heroes(Host Player)), All Teams, -1, Nearest Walkable Position(Vector(0, 0, 0))
  • + Vector(0, 9999, 0), Vector(0, 0, 0));
  • Wait(0.250, Abort When False);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot Random Hero")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Wait(1, Ignore Condition);
  • Stop Forcing Player To Be Hero(Event Player);
  • Wait(0.016, Ignore Condition);
  • Respawn(Event Player);
  • Wait(0.250, Ignore Condition);
  • Start Forcing Player To Be Hero(Event Player, Random Value In Array(Allowed Heroes(Event Player)));
  • Event Player.NodeBlacklist = Empty Array;
  • }
  • }
  • rule("Bot Logic")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • }
  • actions
  • {
  • Event Player.BotBattleRange = Random Integer(7, 16);
  • Start Facing(Event Player, Direction Towards(Eye Position(Event Player), Event Player.BotAimPosition), Event Player.TurnSpeed,
  • To World, Direction and Turn Rate);
  • Start Throttle In Direction(Event Player, Direction Towards(Position Of(Event Player), Event Player.BotMovePosition), 1, To World,
  • Replace existing throttle, Direction and Magnitude);
  • Event Player.BotMovePosition = Position Of(Event Player);
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • Skip If(Is Dummy Bot(Event Player) == True, 2);
  • Wait(3, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot Melee")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Is Meleeing(Event Player) == False;
  • Is Reloading(Event Player) == False;
  • Distance Between(Eye Position(Event Player), Eye Position(Event Player.BotEnemy)) <= 1.300;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Melee));
  • }
  • }
  • rule("Bot Auto Jump")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Moving(Event Player) == True;
  • Speed Of(Event Player) <= 4;
  • Is Button Held(Event Player, Button(Jump)) == False;
  • Is On Ground(Event Player) == True;
  • Event Player.BotEnemy == Null;
  • Is On Wall(Event Player) == False;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Button(Jump));
  • Press Button(Event Player, Button(Jump));
  • }
  • }
  • rule("Bot Reload")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Ammo(Event Player, 0) <= 0;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Reload));
  • }
  • }
  • rule("Bot Disable Aim")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • (Has Status(Event Player, Knocked Down) || Has Status(Event Player, Asleep) || Has Status(Event Player, Frozen) || Has Status(
  • Event Player, Stunned)) == True;
  • }
  • actions
  • {
  • Stop Facing(Event Player);
  • Stop Throttle In Direction(Event Player);
  • }
  • }
  • rule("Bot Set Enemy")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.BotEnemy = First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Event Player != Current Array Element && Is In Line of Sight(Eye Position(Event Player), Eye Position(Current Array Element),
  • Barriers Do Not Block LOS) == True && Current Array Element.PlayerTeam != Event Player.PlayerTeam && Has Spawned(
  • Current Array Element)), (Angle Between Vectors(Facing Direction Of(Current Array Element), Direction Towards(Eye Position(
  • Current Array Element), Eye Position(Event Player))) + Health(Current Array Element)) * Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element))));
  • Wait(1, Abort When False);
  • Loop;
  • }
  • }
  • rule("Bot Set Target Enemy")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy == Null;
  • }
  • actions
  • {
  • Event Player.TargetEnemyUnSeen = First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Event Player != Current Array Element && Is In Line of Sight(Eye Position(Event Player), Eye Position(Current Array Element),
  • Barriers Do Not Block LOS) == False && Current Array Element.PlayerTeam != Event Player.PlayerTeam && Has Spawned(
  • Current Array Element)), Distance Between(Event Player, Current Array Element)));
  • Wait(3, Abort When False);
  • Loop;
  • }
  • }
  • rule("Bot Hanzo Attack")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Hanzo;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Button(Primary Fire));
  • Wait(Random Real(1, 1.500), Ignore Condition);
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • Wait(0.250, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot Fire Start")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Hero Of(Event Player) != Hero(Hanzo);
  • Hero Of(Event Player) != Hero(Moira);
  • Hero Of(Event Player) != Hero(Ashe);
  • Hero Of(Event Player) != Hero(Reaper);
  • Hero Of(Event Player) != Hero(Baptiste);
  • Hero Of(Event Player) != Hero(Doomfist);
  • }
  • actions
  • {
  • Skip If(Is Firing Primary(Event Player) == True, 3);
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • Event Player.BotMovePosition = Position Of(Event Player);
  • Start Holding Button(Event Player, Button(Primary Fire));
  • Wait(1, Abort When False);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot Fire Stop")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy == Null;
  • Is Button Held(Event Player, Button(Primary Fire)) == True;
  • Hero Of(Event Player) != Hero(Doomfist);
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • }
  • }
  • rule("Bot Moira Fire Start")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Moira;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Is Button Held(Event Player, Button(Secondary Fire)) == False;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • Start Holding Button(Event Player, Button(Secondary Fire));
  • Event Player.BotMovePosition = Position Of(Event Player);
  • }
  • }
  • rule("Bot Moira Fire Stop")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Moira;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy == Null;
  • Is Button Held(Event Player, Button(Secondary Fire)) == True;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • }
  • }
  • rule("Bot Aim Position")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • If(Event Player.BotEnemy != Null);
  • Event Player.LastKnownEnemyPosition = Eye Position(Event Player.BotEnemy);
  • If(Hero Of(Event Player) == Hero(Pharah));
  • Event Player.BotAimPosition = Position Of(Event Player.BotEnemy);
  • Else If(Hero Of(Event Player) == Hero(Bastion) && Is Using Ultimate(Event Player));
  • Event Player.BotAimPosition = Position Of(Event Player.BotEnemy);
  • Else If(!Has Status(Event Player.BotEnemy, Knocked Down) && !Has Status(Event Player.BotEnemy, Asleep));
  • Event Player.BotAimPosition = Eye Position(Event Player.BotEnemy);
  • Else;
  • Event Player.BotAimPosition = Position Of(Event Player.BotEnemy);
  • End;
  • Wait(0.032, Abort When False);
  • Loop;
  • Else;
  • Skip If(Hero Of(Event Player) == Hero(Bastion) && Is In Alternate Form(Event Player), 1);
  • Event Player.BotAimPosition = Vector(X Component Of(Position Of(Event Player.BotMovePosition)), Y Component Of(Eye Position(
  • Event Player)), Z Component Of(Position Of(Event Player.BotMovePosition)));
  • End;
  • Wait(0.200, Abort When False);
  • Loop;
  • }
  • }
  • rule("Bot Aim Smoother")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.TurnSpeed = Angle Between Vectors(Facing Direction Of(Event Player), Direction Towards(Eye Position(Event Player),
  • Position Of(Event Player.BotAimPosition))) * 6 + Random Real(6, 16);
  • Wait(0.150, Abort When False);
  • Loop;
  • }
  • }
  • rule("Bot Start Hiding")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Normalized Health(Event Player) < 0.600;
  • Event Player.StartHiding == False;
  • Global.SelfNodes == False;
  • }
  • actions
  • {
  • Clear Status(Event Player, Rooted);
  • Event Player.StartHiding = True;
  • }
  • }
  • rule("Bot Stop Hiding")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy == Null;
  • Event Player.StartHiding == True;
  • }
  • actions
  • {
  • Wait(Random Real(1, 3), Abort When False);
  • Event Player.StartHiding = False;
  • Set Status(Event Player, Null, Rooted, Random Real(2, 4));
  • }
  • }
  • rule("Bot Battle Move")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Distance Between(Position Of(Event Player), Event Player.BotMovePosition) <= 2;
  • Event Player.BotEnemy != Null;
  • Event Player.StartHiding == False;
  • Global.SelfNodes == False;
  • }
  • actions
  • {
  • Event Player.BotMovePosition = Nearest Walkable Position(Ray Cast Hit Position(Eye Position(Event Player), Eye Position(
  • Event Player.BotEnemy) + Facing Direction Of(Event Player.BotEnemy) * Round To Integer(Distance Between(Event Player,
  • Event Player.BotEnemy) / 2, To Nearest) + Vector(Random Real(Event Player.BotBattleRange - Event Player.BotBattleRange * 2,
  • Event Player.BotBattleRange), 0, Random Real(Event Player.BotBattleRange - Event Player.BotBattleRange * 2,
  • Event Player.BotBattleRange)), Null, Event Player, False));
  • Wait(Random Real(0.500, 1), Abort When False);
  • Loop;
  • }
  • }
  • rule("Bot Battle Move Self")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Distance Between(Position Of(Event Player), Event Player.BotMovePosition) <= 2;
  • Event Player.BotEnemy != Null;
  • Global.SelfNodes == True;
  • }
  • actions
  • {
  • Event Player.BotMovePosition = Nearest Walkable Position(Ray Cast Hit Position(Eye Position(Event Player), Eye Position(
  • Event Player.BotEnemy) + Facing Direction Of(Event Player.BotEnemy) * Round To Integer(Distance Between(Event Player,
  • Event Player.BotEnemy) / 2, To Nearest) + Vector(Random Real(Event Player.BotBattleRange - Event Player.BotBattleRange * 2,
  • Event Player.BotBattleRange), 0, Random Real(Event Player.BotBattleRange - Event Player.BotBattleRange * 2,
  • Event Player.BotBattleRange)), Null, Event Player, False));
  • Skip If(Count Of(Filtered Array(Global.Nodes, Is In Line of Sight(Eye Position(Event Player), Current Array Element,
  • Barriers Do Not Block LOS) == True)) >= 5, 3);
  • Skip If(Count Of(Filtered Array(Global.Nodes, Is In Line of Sight(Eye Position(Event Player.BotEnemy), Current Array Element,
  • Barriers Do Not Block LOS) == True)) >= 5, 2);
  • Skip If(Is In Line of Sight(Eye Position(Event Player.BotEnemy), Position Of(Event Player.BotMovePosition),
  • Barriers Do Not Block LOS) == False, 1);
  • Modify Global Variable(Nodes, Append To Array, Nearest Walkable Position(Event Player.BotMovePosition));
  • Wait(Random Real(0.500, 1), Abort When False);
  • Loop;
  • }
  • }
  • rule("Bot Pathfinding")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy == Null;
  • Event Player.StartHiding == False;
  • Global.SelfNodes == False;
  • }
  • actions
  • {
  • Event Player.TempNode = First Of(Sorted Array(Filtered Array(Global.Nodes, Is In Line of Sight(Eye Position(Event Player),
  • Position Of(Current Array Element), Barriers Do Not Block LOS) == True && Array Contains(Event Player.NodeBlacklist,
  • Current Array Element) == False && Has Spawned(Event Player)), Distance Between(Current Array Element, Position Of(
  • Event Player.TargetEnemyUnSeen))));
  • Event Player.BotMovePosition = Nearest Walkable Position(Event Player.TempNode);
  • Wait(1, Abort When False);
  • Loop;
  • }
  • }
  • rule("Bot Pathfinding 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.StartHiding == True;
  • }
  • actions
  • {
  • If(Event Player.BotEnemy != Null);
  • Event Player.BestHidingNode = First Of(Sorted Array(Filtered Array(Global.Nodes, Is In Line of Sight(Eye Position(Event Player),
  • Position Of(Current Array Element), Barriers Do Not Block LOS) == False && Array Contains(Event Player.NodeBlacklist,
  • Current Array Element) == False && Is In Line of Sight(Eye Position(Event Player.BotEnemy), Position Of(Current Array Element),
  • Barriers Do Not Block LOS) == False), Distance Between(Current Array Element, Event Player)));
  • Else;
  • Event Player.BestHidingNode = First Of(Sorted Array(Filtered Array(Global.Nodes, Is In Line of Sight(Eye Position(Event Player),
  • Position Of(Current Array Element), Barriers Do Not Block LOS) == False && Array Contains(Event Player.NodeBlacklist,
  • Current Array Element) == False && Is In Line of Sight(Position Of(Event Player.LastKnownEnemyPosition), Position Of(
  • Current Array Element), Barriers Do Not Block LOS) == False), Distance Between(Current Array Element, Event Player)));
  • End;
  • Event Player.TempNode = First Of(Sorted Array(Filtered Array(Global.Nodes, Is In Line of Sight(Eye Position(Event Player),
  • Position Of(Current Array Element), Barriers Do Not Block LOS) == True && Array Contains(Event Player.NodeBlacklist,
  • Current Array Element) == False && Has Spawned(Event Player)), Distance Between(Current Array Element, Position Of(
  • Event Player.BestHidingNode))));
  • Event Player.BotMovePosition = Nearest Walkable Position(Event Player.TempNode);
  • Wait(1, Abort When False);
  • Loop;
  • }
  • }
  • rule("Bot Pathfinding Self")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy == Null;
  • disabled Event Player.TempNode == Null;
  • Global.SelfNodes == True;
  • }
  • actions
  • {
  • Event Player.TempNode = First Of(Sorted Array(Filtered Array(Global.Nodes, Is In Line of Sight(Eye Position(Event Player),
  • Position Of(Current Array Element), Barriers Do Not Block LOS) == True && Array Contains(Event Player.NodeBlacklist,
  • Current Array Element) == False && Has Spawned(Event Player)), Distance Between(Current Array Element, Position Of(
  • Event Player.TargetEnemyUnSeen))));
  • Skip If(Event Player.TempNode == Null, 1);
  • Event Player.BotMovePosition = Nearest Walkable Position(Event Player.TempNode);
  • Wait(1, Abort When False);
  • Loop;
  • }
  • }
  • disabled rule("Bot Pathfinding Self Reset")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy == Null;
  • Event Player.TempNode != Null;
  • Global.SelfNodes == True;
  • Distance Between(Position Of(Event Player), Position Of(Event Player.TempNode)) <= 2;
  • }
  • actions
  • {
  • Event Player.TempNode = Null;
  • Wait(1, Abort When False);
  • Loop;
  • }
  • }
  • rule("Bot Node Blacklist")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy == Null;
  • Distance Between(Position Of(Event Player), Event Player.TempNode) <= 1;
  • }
  • actions
  • {
  • Modify Player Variable(Event Player, NodeBlacklist, Append To Array, Event Player.TempNode);
  • Wait(1, Abort When False);
  • Loop;
  • }
  • }
  • rule("Bot Node Blacklist 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.TempNode == Null;
  • }
  • actions
  • {
  • Event Player.NodeBlacklist = Empty Array;
  • }
  • }
  • rule("Bot Node Blacklist 3")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • Modify Player Variable(Event Player, NodeBlacklist, Remove From Array By Index, 0);
  • Wait(10, Abort When False);
  • Loop;
  • }
  • }
  • rule("Bot Ability1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Ability Cooldown(Event Player, Button(Ability 1)) <= 0;
  • Is Using Ability 1(Event Player) == False;
  • Is Using Ability 2(Event Player) == False;
  • Is Using Ultimate(Event Player) == False;
  • Hero Of(Event Player) != Hero(Bastion);
  • Hero Of(Event Player) != Hero(Wrecking Ball);
  • Hero Of(Event Player) != Hero(Lúcio);
  • Hero Of(Event Player) != Hero(Soldier: 76);
  • Hero Of(Event Player) != Hero(Cassidy);
  • Hero Of(Event Player) != Hero(Ashe);
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Ability 1));
  • Wait(2, Abort When False);
  • Loop;
  • }
  • }
  • rule("Bot Ability2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Ability Cooldown(Event Player, Button(Ability 2)) <= 0;
  • Is Using Ability 1(Event Player) == False;
  • Is Using Ability 2(Event Player) == False;
  • Is Using Ultimate(Event Player) == False;
  • Hero Of(Event Player) != Hero(Bastion);
  • Hero Of(Event Player) != Hero(Lúcio);
  • Hero Of(Event Player) != Hero(Cassidy);
  • (Hero Of(Event Player) != Hero(Doomfist) || Is On Ground(Event Player)) == True;
  • (Hero Of(Event Player) != Hero(Reaper) || Distance Between(Eye Position(Event Player), Eye Position(Event Player.BotEnemy)) >= 15)
  • == True;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Ability 2));
  • Wait(2, Abort When False);
  • Loop;
  • }
  • }
  • rule("Bot Ultimate")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Ultimate Charge Percent(Event Player) >= 100;
  • Is Using Ability 1(Event Player) == False;
  • Is Using Ability 2(Event Player) == False;
  • Is Using Ultimate(Event Player) == False;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Ultimate));
  • }
  • }
  • rule("Bot Ultimate Fire")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Using Ultimate(Event Player) == True;
  • }
  • actions
  • {
  • Wait(1, Ignore Condition);
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • Wait(0.250, Ignore Condition);
  • Start Holding Button(Event Player, Button(Primary Fire));
  • }
  • }
  • rule("Bot Respawn")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Y Component Of(Position Of(Event Player)) > Y Component Of(Nearest Walkable Position(Position Of(Event Player))) + 200;
  • }
  • actions
  • {
  • Skip If(Hero Of(Event Player) != Hero(D.Va) || Max Health(Event Player) < 200, 1);
  • Kill(Event Player, Null);
  • Respawn(Event Player);
  • Wait(0.250, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot Mei Ice Wall")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mei;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Is Using Ability 2(Event Player) == True;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • Wait(0.250, Ignore Condition);
  • Press Button(Event Player, Button(Primary Fire));
  • }
  • }
  • rule("Bot Doomfist Punch")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Doomfist;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Ability Cooldown(Event Player, Button(Secondary Fire)) <= 0;
  • Distance Between(Eye Position(Event Player), Eye Position(Event Player.BotEnemy)) <= 8;
  • }
  • actions
  • {
  • Disallow Button(Event Player, Button(Primary Fire));
  • Wait(0.250, Ignore Condition);
  • Start Holding Button(Event Player, Button(Secondary Fire));
  • Wait(Random Real(1, 2), Ignore Condition);
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • Wait(0.500, Ignore Condition);
  • Allow Button(Event Player, Button(Primary Fire));
  • }
  • }
  • rule("Bot D.Va Matrix Shield")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • D.Va;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Is Firing Primary(Event Player.BotEnemy) == True;
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Button(Secondary Fire));
  • Wait(Random Real(1, 2), Ignore Condition);
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • }
  • }
  • rule("Bot Sombra Hack")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sombra;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Ability Cooldown(Event Player, Button(Secondary Fire)) <= 0;
  • Distance Between(Eye Position(Event Player), Eye Position(Event Player.BotEnemy)) <= 8;
  • }
  • actions
  • {
  • Disallow Button(Event Player, Button(Primary Fire));
  • Start Holding Button(Event Player, Button(Secondary Fire));
  • Wait(Random Real(2, 3), Ignore Condition);
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • Allow Button(Event Player, Button(Primary Fire));
  • }
  • }
  • rule("Bot Bastion Repair")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Bastion;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • }
  • actions
  • {
  • If(Normalized Health(Event Player) <= 0.500);
  • Start Holding Button(Event Player, Button(Secondary Fire));
  • Else;
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • End;
  • Event Player.BotBattleRange = Random Integer(14, 27);
  • Wait(1, Abort When False);
  • Loop;
  • }
  • }
  • rule("Bot Bastion Repair 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Bastion;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy == Null;
  • }
  • actions
  • {
  • If(Normalized Health(Event Player) < 1);
  • Start Holding Button(Event Player, Button(Secondary Fire));
  • Else;
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • End;
  • Event Player.BotBattleRange = Random Integer(7, 16);
  • Wait(1, Abort When False);
  • Loop;
  • }
  • }
  • rule("Bot Hanzo Forward Jump")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Hanzo;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Ability Cooldown(Event Player, Button(Jump)) <= 0;
  • Distance Between(Eye Position(Event Player), Eye Position(Event Player.BotEnemy)) <= 8;
  • Is On Ground(Event Player) == True;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Jump));
  • Wait(Random Real(0.250, 0.350), Ignore Condition);
  • Press Button(Event Player, Button(Jump));
  • }
  • }
  • rule("Bot Genji Double Jump")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Genji;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Is On Ground(Event Player) == True;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Jump));
  • Wait(Random Real(0.250, 0.350), Ignore Condition);
  • Press Button(Event Player, Button(Jump));
  • }
  • }
  • rule("Bot Sombra Teleport")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • Sombra;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Is Using Ability 2(Event Player) == True;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Ability 2));
  • }
  • }
  • rule("Bot Reinhardt Shield")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reinhardt;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • If(Event Player.BotEnemy != Null && Distance Between(Eye Position(Event Player), Eye Position(Event Player.BotEnemy)) > 6 && (
  • Is Button Held(Event Player.BotEnemy, Button(Primary Fire)) || Is Button Held(Event Player.BotEnemy, Button(Secondary Fire))));
  • Skip If(Is Button Held(Event Player, Button(Secondary Fire)) == True, 1);
  • Start Holding Button(Event Player, Button(Secondary Fire));
  • Else;
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • End;
  • Wait(1, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot Brigitte Shield")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Brigitte;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • If(Event Player.BotEnemy != Null && Distance Between(Eye Position(Event Player), Eye Position(Event Player.BotEnemy)) > 6 && (
  • Is Button Held(Event Player.BotEnemy, Button(Primary Fire)) || Is Button Held(Event Player.BotEnemy, Button(Secondary Fire))));
  • Skip If(Is Button Held(Event Player, Button(Secondary Fire)) == True, 1);
  • Start Holding Button(Event Player, Button(Secondary Fire));
  • Else;
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • End;
  • Wait(1, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot Soldier 76 Rockets")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Soldier: 76;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Ability Cooldown(Event Player, Button(Secondary Fire)) <= 0;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Secondary Fire));
  • }
  • }
  • rule("Bot Echo Sticky Bombs")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Echo;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Ability Cooldown(Event Player, Button(Secondary Fire)) <= 0;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Secondary Fire));
  • }
  • }
  • rule("Bot Pharah Fly")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Pharah;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Button(Jump));
  • Wait(Random Real(0.250, 0.750), Ignore Condition);
  • Stop Holding Button(Event Player, Button(Jump));
  • Wait(Random Real(0.250, 0.750), Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot Lucio Fire 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Distance Between(Eye Position(Event Player), Eye Position(Event Player.BotEnemy)) <= 4;
  • Ability Cooldown(Event Player, Button(Secondary Fire)) <= 0;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Secondary Fire));
  • }
  • }
  • rule("Bot Sigma Barrier")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sigma;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Ability Cooldown(Event Player, Button(Secondary Fire)) <= 0;
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Button(Secondary Fire));
  • Wait(Random Real(0.750, 1.250), Abort When False);
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • Wait(Random Real(2, 4), Ignore Condition);
  • Press Button(Event Player, Button(Secondary Fire));
  • }
  • }
  • rule("Bot Orisa Halt")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Orisa;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Ability Cooldown(Event Player, Button(Secondary Fire)) <= 0;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Secondary Fire));
  • }
  • }
  • rule("Bot Ashe Scope")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Ashe;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • If(Event Player.BotEnemy != Null && Distance Between(Eye Position(Event Player), Eye Position(Event Player.BotEnemy)) >= 10);
  • Skip If(Is Button Held(Event Player, Button(Secondary Fire)) == True, 1);
  • Start Holding Button(Event Player, Button(Secondary Fire));
  • Else;
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • End;
  • Wait(1, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot Ana Scope")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Ana;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • If(Event Player.BotEnemy != Null && Distance Between(Eye Position(Event Player), Eye Position(Event Player.BotEnemy)) >= 10);
  • Skip If(Is Button Held(Event Player, Button(Secondary Fire)) == True, 1);
  • Start Holding Button(Event Player, Button(Secondary Fire));
  • Else;
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • End;
  • Wait(1, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot Widowmaker Scope")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Widowmaker;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • If(Event Player.BotEnemy != Null && Distance Between(Eye Position(Event Player), Eye Position(Event Player.BotEnemy)) >= 10);
  • Skip If(Is Button Held(Event Player, Button(Secondary Fire)) == True, 1);
  • Start Holding Button(Event Player, Button(Secondary Fire));
  • Else;
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • End;
  • Wait(1, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot Widowmaker Shot")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Widowmaker;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Distance Between(Eye Position(Event Player), Eye Position(Event Player.BotEnemy)) >= 10;
  • Is Button Held(Event Player, Button(Secondary Fire)) == True;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • Wait(Random Real(1, 3), Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot Lucio Ability1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • If(Health(Event Player) < Max Health(Event Player) && Is Using Ability 1(Event Player));
  • Press Button(Event Player, Button(Ability 1));
  • Else If(Is Using Ability 1(Event Player) == False);
  • Press Button(Event Player, Button(Ability 1));
  • End;
  • Wait(1, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot Lucio Ability2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Normalized Health(Event Player) <= 0.600;
  • Ability Cooldown(Event Player, Button(Ability 2)) <= 0;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Ability 2));
  • }
  • }
  • rule("Bot Ashe Attack")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Ashe;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Is Reloading(Event Player) == False;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Primary Fire));
  • Wait(0.250, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot Reaper Attack")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reaper;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Is Reloading(Event Player) == False;
  • Is Using Ability 1(Event Player) == False;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Primary Fire));
  • Wait(0.250, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot Baptiste Attack")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Baptiste;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Is Reloading(Event Player) == False;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Primary Fire));
  • Wait(0.250, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot Mei Fire 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mei;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Distance Between(Eye Position(Event Player), Eye Position(Event Player.BotEnemy)) >= 6;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • Press Button(Event Player, Button(Secondary Fire));
  • Wait(0.250, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot McCree Ability1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Cassidy;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Is Reloading(Event Player) == True;
  • Ability Cooldown(Event Player, Button(Ability 1)) <= 0;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Ability 1));
  • }
  • }
  • rule("Bot McCree Ability2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Cassidy;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Distance Between(Eye Position(Event Player), Eye Position(Event Player.BotEnemy)) <= 4;
  • Ability Cooldown(Event Player, Button(Ability 2)) <= 0;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Ability 2));
  • }
  • }
  • rule("Bot Junkrat Fire 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Junkrat;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Wait(Random Real(0.750, 1.500), Ignore Condition);
  • Press Button(Event Player, Button(Secondary Fire));
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot D.Va Anti Stuck")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • D.Va;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is In Alternate Form(Event Player) == True;
  • }
  • actions
  • {
  • Wait(20, Abort When False);
  • Respawn(Event Player);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot Bastion Disable Turret Mode")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Bastion;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Normalized Health(Event Player) <= 0.600;
  • Is In Alternate Form(Event Player) == True;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Ability 1));
  • }
  • }
  • rule("Bot Bastion Disable Turret Mode")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Bastion;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy == Null;
  • Is In Alternate Form(Event Player) == True;
  • }
  • actions
  • {
  • Wait(10, Abort When False);
  • Press Button(Event Player, Button(Ability 1));
  • }
  • }
  • rule("Bot Bastion Enable Turret Mode")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Bastion;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Is In Alternate Form(Event Player) == False;
  • Normalized Health(Event Player) >= 0.700;
  • Distance Between(Eye Position(Event Player), Eye Position(Event Player.BotEnemy)) >= 10;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Ability 1));
  • }
  • }
  • rule("Bot Sombra Allow Fire")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sombra;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Ability Cooldown(Event Player, Button(Secondary Fire)) > 0;
  • }
  • actions
  • {
  • Allow Button(Event Player, Button(Primary Fire));
  • Start Holding Button(Event Player, Button(Primary Fire));
  • }
  • }
  • rule("Bot Ball Ability1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy == Null;
  • Is Using Ability 1(Event Player) == False;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Ability 1));
  • }
  • }
  • rule("Bot Soldier 76 Ability1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Soldier: 76;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy == Null;
  • Is Using Ability 1(Event Player) == False;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Ability 1));
  • }
  • }
  • rule("Bot Lucio Jump")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Is On Ground(Event Player) == True;
  • }
  • actions
  • {
  • Skip If(Is On Wall(Event Player) == True, 1);
  • Start Holding Button(Event Player, Button(Jump));
  • Wait(Random Real(0.250, 0.350), Ignore Condition);
  • Skip If(Is On Wall(Event Player) == True, 1);
  • Stop Holding Button(Event Player, Button(Jump));
  • }
  • }
  • rule("Bot Ashe Ability1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Ashe;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Distance Between(Eye Position(Event Player), Eye Position(Event Player.BotEnemy)) <= 5;
  • Ability Cooldown(Event Player, Button(Ability 1)) <= 0;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Ability 1));
  • }
  • }
  • rule("Bot Baptiste Jump")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Baptiste;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Is On Ground(Event Player) == True;
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Button(Crouch));
  • Wait(Random Real(0.600, 1.300), Ignore Condition);
  • Press Button(Event Player, Button(Jump));
  • Stop Holding Button(Event Player, Button(Crouch));
  • }
  • }
  • rule("Bot Doomfist Attack")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Doomfist;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy != Null;
  • Is Button Held(Event Player, Button(Secondary Fire)) == False;
  • }
  • actions
  • {
  • Wait(0.250, Abort When False);
  • Press Button(Event Player, Button(Primary Fire));
  • Loop;
  • }
  • }
  • rule("Doomfist Ability Boost")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Doomfist;
  • }
  • conditions
  • {
  • Is Using Ability 2(Event Player) == True;
  • Global.EnableImprovedMechanics == True;
  • }
  • actions
  • {
  • Apply Impulse(Event Player, Vector(0, 1, 0), 20, To World, Cancel Contrary Motion);
  • }
  • }
  • rule("Tracer Anti Blink")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • Tracer;
  • }
  • conditions
  • {
  • Global.EnableImprovedMechanics == True;
  • }
  • actions
  • {
  • Set Ability Cooldown(Event Player, Button(Ability 1), 3);
  • }
  • }
  • rule("Tracer Blink Damage")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Tracer;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Alive(Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player)))) == True;
  • Is Using Ability 1(Event Player) == True;
  • Event Player.PlayerTeam != Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player))).PlayerTeam;
  • Distance Between(Eye Position(Event Player), Eye Position(Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(
  • Event Player))))) <= 2;
  • Global.EnableImprovedMechanics == True;
  • }
  • actions
  • {
  • Damage(Player Closest To Reticle(Event Player, Opposite Team Of(Team Of(Event Player))), Event Player, 65);
  • Wait(0.500, Ignore Condition);
  • }
  • }
  • rule("Bastion +100 Shield")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Bastion;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Global.EnableImprovedMechanics == True;
  • }
  • actions
  • {
  • Add Health Pool To Player(Event Player, Shields, 100, True, True);
  • }
  • }
  • rule("Enable AFK Mode")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Event Player.AFKMode == False;
  • Is Button Held(Event Player, Button(Primary Fire)) == False;
  • Is Button Held(Event Player, Button(Secondary Fire)) == False;
  • Is Button Held(Event Player, Button(Ability 1)) == False;
  • Is Button Held(Event Player, Button(Ability 2)) == False;
  • Is Button Held(Event Player, Button(Ultimate)) == False;
  • Is Button Held(Event Player, Button(Interact)) == False;
  • Is Button Held(Event Player, Button(Jump)) == False;
  • Is Button Held(Event Player, Button(Crouch)) == False;
  • Is Button Held(Event Player, Button(Melee)) == False;
  • Is Button Held(Event Player, Button(Reload)) == False;
  • }
  • actions
  • {
  • Wait(60, Abort When False);
  • Event Player.AFKMode = True;
  • Event Player.BotBattleRange = Random Integer(7, 16);
  • Start Facing(Event Player, Direction Towards(Eye Position(Event Player), Event Player.BotAimPosition), Event Player.TurnSpeed,
  • To World, Direction and Turn Rate);
  • }
  • }
  • rule("Disable AFK Mode")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Event Player.AFKMode == True;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • Event Player.AFKMode = False;
  • Stop Throttle In Direction(Event Player);
  • Stop Facing(Event Player);
  • Small Message(Event Player, Custom String("AFK MODE IS DISABLED | WELCOME TO BACK!"));
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • }
  • }
  • rule("AFK Fast Respawn")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.AFKMode == True;
  • }
  • actions
  • {
  • Wait(2, Ignore Condition);
  • Respawn(Event Player);
  • }
  • }
  • rule("AFK Alert")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Event Player.AFKMode == True;
  • }
  • actions
  • {
  • Small Message(Event Player, Custom String("YOU ARE AFK | PRESS {0} FOR DISABLE AFK MODE | {0} IS F BY DEFAULT", Button(Interact)));
  • Wait(2, Abort When False);
  • Loop;
  • }
  • }
  • rule("Enable Self Nodes")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Current Map != Map(Hollywood);
  • Current Map != Map(Hollywood Halloween);
  • Current Map != Map(Havana);
  • }
  • actions
  • {
  • Global.SelfNodes = True;
  • }
  • }
  • rule("Nodes - Havana")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Wait(1, Ignore Condition);
  • If(Current Map == Map(Havana));
  • Global.SelfNodes = False;
  • Global.Nodes = Array(Vector(9.881, 6.500, -101.353), Vector(23.014, 6.573, -101.167), Vector(27.785, 4.500, -101.095), Vector(
  • 38.789, 4.500, -95.801), Vector(39.263, 6.500, -89.914), Vector(46.909, 6.563, -80.475), Vector(46.572, 11.500, -61.576),
  • Vector(42.898, 12.500, -61.147), Vector(27.367, 12.500, -61.283), Vector(26.989, 12.500, -74.837), Vector(27.163, 10.500,
  • -86.558), Vector(28.609, 10.500, -95.607), Vector(42.260, 10.501, -93.403), Vector(53.445, 6.500, -93.179), Vector(53.329,
  • 6.500, -101.376), Vector(63.478, 10.500, -101.233), Vector(58.305, 8.076, -101.284), Vector(65.172, 10.500, -98.400), Vector(
  • 65.244, 12.445, -93.312), Vector(64.878, 12.500, -83.375), Vector(65.080, 12.500, -77.426), Vector(64.295, 11.500, -69.208),
  • Vector(47.033, 11.500, -67.771), Vector(56.451, 11.500, -71.647), Vector(46.888, 7.822, -76.557), Vector(46.888, 9.896,
  • -72.408), Vector(57.248, 6.500, -76.359), Vector(57.396, 4.500, -67.225), Vector(49.278, 6.446, -67.501), Vector(43.330, 6.500,
  • -61.720), Vector(39.566, 6.364, -68.255), Vector(20.245, 6.339, -67.307), Vector(20.060, 6.500, -82.679), Vector(27.613, 6.500,
  • -82.061), Vector(27.969, 6.560, -69.318), Vector(11.194, 6.500, -61.491), Vector(6.945, 8.500, -61.779), Vector(5.364, 10.167,
  • -66.536), Vector(5.245, 12.577, -71.115), Vector(11.676, 12.500, -79.469), Vector(0.897, 12.500, -75.908), Vector(8.028, 6.454,
  • -77.875), Vector(-0.512, 6.500, -79.332), Vector(13.254, 6.550, -96.935), Vector(4.890, 6.500, -89.940), Vector(18.851, 6.500,
  • -92.518), Vector(23.049, 10.500, -96.979), Vector(17.130, 8.488, -97.137), Vector(21.220, 10.500, -97.718), Vector(24.059,
  • 10.500, -88.086), Vector(71.370, 4.500, -62.724), Vector(9.531, 6.500, -93.594), Vector(10.764, 6.500, -101.209), Vector(
  • 10.021, 6.500, -72.447), Vector(11.480, 6.500, -61.623), Vector(7.676, 8.239, -61.065), Vector(5.073, 12.500, -75.606), Vector(
  • 0.523, 12.500, -76.453), Vector(-0.232, 12.500, -82.469));
  • End;
  • }
  • }
  • rule("Nodes - Hollywood")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Wait(1, Ignore Condition);
  • If(Current Map == Map(Hollywood) || Current Map == Map(Hollywood Halloween));
  • Global.SelfNodes = False;
  • Global.Nodes = Array(Vector(49.138, 3.250, -49.812), Vector(45.311, 3.250, -64.615), Vector(36.125, 3.250, -62.423), Vector(31.678,
  • 3.250, -57.997), Vector(36.730, 3.250, -43.516), Vector(37.744, 3.250, -31.175), Vector(32.675, 2.249, -30.996), Vector(24.812,
  • 2.248, -36.266), Vector(15.948, 2.250, -38.762), Vector(14.123, 2.406, -31.663), Vector(32.339, 3.250, -54.931), Vector(27.316,
  • 3.281, -53.417), Vector(24.854, 2.104, -65.729), Vector(35.016, 2.248, -67.463), Vector(32.588, 2.106, -89.037), Vector(15.500,
  • 2.106, -82.709), Vector(23.091, 2.125, -90.027), Vector(-0.674, 2.104, -79.101), Vector(6.819, 2.500, -67.171), Vector(2.851,
  • 2.500, -66.171), Vector(12.689, 2.505, -56.814), Vector(5.065, 2.500, -59.922), Vector(-2.930, 2.500, -55.914), Vector(-1.313,
  • 2.104, -48.538), Vector(-8.944, 2.228, -53.218), Vector(-7.060, 2.473, -58.554), Vector(-11.573, 2.229, -66.326), Vector(
  • -19.410, 2.229, -75.563), Vector(-27.903, 6.250, -43.723), Vector(-21.424, 6.250, -38.379), Vector(-21.280, 6.251, -44.170),
  • Vector(-14.810, 4.181, -44.799), Vector(-20.331, 6.251, -62.112), Vector(-2.701, 2.104, -37.394), Vector(11.521, 2.104,
  • -48.413), Vector(19.706, 2.110, -45.153), Vector(11.043, 3, -42.254), Vector(-3.752, 2.104, -12.032), Vector(4.653, 2.104,
  • -19.226), Vector(14.295, 2.112, -21.917), Vector(14.591, 2.250, -10.411), Vector(3.514, 2.250, -4.146), Vector(7.331, 3.357,
  • -23.820), Vector(2.845, 4.231, -22.891), Vector(6.604, 6.325, -27.408), Vector(2.801, 6.231, -27.794), Vector(2.167, 6.254,
  • -32.926), Vector(18.451, 2.104, -73.127), Vector(25.236, 2.358, -77.062), Vector(26.443, 2.358, -81.021), Vector(33.910, 2.104,
  • -83.866), Vector(40.484, 2.104, -72.297), Vector(15.910, 2.104, -70.328), Vector(-4.912, 4.500, -65.449), Vector(2.207, 6.501,
  • -67.252), Vector(6.802, 6.501, -68.415), Vector(1.818, 2.104, -38.960), Vector(13.852, 11.313, -31.930), Vector(8.600, 11.250,
  • -33.495), Vector(4.590, 11.250, -33.273), Vector(8.446, 13.337, -37.878), Vector(7.056, 13.335, -58.681), Vector(-7.034,
  • 10.770, -58.680), Vector(5.208, 11.510, -63.343));
  • End;
  • }
  • }
  • disabled rule("Node Creator")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player == Host Player;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • Create Effect(Event Player, Sphere, Color(Blue), Position Of(Event Player) + Vector(0, 0.500, 0), 0.500, Visible To);
  • Modify Global Variable(Nodes, Append To Array, Position Of(Event Player) + Vector(0, 0.500, 0));
  • }
  • }
  • rule("Anti-Null Team")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.PlayerTeam == 0;
  • }
  • actions
  • {
  • Wait(1, Abort When False);
  • Event Player.PlayerTeam = Random Integer(1, 6);
  • }
  • }
  • rule("Anti-Null Team")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.PlayerTeam == Null;
  • }
  • actions
  • {
  • Wait(2, Abort When False);
  • Event Player.PlayerTeam = Random Integer(1, 6);
  • }
  • }
  • rule("Anti-Null Team")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.PlayerTeam == -1;
  • }
  • actions
  • {
  • Wait(3, Abort When False);
  • Event Player.PlayerTeam = Random Integer(1, 6);
  • }
  • }
  • rule("ANTI-SELF KILL")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • "this means no one killed this guy"
  • Attacker == Null;
  • Event Player.LastHit != Null;
  • }
  • actions
  • {
  • Event Player.PlayerTeam = Event Player.LastHit.PlayerTeam;
  • }
  • }
  • rule("ANTI-SELF KILL")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • "this means no one killed this guy"
  • Attacker == Event Player;
  • Event Player.LastHit != Null;
  • }
  • actions
  • {
  • Event Player.PlayerTeam = Event Player.LastHit.PlayerTeam;
  • }
  • }
  • rule("Need Healing")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Communicating(Event Player, Need Healing) == True;
  • }
  • actions
  • {
  • Destroy Icon(Event Player.Comm);
  • If(Global.OffWalls == True);
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player,
  • Plus, Visible To and Position, Color(White), True);
  • Else;
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player,
  • Plus, Visible To and Position, Color(White), False);
  • End;
  • Event Player.Comm = Last Created Entity;
  • Wait(5, Ignore Condition);
  • Destroy Icon(Event Player.Comm);
  • }
  • }
  • rule("Need Help")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Communicating(Event Player, Need Help) == True;
  • }
  • actions
  • {
  • Destroy Icon(Event Player.Comm);
  • If(Global.OffWalls == True);
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player,
  • Exclamation Mark, Visible To and Position, Color(White), True);
  • Else;
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player,
  • Exclamation Mark, Visible To and Position, Color(White), False);
  • End;
  • Event Player.Comm = Last Created Entity;
  • Wait(5, Ignore Condition);
  • Destroy Icon(Event Player.Comm);
  • }
  • }
  • rule("Hello")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Communicating(Event Player, Hello) == True;
  • }
  • actions
  • {
  • Destroy Icon(Event Player.Comm);
  • If(Global.OffWalls == True);
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player,
  • Happy, Visible To and Position, Color(White), True);
  • Else;
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player,
  • Happy, Visible To and Position, Color(White), False);
  • End;
  • Event Player.Comm = Last Created Entity;
  • Wait(5, Ignore Condition);
  • Destroy Icon(Event Player.Comm);
  • }
  • }
  • rule("Thanks")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Communicating(Event Player, Thanks) == True;
  • }
  • actions
  • {
  • Destroy Icon(Event Player.Comm);
  • If(Global.OffWalls == True);
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player,
  • Heart, Visible To and Position, Color(White), True);
  • Else;
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player,
  • Heart, Visible To and Position, Color(White), False);
  • End;
  • Event Player.Comm = Last Created Entity;
  • Wait(5, Ignore Condition);
  • Destroy Icon(Event Player.Comm);
  • }
  • }
  • rule("No")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Communicating(Event Player, No) == True;
  • }
  • actions
  • {
  • Destroy Icon(Event Player.Comm);
  • If(Global.OffWalls == True);
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player, X,
  • Visible To and Position, Color(White), True);
  • Else;
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player, X,
  • Visible To and Position, Color(White), False);
  • End;
  • Event Player.Comm = Last Created Entity;
  • Wait(5, Ignore Condition);
  • Destroy Icon(Event Player.Comm);
  • }
  • }
  • rule("Yes")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Communicating(Event Player, Yes) == True;
  • }
  • actions
  • {
  • Destroy Icon(Event Player.Comm);
  • If(Global.OffWalls == True);
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player,
  • Checkmark, Visible To and Position, Color(White), True);
  • Else;
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player,
  • Checkmark, Visible To and Position, Color(White), False);
  • End;
  • Event Player.Comm = Last Created Entity;
  • Wait(5, Ignore Condition);
  • Destroy Icon(Event Player.Comm);
  • }
  • }
  • rule("Incoming")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Communicating(Event Player, Incoming) == True;
  • }
  • actions
  • {
  • Destroy Icon(Event Player.Comm);
  • If(Global.OffWalls == True);
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player,
  • Exclamation Mark, Visible To and Position, Color(White), True);
  • Else;
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player,
  • Exclamation Mark, Visible To and Position, Color(White), False);
  • End;
  • Event Player.Comm = Last Created Entity;
  • Wait(5, Ignore Condition);
  • Destroy Icon(Event Player.Comm);
  • }
  • }
  • rule("Acknowledge")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Communicating(Event Player, Acknowledge) == True;
  • }
  • actions
  • {
  • Destroy Icon(Event Player.Comm);
  • If(Global.OffWalls == True);
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player,
  • Checkmark, Visible To and Position, Color(White), True);
  • Else;
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player,
  • Checkmark, Visible To and Position, Color(White), False);
  • End;
  • Event Player.Comm = Last Created Entity;
  • Wait(5, Ignore Condition);
  • Destroy Icon(Event Player.Comm);
  • }
  • }
  • rule("Group Up")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Communicating(Event Player, Group Up) == True;
  • }
  • actions
  • {
  • Destroy Icon(Event Player.Comm);
  • If(Global.OffWalls == True);
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player,
  • Warning, Visible To and Position, Color(White), True);
  • Else;
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player,
  • Warning, Visible To and Position, Color(White), False);
  • End;
  • Event Player.Comm = Last Created Entity;
  • Wait(5, Ignore Condition);
  • Destroy Icon(Event Player.Comm);
  • }
  • }
  • rule("Sorry")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Communicating(Event Player, Sorry) == True;
  • }
  • actions
  • {
  • Destroy Icon(Event Player.Comm);
  • If(Global.OffWalls == True);
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player, Sad,
  • Visible To and Position, Color(White), True);
  • Else;
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player, Sad,
  • Visible To and Position, Color(White), False);
  • End;
  • Event Player.Comm = Last Created Entity;
  • Wait(5, Ignore Condition);
  • Destroy Icon(Event Player.Comm);
  • }
  • }
  • rule("Fall Back")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Communicating(Event Player, Fall Back) == True;
  • }
  • actions
  • {
  • Destroy Icon(Event Player.Comm);
  • If(Global.OffWalls == True);
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player, No,
  • Visible To and Position, Color(White), True);
  • Else;
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player, No,
  • Visible To and Position, Color(White), False);
  • End;
  • Event Player.Comm = Last Created Entity;
  • Wait(5, Ignore Condition);
  • Destroy Icon(Event Player.Comm);
  • }
  • }
  • rule("You are welcome")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Communicating(Event Player, You are Welcome) == True;
  • }
  • actions
  • {
  • Destroy Icon(Event Player.Comm);
  • If(Global.OffWalls == True);
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player,
  • Heart, Visible To and Position, Color(White), True);
  • Else;
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.PlayerTeam == Current Array Element.PlayerTeam), Event Player,
  • Heart, Visible To and Position, Color(White), False);
  • End;
  • Event Player.Comm = Last Created Entity;
  • Wait(5, Ignore Condition);
  • Destroy Icon(Event Player.Comm);
  • }
  • }
  • rule("Sigma Shield Buff")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sigma;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Global.EnableImprovedMechanics == True;
  • Ability Cooldown(Event Player, Button(Secondary Fire)) > 1;
  • }
  • actions
  • {
  • Set Ability Cooldown(Event Player, Button(Secondary Fire), 1);
  • }
  • }
  • rule("Hammond Nerf")
  • {
  • event
  • {
  • Player Received Knockback;
  • All;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Global.EnableImprovedMechanics == True;
  • Is Firing Secondary(Event Player) == True;
  • }
  • actions
  • {
  • "For block escaping"
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • Set Ability Cooldown(Event Player, Button(Secondary Fire), 5);
  • }
  • }
  • rule("Moira Heal")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Moira;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • 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;
  • Event Player.PlayerTeam == 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).PlayerTeam;
  • Ability Resource(Event Player, Button(Primary Fire)) > 0;
  • Is Firing Primary(Event Player) == True;
  • }
  • actions
  • {
  • Heal(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, 2);
  • Wait(0.100, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Baptiste Heal")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • 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;
  • Event Player.PlayerTeam == 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).PlayerTeam;
  • Is Firing Secondary(Event Player) == True;
  • Is Reloading(Event Player) == False;
  • }
  • actions
  • {
  • Heal(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, 60);
  • Wait(0.250, Ignore Condition);
  • }
  • }
  • rule("Anti Damage For Bastion")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • Bastion;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Attacker != Null;
  • Attacker != Event Player;
  • Attacker.PlayerTeam == Event Player.PlayerTeam;
  • }
  • actions
  • {
  • Heal(Event Player, Event Player, Event Damage);
  • }
  • }
  • rule("Ana Heal")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Ana;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Victim != Null;
  • Victim != Event Player;
  • Victim.PlayerTeam == Event Player.PlayerTeam;
  • Is Alive(Victim) == True;
  • Event Ability == Is Firing Primary(Event Player);
  • }
  • actions
  • {
  • Heal(Victim, Event Player, 70);
  • }
  • }
  • rule("Ana Heal+")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Ana;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Victim != Null;
  • Victim != Event Player;
  • Victim.PlayerTeam == Event Player.PlayerTeam;
  • Is Alive(Victim) == True;
  • Event Ability == Is Using Ability 2(Event Player);
  • }
  • actions
  • {
  • Heal(Victim, Event Player, 140);
  • }
  • }
  • rule("Ana Anti-Sleep")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Ana;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Victim != Null;
  • Victim != Event Player;
  • Victim.PlayerTeam == Event Player.PlayerTeam;
  • Is Alive(Victim) == True;
  • Event Ability == Is Using Ability 1(Event Player);
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Clear Status(Victim, Asleep);
  • Damage(Victim, Null, 1);
  • }
  • }
  • rule("Roadhog Anti-Hook")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Roadhog;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Victim != Null;
  • Victim != Event Player;
  • Victim.PlayerTeam == Event Player.PlayerTeam;
  • Is Alive(Victim) == True;
  • Event Ability == Is Using Ability 1(Event Player);
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Stunned, 0.032);
  • }
  • }
  • rule("Sigma Anti-Ultimate")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Sigma;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Victim != Null;
  • Victim != Event Player;
  • Victim.PlayerTeam == Event Player.PlayerTeam;
  • Is Alive(Victim) == True;
  • Event Ability == Is Using Ultimate(Event Player);
  • }
  • actions
  • {
  • Set Status(Victim, Null, Phased Out, 0.032);
  • }
  • }
  • rule("McCree Anti-Stun")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Cassidy;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Victim != Null;
  • Victim != Event Player;
  • Victim.PlayerTeam == Event Player.PlayerTeam;
  • Is Alive(Victim) == True;
  • Event Ability == Is Using Ability 2(Event Player);
  • }
  • actions
  • {
  • Wait(0.064, Ignore Condition);
  • Clear Status(Event Player, Stunned);
  • }
  • }
  • rule("Zarya Anti-Ultimate")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Zarya;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Victim != Null;
  • Victim != Event Player;
  • Victim.PlayerTeam == Event Player.PlayerTeam;
  • Is Alive(Victim) == True;
  • Event Ability == Is Using Ultimate(Event Player);
  • }
  • actions
  • {
  • Set Status(Victim, Null, Phased Out, 0.032);
  • }
  • }
  • rule("Mei Anti-Ultimate")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Mei;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Victim != Null;
  • Victim != Event Player;
  • Victim.PlayerTeam == Event Player.PlayerTeam;
  • Is Alive(Victim) == True;
  • Event Ability == Is Using Ultimate(Event Player);
  • }
  • actions
  • {
  • Set Status(Victim, Null, Phased Out, 0.032);
  • }
  • }
  • rule("Sombra Anti-Hack")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sombra;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • 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;
  • Event Player.PlayerTeam == 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).PlayerTeam;
  • Is Firing Secondary(Event Player) == True;
  • Is Reloading(Event Player) == False;
  • Ability Cooldown(Event Player, Button(Secondary Fire)) <= 0;
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Stunned, 0.032);
  • Set Ability Cooldown(Event Player, Button(Secondary Fire), 10);
  • }
  • }
  • disabled rule("Lucio Heal")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.NearestLucio != Null;
  • Is Using Ability 1(Event Player.NearestLucio) == False;
  • }
  • actions
  • {
  • If(Is Using Ability 2(Event Player.NearestLucio));
  • Heal(Event Player, Event Player.NearestLucio, 14);
  • Else;
  • Heal(Event Player, Event Player.NearestLucio, 7);
  • End;
  • Wait(0.750, Ignore Condition);
  • Loop If Condition Is True;
  • Set Move Speed(Event Player, 100);
  • }
  • }
  • disabled rule("Lucio Speed")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.NearestLucio != Null;
  • Is Using Ability 1(Event Player.NearestLucio) == True;
  • }
  • actions
  • {
  • If(Is Using Ability 2(Event Player.NearestLucio));
  • Set Move Speed(Event Player, 130);
  • Else;
  • Set Move Speed(Event Player, 110);
  • End;
  • Wait(1, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • disabled rule("Lucio No Speed")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.NearestLucio == Null;
  • }
  • actions
  • {
  • Set Move Speed(Event Player, 100);
  • }
  • }
  • disabled rule("Kill Feed Blue")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.EnableImprovedMechanics == True;
  • Attacker.PlayerTeam == 1;
  • Attacker != Null;
  • }
  • actions
  • {
  • Event Player.KillHero = Hero Icon String(Hero Of(Event Player));
  • Attacker.KillHero = Hero Icon String(Hero Of(Attacker));
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("{0} > {1}", Custom String("{0} {1}", Attacker.KillHero,
  • Attacker), Custom String("{0} {1}", Event Player.KillHero, Event Player)), Right, 99, Color(Blue), Color(Blue), Color(Blue),
  • Visible To and String, Default Visibility);
  • Modify Global Variable(KillFeedArray, Append To Array, Last Text ID);
  • }
  • }
  • disabled rule("Kill Feed Red")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.EnableImprovedMechanics == True;
  • Attacker.PlayerTeam == 2;
  • Attacker != Null;
  • }
  • actions
  • {
  • Event Player.KillHero = Hero Icon String(Hero Of(Event Player));
  • Attacker.KillHero = Hero Icon String(Hero Of(Attacker));
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("{0} > {1}", Custom String("{0} {1}", Attacker.KillHero,
  • Attacker), Custom String("{0} {1}", Event Player.KillHero, Event Player)), Right, 99, Color(Red), Color(Red), Color(Red),
  • Visible To and String, Default Visibility);
  • Modify Global Variable(KillFeedArray, Append To Array, Last Text ID);
  • }
  • }
  • disabled rule("Kill Feed Green")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.EnableImprovedMechanics == True;
  • Attacker.PlayerTeam == 3;
  • Attacker != Null;
  • }
  • actions
  • {
  • Event Player.KillHero = Hero Icon String(Hero Of(Event Player));
  • Attacker.KillHero = Hero Icon String(Hero Of(Attacker));
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("{0} > {1}", Custom String("{0} {1}", Attacker.KillHero,
  • Attacker), Custom String("{0} {1}", Event Player.KillHero, Event Player)), Right, 99, Color(Green), Color(Green), Color(Green),
  • Visible To and String, Default Visibility);
  • Modify Global Variable(KillFeedArray, Append To Array, Last Text ID);
  • }
  • }
  • disabled rule("Kill Feed Yellow")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.EnableImprovedMechanics == True;
  • Attacker.PlayerTeam == 4;
  • Attacker != Null;
  • }
  • actions
  • {
  • Event Player.KillHero = Hero Icon String(Hero Of(Event Player));
  • Attacker.KillHero = Hero Icon String(Hero Of(Attacker));
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("{0} > {1}", Custom String("{0} {1}", Attacker.KillHero,
  • Attacker), Custom String("{0} {1}", Event Player.KillHero, Event Player)), Right, 99, Color(Yellow), Color(Yellow), Color(
  • Yellow), Visible To and String, Default Visibility);
  • Modify Global Variable(KillFeedArray, Append To Array, Last Text ID);
  • }
  • }
  • disabled rule("Kill Feed Pink")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.EnableImprovedMechanics == True;
  • Attacker.PlayerTeam == 5;
  • Attacker != Null;
  • }
  • actions
  • {
  • Event Player.KillHero = Hero Icon String(Hero Of(Event Player));
  • Attacker.KillHero = Hero Icon String(Hero Of(Attacker));
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("{0} > {1}", Custom String("{0} {1}", Attacker.KillHero,
  • Attacker), Custom String("{0} {1}", Event Player.KillHero, Event Player)), Right, 99, Color(Yellow), Color(Yellow),
  • Custom Color(255, 105, 180, 255), Visible To and String, Default Visibility);
  • Modify Global Variable(KillFeedArray, Append To Array, Last Text ID);
  • }
  • }
  • disabled rule("Kill Feed White")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.EnableImprovedMechanics == True;
  • Attacker.PlayerTeam == 6;
  • }
  • actions
  • {
  • Event Player.KillHero = Hero Icon String(Hero Of(Event Player));
  • Attacker.KillHero = Hero Icon String(Hero Of(Attacker));
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("{0} > {1}", Custom String("{0} {1}", Attacker.KillHero,
  • Attacker), Custom String("{0} {1}", Event Player.KillHero, Event Player)), Right, 99, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Modify Global Variable(KillFeedArray, Append To Array, Last Text ID);
  • }
  • }
  • disabled rule("Destroy Kill Feed")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.EnableImprovedMechanics == True;
  • Global.KillFeedArray != Empty Array;
  • }
  • actions
  • {
  • Wait(5, Abort When False);
  • Destroy HUD Text(First Of(Global.KillFeedArray));
  • Modify Global Variable(KillFeedArray, Remove From Array By Index, 0);
  • Loop If Condition Is True;
  • }
  • }
  • disabled rule("Destroy Kill Feed 2")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.EnableImprovedMechanics == True;
  • Count Of(Global.KillFeedArray) > 10;
  • }
  • actions
  • {
  • Wait(1, Abort When False);
  • Destroy HUD Text(First Of(Global.KillFeedArray));
  • Modify Global Variable(KillFeedArray, Remove From Array By Index, 0);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot Self Node")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Dummy Bot(Event Player) || Event Player.AFKMode) == True;
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.BotEnemy == Null;
  • Global.SelfNodes == True;
  • Count Of(Filtered Array(Global.Nodes, Is In Line of Sight(Eye Position(Event Player), Current Array Element,
  • Barriers Do Not Block LOS) == True)) < 3;
  • }
  • actions
  • {
  • Modify Global Variable(Nodes, Append To Array, Nearest Walkable Position(Ray Cast Hit Position(Eye Position(Event Player),
  • Eye Position(Event Player) + (Facing Direction Of(Event Player) + Vector(Random Real(0, 360), 0, Random Real(0, 360)))
  • * Random Real(4, 16), Null, Event Player, False)));
  • Wait(Random Real(2, 4), Abort When False);
  • Loop;
  • }
  • }
Join the Workshop.codes Discord