Return to post
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;
}
}