Return to post
- variables
- {
- global:
- 0: HeroTable
- 1: Range_Hero
- 2: Range_Value
- 3: SniperHeroes
- 4: Difficulty
- 13: NumberOfZombies
- 14: ZombieCount
- 16: DebugFlag
- player:
- 0: GoalPosition
- 1: Enemy
- 2: IsLookEnemy
- 3: WalkTargetPlayer
- 4: FarPositions
- 5: BattleRange
- 6: IsBattleWalk
- 7: AimShakeDelays
- 19: temp
- }
- rule("INIT: GAME SETTINGS")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
- Disable Inspector Recording;
- Global.DebugFlag = True;
- "0 = Normal / 1 = Hard / 2 = Legendary"
- Global.Difficulty = Workshop Setting Combo(Custom String("Game Settings"), Custom String("Difficulty"), 0, Array(Custom String(
- "Normal (25% Damage Taken)"), Custom String("Hard (50% Damage Taken)"), Custom String("Legendary (100% Damage Taken)")), 0);
- Global.NumberOfZombies = Workshop Setting Integer(Custom String("Game Settings"), Custom String(
"Number Of Additional Zombie Bots (More Than 6 Might Crash The Game)"), 6, 1, 14, 1);
- "Number Of Additional Zombie Bots (More Than 6 Might Crash The Game)"), 5, 1, 14, 1);
- }
- }
- rule("INIT: GLOBAL")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
- Global.X = 0;
- Global.Y = False;
- Global.HeroTable = 0;
- Global.I = 0;
- }
- }
- rule("INIT: GLOBAL GAME START")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- }
- actions
- {
- Set Objective Description(All Players(Team 1), Custom String("Stop The Zombie Car"), Visible To and String);
- }
- }
- rule("INIT: SPAWN BOTS")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
Is Game In Progress == True;
- Is In Setup == True;
- }
- actions
- {
- Destroy All Dummy Bots;
- Global.ZombieCount = Global.NumberOfZombies;
- While(Global.ZombieCount != 0);
Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(0, 0, 0), Vector(0, 0, 0));
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Position Of(Spawn Points(Team 2)), Vector(0, 0, 0));
- Global.ZombieCount = Global.ZombieCount - 1;
- Wait(0.250, Ignore Condition);
- End;
- }
- }
- rule("INIT: SPAWN BOTS (Waiting)")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
- Global.ZombieCount = Global.NumberOfZombies;
- While(Global.ZombieCount != 0);
- Create Dummy Bot(Hero(Roadhog), Team 2, -1, Vector(0, 0, 0), Vector(0, 0, 0));
- Global.ZombieCount = Global.ZombieCount - 1;
- Wait(0.250, Ignore Condition);
- End;
- }
- }
- rule("Start Game If >= 4 Players")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Number Of Players(Team 1) >= 4;
- Is Game In Progress == False;
- }
- actions
- {
- Start Game Mode;
- }
- }
- rule("Assemble Time")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Assembling Heroes == True;
- }
- actions
- {
- Set Match Time(10);
- }
- }
- rule("Setup Time")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is In Setup == True;
- }
- actions
- {
- Set Match Time(30);
- Global.X = 0;
Destroy All Dummy Bots;
- disabled Destroy All Dummy Bots;
- }
- }
- rule("Team 1 Difficulty")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- All;
- }
- conditions
- {
- Has Spawned(Event Player) == True;
- Is Alive(Event Player) == True;
- }
- actions
- {
- If(Global.Difficulty == 0);
- Set Healing Received(Event Player, 50);
- Else If(Global.Difficulty == 1);
- Set Healing Received(Event Player, 50);
- Else;
- Set Healing Received(Event Player, 100);
- End;
- If(Is Waiting For Players == True);
- Set Status(Event Player, Null, Invincible, 9999);
- Else;
- Clear Status(Event Player, Invincible);
- End;
- }
- }
- rule("Team 2 Difficulty")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Has Spawned(Event Player) == True;
- Is Alive(Event Player) == True;
- }
- actions
- {
- Start Forcing Dummy Bot Name(Event Player, Custom String("Zombie"));
- If(Global.Difficulty == 0);
- Set Damage Dealt(Event Player, 25);
- Else If(Global.Difficulty == 1);
- Set Damage Dealt(Event Player, 50);
- Else;
- Set Damage Dealt(Event Player, 100);
- End;
- }
- }
- disabled rule("BALANCE TEAMS")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- actions
- {
- Set Damage Dealt(Event Player, Number Of Players(Team 1) * 15);
- Wait(5, Ignore Condition);
- Loop;
- }
- }
- rule("SPAWN ENEMIES ON PAYLOAD")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Has Spawned(Event Player) == True;
- Is Alive(Event Player) == True;
- Is In Setup == False;
- Match Time != 0;
- Is Game In Progress == True;
- }
- actions
- {
- disabled Create Dummy Bot(Hero(Roadhog), Team 2, -1, Payload Position, Closest Player To(Event Player, Team 1));
- Event Player.X = Empty Array;
- Event Player.X = Append To Array(Event Player.X, Payload Position + Left * 3 + Up * 3);
- Event Player.X = Append To Array(Event Player.X, Payload Position + Right * 3 + Up * 3);
- Event Player.X = Append To Array(Event Player.X, Payload Position + Forward * 3 + Up * 3);
- Event Player.X = Append To Array(Event Player.X, Payload Position + Backward * 3 + Up * 3);
- Teleport(Event Player, Random Value In Array(Event Player.X));
- Global.X += 1;
- disabled Disable Nameplates(All Players(Team 2), All Players(Team 1));
Start Forcing Dummy Bot Name(Event Player, Custom String("Zombie"));
- disabled Start Forcing Dummy Bot Name(Event Player, Custom String("Zombie"));
- }
- }
- rule("SPAWN ENEMIES ON PAYLOAD (WAITING)")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Has Spawned(Event Player) == True;
- Is Alive(Event Player) == True;
- Is In Setup == False;
- Is Game In Progress == False;
- }
- actions
- {
- disabled Create Dummy Bot(Hero(Roadhog), Team 2, -1, Payload Position, Closest Player To(Event Player, Team 1));
- Event Player.X = Empty Array;
- Event Player.X = Append To Array(Event Player.X, Payload Position + Left);
- Event Player.X = Append To Array(Event Player.X, Payload Position + Forward);
- Event Player.X = Append To Array(Event Player.X, Payload Position + Backward);
- Event Player.X = Append To Array(Event Player.X, Payload Position + Right);
- Event Player.X = Append To Array(Event Player.X, Payload Position + Forward + Right);
- Event Player.X = Append To Array(Event Player.X, Payload Position + Backward + Right);
- Event Player.X = Append To Array(Event Player.X, Payload Position + Forward + Left);
- Event Player.X = Append To Array(Event Player.X, Payload Position + Backward + Left);
- Teleport(Event Player, Random Value In Array(Event Player.X));
- Global.X += 1;
- disabled Disable Nameplates(All Players(Team 2), All Players(Team 1));
- Start Forcing Dummy Bot Name(Event Player, Custom String("Zombie"));
- }
- }
- rule("RoadHog SPAWN Counter")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- All;
- }
- actions
- {
- Create HUD Text(Event Player, String("{0}: {1}", String("{0} {1} {2}", Hero Icon String(Hero(Roadhog)), Custom String("ZOMBIE"),
- String("Total")), Global.X), Null, Null, Top, 0, Color(White), Color(White), Color(White), Visible To and String,
- Default Visibility);
- }
- }
- rule("Victory")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Match Time == 0;
- Is Game In Progress == True;
- }
- actions
- {
- Set Respawn Max Time(Event Player, 60);
- }
- }
- rule("Auto Heal")
- {
- event
- {
- Ongoing - Each Player;
- Team 1;
- All;
- }
- conditions
- {
- Has Spawned(Event Player) == True;
- Is Alive(Event Player) == True;
- }
- actions
- {
- Stop All Heal Over Time(Event Player);
- Start Heal Over Time(Event Player, Event Player, 9999, 10);
- }
- }
- disabled rule("Bot [Initialization]")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Start Facing(Event Player, Direction Towards(Event Player, Event Player.Enemy[1]), 1000, To World, Direction and Turn Rate);
- Event Player.GoalPosition[0] = False;
- Event Player.GoalPosition[1] = False;
- Event Player.GoalPosition[2] = False;
- Event Player.Enemy[0] = Null;
- Event Player.Enemy[2] = Empty Array;
- Modify Player Variable At Index(Event Player, Enemy, 2, Append To Array, Left);
- Modify Player Variable At Index(Event Player, Enemy, 2, Append To Array, Right);
- }
- }
- disabled rule("Bot [Type of heroes]")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- disabled Entity Exists(Event Player) == True;
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Event Player.GoalPosition[3] = 0;
- Skip If(Event Player != Players On Hero(Hero(Doomfist), Team 2) && Event Player != Players On Hero(Hero(Reaper), Team 2)
- && Event Player != Players On Hero(Hero(Genji), Team 2) && Event Player != Players On Hero(Hero(Tracer), Team 2)
- && Event Player != Players On Hero(Hero(Mei), Team 2) && Event Player != Players On Hero(Hero(Sombra), Team 2)
- && Event Player != Players On Hero(Hero(Symmetra), Team 2), 1);
- Event Player.GoalPosition[3] = 1;
- Skip If(Event Player != Players On Hero(Hero(Hanzo), Team 2) && Event Player != Players On Hero(Hero(Pharah), Team 2)
- && Event Player != Players On Hero(Hero(Widowmaker), Team 2), 1);
- Event Player.GoalPosition[3] = 2;
- Skip If(Event Player != Players On Hero(Hero(Lúcio), Team 2) && Event Player != Players On Hero(Hero(Mercy), Team 2)
- && Event Player != Players On Hero(Hero(Ana), Team 2) && Event Player != Players On Hero(Hero(Baptiste), Team 2)
- && Event Player != Players On Hero(Hero(Brigitte), Team 2) && Event Player != Players On Hero(Hero(Zenyatta), Team 2)
- && Event Player != Players On Hero(Hero(Moira), Team 2), 1);
- Event Player.GoalPosition[3] = 3;
- Skip If(Event Player != Players On Hero(Hero(D.Va), Team 2) && Event Player != Players On Hero(Hero(Orisa), Team 2)
- && Event Player != Players On Hero(Hero(Zarya), Team 2) && Event Player != Players On Hero(Hero(Winston), Team 2)
- && Event Player != Players On Hero(Hero(Wrecking Ball), Team 2) && Event Player != Players On Hero(Hero(Reinhardt), Team 2)
- && Event Player != Players On Hero(Hero(Sigma), Team 2) && Event Player != Players On Hero(Hero(Roadhog), Team 2), 1);
- Event Player.GoalPosition[3] = 4;
- }
- }
- disabled rule("Bot [Get the target or not]")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Alive(Event Player) == True;
- Event Player.GoalPosition[3] != 3;
- Is In Line of Sight(Event Player, Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Hero Of(
- Current Array Element) != Hero(Sombra) || Is Using Ability 1(Current Array Element) == False), Distance Between(Event Player,
- Current Array Element)), Barriers Do Not Block LOS) == True;
- Count Of(Filtered Array(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(Event Player,
- Current Array Element)), Hero Of(Current Array Element) != Hero(Sombra) || Is Using Ability 1(Current Array Element) == False))
- > 0;
- Number Of Living Players(Opposite Team Of(Team Of(Event Player))) > 0;
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Wait(0.250, Ignore Condition);
- Event Player.GoalPosition[0] = True;
- Event Player.Enemy[0] = Filtered Array(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(
- Event Player, Current Array Element)), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)
- == True && (Hero Of(Current Array Element) != Hero(Sombra) || Is Using Ability 1(Current Array Element) == False));
- Loop If Condition Is True;
- Event Player.GoalPosition[0] = False;
- Event Player.Enemy[0] = Filtered Array(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(
- Event Player, Current Array Element)), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)
- == False || Is Using Ability 1(Players On Hero(Hero(Sombra), Opposite Team Of(Team Of(Event Player)))));
- }
- }
- disabled rule("Bot [Face the target]")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dead(Event Player) == False;
- Event Player.GoalPosition[0] == True;
- disabled Global.HeroTable[0] == True;
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Skip If(Event Player.GoalPosition[0] == False, 6);
- Stop Chasing Player Variable(Event Player, IsLookEnemy);
- Event Player.IsLookEnemy = 0;
- Wait(0.250, Ignore Condition);
- Event Player.Enemy[1] = Position Of(Event Player.Enemy[0]);
- Loop If Condition Is True;
- Chase Player Variable At Rate(Event Player, IsLookEnemy, 5, 1, Destination and Rate);
- Wait(1, Ignore Condition);
- Skip If(Event Player.IsLookEnemy == 5, 1);
- Skip If(Distance Between(Event Player, Event Player.Enemy[1]) > 2, 1);
- Event Player.Enemy[1] = World Vector Of(Vector(Random Integer(150, 250), Random Integer(25, 50), Random Integer(-100, 0)),
- Event Player, Rotation);
- Loop If(Is Dead(Event Player) == False);
- }
- }
- disabled rule("Bot [Get hurts]")
- {
- event
- {
- Player Took Damage;
- Team 2;
- All;
- }
- conditions
- {
- Attacker == All Players(Team 1);
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Event Player.Z = Attacker;
- Event Player.GoalPosition[0] = True;
- Event Player.GoalPosition[1] = True;
- Wait(5, Ignore Condition);
- Event Player.GoalPosition[1] = False;
- }
- }
- disabled rule("Bot [Move]")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dead(Event Player) == False;
- Global.HeroTable[0] == True;
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Wait(0.250, Ignore Condition);
- Start Throttle In Direction(Event Player, Forward, 1, To Player, Replace existing throttle, Direction and Magnitude);
- Skip If(Distance Between(Event Player, Event Player.Enemy[1]) < 2, 4);
- disabled Skip If(Event Player.GoalPosition[3] == 1 || Event Player.GoalPosition[3] == 3 || Event Player.GoalPosition[3] == 4, 8);
- Skip If(Event Player.GoalPosition[2] == True && Event Player.GoalPosition[3] != 4, 4);
- Skip If(Event Player.GoalPosition[0] == True && (Event Player.GoalPosition[3] == 0 || Event Player.GoalPosition[3] == 2), 3);
- Skip If(Distance Between(Eye Position(Event Player), Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
- + Facing Direction Of(Event Player) * 2, All Players(All Teams), All Players(All Teams), False)) >= 2, 5);
- Start Throttle In Direction(Event Player, Backward, 1, To Player, Add to existing throttle, Direction and Magnitude);
- Wait(0.300, Ignore Condition);
- Event Player.Enemy[3] = Random Value In Array(Event Player.Enemy[2]);
- Start Throttle In Direction(Event Player, Event Player.Enemy[3], 1, To Player, Replace existing throttle, Direction and Magnitude);
- Wait(1, Ignore Condition);
- Loop If Condition Is True;
- Start Throttle In Direction(Event Player, Forward, 0, To Player, Replace existing throttle, Direction and Magnitude);
- }
- }
- disabled rule("Bot [Jump & crouch 1]")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dead(Event Player) == False;
- }
- actions
- {
- Skip If(Event Player.GoalPosition[2] == False || Event Player.GoalPosition[3] == 4, 3);
- Start Holding Button(Event Player, Button(Crouch));
- Wait(Random Real(0.050, 0.200), Ignore Condition);
- Stop Holding Button(Event Player, Button(Crouch));
- Skip If(Event Player != Players On Hero(Hero(Mercy), Team 2), 4);
- Skip If(Altitude Of(Event Player) >= 0.500, 1);
- Stop Holding Button(Event Player, Button(Jump));
- Skip If(Altitude Of(Event Player) < 0.500, 1);
- Start Holding Button(Event Player, Button(Jump));
- Skip If(Event Player != Players On Hero(Hero(Genji), Team 2), 5);
- Skip If(Distance Between(Eye Position(Event Player), Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
- + Facing Direction Of(Event Player) * 2, All Players(All Teams), All Players(All Teams), False)) >= 2, 1);
- Start Holding Button(Event Player, Button(Jump));
- Skip If(Distance Between(Eye Position(Event Player), Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
- + Facing Direction Of(Event Player) * 2, All Players(All Teams), All Players(All Teams), False)) < 2, 2);
- Stop Holding Button(Event Player, Button(Jump));
- Press Button(Event Player, Button(Jump));
- Skip If(Event Player != Players On Hero(Hero(Pharah), Team 2), 4);
- Skip If(Is Using Ability 1(Event Player) == True || Is On Ground(Event Player) == True, 3);
- Start Holding Button(Event Player, Button(Jump));
- Wait(0.500, Ignore Condition);
- Stop Holding Button(Event Player, Button(Jump));
- Skip If(Event Player != Players On Hero(Hero(Lúcio), Team 2), 5);
- Skip If(Is On Ground(Event Player) == False, 2);
- Stop Holding Button(Event Player, Button(Jump));
- Press Button(Event Player, Button(Jump));
- Skip If(Is On Wall(Event Player) == False, 1);
- Start Holding Button(Event Player, Button(Jump));
- Wait(0.250, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot [Jump & crouch 2]")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dead(Event Player) == False;
- }
- actions
- {
- Skip If(Is Button Held(Filtered Array(All Living Players(Team 2), Hero Of(Current Array Element) == Hero(Ana) || Hero Of(
- Current Array Element) == Hero(Ashe) || Hero Of(Current Array Element) == Hero(Widowmaker)), Button(Secondary Fire)) == True,
- 2);
- Skip If(Horizontal Speed Of(Event Player) > 5, 1);
- Press Button(Event Player, Button(Jump));
- Skip If(Event Player != Players On Hero(Hero(Hanzo), Team 2), 6);
- Skip If(Distance Between(Eye Position(Event Player), Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
- + Facing Direction Of(Event Player) * 2, All Players(All Teams), All Players(All Teams), False)) >= 2, 1);
- Start Holding Button(Event Player, Button(Jump));
- Skip If(Distance Between(Eye Position(Event Player), Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
- + Facing Direction Of(Event Player) * 2, All Players(All Teams), All Players(All Teams), False)) < 2, 1);
- Stop Holding Button(Event Player, Button(Jump));
- Skip If(Event Player.GoalPosition[2] == False, 1);
- Press Button(Event Player, Button(Jump));
- Skip If(Event Player != Players On Hero(Hero(Baptiste), Team 2), 4);
- Skip If(Is On Ground(Event Player) == False, 1);
- Start Holding Button(Event Player, Button(Crouch));
- Skip If(Event Player.GoalPosition[2] == False, 1);
- Press Button(Event Player, Button(Jump));
- Wait(0.250, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot attack [Roadhog]")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- Roadhog;
- }
- conditions
- {
- Is Dead(Event Player) == False;
- Event Player.GoalPosition[0] == True;
- Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player) * 100, All Players(
- Opposite Team Of(Team Of(Event Player))), Event Player, True) == True;
- Has Status(Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player) * 100,
- All Players(Opposite Team Of(Team Of(Event Player))), Event Player, False), Asleep) == False;
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Wait(0.250, Ignore Condition);
- Skip If(Distance Between(Event Player, Event Player.Enemy[1]) > 6, 1);
- Press Button(Event Player, Button(Primary Fire));
- Skip If(Distance Between(Event Player, Event Player.Enemy[1]) <= 6 || Distance Between(Event Player, Event Player.Enemy[1]) > 20,
- 1);
- Press Button(Event Player, Button(Secondary Fire));
- Skip If(Distance Between(Event Player, Event Player.Enemy[1]) > 18, 1);
- Press Button(Event Player, Button(Ability 1));
- Skip If(Normalized Health(Event Player) > 0.700, 1);
- Press Button(Event Player, Button(Ability 2));
- Skip If(Distance Between(Event Player, Event Player.Enemy[1]) > 15 || Ultimate Charge Percent(Event Player) < 100, 1);
- Press Button(Event Player, Button(Ultimate));
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot [Attack Move]")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dead(Event Player) == False;
- Slot Of(Event Player) != 1;
- }
- actions
- {
- Skip If(Event Player.GoalPosition[1] == True, 2);
- Skip If(Distance Between(Event Player, Payload Position) < 3, 1);
- Start Throttle In Direction(Event Player, Direction Towards(Event Player, Payload Position), 1, To World,
- Replace existing throttle, Direction and Magnitude);
- Skip If(Event Player.GoalPosition[1] == False, 1);
- Start Throttle In Direction(Event Player, Direction Towards(Event Player, Position Of(Event Player.Z)), 2, To World,
- Replace existing throttle, Direction and Magnitude);
- Wait(0.250, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot [Payload Move]")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dead(Event Player) == False;
- Slot Of(Event Player) == 1;
- }
- actions
- {
- Start Throttle In Direction(Event Player, Direction Towards(Event Player, Nearest Walkable Position(Payload Position)), 1,
- To World, Replace existing throttle, Direction and Magnitude);
- Wait(1, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("Debug")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.DebugFlag == True;
- }
- actions
- {
- Create HUD Text(All Players(All Teams), Null, Null, String("{0}: {1}", Custom String("Server Load"), String("{0}%",
- Server Load / 255 * 100)), Left, 1, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
- Create HUD Text(All Players(All Teams), Null, Null, String("{0}: {1}", Custom String("Server Load (Avg)"), String("{0}%",
- Server Load Average / 255 * 100)), Left, 2, Color(White), Color(White), Color(White), Visible To and String,
- Default Visibility);
- If(Global.Difficulty == 0);
- Create HUD Text(All Players(All Teams), Null, Null, Custom String("Difficulty: Normal"), Left, 3, Color(White), Color(White),
- Color(White), Visible To and String, Default Visibility);
- Else If(Global.Difficulty == 1);
- Create HUD Text(All Players(All Teams), Null, Null, Custom String("Difficulty: Hard"), Left, 3, Color(White), Color(White), Color(
- White), Visible To and String, Default Visibility);
- Else;
- Create HUD Text(All Players(All Teams), Null, Null, Custom String("Difficulty: Legendary"), Left, 3, Color(White), Color(White),
- Color(White), Visible To and String, Default Visibility);
- End;
- }
- }
- rule("SetHeroTable")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
- disabled Global.HeroTable = Empty Array;
- disabled Global.HeroTable = Append To Array(Global.HeroTable, Hero(Widowmaker));
- Global.HeroTable = Randomized Array(All Heroes);
- }
- }
- rule("SetCustomBattleRange(Default 15m)")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
- Global.Range_Hero = Empty Array;
- Global.Range_Value = Empty Array;
- Global.Range_Hero = Append To Array(Global.Range_Hero, Hero(Brigitte));
- Global.Range_Value = Append To Array(Global.Range_Value, 3);
- Global.Range_Hero = Append To Array(Global.Range_Hero, Hero(D.Va));
- Global.Range_Value = Append To Array(Global.Range_Value, 8);
- Global.Range_Hero = Append To Array(Global.Range_Hero, Hero(Doomfist));
- Global.Range_Value = Append To Array(Global.Range_Value, 5);
- Global.Range_Hero = Append To Array(Global.Range_Hero, Hero(Genji));
- Global.Range_Value = Append To Array(Global.Range_Value, 4);
- Global.Range_Hero = Append To Array(Global.Range_Hero, Hero(Mei));
- Global.Range_Value = Append To Array(Global.Range_Value, 6);
- Global.Range_Hero = Append To Array(Global.Range_Hero, Hero(Moira));
- Global.Range_Value = Append To Array(Global.Range_Value, 10);
- Global.Range_Hero = Append To Array(Global.Range_Hero, Hero(Reaper));
- Global.Range_Value = Append To Array(Global.Range_Value, 4);
- Global.Range_Hero = Append To Array(Global.Range_Hero, Hero(Reinhardt));
- Global.Range_Value = Append To Array(Global.Range_Value, 2);
- Global.Range_Hero = Append To Array(Global.Range_Hero, Hero(Roadhog));
- Global.Range_Value = Append To Array(Global.Range_Value, 6);
- Global.Range_Hero = Append To Array(Global.Range_Hero, Hero(Sombra));
- Global.Range_Value = Append To Array(Global.Range_Value, 10);
- Global.Range_Hero = Append To Array(Global.Range_Hero, Hero(Symmetra));
- Global.Range_Value = Append To Array(Global.Range_Value, 8);
- Global.Range_Hero = Append To Array(Global.Range_Hero, Hero(Tracer));
- Global.Range_Value = Append To Array(Global.Range_Value, 7);
- Global.Range_Hero = Append To Array(Global.Range_Hero, Hero(Winston));
- Global.Range_Value = Append To Array(Global.Range_Value, 5);
- Global.Range_Hero = Append To Array(Global.Range_Hero, Hero(Zarya));
- Global.Range_Value = Append To Array(Global.Range_Value, 6);
- }
- }
- rule("Bot: InitializeCommon")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Event Player.GoalPosition = Null;
- Event Player.FarPositions = Empty Array;
- }
- }
- rule("Bot: SetBattleRange")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Event Player.BattleRange = 5;
- Event Player.temp = Index Of Array Value(Global.Range_Hero, Hero Of(Event Player));
- Abort If(Event Player.temp < 0);
- Event Player.BattleRange = Global.Range_Value[Event Player.temp];
- }
- }
- rule("Bot: SetAimShake: [0]=DelayX, [1]=DelayY, [2]=DelayTotal")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Event Player.AimShakeDelays = Empty Array;
- Event Player.AimShakeDelays[0] = Random Real(0, 1);
- Event Player.AimShakeDelays[1] = Random Real(0, 1);
- Event Player.AimShakeDelays[2] = Random Real(0, 1);
- }
- }
- disabled rule("Bot: AddFarPosition")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Dead(Event Player) == False;
- Event Player.GoalPosition == Null;
- Event Player.Enemy == Null;
- }
- actions
- {
- Event Player.temp = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Direction From Angles(
- Horizontal Angle From Direction(Direction Towards(Eye Position(Event Player), Eye Position(Event Player.WalkTargetPlayer)))
- + Random Real(-120, 120), 0) * 12, Null, Event Player, False);
- Event Player.temp = Eye Position(Event Player) + Vector Towards(Eye Position(Event Player), Event Player.temp) * 0.900;
- Event Player.FarPositions = Append To Array(Event Player.FarPositions, Nearest Walkable Position(Event Player.temp));
- Wait(0.250, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("Bot: SetGoal(FreeWalk)")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Dead(Event Player) == False;
- Event Player.GoalPosition == Null;
- disabled Count Of(Event Player.FarPositions) > 6;
- Event Player.Enemy == Null;
- }
- actions
- {
- disabled Event Player.temp = Last Of(Sorted Array(Event Player.FarPositions, Distance Between(Eye Position(Event Player),
- Current Array Element)));
- disabled Event Player.GoalPosition = Event Player.temp;
- Event Player.GoalPosition = Nearest Walkable Position(Payload Position);
- Event Player.FarPositions = Empty Array;
- Event Player.IsBattleWalk = False;
- Wait(0.250, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("Bot: SetGoal(KeepBattleRange)")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Dead(Event Player) == False;
- Event Player.GoalPosition == Null;
- Event Player.Enemy != Null;
- }
- actions
- {
- Event Player.temp = Eye Position(Event Player.Enemy) + Normalize(Direction Towards(Eye Position(Event Player.Enemy), Eye Position(
- Event Player)) * Event Player.BattleRange + Direction From Angles(Random Real(0, 360), 0) * 4) * Event Player.BattleRange;
- Event Player.temp = Nearest Walkable Position(Ray Cast Hit Position(Eye Position(Event Player), Event Player.temp, Null,
- Event Player, False));
- disabled Skip If(Distance Between(Event Player, Payload Position) < 3, 1);
- disabled Event Player.temp = Nearest Walkable Position(Payload Position);
- Event Player.GoalPosition = Event Player.temp;
- Event Player.FarPositions = Empty Array;
- Event Player.IsBattleWalk = True;
- Wait(0.250, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: SetFreewalkRandomPlayer")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Event Player.WalkTargetPlayer = First Of(Random Value In Array(Filtered Array(All Players(All Teams), !Is Dead(
- Current Array Element) && Is Alive(Current Array Element))));
- Wait(2, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("Bot: OnHitWall: ClearWalkGoal")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Dead(Event Player) == False;
- Event Player.GoalPosition != Null;
- disabled Is In Line of Sight(Eye Position(Event Player), Event Player.GoalPosition, Barriers Do Not Block LOS) == False;
- Is True For Any(All Players(Team 1), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)) == False;
- Distance Between(Event Player, Payload Position) >= 15;
- Is In Setup == False;
- }
- actions
- {
- Event Player.X = Empty Array;
- Event Player.X = Append To Array(Event Player.X, Payload Position + Left * 3 + Up * 3);
- Event Player.X = Append To Array(Event Player.X, Payload Position + Right * 3 + Up * 3);
- Event Player.X = Append To Array(Event Player.X, Payload Position + Forward * 3 + Up * 3);
- Event Player.X = Append To Array(Event Player.X, Payload Position + Backward * 3 + Up * 3);
- Wait(3, Abort When False);
- Teleport(Event Player, Random Value In Array(Event Player.X));
- Event Player.GoalPosition = Null;
- disabled Wait(1, Ignore Condition);
- disabled Loop If Condition Is True;
- }
- }
- rule("Bot: StopFreeWalk")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Dead(Event Player) == False;
- Event Player.Enemy != Null;
- Event Player.IsBattleWalk == False;
- }
- actions
- {
- Event Player.GoalPosition = Null;
- Wait(1, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("Bot: ResetGoal")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Event Player.GoalPosition = Null;
- Wait(8, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("Bot: WalkToGoal")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Dead(Event Player) == False;
- Event Player.GoalPosition != Null;
- }
- actions
- {
- Start Throttle In Direction(Event Player, Direction Towards(Position Of(Event Player), Event Player.GoalPosition), Min(1,
- Distance Between(Position Of(Event Player), Event Player.GoalPosition)), To World, Replace existing throttle,
- Direction and Magnitude);
- Wait(1, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("Bot: OnReachWalkGoal: ClearWalkGoal")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Dead(Event Player) == False;
- Event Player.GoalPosition != Null;
- Distance Between(Vector(X Component Of(Eye Position(Event Player)), 0, Z Component Of(Eye Position(Event Player))), Vector(
- X Component Of(Event Player.GoalPosition), 0, Z Component Of(Event Player.GoalPosition))) < 2;
- }
- actions
- {
- Event Player.GoalPosition = Null;
- Wait(0.250, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("Bot: SetEnemy")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Dead(Event Player) == False;
- Count Of(Filtered Array(All Players(Opposite Team Of(Team Of(Event Player))), !Is Dead(Current Array Element))) > 0;
- }
- actions
- {
- Event Player.temp = First Of(Sorted Array(Filtered Array(All Players(Opposite Team Of(Team Of(Event Player))), Is In Line of Sight(
- Eye Position(Event Player), Eye Position(Current Array Element), Barriers Do Not Block LOS)
- && Current Array Element != Event Player && (Hero Of(Current Array Element) != Hero(Sombra) || !Is Using Ability 1(
Current Array Element)) && !Is Dead(Current Array Element)), Distance Between(Position Of(Event Player), Position Of(
- Current Array Element)) && !Is Dead(Current Array Element) && Has Spawned(Current Array Element)), Distance Between(
- Position Of(Event Player), Position Of(Current Array Element))));
- disabled Event Player.temp = First Of(Sorted Array(Filtered Array(All Players(Opposite Team Of(Team Of(Event Player))), Is In Line of Sight(
- Eye Position(Event Player), Eye Position(Current Array Element), Barriers Do Not Block LOS)
- && Current Array Element != Event Player && (Hero Of(Current Array Element) != Hero(Sombra) || !Is Using Ability 1(
- Current Array Element)) && !Has Spawned(Current Array Element)), Distance Between(Position Of(Event Player), Position Of(
- Current Array Element))));
- Event Player.Enemy = Event Player.temp;
- Wait(1, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("Bot: LookToWaypoint")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Dead(Event Player) == False;
- Event Player.Enemy == Null;
- Event Player.GoalPosition != Null;
- (Has Status(Event Player, Knocked Down) || Has Status(Event Player, Asleep) || Has Status(Event Player, Frozen) || Has Status(
- Event Player, Stunned)) == False;
- }
- actions
- {
- Start Facing(Event Player, Direction Towards(Eye Position(Event Player), Vector(X Component Of(Event Player.GoalPosition),
- Y Component Of(Eye Position(Event Player)), Z Component Of(Event Player.GoalPosition))), 220, To World,
- Direction and Turn Rate);
- Wait(1, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("Bot: LookToEnemy")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Dead(Event Player) == False;
- Event Player.Enemy != Null;
- (Has Status(Event Player, Knocked Down) || Has Status(Event Player, Asleep) || Has Status(Event Player, Frozen) || Has Status(
- Event Player, Stunned)) == False;
- }
- actions
- {
- Start Facing(Event Player, Direction From Angles(Horizontal Angle From Direction(Vector Towards(Eye Position(Event Player),
- Position Of(Event Player.Enemy) + Vector Towards(Position Of(Event Player.Enemy), Eye Position(Event Player.Enemy)) * 0.750))
- + Sine From Degrees(360 * (Total Time Elapsed + Event Player.AimShakeDelays[0]) * 1.250) * 4 * Sine From Degrees(360 * (
- Total Time Elapsed + Event Player.AimShakeDelays[2]) * 0.500), Vertical Angle From Direction(Vector Towards(Eye Position(
- Event Player), Position Of(Event Player.Enemy) + Vector Towards(Position Of(Event Player.Enemy), Eye Position(
- Event Player.Enemy)) * 0.750)) + Sine From Degrees(360 * (Total Time Elapsed + Event Player.AimShakeDelays[1]) * 1.250)
- * 4 * Sine From Degrees(360 * (Total Time Elapsed + Event Player.AimShakeDelays[2]) * 0.500)), 220, To World,
- Direction and Turn Rate);
- Wait(1, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("Bot: StopLook")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Dead(Event Player) == False;
- Event Player.Enemy == Null;
- Event Player.GoalPosition == Null;
- }
- actions
- {
- Stop Facing(Event Player);
- Wait(1, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("Bot: OnStun: StopLook")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(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);
- Wait(1, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("Bot: CheckLookEnemy")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Alive(Event Player.Enemy) == True;
- }
- actions
- {
- Event Player.IsLookEnemy = Angle Between Vectors(Facing Direction Of(Event Player), Direction Towards(Eye Position(Event Player),
- Eye Position(Event Player.Enemy))) < 30 && Is In Line of Sight(Eye Position(Event Player), Eye Position(Event Player.Enemy),
- Barriers Do Not Block LOS);
- Wait(0.250, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("Bot: OnDeadEnemy: ClearEnemy")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.Enemy != Null;
- Is Dead(Event Player.Enemy) == True;
- }
- actions
- {
- Event Player.GoalPosition = Null;
- Event Player.Enemy = Null;
- Event Player.IsLookEnemy = False;
- Stop Facing(Event Player);
- }
- }
- disabled rule("Bot: Jump")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Press Button(Event Player, Button(Jump));
- Wait(Random Real(4, 8), Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("Bot: Fire")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
Is Button Held(Event Player, Button(Primary Fire)) == False;
Hero Of(Event Player) != Hero(Ana);
Hero Of(Event Player) != Hero(Ashe);
Hero Of(Event Player) != Hero(Brigitte);
Hero Of(Event Player) != Hero(Doomfist);
Hero Of(Event Player) != Hero(Hanzo);
Hero Of(Event Player) != Hero(Moira);
Hero Of(Event Player) != Hero(Reinhardt);
Hero Of(Event Player) != Hero(Widowmaker);
- disabled Is Button Held(Event Player, Button(Primary Fire)) == False;
- disabled Hero Of(Event Player) != Hero(Ana);
- disabled Hero Of(Event Player) != Hero(Ashe);
- disabled Hero Of(Event Player) != Hero(Brigitte);
- disabled Hero Of(Event Player) != Hero(Doomfist);
- disabled Hero Of(Event Player) != Hero(Hanzo);
- disabled Hero Of(Event Player) != Hero(Moira);
- disabled Hero Of(Event Player) != Hero(Reinhardt);
- disabled Hero Of(Event Player) != Hero(Widowmaker);
- }
- actions
- {
Start Holding Button(Event Player, Button(Primary Fire));
Wait(0.500, Ignore Condition);
- Skip If(Distance Between(Event Player, Event Player.Enemy) > 7, 1);
- Press Button(Event Player, Button(Primary Fire));
- Skip If(Distance Between(Event Player, Event Player.Enemy) <= 7 || Distance Between(Event Player, Event Player.Enemy) > 20, 1);
- Press Button(Event Player, Button(Secondary Fire));
- Wait(0.250, Ignore Condition);
- disabled Start Holding Button(Event Player, Button(Primary Fire));
- Loop If Condition Is True;
- }
- }
rule("Bot: StopFire")
- disabled rule("Bot: StopFire")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == False;
- Hero Of(Event Player) != Hero(Doomfist);
- }
- actions
- {
- Stop Holding Button(Event Player, Button(Primary Fire));
- Stop Holding Button(Event Player, Button(Secondary Fire));
- Wait(1, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Ability")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- Hero Of(Event Player) != Hero(Ashe);
- Hero Of(Event Player) != Hero(Bastion);
- Hero Of(Event Player) != Hero(Doomfist);
- Hero Of(Event Player) != Hero(Torbjörn);
- Hero Of(Event Player) != Hero(Symmetra);
- Hero Of(Event Player) != Hero(Tracer);
- Hero Of(Event Player) != Hero(Widowmaker);
- Hero Of(Event Player) != Hero(Wrecking Ball);
- }
- actions
- {
- Press Button(Event Player, Button(Ability 1));
- Press Button(Event Player, Button(Ability 2));
- Wait(Random Real(3, 5), Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("Bot: Ult")
- {
- event
- {
- Ongoing - Each Player;
- Team 2;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- Ultimate Charge Percent(Event Player) == 100;
- Normalized Health(Event Player) > 0.500;
- }
- actions
- {
- Press Button(Event Player, Button(Ultimate));
- Wait(1, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Sniper: AimStart")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is Button Held(Event Player, Button(Secondary Fire)) == False;
- Array Contains(Global.SniperHeroes, Hero Of(Event Player)) == True;
- Event Player.IsLookEnemy == True;
- Distance Between(Position Of(Event Player), Position Of(Event Player.Enemy)) > 10;
- }
- actions
- {
- Start Holding Button(Event Player, Button(Secondary Fire));
- Wait(0.500, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Sniper: AimStop")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Array Contains(Global.SniperHeroes, Hero Of(Event Player)) == True;
- (!Event Player.IsLookEnemy || Distance Between(Position Of(Event Player), Position Of(Event Player.Enemy)) <= 10) == True;
- }
- actions
- {
- Stop Holding Button(Event Player, Button(Secondary Fire));
- Wait(0.500, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Ana: Fire")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Ana;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- }
- actions
- {
- Press Button(Event Player, Button(Primary Fire));
- Wait(0.250, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Ashe: Fire")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Ashe;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- }
- actions
- {
- Press Button(Event Player, Button(Primary Fire));
- Wait(0.250, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Ashe: Ability1")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Ashe;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- Distance Between(Position Of(Event Player), Position Of(Event Player.Enemy)) < 10;
- }
- actions
- {
- Press Button(Event Player, Button(Ability 1));
- Wait(4, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Ashe: Ability2")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Ashe;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- Distance Between(Position Of(Event Player), Position Of(Event Player.Enemy)) > 10;
- }
- actions
- {
- Press Button(Event Player, Button(Ability 2));
- Wait(4, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Bastion: Ability1")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Bastion;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == False;
- }
- actions
- {
- Press Button(Event Player, Button(Ability 1));
- Wait(Random Real(4, 8), Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Brigitte: Barrier")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Brigitte;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- Distance Between(Position Of(Event Player), Position Of(Event Player.Enemy)) > 6;
- }
- actions
- {
- Stop Holding Button(Event Player, Button(Primary Fire));
- Skip If(Is Button Held(Event Player, Button(Secondary Fire)), 1);
- Start Holding Button(Event Player, Button(Secondary Fire));
- Wait(0.250, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Brigitte: Atttack")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Brigitte;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- Distance Between(Position Of(Event Player), Position Of(Event Player.Enemy)) < 6;
- }
- actions
- {
- Start Holding Button(Event Player, Button(Primary Fire));
- Wait(0.100, Ignore Condition);
- Stop Holding Button(Event Player, Button(Secondary Fire));
- Wait(0.250, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: DoomFist: Fire")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Doomfist;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- Is Firing Secondary(Event Player) == False;
- }
- actions
- {
- Press Button(Event Player, Button(Primary Fire));
- Wait(0.250, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Doomfist: Punch")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Doomfist;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- Is Firing Primary(Event Player) == False;
- Is Using Ability 1(Event Player) == False;
- Is Using Ability 2(Event Player) == False;
- Is Using Ultimate(Event Player) == False;
- Absolute Value(Y Component Of(Position Of(Event Player)) - Y Component Of(Position Of(Event Player.Enemy))) < 1;
- Distance Between(Position Of(Event Player), Position Of(Event Player.Enemy)) < 15;
- }
- actions
- {
- Start Holding Button(Event Player, Button(Secondary Fire));
- Wait(Random Real(0.750, 1), Ignore Condition);
- Stop Holding Button(Event Player, Button(Secondary Fire));
- Wait(4.200, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: DoomFist: Ability1")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Doomfist;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- Is Firing Secondary(Event Player) == False;
- Distance Between(Vector(X Component Of(Position Of(Event Player)), 0, Z Component Of(Position Of(Event Player))), Vector(
- X Component Of(Position Of(Event Player.Enemy)), 0, Z Component Of(Position Of(Event Player.Enemy)))) < 4;
- Y Component Of(Position Of(Event Player.Enemy)) > Position Of(Event Player) + Down * 1;
- }
- actions
- {
- Wait(0.100, Ignore Condition);
- Press Button(Event Player, Button(Ability 1));
- Wait(0.250, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: DoomFist: Ability2")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Doomfist;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- Is Firing Secondary(Event Player) == False;
- Distance Between(Position Of(Event Player), Position Of(Event Player.Enemy)) > 4;
- }
- actions
- {
- Wait(0.250, Ignore Condition);
- Press Button(Event Player, Button(Ability 2));
- Wait(0.250, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Hanzo: Fire")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Hanzo;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- }
- actions
- {
- Start Holding Button(Event Player, Button(Primary Fire));
- Wait(Random Real(0.800, 1.500), Ignore Condition);
- Stop Holding Button(Event Player, Button(Primary Fire));
- Wait(0.100, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Hanzo: Jump")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Hanzo;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- Distance Between(Position Of(Event Player), Position Of(Event Player.Enemy)) < 10;
- }
- actions
- {
- Press Button(Event Player, Button(Jump));
- Wait(0.250, Ignore Condition);
- Press Button(Event Player, Button(Jump));
- Wait(6, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Junkrat: Fire2")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Junkrat;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- }
- actions
- {
- Press Button(Event Player, Button(Secondary Fire));
- Wait(1, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Lucio: Fire2")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Lúcio;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- Distance Between(Position Of(Event Player), Position Of(Event Player.Enemy)) < 6;
- }
- actions
- {
- Press Button(Event Player, Button(Secondary Fire));
- Wait(1, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Moira: Fire")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Moira;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- }
- actions
- {
- Start Holding Button(Event Player, Button(Secondary Fire));
- Wait(0.500, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Pharah: Jump")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Pharah;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Is In Line of Sight(Eye Position(Event Player), Position Of(Event Player) + Down * 2, Barriers Do Not Block LOS) == True;
- }
- actions
- {
- Start Holding Button(Event Player, Button(Jump));
- Wait(0.500, Ignore Condition);
- Stop Holding Button(Event Player, Button(Jump));
- Wait(0.400, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Reinhardt: Barrier")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Reinhardt;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- Distance Between(Position Of(Event Player), Position Of(Event Player.Enemy)) > 6;
- }
- actions
- {
- Stop Holding Button(Event Player, Button(Primary Fire));
- Skip If(Is Button Held(Event Player, Button(Secondary Fire)), 1);
- Start Holding Button(Event Player, Button(Secondary Fire));
- Wait(1, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Reinhardt: Atttack")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Reinhardt;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- Distance Between(Position Of(Event Player), Position Of(Event Player.Enemy)) < 6;
- }
- actions
- {
- Start Holding Button(Event Player, Button(Primary Fire));
- Stop Holding Button(Event Player, Button(Secondary Fire));
- Wait(0.250, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Sigma: Barrier")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Sigma;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- }
- actions
- {
- Start Holding Button(Event Player, Button(Secondary Fire));
- Wait(0.750, Ignore Condition);
- Stop Holding Button(Event Player, Button(Secondary Fire));
- Wait(3, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Soldier76: Fire2")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Soldier: 76;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- }
- actions
- {
- Press Button(Event Player, Button(Secondary Fire));
- Wait(3, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Tracer: Ability1")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Tracer;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- }
- actions
- {
- Press Button(Event Player, Button(Ability 1));
- Wait(Random Real(0.300, 0.800), Ignore Condition);
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Tracer: Ability2")
- {
- event
- {
- Player Took Damage;
- All;
- Tracer;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Normalized Health(Event Player) < 0.700;
- }
- actions
- {
- Press Button(Event Player, Button(Ability 2));
- }
- }
- disabled rule("Bot: Widowmaker: Fire")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Widowmaker;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Event Player.IsLookEnemy == True;
- }
- actions
- {
- Wait(0.100, Ignore Condition);
- Start Holding Button(Event Player, Button(Primary Fire));
- Wait(Random Real(1, 1.500), Ignore Condition);
- Stop Holding Button(Event Player, Button(Primary Fire));
- Loop If Condition Is True;
- }
- }
- disabled rule("Bot: Wreckingball: Ability2")
- {
- event
- {
- Player Took Damage;
- All;
- Wrecking Ball;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Press Button(Event Player, Button(Ability 2));
- }
- }