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
  • Team Deathmatch
  • {
  • 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 maps
  • {
  • Black Forest
  • Black Forest Winter
  • Ecopoint: Antarctica
  • Ecopoint: Antarctica Winter
  • Hanamura
  • Hanamura Winter
  • Ilios Lighthouse
  • Ilios Ruins
  • Ilios Well
  • Lijiang Control Center
  • Lijiang Control Center Lunar New Year
  • Lijiang Garden
  • Lijiang Garden Lunar New Year
  • Paris
  • Petra
  • Temple of Anubis
  • Volskaya Industries
  • Workshop Chamber
  • Workshop Expanse
  • Workshop Expanse Night
  • Workshop Green Screen
  • Workshop Island
  • Workshop Island Night
  • }
  • }
  • disabled Practice Range
  • General
  • {
  • Limit Roles: 2 Of Each Role Per Team
  • Hero Limit: Off
  • }
  • }
  • Skirmish
  • heroes
  • {
  • General
  • {
  • Hero Limit: Off
  • Respawn Time Scalar: 30%
  • enabled maps
  • enabled heroes
  • {
  • Blizzard World
  • Blizzard World Winter
  • Dorado
  • Eichenwalde
  • Eichenwalde Halloween
  • Havana
  • Hollywood
  • Hollywood Halloween
  • Junkertown
  • King's Row
  • King's Row Winter
  • Paris
  • Watchpoint: Gibraltar
  • McCree
  • }
  • }
  • disabled Team Deathmatch
  • {
  • Limit Roles: 2 Of Each Role Per Team
  • }
  • }
  • extensions
  • {
  • 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
  • 8: meterPauseTimer
  • 9: standBreakTimer
  • 18: canHeal
  • 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);
  • Disable Built-In Game Mode Scoring;
  • }
  • }
  • rule("score go up")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • If(!Array Contains(All Players(Team 2), Attacker));
  • Modify Team Score(Team Of(Event Player), -1);
  • Else;
  • Modify Team Score(Opposite Team Of(Team Of(Event Player)), 1);
  • End;
  • }
  • }
  • rule("victory condition")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • (Team Score(Team 1) >= 20 || Team Score(Team 2) >= 20) == True;
  • }
  • actions
  • {
  • If(Team Score(Team 1) > Team Score(Team 2));
  • Declare Team Victory(Team 1);
  • Else;
  • Declare Team Victory(Team 2);
  • End;
  • }
  • }
  • 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("dummy bot init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • 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 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;
  • Event Player.canHeal = True;
  • Set Max Health(Event Player, 50);
  • }
  • }
  • 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) + (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) + (Current Game Mode == Game Mode(Deathmatch)
  • ? 16 : 8), Vector(0, 1000, 0), Vector(0, 0, 0));
  • Event Player.bots[1] = Last Created Entity;
  • 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 Secondary Fire Enabled(Event Player, False);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, False);
  • 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;
  • Chase Player Variable At Rate(Event Player, meter, 100, Total Time Elapsed - Event Player.meterPauseTimer > 1 ? 20 : 0,
  • Destination and Rate);
  • }
  • }
  • rule("normalize health")
  • rule("player spawn/respawns")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Absolute Value(Max Health(Event Player) - 405) > 5;
  • Is Alive(Event Player) == Has Spawned(Event Player);
  • }
  • actions
  • {
  • 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;
  • Event Player.meter = 100;
  • }
  • }
  • rule("dummy bot init")
  • rule("normalize health")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Absolute Value(Max Health(Event Player) - 255) > 5;
  • }
  • 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 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;
  • 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, 255 - Max Health(Event Player), True, False);
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • 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;
  • Event Player.punchingBot = Event Player.bots[0];
  • disabled Wait(0.016, Ignore Condition);
  • 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);
  • Wait Until(!Is Button Held(Event Player, Button(Primary Fire)) || Event Player.meter < 10, 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;
  • }
  • }
  • 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;
  • Event Player.meter >= 10;
  • }
  • 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);
  • disabled Event Player.punchingBot = Event Player.bots[1];
  • disabled Call Subroutine(punchBot);
  • disabled Wait(0.176, Ignore Condition);
  • Event Player.punchingBot = First Of(Remove From Array(Event Player.bots, Event Player.punchingBot));
  • Loop If Condition Is True;
  • }
  • }
  • disabled rule("camera")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • 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);
  • }
  • }
  • disabled rule("stun by bot")
  • {
  • 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;
  • }
  • actions
  • {
  • Clear Status(Event Player, Stunned);
  • }
  • }
  • disabled rule("knocked down by bot - collision")
  • {
  • 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;
  • }
  • actions
  • {
  • Clear Status(Event Player, Stunned);
  • }
  • }
  • 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 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);
  • Event Player.standUser.meter = Max(0, Event Player.standUser.meter - 10);
  • Event Player.standUser.meterPauseTimer = Total Time Elapsed;
  • 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;
  • }
  • }
  • disabled rule("bot punch boost for user")
  • {
  • event
  • {
  • 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
  • {
  • Apply Impulse(Event Player.standUser, Facing Direction Of(Event Player), -15, To World, Cancel Contrary Motion XYZ);
  • }
  • }
  • rule("player dies")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Kill(Event Player.bots, Attacker);
  • Wait Until(Is Alive(Event Player), 99999);
  • Respawn(Event Player.bots);
  • }
  • }
  • rule("bot takes damage - reflect damage to player & impulse")
  • rule("bot takes damage - reflect damage to player & impulse & self healing")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Damage(Event Player.standUser, Is Dummy Bot(Attacker) ? Attacker.standUser : Attacker,
  • disabled 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);
  • If(Is Button Held(Event Player.standUser, Button(Crouch)));
  • Event Player.standUser.meter = Min(200, Event Player.standUser.meter + 25);
  • If(Event Player.standUser.meter > 100);
  • Event Player.standUser.meterPauseTimer = Total Time Elapsed;
  • End;
  • Damage(Event Player.standUser, Is Dummy Bot(Attacker) ? Attacker.standUser : Attacker, 0.250 * Event Damage);
  • If(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;
  • Else;
  • Damage(Event Player.standUser, Is Dummy Bot(Attacker) ? Attacker.standUser : Attacker, 0.500 * Event Damage);
  • End;
  • }
  • }
  • rule("bots healths arent same, pick lower")
  • disabled rule("bots healths arent same, pick lower")
  • {
  • event
  • {
  • 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
  • {
  • Big Message(All Players(All Teams), Custom String("ye"));
  • 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;
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("stand respawn")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player.standUser) == True;
  • Is Dead(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.standUser.standBreakTimer = 0;
  • Chase Player Variable Over Time(Event Player.standUser, standBreakTimer, 100, 5, None);
  • 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);
  • }
  • }
  • disabled rule("debug bot")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Ana), Team 2, -1, Vector(0, 0, 0), Vector(0, 0, 0));
  • }
  • }
  • 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
  • {
  • 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
  • {
  • 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")
  • rule("hud meter")
  • {
  • 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);
  • Create Progress Bar In-World Text(Is Alive(Local Player) ? Local Player : False, Local Player.meter, Custom String(""),
  • Update Every Frame(Eye Position(Local Player) + 20 * Facing Direction Of(Local Player) + 3 * Direction From Angles(
  • Horizontal Facing Angle Of(Local Player), Vertical Facing Angle Of(Local Player) + 90)), 0.050, Do Not Clip, Color(Purple),
  • Color(White), Visible To Position Values and Color, Default Visibility);
  • Create Progress Bar In-World Text(Is Alive(Local Player) ? Local Player : False, Local Player.meter, Custom String(""),
  • Update Every Frame(Eye Position(Local Player) + 20 * Facing Direction Of(Local Player) + 3.100 * Direction From Angles(
  • Horizontal Facing Angle Of(Local Player), Vertical Facing Angle Of(Local Player) + 90)), 0.050, Do Not Clip, Color(Purple),
  • Color(White), Visible To Position Values and Color, Default Visibility);
  • Create Progress Bar In-World Text(Is Alive(Local Player) ? Local Player : False, Local Player.meter, Custom String(""),
  • Update Every Frame(Eye Position(Local Player) + 20 * Facing Direction Of(Local Player) + 3.200 * Direction From Angles(
  • Horizontal Facing Angle Of(Local Player), Vertical Facing Angle Of(Local Player) + 90)), 0.050, Do Not Clip, Color(Purple),
  • Color(White), Visible To Position Values and Color, Default Visibility);
  • Create Progress Bar In-World Text(Is Alive(Local Player) ? Local Player : False, Local Player.meter - 100, Custom String(""),
  • Update Every Frame(Eye Position(Local Player) + 19 * Facing Direction Of(Local Player) + 2.850 * Direction From Angles(
  • Horizontal Facing Angle Of(Local Player), Vertical Facing Angle Of(Local Player) + 90)), 0.050, Do Not Clip, Color(Yellow),
  • Color(White), Visible To Position Values and Color, Default Visibility);
  • Create Progress Bar In-World Text(Is Alive(Local Player) ? Local Player : False, Local Player.meter - 100, Custom String(""),
  • Update Every Frame(Eye Position(Local Player) + 19 * Facing Direction Of(Local Player) + 2.945 * Direction From Angles(
  • Horizontal Facing Angle Of(Local Player), Vertical Facing Angle Of(Local Player) + 90)), 0.050, Do Not Clip, Color(Yellow),
  • Color(White), Visible To Position Values and Color, Default Visibility);
  • Create Progress Bar In-World Text(Is Alive(Local Player) ? Local Player : False, Local Player.meter - 100, Custom String(""),
  • Update Every Frame(Eye Position(Local Player) + 19 * Facing Direction Of(Local Player) + 3.040 * Direction From Angles(
  • Horizontal Facing Angle Of(Local Player), Vertical Facing Angle Of(Local Player) + 90)), 0.050, Do Not Clip, Color(Yellow),
  • Color(White), Visible To Position Values and Color, Default Visibility);
  • Create Progress Bar In-World Text(Is Alive(Local Player) ? Local Player : False, Is Alive(Local Player.bots[0])
  • ? 100 * Normalized Health(Local Player.bots[0]) : Local Player.standBreakTimer, Custom String(""), Update Every Frame(
  • Eye Position(Local Player) + 20 * Facing Direction Of(Local Player) + 3.300 * Direction From Angles(Horizontal Facing Angle Of(
  • Local Player), Vertical Facing Angle Of(Local Player) + 90)), 0.050, Do Not Clip, Is Alive(Local Player.bots[0]) ? Color(Blue)
  • : Color(Red), Color(White), Visible To Position Values and Color, Default Visibility);
  • }
  • }
  • rule("stand selfhealing - damage")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.canHeal = False;
  • Stop All Heal Over Time(Event Player.standUser.bots);
  • Wait(4, Abort When False);
  • Event Player.canHeal = True;
  • disabled Wait Until(!Is Button Held(Event Player.standUser, Button(Crouch)), 99999);
  • disabled Start Heal Over Time(Event Player.standUser.bots, Empty Array, 9999, 50);
  • }
  • }
  • rule("stand self healing start")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Crouch)) == False;
  • Event Player.rushing == False;
  • Is True For All(Event Player.bots, Current Array Element.canHeal) == True;
  • }
  • actions
  • {
  • Start Heal Over Time(Event Player.bots, Empty Array, 9999, 12.500);
  • }
  • }
  • rule("stop healing bots")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Button Held(Event Player, Button(Crouch)) || Event Player.rushing) == True;
  • }
  • actions
  • {
  • Stop All Heal Over Time(Event Player.standUser.bots);
  • }
  • }
Join the Workshop.codes Discord