Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "Pharah 1on1 Practice Tool v3.0 by Seita"
  • }
  • lobby
  • {
  • Allow Players Who Are In Queue: Yes
  • Match Voice Chat: Enabled
  • Max Spectators: 12
  • Max Team 1 Players: 1
  • Max Team 2 Players: 1
  • }
  • modes
  • {
  • Assault
  • {
  • enabled maps
  • {
  • }
  • }
  • Control
  • {
  • Limit Valid Control Points: First
  • enabled maps
  • {
  • }
  • }
  • Deathmatch
  • {
  • enabled maps
  • {
  • }
  • }
  • Escort
  • {
  • enabled maps
  • {
  • }
  • }
  • Hybrid
  • {
  • enabled maps
  • {
  • }
  • }
  • Skirmish
  • {
  • enabled maps
  • {
  • Workshop Chamber
  • }
  • }
  • General
  • {
  • Game Mode Start: Manual
  • Hero Limit: Off
  • Kill Cam: Off
  • Spawn Health Packs: Disabled
  • }
  • }
  • heroes
  • {
  • General
  • {
  • Pharah
  • {
  • Ultimate Ability Barrage: Off
  • }
  • }
  • }
  • }
  • variables
  • {
  • global:
  • 0: BotSpawn
  • 1: PlayerSpawn
  • 2: PathLoc
  • 3: RocketLandHelper
  • 4: RocketLandPos
  • 5: RangeProfile
  • 9: BotFacing
  • 10: Center
  • 11: BotShoot
  • 12: NextRound
  • 13: Team1Dmg
  • 14: Team2Dmg
  • 15: BotPathing
  • 17: RocketBotPos
  • 18: BotUsingFuel
  • 22: BotScore
  • 23: PlayerScore
  • 28: Dodge1
  • 29: Dodge2
  • 33: PathDirection
  • 34: PathOld
  • 35: PathHelper
  • 37: RocketPlayerPos
  • 43: BotFlying
  • 44: StartingJump
  • 49: BackDamage
  • player:
  • 2: Hud2
  • 3: ConcRandomizer
  • 4: PlayerPosition
  • 6: Hero
  • 7: JumpJetCD
  • 8: Active
  • 9: Hud4
  • 10: InteractCooldown
  • 11: NotBot
  • 12: Hud1
  • 13: Hud3
  • 14: ShootHelper
  • 15: Hud5
  • 22: BotPlayerDistance
  • }
  • subroutines
  • {
  • 1: ShootNormal
  • 2: ResetGlobals
  • 5: DodgeRocket
  • }
  • rule("Pharah 1on1 Practice Tool by Seita")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Slot 0;
  • }
  • actions
  • {
  • Disable Inspector Recording;
  • Event Player.Hud1 = -1;
  • Event Player.Hud2 = -1;
  • Event Player.Hud3 = -1;
  • Event Player.Hud4 = -1;
  • Event Player.Hud5 = -1;
  • }
  • }
  • rule("Mercy Pocket: Full HP, Stop Healing & Damage Boost")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Health(Event Player) == 200;
  • Hero Of(Event Player) == Hero(Pharah);
  • }
  • actions
  • {
  • Stop All Heal Over Time(Event Player);
  • Set Damage Dealt(Event Player, 130);
  • }
  • }
  • rule("Mercy Pocket: 0.5s After taking Damage, Start Healing 50 hp/s & Damage Boost Off")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Health(Event Player) < 200;
  • Hero Of(Event Player) == Hero(Pharah);
  • }
  • actions
  • {
  • Wait(0.500, Ignore Condition);
  • Start Heal Over Time(Event Player, Null, 9999, 50);
  • Set Damage Dealt(Event Player, 100);
  • }
  • }
  • disabled rule("Game mode:")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Locations")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.BotSpawn = Vector(-17, 0.500, 0);
  • Global.PlayerSpawn = Vector(17, 0.500, 0);
  • Global.PathLoc = Vector(-15, 1, -15);
  • Modify Global Variable(PathLoc, Append To Array, Vector(0, 1, -15));
  • Modify Global Variable(PathLoc, Append To Array, Vector(15, 1, -15));
  • Modify Global Variable(PathLoc, Append To Array, Vector(15, 1, 0));
  • Modify Global Variable(PathLoc, Append To Array, Vector(15, 1, 15));
  • Modify Global Variable(PathLoc, Append To Array, Vector(0, 1, 15));
  • Modify Global Variable(PathLoc, Append To Array, Vector(-15, 1, 15));
  • Modify Global Variable(PathLoc, Append To Array, Vector(-15, 1, 0));
  • Global.PathHelper = 0;
  • Modify Global Variable(PathHelper, Append To Array, 1);
  • Modify Global Variable(PathHelper, Append To Array, 2);
  • Modify Global Variable(PathHelper, Append To Array, 3);
  • Modify Global Variable(PathHelper, Append To Array, 4);
  • Modify Global Variable(PathHelper, Append To Array, 5);
  • Modify Global Variable(PathHelper, Append To Array, 6);
  • Modify Global Variable(PathHelper, Append To Array, 7);
  • Global.Center = Vector(0, 1, 0);
  • Pause Match Time;
  • Set Match Time(1220);
  • }
  • }
  • rule("Not Bot")
  • {
  • event
  • {
  • Player Joined Match;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.NotBot = 1;
  • }
  • }
  • rule("Game starts (2 players)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Slot 0;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Event Player.Active == 1;
  • Players In Slot(0, Team 2).NotBot == 1;
  • }
  • actions
  • {
  • Call Subroutine(ResetGlobals);
  • Event Player.Hero = Hero Of(Event Player);
  • Start Forcing Player To Be Hero(Event Player, Hero(Symmetra));
  • Start Forcing Player To Be Hero(Event Player, Event Player.Hero);
  • Respawn(Event Player);
  • Players In Slot(0, Team 2).Hero = Hero Of(Players In Slot(0, Team 2));
  • Start Forcing Player To Be Hero(Players In Slot(0, Team 2), Hero(Symmetra));
  • Start Forcing Player To Be Hero(Players In Slot(0, Team 2), Players In Slot(0, Team 2).Hero);
  • Respawn(Players In Slot(0, Team 2));
  • Wait(0.050, Ignore Condition);
  • Teleport(Event Player, Global.PlayerSpawn);
  • Teleport(Players In Slot(0, Team 2), Global.BotSpawn);
  • Set Facing(Event Player, Local Vector Of(Global.BotSpawn, Event Player, Rotation And Translation), To Player);
  • Set Facing(Players In Slot(0, Team 2), Local Vector Of(Global.PlayerSpawn, Players In Slot(0, Team 2), Rotation And Translation),
  • To Player);
  • Stop Forcing Player To Be Hero(All Players(All Teams));
  • }
  • }
  • rule("Next Round (2 players)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Slot 0;
  • }
  • conditions
  • {
  • Event Player.Active == 1;
  • Global.NextRound == 1;
  • Players In Slot(0, Team 2).NotBot == 1;
  • }
  • actions
  • {
  • Call Subroutine(ResetGlobals);
  • Event Player.Hero = Hero Of(Event Player);
  • Start Forcing Player To Be Hero(Event Player, Hero(Symmetra));
  • Start Forcing Player To Be Hero(Event Player, Event Player.Hero);
  • Respawn(Event Player);
  • Players In Slot(0, Team 2).Hero = Hero Of(Players In Slot(0, Team 2));
  • Start Forcing Player To Be Hero(Players In Slot(0, Team 2), Hero(Symmetra));
  • Start Forcing Player To Be Hero(Players In Slot(0, Team 2), Players In Slot(0, Team 2).Hero);
  • Respawn(Players In Slot(0, Team 2));
  • Wait(0.050, Ignore Condition);
  • Teleport(Event Player, Global.PlayerSpawn);
  • Teleport(Players In Slot(0, Team 2), Global.BotSpawn);
  • Set Facing(Event Player, Local Vector Of(Global.BotSpawn, Event Player, Rotation And Translation), To Player);
  • Set Facing(Players In Slot(0, Team 2), Local Vector Of(Global.PlayerSpawn, Players In Slot(0, Team 2), Rotation And Translation),
  • To Player);
  • Global.NextRound = 0;
  • Stop Forcing Player To Be Hero(All Players(All Teams));
  • }
  • }
  • rule("Game starts (Bot)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Slot 0;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Event Player.Active == 1;
  • Players In Slot(0, Team 2).NotBot != 1;
  • }
  • actions
  • {
  • Call Subroutine(ResetGlobals);
  • Event Player.Hero = Hero Of(Event Player);
  • Start Forcing Player To Be Hero(Event Player, Hero(Symmetra));
  • Start Forcing Player To Be Hero(Event Player, Event Player.Hero);
  • Respawn(Event Player);
  • Wait(0.050, Ignore Condition);
  • Teleport(Event Player, Global.PlayerSpawn);
  • Set Facing(Event Player, Local Vector Of(Global.BotSpawn, Event Player, Rotation And Translation), To Player);
  • Create Dummy Bot(Hero(Pharah), Team 2, 0, Global.BotSpawn, Direction Towards(Global.BotSpawn, Global.PlayerSpawn));
  • Stop Forcing Player To Be Hero(All Players(All Teams));
  • }
  • }
  • rule("Next Round (Bot)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Slot 0;
  • }
  • conditions
  • {
  • Event Player.Active == 1;
  • Global.NextRound == 1;
  • Players In Slot(0, Team 2).NotBot != 1;
  • }
  • actions
  • {
  • Call Subroutine(ResetGlobals);
  • Event Player.Hero = Hero Of(Event Player);
  • Start Forcing Player To Be Hero(Event Player, Hero(Symmetra));
  • Start Forcing Player To Be Hero(Event Player, Event Player.Hero);
  • Respawn(Event Player);
  • Wait(0.050, Ignore Condition);
  • Teleport(Event Player, Global.PlayerSpawn);
  • Set Facing(Event Player, Local Vector Of(Global.BotSpawn, Event Player, Rotation And Translation), To Player);
  • Create Dummy Bot(Hero(Pharah), Team 2, 0, Global.BotSpawn, Direction Towards(Global.BotSpawn, Global.PlayerSpawn));
  • Global.NextRound = 0;
  • Stop Forcing Player To Be Hero(All Players(All Teams));
  • }
  • }
  • rule("Sub: Reset Globals")
  • {
  • event
  • {
  • Subroutine;
  • ResetGlobals;
  • }
  • actions
  • {
  • Global.RangeProfile = 0;
  • Global.BackDamage = 0;
  • Global.BotShoot = 0;
  • Global.BotPathing = 0;
  • Global.BotFacing = 0;
  • Global.BotFlying = 0;
  • Global.BotUsingFuel = 0;
  • Global.StartingJump = 0;
  • }
  • }
  • rule("Bot Enabled actions vs Pharah")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Slot 0;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Dummy Bot(Event Player) == True;
  • Hero Of(Players In Slot(0, Team 1)) == Hero(Pharah);
  • }
  • actions
  • {
  • Global.StartingJump = 1;
  • Wait(0.500, Ignore Condition);
  • Global.BotFacing = 1;
  • Global.RangeProfile = Random Integer(0, 1);
  • Global.BotPathing = 1;
  • Wait(1, Ignore Condition);
  • Wait(0.250, Ignore Condition);
  • Set Status(Event Player, Null, Invincible, 0);
  • Wait(0.250, Ignore Condition);
  • Global.BotShoot = 1;
  • Start Holding Button(Event Player, Jump);
  • Wait(0.250, Ignore Condition);
  • Global.BotUsingFuel = 1;
  • Global.BotFlying = 1;
  • }
  • }
  • rule("Bot Enabled actions vs no Pharah")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Slot 0;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Dummy Bot(Event Player) == True;
  • Hero Of(Players In Slot(0, Team 1)) != Hero(Pharah);
  • }
  • actions
  • {
  • Wait(0.500, Ignore Condition);
  • Global.BotFacing = 1;
  • Global.BotPathing = 1;
  • Press Button(Event Player, Ability 1);
  • Event Player.JumpJetCD = 10;
  • Chase Player Variable At Rate(Event Player, JumpJetCD, 0, 1, Destination and Rate);
  • Wait(0.900, Ignore Condition);
  • Global.BotShoot = 1;
  • Global.BotUsingFuel = 1;
  • Global.BotFlying = 1;
  • }
  • }
  • rule("Rocket jump Script")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Slot 0;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Ultimate) == True;
  • Players In Slot(0, Team 2).NotBot != 1;
  • Hero Of(Event Player) == Hero(Pharah);
  • }
  • actions
  • {
  • Press Button(Event Player, Primary Fire);
  • Wait(0.040, Ignore Condition);
  • Press Button(Event Player, Ability 1);
  • Small Message(All Players(All Teams), Custom String("Rocket jump script used"));
  • }
  • }
  • disabled rule("Bot Flying:")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Bot Starting Jump")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Slot 0;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Global.StartingJump == 1;
  • }
  • actions
  • {
  • Set Facing(Event Player, Direction Towards(Eye Position(Event Player), Vector(X Component Of(Position Of(Event Player)) + 0.300,
  • Y Component Of(Position Of(Event Player)), Z Component Of(Position Of(Event Player)))), To World);
  • Wait(0.250, Ignore Condition);
  • Press Button(Event Player, Primary Fire);
  • Wait(0.040, Ignore Condition);
  • Press Button(Event Player, Ability 1);
  • Set Status(Event Player, Null, Invincible, 9999);
  • Event Player.JumpJetCD = 10;
  • Chase Player Variable At Rate(Event Player, JumpJetCD, 0, 1, Destination and Rate);
  • }
  • }
  • rule("BotUsingFuel Vertical speed < -5.5")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Slot 0;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Vertical Speed Of(Event Player) < -5.500;
  • Global.BotUsingFuel == 1;
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Jump);
  • }
  • }
  • rule("BotUsingFuel, Stop - Vertical speed > 3.8")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Slot 0;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Vertical Speed Of(Event Player) > 3.800;
  • Global.BotUsingFuel == 1;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Jump);
  • }
  • }
  • rule("Bot JumpJet")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Slot 0;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Y Component Of(Eye Position(Event Player)) < 23;
  • Global.BotFlying == 1;
  • Event Player.JumpJetCD == 0;
  • }
  • actions
  • {
  • Global.BotUsingFuel = 0;
  • Stop Holding Button(Event Player, Jump);
  • Wait(0.300, Ignore Condition);
  • Press Button(Event Player, Ability 1);
  • Event Player.JumpJetCD = 10;
  • Chase Player Variable At Rate(Event Player, JumpJetCD, 0, 1, Destination and Rate);
  • Wait(0.900, Ignore Condition);
  • Global.BotUsingFuel = 1;
  • }
  • }
  • disabled rule("Bot Shooting:")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Bot Shoot")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Slot 0;
  • }
  • conditions
  • {
  • Global.BotShoot == 1;
  • Has Spawned(Event Player) == True;
  • Is Alive(Players In Slot(0, Team 1)) == True;
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Global.BotFacing = 0;
  • Stop Facing(Event Player);
  • Call Subroutine(ShootNormal);
  • Wait(0.100, Ignore Condition);
  • Global.BotFacing = 1;
  • Wait(0.645, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Sub: Predict Rocket")
  • {
  • event
  • {
  • Subroutine;
  • ShootNormal;
  • }
  • actions
  • {
  • Event Player.PlayerPosition = Vector(X Component Of(Eye Position(Players In Slot(0, Team 1))), Y Component Of(Eye Position(
  • Players In Slot(0, Team 1))) - 0, Z Component Of(Eye Position(Players In Slot(0, Team 1))));
  • Wait(0.025, Ignore Condition);
  • Event Player.BotPlayerDistance = Distance Between(Eye Position(Event Player), Eye Position(Players In Slot(0, Team 1)));
  • Modify Player Variable(Event Player, PlayerPosition, Append To Array, Vector(X Component Of(Eye Position(Players In Slot(0,
  • Team 1))), Y Component Of(Eye Position(Players In Slot(0, Team 1))) - 0, Z Component Of(Eye Position(Players In Slot(0,
  • Team 1)))));
  • Event Player.BotPlayerDistance /= 45;
  • Event Player.BotPlayerDistance /= 0.025;
  • Event Player.ShootHelper = Event Player.PlayerPosition[1];
  • Event Player.ShootHelper -= Event Player.PlayerPosition[0];
  • Event Player.BotPlayerDistance *= Event Player.ShootHelper;
  • Event Player.BotPlayerDistance = Vector(X Component Of(Event Player.BotPlayerDistance), Y Component Of(
  • Event Player.BotPlayerDistance) / 3, Z Component Of(Event Player.BotPlayerDistance));
  • Event Player.BotPlayerDistance += Event Player.PlayerPosition[1];
  • Set Facing(Event Player, Direction Towards(Eye Position(Event Player), Event Player.BotPlayerDistance), To World);
  • Press Button(Event Player, Primary Fire);
  • }
  • }
  • rule("Bot Melee")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Slot 0;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Players In Slot(0, Team 1)) == True;
  • Health(Players In Slot(0, Team 1)) < 30;
  • Distance Between(Eye Position(Event Player), Eye Position(Players In Slot(0, Team 1))) < 3;
  • }
  • actions
  • {
  • Press Button(Event Player, Melee);
  • }
  • }
  • rule("Bot Concussive Blast X-Component")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Slot 0;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Players In Slot(0, Team 1)) == True;
  • Y Component Of(Eye Position(Players In Slot(0, Team 1))) > 20;
  • Y Component Of(Eye Position(Event Player)) > 26;
  • (X Component Of(Eye Position(Players In Slot(0, Team 1))) > 14 || X Component Of(Eye Position(Players In Slot(0, Team 1))) < -14)
  • == True;
  • }
  • actions
  • {
  • Event Player.ConcRandomizer = Random Integer(0, 4);
  • Abort If(Event Player.ConcRandomizer <= 1);
  • Press Button(Event Player, Ability 2);
  • }
  • }
  • rule("Bot Concussive Blast Z-Component")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Slot 0;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Players In Slot(0, Team 1)) == True;
  • Y Component Of(Eye Position(Players In Slot(0, Team 1))) > 20;
  • Y Component Of(Eye Position(Event Player)) > 26;
  • (Z Component Of(Eye Position(Players In Slot(0, Team 1))) > 14 || Z Component Of(Eye Position(Players In Slot(0, Team 1))) < -14)
  • == True;
  • }
  • actions
  • {
  • Event Player.ConcRandomizer = Random Integer(0, 4);
  • Abort If(Event Player.ConcRandomizer <= 1);
  • Press Button(Event Player, Ability 2);
  • }
  • }
  • disabled rule("Bot Movement, Pathing, Facing:")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Bot Pathing in general")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Slot 0;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Global.BotPathing == 1;
  • }
  • actions
  • {
  • Skip If(Global.BotPathing == 0, 5);
  • Modify Global Variable(PathHelper, Remove From Array By Value, Global.PathDirection);
  • Global.PathOld = Global.PathDirection;
  • Global.PathDirection = Random Value In Array(Global.PathHelper);
  • Modify Global Variable(PathHelper, Append To Array, Global.PathOld);
  • Start Throttle In Direction(Event Player, Local Vector Of(Global.PathLoc[Global.PathDirection], Event Player,
  • Rotation And Translation), 1, To Player, Replace existing throttle, Direction and Magnitude);
  • Wait(Random Real(0.150, 0.350), Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Bot Pathing Far > 13 (Range profile 0)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Slot 0;
  • }
  • conditions
  • {
  • Distance Between(Eye Position(Event Player), Eye Position(Players In Slot(0, Team 1))) > 13;
  • Global.BackDamage == 0;
  • Is Dummy Bot(Event Player) == True;
  • Global.BotPathing == 1;
  • Hero Of(Players In Slot(0, Team 1)) == Hero(Pharah);
  • Global.RangeProfile == 0;
  • }
  • actions
  • {
  • Start Forcing Throttle(Event Player, 1, 1, 0, 0, 0, 1);
  • }
  • }
  • rule("Bot Pathing Close < 10 (Range profile 0)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Slot 0;
  • }
  • conditions
  • {
  • Distance Between(Eye Position(Event Player), Eye Position(Players In Slot(0, Team 1))) < 10;
  • Global.BackDamage == 0;
  • Is Dummy Bot(Event Player) == True;
  • Global.BotPathing == 1;
  • Hero Of(Players In Slot(0, Team 1)) == Hero(Pharah);
  • Global.RangeProfile == 0;
  • }
  • actions
  • {
  • Stop Forcing Throttle(Event Player);
  • }
  • }
  • rule("Bot Pathing Far > 20 (Range profile 1)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Slot 0;
  • }
  • conditions
  • {
  • Distance Between(Eye Position(Event Player), Eye Position(Players In Slot(0, Team 1))) > 20;
  • Global.BackDamage == 0;
  • Is Dummy Bot(Event Player) == True;
  • Global.BotPathing == 1;
  • Hero Of(Players In Slot(0, Team 1)) == Hero(Pharah);
  • Global.RangeProfile == 1;
  • }
  • actions
  • {
  • Start Forcing Throttle(Event Player, 1, 1, 0, 0, 0, 1);
  • }
  • }
  • rule("Bot Pathing Close < 15 (Range profile 1)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Slot 0;
  • }
  • conditions
  • {
  • Distance Between(Eye Position(Event Player), Eye Position(Players In Slot(0, Team 1))) < 15;
  • Global.BackDamage == 0;
  • Is Dummy Bot(Event Player) == True;
  • Global.BotPathing == 1;
  • Hero Of(Players In Slot(0, Team 1)) == Hero(Pharah);
  • Global.RangeProfile == 1;
  • }
  • actions
  • {
  • Stop Forcing Throttle(Event Player);
  • }
  • }
  • rule("Bot Pathing really Close < 7")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Slot 0;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Distance Between(Eye Position(Event Player), Eye Position(Players In Slot(0, Team 1))) <= 7;
  • Is Dummy Bot(Event Player) == True;
  • Hero Of(Players In Slot(0, Team 1)) == Hero(Pharah);
  • }
  • actions
  • {
  • Start Forcing Throttle(Event Player, 1, 1, 0, 0, 0, 1);
  • }
  • }
  • rule("Bot Pathing after taking damage")
  • {
  • event
  • {
  • Player Took Damage;
  • Team 2;
  • Slot 0;
  • }
  • conditions
  • {
  • Team Of(Attacker) == Team 1;
  • Is Dummy Bot(Event Player) == True;
  • Hero Of(Players In Slot(0, Team 1)) == Hero(Pharah);
  • }
  • actions
  • {
  • Global.BackDamage = 1;
  • Start Forcing Throttle(Event Player, 0, 0, 1, 1, 0, 1);
  • Wait(0.800, Ignore Condition);
  • Skip If(Global.BotPathing == 0, 1);
  • Start Forcing Throttle(Event Player, 1, 1, 0, 0, 0, 1);
  • Global.BackDamage = 0;
  • }
  • }
  • rule("Player Shooting: Bot Dodge - 3s cooldown")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Slot 0;
  • }
  • conditions
  • {
  • Is Firing Primary(Players In Slot(0, Team 1)) == True;
  • Is Dummy Bot(Event Player) == True;
  • Global.BotShoot == 1;
  • Hero Of(Players In Slot(0, Team 1)) == Hero(Pharah);
  • }
  • actions
  • {
  • Global.BotPathing = 0;
  • Start Forcing Throttle(Event Player, 0, 0, 0, 0, 1, 1);
  • Call Subroutine(DodgeRocket);
  • Wait(Distance Between(Eye Position(Players In Slot(0, Team 1)), Eye Position(Players In Slot(0, Team 2))) / 35, Ignore Condition);
  • Global.BotPathing = 1;
  • Wait(3, Ignore Condition);
  • }
  • }
  • rule("SUB: DodgeRocket")
  • {
  • event
  • {
  • Subroutine;
  • DodgeRocket;
  • }
  • actions
  • {
  • Global.RocketBotPos = Eye Position(Players In Slot(0, Team 2));
  • Global.RocketPlayerPos = Eye Position(Players In Slot(0, Team 1));
  • Global.RocketLandHelper = Global.RocketPlayerPos + Facing Direction Of(Players In Slot(0, Team 1)) * Distance Between(
  • Players In Slot(0, Team 1), Players In Slot(0, Team 2));
  • Global.RocketLandPos = Ray Cast Hit Position(Eye Position(Players In Slot(0, Team 1)), Global.RocketLandHelper, All Players(
  • Team 2), Players In Slot(0, Team 1), True);
  • Global.Dodge1 = Eye Position(Players In Slot(0, Team 2)) + 7 * Direction From Angles(90 + Horizontal Angle From Direction(
  • Direction Towards(Eye Position(Players In Slot(0, Team 1)), Eye Position(Players In Slot(0, Team 2)))), 0);
  • Global.Dodge2 = Eye Position(Players In Slot(0, Team 2)) + 7 * Direction From Angles(-90 + Horizontal Angle From Direction(
  • Direction Towards(Eye Position(Players In Slot(0, Team 1)), Eye Position(Players In Slot(0, Team 2)))), 0);
  • Skip If(Distance Between(Global.RocketLandPos, Global.Dodge1) >= Distance Between(Global.RocketLandPos, Global.Dodge2), 1);
  • Start Throttle In Direction(Event Player, Local Vector Of(Global.Dodge2, Event Player, Rotation And Translation), 1, To Player,
  • Replace existing throttle, Direction and Magnitude);
  • Skip If(Distance Between(Global.RocketLandPos, Global.Dodge1) < Distance Between(Global.RocketLandPos, Global.Dodge2), 1);
  • Start Throttle In Direction(Event Player, Local Vector Of(Global.Dodge1, Event Player, Rotation And Translation), 1, To Player,
  • Replace existing throttle, Direction and Magnitude);
  • }
  • }
  • rule("Bot Facing")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Slot 0;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Global.BotFacing == 1;
  • }
  • actions
  • {
  • Start Facing(Event Player, Direction Towards(Eye Position(Event Player), Eye Position(Players In Slot(0, Team 1))), 5000, To World,
  • Direction and Turn Rate);
  • }
  • }
  • disabled rule("Buttons & Hud")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Scoreboard")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String(" "), Left, 2, White, White, White, Visible To and String,
  • Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Null, String("{0} - {1}", String("Kills"), String("Damage")), Left, 3, White, White,
  • White, Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Null, String("{0}: {1}", Players In Slot(0, Team 1), String("{0} - {1}",
  • Round To Integer(Global.PlayerScore, To Nearest), Round To Integer(Global.Team1Dmg, To Nearest))), Left, 4, White, White, Blue,
  • Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Null, String("{0}: {1}", Players In Slot(0, Team 2), String("{0} - {1}",
  • Round To Integer(Global.BotScore, To Nearest), Round To Integer(Global.Team2Dmg, To Nearest))), Left, 5, White, White, Red,
  • Visible To and String, Default Visibility);
  • }
  • }
  • rule("Interact: Start")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Slot 0;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Interact) == True;
  • Event Player.Active == 0;
  • Event Player.InteractCooldown == 0;
  • }
  • actions
  • {
  • Global.NextRound = 0;
  • Event Player.InteractCooldown = 1;
  • Chase Player Variable At Rate(Event Player, InteractCooldown, 0, 1, Destination and Rate);
  • Event Player.Active = 1;
  • Global.BotScore = 0;
  • Global.PlayerScore = 0;
  • Global.Team1Dmg = 0;
  • Global.Team2Dmg = 0;
  • }
  • }
  • rule("Interact: Stop")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Slot 0;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Interact) == True;
  • Event Player.Active == 1;
  • Event Player.InteractCooldown == 0;
  • }
  • actions
  • {
  • Event Player.InteractCooldown = 1;
  • Chase Player Variable At Rate(Event Player, InteractCooldown, 0, 1, Destination and Rate);
  • Event Player.Active = 0;
  • Destroy Dummy Bot(Team 2, 0);
  • }
  • }
  • rule("Change hero: Crouch + Ultimate")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Crouch) == True;
  • Is Button Held(Event Player, Ultimate) == True;
  • Players In Slot(0, Team 1).Active == 0;
  • }
  • actions
  • {
  • Set Player Allowed Heroes(Event Player, Random Value In Array(All Heroes));
  • Wait(0.100, Ignore Condition);
  • Set Player Allowed Heroes(Event Player, All Heroes);
  • }
  • }
  • rule("Next Round & Scoring: Player Dies")
  • {
  • event
  • {
  • Player Died;
  • Team 1;
  • Slot 0;
  • }
  • actions
  • {
  • Play Effect(Players In Slot(0, Team 2), Buff Explosion Sound, White, Eye Position(Players In Slot(0, Team 2)), 500);
  • Global.BotScore += 1;
  • Wait(0.300, Ignore Condition);
  • Destroy Dummy Bot(Team 2, 0);
  • Wait(0.700, Ignore Condition);
  • Global.NextRound = 1;
  • }
  • }
  • rule("Next Round & Scoring: Bot Dies")
  • {
  • event
  • {
  • Player Died;
  • Team 2;
  • Slot 0;
  • }
  • actions
  • {
  • Play Effect(Players In Slot(0, Team 1), Buff Explosion Sound, White, Eye Position(Players In Slot(0, Team 1)), 500);
  • Global.PlayerScore += 1;
  • Wait(1, Ignore Condition);
  • Global.NextRound = 1;
  • Destroy Dummy Bot(Team 2, 0);
  • }
  • }
  • rule("Hud Game Mode off")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Slot 0;
  • }
  • conditions
  • {
  • Event Player.Active == 0;
  • }
  • actions
  • {
  • Destroy HUD Text(Event Player.Hud4);
  • Create HUD Text(All Players(All Teams), Null, Null, String("{0}: {1}", String("Game"), String("Off")), Left, 0, White, White, Red,
  • Visible To and String, Default Visibility);
  • Event Player.Hud4 = Last Text ID;
  • }
  • }
  • rule("Hud Game Mode On")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Slot 0;
  • }
  • conditions
  • {
  • Event Player.Active == 1;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Destroy HUD Text(Event Player.Hud4);
  • Create HUD Text(All Players(All Teams), Null, Null, String("{0}: {1}", String("Game"), String("On")), Left, 0, White, White, Green,
  • Visible To and String, Default Visibility);
  • Event Player.Hud4 = Last Text ID;
  • }
  • }
  • rule("Damage tracking")
  • {
  • event
  • {
  • Player Took Damage;
  • Team 1;
  • Slot 0;
  • }
  • conditions
  • {
  • Team Of(Attacker) == Team 2;
  • }
  • actions
  • {
  • Global.Team2Dmg += Event Damage;
  • }
  • }
  • rule("Damage tracking")
  • {
  • event
  • {
  • Player Took Damage;
  • Team 2;
  • Slot 0;
  • }
  • conditions
  • {
  • Team Of(Attacker) == Team 1;
  • }
  • actions
  • {
  • Global.Team1Dmg += Event Damage;
  • }
  • }
  • rule("Hide Help Hud")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Slot 0;
  • }
  • conditions
  • {
  • Event Player.Active == 1;
  • }
  • actions
  • {
  • Destroy HUD Text(Event Player.Hud1);
  • Destroy HUD Text(Event Player.Hud2);
  • Destroy HUD Text(Event Player.Hud3);
  • Destroy HUD Text(Event Player.Hud5);
  • }
  • }
  • rule("Show Help Hud")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Slot 0;
  • }
  • conditions
  • {
  • Event Player.Active == 0;
  • }
  • actions
  • {
  • Create HUD Text(Event Player, Null, Null, Custom String("Press Interact to Start (or to Stop)"), Top, 20, White, White, Green,
  • Visible To and String, Default Visibility);
  • Event Player.Hud1 = Last Text ID;
  • Create HUD Text(Event Player, Null, Null, Custom String(
  • "If you can't super jump perfectly, look down and Press Ultimate(Q) to activate rocket jump script"), Top, 21, White, White,
  • White, Visible To and String, Default Visibility);
  • Event Player.Hud2 = Last Text ID;
  • Create HUD Text(Event Player, Null, Null, Custom String("To change hero press Crouch+Ultimate"), Top, 22, White, White, Orange,
  • Visible To and String, Default Visibility);
  • Event Player.Hud3 = Last Text ID;
  • Create HUD Text(Event Player, Null, Null, Custom String("For latest updates check out: twitter.com/Seita_ow"), Top, 23, White,
  • White, Blue, Visible To and String, Default Visibility);
  • Event Player.Hud5 = Last Text ID;
  • }
  • }
Join the Workshop.codes Discord