Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • lobby
  • {
  • Max Team 1 Players: 4
  • Max Team 2 Players: 4
  • }
  • modes
  • {
  • disabled Assault
  • {
  • Limit Roles: 2 Of Each Role Per Team
  • }
  • disabled Capture the Flag
  • {
  • Limit Roles: 2 Of Each Role Per Team
  • }
  • disabled Control
  • {
  • Limit Roles: 2 Of Each Role Per Team
  • }
  • disabled Deathmatch
  • {
  • Limit Roles: 2 Of Each Role Per Team
  • }
  • disabled Elimination
  • {
  • Limit Roles: 2 Of Each Role Per Team
  • }
  • disabled Escort
  • {
  • Limit Roles: 2 Of Each Role Per Team
  • }
  • disabled Hybrid
  • {
  • Limit Roles: 2 Of Each Role Per Team
  • }
  • disabled Junkenstein's Revenge
  • {
  • Limit Roles: 2 Of Each Role Per Team
  • }
  • disabled Practice Range
  • {
  • Limit Roles: 2 Of Each Role Per Team
  • }
  • Skirmish
  • {
  • Hero Limit: Off
  • Respawn Time Scalar: 30%
  • enabled maps
  • {
  • Workshop Island
  • Blizzard World
  • Blizzard World Winter
  • Dorado
  • Eichenwalde
  • Eichenwalde Halloween
  • Havana
  • Hollywood
  • Hollywood Halloween
  • Junkertown
  • King's Row
  • King's Row Winter
  • Paris
  • Watchpoint: Gibraltar
  • }
  • }
  • disabled Team Deathmatch
  • {
  • Limit Roles: 2 Of Each Role Per Team
  • }
  • }
  • extensions
  • {
  • Buff Status Effects
  • Debuff Status Effects
  • Energy Explosion Effects
  • Spawn More Dummy Bots
  • }
  • }
  • variables
  • {
  • global:
  • 0: standNames
  • 23: lastAllPlayers
  • 24: allBotsDeletableTemp
  • 25: botDeletionCounter
  • player:
  • 0: bots
  • 1: bot1Pos
  • 2: bot2Pos
  • 3: nextTP
  • 4: punchingBot
  • 5: rushing
  • 6: inacuracy
  • 7: meter
  • 19: counter
  • 20: queuedTp
  • 21: isPunching
  • 22: launchAngle
  • 23: punchRequest
  • 24: punchTime
  • 25: standUser
  • }
  • subroutines
  • {
  • 0: punchBot
  • }
  • disabled rule("debug - huds")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Create HUD Text(All Players(All Teams), Custom String("{0} ld {1} pk {2} avg", Server Load, Server Load Peak, Server Load Average),
  • Null, Null, Left, 0, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Local Player, Local Player.inacuracy, Null, Null, Left, 0, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • }
  • }
  • rule("init global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.standNames = Array(Custom String("Bruh Platinum"), Custom String("Stah Purachina"), Custom String("Tsar Wario"),
  • Custom String("Earth"), Custom String("Jonathan Joestar"), Custom String("Same type of stand"), Custom String(
  • "Yellow Diver Down"), Custom String("my stand :)"));
  • Global.standNames = Randomized Array(Global.standNames);
  • }
  • }
  • rule("cleanup bots")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.lastAllPlayers != Array(All Players(Team 1), All Players(Team 2));
  • }
  • actions
  • {
  • Global.lastAllPlayers = Array(All Players(Team 1), All Players(Team 2));
  • If(Current Game Mode == Game Mode(Deathmatch));
  • Global.allBotsDeletableTemp = Filtered Array(All Players(All Teams), Is Dummy Bot(Current Array Element) && !Array Contains(
  • All Players(All Teams), Current Array Element.standUser));
  • Else;
  • Global.allBotsDeletableTemp = Filtered Array(All Players(All Teams), Is Dummy Bot(Current Array Element) && !Array Contains(
  • All Players(Team Of(Current Array Element)), Current Array Element.standUser));
  • End;
  • For Global Variable(botDeletionCounter, 0, Count Of(Global.allBotsDeletableTemp), 1);
  • Destroy Dummy Bot(Team Of(Global.allBotsDeletableTemp[Global.botDeletionCounter]), Slot Of(
  • Global.allBotsDeletableTemp[Global.botDeletionCounter]));
  • End;
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("player init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Has Spawned(Event Player) == True;
  • disabled Hero Of(Event Player) != Hero(Doomfist);
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Doomfist), Team Of(Event Player), Slot Of(Event Player) + 4, Vector(0, 0, 0), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Doomfist), Team Of(Event Player), Slot Of(Event Player) + (Current Game Mode == Game Mode(Deathmatch)
  • ? 8 : 4), Vector(0, 1000, 0), Vector(0, 0, 0));
  • Event Player.bots[0] = Last Created Entity;
  • Create Dummy Bot(Hero(Doomfist), Team Of(Event Player), Slot Of(Event Player) + 8, Vector(0, 0, 0), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Doomfist), Team Of(Event Player), Slot Of(Event Player) + (Current Game Mode == Game Mode(Deathmatch)
  • ? 16 : 8), Vector(0, 1000, 0), Vector(0, 0, 0));
  • Event Player.bots[1] = Last Created Entity;
  • disabled Start Forcing Player Position(Event Player.bots[0], Event Player.bot1Pos, True);
  • disabled Start Forcing Player Position(Event Player.bots[1], Event Player.bot2Pos, True);
  • Event Player.bot2Pos = Vector(0, 0, 0);
  • Set Invisible(Event Player.bots[1], All);
  • Start Facing(Event Player.bots, Facing Direction Of(Event Player), 1440, To World, Direction and Turn Rate);
  • disabled Start Facing(Event Player.bots, Is Button Held(Event Player, Button(Secondary Fire)) && Is Button Held(Event Player, Button(
  • Primary Fire)) ? Direction From Angles(Horizontal Facing Angle Of(Event Player) + 180, Vertical Facing Angle Of(Event Player))
  • : Facing Direction Of(Event Player), 1440, To World, Direction and Turn Rate);
  • Event Player.bot2Pos = Vector(0, 1000 - 2 * Count Of(All Players(All Teams)), 0);
  • Event Player.bot1Pos = Up;
  • Chase Player Variable At Rate(Event Player, bot1Pos, Is Button Held(Event Player, Button(Crouch)) ? Update Every Frame(Position Of(
  • Event Player) + 1.500 * Facing Direction Of(Event Player)) : World Vector Of(Vector(0.350, 0.400, -1.250), Event Player,
  • Rotation And Translation), 100000, Destination and Rate);
  • disabled Chase Player Variable At Rate(Event Player, bot1Pos, World Vector Of(Vector(0.350, 0.400, -1.250), Event Player,
  • Rotation And Translation), 100, Destination and Rate);
  • Start Forcing Player Position(Event Player.bots[0], Event Player.bot1Pos, True);
  • Start Forcing Player Position(Event Player.bots[1], Event Player.bot2Pos, True);
  • Set Gravity(Event Player.bots, 0);
  • Event Player.bots.standUser = Event Player;
  • Set Primary Fire Enabled(Event Player, False);
  • Disallow Button(Event Player, Button(Secondary Fire));
  • Set Gravity(Event Player, 75);
  • Chase Player Variable At Rate(Event Player, inacuracy, 2, Event Player.inacuracy + 0.300, Destination and Rate);
  • Start Forcing Dummy Bot Name(Event Player.bots, First Of(Global.standNames));
  • Global.standNames = Append To Array(Array Slice(Global.standNames, 1, 7), First Of(Global.standNames));
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, False);
  • Event Player.meter = 100;
  • }
  • }
  • disabled rule("")
  • rule("normalize health")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Doomfist;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Ability Cooldown(Event Player, Button(Secondary Fire)) != 0;
  • Absolute Value(Max Health(Event Player) - 405) > 5;
  • }
  • actions
  • {
  • Set Ability Cooldown(Event Player, Button(Secondary Fire), 0);
  • Remove All Health Pools From Player(Event Player);
  • Set Max Health(Event Player, 1);
  • Wait(0.016, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 405 - Max Health(Event Player), True, False);
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • disabled rule("doom secondary fire rate testing")
  • rule("dummy bot init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Doomfist;
  • All;
  • }
  • conditions
  • {
  • Is Firing Secondary(Event Player) == True;
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Wait Until(Is Firing Secondary(Event Player), 99999);
  • Global.A = Total Time Elapsed;
  • disabled Create In-World Text(All Players(All Teams), Has Status(Event Player, Knocked Down), Event Player, 2.500, Clip Against Surfaces,
  • Visible To Position and String, Color(White), Default Visibility);
  • Set Move Speed(Event Player, 125);
  • Disable Movement Collision With Players(Event Player);
  • disabled Start Facing(Event Player, Facing Direction Of(Event Player.standUser), 1440, To World, Direction and Turn Rate);
  • Set Knockback Dealt(Event Player, 0);
  • Disable Built-In Game Mode Respawning(Event Player);
  • disabled For Player Variable(Event Player, counter, 0, 20, 1);
  • disabled Create Effect(!(Event Player == Event Player.standUser.bots[1] && !Event Player.standUser.rushing) ? All Players(All Teams) : 0,
  • Soldier: 76 Sprinting Effect, Team Of(Event Player), Event Player, 1, Visible To Position and Radius);
  • disabled End;
  • }
  • }
  • rule("make bots ready/unready")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Primary Fire)) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Stop Forcing Player Position(Event Player.bots);
  • Set Invisible(Event Player.bots[1], None);
  • Event Player.rushing = True;
  • disabled Wait(0.016, Ignore Condition);
  • Wait Until(!Is Firing Secondary(Event Player), 99999);
  • Wait Until(Is Firing Secondary(Event Player), 99999);
  • Create HUD Text(All Players(All Teams), Custom String("{0}", Total Time Elapsed - Global.A), Null, Null, Left, 0, Color(White),
  • Color(White), Color(White), Visible To, Default Visibility);
  • Loop If Condition Is True;
  • disabled Teleport(Event Player.bots, Position Of(Event Player));
  • disabled Clear Status(Event Player.bots[1], Phased Out);
  • Event Player.inacuracy = 0;
  • Wait(0.384, Ignore Condition);
  • Wait Until(!Is Button Held(Event Player, Button(Primary Fire)), 99999);
  • disabled Start Facing(Event Player.bots, Is Button Held(Event Player, Button(Secondary Fire)) && Is Button Held(Event Player, Button(
  • Primary Fire)) ? Vector(0, 0, 0) - Facing Direction Of(Event Player) : Facing Direction Of(Event Player), 1440, To World,
  • Direction and Turn Rate);
  • Cancel Primary Action(Event Player.bots);
  • Set Invisible(Event Player.bots[1], All);
  • Start Forcing Player Position(Event Player.bots[0], Event Player.bot1Pos, True);
  • Start Forcing Player Position(Event Player.bots[1], Event Player.bot2Pos, True);
  • Event Player.rushing = False;
  • }
  • }
  • disabled rule("spam rmb")
  • rule("make bots fire")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Primary Fire)) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Press Button(Event Player.bots, Button(Secondary Fire));
  • Wait(0.016, Ignore Condition);
  • Event Player.punchingBot = Event Player.bots[0];
  • Call Subroutine(punchBot);
  • Wait(0.176, Ignore Condition);
  • Event Player.punchingBot = Event Player.bots[1];
  • Call Subroutine(punchBot);
  • Wait(0.176, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("set bots to idle")
  • disabled rule("camera")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Primary Fire)) == False;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Start Forcing Player Position(Event Player.bots[0], Event Player.bot1Pos, True);
  • Start Forcing Player Position(Event Player.bots[1], Event Player.bot2Pos, True);
  • Start Facing(Event Player.bots, Facing Direction Of(Event Player), 10000, To World, Direction and Turn Rate);
  • Event Player.bot2Pos = Vector(0, 10000, 0);
  • Event Player.bot1Pos = Up;
  • Chase Player Variable At Rate(Event Player, bot1Pos, World Vector Of(Vector(0.350, 0.400, -1.250), Event Player,
  • Rotation And Translation), 100, Destination and Rate);
  • disabled Start Camera(Event Player, Update Every Frame(Eye Position(Event Player) + -5 * Facing Direction Of(Event Player)),
  • Update Every Frame(Eye Position(Event Player)), 0);
  • Start Camera(Event Player, Vector(0, 40, 0), Vector(0, 0, 0), 0);
  • disabled Start Camera(Event Player, World Vector Of(Vector(5, 2, -2), Event Player, Rotation And Translation), Eye Position(Event Player),
  • 0);
  • }
  • }
  • rule("make bots ready")
  • disabled rule("stun by bot")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Primary Fire)) == True;
  • Is Dummy Bot(Attacker) == True;
  • disabled Has Status(Event Player, Knocked Down) == True;
  • Has Status(Event Player, Stunned) == True;
  • }
  • actions
  • {
  • disabled Stop Forcing Player Position(Event Player.bots[0]);
  • disabled Stop Forcing Player Position(Event Player.bots[1]);
  • Stop Forcing Player Position(Event Player.bots);
  • Teleport(Event Player.bots, Position Of(Event Player));
  • Clear Status(Event Player, Stunned);
  • }
  • }
  • rule("make bots fire")
  • disabled rule("knocked down by bot - collision")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Primary Fire)) == True;
  • Is Alive(Event Player) == True;
  • Is Dummy Bot(Attacker) == True;
  • disabled Has Status(Event Player, Knocked Down) == True;
  • Has Status(Event Player, Stunned) == True;
  • }
  • actions
  • {
  • Event Player.punchingBot = Event Player.bots[0];
  • Call Subroutine(punchBot);
  • Wait(0.176, Ignore Condition);
  • Event Player.punchingBot = Event Player.bots[1];
  • Call Subroutine(punchBot);
  • Wait(0.176, Ignore Condition);
  • Loop If Condition Is True;
  • Clear Status(Event Player, Stunned);
  • }
  • }
  • rule("dummy bot init")
  • rule("player-side punch command")
  • {
  • event
  • {
  • Subroutine;
  • punchBot;
  • }
  • actions
  • {
  • Event Player.punchingBot.punchRequest = False;
  • Wait(0.016, Ignore Condition);
  • Clear Status(Event Player.punchingBot, Knocked Down);
  • Clear Status(Event Player.punchingBot, Stunned);
  • Cancel Primary Action(Event Player.punchingBot);
  • Set Ability Cooldown(Event Player.punchingBot, Button(Secondary Fire), 0);
  • Event Player.nextTP = World Vector Of(Vector(Random Real(-1, 1), Random Real(0 - Min(Altitude Of(Event Player),
  • Event Player.inacuracy), Event Player.inacuracy), -0.750), Event Player, Rotation And Translation);
  • Teleport(Event Player.punchingBot, Event Player.nextTP);
  • Press Button(Event Player.punchingBot, Button(Secondary Fire));
  • Event Player.punchingBot.punchRequest = True;
  • disabled Event Player.punchingBot.queuedTp = World Vector Of(Vector(Random Real(-1, 1), Random Real(0 - Min(Altitude Of(Event Player),
  • Event Player.inacuracy), Event Player.inacuracy), -0.750), Event Player, Rotation And Translation);
  • disabled Event Player.nextTP = World Vector Of(Vector(Random Real(-1, 1), Random Real(0 - Min(Altitude Of(Event Player),
  • Event Player.inacuracy), Event Player.inacuracy), -0.750), Event Player, Rotation And Translation) + 0.016 * Velocity Of(
  • Event Player);
  • }
  • }
  • rule("bot-side punch command")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.punchRequest == True;
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • disabled Create In-World Text(All Players(All Teams), Has Status(Event Player, Knocked Down), Event Player, 2.500, Clip Against Surfaces,
  • Visible To Position and String, Color(White), Default Visibility);
  • Set Move Speed(Event Player, 125);
  • Disable Movement Collision With Players(Event Player);
  • disabled Create Effect(All Players(All Teams), Soldier: 76 Sprinting Effect, Team Of(Event Player), Event Player, 1,
  • Visible To Position and Radius);
  • disabled Create Effect(All Players(All Teams), Soldier: 76 Sprinting Effect, Team Of(Event Player), Event Player, 1,
  • Visible To Position and Radius);
  • disabled Create Effect(All Players(All Teams), Soldier: 76 Sprinting Effect, Team Of(Event Player), Event Player, 1,
  • Visible To Position and Radius);
  • disabled Create Effect(All Players(All Teams), Soldier: 76 Sprinting Effect, Team Of(Event Player), Event Player, 1,
  • Visible To Position and Radius);
  • disabled Create Effect(All Players(All Teams), Soldier: 76 Sprinting Effect, Team Of(Event Player), Event Player, 1,
  • Visible To Position and Radius);
  • disabled Start Accelerating(Event Player, Vector(0, 1, 0), 100, 60, To World, Direction Rate and Max Speed);
  • disabled Apply Impulse(Event Player.punchingBot, Vector(0, 0 - Y Component Of(Velocity Of(Event Player.punchingBot)), 0), 0.001, To World,
  • Cancel Contrary Motion);
  • Apply Impulse(Event Player, Velocity Of(Event Player), -0.001, To World, Cancel Contrary Motion);
  • Wait Until(Is Firing Secondary(Event Player), 99999);
  • Wait Until(!Is Firing Secondary(Event Player), 99999);
  • disabled Teleport(Event Player, Event Player.queuedTp);
  • disabled Set Facing(Event Player, Facing Direction Of(Event Player.standUser), To World);
  • disabled Set Facing(Event Player, Is Button Held(Event Player.standUser, Button(Secondary Fire)) ? Vector(0, 0, 0) - Facing Direction Of(
  • Event Player.standUser) : Facing Direction Of(Event Player.standUser), To World);
  • Event Player.launchAngle = Vertical Facing Angle Of(Event Player);
  • Set Move Speed(Event Player, 120 * Cosine From Degrees(Event Player.launchAngle));
  • Event Player.punchTime = Total Time Elapsed;
  • Event Player.isPunching = True;
  • While(Total Time Elapsed - Event Player.punchTime < 0.176);
  • Apply Impulse(Event Player, Down, 36 * Sine From Degrees(Event Player.launchAngle), To World, Cancel Contrary Motion);
  • Wait(0.016, Ignore Condition);
  • End;
  • Event Player.isPunching = False;
  • }
  • }
  • rule("Rule 10")
  • disabled rule("bot punch boost for user")
  • {
  • event
  • {
  • Ongoing - Global;
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.isPunching == True;
  • Is Button Held(Event Player.standUser, Button(Secondary Fire)) == True;
  • Is In Line of Sight(Eye Position(Event Player), Eye Position(Event Player) + 3 * Facing Direction Of(Event Player),
  • Barriers Do Not Block LOS) == False;
  • }
  • actions
  • {
  • Create HUD Text(All Players(All Teams), Custom String("{0} ld {1} pk {2} avg", Server Load, Server Load Peak, Server Load Average),
  • Null, Null, Left, 0, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
  • Apply Impulse(Event Player.standUser, Facing Direction Of(Event Player), -15, To World, Cancel Contrary Motion XYZ);
  • }
  • }
  • disabled rule("camera")
  • rule("player dies")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Start Camera(Event Player, Update Every Frame(Eye Position(Event Player) + -5 * Facing Direction Of(Event Player)),
  • Update Every Frame(Eye Position(Event Player)), 0);
  • disabled Start Camera(Event Player, Vector(0, 50, 0), Vector(0, 0, 0), 0);
  • disabled Start Camera(Event Player, World Vector Of(Vector(5, 2, -2), Event Player, Rotation And Translation), Eye Position(Event Player),
  • 0);
  • Kill(Event Player.bots, Attacker);
  • Wait Until(Is Alive(Event Player), 99999);
  • Respawn(Event Player.bots);
  • }
  • }
  • rule("stun by bot")
  • rule("bot takes damage - reflect damage to player & impulse")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Attacker) == True;
  • disabled Has Status(Event Player, Knocked Down) == True;
  • Has Status(Event Player, Stunned) == True;
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Clear Status(Event Player, Stunned);
  • Damage(Event Player.standUser, Is Dummy Bot(Attacker) ? Attacker.standUser : Attacker,
  • !Event Player.standUser.rushing && Is Button Held(Event Player.standUser, Button(Crouch))
  • ? 0.100 * Event Damage : 0.500 * Event Damage);
  • If(Is Button Held(Event Player.standUser, Button(Crouch)) && Is Button Held(Event Player.standUser, Button(Jump)));
  • Apply Impulse(Event Player.standUser, Event Direction, 6, To World, Incorporate Contrary Motion);
  • Apply Impulse(Event Player.standUser, Up, 2, To World, Incorporate Contrary Motion);
  • End;
  • }
  • }
  • rule("left game")
  • rule("bots healths arent same, pick lower")
  • {
  • event
  • {
  • Player Left Match;
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • (Health(Event Player.bots[0]) == Health(Event Player.bots[1]) && Is Alive(Event Player.bots[0]) == Is Alive(Event Player.bots[1]))
  • == False;
  • }
  • actions
  • {
  • Global.allBotsDeletableTemp = Filtered Array(All Players(All Teams), Is Dummy Bot(Current Array Element) && !Array Contains(
  • All Players(All Teams), Current Array Element.standUser));
  • For Global Variable(botDeletionCounter, 0, Count Of(Global.allBotsDeletableTemp), 1);
  • Destroy Dummy Bot(Team Of(Global.allBotsDeletableTemp[Global.botDeletionCounter]), Slot Of(
  • Global.allBotsDeletableTemp[Global.botDeletionCounter]));
  • If(Is True For Any(Event Player.bots, Is Dead(Current Array Element)));
  • Kill(Event Player.bots, Null);
  • Else;
  • If(Health(Event Player.bots[0]) > Health(Event Player.bots[1]));
  • Set Player Health(Event Player.bots[0], Health(Event Player.bots[1]));
  • Else;
  • Set Player Health(Event Player.bots[1], Health(Event Player.bots[0]));
  • End;
  • End;
  • }
  • }
  • rule("knocked down by bot - collision")
  • rule("stand respawn")
  • {
  • event
  • {
  • Player Took Damage;
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Attacker) == True;
  • disabled Has Status(Event Player, Knocked Down) == True;
  • Has Status(Event Player, Stunned) == True;
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player.standUser) == True;
  • Is Dead(Event Player) == True;
  • }
  • actions
  • {
  • Clear Status(Event Player, Stunned);
  • Wait(5, Abort When False);
  • Respawn(Event Player.standUser.bots);
  • }
  • }
  • disabled rule("debug - knockdown clearance")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Knocked Down, 9999);
  • Clear Status(Event Player, Knocked Down);
  • Wait(0.016, Ignore Condition);
  • Set Status(Event Player, Null, Frozen, 0.001);
  • disabled Kill(Event Player, Null);
  • disabled Respawn(Event Player);
  • }
  • }
  • rule("punchBot")
  • disabled rule("debug bot")
  • {
  • event
  • {
  • Subroutine;
  • punchBot;
  • Ongoing - Global;
  • }
  • actions
  • {
  • Event Player.punchingBot.punchRequest = False;
  • Wait(0.016, Ignore Condition);
  • Clear Status(Event Player.punchingBot, Knocked Down);
  • Clear Status(Event Player.punchingBot, Stunned);
  • Cancel Primary Action(Event Player.punchingBot);
  • Set Ability Cooldown(Event Player.punchingBot, Button(Secondary Fire), 0);
  • Event Player.nextTP = World Vector Of(Vector(Random Real(-1, 1), Random Real(Max(0 - Altitude Of(Event Player), -1), 1), -1),
  • Event Player, Rotation And Translation);
  • Teleport(Event Player.punchingBot, Event Player.nextTP);
  • Press Button(Event Player.punchingBot, Button(Secondary Fire));
  • Event Player.punchingBot.punchRequest = True;
  • Create Dummy Bot(Hero(Ana), Team 2, -1, Vector(0, 0, 0), Vector(0, 0, 0));
  • }
  • }
  • rule("aim bot")
  • disabled rule("bypass speedlimit in air")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Is In Air(Event Player) == True;
  • }
  • actions
  • {
  • Start Transforming Throttle(Event Player, 0.500, 0.500, Facing Direction Of(Event Player));
  • Set Move Speed(Event Player, 200);
  • }
  • }
  • disabled rule("bypass speedlimit in air off")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Is In Air(Event Player) == False;
  • }
  • actions
  • {
  • disabled Start Transforming Throttle(Event Player, 0.500, 0.500, Facing Direction Of(Event Player));
  • Stop Transforming Throttle(Event Player);
  • Set Move Speed(Event Player, 100);
  • }
  • }
  • rule("player self healing")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Event Damage > 20;
  • }
  • actions
  • {
  • Stop All Heal Over Time(Event Player);
  • Wait(4, Ignore Condition);
  • Start Heal Over Time(Event Player, Event Player, 9999, 10);
  • }
  • }
  • rule("bot plays collision effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.punchRequest == True;
  • Is Dummy Bot(Event Player) == True;
  • Has Status(Event Player, Knocked Down) == True;
  • Hero Of(Ray Cast Hit Player(Update Every Frame(Position Of(Event Player)) + Vector(0, 0.750, 0), Update Every Frame(Position Of(
  • Event Player)) + Vector(0, 0.750, 0) + 3 * Facing Direction Of(Event Player), All Players(Opposite Team Of(Team Of(
  • Event Player.standUser))), Event Player, True)) == Hero(Doomfist);
  • }
  • actions
  • {
  • Apply Impulse(Event Player.punchingBot, Vector(0, 0 - Y Component Of(Velocity Of(Event Player.punchingBot)), 0), 0.001, To World,
  • Cancel Contrary Motion);
  • Wait Until(Is Firing Secondary(Event Player), 99999);
  • Wait Until(!Is Firing Secondary(Event Player), 99999);
  • Apply Impulse(Event Player.punchingBot, Vector(0, 1, 0), 200, To World, Cancel Contrary Motion);
  • Event Player.launchAngle = Vertical Facing Angle Of(Event Player);
  • Set Move Speed(Event Player, 100 * Cosine From Degrees(Event Player.launchAngle));
  • Event Player.punchTime = Total Time Elapsed;
  • While(Total Time Elapsed - Event Player.punchTime < 0.192);
  • Apply Impulse(Event Player, Down, 20 * Sine From Degrees(Event Player.launchAngle), To World, Cancel Contrary Motion);
  • Wait(0.016, Abort When False);
  • End;
  • Play Effect(All Players(All Teams), Tracer Recall Reappear Effect, Team Of(Event Player.standUser), Position Of(Event Player)
  • + Vector(0, 0.750, 0), 1);
  • Wait Until(!Has Status(Event Player, Knocked Down), 99999);
  • disabled Play Effect(All Players(All Teams), Baptiste Biotic Launcher Explosion Sound, Color(White), Position Of(Event Player) + Vector(0,
  • 0.750, 0), 50);
  • disabled Play Effect(All Players(All Teams), Doomfist Meteor Strike Impact Sound, Team Of(Event Player.standUser), Evaluate Once(
  • Position Of(Event Player)) + Vector(0, 0.750, 0), 200);
  • disabled Play Effect(All Players(All Teams), Doomfist Meteor Strike Impact Sound, Opposite Team Of(Team Of(Event Player.standUser)),
  • Evaluate Once(Position Of(Event Player)) + Vector(0, 0.750, 0), 200);
  • }
  • }
  • rule("bot plays attack hit effect")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Ability == Button(Secondary Fire);
  • disabled Has Status(Event Player, Knocked Down) == True;
  • disabled Hero Of(Ray Cast Hit Player(Update Every Frame(Position Of(Event Player)) + Vector(0, 0.750, 0), Update Every Frame(Position Of(
  • Event Player)) + Vector(0, 0.750, 0) + 3 * Facing Direction Of(Event Player), All Players(All Teams), Event Player, True))
  • == Hero(Doomfist);
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Tracer Recall Reappear Effect, Color(White), Position Of(Event Player) + Vector(0, 0.750, 0),
  • 1);
  • disabled Play Effect(All Players(All Teams), Pharah Concussive Blast Effect, Color(White), Position Of(Event Player) + Vector(0, 0.750, 0),
  • 1);
  • disabled Play Effect(All Players(All Teams), Doomfist Meteor Strike Impact Sound, Team Of(Event Player.standUser), Evaluate Once(
  • Position Of(Event Player)) + Vector(0, 0.750, 0), 200);
  • }
  • }
  • rule("Rule 26")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • disabled Create Progress Bar In-World Text(All Players(All Teams), Local Player.meter, Custom String(""), Update Every Frame(Eye Position(
  • Local Player) + 20 * Facing Direction Of(Local Player)), 0.100, Do Not Clip, Color(Purple), Color(White),
  • Visible To Position Values and Color, Default Visibility);
  • Create Progress Bar In-World Text(All Players(All Teams), Local Player.meter, Custom String(""), Update Every Frame(Eye Position(
  • Local Player) + 20 * Facing Direction Of(Local Player) + 0.500 * Direction From Angles(Horizontal Facing Angle Of(
  • Local Player), Vertical Facing Angle Of(Local Player) + 90)), 0.100, Do Not Clip, Color(Purple), Color(White),
  • Visible To Position Values and Color, Default Visibility);
  • Create Progress Bar In-World Text(All Players(All Teams), Local Player.meter, Custom String(""), Update Every Frame(Eye Position(
  • Local Player) + 20 * Facing Direction Of(Local Player) + 0.600 * Direction From Angles(Horizontal Facing Angle Of(
  • Local Player), Vertical Facing Angle Of(Local Player) + 90)), 0.100, Do Not Clip, Color(Purple), Color(White),
  • Visible To Position Values and Color, Default Visibility);
  • Create Progress Bar In-World Text(All Players(All Teams), Local Player.meter, Custom String(""), Update Every Frame(Eye Position(
  • Local Player) + 20 * Facing Direction Of(Local Player) + 0.700 * Direction From Angles(Horizontal Facing Angle Of(
  • Local Player), Vertical Facing Angle Of(Local Player) + 90)), 0.100, Do Not Clip, Color(Purple), Color(White),
  • Visible To Position Values and Color, Default Visibility);
  • }
  • }
Join the Workshop.codes Discord