Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "Bloodsport? More like bloodsupport! Created by Dove. Special thanks to pluzorminuz for projectile arc trajectory calculations. Hold F to see changes to hero abilities."
  • }
  • lobby
  • {
  • Allow Players Who Are In Queue: Yes
  • Match Voice Chat: Enabled
  • Max FFA Players: 7
  • Max Spectators: 4
  • }
  • modes
  • {
  • Deathmatch
  • {
  • enabled maps
  • {
  • Black Forest
  • Blizzard World
  • Castillo
  • Château Guillard Halloween
  • Dorado
  • Eichenwalde Halloween
  • Kanezaka
  • King's Row
  • Necropolis
  • Paris
  • Petra
  • }
  • }
  • disabled Team Deathmatch
  • {
  • Mercy Resurrect Counteracts Kills: Off
  • }
  • General
  • {
  • Game Mode Start: Manual
  • Health Pack Respawn Time Scalar: 200%
  • Hero Limit: 1 Per Game
  • }
  • }
  • heroes
  • {
  • General
  • {
  • Ana
  • {
  • Ammunition Clip Size Scalar: 125%
  • Healing Dealt: 60%
  • Ultimate Generation Nano Boost: 140%
  • }
  • Baptiste
  • {
  • Ammunition Clip Size Scalar: 80%
  • Ultimate Generation - Passive Amplification Matrix: 0%
  • Ultimate Generation Amplification Matrix: 140%
  • }
  • Brigitte
  • {
  • Healing Dealt: 80%
  • Health: 60%
  • Jump Vertical Speed: 120%
  • Repair Pack Cooldown Time: 167%
  • Ultimate Generation Rally: 140%
  • }
  • Lúcio
  • {
  • Ammunition Clip Size Scalar: 140%
  • Health: 75%
  • Projectile Speed: 117%
  • Soundwave Knockback Scalar: 110%
  • Ultimate Generation Sound Barrier: 140%
  • }
  • Mercy
  • {
  • Ammunition Clip Size Scalar: 120%
  • Damage Dealt: 120%
  • Guardian Angel Cooldown Time: 500%
  • Ultimate Generation Valkyrie: 140%
  • }
  • Moira
  • {
  • Biotic Energy Maximum: 63%
  • Biotic Energy Recharge Rate: 5%
  • Biotic Orb Cooldown Time: 125%
  • Biotic Orb Max Healing Scalar: 50%
  • Projectile Speed: 135%
  • Ultimate Generation Coalescence: 140%
  • }
  • Sombra
  • {
  • Ammunition Clip Size Scalar: 50%
  • Health: 75%
  • Ultimate Generation - Combat EMP: 125%
  • Ultimate Generation - Passive EMP: 0%
  • }
  • Symmetra
  • {
  • Damage Dealt: 75%
  • Health: 40%
  • Teleporter Cooldown Time: 70%
  • Ultimate Generation Photon Barrier: 120%
  • }
  • Zenyatta
  • {
  • Damage Dealt: 75%
  • Orb of Discord: Off
  • Orb of Harmony: Off
  • Ultimate Generation - Combat Transcendence: 133%
  • Ultimate Generation Transcendence: 140%
  • }
  • enabled heroes
  • {
  • Ana
  • Baptiste
  • Brigitte
  • Lúcio
  • Mercy
  • Moira
  • Sombra
  • Zenyatta
  • }
  • }
  • }
  • extensions
  • {
  • Beam Effects
  • Buff Status Effects
  • Debuff Status Effects
  • Buff and Debuff Sounds
  • Explosion Sounds
  • }
  • }
  • variables
  • {
  • global:
  • 2: map_deathplane_y
  • player:
  • 0: AmmoReload
  • 1: CFMoveSpeed
  • 2: HealingStart
  • 4: BrgExtraHealth
  • 5: BrgExtraArmor
  • 6: AnaExtraHealth
  • 7: SymExtraHealth
  • 8: SymExtraShields
  • 10: SmbDmg
  • 11: SmbUltDmg
  • 12: WhipPull
  • 13: CFHealMod
  • 14: CFHealModReg
  • 15: RushOverload
  • 16: OrbHalo
  • 17: AngelStart
  • 18: AngelTrace
  • 19: TranscendenceDmg
  • 20: AngelFlight
  • 21: RezCloud
  • 22: V
  • 22: AmpBomb
  • 23: HumilityVis
  • 24: HumilityCheck
  • 25: DiscordCheck
  • 26: DiscordIcon
  • 27: HumilityIcon
  • 28: OrbVictim
  • 29: OrbTargetValid
  • 30: TempShields
  • 31: ShieldPool
  • 32: DDamage
  • 33: OrbHUD
  • 34: Help0
  • 35: Help1
  • 36: Help2
  • 37: Help3
  • 38: ColorCode
  • 39: HDamage
  • 40: HHealing
  • 41: Help4
  • 42: Help5
  • 43: Help6
  • 44: proj_p0
  • 45: proj_p1
  • 46: proj_p2
  • 47: proj_apex_t
  • 48: proj_dir
  • 49: ray_cast_t
  • 50: ray_cast_start
  • 51: ray_cast_end
  • 52: ray_cast_hit_pos
  • 53: proj_predict_land_pos
  • 54: proj_predict_land_t
  • 55: proj_p0_hidden
  • 56: proj_dir_hidden
  • 57: proj_dir_raw_hidden
  • 58: AngelTarget
  • 59: AngelDir
  • 60: AngelToggle
  • 61: CaduceusDamage
  • 62: CaduceusDrain
  • 63: EMPGlow
  • }
  • subroutines
  • {
  • 0: ClearOrbs
  • 1: BombArc
  • 2: BombOrigin
  • 3: BombRecoil
  • 4: BombCollision
  • }
  • rule("All: color code")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • disabled Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • If(Hero Of(Event Player) == Hero(Ana));
  • Event Player.ColorCode = Color(Blue);
  • Else If(Hero Of(Event Player) == Hero(Baptiste));
  • Event Player.ColorCode = Color(Orange);
  • Else If(Hero Of(Event Player) == Hero(Brigitte));
  • Event Player.ColorCode = Color(Yellow);
  • Else If(Hero Of(Event Player) == Hero(Lúcio));
  • Event Player.ColorCode = Color(Green);
  • Else If(Hero Of(Event Player) == Hero(Mercy));
  • Event Player.ColorCode = Color(White);
  • Else If(Hero Of(Event Player) == Hero(Moira));
  • Event Player.ColorCode = Color(Purple);
  • Else If(Hero Of(Event Player) == Hero(Sombra));
  • Event Player.ColorCode = Color(Rose);
  • Else If(Hero Of(Event Player) == Hero(Symmetra));
  • Event Player.ColorCode = Color(Aqua);
  • Else If(Hero Of(Event Player) == Hero(Zenyatta));
  • Event Player.ColorCode = Color(Red);
  • Else;
  • Event Player.ColorCode = Color(Gray);
  • End;
  • Wait Until(Is Dead(Event Player) == True, 99999);
  • Wait Until(Is Alive(Event Player) == True, 10);
  • Loop;
  • disabled Loop If(Is Dead(Event Player) == True);
  • }
  • }
  • disabled rule("Testing: check sl")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Create HUD Text(All Players(All Teams), Server Load, Null, Null, Left, 0, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • }
  • }
  • disabled rule("Testing: show altitude")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Create HUD Text(All Players(All Teams), Altitude Of(Event Player), Null, Null, Left, 0, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • }
  • }
  • disabled rule("Testing: show damage")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • All;
  • }
  • actions
  • {
  • Small Message(Attacker, Custom String("{0}", Event Damage));
  • }
  • }
  • disabled rule("Testing: dummy bot attack")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is In View Angle(Event Player, Host Player, 20) == True;
  • }
  • actions
  • {
  • If(Hero Of(Event Player) == Hero(Moira));
  • Start Holding Button(Event Player, Button(Secondary Fire));
  • Else;
  • Start Holding Button(Event Player, Button(Primary Fire));
  • If(Hero Of(Event Player) == Hero(Baptiste));
  • Wait Until(Ammo(Event Player, 0) == 0, 99999);
  • Press Button(Event Player, Button(Reload));
  • disabled Wait(0.250, Ignore Condition);
  • disabled Loop If Condition Is True;
  • End;
  • End;
  • Wait Until(Is In View Angle(Event Player, Host Player, 20) == False, 99999);
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • }
  • }
  • disabled rule("Testing: bot outline")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Start Forcing Player Outlines(Event Player, All Players(All Teams), True, Event Player.ColorCode, Always);
  • }
  • }
  • disabled rule("Testing: bot shields")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Add Health Pool To Player(Event Player, Shields, 600, True, True);
  • Set Healing Received(Event Player, 1000);
  • }
  • }
  • disabled rule("Testing: Unkillable")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Unkillable, 9999);
  • }
  • }
  • disabled rule("Testing: Create bot")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • disabled Create Dummy Bot(Random Value In Array(Append To Array(Append To Array(All Support Heroes, Hero(Symmetra)), Hero(Sombra))),
  • All Teams, -1, Ray Cast Hit Position(Eye Position(Event Player), Facing Direction Of(Event Player) * 50, Null, Event Player,
  • False), Event Player);
  • disabled Create Dummy Bot(Random Value In Array(All Support Heroes), All Teams, -1, Random Value In Array(Spawn Points(All Teams)),
  • Facing Direction Of(Event Player) * Vector(-1, -1, -1));
  • disabled Create Dummy Bot(Hero(Roadhog), All Teams, -1, Eye Position(Event Player), Vector(0, 0, 0));
  • Create Dummy Bot(Random Value In Array(Append To Array(All Support Heroes, Hero(Sombra))), All Teams, -1, Random Value In Array(
  • Spawn Points(All Teams)), Random Value In Array(Spawn Points(All Teams)));
  • }
  • }
  • rule("Ana: help interface")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Ana;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • Create HUD Text(Event Player, Custom String("Biotic Rifle"), Custom String("No change"), Null, Left, 0, Event Player.ColorCode,
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help0 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Sleep Dart"), Custom String("Heal when damaging sleeping enemies"), Null, Left, 1,
  • Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help1 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Biotic Grenade"), Custom String("No change"), Null, Left, 2, Event Player.ColorCode,
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Custom String("Biotic Grenade"), Custom String("Launch self backwards when self-healing"), Null,
  • Left, 2, Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help2 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Nano Boost"), Custom String("Grants Sleep Dart an area of effect"), Null, Left, 3,
  • Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Custom String("Nano Boost"), Custom String("No change"), Null, Left, 3, Event Player.ColorCode,
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help3 = Last Text ID;
  • Wait Until(Is Button Held(Event Player, Button(Interact)) == False, 99999);
  • Destroy HUD Text(Event Player.Help0);
  • Destroy HUD Text(Event Player.Help1);
  • Destroy HUD Text(Event Player.Help2);
  • Destroy HUD Text(Event Player.Help3);
  • }
  • }
  • rule("Ana: self-heal when damaging sleeping enemy")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Ana;
  • }
  • conditions
  • {
  • Has Status(Victim, Asleep) == True;
  • Event Player == Attacker;
  • Event Ability != Button(Ability 1);
  • }
  • actions
  • {
  • Start Heal Over Time(Event Player, Event Player, 0.616, 83.333);
  • Wait Until(Has Status(Event Player, Asleep) == False, 1.500);
  • Stop All Heal Over Time(Event Player);
  • disabled Start Heal Over Time(Event Player, Event Player, 0.616, 138.889);
  • disabled Wait Until(Has Status(Event Player, Asleep) == False, 0.616);
  • Heal(Event Player, Event Player, 50);
  • disabled Stop All Heal Over Time(Event Player);
  • Wait(0.800, Ignore Condition);
  • }
  • }
  • rule("Ana: extra health")
  • rule("Ana: grenade jump")
  • {
  • event
  • {
  • Player Received Healing;
  • All;
  • Ana;
  • }
  • conditions
  • {
  • Event Ability == Button(Ability 2);
  • }
  • actions
  • {
  • Apply Impulse(Event Player, Facing Direction Of(Event Player) * -1, 17.500, To World, Cancel Contrary Motion);
  • }
  • }
  • rule("Ana: reduced health")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Ana;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • Set Max Health(Event Player, 87.500);
  • disabled Add Health Pool To Player(Event Player, Health, 25, True, True);
  • disabled Event Player.AnaExtraHealth = Last Created Health Pool;
  • Wait Until(Is Dead(Event Player), 99999);
  • disabled Remove Health Pool From Player(Event Player.AnaExtraHealth);
  • Set Max Health(Event Player, 100);
  • }
  • }
  • disabled rule("Ana: extra health")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Ana;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • Set Max Health(Event Player, 112.500);
  • disabled Add Health Pool To Player(Event Player, Health, 25, True, True);
  • disabled Event Player.AnaExtraHealth = Last Created Health Pool;
  • Wait Until(Is Dead(Event Player), 99999);
  • disabled Remove Health Pool From Player(Event Player.AnaExtraHealth);
  • Set Max Health(Event Player, 100);
  • }
  • }
  • rule("Ana: AoE sleep dart")
  • disabled rule("Ana: AoE sleep dart")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Ana;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == True;
  • Event Ability == Button(Ability 1);
  • }
  • actions
  • {
  • Set Status(Filtered Array(Players Within Radius(Position Of(Victim), 4, All Teams, Surfaces),
  • Current Array Element != Event Player), Event Player, Asleep, 5);
  • }
  • }
  • rule("Bap: help interface")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • Create HUD Text(Event Player, Custom String("Exo Boots"), Custom String("No change"), Null, Left, 0, Event Player.ColorCode, Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help0 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Biotic Launcher"), Custom String("Secondary fire is a bomb"), Null, Left, 1,
  • Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help1 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Regenerative Burst"), Custom String("No change"), Null, Left, 2,
  • Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help2 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Immortality Field"), Custom String("Kills don't count while immortal"), Null, Left, 3,
  • Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help3 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Amplification Matrix"), Custom String(
  • "Doubles reload from secondary fire, eliminates recoil"), Null, Left, 4, Event Player.ColorCode, Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Event Player.Help4 = Last Text ID;
  • Wait Until(Is Button Held(Event Player, Button(Interact)) == False, 99999);
  • Destroy HUD Text(Event Player.Help0);
  • Destroy HUD Text(Event Player.Help1);
  • Destroy HUD Text(Event Player.Help2);
  • Destroy HUD Text(Event Player.Help3);
  • Destroy HUD Text(Event Player.Help4);
  • }
  • }
  • rule("Bap: bomb detonation")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Firing Secondary(Event Player) == True;
  • }
  • actions
  • {
  • Call Subroutine(BombOrigin);
  • Call Subroutine(BombArc);
  • Start Rule(BombRecoil, Restart Rule);
  • disabled Start Rule(BombArc, Do Nothing);
  • Set Facing(Event Player, Vector(X Component Of(Facing Direction Of(Event Player)), Y Component Of(Facing Direction Of(
  • Event Player)) + 0.010 * Random Integer(1, 7), Z Component Of(Facing Direction Of(Event Player))), To World);
  • Set Secondary Fire Enabled(Event Player, False);
  • Wait(7 * Event Player.proj_predict_land_t, Ignore Condition);
  • disabled Play Effect(All Players(All Teams), Good Explosion, Color(Aqua), Event Player.proj_predict_land_pos, 5);
  • Start Damage Over Time(Players Within Radius(Event Player.proj_predict_land_pos, 0.500, All Teams, Surfaces And Enemy Barriers),
  • Event Player, 0.050, 400);
  • If(Count Of(Remove From Array(Players Within Radius(Event Player.proj_predict_land_pos, 0.500, All Teams,
  • Surfaces And Enemy Barriers), Event Player)) > 0);
  • Set Ultimate Charge(Event Player, Ultimate Charge Percent(Event Player) + Absolute Value(Count Of(Players Within Radius(
  • Event Player.proj_predict_land_pos, 0.500, Filtered Array(All Players(All Teams), Current Array Element != Event Player),
  • Surfaces And Enemy Barriers)) * 1.212));
  • End;
  • Damage(Players Within Radius(Event Player.proj_predict_land_pos, 3, All Teams, Surfaces And Enemy Barriers), Event Player,
  • Event Player.V == False ? 20 : 40);
  • Event Player.AmpBomb == False ? 20 : 40);
  • Set Secondary Fire Enabled(Event Player, True);
  • Wait(
  • Event Player.proj_predict_land_t * 7 <= 0.900 ? 0.900 - 7 * Event Player.proj_predict_land_t : 7 * Event Player.proj_predict_land_t,
  • Abort When False);
  • disabled Wait(0.064, Abort When False);
  • Wait(0.900 - 7 * Event Player.proj_predict_land_t, Abort When False);
  • Loop If Condition Is True;
  • disabled Loop If Condition Is True;
  • }
  • }
  • rule("Bap: bomb origin")
  • {
  • event
  • {
  • Subroutine;
  • BombOrigin;
  • }
  • actions
  • {
  • Event Player.proj_p0_hidden = Eye Position(Event Player);
  • Event Player.proj_dir_raw_hidden = Facing Direction Of(Event Player);
  • Event Player.proj_dir_hidden = Vertical Facing Angle Of(Event Player) < -89 ? Up : (Vertical Facing Angle Of(Event Player)
  • > 89 ? Down : Normalize(Facing Direction Of(Event Player) + 0.007 * Up));
  • }
  • }
  • rule("Bap: bomb trajectory")
  • {
  • event
  • {
  • Subroutine;
  • BombArc;
  • }
  • actions
  • {
  • Event Player.proj_p0 = Event Player.proj_p0_hidden;
  • Event Player.proj_dir = Event Player.proj_dir_hidden;
  • Event Player.proj_p1 = Event Player.proj_p0 + 0.500 * 60 * 7 * Event Player.proj_dir;
  • Event Player.proj_p2 = Event Player.proj_p0 + 60 * 7 * Event Player.proj_dir + 0.500 * 7 * 7 * -20.100 * Up;
  • Event Player.proj_apex_t = -1 * Y Component Of(Event Player.proj_dir) * 60 / -20.100 / 7;
  • For Player Variable(Event Player, ray_cast_t, 0, 1, 0.004);
  • Event Player.ray_cast_start = Evaluate Once((1 - Event Player.ray_cast_t) * (1 - Event Player.ray_cast_t))
  • * Event Player.proj_p0 + Evaluate Once(2 * (1 - Event Player.ray_cast_t) * Event Player.ray_cast_t)
  • * Event Player.proj_p1 + Evaluate Once(Event Player.ray_cast_t * Event Player.ray_cast_t) * Event Player.proj_p2;
  • If(Y Component Of(Event Player.ray_cast_start) < Global.map_deathplane_y);
  • Break;
  • End;
  • Event Player.ray_cast_end = Evaluate Once((0.996 - Event Player.ray_cast_t) * (0.996 - Event Player.ray_cast_t))
  • * Event Player.proj_p0 + Evaluate Once(2 * (0.996 - Event Player.ray_cast_t) * (Event Player.ray_cast_t + 0.004))
  • * Event Player.proj_p1 + Evaluate Once((Event Player.ray_cast_t + 0.004) * (Event Player.ray_cast_t + 0.004))
  • * Event Player.proj_p2;
  • Event Player.ray_cast_hit_pos = Ray Cast Hit Position(Event Player.ray_cast_start, Event Player.ray_cast_end, Null, Event Player,
  • True);
  • If(Ray Cast Hit Player(Event Player.ray_cast_start, Event Player.ray_cast_end, All Players(All Teams), Event Player, True)
  • disabled If(Ray Cast Hit Player(Event Player.ray_cast_start, Event Player.ray_cast_end, All Players(All Teams), Event Player, True)
  • == True);
  • Damage(Ray Cast Hit Player(Event Player.ray_cast_start, Event Player.ray_cast_end, All Players(All Teams), Event Player, True),
  • Event Player, 20);
  • Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Orange), Ray Cast Hit Player(Event Player.ray_cast_start,
  • Event Player.ray_cast_end, All Players(All Teams), Event Player, True), 2);
  • End;
  • disabled Damage(Ray Cast Hit Player(Event Player.ray_cast_start, Event Player.ray_cast_end, All Players(All Teams), Event Player, True),
  • Event Player, Event Player.AmpBomb == False ? 20 : 40);
  • disabled Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Orange), Ray Cast Hit Player(Event Player.ray_cast_start,
  • Event Player.ray_cast_end, All Players(All Teams), Event Player, True), 2);
  • disabled Start Rule(BombCollision, Do Nothing);
  • disabled End;
  • "hit something"
  • If(Event Player.ray_cast_hit_pos != Event Player.ray_cast_end);
  • Break;
  • End;
  • End;
  • "adjustment term"
  • Event Player.proj_predict_land_t = Event Player.ray_cast_t + 0.004 * (Distance Between(Event Player.ray_cast_start,
  • Event Player.ray_cast_hit_pos) / Distance Between(Event Player.ray_cast_start, Event Player.ray_cast_end));
  • Event Player.proj_predict_land_pos = Event Player.ray_cast_hit_pos;
  • Wait(0.064, Ignore Condition);
  • }
  • }
  • disabled rule("Bap: bomb collision")
  • {
  • event
  • {
  • Subroutine;
  • BombCollision;
  • }
  • actions
  • {
  • Wait(Event Player.ray_cast_t, Abort When False);
  • disabled Wait(Distance Between(Event Player, Ray Cast Hit Player(Event Player.ray_cast_start, Event Player.ray_cast_end, All Players(
  • All Teams), Event Player, True)) / 60, Abort When False);
  • Damage(Ray Cast Hit Player(Event Player.ray_cast_start, Event Player.ray_cast_end, All Players(All Teams), Event Player, True),
  • Event Player, Event Player.AmpBomb == False ? 20 : 40);
  • Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Orange), Ray Cast Hit Player(Event Player.ray_cast_start,
  • Event Player.ray_cast_end, All Players(All Teams), Event Player, True), 2);
  • }
  • }
  • rule("Bap: bomb recoil")
  • {
  • event
  • {
  • Subroutine;
  • BombRecoil;
  • }
  • actions
  • {
  • disabled If(Is Using Ultimate(Event Player) == False);
  • Set Facing(Event Player, Vector(X Component Of(Facing Direction Of(Event Player)), Y Component Of(Facing Direction Of(
  • Event Player)) + 0.010 * Random Integer(1, 7), Z Component Of(Facing Direction Of(Event Player))), To World);
  • Event Player)) + 0.015 * Random Integer(1, 7), Z Component Of(Facing Direction Of(Event Player))), To World);
  • disabled Event Player.AmmoReload = 3;
  • disabled Else;
  • disabled Event Player.AmmoReload = 6;
  • disabled End;
  • disabled If(Ammo(Event Player, 0) >= Max Ammo(Event Player, 0) - Event Player.AmmoReload && Ammo(Event Player, 0) < 36);
  • disabled Set Ammo(Event Player, 0, 36);
  • disabled Else If(Ammo(Event Player, 0) < Max Ammo(Event Player, 0) - Event Player.AmmoReload);
  • disabled Set Ammo(Event Player, 0, Ammo(Event Player, 0) + Event Player.AmmoReload);
  • disabled End;
  • disabled Wait(0.900, Ignore Condition);
  • disabled Loop If Condition Is True;
  • }
  • }
  • rule("Bap: bomb knockback")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Baptiste;
  • }
  • conditions
  • {
  • Event Ability != Button(Primary Fire);
  • Event Ability != Button(Melee);
  • disabled Event Damage == (20 || 40);
  • }
  • actions
  • {
  • disabled Wait(0.016, Ignore Condition);
  • Apply Impulse(Victim, Direction Towards(Event Player.proj_predict_land_pos, Victim), 3 - Distance Between(
  • Event Player.proj_predict_land_pos, Victim), To World, Incorporate Contrary Motion);
  • Set Environment Credit Player(Victim, Event Player);
  • }
  • }
  • rule("Bap: track amplification (pending)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.AmpBomb = False;
  • }
  • }
  • rule("Bap: can't score in immortality field")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • All;
  • Baptiste;
  • }
  • conditions
  • {
  • Has Status(Event Player, Unkillable) == True;
  • }
  • actions
  • {
  • Set Player Score(Event Player, Score Of(Event Player) - 1);
  • }
  • }
  • rule("Brg: help interface")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Brigitte;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • Create HUD Text(Event Player, Custom String("Inspire"), Custom String("Healing slightly reduced"), Null, Left, 0,
  • Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help0 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Rocket Flail"), Custom String("No change"), Null, Left, 1, Event Player.ColorCode,
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help1 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Barrier Shield"), Custom String("Health reduced"), Null, Left, 2,
  • Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help2 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Shield Bash"), Custom String("No change"), Null, Left, 3, Event Player.ColorCode,
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help3 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Whip Shot"), Custom String("Cooldown increased; pulls while Rush Pack is active"),
  • Null, Left, 4, Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help4 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Rush Pack"), Custom String("Gain a short burst of speed"), Null, Left, 5,
  • Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help5 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Rally"), Custom String("No change"), Null, Left, 6, Event Player.ColorCode, Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help6 = Last Text ID;
  • Wait Until(Is Button Held(Event Player, Button(Interact)) == False, 99999);
  • Destroy HUD Text(Event Player.Help0);
  • Destroy HUD Text(Event Player.Help1);
  • Destroy HUD Text(Event Player.Help2);
  • Destroy HUD Text(Event Player.Help3);
  • Destroy HUD Text(Event Player.Help4);
  • Destroy HUD Text(Event Player.Help5);
  • Destroy HUD Text(Event Player.Help6);
  • }
  • }
  • rule("Brg: extra armor")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Brigitte;
  • }
  • conditions
  • {
  • disabled Has Spawned(Event Player) == True;
  • Is Dead(Event Player) == False;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Add Health Pool To Player(Event Player, Health, 10, True, True);
  • Event Player.BrgExtraHealth = Last Created Health Pool;
  • Add Health Pool To Player(Event Player, Armor, 70, True, True);
  • Event Player.BrgExtraArmor = Last Created Health Pool;
  • Wait Until(Is Dead(Event Player), 99999);
  • Remove Health Pool From Player(Event Player.BrgExtraHealth);
  • Remove Health Pool From Player(Event Player.BrgExtraArmor);
  • }
  • }
  • rule("Brg: speed boost from repair pack")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Brigitte;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • "Repair pack has charge"
  • Ability Charge(Event Player, Button(Ability 2)) >= 1;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Soldier: 76 Sprint Start Sound, Color(White), Event Player, 60);
  • Create Effect(All Players(All Teams), Torbjörn Overloading Effect, Color(Yellow), Event Player, 20,
  • Visible To Position and Radius);
  • Event Player.RushOverload = Last Created Entity;
  • Set Move Speed(Event Player, 150);
  • Event Player.WhipPull = True;
  • Set Ability Charge(Event Player, Button(Ability 2), Ability Charge(Event Player, Button(Ability 2)) - 1);
  • Wait(1.500, Ignore Condition);
  • Destroy Effect(Event Player.RushOverload);
  • Set Move Speed(Event Player, 100);
  • Event Player.WhipPull = False;
  • }
  • }
  • rule("Brg: pull with whip shot")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Brigitte;
  • }
  • conditions
  • {
  • Event Ability == Button(Ability 1);
  • Event Player.WhipPull == True;
  • }
  • actions
  • {
  • Apply Impulse(Victim, Direction Towards(Position Of(Victim), Position Of(Event Player)), 13 + 2 * Altitude Of(Victim), To World,
  • disabled Apply Impulse(Victim, Direction Towards(Position Of(Victim), Position Of(Event Player)), 13 + 2 * Altitude Of(Victim), To World,
  • Cancel Contrary Motion);
  • disabled Wait(1, Ignore Condition);
  • disabled Event Player.WhipPull = False;
  • Apply Impulse(Victim, Direction Towards(Position Of(Victim), Position Of(Event Player)), 17, To World, Cancel Contrary Motion);
  • }
  • }
  • rule("Brg: knockback resist during ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Brigitte;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == True;
  • }
  • actions
  • {
  • Set Knockback Received(Event Player, 25);
  • Wait Until(Is Using Ultimate(Event Player) == False, 10);
  • Set Knockback Received(Event Player, 100);
  • }
  • }
  • rule("Brg: status resist during ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Brigitte;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == True;
  • (Has Status(Event Player, Hacked) || Has Status(Event Player, Asleep)) == True;
  • }
  • actions
  • {
  • Wait(3, Abort When False);
  • Clear Status(Event Player, Hacked);
  • Clear Status(Event Player, Asleep);
  • }
  • }
  • rule("Lco: help interface")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • Create HUD Text(Event Player, Custom String("Wall Ride"), Custom String("No change"), Null, Left, 0, Event Player.ColorCode, Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help0 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Sonic Amplifier"), Custom String("Projectile speed increased"), Null, Left, 1,
  • Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help1 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Soundwave"), Custom String("No change"), Null, Left, 2, Event Player.ColorCode, Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help2 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Crossfade"), Custom String("Effects increase over time while avoiding damage"), Null,
  • Left, 3, Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help3 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Amp It Up"), Custom String("No change"), Null, Left, 4, Event Player.ColorCode, Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help4 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Sound Barrier"), Custom String("Knocks back nearby enemies"), Null, Left, 5,
  • Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help5 = Last Text ID;
  • Wait Until(Is Button Held(Event Player, Button(Interact)) == False, 99999);
  • Destroy HUD Text(Event Player.Help0);
  • Destroy HUD Text(Event Player.Help1);
  • Destroy HUD Text(Event Player.Help2);
  • Destroy HUD Text(Event Player.Help3);
  • Destroy HUD Text(Event Player.Help4);
  • Destroy HUD Text(Event Player.Help5);
  • }
  • }
  • rule("Lco: normal speed to start")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.CFMoveSpeed = 100;
  • Event Player.CFHealModReg = 0;
  • disabled Set Max Health(Event Player, 75);
  • }
  • }
  • rule("Lco: remove heal over time & bonus speed on damage")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • Lúcio;
  • }
  • actions
  • {
  • Event Player.CFMoveSpeed = 100;
  • Set Move Speed(Event Player, 100);
  • If(Event Player.HumilityCheck == True);
  • Stop All Healing Modifications;
  • Start Healing Modification(Event Player, Event Player, 80, Receivers Healers and Healing Percent);
  • Event Player.HHealing = Last Healing Modification ID;
  • Else;
  • Stop All Healing Modifications;
  • End;
  • }
  • }
  • rule("Lco: bonus healing after avoiding damage")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Health(Event Player) < Max Health(Event Player);
  • Is Using Ability 1(Event Player) == False;
  • }
  • actions
  • {
  • Wait(1.500, Ignore Condition);
  • Start Healing Modification(Event Player, Event Player, 160, Receivers Healers and Healing Percent);
  • Event Player.CFHealMod[Event Player.CFHealModReg] = Last Healing Modification ID;
  • Event Player.CFHealModReg += 1;
  • Loop If Condition Is True;
  • If(Event Player.HumilityCheck == True);
  • Stop All Healing Modifications;
  • Start Healing Modification(Event Player, Event Player, 75, Receivers Healers and Healing Percent);
  • Event Player.HHealing = Last Healing Modification ID;
  • Else;
  • Stop All Healing Modifications;
  • End;
  • }
  • }
  • rule("Lco: bonus speed after avoiding damage")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • disabled Event Player.AmmoReload = 100;
  • Wait(1.500, Ignore Condition);
  • Event Player.CFMoveSpeed += 12;
  • Set Move Speed(Event Player, Event Player.CFMoveSpeed);
  • Abort If(Event Player.CFMoveSpeed >= 160);
  • Loop If Condition Is True;
  • Event Player.CFMoveSpeed = 100;
  • Set Move Speed(Event Player, Event Player.CFMoveSpeed);
  • }
  • }
  • rule("Lco: lose bonuses on death")
  • {
  • event
  • {
  • Player Died;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • disabled Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.CFMoveSpeed = 100;
  • Set Move Speed(Event Player, Event Player.CFMoveSpeed);
  • disabled Stop All Heal Over Time(Event Player);
  • Stop All Healing Modifications;
  • }
  • }
  • rule("Lco: SB damage")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == True;
  • }
  • actions
  • {
  • Wait Until(Altitude Of(Event Player) == 0 && Max Health(Event Player) > 300, 8);
  • Damage(Filtered Array(Players Within Radius(Position Of(Event Player), 12, All Teams, Surfaces And Enemy Barriers),
  • Current Array Element != Event Player), Event Player, 1.499);
  • }
  • }
  • rule("Lco: SB knockback")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == True;
  • Event Damage <= 3;
  • }
  • actions
  • {
  • Apply Impulse(Victim, Direction Towards(Position Of(Event Player), Position Of(Victim) + Vector(0, 1, 0)), 21 - Distance Between(
  • Position Of(Event Player), Position Of(Victim)), To World, Cancel Contrary Motion);
  • Set Environment Credit Player(Victim, Event Player);
  • }
  • }
  • rule("Mrc: help interface")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mercy;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • Create HUD Text(Event Player, Custom String("Regeneration"), Custom String("Healing reduced"), Null, Left, 0,
  • Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help0 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Angelic Descent"), Custom String("No change"), Null, Left, 1, Event Player.ColorCode,
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help1 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Caduceus Staff"), Custom String("Restores Regeneration to full while drawn"), Null,
  • Left, 2, Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help2 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Caduceus Blaster"), Custom String("Damage increased"), Null, Left, 3,
  • Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help3 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Ascending Angel"), Custom String("Launch self in facing direction"), Null, Left, 4,
  • Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Custom String("Ascending Angel"), Custom String(
  • "Launch self in facing direction; change toggle with \"Group Up\""), Null, Left, 4, Event Player.ColorCode, Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.Help4 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Resurrection"), Custom String("Can target self"), Null, Left, 5,
  • Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help5 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Valkyrie"), Custom String("Increases Ascending Angel speed"), Null, Left, 6,
  • Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help6 = Last Text ID;
  • Wait Until(Is Button Held(Event Player, Button(Interact)) == False, 99999);
  • Destroy HUD Text(Event Player.Help0);
  • Destroy HUD Text(Event Player.Help1);
  • Destroy HUD Text(Event Player.Help2);
  • Destroy HUD Text(Event Player.Help3);
  • Destroy HUD Text(Event Player.Help4);
  • Destroy HUD Text(Event Player.Help5);
  • Destroy HUD Text(Event Player.Help6);
  • }
  • }
  • rule("Mrc: launch in facing direction with guardian angel")
  • disabled rule("Mrc: launch in facing direction with guardian angel")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mercy;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Ability Cooldown(Event Player, Button(Ability 1)) == False;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Ring Explosion, Color(White), Event Player, 6);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(White), Event Player, 50);
  • Set Ability Cooldown(Event Player, Button(Ability 1), 7.500);
  • Event Player.AngelStart = Position Of(Event Player);
  • Create Beam Effect(All Players(All Teams), Good Beam, Event Player.AngelStart, Event Player, Color(White),
  • Visible To Position and Radius);
  • Event Player.AngelTrace = Last Created Entity;
  • Apply Impulse(Event Player, Facing Direction Of(Event Player), Is Using Ultimate(Event Player) == False ? 17 : 30, To World,
  • Cancel Contrary Motion);
  • Set Gravity(Event Player, 50);
  • Wait(0.250, Ignore Condition);
  • Wait Until(Speed Of(Event Player) <= 5.900, Is Using Ultimate(Event Player) == False ? 1 : 1.750);
  • Destroy Effect(Event Player.AngelTrace);
  • Set Gravity(Event Player, 100);
  • disabled Wait(0.016, Ignore Condition);
  • disabled If(Is Using Ultimate(Event Player) == False);
  • disabled Set Move Speed(Event Player, 310);
  • disabled Else;
  • disabled Set Move Speed(Event Player, 454.545);
  • disabled End;
  • disabled Start Forcing Throttle(Event Player, 1, 1, 0, 0, 0, 0);
  • disabled Wait Until(Is Button Held(Event Player, Button(Jump)) == True, 1);
  • disabled Stop Forcing Throttle(Event Player);
  • disabled Set Move Speed(Event Player, 100);
  • disabled Apply Impulse(Event Player, Facing Direction Of(Event Player) + Vector(0, 10, 0), 23.500, To Player, Cancel Contrary Motion);
  • }
  • }
  • disabled rule("Mrc: Caduceus Blaster damage boost")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mercy;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Secondary Fire)) == True;
  • Is Button Held(Event Player, Button(Primary Fire)) == False;
  • Weapon(Event Player) == 2;
  • }
  • actions
  • {
  • Event Player.CaduceusDrain = False;
  • Stop Damage Modification(Event Player.CaduceusDamage);
  • Start Damage Modification(All Players(All Teams), Event Player, 130, Receivers Damagers and Damage Percent);
  • Event Player.CaduceusDamage = Last Damage Modification ID;
  • Press Button(Event Player, Button(Primary Fire));
  • Wait(0.200, Abort When False);
  • Loop If Condition Is True;
  • Stop Damage Modification(Event Player.CaduceusDamage);
  • Event Player.CaduceusDrain = True;
  • }
  • }
  • disabled rule("Mrc: Caduceus Blaster heal")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Mercy;
  • }
  • conditions
  • {
  • Event Ability == Button(Primary Fire);
  • Event Player.CaduceusDrain == True;
  • }
  • actions
  • {
  • Heal(Event Player, Null, Event Was Critical Hit == True ? 4 : 2);
  • }
  • }
  • rule("Mrc: change ascending angel toggle")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mercy;
  • }
  • conditions
  • {
  • Is Communicating(Event Player, Group Up) == True;
  • }
  • actions
  • {
  • If(Event Player.AngelToggle == True);
  • Event Player.AngelToggle = False;
  • Small Message(Event Player, Custom String("Toggle OFF"));
  • Else;
  • Event Player.AngelToggle = True;
  • Small Message(Event Player, Custom String("Toggle ON"));
  • End;
  • Wait(0.250, Ignore Condition);
  • }
  • }
  • rule("Mrc: ascending angel via set pos")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mercy;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Ability Cooldown(Event Player, Button(Ability 1)) == False;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • }
  • actions
  • {
  • disabled Event Player.AngelDir = Facing Direction Of(Event Player);
  • Event Player.AngelStart = Position Of(Event Player);
  • Event Player.AngelFlight = Eye Position(Event Player);
  • Event Player.AngelTarget = Ray Cast Hit Position(Event Player.AngelFlight, Facing Direction Of(Event Player) * (Is Using Ultimate(
  • Event Player) == False ? 14.500 : 29) + Eye Position(Event Player), All Players(All Teams), All Players(All Teams), False);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(White), Event Player, 5);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(White), Event Player, 50);
  • Wait(0.016, Ignore Condition);
  • Create Beam Effect(All Players(All Teams), Good Beam, Event Player.AngelStart, Event Player, Color(White),
  • Visible To Position and Radius);
  • Event Player.AngelTrace = Last Created Entity;
  • Chase Player Variable At Rate(Event Player, AngelFlight, Event Player.AngelTarget, Is Using Ultimate(Event Player)
  • == False ? 10 : 20, None);
  • Start Forcing Player Position(Event Player, Event Player.AngelFlight, True);
  • disabled Wait Until(Event Player.AngelFlight == Event Player.AngelTarget || Altitude Of(Event Player) >= 25 || Is Button Held(Event Player,
  • Button(Jump)) == True, Is Using Ultimate(Event Player) == False ? 1.765 : 2.400);
  • If(Event Player.AngelToggle == True);
  • disabled Wait Until(Event Player.AngelFlight == Event Player.AngelTarget || Is Button Held(Event Player, Button(Jump)) == True,
  • Is Using Ultimate(Event Player) == False ? 1.334 : 2.400);
  • Wait Until(Event Player.AngelFlight == Event Player.AngelTarget || Is Button Held(Event Player, Button(Jump)) == True, 1.450);
  • Else;
  • disabled Wait Until(Event Player.AngelFlight == Event Player.AngelTarget || Is Button Held(Event Player, Button(Jump))
  • == True || Is Button Held(Event Player, Button(Ability 1)) == False, Is Using Ultimate(Event Player) == False ? 1.334 : 2.400);
  • Wait Until(Event Player.AngelFlight == Event Player.AngelTarget || Is Button Held(Event Player, Button(Jump))
  • == True || Is Button Held(Event Player, Button(Ability 1)) == False, 1.450);
  • End;
  • Stop Chasing Player Variable(Event Player, AngelFlight);
  • Stop Forcing Player Position(Event Player);
  • Destroy Effect(Event Player.AngelTrace);
  • Set Ability Cooldown(Event Player, Button(Ability 1), 7.500);
  • }
  • }
  • rule("Mrc: self-resurrection")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mercy;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Ability Cooldown(Event Player, Button(Ability 2)) == False;
  • Is Dead(Event Player) == True;
  • }
  • actions
  • {
  • Resurrect(Event Player);
  • Create Effect(All Players(All Teams), Cloud, Color(White), Event Player, 4, Visible To Position and Radius);
  • Event Player.RezCloud = Last Created Entity;
  • Set Ability Cooldown(Event Player, Button(Ability 2), 30);
  • Set Status(Event Player, Null, Invincible, 1);
  • Set Status(Event Player, Null, Rooted, 1);
  • Set Primary Fire Enabled(Event Player, False);
  • Set Aim Speed(Event Player, 0);
  • Wait(1, Ignore Condition);
  • Play Effect(All Players(All Teams), Good Explosion, Color(White), Event Player, 10);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Aim Speed(Event Player, 100);
  • Destroy Effect(Event Player.RezCloud);
  • }
  • }
  • rule("Mrc: less healing when blaster drawn")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mercy;
  • }
  • conditions
  • {
  • Weapon(Event Player) == 2;
  • disabled Is Using Ultimate(Event Player) == False;
  • }
  • actions
  • {
  • disabled Wait(0.800, Abort When False);
  • Set Healing Dealt(Event Player, 40);
  • }
  • }
  • rule("Mrc: normal healing when staff drawn")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mercy;
  • }
  • conditions
  • {
  • Weapon(Event Player) == 1;
  • }
  • actions
  • {
  • disabled If(Is Using Ultimate(Event Player) == False);
  • Wait(2, Abort When False);
  • disabled End;
  • Set Healing Dealt(Event Player, 100);
  • }
  • }
  • rule("Mor: help interface")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Moira;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • Create HUD Text(Event Player, Custom String("Biotic Grasp"), Custom String("Primary fire heals self; secondary fire does not"),
  • Null, Left, 0, Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help0 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Fade"), Custom String("Cooldown increased"), Null, Left, 1, Event Player.ColorCode,
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help1 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Biotic Orb"), Custom String("Projectile speed increased; healing reduced"), Null,
  • Left, 2, Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help2 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Biotic Orb"), Custom String(
  • "Projectile speed increased; reveals enemies through walls"), Null, Left, 3, Event Player.ColorCode, Color(White), Color(
  • White), Visible To and String, Default Visibility);
  • Event Player.Help3 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Coalescence"), Custom String("No change"), Null, Left, 4, Event Player.ColorCode,
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help4 = Last Text ID;
  • Wait Until(Is Button Held(Event Player, Button(Interact)) == False, 99999);
  • Destroy HUD Text(Event Player.Help0);
  • Destroy HUD Text(Event Player.Help1);
  • Destroy HUD Text(Event Player.Help2);
  • Destroy HUD Text(Event Player.Help3);
  • Destroy HUD Text(Event Player.Help4);
  • }
  • }
  • rule("Moira: start with no juice")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Moira;
  • }
  • conditions
  • {
  • disabled Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Set Ability Resource(Event Player, Button(Primary Fire), 0);
  • }
  • }
  • rule("Mor: recover from primary fire")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Moira;
  • }
  • conditions
  • {
  • Is Firing Primary(Event Player) == True;
  • Ability Resource(Event Player, Button(Primary Fire)) > 0;
  • }
  • actions
  • {
  • Set Healing Dealt(Event Player, 100);
  • Start Heal Over Time(Event Player, Event Player, 20, 35);
  • Wait Until(Is Firing Primary(Event Player) == False, 10);
  • Wait(0.250, Ignore Condition);
  • Stop All Heal Over Time(Event Player);
  • }
  • }
  • rule("Mor: self-heal ult charge")
  • {
  • event
  • {
  • Player Dealt Healing;
  • All;
  • Moira;
  • }
  • conditions
  • {
  • disabled Is Firing Primary(Event Player) == True;
  • Healee == Event Player;
  • Event Ability != Button(Ability 2);
  • Event Ability != Button(Ultimate);
  • Health(Event Player) < Max Health(Event Player);
  • Event Ability != Button(Secondary Fire);
  • }
  • actions
  • {
  • Event Player.HealingStart = Health(Event Player);
  • Wait(0.486, Abort When False);
  • Set Ultimate Charge(Event Player, Ultimate Charge Percent(Event Player) + 1);
  • Loop If Condition Is True;
  • Wait Until(Heal Over Time Count == 0, 10);
  • Abort;
  • disabled Set Ultimate Charge(Event Player, Ultimate Charge Percent(Event Player) + Event Healing / 18);
  • disabled Wait(0.500, Ignore Condition);
  • }
  • }
  • rule("Mor: disable self-heal from secondary fire")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Moira;
  • }
  • conditions
  • {
  • Is Firing Secondary(Event Player) == True;
  • }
  • actions
  • {
  • Set Healing Dealt(Event Player, 1);
  • Wait Until(Is Firing Secondary(Event Player) == False, 99999);
  • Set Healing Dealt(Event Player, 100);
  • }
  • }
  • rule("Mor: normal healing from biotic orb")
  • {
  • event
  • {
  • Player Received Healing;
  • All;
  • Moira;
  • }
  • conditions
  • {
  • Event Healing == Button(Ability 2);
  • Event Player == Healee;
  • Is Firing Secondary(Event Player) == True;
  • }
  • actions
  • {
  • Set Healing Dealt(Event Player, 76.470);
  • Wait Until(Event Healing != Button(Ability 2) || Health(Event Player) == Max Health(Event Player), 2.769);
  • If(Is Firing Secondary(Event Player) == True);
  • Set Healing Dealt(Event Player, 1);
  • Else;
  • Set Healing Dealt(Event Player, 100);
  • End;
  • }
  • }
  • rule("Mor: normalize ult charge from biotic orb healing")
  • {
  • event
  • {
  • Player Dealt Healing;
  • All;
  • Moira;
  • }
  • conditions
  • {
  • Event Ability == Button(Ability 2);
  • Is Firing Secondary(Event Player) == True;
  • }
  • actions
  • {
  • Wait(0.900, Abort When False);
  • Set Ultimate Charge(Event Player, Ultimate Charge Percent(Event Player) + 1);
  • Loop If Condition Is True;
  • }
  • }
  • disabled rule("Mor: refill biotic energy on kill")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • All;
  • Moira;
  • }
  • conditions
  • {
  • Event Ability == Button(Secondary Fire);
  • }
  • actions
  • {
  • Set Ability Resource(Event Player, Button(Primary Fire), 100);
  • }
  • }
  • rule("Mor: disallow primary fire when health full")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Moira;
  • }
  • conditions
  • {
  • Health(Event Player) == Max Health(Event Player);
  • }
  • actions
  • {
  • Set Primary Fire Enabled(Event Player, False);
  • Wait Until(Health(Event Player) < Max Health(Event Player), 99999);
  • Set Primary Fire Enabled(Event Player, True);
  • }
  • }
  • rule("Mor: end orbs on Fade")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Hero Of(Event Player.OrbVictim) == Hero(Moira);
  • Is Using Ability 1(Event Player.OrbVictim) == True;
  • }
  • actions
  • {
  • Call Subroutine(ClearOrbs);
  • }
  • }
  • rule("Mor: enemies visible when damaging with orb")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Moira;
  • }
  • conditions
  • {
  • Event Ability == Button(Ability 2);
  • Event Player == Attacker;
  • }
  • actions
  • {
  • Start Forcing Player Outlines(Victim, Attacker, True, Victim.ColorCode, Occluded);
  • Wait Until(Event Ability != Button(Ability 2), 1);
  • Stop Forcing Player Outlines(Victim, Event Player);
  • }
  • }
  • rule("Smb: help interface")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sombra;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • Create HUD Text(Event Player, Custom String("Opportunist"), Custom String("No change"), Null, Left, 0, Event Player.ColorCode,
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help0 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Machine Pistol"), Custom String("Clip size reduced"), Null, Left, 1,
  • Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help1 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Hack"), Custom String("Gain ult charge when healing from hacked health packs"), Null,
  • Left, 2, Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help2 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Stealth"), Custom String("No change"), Null, Left, 3, Event Player.ColorCode, Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help3 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Translocator"), Custom String("No change"), Null, Left, 4, Event Player.ColorCode,
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help4 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("EMP"), Custom String("Gain damage bonus while active; reloads ammo"), Null, Left, 5,
  • Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help5 = Last Text ID;
  • Wait Until(Is Button Held(Event Player, Button(Interact)) == False, 99999);
  • Destroy HUD Text(Event Player.Help0);
  • Destroy HUD Text(Event Player.Help1);
  • Destroy HUD Text(Event Player.Help2);
  • Destroy HUD Text(Event Player.Help3);
  • Destroy HUD Text(Event Player.Help4);
  • Destroy HUD Text(Event Player.Help5);
  • }
  • }
  • rule("Smb: ult damage boost & reload")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sombra;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == True;
  • }
  • actions
  • {
  • disabled Stop Damage Modification(Event Player.SmbDmg);
  • Set Ammo(Event Player, 0, 30);
  • Start Damage Modification(All Players(All Teams), Event Player, 150, Receivers Damagers and Damage Percent);
  • Create Effect(All Players(All Teams), Good Aura, Color(Rose), Event Player, 2, Visible To Position and Radius);
  • Event Player.SmbUltDmg = Last Damage Modification ID;
  • Event Player.EMPGlow = Last Created Entity;
  • Wait Until(Is Using Ultimate(Event Player) == False, 5);
  • Stop Damage Modification(Event Player.SmbUltDmg);
  • Destroy Effect(Event Player.EMPGlow);
  • disabled Start Damage Modification(All Players(All Teams), Event Player, 87.500, Receivers Damagers and Damage Percent);
  • disabled Event Player.SmbDmg = Last Damage Modification ID;
  • }
  • }
  • rule("Smb: ult charge from health pack healing")
  • {
  • event
  • {
  • Player Dealt Healing;
  • All;
  • Sombra;
  • }
  • conditions
  • {
  • Healer == Event Player;
  • }
  • actions
  • {
  • Set Ultimate Charge(Event Player, Ultimate Charge Percent(Event Player) + Event Healing / 14);
  • }
  • }
  • rule("Smb: end Zen orbs with hack")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Has Status(Event Player, Hacked) == True;
  • }
  • actions
  • {
  • Disallow Button(Event Player, Button(Ability 1));
  • Disallow Button(Event Player, Button(Ability 2));
  • Call Subroutine(ClearOrbs);
  • Wait Until(Has Status(Event Player, Hacked) == False, 10);
  • Allow Button(Event Player, Button(Ability 1));
  • Allow Button(Event Player, Button(Ability 2));
  • }
  • }
  • disabled rule("Sym: help interface")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • Create HUD Text(Event Player, Custom String("Photon Projector"), Custom String(""), Null, Left, 0, Event Player.ColorCode, Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help0 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Sentry Turret"), Custom String(""), Null, Left, 1, Event Player.ColorCode, Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help1 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Teleporter"), Custom String(""), Null, Left, 2, Event Player.ColorCode, Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.Help2 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Photon Barrier"), Custom String(""), Null, Left, 3, Event Player.ColorCode, Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help3 = Last Text ID;
  • Wait Until(Is Button Held(Event Player, Button(Interact)) == False, 99999);
  • Destroy HUD Text(Event Player.Help0);
  • Destroy HUD Text(Event Player.Help1);
  • Destroy HUD Text(Event Player.Help2);
  • Destroy HUD Text(Event Player.Help3);
  • }
  • }
  • rule("Sym: recover turrets on death")
  • {
  • event
  • {
  • Player Died;
  • All;
  • Symmetra;
  • }
  • actions
  • {
  • Set Ability Charge(Event Player, Button(Ability 1), 3);
  • }
  • }
  • rule("Sym: extra health, sort of")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • Add Health Pool To Player(Event Player, Health, 60, True, True);
  • Event Player.SymExtraHealth = Last Created Health Pool;
  • Add Health Pool To Player(Event Player, Shields, 50, True, True);
  • Event Player.SymExtraShields = Last Created Health Pool;
  • Wait Until(Is Dead(Event Player), 99999);
  • Remove Health Pool From Player(Event Player.SymExtraHealth);
  • Remove Health Pool From Player(Event Player.SymExtraShields);
  • }
  • }
  • disabled rule("Sym: secondary fire can't charge")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Secondary Fire)) == True;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Secondary Fire));
  • Wait(0.250, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Zen: help interface")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • Create HUD Text(Event Player, Custom String("Orb of Destruction"), Custom String("Damage reduced; gain temporary shields on hit"),
  • Null, Left, 0, Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help0 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Orb of Humility"), Custom String("Reduce damage & healing of victim"), Null, Left, 1,
  • Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help1 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Orb of Discord"), Custom String("Mutually exclusive with Orb of Humility"), Null,
  • Left, 2, Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help2 = Last Text ID;
  • Create HUD Text(Event Player, Custom String("Transcendence"), Custom String("Damage nearby enemies"), Null, Left, 3,
  • Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Help3 = Last Text ID;
  • Wait Until(Is Button Held(Event Player, Button(Interact)) == False, 99999);
  • Destroy HUD Text(Event Player.Help0);
  • Destroy HUD Text(Event Player.Help1);
  • Destroy HUD Text(Event Player.Help2);
  • Destroy HUD Text(Event Player.Help3);
  • }
  • }
  • rule("Zen: gain shields")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Event Player == Attacker;
  • }
  • actions
  • {
  • If(Event Was Critical Hit == True);
  • Event Player.TempShields += 20;
  • Else If(Event Ability == Button(Primary Fire) || Event Ability == Button(Secondary Fire) || Event Ability == Button(Melee));
  • Event Player.TempShields += 10;
  • End;
  • }
  • }
  • rule("Zen: shields decay")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Event Player.TempShields > 0;
  • }
  • actions
  • {
  • Remove Health Pool From Player(Event Player.ShieldPool);
  • Add Health Pool To Player(Event Player, Shields, Event Player.TempShields, False, False);
  • Event Player.ShieldPool = Last Created Health Pool;
  • Wait(0.125, Ignore Condition);
  • Event Player.TempShields -= 1;
  • Loop If Condition Is True;
  • disabled Event Player.TempShields -= 1;
  • Remove Health Pool From Player(Event Player.ShieldPool);
  • }
  • }
  • rule("Zen: lose extra shields on death")
  • {
  • event
  • {
  • Player Died;
  • All;
  • Zenyatta;
  • }
  • actions
  • {
  • Event Player.TempShields = 0;
  • Remove All Health Pools From Player(Event Player);
  • }
  • }
  • rule("Zen: track orb target")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Is True For Any(Filtered Array(All Players(All Teams), Hero Of(Current Array Element) != Hero(Sombra) || Is Using Ability 1(
  • Current Array Element) == False), Is In View Angle(Event Player, Player Closest To Reticle(Event Player, All Teams), 15))
  • != Null;
  • disabled Is In View Angle(Event Player, Player Closest To Reticle(Event Player, All Teams), 15) == True;
  • Is Alive(Player Closest To Reticle(Event Player, All Teams)) == True;
  • Is Alive(Event Player) == True;
  • Is In Line of Sight(Event Player, Player Closest To Reticle(Event Player, All Teams), Enemy Barriers Block LOS) == True;
  • Distance Between(Event Player, Player Closest To Reticle(Event Player, All Teams)) <= 40;
  • }
  • actions
  • {
  • Event Player.OrbTargetValid = True;
  • Event Player.OrbHalo = Sorted Array(Filtered Array(Players in View Angle(Event Player, All Teams, 15), Hero Of(
  • Current Array Element) != Hero(Sombra) || Is Using Ability 1(Current Array Element) == False), Distance Between(
  • Current Array Element, Event Player))[0];
  • disabled Event Player.OrbHalo = Sorted Array(Filtered Array(Players in View Angle(Event Player, All Teams, 15), Hero Of(Event Player)
  • != Hero(Sombra) || Is Using Ability 1(Current Array Element) == False), Distance Between(Current Array Element, Event Player));
  • disabled Event Player.OrbHalo = Player Closest To Reticle(Event Player, Filtered Array(All Living Players(All Teams), Hero Of(
  • Current Array Element) != Hero(Sombra) || Is Using Ability 1(Current Array Element) == False));
  • disabled Event Player.OrbHalo = Position Of(Player Closest To Reticle(Event Player, Filtered Array(All Living Players(All Teams), Hero Of(
  • Current Array Element) != Hero(Sombra) || Is Using Ability 1(Current Array Element) == False)));
  • disabled Event Player.OrbHalo = Position Of(Player Closest To Reticle(Event Player, All Teams));
  • Play Effect(Event Player, Ring Explosion, Color(Red), Event Player.OrbHalo + Vector(0, 2, 0), 2);
  • Wait(0.750, Ignore Condition);
  • Loop If Condition Is True;
  • Event Player.OrbTargetValid = False;
  • Abort If Condition Is False;
  • }
  • }
  • rule("Zen: clear orbs")
  • {
  • event
  • {
  • Subroutine;
  • ClearOrbs;
  • }
  • actions
  • {
  • If(Event Player.OrbVictim.HumilityCheck == True);
  • Big Message(Event Player.OrbVictim, Custom String("Orb of Humility returned"));
  • Else If(Event Player.OrbVictim.DiscordCheck == True);
  • Big Message(Event Player.OrbVictim, Custom String("Orb of Discord returned"));
  • End;
  • Stop Damage Modification(Event Player.OrbVictim.DDamage);
  • Stop Damage Modification(Event Player.OrbVictim.HDamage);
  • Stop Healing Modification(Event Player.OrbVictim.HHealing);
  • Destroy Icon(Event Player.OrbVictim.HumilityIcon);
  • Destroy Effect(Event Player.OrbVictim.HumilityVis);
  • Destroy Effect(Event Player.OrbVictim.DiscordIcon);
  • disabled Destroy Icon(Event Player.OrbVictim.DiscordIcon);
  • disabled Destroy Icon(Event Player.DiscordIcon);
  • Destroy Icon(Event Player.HumilityIcon);
  • Destroy Effect(Event Player.DiscordIcon);
  • Event Player.OrbVictim = Null;
  • All Players(All Teams).HumilityCheck = False;
  • All Players(All Teams).DiscordCheck = False;
  • Wait(0.100, Ignore Condition);
  • }
  • }
  • rule("Zen: ersatz OoD")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Event Player.OrbTargetValid == True;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Is Reloading(Event Player) == False;
  • Is Button Held(Event Player, Button(Primary Fire)) == False;
  • Is Button Held(Event Player, Button(Secondary Fire)) == False;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Stunned) == False;
  • }
  • actions
  • {
  • Call Subroutine(ClearOrbs);
  • Abort If Condition Is False;
  • Event Player.OrbVictim = Event Player.OrbHalo;
  • disabled Event Player.OrbVictim = Player Closest To Reticle(Event Player, Filtered Array(All Living Players(All Teams), Hero Of(
  • Current Array Element) != Hero(Sombra) || Is Using Ability 1(Current Array Element) == False));
  • disabled Event Player.OrbVictim = Player Closest To Reticle(Event Player, All Teams);
  • Create Effect(All Players(All Teams), Zenyatta Orb of Discord Target Effect, Event Player.OrbVictim.ColorCode,
  • Event Player.OrbVictim, 1, Visible To Position and Radius);
  • Event Player.DiscordIcon = Last Created Entity;
  • disabled Create Icon(Event Player, Position Of(Event Player.OrbVictim) + Vector(0, 2, 0), Skull, Visible To and Position,
  • Event Player.OrbVictim.ColorCode, True);
  • Start Damage Modification(Event Player.OrbVictim, All Players(All Teams), 125, Receivers Damagers and Damage Percent);
  • Event Player.OrbVictim.DDamage = Last Damage Modification ID;
  • Play Effect(Event Player.OrbVictim, Debuff Impact Sound, Color(Red), Event Player, 80);
  • Play Effect(Event Player, Debuff Impact Sound, Color(Red), Event Player, 50);
  • Big Message(Event Player.OrbVictim, Custom String("Orb of Discord gained from {0}", Event Player));
  • Event Player.OrbVictim.DiscordCheck = True;
  • }
  • }
  • rule("Zen: Orb of Humility")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Event Player.OrbTargetValid == True;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Is Reloading(Event Player) == False;
  • Is Button Held(Event Player, Button(Primary Fire)) == False;
  • Is Button Held(Event Player, Button(Secondary Fire)) == False;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Stunned) == False;
  • }
  • actions
  • {
  • Call Subroutine(ClearOrbs);
  • Abort If Condition Is False;
  • Event Player.OrbVictim = Event Player.OrbHalo;
  • disabled Event Player.OrbVictim = Player Closest To Reticle(Event Player, Filtered Array(All Living Players(All Teams), Hero Of(
  • Current Array Element) != Hero(Sombra) || Is Using Ability 1(Current Array Element) == False));
  • disabled Event Player.OrbVictim = Player Closest To Reticle(Event Player, All Teams);
  • Create Icon(Event Player, Position Of(Event Player.OrbVictim) + Vector(0, 2, 0), Moon, Visible To and Position,
  • Event Player.OrbVictim.ColorCode, True);
  • Event Player.HumilityIcon = Last Created Entity;
  • Start Damage Modification(All Players(All Teams), Event Player.OrbVictim, 75, Receivers Damagers and Damage Percent);
  • Event Player.OrbVictim.HDamage = Last Damage Modification ID;
  • Start Healing Modification(Event Player.OrbVictim, All Players(All Teams), 75, Receivers Healers and Healing Percent);
  • Event Player.OrbVictim.HHealing = Last Healing Modification ID;
  • Event Player.OrbVictim.HumilityCheck = True;
  • Play Effect(Event Player.OrbVictim, Debuff Impact Sound, Color(Red), Event Player, 80);
  • Create Effect(Event Player.OrbVictim, Cloud, Color(Red), Event Player.OrbVictim, 5, Visible To Position and Radius);
  • Event Player.OrbVictim.HumilityVis = Last Created Entity;
  • Play Effect(Event Player, Ring Explosion Sound, Color(Red), Event Player, 50);
  • Big Message(Event Player.OrbVictim, Custom String("Orb of Humility gained from {0}", Event Player));
  • }
  • }
  • rule("Zen: end orbs if line of sight lost")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Is In Line of Sight(Event Player, Event Player.OrbVictim, Barriers Do Not Block LOS) == False;
  • }
  • actions
  • {
  • Wait Until(Is Button Held(Event Player, Button(Ability 1)) == True || Is Button Held(Event Player, Button(Ability 2)) == True, 3);
  • If(Is In Line of Sight(Event Player, Event Player.OrbVictim, Barriers Do Not Block LOS) == False);
  • Play Effect(Event Player, Buff Impact Sound, Color(White), Event Player, 5);
  • If(Event Player.OrbVictim.HumilityCheck == True);
  • Big Message(Event Player, Custom String("Orb of Humility returned"));
  • Else If(Event Player.OrbVictim.DiscordCheck == True);
  • Big Message(Event Player, Custom String("Orb of Discord returned"));
  • End;
  • Call Subroutine(ClearOrbs);
  • Else;
  • Abort;
  • End;
  • }
  • }
  • rule("Zen: ends orb on target death")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Is Dead(Event Player.OrbVictim) == True;
  • }
  • actions
  • {
  • Call Subroutine(ClearOrbs);
  • }
  • }
  • rule("Zen: end orbs on death")
  • {
  • event
  • {
  • Player Died;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Event Player.OrbVictim != Null;
  • }
  • actions
  • {
  • Call Subroutine(ClearOrbs);
  • }
  • }
  • rule("Zen: OoD visibility to others")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Event Player.OrbVictim.DiscordCheck == True;
  • }
  • actions
  • {
  • Destroy Icon(Event Player.OrbVictim.HumilityIcon);
  • disabled Destroy Icon(Event Player.OrbVictim.DiscordIcon);
  • Destroy Effect(Event Player.OrbVictim.DiscordIcon);
  • disabled Create Icon(Filtered Array(All Living Players(All Teams), Is In Line of Sight(Event Player.OrbVictim, Local Player,
  • Barriers Do Not Block LOS) == True && Local Player != Hero(Zenyatta)), Position Of(Event Player.OrbVictim) + Vector(0, 2, 0),
  • Skull, Visible To and Position, Event Player.OrbVictim.ColorCode, False);
  • Create Effect(Filtered Array(All Living Players(All Teams), Is In Line of Sight(Event Player.OrbVictim, Local Player,
  • Barriers Do Not Block LOS) == True && Hero Of(Current Array Element) != Hero(Zenyatta)), Zenyatta Orb of Discord Target Effect,
  • Color(Red), Event Player.OrbVictim, 1, Visible To Position and Radius);
  • Event Player.OrbVictim.DiscordIcon = Last Created Entity;
  • Wait Until(Event Player.OrbVictim.DiscordCheck == False || Is In Line of Sight(Event Player.OrbVictim, Local Player,
  • Barriers Do Not Block LOS) == False, 99999);
  • }
  • }
  • rule("Zen: OoH visibility to others")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Event Player.OrbVictim.HumilityCheck == True;
  • }
  • actions
  • {
  • Destroy Icon(Event Player.OrbVictim.HumilityIcon);
  • disabled Destroy Icon(Event Player.OrbVictim.DiscordIcon);
  • Destroy Effect(Event Player.OrbVictim.DiscordIcon);
  • Create Icon(Filtered Array(All Living Players(All Teams), Is In Line of Sight(Event Player.OrbVictim, Local Player,
  • Barriers Do Not Block LOS) == True && Local Player != Hero(Zenyatta)), Position Of(Event Player.OrbVictim) + Vector(0, 2, 0),
  • Moon, Visible To and Position, Event Player.OrbVictim.ColorCode, False);
  • Event Player.OrbVictim.HumilityIcon = Last Created Entity;
  • Wait Until(Event Player.OrbVictim.HumilityCheck == False || Is In Line of Sight(Event Player.OrbVictim, Local Player,
  • Barriers Do Not Block LOS) == False, 99999);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Zen: orb victim health bar HUD")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Event Player.OrbVictim != Null;
  • }
  • actions
  • {
  • disabled Create Progress Bar HUD Text(Event Player, 100 * Normalized Health(Event Player.OrbVictim), Custom String(
  • "/n /n /n /n /n /n {0} {1} - {2}", Event Player.OrbVictim.DiscordCheck == True ? Ability Icon String(Hero(Zenyatta),
  • Button(Ability 2)) : Ability Icon String(Hero(Zenyatta), Button(Ability 1)), Hero Of(Event Player.OrbVictim),
  • Event Player.OrbVictim), Right, 20, Health Of Type(Event Player.OrbVictim, Armor) > 0 ? Color(Yellow) : (Health Of Type(
  • Event Player.OrbVictim, Shields) > 0 ? Color(Turquoise) : Color(White)), Event Player.OrbVictim.ColorCode,
  • Visible To Values and Color, Default Visibility);
  • Create Progress Bar HUD Text(Event Player, 100 * Normalized Health(Event Player.OrbVictim), Custom String("{0} {1} - {2}",
  • Event Player.OrbVictim.DiscordCheck == True ? Ability Icon String(Hero(Zenyatta), Button(Ability 2)) : Icon String(Moon),
  • Hero Of(Event Player.OrbVictim), Event Player.OrbVictim), Right, 20, Health Of Type(Event Player.OrbVictim, Armor) > 0 ? Color(
  • Yellow) : (Health Of Type(Event Player.OrbVictim, Shields) > 0 ? Color(Turquoise) : Color(White)),
  • Event Player.OrbVictim.ColorCode, Visible To Values and Color, Default Visibility);
  • Event Player.OrbHUD = Last Text ID;
  • Wait Until(Event Player.OrbVictim == Null, 99999);
  • Destroy Progress Bar HUD Text(Event Player.OrbHUD);
  • }
  • }
  • rule("Zen: AoE damage with ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == True;
  • }
  • actions
  • {
  • Start Damage Over Time(Filtered Array(Players Within Radius(Event Player, 10, All Teams, Surfaces And Enemy Barriers),
  • Current Array Element != Event Player), Event Player, 0.266, 20);
  • Set Status(Filtered Array(Players Within Radius(Event Player, 10, All Teams, Surfaces And Enemy Barriers),
  • Current Array Element != Event Player), Null, Burning, 0.266);
  • Wait(0.250, Ignore Condition);
  • Loop If Condition Is True;
  • disabled Stop Damage Over Time(Filtered Array(All Players(All Teams), Array Contains(Players Within Radius(Event Player, 10, All Teams,
  • Surfaces And Enemy Barriers), Current Array Element) == False).TranscendenceDmg);
  • }
  • }
  • rule("Zen: track ult damage")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == True;
  • }
  • actions
  • {
  • Victim.TranscendenceDmg = Last Damage Over Time ID;
  • }
  • }
  • rule("Zen: prevent orb placement while primary firing")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Primary Fire)) == True;
  • }
  • actions
  • {
  • Disallow Button(Event Player, Button(Ability 1));
  • Disallow Button(Event Player, Button(Ability 2));
  • Wait Until(Is Button Held(Event Player, Button(Primary Fire)) == False, 99999);
  • Wait(0.400, Ignore Condition);
  • Allow Button(Event Player, Button(Ability 1));
  • Allow Button(Event Player, Button(Ability 2));
  • }
  • }
  • rule("Zen: prevent orb placement while secondary firing")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Secondary Fire)) == True;
  • }
  • actions
  • {
  • Disallow Button(Event Player, Button(Ability 1));
  • Disallow Button(Event Player, Button(Ability 2));
  • Wait Until(Is Button Held(Event Player, Button(Secondary Fire)) == False, 99999);
  • Wait(0.500, Ignore Condition);
  • Allow Button(Event Player, Button(Ability 1));
  • Allow Button(Event Player, Button(Ability 2));
  • }
  • }
  • disabled rule("Smb: decreased damage")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sombra;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • Start Damage Modification(All Players(All Teams), Event Player, 87.500, Receivers Damagers and Damage Percent);
  • Event Player.SmbDmg = Last Damage Modification ID;
  • Wait Until(Hero Of(Event Player) != Hero(Sombra), 99999);
  • Stop Damage Modification(Event Player.SmbDmg);
  • }
  • }
Join the Workshop.codes Discord