Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "ZOMBIES VS HUMANS: Mokby's edition. At the start of each round, some random players will be zombified and must try to infect all other humans, while the humans must reach 60 kills. For tips, look at top right of the screen and for custom abilities at the top left. This mode was heavily inspired by Whiteduck's zombies vs humans, so please check that mode out too if you liked this one! Also check out my workshop.codes page and discord server (also on workshop.codes page) (made by Mokby and Developful #4647)"
  • }
  • lobby
  • {
  • Allow Players Who Are In Queue: Yes
  • Max Spectators: 12
  • }
  • modes
  • {
  • Deathmatch
  • {
  • enabled maps
  • {
  • Black Forest Winter
  • Hanamura Winter
  • Havana
  • Horizon Lunar Colony
  • Necropolis
  • Oasis Gardens
  • Oasis University
  • Paris
  • Temple of Anubis
  • Volskaya Industries
  • }
  • }
  • General
  • {
  • Game Mode Start: Manual
  • Game Mode Start: Immediately
  • Hero Limit: Off
  • Respawn Time Scalar: 50%
  • Score To Win: 50
  • Self Initiated Respawn: Off
  • Spawn Health Packs: Disabled
  • }
  • }
  • heroes
  • {
  • General
  • {
  • Ana
  • {
  • Ammunition Clip Size Scalar: 70%
  • Biotic Grenade Cooldown Time: 75%
  • Healing Dealt: 10%
  • Projectile Speed: 100%
  • Sleep Dart Cooldown Time: 125%
  • Ultimate Generation - Combat Nano Boost: 200%
  • }
  • Ashe
  • {
  • Ammunition Clip Size Scalar: 83%
  • Coach Gun Knockback Scalar Enemy: 30%
  • Coach Gun Knockback Scalar Enemy: 80%
  • Coach Gun Knockback Scalar Self: 80%
  • Dynamite Cooldown Time: 80%
  • Dynamite Fuse Time Scalar: 80%
  • Ultimate Generation - Combat B.O.B.: 200%
  • Ultimate Generation B.O.B.: 150%
  • }
  • Baptiste
  • {
  • Ammunition Clip Size Scalar: 33%
  • Ultimate Generation - Combat Amplification Matrix: 200%
  • Ultimate Generation Amplification Matrix: 150%
  • }
  • Bastion
  • {
  • Damage Received: 125%
  • Infinite Ultimate Duration: On
  • }
  • Brigitte
  • {
  • Healing Dealt: 64%
  • Ultimate Generation - Combat Rally: 250%
  • Ultimate Generation Rally: 140%
  • Whip Shot Cooldown Time: 75%
  • Whip Shot Knockback Scalar: 75%
  • }
  • D.Va
  • {
  • Spawn Without Mech: On
  • }
  • Doomfist
  • {
  • Ammunition Clip Size Scalar: 50%
  • Ammunition Regeneration Time Scalar: 140%
  • Projectile Speed: 125%
  • Ultimate Generation - Combat Meteor Strike: 250%
  • Ultimate Generation - Passive Meteor Strike: 50%
  • }
  • Echo
  • {
  • Ammunition Clip Size Scalar: 55%
  • Flight Cooldown Time: 200%
  • Focusing Beam Cooldown Time: 250%
  • Projectile Speed: 85%
  • Ultimate Generation - Combat Duplicate: 200%
  • Ultimate Generation - Passive Duplicate: 125%
  • Ultimate Generation Duplicate: 150%
  • }
  • Genji
  • {
  • Ultimate Generation - Combat Dragonblade: 200%
  • Ultimate Generation Dragonblade: 200%
  • }
  • Hanzo
  • {
  • Lunge Cooldown Time: 125%
  • Lunge Distance Scalar: 100%
  • Storm Arrows Quantity: 3
  • Ultimate Generation - Combat Dragonstrike: 225%
  • Ultimate Generation Dragonstrike: 150%
  • }
  • Junkrat
  • {
  • Concussion Mine Cooldown Time: 113%
  • Concussion Mine Knockback Scalar: 100%
  • Frag Launcher Knockback Scalar: 125%
  • Projectile Speed: 93%
  • Ultimate Generation - Combat RIP-Tire: 200%
  • Ultimate Generation RIP-Tire: 125%
  • }
  • Lúcio
  • {
  • Ammunition Clip Size Scalar: 60%
  • Amp It Up Cooldown Time: 125%
  • Projectile Speed: 125%
  • Projectile Speed: 110%
  • Soundwave Knockback Scalar: 60%
  • Soundwave Cooldown Time: 125%
  • Ultimate Generation - Combat Sound Barrier: 200%
  • Ultimate Generation Sound Barrier: 175%
  • }
  • McCree
  • {
  • Ammunition Clip Size Scalar: 50%
  • Flashbang Cooldown Time: 140%
  • Ultimate Generation - Combat Deadeye: 200%
  • }
  • Mei
  • {
  • Ammunition Clip Size Scalar: 50%
  • Ammunition Clip Size Scalar: 67%
  • Cryo-Freeze Cooldown Time: 133%
  • Freeze Stacking: On
  • Healing Dealt: 100%
  • Projectile Speed: 90%
  • Ultimate Generation - Combat Blizzard: 200%
  • Ultimate Generation Blizzard: 85%
  • Weapon Freeze Rate Scalar: 0%
  • }
  • Mercy
  • {
  • Ammunition Clip Size Scalar: 50%
  • Projectile Speed: 125%
  • Regeneration: Off
  • Ultimate Generation - Combat Valkyrie: 200%
  • Ultimate Generation Valkyrie: 175%
  • }
  • Orisa
  • {
  • Ultimate Generation - Combat Supercharger: 300%
  • Ultimate Generation Supercharger: 125%
  • }
  • Pharah
  • {
  • Concussive Blast Cooldown Time: 89%
  • Hover Jets Maximum Time: 30%
  • Hover Jets Recharge Rate: 70%
  • Hover Jets Vertical Speed Scalar: 115%
  • Jump Jet Cooldown Time: 80%
  • }
  • Reinhardt
  • {
  • Charge Knockback Scalar: 125%
  • Fire Strike Cooldown Time: 67%
  • Projectile Speed: 125%
  • Rocket Hammer Knockback Scalar: 130%
  • Ultimate Generation - Combat Earthshatter: 200%
  • }
  • Sigma
  • {
  • Accretion Knockback Scalar: 80%
  • Kinetic Grasp Cooldown Time: 150%
  • Projectile Gravity: 150%
  • Ultimate Generation - Combat Gravitic Flux: 200%
  • Ultimate Generation Gravitic Flux: 125%
  • }
  • Soldier: 76
  • {
  • Ammunition Clip Size Scalar: 67%
  • Helix Rockets Cooldown Time: 133%
  • Helix Rockets Knockback Scalar: 125%
  • Ultimate Generation - Combat Tactical Visor: 200%
  • Ultimate Generation - Passive Tactical Visor: 50%
  • }
  • Sombra
  • {
  • Ammunition Clip Size Scalar: 42%
  • Stealth Cooldown Time: 0%
  • Ultimate Generation - Combat EMP: 200%
  • Ultimate Generation - Passive EMP: 75%
  • }
  • Symmetra
  • {
  • Ammunition Clip Size Scalar: 71%
  • Projectile Speed: 125%
  • Sentry Turret Cooldown Time: 0%
  • Ultimate Generation - Combat Photon Barrier: 200%
  • Ultimate Generation - Passive Photon Barrier: 150%
  • Ultimate Generation - Passive Photon Barrier: 175%
  • }
  • Torbjörn
  • {
  • Infinite Ultimate Duration: On
  • Overload Cooldown Time: 150%
  • Projectile Speed: 125%
  • Spawn With Ultimate Ready: On
  • Ultimate Duration: 75%
  • Ultimate Generation - Combat Molten Core: 200%
  • Ultimate Generation Molten Core: 300%
  • }
  • Tracer
  • {
  • Ammunition Clip Size Scalar: 50%
  • Blink Cooldown Time: 0%
  • Ultimate Generation - Combat Pulse Bomb: 200%
  • }
  • Widowmaker
  • {
  • Ammunition Clip Size Scalar: 50%
  • Grappling Hook Cooldown Time: 100%
  • Ultimate Duration: 125%
  • Ultimate Generation - Combat Infra-Sight: 200%
  • Ultimate Generation Infra-Sight: 300%
  • Venom Mine Cooldown Time: 33%
  • Ultimate Generation Infra-Sight: 100%
  • Venom Mine Cooldown Time: 0%
  • }
  • Winston
  • {
  • Infinite Ultimate Duration: On
  • Jump Pack Acceleration Scalar: 95%
  • Jump Pack Cooldown Time: 150%
  • Jump Pack Knockback Scalar: 125%
  • Primal Rage Melee Knockback Scalar: 75%
  • }
  • Zarya
  • {
  • Ammunition Clip Size Scalar: 50%
  • Healing Dealt: 100%
  • Projectile Speed: 100%
  • Ultimate Generation - Combat Graviton Surge: 200%
  • Ultimate Generation Graviton Surge: 125%
  • }
  • Zenyatta
  • {
  • Ammunition Clip Size Scalar: 50%
  • Healing Dealt: 100%
  • Projectile Speed: 100%
  • Ultimate Generation - Combat Transcendence: 200%
  • Ultimate Generation - Passive Transcendence: 50%
  • }
  • disabled heroes
  • {
  • Bastion
  • D.Va
  • Genji
  • Moira
  • Orisa
  • Pharah
  • Reaper
  • Roadhog
  • Winston
  • Wrecking Ball
  • }
  • }
  • }
  • }
  • variables
  • {
  • global:
  • 0: MatchStatus
  • 1: HumanKills
  • 18: SombraDisguise
  • 19: MatchTime
  • player:
  • 0: IsHuman
  • 1: B
  • 2: C
  • 3: D
  • 4: Effects
  • 5: F
  • 6: Slow
  • 7: Huds
  • 8: Icons
  • 9: IsMelee
  • 10: K
  • 11: SpeedBoost
  • 12: Freeze
  • 13: N
  • 14: O
  • 15: P
  • 16: MiscIDs
  • 17: R
  • 18: Stage
  • 19: InfectTimer
  • 20: InfectPosition
  • 21: InitSpeed
  • 22: W
  • 23: InitDamage
  • 24: MutationChance
  • 25: MutationEnable
  • 26: StpID
  • 27: N2
  • 28: O2
  • 29: P2
  • 30: BRTaunt
  • 31: BRTauntTime
  • 32: SIGPull
  • 33: SOMpassive
  • 34: ZombieSpawn
  • 35: SOMult
  • 36: Tslow
  • 37: Hmark
  • 38: HmarkID
  • 39: HmarkTimer
  • 40: Bability1
  • 41: Bpassive
  • 42: BarrierHealth
  • 43: BarrierTime
  • 44: R2
  • 45: TBfear
  • 46: DamageTaken
  • 47: FreezeTimer
  • 48: TBfearTime
  • 49: Gpoison
  • 50: ZRhalfBubble
  • 51: ZRknockback
  • 52: ZRultPull
  • 53: MCstealth
  • 54: ZNpassive
  • 55: ORult
  • 57: DodgeChances
  • 58: ChancesToNotDodge
  • 59: RandomChance
  • 60: Mblessing
  • 61: Ultimate
  • 62: JRburn
  • 63: KnockAway
  • 64: KnockAwayFrom
  • 65: Etarget
  • 66: Etarget2
  • 67: Elocation
  • 68: Eknockback
  • 69: ShowInfo
  • 70: C2
  • 71: F2
  • 72: Eslow
  • 73: Aslow
  • 74: MutateRandom
  • 75: StrongMelee
  • 75: StrongMelee
  • 76: ZNpassiveEffects
  • 77: Emark
  • 78: InitHp
  • 79: OutlineHuman
  • 80: OutlineZombie
  • 81: Revealed
  • 82: SultEffect
  • 83: Sangle
  • 84: Svulnerable
  • 85: SvulnerableTime
  • 86: SvulnerableCheck
  • 87: SultHit
  • 88: AnotherSvariable
  • }
  • subroutines
  • {
  • 0: MatchTime
  • 1: Dpassive
  • 2: IsAlive
  • 3: Gability1
  • 4: GpullSelf
  • 5: GpullEnemy
  • 6: AbilitySetup
  • 7: Hability1Damage
  • 8: Hability2
  • 9: IsDead
  • 10: HZability2
  • 11: Zult
  • 12: IsCondTrue
  • 13: Mres
  • 14: S76passive
  • 15: Sult
  • 16: Sability1tpID
  • 16: Sability2tpID
  • 17: LUpassive
  • 18: SIGult
  • 19: SIGult2
  • 20: SOMpassive
  • 21: SOMult
  • 22: SOMpassiveUlt
  • 23: IsCondTrueFast
  • 24: InfectTimer
  • 25: Bability121
  • 26: Bability111
  • 27: Bability112
  • 28: Bability122
  • 29: Bult
  • 30: Sability1setup
  • 30: Sability2setup
  • 31: BRult
  • 32: ThxRainbow
  • 33: RNability2
  • 34: MEIfreeze
  • 35: IsFrozen
  • 36: HZmark
  • 37: ultCharged
  • 38: ZRult
  • 39: ZRult2
  • 40: ORability2
  • 41: ORability2Setup
  • 42: ORult
  • 43: MEIability21
  • 44: MEIability22
  • 45: MEIult
  • 46: Ultimate
  • 47: Eult
  • 48: Jability2
  • 49: MutateTier2
  • 50: MutateTier3
  • 51: Eult2
  • 52: MCability1
  • 53: MEIability1
  • 54: Wmine1
  • 55: Wmine2
  • 56: Wmine3
  • 57: Wmine4
  • }
  • rule("Remove slows etc upon respawning")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • actions
  • {
  • Call Subroutine(IsDead);
  • Abort If(Event Player.IsHuman == True);
  • Event Player.Slow = Null;
  • Stop Forcing Throttle(Event Player);
  • Clear Status(Event Player, Rooted);
  • Event Player.Tslow = Null;
  • Event Player.Freeze = Null;
  • Allow Button(Event Player, Button(Jump));
  • Allow Button(Event Player, Button(Crouch));
  • Set Move Speed(Event Player, Event Player.InitSpeed);
  • Allow Button(Event Player, Button(Primary Fire));
  • Allow Button(Event Player, Button(Melee));
  • Set Gravity(Event Player, 100);
  • Allow Button(Event Player, Button(Ability 1));
  • Event Player.SpeedBoost = Null;
  • Set Invisible(Event Player, None);
  • Skip If(Hero Of(Event Player) == Hero(Echo), 1);
  • Allow Button(Event Player, Button(Ultimate));
  • Allow Button(Event Player, Button(Ability 2));
  • Allow Button(Event Player, Button(Secondary Fire));
  • Stop Scaling Player(Event Player);
  • Stop Camera(Event Player);
  • Stop Forcing Player Position(Event Player);
  • Enable Movement Collision With Environment(Event Player);
  • Stop Chasing Player Variable(Event Player, O);
  • Stop Chasing Player Variable(Event Player, P);
  • Event Player.O = 0;
  • Event Player.P = 0;
  • }
  • }
  • rule("Disable inspector")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Disable Inspector Recording;
  • }
  • }
  • rule("Zombies can't be in spawnroom")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == False;
  • Is In Spawn Room(Event Player) == True;
  • }
  • actions
  • {
  • Respawn(Event Player);
  • Wait(0.250, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Player joined mid-match force zombie")
  • {
  • event
  • {
  • Player Joined Match;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.MatchStatus == 1;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Event Player.IsHuman = False;
  • }
  • }
  • rule("Stop forcing heroes")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Assembling Heroes == True;
  • }
  • actions
  • {
  • Stop Forcing Player To Be Hero(All Players(All Teams));
  • All Players(All Teams).IsHuman = True;
  • Wait(0.250, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Match disable init")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Disable Built-In Game Mode Completion;
  • Disable Built-In Game Mode Respawning(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True));
  • Disable Built-In Game Mode Announcer;
  • Set Objective Description(All Players(All Teams), Custom String(""), Visible To and String);
  • }
  • }
  • rule("Match walkthrough")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Global.MatchStatus = Null;
  • Global.MatchTime = 20;
  • All Players(All Teams).IsHuman = True;
  • Chase Global Variable At Rate(MatchTime, False, True, Destination and Rate);
  • Stop Forcing Player To Be Hero(All Players(All Teams));
  • Wait(0.500, Ignore Condition);
  • Big Message(All Players(All Teams), Custom String("READY YOURSELVES... DANGER IS COMING"));
  • Start Rule(MatchTime, Do Nothing);
  • Wait(10, Ignore Condition);
  • Big Message(All Players(All Teams), Custom String("BE SURE TO READ THE TOP LEFT AND RIGHT OF YOUR SCREEN!"));
  • Wait(10, Ignore Condition);
  • Global.MatchTime = 1200;
  • Chase Global Variable At Rate(MatchTime, False, True, Destination and Rate);
  • Random Value In Array(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True)).IsHuman = False;
  • Skip If(Count Of(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True)) <= 3, True);
  • Random Value In Array(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True)).IsHuman = False;
  • Skip If(Count Of(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True)) <= 7, True);
  • Random Value In Array(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True)).IsHuman = False;
  • Wait(0.250, Ignore Condition);
  • Global.MatchStatus = 1;
  • Call Subroutine(MatchTime);
  • Skip If(Global.HumanKills >= 75, 4);
  • Big Message(All Players(All Teams), Custom String("ZOMBIES WIN!"));
  • Set Status(All Players(All Teams), Null, Frozen, 9999);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(White), All Players(All Teams), 200);
  • Wait(0.250, Ignore Condition);
  • Declare Player Victory(Random Value In Array(All Players(All Teams)));
  • }
  • }
  • rule("MatchTime sub")
  • {
  • event
  • {
  • Subroutine;
  • MatchTime;
  • }
  • actions
  • {
  • Wait(True, Ignore Condition);
  • Loop If(Global.MatchTime > False);
  • }
  • }
  • rule("Global huds")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Create HUD Text(All Players(All Teams), Null, Null, String("{0}: {1}", Custom String("Time left"), Global.MatchTime), Top, 10,
  • Null, Null, Color(Yellow), Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Icon String(Poison), Null, String("{0}: {1}", Custom String("Infected"), Count Of(
  • Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False))), Top, 13, Color(Aqua), Color(White), Color(
  • Aqua), Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Icon String(Diamond), Null, String("{0}: {1}", Custom String("Survivors left"), Count Of(
  • Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True))), Top, 12, Color(Aqua), Color(White), Color(
  • Aqua), Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Icon String(Skull), Null, String("{0}: {1}", Custom String("Kills left untill humans win"),
  • 60 - Global.HumanKills), Top, 11, Color(Aqua), Color(White), Color(Aqua), Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams),
  • Current Array Element.IsHuman == True && Current Array Element.ShowInfo == 0 && Current Array Element.StrongMelee == False), Null, Null, Custom String(
  • "Your melee deals 35 damage and heals you for max health."), Right, True, Null, Null, Color(Yellow), Visible To and String,
  • Default Visibility);
  • Current Array Element.IsHuman == True && Current Array Element.ShowInfo == 0 && Current Array Element.StrongMelee == False),
  • Null, Null, Custom String("Your melee deals 35 damage and heals you for max health upon landing a final blow."), Right, True,
  • Null, Null, Color(Yellow), Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams),
  • Current Array Element.IsHuman == True && Current Array Element.ShowInfo == 0 && Current Array Element.StrongMelee == True), Null, Null, Custom String(
  • "Your melee deals 55 damage and heals you for max health."), Right, True, Null, Null, Color(Yellow), Visible To and String,
  • Default Visibility);
  • Current Array Element.IsHuman == True && Current Array Element.ShowInfo == 0 && Current Array Element.StrongMelee == True),
  • Null, Null, Custom String("Your melee deals 55 damage and heals you for max health upon landing a final blow."), Right, True,
  • Null, Null, Color(Yellow), Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams),
  • Current Array Element.IsHuman == False && Current Array Element.ShowInfo == 0), Null, Null, Custom String(
  • "Hold crouch to slowly heal (except for bastion)"), Right, True, Null, Null, Color(Yellow), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.ShowInfo == 0), Custom String("Pro tips:"), Null,
  • Null, Right, False, Color(Yellow), Null, Null, Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams),
  • Current Array Element.IsHuman == True && Current Array Element.ShowInfo == 0), Null, Null, Custom String(
  • "All humans (except widow) have high fallof damage."), Right, 2, Null, Null, Color(Yellow), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.ShowInfo == 0), Null, Null, Custom String(
  • "Read all your huds thoroughly!"), Right, 3, Null, Null, Color(Yellow), Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams),
  • Current Array Element.IsHuman == False && Current Array Element.ShowInfo == 0), Null, Null, Custom String(
  • "Every time you die, the chance to mutate becomes higher."), Right, 2, Null, Null, Color(Yellow), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams),
  • Current Array Element.IsHuman == False && Current Array Element.ShowInfo == 0), Null, Null, Custom String(
  • "Hold crouch and interact to set your spawnpoint."), Right, 3, Null, Null, Color(Yellow), Visible To and String,
  • Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Use voiceline to hide/show information"), Left, 0, Color(White),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • }
  • }
  • rule("Turn information huds on/of")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Communicating Any Voice line(Event Player) == True;
  • }
  • actions
  • {
  • If(Event Player.ShowInfo == 1);
  • Event Player.ShowInfo = 0;
  • Abort;
  • End;
  • If(Event Player.ShowInfo == 0);
  • Event Player.ShowInfo = 1;
  • Abort;
  • End;
  • }
  • }
  • rule("Player outline - zombies")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.OutlineZombie == True;
  • Event Player.OutlineHuman == False;
  • Global.MatchStatus == 1;
  • Event Player.Revealed == 0;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), True,
  • Color(Green), Default);
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False), True,
  • Color(Green), Always);
  • Wait(0.100, Ignore Condition);
  • Loop If Condition Is True;
  • disabled Wait Until(Event Player.OutlineHuman == True, 9999);
  • Stop Forcing Player Outlines(Event Player, All Players(All Teams));
  • }
  • }
  • rule("Player outline - Humans")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.OutlineHuman == True;
  • Event Player.OutlineZombie == False;
  • Global.MatchStatus == 1;
  • Event Player.Revealed == 0;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False), True,
  • Color(Red), Default);
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), True,
  • Color(Aqua), Always);
  • Wait(0.100, Ignore Condition);
  • Loop If Condition Is True;
  • disabled Wait Until(Event Player.OutlineZombie == True, 9999);
  • Stop Forcing Player Outlines(Event Player, All Players(All Teams));
  • }
  • }
  • rule("Player outline - Sombra disguise")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.OutlineHuman == True;
  • Event Player.OutlineZombie == True;
  • Global.MatchStatus == 1;
  • Event Player.Revealed == 0;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False), True,
  • Color(Green), Always);
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), True,
  • Color(Aqua), Always);
  • Wait(0.100, Ignore Condition);
  • Loop If Condition Is True;
  • disabled Wait Until(Event Player.OutlineZombie == False, 9999);
  • Stop Forcing Player Outlines(Event Player, All Players(All Teams));
  • }
  • }
  • rule("Reaper init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reaper;
  • }
  • conditions
  • {
  • Array Contains(Global.SombraDisguise, Event Player) == False;
  • }
  • actions
  • {
  • Global.SombraDisguise[Slot Of(Event Player)] = Null;
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Destroy HUD Text(Event Player.Huds[2]);
  • Destroy HUD Text(Event Player.Huds[3]);
  • Destroy HUD Text(Event Player.Huds[4]);
  • Destroy HUD Text(Event Player.Huds[5]);
  • Destroy HUD Text(Event Player.Huds[6]);
  • Destroy HUD Text(Event Player.Huds[7]);
  • Destroy HUD Text(Event Player.Huds[8]);
  • Destroy HUD Text(Event Player.Huds[9]);
  • Set Max Health(Event Player, 50);
  • Set Damage Dealt(Event Player, 166.667);
  • Set Move Speed(Event Player, 130);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Primary Fire Enabled(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, False);
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Event Player.MutationEnable = 1;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Baptiste), Button(Crouch)), Custom String("ability 1: jump good"), String(
  • "{0}: {1}", Custom String("Cooldown"), Event Player.C), Left, 1, Custom Color(25, 115, 30, 255), Custom Color(25, 115, 30,
  • 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Leap upwards. Only\r\n Usable when\r\n on ground."), Null, Left, 2, Custom Color(25, 115, 30, 255), Color(White), Color(
  • White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Event Player.InitSpeed = 130;
  • Event Player.InitHp = 0;
  • Event Player.OutlineHuman = False;
  • Event Player.OutlineZombie = True;
  • Clear Status(Event Player, Unkillable);
  • Remove All Health Pools From Player(Event Player);
  • Event Player.IsHuman = False;
  • }
  • }
  • rule("Reaper ability 1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reaper;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Event Player.C == Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Rooted) == False;
  • Has Status(Event Player, Stunned) == False;
  • Altitude Of(Event Player) <= 0.600;
  • Array Contains(Global.SombraDisguise, Event Player) == False;
  • }
  • actions
  • {
  • Apply Impulse(Event Player, Up, 10, To World, Incorporate Contrary Motion);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Green), Position Of(Event Player), 3);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(Green), Event Player, 75);
  • Event Player.C = 5;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • }
  • }
  • rule("Moira init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Moira;
  • }
  • conditions
  • {
  • Array Contains(Global.SombraDisguise, Event Player) == False;
  • }
  • actions
  • {
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Destroy HUD Text(Event Player.Huds[2]);
  • Destroy HUD Text(Event Player.Huds[3]);
  • Destroy HUD Text(Event Player.Huds[4]);
  • Destroy HUD Text(Event Player.Huds[5]);
  • Destroy HUD Text(Event Player.Huds[6]);
  • Destroy HUD Text(Event Player.Huds[7]);
  • Destroy HUD Text(Event Player.Huds[8]);
  • Destroy HUD Text(Event Player.Huds[9]);
  • Set Max Health(Event Player, 37.500);
  • Set Damage Dealt(Event Player, 250);
  • Set Move Speed(Event Player, 135);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, False);
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Event Player.MutationEnable = 1;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Moira), Button(Ability 1)), Custom String("ability 1: Leap"), String(
  • "{0}: {1}", Custom String("Cooldown"), Event Player.C), Left, 1, Custom Color(65, 25, 110, 255), Custom Color(65, 25, 110,
  • 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Leap towards your facing direction."), Null, Left, 2, Custom Color(65, 25, 110, 255), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Event Player.InitSpeed = 135;
  • Event Player.InitHp = 0;
  • Event Player.OutlineHuman = False;
  • Event Player.OutlineZombie = True;
  • Remove All Health Pools From Player(Event Player);
  • }
  • }
  • rule("Moira ability 1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Moira;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Event Player.C == Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Rooted) == False;
  • Has Status(Event Player, Stunned) == False;
  • }
  • actions
  • {
  • Apply Impulse(Event Player, Facing Direction Of(Event Player), 14, To World, Incorporate Contrary Motion);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Purple), Position Of(Event Player), 3);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(Purple), Event Player, 100);
  • Event Player.C = 7;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • }
  • }
  • rule("Dva init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • D.Va;
  • }
  • actions
  • {
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Set Max Health(Event Player, 66.667);
  • Set Damage Dealt(Event Player, 100);
  • Set Move Speed(Event Player, 115);
  • Set Primary Fire Enabled(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, False);
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Event Player.MutationEnable = Null;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Sigma), Button(Ability 2)), Custom String("ability 1: spit"), String(
  • "{0}: {1}", Custom String("Cooldown"), Event Player.C), Left, 1, Custom Color(100, 255, 0, 255), Custom Color(100, 255, 0,
  • 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Spit out a projectile,\r\n that slows and damages \r\n humans in an area\r\n around impact."), Null, Left, 2,
  • Custom Color(100, 255, 0, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Sigma), Button(Ability 1)), Custom String("passive: acidic surprise"), Null,
  • Left, 3, Custom Color(100, 255, 0, 255), Custom Color(100, 255, 0, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Upon death, leave\r\n an acidic pool that\r\n slows and damages\r\n humans inside it."), Null, Left, 4, Custom Color(100,
  • 255, 0, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.Slow = Null;
  • Event Player.InitSpeed = 115;
  • Event Player.OutlineHuman = False;
  • Event Player.OutlineZombie = True;
  • }
  • }
  • rule("Dva ability 1 startup")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • D.Va;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Event Player.C == Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.Stage == Null;
  • Is Button Held(Event Player, Button(Melee)) == False;
  • }
  • actions
  • {
  • Event Player.C = 8;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • Set Move Speed(Event Player, 80);
  • Set Aim Speed(Event Player, 60);
  • Small Message(Event Player, Custom String("Channeling spit..."));
  • Wait(0.500, Ignore Condition);
  • Skip If(Has Status(Event Player, Hacked) || Has Status(Event Player, Knocked Down) || Has Status(Event Player, Asleep)
  • || Has Status(Event Player, Frozen) || Has Status(Event Player, Stunned), 10);
  • Event Player.O = Eye Position(Event Player);
  • Event Player.P = Facing Direction Of(Event Player) * 40;
  • Create Effect(All Players(All Teams), Orb, Color(Green), Event Player.O, 0.500, Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Create Effect(All Players(All Teams), Bad Aura, Color(Yellow), Event Player.O, 0.400, Visible To Position and Radius);
  • Event Player.Effects[True] = Last Created Entity;
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(White), Event Player, 100);
  • Event Player.B[False] = Vector(False, -11, False);
  • Event Player.B[True] = First Of(Event Player.B);
  • Event Player.Stage = 1;
  • Set Move Speed(Event Player, 120);
  • Set Aim Speed(Event Player, 100);
  • }
  • }
  • rule("Dva ability 1 projectile")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • D.Va;
  • }
  • conditions
  • {
  • Distance Between(Event Player.O, Ray Cast Hit Position(Event Player.O, Event Player.O + Event Player.P * 0.016 * 1000, All Players(
  • All Teams), Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False), True)) >= 0.500;
  • Event Player.Stage == 1;
  • Distance Between(Event Player.O, Position Of(Event Player)) < 100;
  • }
  • actions
  • {
  • Event Player.P += Event Player.B[True] * 0.016;
  • Event Player.O += Event Player.P * 0.016;
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Lime Green), Event Player.O, 0.100);
  • Wait(False, Ignore Condition);
  • Loop If Condition Is True;
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Lime Green), Event Player.O, 4);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Lime Green), Event Player.O, 150);
  • Wait(False, Ignore Condition);
  • Damage(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True && Is In Line of Sight(Event Player.O,
  • Current Array Element, All Barriers Block LOS) && Distance Between(Event Player.O, Current Array Element) <= 4), Event Player,
  • 40);
  • "([player for player in getAllPlayers() if player.IsHuman == true and isInLoS(eventPlayer.O, player, BarrierLos.BLOCKED_BY_ALL_BARRIERS) and distance(eventPlayer.O, player) <= 4]).Slow = (([player for player in getAllPlayers() if player.IsHuman == true and"
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == True && Distance Between(Eye Position(
  • Current Array Element), Event Player.O) <= 4 && Is In Line of Sight(Eye Position(Current Array Element), Event Player.O,
  • Barriers Do Not Block LOS)).Slow += 20;
  • Event Player.Stage = Null;
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Effect(Event Player.Effects[True]);
  • }
  • }
  • rule("Dva passive")
  • {
  • event
  • {
  • Player Died;
  • All;
  • D.Va;
  • }
  • conditions
  • {
  • Is Dead(Event Player) == True;
  • }
  • actions
  • {
  • Create Effect(All Players(All Teams), Ring, Color(Lime Green), Position Of(Event Player), 6, Visible To Position and Radius);
  • Event Player.Effects[2] = Last Created Entity;
  • Create Effect(All Players(All Teams), Cloud, Color(Lime Green), Position Of(Event Player), 6, Visible To Position and Radius);
  • Event Player.Effects[3] = Last Created Entity;
  • Call Subroutine(Dpassive);
  • Destroy Effect(Event Player.Effects[2]);
  • Destroy Effect(Event Player.Effects[3]);
  • }
  • }
  • rule("Dva passive sub")
  • {
  • event
  • {
  • Subroutine;
  • Dpassive;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Damage(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True && Is In Line of Sight(Position Of(
  • Event Player), Current Array Element, Barriers Do Not Block LOS) && Distance Between(Position Of(Event Player),
  • Current Array Element) <= 6), Event Player, 1.500);
  • Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True && Is In Line of Sight(Position Of(Event Player),
  • Current Array Element, Barriers Do Not Block LOS) && Distance Between(Position Of(Event Player), Current Array Element) <= 6)
  • .Slow += 2.500;
  • Loop If Condition Is True;
  • }
  • }
  • rule("Winston init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Winston;
  • }
  • actions
  • {
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Set Max Health(Event Player, 30);
  • Set Damage Dealt(Event Player, 100);
  • Set Move Speed(Event Player, 100);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Primary Fire Enabled(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Event Player.MutationEnable = Null;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Reaper), Button(Ability 1)), Custom String("ultimate: Feral rage"), String(
  • "{0}: {1}", Custom String("Anger"), Event Player.B), Left, 1, Custom Color(150, 0, 0, 255), Custom Color(150, 0, 0, 255),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Take reduced damage upon\r\n using ult, but you are\r\n stunned. Damage taken during\r\n stun grants bonus damage\r\n and damage resistance."),
  • "Become rooted upon\r\n usage and gain resistance\r\n during this root. Damage\r\n taken during root grants\r\n bonus damage and resistance "),
  • Null, Left, 2, Custom Color(150, 0, 0, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Event Player.InitSpeed = 100;
  • Event Player.Slow = Null;
  • Create HUD Text(Event Player, Icon String(Dizzy), Custom String("Ability 2: bellow"), String("{0}: {1}", Custom String("Cooldown"),
  • Event Player.C), Left, 3, Custom Color(150, 0, 0, 255), Custom Color(150, 0, 0, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Cleanse all CC.\r\n Your next attack\r\n knocks-down anyone \r\n you hit"), Null, Left, 4, Custom Color(150, 0, 0, 255),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Set Ultimate Charge(Event Player, 100);
  • Event Player.OutlineHuman = False;
  • Event Player.OutlineZombie = True;
  • }
  • }
  • rule("Winston ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Winston;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Start Scaling Player(Event Player, 1 + Event Player.B / 250, True);
  • Event Player.Stage = 1;
  • Set Max Health(Event Player, 30);
  • Set Damage Received(Event Player, 50);
  • Set Status(Event Player, Null, Rooted, True);
  • Wait(True, Abort When False);
  • Set Damage Received(Event Player, 100);
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Red), Event Player, 4);
  • Event Player.Stage = Null;
  • Stop Holding Button(Event Player, Button(Ultimate));
  • Heal(Event Player, Event Player, Event Player.B * 0.500);
  • Set Damage Dealt(Event Player, 30 + Event Player.B * 0.350);
  • Set Damage Received(Event Player, 100 - Event Player.B * 0.500);
  • Set Damage Received(Event Player, 100 - Event Player.B * 0.400);
  • Call Subroutine(IsAlive);
  • Event Player.B = Null;
  • }
  • }
  • rule("Winston ult damage taken multiplier")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • Winston;
  • }
  • conditions
  • {
  • Event Player.Stage == 1;
  • }
  • actions
  • {
  • Event Player.B += Event Damage;
  • Small Message(Event Player, Custom String("Damage taken - angered!"));
  • }
  • }
  • rule("Winston ult sub")
  • {
  • event
  • {
  • Subroutine;
  • IsAlive;
  • }
  • actions
  • {
  • Wait(0.500, Ignore Condition);
  • Loop If(Is Alive(Event Player));
  • }
  • }
  • rule("Winston ability 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Winston;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Event Player.C <= Null;
  • }
  • actions
  • {
  • Clear Status(Event Player, Hacked);
  • Clear Status(Event Player, Knocked Down);
  • Clear Status(Event Player, Asleep);
  • Clear Status(Event Player, Frozen);
  • Clear Status(Event Player, Stunned);
  • Clear Status(Event Player, Rooted);
  • Event Player.Slow = Null;
  • Event Player.Tslow = Null;
  • Event Player.BRTauntTime = Null;
  • Event Player.TBfearTime = Null;
  • Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Red), Event Player, 1.500);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Red), Event Player, 100);
  • Event Player.R = 4;
  • Chase Player Variable At Rate(Event Player, R, False, True, Destination and Rate);
  • Event Player.C = 10;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • Create Effect(All Players(All Teams), Bad Aura, Color(Red), Position Of(Event Player), 2, Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Call Subroutine(BRult);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(Red), Event Player, 75);
  • Event Player.R = Null;
  • Destroy Effect(First Of(Event Player.Effects));
  • }
  • }
  • rule("Winston ability 2 hit")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Attacker.R > Null;
  • Hero Of(Attacker) == Hero(Winston);
  • }
  • actions
  • {
  • Set Status(Event Player, Attacker, Knocked Down, 1.250);
  • Wait(0.100, Ignore Condition);
  • Attacker.R = Null;
  • }
  • }
  • rule("Pharah init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Pharah;
  • }
  • actions
  • {
  • Event Player.IsHuman = False;
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Set Max Health(Event Player, 50);
  • Set Damage Dealt(Event Player, 83.333);
  • Set Move Speed(Event Player, 135);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, False);
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Event Player.MutationEnable = Null;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Tracer), Button(Ability 1)), Custom String("passive: evasive maneuvers"),
  • Null, Left, 1, Custom Color(10, 255, 185, 255), Custom Color(10, 255, 185, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "You have a chance\r\n to dodge incoming attacks.\r\n Chance increases when\r\n mid-air."), Null, Left, 2, Custom Color(10,
  • 255, 185, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Lúcio), Button(Jump)), Custom String("Ability 1/2: overcharge"), Null, Left,
  • 3, Custom Color(10, 255, 185, 255), Custom Color(10, 255, 185, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Ability 1 and 2\r\n share cooldown, but\r\n have more power.\r\n Cooldown get's reduced\r\n when dealing damage."), Null, Left, 4, Custom Color(10, 255, 185, 255), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • "Ability 1 and 2\r\n share cooldown, but\r\n have more power.\r\n Cooldown get's reduced\r\n when dealing damage."), Null,
  • Left, 4, Custom Color(10, 255, 185, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.InitSpeed = 135;
  • Event Player.Slow = Null;
  • Event Player.InitDamage = 83.333;
  • Event Player.OutlineHuman = False;
  • Event Player.OutlineZombie = True;
  • }
  • }
  • rule("Pharah passive cd reduction")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Pharah;
  • }
  • conditions
  • {
  • Ability Cooldown(Event Player, Button(Ability 1)) > 0;
  • }
  • actions
  • {
  • Set Ability Cooldown(Event Player, Button(Ability 1), Ability Cooldown(Event Player, Button(Ability 1)) - 1.5);
  • Set Ability Cooldown(Event Player, Button(Ability 2), Ability Cooldown(Event Player, Button(Ability 2)) - 1.5);
  • Set Ability Cooldown(Event Player, Button(Ability 1), Ability Cooldown(Event Player, Button(Ability 1)) - 1.500);
  • Set Ability Cooldown(Event Player, Button(Ability 2), Ability Cooldown(Event Player, Button(Ability 2)) - 1.500);
  • }
  • }
  • rule("Pharah abil 1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Pharah;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Good Explosion, Color(Turquoise), Event Player, 1);
  • Apply Impulse(Event Player, Up, 20, To World, Incorporate Contrary Motion);
  • Set Ability Cooldown(Event Player, Button(Ability 2), 8);
  • }
  • }
  • rule("Pharah abil 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Pharah;
  • }
  • conditions
  • {
  • Is Using Ability 2(Event Player) == True;
  • }
  • actions
  • {
  • Apply Impulse(Event Player, Facing Direction Of(Event Player) * -1, 9, To World, Incorporate Contrary Motion);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Turquoise), Event Player, 1);
  • Set Ability Cooldown(Event Player, Button(Ability 1), 8);
  • }
  • }
  • rule("45 dodge for pharah")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Pharah;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.DodgeChances = 45;
  • Event Player.ChancesToNotDodge = 100 - Event Player.DodgeChances;
  • }
  • }
  • rule("Dodge function when on ground")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • Pharah;
  • }
  • conditions
  • {
  • (Hero Of(Attacker) == Hero(Echo) && Event Ability == Button(Ability 2)) == False;
  • Event Ability != Button(Melee);
  • Is On Ground(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.RandomChance = Random Real(1, 100);
  • Event Player.F = Event Damage;
  • If(Event Player.RandomChance <= 40);
  • Heal(Event Player, Null, Event Player.F);
  • }
  • }
  • rule("Dodge function in air")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • Pharah;
  • }
  • conditions
  • {
  • (Hero Of(Attacker) == Hero(Echo) && Event Ability == Button(Ability 2)) == False;
  • Event Ability != Button(Melee);
  • Is On Ground(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.RandomChance = Random Real(1, 100);
  • Event Player.F = Event Damage;
  • If(Event Player.RandomChance <= 55);
  • Heal(Event Player, Null, Event Player.F);
  • }
  • }
  • rule("Genji init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Genji;
  • }
  • actions
  • {
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Destroy HUD Text(Event Player.Huds[2]);
  • Set Max Health(Event Player, 50);
  • Set Damage Dealt(Event Player, 66.667);
  • Set Move Speed(Event Player, 130);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Disallow Button(Event Player, Button(Ultimate));
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Event Player.MutationEnable = Null;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Moira), Button(Secondary Fire)), Custom String("Ability 1: Toxic grasp"),
  • String("{0}: {1}", Custom String("Cooldown"), Event Player.C), Left, 1, Custom Color(0, 230, 0, 255), Custom Color(0, 230, 0,
  • 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Launch a grappling\r\n hook. If you hit\r\n a human, they get\r\n stunned."), Null, Left, 2, Custom Color(0, 230, 0, 255),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(McCree), Button(Ability 2)), Custom String(
  • "Secondary fire: Poisonous strike"), String("{0}: {1}", Custom String("Cooldown"), Event Player.D), Left, 3, Custom Color(0,
  • 230, 0, 255), Custom Color(0, 230, 0, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Perform a melee.\r\n any humans hit get\r\n hacked, poisononed and\r\n are vulnerable to you."), Null, Left, 4,
  • Custom Color(0, 230, 0, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.InitSpeed = 130;
  • Event Player.Slow = Null;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Reaper), Button(Ability 1)), Custom String("Ultimate: predator"), Null,
  • Left, 5, Custom Color(0, 230, 0, 255), Custom Color(0, 230, 0, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Become invisible and\r\n reveal low-health\r\n humans. CC or any \r\n action reveals you.\r\n Charges with earning\r\n an elim."),
  • Null, Left, 6, Custom Color(0, 230, 0, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Event Player.InitDamage = 66.667;
  • Start Damage Modification(Filtered Array(All Living Players(All Teams), Current Array Element.Gpoison == Event Player),
  • Event Player, 200, Receivers Damagers and Damage Percent);
  • Event Player.O = 0;
  • Event Player.P = 0;
  • Event Player.OutlineHuman = False;
  • Event Player.OutlineZombie = True;
  • }
  • }
  • rule("Genji ability 1 startup")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Genji;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Event Player.C == Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Is Button Held(Event Player, Button(Melee)) == False;
  • }
  • actions
  • {
  • Skip If(Event Player.R == Null, True);
  • Event Player.R = Null;
  • Event Player.O = Eye Position(Event Player);
  • Event Player.P = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player)
  • * 30, Null, Event Player, True);
  • Wait(0.050, Ignore Condition);
  • Create Beam Effect(All Players(All Teams), Bad Beam, Eye Position(Event Player) - Vector(False, True, False), Event Player.O,
  • Color(Green), Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Chase Player Variable At Rate(Event Player, O, Event Player.P, 22.500, Destination and Rate);
  • Call Subroutine(Gability1);
  • Event Player.C = 4;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • }
  • }
  • rule("Genji ability 1 sub")
  • {
  • event
  • {
  • Subroutine;
  • Gability1;
  • }
  • actions
  • {
  • Wait(False, Ignore Condition);
  • Skip If(Is True For Any(All Players(All Teams), Distance Between(Eye Position(Current Array Element), Event Player.O)
  • <= 2 && Current Array Element.IsHuman == True), 3);
  • Loop If(Event Player.O != Event Player.P);
  • Event Player.N = 1;
  • Skip(2);
  • Event Player.N = 2;
  • Event Player.F = Filtered Array(All Players(All Teams),
  • Current Array Element.IsHuman == True && Current Array Element == Closest Player To(Event Player.O, All Teams));
  • }
  • }
  • rule("Genji ability 1 no player hit")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Genji;
  • }
  • conditions
  • {
  • Event Player.N == 1;
  • }
  • actions
  • {
  • Skip If(Distance Between(Event Player.O, Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
  • + Direction Towards(Eye Position(Event Player), Event Player.O) * 35, Null, Event Player, True)) > 2.500, 5);
  • Set Gravity(Event Player, 70);
  • Apply Impulse(Event Player, Up, 5, To World, Cancel Contrary Motion);
  • Event Player.C = 6;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • Call Subroutine(GpullSelf);
  • Event Player.N = Null;
  • Destroy Effect(First Of(Event Player.Effects));
  • Wait(0.250, Ignore Condition);
  • Set Gravity(Event Player, 100);
  • }
  • }
  • rule("Genji ability 1 sub 2")
  • {
  • event
  • {
  • Subroutine;
  • GpullSelf;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Apply Impulse(Event Player, Direction Towards(Eye Position(Event Player), Event Player.O), 10, To World,
  • Incorporate Contrary Motion);
  • Skip If(Is Button Held(Event Player, Button(Jump)), True);
  • Loop If(Distance Between(Eye Position(Event Player), Event Player.O) > 4);
  • }
  • }
  • rule("Genji ability 1 player hit")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Genji;
  • }
  • conditions
  • {
  • Event Player.N == 2;
  • }
  • actions
  • {
  • Event Player.K = 3;
  • Chase Player Variable At Rate(Event Player, K, False, True, Destination and Rate);
  • Set Gravity(Event Player, 70);
  • Event Player.O = Position Of(Event Player.F) + Vector(False, True, False);
  • Apply Impulse(Event Player, Up, 7, To World, Incorporate Contrary Motion);
  • Set Status(Event Player.F, Event Player, Stunned, 10);
  • Event Player.C = 8;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • Call Subroutine(GpullEnemy);
  • Destroy Effect(First Of(Event Player.Effects));
  • Wait(0.500, Ignore Condition);
  • Clear Status(Event Player.F, Stunned);
  • Wait(0.500, Ignore Condition);
  • Event Player.F = Null;
  • Set Gravity(Event Player, 100);
  • }
  • }
  • rule("Genji ability 1 sub 3")
  • {
  • event
  • {
  • Subroutine;
  • GpullEnemy;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Apply Impulse(Event Player, Direction Towards(Eye Position(Event Player), Eye Position(Event Player.F)), 10, To World,
  • Incorporate Contrary Motion);
  • Skip If(Event Player.K == Null, 3);
  • Skip If(Event Player.F == Null, 2);
  • Skip If(Is Dead(Event Player) || Is Dead(Event Player.F), True);
  • Loop If(Distance Between(Eye Position(Event Player.F), Eye Position(Event Player)) > 6);
  • }
  • }
  • rule("Genji secondairy fire")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Genji;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Secondary Fire)) == True;
  • Event Player.D == Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Is Button Held(Event Player, Button(Melee)) == False;
  • }
  • actions
  • {
  • Skip If(Event Player.R == Null, True);
  • Event Player.R = Null;
  • Press Button(Event Player, Button(Melee));
  • Event Player.Stage = 1;
  • Wait(0.500, Ignore Condition);
  • Event Player.Stage = Null;
  • Event Player.D = 6;
  • Chase Player Variable At Rate(Event Player, D, False, True, Destination and Rate);
  • }
  • }
  • rule("Genji secondairy fire hit")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Genji;
  • }
  • conditions
  • {
  • Event Player.Stage == 1;
  • }
  • actions
  • {
  • Victim.Gpoison = Event Player;
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Green), Victim, 1.250);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(Green), Victim, 40);
  • Start Damage Over Time(Victim, Event Player, 4, 6.500);
  • Wait(0.050, Ignore Condition);
  • Set Status(Victim, Event Player, Hacked, 4);
  • Wait(4, Ignore Condition);
  • Victim.Gpoison = Null;
  • }
  • }
  • rule("Genji fully charge ult upon elim")
  • {
  • event
  • {
  • Player Earned Elimination;
  • All;
  • Genji;
  • }
  • conditions
  • {
  • Ultimate Charge Percent(Event Player) < 100;
  • }
  • actions
  • {
  • Set Ultimate Charge(Event Player, 100);
  • }
  • }
  • rule("Genji enable ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Genji;
  • }
  • conditions
  • {
  • Ultimate Charge Percent(Event Player) == 100;
  • }
  • actions
  • {
  • Call Subroutine(ultCharged);
  • }
  • }
  • rule("Genji use ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Genji;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.B == 1;
  • }
  • actions
  • {
  • Set Ultimate Charge(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, False);
  • Event Player.B = 0;
  • Create Progress Bar HUD Text(Event Player, Event Player.R * 16.667, Custom String("Predator"), Top, 10, Custom Color(0, 230, 0,
  • 255), Custom Color(0, 230, 0, 255), Visible To Values and Color, Default Visibility);
  • Event Player.Effects[1] = Last Text ID;
  • Set Status(Event Player, Null, Stunned, 0.016);
  • Small Message(Event Player, Custom String("Invisible!"));
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Green), Event Player, 1.500);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(Green), Event Player, 125);
  • Set Invisible(Event Player, All);
  • Big Message(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True && Health(Current Array Element)
  • < Max Health(Event Player)), Custom String("{0} {1} {2}", Hero Icon String(Hero(Genji)), Custom String("Predator coming...")));
  • Event Player.SpeedBoost += 30;
  • Wait(0.050, Ignore Condition);
  • Event Player.R = 6;
  • Chase Player Variable At Rate(Event Player, R, False, True, Destination and Rate);
  • Call Subroutine(BRult);
  • Play Effect(Event Player, Debuff Impact Sound, Color(Green), Event Player, 50);
  • Event Player.R = Null;
  • Set Invisible(Event Player, None);
  • Small Message(Event Player, Custom String("Visible"));
  • Event Player.SpeedBoost -= 30;
  • Destroy Progress Bar HUD Text(Event Player.Effects[1]);
  • Set Ultimate Ability Enabled(Event Player, True);
  • }
  • }
  • rule("Genji cancel ult when cc'ed")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Genji;
  • }
  • conditions
  • {
  • Event Player.R > Null;
  • (Has Status(Event Player, Hacked) || Has Status(Event Player, Rooted) || Has Status(Event Player, Knocked Down) || Has Status(
  • Event Player, Asleep) || Has Status(Event Player, Frozen) || Has Status(Event Player, Stunned)) == True;
  • }
  • actions
  • {
  • Event Player.R = Null;
  • }
  • }
  • rule("Genji cancel ult when meleeing")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Genji;
  • }
  • conditions
  • {
  • Event Player.R > Null;
  • Is Meleeing(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.R = Null;
  • }
  • }
  • rule("Genji ult reveal low health humans")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is True For Any(Players On Hero(Hero(Genji), All Teams), Current Array Element.R > False) == True;
  • Event Player.IsHuman == True;
  • Health(Event Player) < Max Health(Event Player);
  • }
  • actions
  • {
  • Create Icon(Filtered Array(Players On Hero(Hero(Genji), All Teams), Current Array Element.R > False), Event Player, Skull,
  • Visible To and Position, Color(Green), True);
  • Event Player.Icons[6] = Last Created Entity;
  • Create In-World Text(Filtered Array(Players On Hero(Hero(Genji), All Teams), Current Array Element.R > False), String("{0}: {1}",
  • Custom String("health"), Health(Event Player)), Event Player, True, Do Not Clip, Visible To Position and String, Color(Green),
  • Default Visibility);
  • Event Player.Icons[7] = Last Created Entity;
  • Call Subroutine(IsCondTrue);
  • Destroy Icon(Event Player.Icons[6]);
  • Destroy In-World Text(Event Player.Icons[7]);
  • }
  • }
  • rule("Hog init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Roadhog;
  • }
  • actions
  • {
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Destroy HUD Text(Event Player.Huds[2]);
  • Set Max Health(Event Player, 66.667);
  • Set Damage Dealt(Event Player, 200);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, False);
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Event Player.MutationEnable = Null;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Sigma), Button(Ability 1)), Custom String("Ability 1: Acid pool"), String(
  • "{0}: {1}", Custom String("Cooldown"), Event Player.C), Left, 1, Custom Color(200, 230, 0, 255), Custom Color(200, 230, 0,
  • 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Create a pool that\r\n slows and damages\r\n humans in it."), Null, Left, 2, Custom Color(200, 230, 0, 255), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Roadhog), Button(Ultimate)), Custom String("Ability 2: Acidic climax"),
  • Null, Left, 3, Custom Color(200, 230, 0, 255), Custom Color(200, 230, 0, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Gain a huge speedboost\r\n during usage, and die\r\n after usage."), Null, Left, 4, Custom Color(200, 230, 0, 255), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.InitSpeed = 120;
  • Create HUD Text(Event Player, Ability Icon String(Hero(McCree), Button(Ability 2)), Custom String("Passive: Boomer Incoming!"),
  • Null, Left, 5, Custom Color(200, 230, 0, 255), Custom Color(200, 230, 0, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Explode after dying,\r\n dealing huge damage to\r\n humans nearby."), Null, Left, 6, Custom Color(200, 230, 0, 255), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Event Player.Slow = Null;
  • Event Player.OutlineHuman = False;
  • Event Player.OutlineZombie = True;
  • }
  • }
  • rule("Hog ability 1 select location")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Roadhog;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Event Player.C == Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.Stage == Null;
  • }
  • actions
  • {
  • Create Effect(Event Player, Ring, Color(Lime Green), Position Of(Event Player), 27.500, Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Create Effect(Event Player, Ring, Color(Yellow), Nearest Walkable Position(Event Player.O), 4, Visible To Position and Radius);
  • Event Player.Effects[True] = Last Created Entity;
  • Create In-World Text(Event Player, Custom String("{0} {1} {2}", Icon String(Arrow: Down), Custom String(
  • "Press Lshift again to build, m1 or m2 to cancel"), Icon String(Arrow: Down)), Event Player.O + Vector(False, True, False),
  • 1.250, Clip Against Surfaces, Visible To Position and String, Color(Yellow), Default Visibility);
  • Event Player.Effects[2] = Last Text ID;
  • Event Player.Stage = 1;
  • Wait(0.100, Ignore Condition);
  • Call Subroutine(AbilitySetup);
  • }
  • }
  • rule("Hog chace O")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Roadhog;
  • }
  • conditions
  • {
  • Event Player.Stage == 1;
  • }
  • actions
  • {
  • Event Player.O = Nearest Walkable Position(Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
  • + Facing Direction Of(Event Player) * 25, Null, Event Player, True));
  • Wait(False, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Hog ability 1 sub")
  • {
  • event
  • {
  • Subroutine;
  • AbilitySetup;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Skip If(Is Button Held(Event Player, Button(Primary Fire)) || Is Button Held(Event Player, Button(Secondary Fire)), True);
  • Loop If(!Is Button Held(Event Player, Button(Ability 1)));
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Effect(Event Player.Effects[True]);
  • Destroy In-World Text(Event Player.Effects[2]);
  • Event Player.Stage = 2;
  • Skip If(Is Button Held(Event Player, Button(Primary Fire)) || Is Button Held(Event Player, Button(Secondary Fire)), True);
  • Skip(2);
  • Event Player.Stage = Null;
  • Abort;
  • }
  • }
  • rule("Hog ability 1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Roadhog;
  • }
  • conditions
  • {
  • Event Player.Stage == 2;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.P = Null;
  • Wait(0.050, Ignore Condition);
  • Event Player.P = Event Player.O;
  • Create Effect(All Players(All Teams), Ring, Color(Yellow), Event Player.P, 4, Visible To Position and Radius);
  • Event Player.Effects[3] = Last Created Entity;
  • Create Effect(All Players(All Teams), Cloud, Color(Yellow), Event Player.P, 4, Visible To Position and Radius);
  • Event Player.Effects[4] = Last Created Entity;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Lime Green), Event Player.P, 12);
  • Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Lime Green), Event Player.P, 12);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Lime Green), Event Player.P, 125);
  • Wait(0.050, Ignore Condition);
  • Event Player.Stage = Null;
  • Event Player.C = 10;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • Call Subroutine(Hability1Damage);
  • Skip If(Is Alive(Event Player), 2);
  • Destroy Effect(Event Player.Effects[3]);
  • Destroy Effect(Event Player.Effects[4]);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Hog ability 1 damage sub")
  • {
  • event
  • {
  • Subroutine;
  • Hability1Damage;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == True && Distance Between(Eye Position(
  • Current Array Element), Event Player.P) <= 4 && Is In Line of Sight(Eye Position(Current Array Element), Event Player.P,
  • Barriers Do Not Block LOS)).Slow += 3;
  • Damage(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True && Is In Line of Sight(Event Player.P,
  • Current Array Element, Barriers Do Not Block LOS) && Distance Between(Event Player.P, Current Array Element) <= 4),
  • Event Player, 1.250);
  • Loop If(Is Alive(Event Player) && Event Player.Stage != 1.500);
  • }
  • }
  • rule("Hog ability 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Roadhog;
  • }
  • conditions
  • {
  • Is Using Ability 2(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.InitSpeed = 160;
  • Set Move Speed(Event Player, Event Player.InitSpeed);
  • Big Message(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True && Distance Between(Position Of(
  • Event Player), Position Of(Current Array Element)) <= 17.500), Custom String("{0} {1} {2}", Hero Icon String(Hero(Roadhog)),
  • Custom String("BOOMER INCOMING!"), Hero Icon String(Hero(Roadhog))));
  • Event Player.R = 1.250;
  • Chase Player Variable At Rate(Event Player, R, False, True, Destination and Rate);
  • Call Subroutine(Hability2);
  • Skip If(Event Player.R > False, True);
  • Kill(Event Player, Event Player);
  • Event Player.InitSpeed = 120;
  • Set Move Speed(Event Player, Event Player.InitSpeed);
  • }
  • }
  • rule("Hog ability 2 sub")
  • {
  • event
  • {
  • Subroutine;
  • Hability2;
  • }
  • actions
  • {
  • Wait(0.050 * Event Player.R, Ignore Condition);
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Yellow), Event Player, 2.500);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(Yellow), Event Player, 50 - 50 / Event Player.R);
  • Skip If(Is Dead(Event Player) || Has Status(Event Player, Hacked) || Has Status(Event Player, Knocked Down) || Has Status(
  • Event Player, Asleep) || Has Status(Event Player, Frozen) || Has Status(Event Player, Stunned), True);
  • Loop If(Event Player.R > False);
  • Wait(0.100, Ignore Condition);
  • Stop Chasing Player Variable(Event Player, R);
  • Skip If(Is Alive(Event Player), True);
  • Event Player.R = Null;
  • }
  • }
  • rule("Hog Explode on death")
  • {
  • event
  • {
  • Player Died;
  • All;
  • Roadhog;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Yellow), Position Of(Event Player), 8);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Yellow), Position Of(Event Player), 16);
  • Play Effect(All Players(All Teams), Explosion Sound, Color(White), Event Player, 150);
  • Damage(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True && Is In Line of Sight(Position Of(
  • Event Player), Current Array Element, All Barriers Block LOS) && Distance Between(Position Of(Event Player),
  • Current Array Element) <= 4), Event Player, 40);
  • Damage(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True && Is In Line of Sight(Position Of(
  • Event Player), Current Array Element, All Barriers Block LOS) && Distance Between(Position Of(Event Player),
  • Current Array Element) <= 8), Event Player, 25);
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == True && Distance Between(Eye Position(Event Player),
  • Eye Position(Current Array Element)) <= 8 && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Current Array Element), Barriers Do Not Block LOS)).KnockAway = 17;
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == True && Distance Between(Eye Position(Event Player),
  • Eye Position(Current Array Element)) <= 8 && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Current Array Element), Barriers Do Not Block LOS)).KnockAwayFrom = Event Player;
  • }
  • }
  • rule("Orisa init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Orisa;
  • }
  • actions
  • {
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Destroy HUD Text(Event Player.Huds[2]);
  • Set Max Health(Event Player, 77.778);
  • Set Damage Dealt(Event Player, 100);
  • Event Player.InitDamage = 100;
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Event Player.MutationEnable = Null;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Pharah), Button(Ability 2)), Custom String("Ultimate: Twisted roots"), Null,
  • Left, 3, Custom Color(20, 145, 40, 255), Custom Color(20, 145, 40, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Slow and mark nearby\r\n humans. Stun all Marked\r\n humans near you after a\r\n small duration."), Null, Left, 4,
  • Custom Color(20, 145, 40, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Wrecking Ball), Button(Crouch)), Custom String("Ability 2: Dark descent"),
  • String("{0}: {1}", Custom String("Cooldown"), Event Player.C), Left, 1, Custom Color(20, 145, 40, 255), Custom Color(20, 145,
  • 40, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Select a location to\r\n slowly teleport to.\r\n Upon full teleportation,\r\n slow and hack nearby\r\n humans."), Null,
  • Left, 2, Custom Color(20, 145, 40, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Event Player.InitSpeed = 120;
  • Create HUD Text(Event Player, Icon String(Poison), Custom String("Passive: Toxic growth"), String("{0}: {1}", Custom String(
  • "Growth"), Event Player.F), Left, 5, Custom Color(20, 145, 40, 255), Custom Color(20, 145, 40, 255), Color(White),
  • Visible To and String, Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Randomly gain armour\r\n and size. The chance\r\n to grow increases when\r\n taking damage."),
  • Null, Left, 6, Custom Color(20, 145, 40, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • "Randomly gain health\r\n and size. The chance\r\n to grow increases when\r\n taking damage."), Null, Left, 6, Custom Color(
  • 20, 145, 40, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Orisa), Button(Ability 1)), Custom String("Ability 1: Numb being"), Null,
  • Left, 7, Custom Color(20, 145, 40, 255), Custom Color(20, 145, 40, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[6] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Can be used during CC,\r\n which cleanses the CC."), Null, Left, 8, Custom Color(20, 145, 40, 255), Color(White), Color(
  • "Can be used during CC,\r\n which cleanses the CC.\r\n Lowers movespeed during usage."), Null, Left, 8, Custom Color(20, 145, 40, 255), Color(White), Color(
  • White), Visible To and String, Default Visibility);
  • Event Player.Huds[7] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Orisa), Button(Melee)), Custom String("Passive: Withering touch"), Null,
  • Left, 9, Custom Color(20, 145, 40, 255), Custom Color(20, 145, 40, 255), Color(White),
  • Visible To and String, Default Visibility);
  • Left, 9, Custom Color(20, 145, 40, 255), Custom Color(20, 145, 40, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[8] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Melees slow and hack\r\n humans hit, this\r\n effect grows stronger\r\n the bigger you are."),
  • Null, Left, 10, Custom Color(20, 145, 40, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • "Melees slow and hack\r\n humans hit, this\r\n effect grows stronger\r\n the bigger you are."), Null, Left, 10,
  • Custom Color(20, 145, 40, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[9] = Last Text ID;
  • Event Player.InitHp = 100;
  • Event Player.D = 5;
  • Event Player.F = 0;
  • Start Scaling Player(Event Player, 1 + Event Player.F / 300, True);
  • Disallow Button(Event Player, Button(Ultimate));
  • Event Player.OutlineHuman = False;
  • Event Player.OutlineZombie = True;
  • }
  • }
  • rule("Orisa passive")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Orisa;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Event Player.F <= 300;
  • Event Player.F < 300;
  • }
  • actions
  • {
  • Wait(0.500 - Event Player.D / 250, Ignore Condition);
  • Skip If(Random Integer(False, 100) > Event Player.D, 2);
  • Add Health Pool To Player(Event Player, Armor, 5, True, True);
  • Skip If(Random Integer(False, 100) > Event Player.D, 5);
  • Event Player.InitHp += 1.667;
  • Wait(0.016, Ignore Condition);
  • Set Max Health(Event Player, Event Player.InitHp);
  • Event Player.F += 5;
  • Heal(Event Player, Null, Max Health(Event Player) * 0.025);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Orisa melees slow and hack when big enough")
  • rule("Orisa melees slow and hack")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Orisa;
  • }
  • actions
  • {
  • Victim.Slow += 15 + Event Player.F / 10;
  • Set Status(Victim, Event Player, Hacked, 0.400 + Event Player.F / 100);
  • }
  • }
  • rule("Orisa passive increase scaling and gain ult charge")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • Orisa;
  • }
  • actions
  • {
  • Event Player.D += Event Damage * 0.075;
  • Set Ultimate Charge(Event Player, Ultimate Charge Percent(Event Player) + Event Damage * 0.200);
  • }
  • }
  • rule("Orisa ability 1 cleanse")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Orisa;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • (Has Status(Event Player, Hacked) || Has Status(Event Player, Knocked Down) || Has Status(Event Player, Asleep) || Has Status(
  • Event Player, Frozen) || Has Status(Event Player, Stunned)) == True;
  • }
  • actions
  • {
  • Clear Status(Event Player, Hacked);
  • Clear Status(Event Player, Knocked Down);
  • Clear Status(Event Player, Asleep);
  • Clear Status(Event Player, Frozen);
  • Clear Status(Event Player, Stunned);
  • Event Player.TBfearTime = Null;
  • Event Player.SIGPull = Null;
  • Event Player.ZRultPull = Null;
  • Wait(0.016, Ignore Condition);
  • Start Holding Button(Event Player, Button(Ability 1));
  • Wait Until(Is Using Ability 1(Event Player) == True, 10);
  • Stop Holding Button(Event Player, Button(Ability 1));
  • }
  • }
  • rule("Orisa ability 1 effects")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Orisa;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Clear Status(Event Player, Rooted);
  • Event Player.TBfearTime = Null;
  • Event Player.BRTauntTime = Null;
  • Event Player.Slow = Null;
  • Event Player.Tslow = Null;
  • Event Player.SIGPull = Null;
  • Event Player.ZRultPull = Null;
  • Event Player.InitSpeed = 110;
  • Event Player.InitDamage = 33.333;
  • Event Player.InitSpeed = 105;
  • Wait(0.016, Ignore Condition);
  • Set Damage Dealt(Event Player, Event Player.InitDamage);
  • Set Move Speed(Event Player, Event Player.InitSpeed);
  • Loop If Condition Is True;
  • Event Player.InitDamage = 66.667;
  • Event Player.InitSpeed = 110;
  • Event Player.InitSpeed = 120;
  • Wait(0.016, Ignore Condition);
  • Set Damage Dealt(Event Player, Event Player.InitDamage);
  • Set Move Speed(Event Player, Event Player.InitSpeed);
  • }
  • }
  • rule("Orisa ability 2 setup")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Orisa;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Event Player.C == Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.Stage == Null;
  • }
  • actions
  • {
  • Create Effect(Event Player, Bad Aura, Color(Lime Green), Event Player.O, 1.250 + Event Player.F / 240,
  • Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Create In-World Text(Event Player, Custom String("{0} {1} {2}", Icon String(Arrow: Down), Custom String(
  • "Release E to select, hold m1 or m2 to cancel"), Icon String(Arrow: Down)), Event Player.O + Vector(False, True, False), 1.250,
  • Clip Against Surfaces, Visible To Position and String, Color(Lime Green), Default Visibility);
  • Event Player.Effects[1] = Last Text ID;
  • Event Player.Stage = 1;
  • Wait(0.050, Ignore Condition);
  • Call Subroutine(ORability2Setup);
  • }
  • }
  • rule("Orisa ability 2 setup sub")
  • {
  • event
  • {
  • Subroutine;
  • ORability2Setup;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Skip If(Is Button Held(Event Player, Button(Primary Fire)) || Is Button Held(Event Player, Button(Secondary Fire)), 4);
  • Loop If(Is Button Held(Event Player, Button(Ability 2)));
  • Event Player.Stage = 2;
  • Event Player.C = 12;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy In-World Text(Event Player.Effects[1]);
  • Skip If(Is Button Held(Event Player, Button(Primary Fire)) || Is Button Held(Event Player, Button(Secondary Fire)), True);
  • Skip(2);
  • Event Player.Stage = Null;
  • Abort;
  • }
  • }
  • rule("Orisa chace O")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Orisa;
  • }
  • conditions
  • {
  • Event Player.Stage == 1;
  • }
  • actions
  • {
  • Event Player.O = Nearest Walkable Position(Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
  • + Facing Direction Of(Event Player) * 20, Null, Event Player, True));
  • + Facing Direction Of(Event Player) * (20 + Event Player.F / 30), Null, Event Player, True));
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Orisa use ability 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Orisa;
  • }
  • conditions
  • {
  • Event Player.Stage == 2;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.Stage = 3;
  • disabled Set Status(Event Player, Event Player, Invincible, 5);
  • Event Player.Stage = 3;
  • Destroy Effect(First Of(Event Player.Effects));
  • Wait(0.016, Ignore Condition);
  • Create Effect(All Players(All Teams), Bad Aura, Color(Lime Green), Event Player.P + Vector(0, 3, 0), 1 + Event Player.F / 300,
  • Visible To Position and Radius);
  • Event Player.Effects[0] = Last Created Entity;
  • Create Effect(All Players(All Teams), Cloud, Color(Green), Event Player.P + Vector(0, 3, 0), 1.500 + Event Player.F / 250, None);
  • Event Player.Effects[1] = Last Created Entity;
  • Event Player.P = Position Of(Event Player) - Vector(0, 3, 0);
  • Event Player.N = Position Of(Event Player);
  • Wait(0.016, Ignore Condition);
  • Start Forcing Player Position(Event Player, Event Player.N, True);
  • Disable Movement Collision With Environment(Event Player, True);
  • Chase Player Variable At Rate(Event Player, N, Event Player.P, 2, Destination and Rate);
  • Start Camera(Event Player, Ray Cast Hit Position(Event Player.P + Vector(0, 5, 0), Event Player.P + Vector(0, 5, 0)
  • + World Vector Of(Vector(0, 0.600, 0), Event Player, Rotation) + Facing Direction Of(Event Player) * -2, Null, Event Player,
  • False), Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player) * 200,
  • Null, Event Player, True), 60);
  • Call Subroutine(ORability2);
  • Event Player.N = Event Player.O - Vector(0, 3, 0);
  • Event Player.P = Event Player.O + Vector(0, 0.250, 0);
  • Event Player.Stage = 4;
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Effect(Event Player.Effects[1]);
  • Stop Camera(Event Player);
  • Wait(0.016, Ignore Condition);
  • Create Effect(All Players(All Teams), Bad Aura, Color(Lime Green), Event Player.P, 1.250 + Event Player.F / 240,
  • Visible To Position and Radius);
  • Event Player.Effects[0] = Last Created Entity;
  • Create Effect(All Players(All Teams), Cloud, Color(Green), Event Player.P, 2 + Event Player.F / 150, None);
  • Event Player.Effects[1] = Last Created Entity;
  • Start Camera(Event Player, Ray Cast Hit Position(Event Player.P + Vector(0, 2, 0), Event Player.P + Vector(0, 2, 0)
  • + World Vector Of(Vector(0, 0.600, 0), Event Player, Rotation) + Facing Direction Of(Event Player) * -2, Null, Event Player,
  • False), Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player) * 200,
  • Null, Event Player, True), 60);
  • Enable Movement Collision With Environment(Event Player);
  • Call Subroutine(ORability2);
  • disabled Clear Status(Event Player, Invincible);
  • Event Player.P = 0;
  • Event Player.N = 0;
  • Stop Forcing Player Position(Event Player);
  • Stop Chasing Player Variable(Event Player, N);
  • Event Player.Stage = 0;
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Effect(Event Player.Effects[1]);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(Lime Green), Event Player.P, 100);
  • Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Lime Green), Event Player.P, 4 + Event Player.F / 75);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Lime Green), Event Player.P, 14 + Event Player.F / 21.429);
  • Set Status(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == True && Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= 7 + Event Player.F / 42.857 && Is In Line of Sight(Eye Position(
  • Event Player), Eye Position(Current Array Element), Barriers Do Not Block LOS)), Event Player, Hacked, 4);
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == True && Distance Between(Eye Position(
  • Current Array Element), Eye Position(Event Player)) <= 7 + Event Player.F / 42.857 && Is In Line of Sight(Eye Position(
  • Current Array Element), Eye Position(Event Player), Barriers Do Not Block LOS)).Slow += 30;
  • Stop Camera(Event Player);
  • }
  • }
  • rule("Orisa ability 2 sub")
  • {
  • event
  • {
  • Subroutine;
  • ORability2;
  • }
  • actions
  • {
  • Wait(0.300, Ignore Condition);
  • Skip If(Event Player.Stage == 4, 2);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Lime Green), Event Player.P + Vector(0, 3, 0), 4 + Event Player.F / 75);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(Lime Green), Event Player, 50);
  • Skip If(Event Player.Stage != 4, 3);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(Lime Green), Event Player, 75);
  • Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Lime Green), Event Player.N, 3 + Event Player.F / 100);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Lime Green), Event Player.N, 6 + Event Player.F / 50);
  • Loop If(Event Player.P != Event Player.N);
  • }
  • }
  • rule("Orisa enable ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Orisa;
  • }
  • conditions
  • {
  • Ultimate Charge Percent(Event Player) == 100;
  • }
  • actions
  • {
  • Call Subroutine(ultCharged);
  • }
  • }
  • rule("Orisa use ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Orisa;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Event Player.B == 1;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • }
  • actions
  • {
  • Set Ultimate Charge(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, False);
  • Event Player.B = 0;
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == True && Distance Between(Eye Position(Event Player),
  • Eye Position(Current Array Element)) <= 10 + Event Player.F / 50 && Is In Line of Sight(Eye Position(Event Player),
  • Eye Position(Current Array Element), Barriers Do Not Block LOS)).ORult = Event Player;
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == True && Distance Between(Eye Position(Event Player),
  • Eye Position(Current Array Element)) <= 10 + Event Player.F / 50 && Is In Line of Sight(Eye Position(Event Player),
  • Eye Position(Current Array Element), Barriers Do Not Block LOS)).Slow += 30;
  • Create Effect(All Players(All Teams), Ring, Color(Green), Position Of(Event Player), 10 + Event Player.F / 50,
  • Visible To Position and Radius);
  • Event Player.Effects[2] = Last Created Entity;
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(Lime Green), Event Player, 150);
  • Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Lime Green), Event Player, 3 + Event Player.F / 100);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Lime Green), Event Player, 20 + Event Player.F / 25);
  • Event Player.R = 3;
  • Chase Player Variable At Rate(Event Player, R, False, True, Destination and Rate);
  • Call Subroutine(ORult);
  • Skip If(Has Status(Event Player, Hacked) || Has Status(Event Player, Knocked Down) || Has Status(Event Player, Asleep)
  • || Has Status(Event Player, Frozen) || Has Status(Event Player, Stunned), 4);
  • Set Status(Filtered Array(All Living Players(All Teams), Current Array Element.ORult == Event Player && Distance Between(
  • Eye Position(Event Player), Eye Position(Current Array Element)) <= 10 + Event Player.F / 50 && Is In Line of Sight(
  • Eye Position(Event Player), Eye Position(Current Array Element), Barriers Do Not Block LOS)), Event Player, Stunned, 2);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(Lime Green), Event Player, 200);
  • Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Lime Green), Event Player, 4 + Event Player.F / 100);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Lime Green), Event Player, 20 + Event Player.F / 50);
  • Filtered Array(All Living Players(All Teams), Current Array Element.ORult == Event Player && Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= 10 + Event Player.F / 50 && Is In Line of Sight(Eye Position(
  • Event Player), Eye Position(Current Array Element), Barriers Do Not Block LOS)).ORult = 0;
  • Destroy Effect(Event Player.Effects[2]);
  • Set Ultimate Ability Enabled(Event Player, True);
  • }
  • }
  • rule("Orisa ult sub")
  • {
  • event
  • {
  • Subroutine;
  • ORult;
  • }
  • actions
  • {
  • Skip If(Has Status(Event Player, Hacked) || Has Status(Event Player, Knocked Down) || Has Status(Event Player, Asleep)
  • || Has Status(Event Player, Frozen) || Has Status(Event Player, Stunned), 2);
  • Wait(0.100, Ignore Condition);
  • Loop If(Event Player.R > 0);
  • }
  • }
  • rule("Orisa ult effects")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Orisa;
  • All;
  • }
  • conditions
  • {
  • Event Player.ORult != 0;
  • Distance Between(Eye Position(Event Player.ORult), Eye Position(Event Player)) <= 10 + Event Player.ORult.F / 50;
  • }
  • actions
  • {
  • Skip If(Entity Exists(Event Player.MiscIDs[15]), 3);
  • Small Message(Event Player, Custom String("{0} {1} {2}", Hero Icon String(Hero(Orisa)), Custom String("entangled!"),
  • Hero Icon String(Hero(Orisa))));
  • Create Beam Effect(All Players(All Teams), Bad Beam, Eye Position(Event Player) - Vector(False, True, False), Eye Position(
  • Event Player.ORult) - Vector(False, True, False), Color(Green), Visible To Position and Radius);
  • Event Player.MiscIDs[15] = Last Created Entity;
  • Wait(0.100, Ignore Condition);
  • Loop If Condition Is True;
  • Destroy Effect(Event Player.MiscIDs[15]);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Lime Green), Event Player, 4);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Lime Green), Event Player, 50);
  • Event Player.ORult = 0;
  • }
  • }
  • rule("Bastion init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Bastion;
  • }
  • actions
  • {
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Set Max Health(Event Player, 100);
  • Set Damage Dealt(Event Player, 15);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Event Player.MutationChance -= 22.500;
  • Event Player.MutationEnable = Null;
  • Create HUD Text(Event Player, Ability Icon String(Hero(D.Va), Button(Ability 1)), Custom String("passive: Hover jets"), String(
  • "{0}: {1}", Custom String("Fuel"), Event Player.D), Left, 1, Custom Color(200, 30, 0, 255), Custom Color(200, 30, 0, 255),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Hold jump mid-air\r\n to fly."), Null, Left, 2, Custom Color(200, 30, 0, 255), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Reinhardt), Button(Ability 1)), Custom String("Ability 1: Jet boost"),
  • String("{0}: {1}", Custom String("Cooldown"), Event Player.C), Left, 3, Custom Color(200, 30, 0, 255), Custom Color(200, 30, 0,
  • 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Propell yourself towards\r\n any direction."), Null, Left, 4, Custom Color(200, 30, 0, 255), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.InitSpeed = 120;
  • Big Message(Remove From Array(All Players(All Teams), Event Player), Custom String("{0} {1} {2}", Icon String(Warning),
  • Custom String("MECHA-ZOMBIE INCOMING"), Icon String(Warning)));
  • Event Player.Slow = Null;
  • Event Player.OutlineHuman = False;
  • Event Player.OutlineZombie = True;
  • }
  • }
  • rule("Bastion booting up sequence")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Bastion;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == False;
  • }
  • actions
  • {
  • Big Message(Event Player, Custom String("BOOTING UP SYSTEMS..."));
  • Wait(True, Ignore Condition);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(White), Event Player, 150);
  • Set Ultimate Charge(Event Player, 100);
  • Wait(0.100, Ignore Condition);
  • Start Holding Button(Event Player, Button(Ultimate));
  • Wait(True, Ignore Condition);
  • Stop Holding Button(Event Player, Button(Ultimate));
  • }
  • }
  • rule("Bastion ability 1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Bastion;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Event Player.C == Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Orange), Position Of(Event Player), 3);
  • Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Orange), Position Of(Event Player), 3);
  • Play Effect(All Players(All Teams), Explosion Sound, Color(Orange), Event Player, 125);
  • Apply Impulse(Event Player, Up * 0.250 + Throttle Of(Event Player) * 1.250, 18, To Player, Incorporate Contrary Motion);
  • Event Player.C = 6;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • }
  • }
  • rule("Bastion passive")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Bastion;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Jump)) == True;
  • Altitude Of(Event Player) > 0.900;
  • Event Player.D > Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • }
  • actions
  • {
  • Skip If(Entity Exists(First Of(Event Player.Effects)), 4);
  • Create Effect(All Players(All Teams), Smoke Sound, Color(White), Event Player, Speed Of In Direction(Event Player, Up) * 200 + 400,
  • Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Create Effect(All Players(All Teams), Smoke Sound, Color(White), Event Player, Speed Of In Direction(Event Player, Up) * 200 + 400,
  • Visible To Position and Radius);
  • Event Player.Effects[True] = Last Created Entity;
  • Chase Player Variable At Rate(Event Player, D, False, 75, Destination and Rate);
  • Apply Impulse(Event Player, Direction Towards(Position Of(Event Player), Position Of(Event Player) + Throttle Of(Event Player)
  • * 0.750) + Up * 6, 3, To World, Incorporate Contrary Motion);
  • Skip If(Horizontal Speed Of(Event Player) < 0.500, True);
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Orange), Position Of(Event Player) + Vector(Speed Of In Direction(
  • Event Player, Left), Speed Of In Direction(Event Player, Up), Speed Of In Direction(Event Player, Forward))
  • * 0.100 + Down * 0.250, 0.400);
  • Wait(0.100, Ignore Condition);
  • Loop If Condition Is True;
  • Stop Chasing Player Variable(Event Player, D);
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Effect(Event Player.Effects[True]);
  • }
  • }
  • rule("Bastion passive recharge")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Bastion;
  • }
  • conditions
  • {
  • Event Player.D < 100;
  • Is Button Held(Event Player, Button(Jump)) == False;
  • }
  • actions
  • {
  • Wait(0.050, Ignore Condition);
  • Chase Player Variable At Rate(Event Player, D, 100, 60, Destination and Rate);
  • Loop If Condition Is True;
  • Stop Chasing Player Variable(Event Player, D);
  • }
  • }
  • rule("Soldier init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Soldier: 76;
  • }
  • actions
  • {
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Set Max Health(Event Player, 50);
  • Set Damage Dealt(Event Player, 75);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.InitSpeed = 120;
  • Event Player.IsHuman = True;
  • Event Player.InitDamage = 80;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Soldier: 76), Button(Ability 1)), Custom String("ability 1: sprint"),
  • String("{0}: {1}", Custom String("stamina"), Event Player.B), Left, 1, Custom Color(0, 50, 255, 255), Custom Color(0, 50, 255,
  • 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Uses stamina"), Null, Left, 2, Custom Color(0, 50, 255, 255), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Soldier: 76), Button(Ultimate)), Custom String("passive: battle focus"),
  • String("{0}: {1}", Custom String("bonus damage"), Event Player.D), Left, 3, Custom Color(0, 50, 255, 255), Custom Color(0, 50,
  • 255, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Gain an increasing damage\r\n boost when dealing damage. \r\n fades quickly after not\r\n dealing damage."), Null, Left, 4,
  • Custom Color(0, 50, 255, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.B = 100;
  • Event Player.StrongMelee = False;
  • Event Player.StrongMelee = False;
  • Event Player.InitHp = 100;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Soldier ability 1 deplete charge")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Soldier: 76;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Chase Player Variable At Rate(Event Player, B, False, 20, Destination and Rate);
  • Loop If(Is Using Ability 1(Event Player) && Event Player.B > False);
  • Stop Chasing Player Variable(Event Player, B);
  • Set Status(Event Player, Null, Stunned, 0.016);
  • }
  • }
  • rule("Soldier recharge charge")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Soldier: 76;
  • }
  • conditions
  • {
  • Event Player.B < 100;
  • Is Using Ability 1(Event Player) == False;
  • }
  • actions
  • {
  • Wait(0.750, Ignore Condition);
  • Chase Player Variable At Rate(Event Player, B, 100, 9, Destination and Rate);
  • Loop If Condition Is True;
  • Stop Chasing Player Variable(Event Player, B);
  • }
  • }
  • rule("Soldier disable shift")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Soldier: 76;
  • }
  • conditions
  • {
  • Event Player.B <= Null;
  • }
  • actions
  • {
  • Set Ability 1 Enabled(Event Player, False);
  • Wait(4, Ignore Condition);
  • Loop If Condition Is True;
  • Set Ability 1 Enabled(Event Player, True);
  • }
  • }
  • rule("Soldier no selft damage")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • Soldier: 76;
  • }
  • conditions
  • {
  • Attacker == Event Player;
  • }
  • actions
  • {
  • Heal(Event Player, Null, Event Damage);
  • }
  • }
  • rule("Soldier passive")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Soldier: 76;
  • }
  • conditions
  • {
  • Event Player.D < 50;
  • }
  • actions
  • {
  • Event Player.D += 2;
  • Play Effect(Event Player, Ring Explosion Sound, Color(White), Event Player, 5 + Event Player.D / 2);
  • Event Player.F = True;
  • Wait(0.150, Restart When True);
  • Event Player.F = False;
  • }
  • }
  • rule("Soldier passive damage gain")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Soldier: 76;
  • }
  • conditions
  • {
  • "@Condition eventPlayer.D > 0"
  • Event Player.F == True;
  • }
  • actions
  • {
  • "smallMessage(eventPlayer, \"Gaining focus!\")"
  • Set Damage Dealt(Event Player, Event Player.InitDamage + Event Player.D);
  • Call Subroutine(S76passive);
  • Wait(2.6, Restart When True);
  • Wait(2.600, Restart When True);
  • Set Damage Dealt(Event Player, Event Player.InitDamage);
  • Event Player.D = Null;
  • Small Message(Event Player, Custom String("Focus lost"));
  • }
  • }
  • rule("Soldier passive sub")
  • {
  • event
  • {
  • Subroutine;
  • S76passive;
  • }
  • actions
  • {
  • Set Damage Dealt(Event Player, Event Player.InitDamage + Event Player.D);
  • Wait(0.100, Ignore Condition);
  • Loop If(Event Player.F == True || Is Reloading(Event Player));
  • }
  • }
  • rule("Mccree init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • McCree;
  • }
  • actions
  • {
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Set Max Health(Event Player, 44.444);
  • Set Damage Dealt(Event Player, 114.286);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.InitSpeed = 120;
  • Event Player.IsHuman = True;
  • Event Player.InitDamage = 114.286;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Ashe), Button(Ability 1)), Custom String("ability 1: smoke bomb"), String(
  • "{0}: {1}", Custom String("Cooldown"), Event Player.C), Left, 1, Custom Color(160, 0, 0, 255), Custom Color(160, 0, 0, 255),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "You and nearby allies\r\n become invisible. abilities \r\n or reload do not unstealth."), Null, Left, 2, Custom Color(160,
  • "Deploy a small smoke field,\r\n stealthing all allies inside.\r\n abilities or reload do not\r\n unstealth."), Null, Left, 2, Custom Color(160,
  • 0, 0, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(McCree), Button(Ultimate)), Custom String("passive: One in the chamber"),
  • Null, Left, 3, Custom Color(160, 0, 0, 255), Custom Color(160, 0, 0, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "When on your last bullet,\r\n gain a damage and movespeed\r\n boost."), Null, Left, 4, Custom Color(160, 0, 0, 255),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • "Your last bullet per clip\r\n deals bonus damage. also gain a\r\n speedboost lasting 1 second or\r\n untill emptying the clip."), Null, Left, 4, Custom Color(160, 0, 0, 255), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.StrongMelee = False;
  • Event Player.StrongMelee = False;
  • Event Player.InitHp = 100;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Mccree passive")
  • rule("Mccree passive damage boost")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • McCree;
  • }
  • conditions
  • {
  • Ammo(Event Player, False) == 1;
  • }
  • actions
  • {
  • Small Message(Event Player, Custom String("One in the chamber!"));
  • "createEffect(getAllPlayers().exclude(eventPlayer), Effect.BAD_AURA, Color.ORANGE, eventPlayer.getEyePosition(), 0.25, EffectReeval.VISIBILITY_POSITION_AND_RADIUS)\r\n\n\r\n\neventPlayer.Effects[0] = getLastCreatedEntity()"
  • Event Player.InitDamage = 185.714;
  • Create HUD Text(Event Player, Null, Null, String("{0} {1} {2}", Ability Icon String(Hero(McCree), Button(Ultimate)),
  • Custom String("One in the chamber"), Ability Icon String(Hero(McCree), Button(Ultimate))), Top, 20, Color(White), Color(White),
  • Custom Color(160, 0, 0, 255), Visible To and String, Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Event Player.InitDamage = 178.571;
  • Set Damage Dealt(Event Player, Event Player.InitDamage);
  • Event Player.SpeedBoost += 15;
  • Call Subroutine(IsCondTrue);
  • Event Player.InitDamage = 114.286;
  • Set Damage Dealt(Event Player, Event Player.InitDamage);
  • Event Player.SpeedBoost -= 15;
  • Small Message(Event Player, Custom String("Bonus damage and movespead lost."));
  • Destroy HUD Text(Event Player.Huds[4]);
  • }
  • }
  • rule("Mccree passive speed boost")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • McCree;
  • }
  • conditions
  • {
  • Ammo(Event Player, False) == 1;
  • }
  • actions
  • {
  • Event Player.SpeedBoost += 35;
  • Wait Until(Ammo(Event Player, False) != 1, 1);
  • Event Player.SpeedBoost -= 35;
  • }
  • }
  • rule("Mccree ability 1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • McCree;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Event Player.C <= Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Altitude Of(Event Player) <= True;
  • }
  • actions
  • {
  • Event Player.C = 18;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • Event Player.O = Position Of(Event Player);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(White), Event Player, 14);
  • Wait(0.100, Ignore Condition);
  • Wait(0.016, Ignore Condition);
  • Create Effect(All Players(All Teams), Ring, Color(White), Event Player.O, 5, Visible To Position and Radius);
  • Event Player.Effects[0] = Last Created Entity;
  • Create Effect(All Players(All Teams), Cloud, Color(White), Event Player.O, 5, Visible To Position and Radius);
  • Event Player.Effects[1] = Last Created Entity;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(White), Event Player, 10);
  • Play Effect(All Players(All Teams), Bad Pickup Effect, Color(White), Event Player, 2);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(White), Event Player, 100);
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == True && Distance Between(Event Player.O,
  • Eye Position(Current Array Element)) <= 4.250 && Is In Line of Sight(Event Player.O, Eye Position(Current Array Element),
  • Barriers Do Not Block LOS)).MCstealth = 4;
  • Event Player.R = 4;
  • Event Player.R = 5;
  • Chase Player Variable At Rate(Event Player, R, False, True, Destination and Rate);
  • Wait(0.050, Ignore Condition);
  • Call Subroutine(MCability1);
  • Event Player.O = Null;
  • Destroy Effect(Event Player.Effects[0]);
  • Destroy Effect(Event Player.Effects[1]);
  • }
  • }
  • rule("McCree ability 1 sub")
  • {
  • event
  • {
  • Subroutine;
  • MCability1;
  • }
  • actions
  • {
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == True && Distance Between(Event Player.O,
  • Eye Position(Current Array Element)) <= 6.25 && Is In Line of Sight(Event Player.O, Eye Position(Current Array Element),
  • Barriers Do Not Block LOS)).MCstealth = 0.5;
  • Wait(0.016, Ignore Condition);
  • Loop If(Event Player.R > 0);
  • }
  • }
  • rule("Mcree ability 1 effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.MCstealth > Null;
  • Is Firing Primary(Event Player) == False;
  • Is Firing Secondary(Event Player) == False;
  • Is Meleeing(Event Player) == False;
  • }
  • actions
  • {
  • Small Message(Event Player, Custom String("{0} {1} {2}", Hero Icon String(Hero(McCree)), Custom String("invisible!"),
  • Hero Icon String(Hero(McCree))));
  • Set Invisible(Event Player, All);
  • Skip If(Event Player.SpeedBoost >= 15, True);
  • disabled Skip If(Event Player.SpeedBoost >= 15, True);
  • Event Player.SpeedBoost += 15;
  • Chase Player Variable At Rate(Event Player, MCstealth, False, True, Destination and Rate);
  • Call Subroutine(IsCondTrueFast);
  • Small Message(Event Player, Custom String("{0} {1} {2}", Hero Icon String(Hero(McCree)), Custom String("visible"),
  • Hero Icon String(Hero(McCree))));
  • Set Invisible(Event Player, None);
  • Skip If(Event Player.SpeedBoost < 15, True);
  • Event Player.SpeedBoost -= 15;
  • Event Player.MCstealth = 0;
  • }
  • }
  • rule("Hanzo init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Hanzo;
  • }
  • actions
  • {
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Destroy HUD Text(Event Player.Huds[2]);
  • Set Max Health(Event Player, 50);
  • Set Damage Dealt(Event Player, 80);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.InitSpeed = 120;
  • Event Player.IsHuman = True;
  • Create HUD Text(Event Player, Icon String(Skull), Custom String("ability 1: Death mark"), String("{0}: {1}", Custom String(
  • "Cooldown"), Event Player.C), Left, 1, Custom Color(75, 190, 255, 255), Custom Color(75, 190, 255, 255), Color(White),
  • Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Your next arrow marks\r\n a zombie. Mark deals all \r\n damage dealt to him again \r\n upon detonation. Lshift\r\n to detonate early"),
  • Null, Left, 2, Custom Color(75, 190, 255, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Hanzo), Button(Ability 2)), Custom String("ability 2: storm arrows"), Null,
  • Left, 5, Custom Color(75, 190, 255, 255), Custom Color(75, 190, 255, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Earning eliminations reduce\r\n cooldown to 1 second."), Null, Left, 6, Custom Color(75, 190, 255, 255), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Hanzo), Button(Ultimate)), Custom String("ultimate: dragon's aprentice"),
  • Null, Left, 3, Custom Color(75, 190, 255, 255), Custom Color(75, 190, 255, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Upon using your ultimate\r\n start floating. After\r\n firing your ult,\r\n knock yourself back."), Null, Left, 4,
  • Custom Color(75, 190, 255, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.StrongMelee = False;
  • Event Player.StrongMelee = False;
  • Event Player.InitHp = 100;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Hanzo ability 2 bonus damage")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Hanzo;
  • }
  • conditions
  • {
  • Is Using Ability 2(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.InitDamage = 100;
  • Set Damage Dealt(Event Player, Event Player.InitDamage);
  • Call Subroutine(IsCondTrueFast);
  • Wait(0.500, Ignore Condition);
  • Event Player.InitDamage = 80;
  • Set Damage Dealt(Event Player, Event Player.InitDamage);
  • }
  • }
  • rule("Hanzo ability 1 equip")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Hanzo;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Event Player.C == Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.D == Null;
  • Is Button Held(Event Player, Button(Primary Fire)) == False;
  • Is Using Ability 2(Event Player) == False;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Sky Blue), Position Of(Event Player), 3);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Sky Blue), Event Player, 50);
  • Small Message(Event Player, Custom String("Death mark arrow equiped."));
  • Wait(0.150, Ignore Condition);
  • Event Player.D = 1;
  • Call Subroutine(HZability2);
  • }
  • }
  • rule("Hanzo ability 1 player hit")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Hanzo;
  • }
  • conditions
  • {
  • Event Player.D == 2;
  • Event Ability == Button(Primary Fire);
  • }
  • actions
  • {
  • Event Player.D = Null;
  • Victim.HmarkID = Event Player;
  • Victim.HmarkTimer = 4;
  • Victim.Hmark = 50;
  • Event Player.F = Null;
  • }
  • }
  • rule("Hanzo death mark effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.HmarkID != Null;
  • }
  • actions
  • {
  • Small Message(Event Player, Custom String("{0} {1} {2}", Hero Icon String(Hero(Hanzo)), Custom String("Marked!"), Hero Icon String(
  • Hero(Hanzo))));
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Sky Blue), Position Of(Event Player) + Vector(False, True, False), 1);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Sky Blue), Event Player, 50);
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Position Of(Event Player), Skull,
  • Visible To and Position, Color(Sky Blue), False);
  • Event Player.Icons[4] = Last Created Entity;
  • Create Effect(Remove From Array(All Players(All Teams), Event Player), Good Aura, Color(Sky Blue), Position Of(Event Player)
  • + Vector(False, True, False), 0.200 + Event Player.Hmark / 150, Visible To Position and Radius);
  • Event Player.Icons[5] = Last Created Entity;
  • Chase Player Variable At Rate(Event Player, HmarkTimer, False, True, Destination and Rate);
  • Call Subroutine(HZmark);
  • Destroy Icon(Event Player.Icons[4]);
  • Destroy Effect(Event Player.Icons[5]);
  • Damage(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= 6 && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Current Array Element), Barriers Do Not Block LOS)), Event Player.HmarkID, Event Player.Hmark);
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Sky Blue), Position Of(Event Player) + Vector(False, True, False),
  • True + Event Player.Hmark / 100);
  • Play Effect(All Players(All Teams), Explosion Sound, Color(Sky Blue), Event Player, 50 + Event Player.Hmark);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Sky Blue), Position Of(Event Player), 12);
  • Wait(0.050, Ignore Condition);
  • Event Player.HmarkID = Null;
  • Event Player.HmarkTimer = Null;
  • Event Player.Hmark = Null;
  • }
  • }
  • rule("Hanzo ability 1 equip sub")
  • {
  • event
  • {
  • Subroutine;
  • HZability2;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Sky Blue), Position Of(Event Player), 2);
  • Wait(0.500, Ignore Condition);
  • Loop If(Event Player.D == 1);
  • }
  • }
  • rule("Hanzo ability 1 unequip")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Hanzo;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Event Player.C == Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.D == 1;
  • Is Using Ability 2(Event Player) == False;
  • }
  • actions
  • {
  • Wait(0.250, Abort When False);
  • Event Player.D = Null;
  • Small Message(Event Player, Custom String("Death mark arrow unequiped."));
  • }
  • }
  • rule("Hanzo ability 1 track arrow")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Hanzo;
  • }
  • conditions
  • {
  • Event Player.D == 1;
  • Is Button Held(Event Player, Button(Primary Fire)) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • }
  • actions
  • {
  • Chase Player Variable At Rate(Event Player, F, 125, 133.333, Destination and Rate);
  • Wait(False, Ignore Condition);
  • Skip If(Is Using Ability 2(Event Player) || Is Button Held(Event Player, Button(Secondary Fire)) || Has Status(Event Player,
  • Hacked) || Has Status(Event Player, Knocked Down) || Has Status(Event Player, Asleep) || Has Status(Event Player, Frozen)
  • || Has Status(Event Player, Stunned), 6);
  • Loop If(Is Button Held(Event Player, Button(Primary Fire)));
  • Stop Chasing Player Variable(Event Player, F);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(White), Event Player, 50);
  • Event Player.D = 2;
  • Event Player.C = 10;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • Skip If(Is Using Ability 2(Event Player) || Is Button Held(Event Player, Button(Secondary Fire)) || Has Status(Event Player,
  • Hacked) || Has Status(Event Player, Knocked Down) || Has Status(Event Player, Asleep) || Has Status(Event Player, Frozen)
  • || Has Status(Event Player, Stunned), 6);
  • Event Player.F = Null;
  • Wait(True, Ignore Condition);
  • Skip If(Event Player.D == Null, True);
  • Event Player.D = Null;
  • }
  • }
  • rule("Hanzo mark sub")
  • {
  • event
  • {
  • Subroutine;
  • HZmark;
  • }
  • actions
  • {
  • "playEffect(getAllPlayers().exclude(eventPlayer), DynamicEffect.BAD_EXPLOSION, Color.SKY_BLUE, eventPlayer.getPosition() + vect(0, 2.5, 0), 0.2 + eventPlayer.Hmark / 100)"
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(White), Event Player, 100 - Event Player.HmarkTimer * 25);
  • Wait(0.250, Ignore Condition);
  • Skip If(Is Button Held(Event Player.HmarkID, Button(Ability 1)), True);
  • Loop If(Event Player.HmarkTimer > False && Is Alive(Event Player));
  • }
  • }
  • rule("Hanzo mark add mark damage")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.HmarkID != Null;
  • }
  • actions
  • {
  • Event Player.Hmark += Event Damage;
  • Play Effect(Remove From Array(All Players(All Teams), Event Player), Bad Explosion, Color(Sky Blue), Position Of(Event Player)
  • + Vector(False, 2.500, False), 0.200 + Event Player.Hmark / 100);
  • }
  • }
  • rule("Hanzo decrease ability 2 cooldown while ability 2 is used")
  • {
  • event
  • {
  • Player Earned Elimination;
  • All;
  • Hanzo;
  • }
  • actions
  • {
  • "@Condition eventPlayer.isUsingAbility2() == true"
  • Wait(0.100, Ignore Condition);
  • Loop If(Is Using Ability 2(Event Player));
  • Skip If(Ability Cooldown(Event Player, Button(Ability 2)) <= True, True);
  • Set Ability Cooldown(Event Player, Button(Ability 2), True);
  • }
  • }
  • rule("Hanzo ability 2 unequip ability 1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Hanzo;
  • }
  • conditions
  • {
  • Is Using Ability 2(Event Player) == True;
  • Event Player.D == 1;
  • }
  • actions
  • {
  • Event Player.D = Null;
  • Small Message(Event Player, Custom String("Death mark arrow unequiped."));
  • }
  • }
  • rule("Hanzo ult is cool now")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Hanzo;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == True;
  • }
  • actions
  • {
  • Set Gravity(Event Player, False);
  • Start Forcing Throttle(Event Player, False, False, False, False, False, False);
  • Apply Impulse(Event Player, Throttle Of(Event Player), 7, To Player, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Up, 2, To World, Cancel Contrary Motion);
  • Skip If(!Is Button Held(Event Player, Button(Jump)), True);
  • Apply Impulse(Event Player, Up, 4, To World, Cancel Contrary Motion);
  • Call Subroutine(IsCondTrueFast);
  • Set Gravity(Event Player, 100);
  • Apply Impulse(Event Player, Facing Direction Of(Event Player) * -1, 18, To World, Cancel Contrary Motion);
  • Stop Forcing Throttle(Event Player);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Sky Blue), Event Player, 1.500);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Sky Blue), Event Player, 125);
  • }
  • }
  • rule("Sombra init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sombra;
  • }
  • actions
  • {
  • Destroy Icon(Event Player.Icons[True]);
  • Skip If(Array Contains(Global.SombraDisguise, Event Player), 4);
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Destroy HUD Text(Event Player.Huds[2]);
  • Set Max Health(Event Player, 50);
  • Set Damage Dealt(Event Player, 135);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, True);
  • Disallow Button(Event Player, Button(Ability 1));
  • Set Ability 2 Enabled(Event Player, False);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, False);
  • Disallow Button(Event Player, Button(Ultimate));
  • Skip If(Event Player.B != Null, True);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Wait(False, Ignore Condition);
  • Event Player.InitSpeed = 120;
  • Event Player.IsHuman = True;
  • Event Player.InitDamage = 135;
  • Heal(Event Player, Null, Max Health(Event Player));
  • Skip If(Array Contains(Global.SombraDisguise, Event Player), 19);
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Reinhardt), Button(Ultimate)), Custom String("Ultimate: Static discharge"),
  • Null, Left, 3, Custom Color(200, 70, 255, 255), Custom Color(200, 70, 255, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Zap all zombies near\r\n you or your sprites\r\n every second. Zombies\r\n zapped 3 times get\r\n stunned for 1 second."),
  • Null, Left, 4, Custom Color(200, 70, 255, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Sombra), Button(Ability 1)), Custom String("Ability 1: Disguise"), String(
  • "{0}: {1}", Custom String("Cooldown"), Event Player.C), Left, 1, Custom Color(200, 70, 255, 255), Custom Color(200, 70, 255,
  • 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Change your appearance\r\n to that of a reaper.\r\n press Lshift again or\r\n take/deal damage to\r\n exit disguise."),
  • Null, Left, 2, Custom Color(200, 70, 255, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Event Player.InitSpeed = 120;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Sombra), Button(Ultimate)), Custom String("Passive: Sprites"), Null, Left,
  • 5, Custom Color(200, 70, 255, 255), Custom Color(200, 70, 255, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Killing zombies spawns\r\n sprites on them. Sprites\r\n hack and reveal zombies\r\n near it."), Null, Left, 6,
  • Custom Color(200, 70, 255, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Sombra), Button(Melee)), Custom String("Passive: backstab"), Null, Left, 7,
  • Custom Color(200, 70, 255, 255), Custom Color(200, 70, 255, 255), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Ability Icon String(Hero(Sombra), Button(Melee)), Custom String("Passive: Opportunist"), Null, Left,
  • 7, Custom Color(200, 70, 255, 255), Custom Color(200, 70, 255, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[6] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Meleeing someone from\r\n behind deals double\r\n damage and grants a\r\n speedboost."), Null, Left, 8, Custom Color(200,
  • 70, 255, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • "Meleeing someone from\r\n behind deals double\r\n damage. Gain a speedboost\r\n when not viewed by\r\n zombies"), Null,
  • Left, 8, Custom Color(200, 70, 255, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[7] = Last Text ID;
  • Preload Hero(Event Player, Hero(Reaper));
  • Skip If(!Array Contains(Global.SombraDisguise, Event Player), 7);
  • Wait(False, Ignore Condition);
  • Clear Status(Event Player, Unkillable);
  • Event Player.C = 15;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • Skip If(First Of(Event Player.F) == 100, True);
  • Start Rule(ThxRainbow, Do Nothing);
  • Set Ultimate Charge(Event Player, Event Player.F[True]);
  • Global.SombraDisguise[Slot Of(Event Player)] = Null;
  • Wait(0.100, Ignore Condition);
  • Global.SombraDisguise[Slot Of(Event Player)] = Null;
  • Event Player.StrongMelee = True;
  • Event Player.StrongMelee = True;
  • Event Player.InitHp = 100;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Sombra ability 1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sombra;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Event Player.C == Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Array Contains(Global.SombraDisguise, Event Player) == False;
  • Is Alive(Event Player) == True;
  • Global.MatchStatus == 1;
  • Event Player.B != 2;
  • Event Player.K == Null;
  • Event Player.InfectPosition == Null;
  • }
  • actions
  • {
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False), Event Player, Diamond,
  • Visible To and Position, Color(Green), True);
  • Event Player.Icons[True] = Last Created Entity;
  • Event Player.F[False] = Max Health(Event Player) - Health(Event Player);
  • Event Player.F[True] = Ultimate Charge Percent(Event Player);
  • Global.SombraDisguise[Slot Of(Event Player)] = Event Player;
  • Play Effect(All Players(All Teams), Good Explosion, Color(Purple), Event Player, 1.500);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Purple), Event Player, 125);
  • Wait(0.050, Ignore Condition);
  • Start Forcing Player To Be Hero(Event Player, Hero(Reaper));
  • }
  • }
  • rule("Sombra ability 1 reaper init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reaper;
  • }
  • conditions
  • {
  • Array Contains(Global.SombraDisguise, Event Player) == True;
  • }
  • actions
  • {
  • Event Player.K = 1;
  • Set Max Health(Event Player, 40);
  • Set Damage Dealt(Event Player, 400);
  • Set Move Speed(Event Player, 130);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Primary Fire Enabled(Event Player, False);
  • Skip If(Event Player.B != Null, True);
  • Set Ultimate Ability Enabled(Event Player, True);
  • "eventPlayer.setStatusEffect(null, Status.UNKILLABLE, 9999)"
  • Wait(0.100, Ignore Condition);
  • Disallow Button(Event Player, Button(Ultimate));
  • Heal(Event Player, Null, Max Health(Event Player));
  • Preload Hero(Event Player, Hero(Sombra));
  • Wait(0.100, Ignore Condition);
  • Skip If(First Of(Event Player.F) == Null, True);
  • Start Rule(ThxRainbow, Do Nothing);
  • Set Ultimate Charge(Event Player, Event Player.F[True]);
  • Wait(2, Ignore Condition);
  • Event Player.K = Null;
  • Event Player.InitHp = 125;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = True;
  • }
  • }
  • rule("Sombra exit disguise manually")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reaper;
  • }
  • conditions
  • {
  • Array Contains(Global.SombraDisguise, Event Player) == True;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.K == Null;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Wait(0.150, Abort When False);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Purple), Event Player, 1.500);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Purple), Event Player, 80);
  • Event Player.F[True] = Ultimate Charge Percent(Event Player);
  • Wait(False, Ignore Condition);
  • Event Player.F[False] = Max Health(Event Player) - Health(Event Player);
  • Wait(False, Ignore Condition);
  • Start Forcing Player To Be Hero(Event Player, Hero(Sombra));
  • }
  • }
  • rule("Sombra exit disguise through damage dealt")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Reaper;
  • }
  • conditions
  • {
  • Array Contains(Global.SombraDisguise, Event Player) == True;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Good Explosion, Color(Purple), Event Player, 1.500);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Purple), Event Player, 60);
  • Event Player.F[True] = Ultimate Charge Percent(Event Player);
  • Wait(False, Ignore Condition);
  • Event Player.F[False] = Max Health(Event Player) - Health(Event Player);
  • Wait(False, Ignore Condition);
  • Start Forcing Player To Be Hero(Event Player, Hero(Sombra));
  • }
  • }
  • rule("Sombra exit disguise through damage received")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • Reaper;
  • }
  • conditions
  • {
  • Array Contains(Global.SombraDisguise, Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.K = Null;
  • Play Effect(All Players(All Teams), Good Explosion, Color(Purple), Event Player, 1.500);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Purple), Event Player, 125);
  • Event Player.F[True] = Ultimate Charge Percent(Event Player);
  • Wait(False, Ignore Condition);
  • Event Player.F[False] = Max Health(Event Player) - Health(Event Player);
  • Wait(False, Ignore Condition);
  • Start Forcing Player To Be Hero(Event Player, Hero(Sombra));
  • }
  • }
  • rule("Sombra exit disguise through dying")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Array Contains(Global.SombraDisguise, Event Player) == True;
  • (Hero Of(Event Player) == Hero(Sombra) || Hero Of(Event Player) == Hero(Reaper)) == True;
  • }
  • actions
  • {
  • Global.SombraDisguise[Slot Of(Event Player)] = Null;
  • }
  • }
  • rule("Sombra passive")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dead(Event Player) == True;
  • Event Player.IsHuman == False;
  • (Array Contains(Global.SombraDisguise, Attacker) || Hero Of(Attacker) == Hero(Sombra)) == True;
  • }
  • actions
  • {
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Orb, Color(Purple), Position Of(
  • Create Effect(Filtered Array(All Players(All Teams), (Current Array Element.IsHuman == True || Current Array Element.IsHuman == False && Distance Between(Position Of(Event Player), Eye Position(Current Array Element)) <= 6.25)), Orb, Color(Purple), Position Of(
  • Event Player) + Vector(False, True, False), 0.750, Visible To Position and Radius);
  • Event Player.MiscIDs[5] = Last Created Entity;
  • Create Effect(Event Player.SOMpassive, Bad Aura, Color(Purple), Position Of(Event Player) + Vector(False, True, False), 0.500,
  • Create Effect(Filtered Array(All Players(All Teams), (Current Array Element.IsHuman == True || Current Array Element.IsHuman == False && Distance Between(Position Of(Event Player) + Vector(False, True, False), Eye Position(Current Array Element)) <= 6.25)), Bad Aura, Color(Purple), Position Of(Event Player) + Vector(False, True, False), 0.500,
  • Visible To Position and Radius);
  • Event Player.MiscIDs[6] = Last Created Entity;
  • Event Player.SOMpassive = Attacker;
  • Call Subroutine(SOMpassive);
  • Destroy Effect(Event Player.MiscIDs[5]);
  • Destroy Effect(Event Player.MiscIDs[6]);
  • Event Player.SOMpassive = Null;
  • }
  • }
  • rule("Sombra passive sub")
  • {
  • event
  • {
  • Subroutine;
  • SOMpassive;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Skip If(Event Player.SOMpassive.B != 2, True);
  • Call Subroutine(SOMpassiveUlt);
  • Loop If(Is Dead(Event Player));
  • }
  • }
  • rule("Sombra passive effect")
  • rule("Sombra passive hack")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == False;
  • Is True For Any(Filtered Array(All Players(All Teams), Current Array Element.SOMpassive != Null), Distance Between(Position Of(
  • Event Player), Position Of(Current Array Element)) <= 6 && Is In Line of Sight(Position Of(Current Array Element),
  • Event Player), Position Of(Current Array Element)) <= 6.25 && Is In Line of Sight(Position Of(Current Array Element),
  • Event Player, Barriers Do Not Block LOS)) == True;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Eye,
  • Visible To and Position, Color(Purple), True);
  • Event Player.Icons[3] = Last Created Entity;
  • Set Status(Event Player, Null, Hacked, 10000);
  • Call Subroutine(IsCondTrue);
  • Destroy Icon(Event Player.Icons[3]);
  • Clear Status(Event Player, Hacked);
  • }
  • }
  • rule("Sombra passive reveal")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == False;
  • Is True For Any(Filtered Array(All Players(All Teams), Current Array Element.SOMpassive != Null), Distance Between(Position Of(
  • Event Player), Position Of(Current Array Element)) <= 14.25) == True;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Skip If(Event Player.Revealed >= 0.2, 1);
  • Event Player.Revealed = 0.2;
  • Loop If Condition Is True;
  • }
  • }
  • rule("Sombra passive movespeed")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • (Hero Of(Event Player) == Hero(Sombra) || Array Contains(Global.SombraDisguise, Event Player) == True) == True;
  • }
  • actions
  • {
  • Skip If(Entity Exists(Event Player.Huds[8]), 2);
  • Create HUD Text(Event Player, Null, Null, String("{0} {1} {2}", Ability Icon String(Hero(Sombra), Button(Melee)),
  • Custom String("Movespeed gained"), Ability Icon String(Hero(Sombra), Button(Melee))), Top, 20, Color(White), Color(White),
  • Custom Color(200, 70, 255, 255), Visible To and String, Default Visibility);
  • Event Player.Huds[8] = Last Text ID;
  • Event Player.SpeedBoost = Event Player.SpeedBoost + 15;
  • Wait Until(Is True For Any(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False), Is In View Angle(
  • Current Array Element, Eye Position(Event Player), 45) == True && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Current Array Element), Barriers Do Not Block LOS)) || Is Dead(Event Player) == True, 99999);
  • Skip If(Event Player.SpeedBoost < 15, 1);
  • Event Player.SpeedBoost = Event Player.SpeedBoost - 15;
  • Destroy HUD Text(Event Player.Huds[8]);
  • Wait Until(Is True For Any(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False), Is In View Angle(
  • Current Array Element, Eye Position(Event Player), 45) == False && Is In Line of Sight(Eye Position(Event Player),
  • Eye Position(Current Array Element), Barriers Do Not Block LOS)) || Is Dead(Event Player) == True, 99999);
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Sombra enable ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sombra;
  • }
  • conditions
  • {
  • Ultimate Charge Percent(Event Player) == 100;
  • }
  • actions
  • {
  • Call Subroutine(ultCharged);
  • }
  • }
  • rule("Sombra use ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sombra;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Event Player.B == 1;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • }
  • actions
  • {
  • Set Ultimate Charge(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, False);
  • Create Effect(All Players(All Teams), Energy Sound, Color(White), Position Of(Event Player), 50, Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Create Effect(All Players(All Teams), Good Aura, Color(Purple), Position Of(Event Player), True, Visible To Position and Radius);
  • Event Player.Effects[True] = Last Created Entity;
  • Create Effect(All Players(All Teams), Ring, Color(Purple), Position Of(Event Player), 7, Visible To Position and Radius);
  • Event Player.Effects[2] = Last Created Entity;
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 150);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Purple), Event Player, 2);
  • Event Player.B = 2;
  • Event Player.R = 8;
  • Chase Player Variable At Rate(Event Player, R, False, True, Destination and Rate);
  • Call Subroutine(SOMult);
  • Event Player.B = Null;
  • Set Ultimate Ability Enabled(Event Player, True);
  • Event Player.R = Null;
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Effect(Event Player.Effects[True]);
  • Destroy Effect(Event Player.Effects[2]);
  • }
  • }
  • rule("Sombra ult sub")
  • {
  • event
  • {
  • Subroutine;
  • SOMult;
  • }
  • actions
  • {
  • Wait(True, Ignore Condition);
  • Damage(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Is In Line of Sight(Eye Position(
  • Event Player), Eye Position(Current Array Element), Barriers Do Not Block LOS) && Distance Between(Eye Position(Event Player),
  • Eye Position(Current Array Element)) <= 7), Event Player, 10);
  • Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Is In Line of Sight(Eye Position(Event Player),
  • Eye Position(Current Array Element), Barriers Do Not Block LOS) && Distance Between(Eye Position(Event Player), Eye Position(
  • Current Array Element)) <= 7).SOMult += True;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Purple), Position Of(Event Player), 14);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(Purple), Event Player, 125);
  • Loop If(Is Alive(Event Player) && Event Player.R > False);
  • }
  • }
  • rule("Sombra ult effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.SOMult >= 3;
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Stunned, True);
  • Play Effect(All Players(All Teams), Good Pickup Effect, Color(Purple), Position Of(Event Player), 1.500);
  • Play Effect(All Players(All Teams), Explosion Sound, Color(Purple), Position Of(Event Player), 130);
  • Event Player.SOMult -= 3;
  • Wait(0.250, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Sombra passive+ult")
  • {
  • event
  • {
  • Subroutine;
  • SOMpassiveUlt;
  • }
  • actions
  • {
  • Skip If(Entity Exists(Event Player.MiscIDs[7]), 6);
  • Create Effect(All Players(All Teams), Energy Sound, Color(White), Position Of(Event Player), 30, Visible To Position and Radius);
  • Event Player.MiscIDs[7] = Last Created Entity;
  • Create Effect(All Players(All Teams), Good Aura, Color(Purple), Position Of(Event Player), True, Visible To Position and Radius);
  • Event Player.MiscIDs[8] = Last Created Entity;
  • Create Effect(All Players(All Teams), Ring, Color(Purple), Position Of(Event Player), 6, Visible To Position and Radius);
  • Event Player.MiscIDs[9] = Last Created Entity;
  • Wait(True, Ignore Condition);
  • Damage(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Is In Line of Sight(Eye Position(
  • Event Player), Eye Position(Current Array Element), Barriers Do Not Block LOS) && Distance Between(Position Of(Event Player),
  • Current Array Element) <= 6), Event Player.SOMpassive, 5);
  • Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Is In Line of Sight(Eye Position(Event Player),
  • Eye Position(Current Array Element), Barriers Do Not Block LOS) && Distance Between(Eye Position(Event Player), Eye Position(
  • Current Array Element)) <= 6).SOMult += True;
  • Loop If(Is Dead(Event Player) && Event Player.SOMpassive.R > False);
  • Destroy Effect(Event Player.MiscIDs[7]);
  • Destroy Effect(Event Player.MiscIDs[8]);
  • Destroy Effect(Event Player.MiscIDs[9]);
  • }
  • }
  • rule("Sombra deplete ult charges over time")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.SOMult > Null;
  • Is True For Any(Event Player.B == 2 ? Players On Hero(Hero(Sombra), All Teams) : Empty Array, Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= 6 && Is In Line of Sight(Eye Position(Current Array Element),
  • Eye Position(Event Player), Barriers Do Not Block LOS)) == False;
  • }
  • actions
  • {
  • Wait(3, Abort When False);
  • Event Player.SOMult = Null;
  • }
  • }
  • rule("Sombra backstabs")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Array Contains(Global.SombraDisguise, Event Player) || Hero Of(Event Player) == Hero(Sombra)) == True;
  • Event Ability == Button(Melee);
  • Event Player.N == 0;
  • Is In View Angle(Victim, Eye Position(Event Player), 100) == False;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Purple), Victim, 1);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Purple), Victim, 50);
  • Damage(Victim, Event Player, Event Damage * 3);
  • Event Player.N = Victim;
  • Event Player.SpeedBoost += 20;
  • disabled Event Player.SpeedBoost += 20;
  • Wait(0.500, Ignore Condition);
  • Event Player.N = 0;
  • Wait(2, Restart When True);
  • Event Player.SpeedBoost -= 20;
  • disabled Wait(2, Restart When True);
  • disabled Event Player.SpeedBoost -= 20;
  • }
  • }
  • rule("sombra transfer hp when (un)disguising")
  • {
  • event
  • {
  • Subroutine;
  • ThxRainbow;
  • }
  • actions
  • {
  • Skip If(First Of(Event Player.F) == Null, 4);
  • Damage(Event Player, Null, First Of(Event Player.F));
  • Wait(0.050, Ignore Condition);
  • Skip If(Is Dead(Event Player), 2);
  • Loop If(Health(Event Player) > Max Health(Event Player) - First Of(Event Player.F));
  • Skip(True);
  • Global.SombraDisguise[Slot Of(Event Player)] = Null;
  • }
  • }
  • rule("Zenyatta init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zenyatta;
  • }
  • actions
  • {
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Set Max Health(Event Player, 1);
  • Set Damage Dealt(Event Player, 87.5);
  • Set Damage Dealt(Event Player, 87.500);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Wait(0.100, Ignore Condition);
  • Add Health Pool To Player(Event Player, Health, 73, True, True);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.InitSpeed = 120;
  • Event Player.IsHuman = True;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Zenyatta), Button(Ultimate)), Custom String("Ultimate: Transcendence"),
  • Null, Left, 3, Custom Color(245, 200, 20, 255), Custom Color(245, 200, 20, 255), Color(White), Visible To and String,
  • Null, Left, 5, Custom Color(245, 200, 20, 255), Custom Color(245, 200, 20, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Event Player.Huds[4] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Burns zombies near you. \r\n Does not apply passive,\r\n but does refresh it."), Null, Left, 4, Custom Color(245, 200, 20, 255), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • "Burns zombies near you. \r\n Does not apply passive,\r\n but does refresh it."), Null, Left, 6, Custom Color(245, 200, 20,
  • 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Zenyatta), Button(Ability 2)), Custom String("Passive: Desecrate"), Null,
  • Left, 1, Custom Color(245, 200, 20, 255), Custom Color(245, 200, 20, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Every attack desecrates \r\n zombies, increasing all\r\n damage dealt to them\r\n with +6%. This effect\r\n stacks on itself."), Null, Left, 2,
  • Custom Color(245, 200, 20, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • "Every attack desecrates\r\n zombies, increasing all\r\n damage dealt to them\r\n with +6%. This effect\r\n stacks on itself."),
  • Null, Left, 2, Custom Color(245, 200, 20, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Zenyatta), Button(Melee)), Custom String("Passive: Shifting power"), Null,
  • Left, 3, Custom Color(245, 200, 20, 255), Custom Color(245, 200, 20, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Your next attack after\r\n a melee final blow instantly\r\n applies 4 stacks of\r\n Desecration."),
  • Null, Left, 4, Custom Color(245, 200, 20, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.InitDamage = 83.333;
  • Event Player.StrongMelee = True;
  • Event Player.StrongMelee = True;
  • Event Player.InitHp = 75;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Zenyatta passive stacks")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == False;
  • disabled Is Using Ultimate(Attacker) == False;
  • Hero Of(Attacker) == Hero(Zenyatta);
  • }
  • actions
  • {
  • Skip If(Is Using Ultimate(Attacker) == True, 1);
  • Event Player.ZNpassive += 6;
  • If(Attacker.B == False);
  • Skip If(Is Using Ultimate(Attacker) == True, 1);
  • Event Player.ZNpassive += 6;
  • End;
  • If(Attacker.B == True);
  • Event Player.ZNpassive += 24;
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Purple), Victim, 1.5);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Purple), Event Player, 40);
  • Wait(0.016, Ignore Condition);
  • Destroy HUD Text(Attacker.Huds[6]);
  • Destroy Effect(Attacker.Effects[1]);
  • Destroy Effect(Attacker.Effects[2]);
  • Attacker.B = False;
  • End;
  • Wait(6, Restart When True);
  • Event Player.ZNpassive = 0;
  • }
  • }
  • rule("Zenyatta remove passive stacks on death")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == False;
  • Event Player.ZNpassive > 0;
  • }
  • actions
  • {
  • Event Player.ZNpassive = 0;
  • }
  • }
  • rule("Zenyatta empower attack after melee final blow")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Is Meleeing(Event Player) == True;
  • Event Ability != Button(Primary Fire);
  • Event Ability != Button(Secondary Fire);
  • }
  • actions
  • {
  • Event Player.B = True;
  • Create HUD Text(Event Player, Null, Null, String("{0} {1} {2}", Ability Icon String(Hero(Zenyatta), Button(Melee)),
  • Custom String("Next attack is empowered"), Ability Icon String(Hero(Zenyatta), Button(Melee))), Top, 20, Color(White), Color(White),
  • Custom Color(245, 200, 20, 255), Visible To and String, Default Visibility);
  • Event Player.Huds[6] = Last Text ID;
  • Create Effect(Event Player, Beacon Sound, Color(White), Event Player, 200, Visible To Position and Radius);
  • Event Player.Effects[1] = Last Created Entity;
  • Create Effect(All Players(All Teams), Sparkles, Color(Purple), Position Of(Event Player), 1.500,
  • Visible To Position and Radius);
  • Event Player.Effects[2] = Last Created Entity;
  • Wait(3, Restart When True);
  • Event Player.B = False;
  • disabled Skip If(Entity Exists(Event Player.Effects[1]) == False, 3);
  • Destroy HUD Text(Event Player.Huds[6]);
  • Destroy Effect(Event Player.Effects[1]);
  • Destroy Effect(Event Player.Effects[2]);
  • }
  • }
  • rule("Zenyatta passive damage modification and effects")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.ZNpassive > 0;
  • }
  • actions
  • {
  • Start Damage Modification(Event Player, Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True),
  • 100 + Event Player.ZNpassive, Receivers Damagers and Damage Percent);
  • Event Player.ZNpassiveEffects[0] = Last Damage Modification ID;
  • Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Ability Icon String(Hero(Zenyatta),
  • Button(Ability 2)), Eye Position(Event Player) + Cross Product(Forward, Up) * 1, 1.25,
  • Clip Against Surfaces, Visible To Position and String, Color(Purple), Default Visibility);
  • Start Damage Modification(Event Player, Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True),
  • 100 + Event Player.ZNpassive, Receivers Damagers and Damage Percent);
  • Event Player.ZNpassiveEffects[0] = Last Damage Modification ID;
  • Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Ability Icon String(Hero(
  • Zenyatta), Button(Ability 2)), Eye Position(Event Player) + Cross Product(Forward, Up) * 1, 1 + Event Player.ZNpassive * 0.015, Clip Against Surfaces,
  • Visible To Position and String, Color(Purple), Default Visibility);
  • Event Player.ZNpassiveEffects[1] = Last Text ID;
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Good Aura, Color(Purple), Eye Position(Event Player) + Vector(0, 0.400, 0) + Cross Product(Forward, Up) * 1,
  • 0.250 + Event Player.ZNpassive * 0.015, Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Event Player.ZNpassiveEffects[2] = Last Created Entity;
  • Wait Until(Event Player.ZNpassive <= 0, 99999);
  • Stop Damage Modification(Event Player.ZNpassiveEffects[0]);
  • Wait Until(Event Player.ZNpassive <= 0, 99999);
  • Stop Damage Modification(Event Player.ZNpassiveEffects[0]);
  • Destroy In-World Text(Event Player.ZNpassiveEffects[1]);
  • Destroy Effect(Event Player.ZNpassiveEffects[2]);
  • }
  • }
  • rule("Zenyatta use ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == True;
  • }
  • actions
  • {
  • Create Effect(All Players(All Teams), Good Aura, Color(Orange), Position Of(Event Player), 10, Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Call Subroutine(Zult);
  • Destroy Effect(First Of(Event Player.Effects));
  • }
  • }
  • rule("Zen ult sub")
  • {
  • event
  • {
  • Subroutine;
  • Zult;
  • }
  • actions
  • {
  • Start Damage Over Time(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Distance Between(
  • Position Of(Event Player), Current Array Element) <= 10), Event Player, 0.500, 60);
  • Position Of(Event Player), Current Array Element) <= 10), Event Player, 0.500, 40);
  • Set Status(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Position Of(
  • Event Player), Current Array Element) <= 10), Event Player, Burning, 0.500);
  • Wait(0.500, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Widow init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Widowmaker;
  • }
  • actions
  • {
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Set Max Health(Event Player, 57.143);
  • Set Damage Dealt(Event Player, 125);
  • Set Damage Dealt(Event Player, 105);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Ultimate Ability Enabled(Event Player, True);
  • disabled Disallow Button(Event Player, Button(Ability 2));
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.InitSpeed = 120;
  • Event Player.IsHuman = True;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Widowmaker), Button(Ultimate)), Custom String("Passive: Sniper"), Null,
  • Left, 1, Custom Color(90, 45, 240, 255), Custom Color(90, 45, 240, 255), Color(White), Visible To and String,
  • Left, 1, Custom Color(180, 0, 50, 255), Custom Color(180, 0, 50, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Unlike other humans,\r\n you have no damage\r\n fall-off."), Null, Left, 2, Custom Color(90, 45, 240, 255), Color(White),
  • "Unlike other humans,\r\n you have no damage\r\n fall-off."), Null, Left, 2, Custom Color(180, 0, 50, 255), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Widowmaker), Button(Ability 2)), Custom String("ability 2: Venom mines"), String(
  • "{0}: {1}", Custom String("Charges"), Event Player.D), Left, 3, Custom Color(180, 0, 50, 255), Custom Color(180, 0, 50, 255),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Eject a mine which reveals,\r\n poisions and slows enemies\r\n walking into it. 4 mines\r\n on the map max."), Null, Left, 4, Custom Color(180, 0, 50, 255
  • ), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Stop Damage Modification(First Of(Event Player.MiscIDs));
  • Event Player.InitDamage = 125;
  • Event Player.StrongMelee = False;
  • Event Player.StrongMelee = False;
  • Event Player.InitHp = 100;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • Event Player.D = 2;
  • }
  • }
  • rule("Widow ult reveal for ally's")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is True For Any(Players On Hero(Hero(Widowmaker), All Teams), Is Using Ultimate(Current Array Element)) == True;
  • Event Player.IsHuman == False;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • "smallMessage([player for player in getAllPlayers() if player.IsHuman == true], l\"{0} {1}\".format(heroIcon(Hero.WIDOWMAKER), \"Zombies revealed!\"))"
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Skull,
  • Visible To and Position, Color(Red), True);
  • Event Player.Icons[True] = Last Created Entity;
  • Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Hero Icon String(Hero Of(Event Player)),
  • Eye Position(Event Player) - Vector(0, 0.600, 0), 1.15,
  • Do Not Clip, Visible To Position and String, Color(Red), Default Visibility);
  • Event Player.Icons[2] = Last Text ID;
  • Call Subroutine(IsCondTrue);
  • Destroy Icon(Event Player.Icons[True]);
  • Destroy In-World Text(Event Player.Icons[2]);
  • Wait(0.100, Ignore Condition);
  • Skip If(Event Player.Revealed >= 0.2, 1);
  • Event Player.Revealed = 0.2;
  • Loop If Condition Is True;
  • }
  • }
  • rule("Widow ult sub (IsCondTrue)")
  • {
  • event
  • {
  • Subroutine;
  • IsCondTrue;
  • }
  • actions
  • {
  • Wait(0.500, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Widow ability 2 init #1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Widowmaker;
  • }
  • conditions
  • {
  • Event Player.D > 0;
  • disabled Event Player.F[0] == 0;
  • Event Player.K == 0;
  • Event Player.R == 0;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • disabled Is Meleeing(Event Player) == False;
  • disabled Is Firing Primary(Event Player) == False;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Effect(Event Player.Effects[True]);
  • Destroy Effect(Event Player.Effects[2]);
  • Event Player.O[0] = 0;
  • Event Player.P[0] = 0;
  • Event Player.F[0] = 1;
  • Wait(0.016, Ignore Condition);
  • Cancel Primary Action(Event Player);
  • Set Ability 2 Enabled(Event Player, False);
  • Event Player.D = Event Player.D - 1;
  • If(Event Player.F[1] == 0);
  • Event Player.R = 1;
  • End;
  • If(Event Player.F[1] != 0 && Event Player.F[2] == 0);
  • Event Player.R = 2;
  • End;
  • If(Event Player.F[1] != 0 && Event Player.F[2] != 0 && Event Player.F[3] == 0);
  • Event Player.R = 3;
  • End;
  • If(Event Player.F[0] != 0 && Event Player.F[1] != 0 && Event Player.F[2] != 0 && Event Player.F[3] != 0);
  • Event Player.R = 1;
  • End;
  • Event Player.K = 1;
  • Wait(0.016, Ignore Condition);
  • Event Player.O[0] = Eye Position(Event Player);
  • Event Player.P[0] = Facing Direction Of(Event Player) * 60;
  • Create Effect(All Players(All Teams), Sphere, Color(Red), Event Player.O[0], 0.100, Visible To Position and Radius);
  • Event Player.Effects[0] = Last Created Entity;
  • disabled Create Effect(All Players(All Teams), Bad Aura, Color(Purple), Event Player.O[0], 0.100, Visible To Position and Radius);
  • Event Player.Effects[1] = Last Created Entity;
  • disabled Play Effect(Event Player, Buff Explosion Sound, Color(White), Event Player, 50);
  • Wait(0.500, Ignore Condition);
  • Skip If(Event Player.D == 0, 1);
  • Set Ability 2 Enabled(Event Player, True);
  • Event Player.K = 0;
  • }
  • }
  • rule("Widow ability 2 projectile #1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Widowmaker;
  • }
  • conditions
  • {
  • Distance Between(Event Player.O[0], Ray Cast Hit Position(Event Player.O[0], Event Player.O[0] + Event Player.P[0] * 0.016 * 1000, Null
  • , Event Player, False)) >= 0.750;
  • Event Player.F[0] == 1;
  • Distance Between(Event Player.O[0], Position Of(Event Player)) < 100;
  • }
  • actions
  • {
  • Event Player.P[0] += Vector(0, -15, 0) * 0.016;
  • Event Player.O[0] += Event Player.P[0] * 0.016;
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Purple), Event Player.O[0], 0.100);
  • Wait(False, Ignore Condition);
  • Loop If Condition Is True;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Red), Event Player.O[0], 6);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Purple), Event Player.O[0], 25);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Ring, Color(Red), Event Player.O[0], 3, Visible To Position and Radius);
  • Event Player.Effects[2] = Last Created Entity;
  • Wait(1, Ignore Condition);
  • Event Player.F[0] = 2;
  • Call Subroutine(Wmine1);
  • }
  • }
  • rule("Widow ability 2 mine sub #1")
  • {
  • event
  • {
  • Subroutine;
  • Wmine1;
  • }
  • actions
  • {
  • Wait Until((Event Player.F[0] != 2 || Is Dead(Event Player) == True), 120);
  • If(Event Player.F[0] == 0 && Is Dead(Event Player) == False);
  • Start Damage Over Time(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(
  • Event Player.O[0], Position Of(Current Array Element)) <= 3.25 && Is In Line of Sight(
  • Eye Position(Current Array Element), Event Player.O[0], Barriers Do Not Block LOS)), Event Player, 4, 15);
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Position Of(
  • Current Array Element), Event Player.O[0]) <= 3.25 && Is In Line of Sight(Eye Position(Current Array Element), Event Player.O[0],
  • Barriers Do Not Block LOS)).Slow += 30;
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Current Array Element.Revealed <= 4 && Distance Between(Position Of(
  • Current Array Element), Event Player.O[0]) <= 3.25 && Is In Line of Sight(Eye Position(Current Array Element), Event Player.O[0],
  • Barriers Do Not Block LOS)).Revealed = 4;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Red), Event Player.O[0], 6);
  • Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Purple), Event Player.O[0], 6);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Purple), Event Player.O[0], 75);
  • Small Message(Event Player, Custom String("Venom mine triggered!"));
  • End;
  • Destroy Effect(Event Player.Effects[0]);
  • Destroy Effect(Event Player.Effects[1]);
  • Destroy Effect(Event Player.Effects[2]);
  • Skip If(Event Player.F[0] != 0, 4);
  • Event Player.F[0] = 0;
  • disabled Event Player.O[0] = 0;
  • Event Player.P[0] = 0;
  • Event Player.R = 0;
  • }
  • }
  • rule("Widow ability 2 explode #1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is True For Any(All Living Players(All Teams), Distance Between(Event Player.O[0], Position Of(Current Array Element)) <= 3.25 && Is In Line of Sight(Event Player.O[0]
  • , Position Of(Current Array Element), Barriers Do Not Block LOS) && Current Array Element.IsHuman == False && Has Spawned(Current Array Element) == True) == True;
  • Event Player.F[0] == 2;
  • }
  • actions
  • {
  • Event Player.F[0] = 0;
  • Create Icon(Event Player, Event Player.O[0] + Vector(0, 1, 0), Eye, Visible To and Position, Color(Red), True);
  • Event Player.Icons[2] = Last Created Entity;
  • Wait(2.5, Ignore Condition);
  • Destroy Icon(Event Player.Icons[2]);
  • }
  • }
  • rule("Widow ability 2 init #2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Widowmaker;
  • }
  • conditions
  • {
  • Event Player.D > 0;
  • disabled Event Player.F[0] != 0;
  • disabled Event Player.F[1] == 0;
  • Event Player.K == 0;
  • Event Player.R == 1;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • disabled Is Meleeing(Event Player) == False;
  • disabled Is Firing Primary(Event Player) == False;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Destroy Effect(Event Player.Effects[3]);
  • Destroy Effect(Event Player.Effects[4]);
  • Destroy Effect(Event Player.Effects[5]);
  • Event Player.O[1] = 0;
  • Event Player.P[1] = 0;
  • Event Player.F[1] = 1;
  • Wait(0.016, Ignore Condition);
  • Cancel Primary Action(Event Player);
  • Set Ability 2 Enabled(Event Player, False);
  • Event Player.D = Event Player.D - 1;
  • Event Player.K = 1;
  • If(Event Player.F[1] == 0);
  • Event Player.R = 1;
  • End;
  • If(Event Player.F[1] != 0 && Event Player.F[2] == 0);
  • Event Player.R = 2;
  • End;
  • If(Event Player.F[1] != 0 && Event Player.F[2] != 0 && Event Player.F[3] == 0);
  • Event Player.R = 3;
  • End;
  • If(Event Player.F[0] != 0 && Event Player.F[1] != 0 && Event Player.F[2] != 0 && Event Player.F[3] != 0);
  • Event Player.R = 2;
  • End;
  • Wait(0.016, Ignore Condition);
  • Event Player.O[1] = Eye Position(Event Player);
  • Event Player.P[1] = Facing Direction Of(Event Player) * 60;
  • Create Effect(All Players(All Teams), Sphere, Color(Red), Event Player.O[1], 0.100, Visible To Position and Radius);
  • Event Player.Effects[3] = Last Created Entity;
  • disabled Create Effect(All Players(All Teams), Bad Aura, Color(Purple), Event Player.O[1], 0.100, Visible To Position and Radius);
  • Event Player.Effects[4] = Last Created Entity;
  • disabled Play Effect(Event Player, Buff Explosion Sound, Color(White), Event Player, 50);
  • Wait(0.500, Ignore Condition);
  • Skip If(Event Player.D == 0, 1);
  • Set Ability 2 Enabled(Event Player, True);
  • Event Player.K = 0;
  • }
  • }
  • rule("Widow ability 2 projectile #2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Widowmaker;
  • }
  • conditions
  • {
  • Distance Between(Event Player.O[1], Ray Cast Hit Position(Event Player.O[1], Event Player.O[1] + Event Player.P[1] * 0.016 * 1000, Null
  • , Event Player, False)) >= 0.750;
  • Event Player.F[1] == 1;
  • Distance Between(Event Player.O[1], Position Of(Event Player)) < 100;
  • }
  • actions
  • {
  • Event Player.P[1] += Vector(0, -15, 0) * 0.016;
  • Event Player.O[1] += Event Player.P[1] * 0.016;
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Purple), Event Player.O[1], 0.100);
  • Wait(False, Ignore Condition);
  • Loop If Condition Is True;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Red), Event Player.O[1], 6);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Purple), Event Player.O[1], 25);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Ring, Color(Red), Event Player.O[1], 3, Visible To Position and Radius);
  • Event Player.Effects[5] = Last Created Entity;
  • Wait(1, Ignore Condition);
  • Event Player.F[1] = 2;
  • Call Subroutine(Wmine2);
  • }
  • }
  • rule("Widow ability 2 mine sub #2")
  • {
  • event
  • {
  • Subroutine;
  • Wmine2;
  • }
  • actions
  • {
  • Wait Until((Event Player.F[1] != 2 || Is Dead(Event Player) == True), 120);
  • If(Event Player.F[1] == 0 && Is Dead(Event Player) == False);
  • Start Damage Over Time(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(
  • Event Player.O[1], Position Of(Current Array Element)) <= 3.25 && Is In Line of Sight(
  • Eye Position(Current Array Element), Event Player.O[1], Barriers Do Not Block LOS)), Event Player, 4, 15);
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Position Of(
  • Current Array Element), Event Player.O[1]) <= 3.25 && Is In Line of Sight(Eye Position(Current Array Element), Event Player.O[1],
  • Barriers Do Not Block LOS)).Slow += 30;
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Current Array Element.Revealed <= 4 && Distance Between(Position Of(
  • Current Array Element), Event Player.O[1]) <= 3.25 && Is In Line of Sight(Eye Position(Current Array Element), Event Player.O[1],
  • Barriers Do Not Block LOS)).Revealed = 4;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Red), Event Player.O[1], 6);
  • Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Purple), Event Player.O[1], 6);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Purple), Event Player.O[1], 75);
  • Small Message(Event Player, Custom String("Venom mine triggered!"));
  • End;
  • Destroy Effect(Event Player.Effects[3]);
  • Destroy Effect(Event Player.Effects[4]);
  • Destroy Effect(Event Player.Effects[5]);
  • Skip If(Event Player.F[1] != 0, 4);
  • Event Player.F[1] = 0;
  • disabled Event Player.O[1] = 0;
  • Event Player.P[1] = 0;
  • Event Player.R = 1;
  • }
  • }
  • rule("Widow ability 2 explode #2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is True For Any(All Living Players(All Teams), Distance Between(Event Player.O[1], Position Of(Current Array Element)) <= 3.25 && Is In Line of Sight(Event Player.O[1]
  • , Position Of(Current Array Element), Barriers Do Not Block LOS) && Current Array Element.IsHuman == False && Has Spawned(Current Array Element) == True) == True;
  • Event Player.F[1] == 2;
  • }
  • actions
  • {
  • Event Player.F[1] = 0;
  • Create Icon(Event Player, Event Player.O[1] + Vector(0, 1, 0), Eye, Visible To and Position, Color(Red), True);
  • Event Player.Icons[3] = Last Created Entity;
  • Wait(2.5, Ignore Condition);
  • Destroy Icon(Event Player.Icons[3]);
  • }
  • }
  • rule("Widow ability 2 init #3")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Widowmaker;
  • }
  • conditions
  • {
  • Event Player.D > 0;
  • disabled Event Player.F[0] != 0;
  • disabled Event Player.F[1] != 0;
  • disabled Event Player.F[2] == 0;
  • Event Player.K == 0;
  • Event Player.R == 2;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • disabled Is Meleeing(Event Player) == False;
  • disabled Is Firing Primary(Event Player) == False;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Destroy Effect(Event Player.Effects[6]);
  • Destroy Effect(Event Player.Effects[7]);
  • Destroy Effect(Event Player.Effects[8]);
  • Event Player.O[2] = 0;
  • Event Player.P[2] = 0;
  • Event Player.F[2] = 1;
  • Wait(0.016, Ignore Condition);
  • Cancel Primary Action(Event Player);
  • Set Ability 2 Enabled(Event Player, False);
  • Event Player.D = Event Player.D - 1;
  • Event Player.K = 1;
  • If(Event Player.F[1] == 0);
  • Event Player.R = 1;
  • End;
  • If(Event Player.F[1] != 0 && Event Player.F[2] == 0);
  • Event Player.R = 2;
  • End;
  • If(Event Player.F[1] != 0 && Event Player.F[2] != 0 && Event Player.F[3] == 0);
  • Event Player.R = 3;
  • End;
  • If(Event Player.F[0] != 0 && Event Player.F[1] != 0 && Event Player.F[2] != 0 && Event Player.F[3] != 0);
  • Event Player.R = 3;
  • End;
  • Wait(0.016, Ignore Condition);
  • Event Player.O[2] = Eye Position(Event Player);
  • Event Player.P[2] = Facing Direction Of(Event Player) * 60;
  • Create Effect(All Players(All Teams), Sphere, Color(Red), Event Player.O[2], 0.100, Visible To Position and Radius);
  • Event Player.Effects[6] = Last Created Entity;
  • disabled Create Effect(All Players(All Teams), Bad Aura, Color(Purple), Event Player.O[2], 0.100, Visible To Position and Radius);
  • Event Player.Effects[7] = Last Created Entity;
  • disabled Play Effect(Event Player, Buff Explosion Sound, Color(White), Event Player, 50);
  • Wait(0.500, Ignore Condition);
  • Skip If(Event Player.D == 0, 1);
  • Set Ability 2 Enabled(Event Player, True);
  • Event Player.K = 0;
  • }
  • }
  • rule("Widow ability 2 projectile #3")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Widowmaker;
  • }
  • conditions
  • {
  • Distance Between(Event Player.O[2], Ray Cast Hit Position(Event Player.O[2], Event Player.O[2] + Event Player.P[2] * 0.016 * 1000, Null
  • , Event Player, False)) >= 0.750;
  • Event Player.F[2] == 1;
  • Distance Between(Event Player.O[2], Position Of(Event Player)) < 100;
  • }
  • actions
  • {
  • Event Player.P[2] += Vector(0, -15, 0) * 0.016;
  • Event Player.O[2] += Event Player.P[2] * 0.016;
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Purple), Event Player.O[2], 0.100);
  • Wait(False, Ignore Condition);
  • Loop If Condition Is True;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Red), Event Player.O[2], 6);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Purple), Event Player.O[2], 25);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Ring, Color(Red), Event Player.O[2], 3, Visible To Position and Radius);
  • Event Player.Effects[8] = Last Created Entity;
  • Wait(1, Ignore Condition);
  • Event Player.F[2] = 2;
  • Call Subroutine(Wmine3);
  • }
  • }
  • rule("Widow ability 2 mine sub #3")
  • {
  • event
  • {
  • Subroutine;
  • Wmine3;
  • }
  • actions
  • {
  • Wait Until((Event Player.F[2] != 2 || Is Dead(Event Player) == True), 120);
  • If(Event Player.F[2] == 0 && Is Dead(Event Player) == False);
  • Start Damage Over Time(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(
  • Event Player.O[2], Position Of(Current Array Element)) <= 3.25 && Is In Line of Sight(
  • Eye Position(Current Array Element), Event Player.O[2], Barriers Do Not Block LOS)), Event Player, 4, 15);
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Position Of(
  • Current Array Element), Event Player.O[2]) <= 3.25 && Is In Line of Sight(Eye Position(Current Array Element), Event Player.O[2],
  • Barriers Do Not Block LOS)).Slow += 30;
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Current Array Element.Revealed <= 4 && Distance Between(Position Of(
  • Current Array Element), Event Player.O[2]) <= 3.25 && Is In Line of Sight(Eye Position(Current Array Element), Event Player.O[2],
  • Barriers Do Not Block LOS)).Revealed = 4;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Red), Event Player.O[2], 6);
  • Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Purple), Event Player.O[2], 6);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Purple), Event Player.O[2], 75);
  • Small Message(Event Player, Custom String("Venom mine triggered!"));
  • End;
  • Destroy Effect(Event Player.Effects[6]);
  • Destroy Effect(Event Player.Effects[7]);
  • Destroy Effect(Event Player.Effects[8]);
  • Skip If(Event Player.F[2] != 0, 4);
  • Event Player.F[2] = 0;
  • disabled Event Player.O[2] = 0;
  • Event Player.P[2] = 0;
  • Event Player.R = 2;
  • }
  • }
  • rule("Widow ability 2 explode #3")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is True For Any(All Living Players(All Teams), Distance Between(Event Player.O[2], Position Of(Current Array Element)) <= 3.25 && Is In Line of Sight(Event Player.O[2]
  • , Position Of(Current Array Element), Barriers Do Not Block LOS) && Current Array Element.IsHuman == False && Has Spawned(Current Array Element) == True) == True;
  • Event Player.F[2] == 2;
  • }
  • actions
  • {
  • Event Player.F[2] = 0;
  • Create Icon(Event Player, Event Player.O[2] + Vector(0, 1, 0), Eye, Visible To and Position, Color(Red), True);
  • Event Player.Icons[4] = Last Created Entity;
  • Wait(2.5, Ignore Condition);
  • Destroy Icon(Event Player.Icons[4]);
  • }
  • }
  • rule("Widow ability 2 init #4")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Widowmaker;
  • }
  • conditions
  • {
  • Event Player.D > 0;
  • disabled Event Player.F[0] != 0;
  • disabled Event Player.F[1] != 0;
  • disabled Event Player.F[2] != 0;
  • disabled Event Player.F[3] == 0;
  • Event Player.K == 0;
  • Event Player.R == 3;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • disabled Is Meleeing(Event Player) == False;
  • disabled Is Firing Primary(Event Player) == False;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Destroy Effect(Event Player.Effects[9]);
  • Destroy Effect(Event Player.Effects[10]);
  • Destroy Effect(Event Player.Effects[11]);
  • Event Player.O[3] = 0;
  • Event Player.P[3] = 0;
  • Event Player.F[3] = 1;
  • Wait(0.016, Ignore Condition);
  • Cancel Primary Action(Event Player);
  • Set Ability 2 Enabled(Event Player, False);
  • Event Player.D = Event Player.D - 1;
  • Event Player.K = 1;
  • If(Event Player.F[1] == 0);
  • Event Player.R = 1;
  • End;
  • If(Event Player.F[1] != 0 && Event Player.F[2] == 0);
  • Event Player.R = 2;
  • End;
  • If(Event Player.F[1] != 0 && Event Player.F[2] != 0 && Event Player.F[3] == 0);
  • Event Player.R = 3;
  • End;
  • If(Event Player.F[1] != 0 && Event Player.F[2] != 0 && Event Player.F[3] != 0);
  • Event Player.R = 0;
  • End;
  • If(Event Player.F[0] != 0 && Event Player.F[1] != 0 && Event Player.F[2] != 0 && Event Player.F[3] != 0);
  • Event Player.R = 0;
  • End;
  • Wait(0.016, Ignore Condition);
  • Event Player.O[3] = Eye Position(Event Player);
  • Event Player.P[3] = Facing Direction Of(Event Player) * 60;
  • Create Effect(All Players(All Teams), Sphere, Color(Red), Event Player.O[3], 0.100, Visible To Position and Radius);
  • Event Player.Effects[9] = Last Created Entity;
  • disabled Create Effect(All Players(All Teams), Bad Aura, Color(Purple), Event Player.O[3], 0.100, Visible To Position and Radius);
  • Event Player.Effects[10] = Last Created Entity;
  • disabled Play Effect(Event Player, Buff Explosion Sound, Color(White), Event Player, 50);
  • Wait(0.500, Ignore Condition);
  • Skip If(Event Player.D == 0, 1);
  • Set Ability 2 Enabled(Event Player, True);
  • Event Player.K = 0;
  • }
  • }
  • rule("Widow ability 2 projectile #4")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Widowmaker;
  • }
  • conditions
  • {
  • Distance Between(Event Player.O[3], Ray Cast Hit Position(Event Player.O[3], Event Player.O[3] + Event Player.P[3] * 0.016 * 1000, Null
  • , Event Player, False)) >= 0.750;
  • Event Player.F[3] == 1;
  • Distance Between(Event Player.O[3], Position Of(Event Player)) < 100;
  • }
  • actions
  • {
  • Event Player.P[3] += Vector(0, -15, 0) * 0.016;
  • Event Player.O[3] += Event Player.P[3] * 0.016;
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Purple), Event Player.O[3], 0.100);
  • Wait(False, Ignore Condition);
  • Loop If Condition Is True;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Red), Event Player.O[3], 6);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Purple), Event Player.O[3], 25);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Ring, Color(Red), Event Player.O[3], 3, Visible To Position and Radius);
  • Event Player.Effects[11] = Last Created Entity;
  • Wait(1, Ignore Condition);
  • Event Player.F[3] = 2;
  • Call Subroutine(Wmine4);
  • }
  • }
  • rule("Widow ability 2 mine sub #4")
  • {
  • event
  • {
  • Subroutine;
  • Wmine4;
  • }
  • actions
  • {
  • Wait Until((Event Player.F[3] != 2 || Is Dead(Event Player) == True), 120);
  • If(Event Player.F[3] == 0 && Is Dead(Event Player) == False);
  • Start Damage Over Time(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(
  • Event Player.O[3], Position Of(Current Array Element)) <= 3.25 && Is In Line of Sight(
  • Eye Position(Current Array Element), Event Player.O[3], Barriers Do Not Block LOS)), Event Player, 4, 15);
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Position Of(
  • Current Array Element), Event Player.O[3]) <= 3.25 && Is In Line of Sight(Eye Position(Current Array Element), Event Player.O[3],
  • Barriers Do Not Block LOS)).Slow += 30;
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Current Array Element.Revealed <= 4 && Distance Between(Position Of(
  • Current Array Element), Event Player.O[3]) <= 3.25 && Is In Line of Sight(Eye Position(Current Array Element), Event Player.O[3],
  • Barriers Do Not Block LOS)).Revealed = 4;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Red), Event Player.O[3], 6);
  • Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Purple), Event Player.O[3], 6);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Purple), Event Player.O[3], 75);
  • Small Message(Event Player, Custom String("Venom mine triggered!"));
  • End;
  • Destroy Effect(Event Player.Effects[9]);
  • Destroy Effect(Event Player.Effects[10]);
  • Destroy Effect(Event Player.Effects[11]);
  • Skip If(Event Player.F[3] != 0, 4);
  • Event Player.F[3] = 0;
  • disabled Event Player.O[3] = 0;
  • Event Player.P[3] = 0;
  • Event Player.R = 3;
  • }
  • }
  • rule("Widow ability 2 explode #4")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is True For Any(All Living Players(All Teams), Distance Between(Event Player.O[3], Position Of(Current Array Element)) <= 3.25 && Is In Line of Sight(Event Player.O[3]
  • , Position Of(Current Array Element), Barriers Do Not Block LOS) && Current Array Element.IsHuman == False && Has Spawned(Current Array Element) == True) == True;
  • Event Player.F[3] == 2;
  • }
  • actions
  • {
  • Event Player.F[3] = 0;
  • Create Icon(Event Player, Event Player.O[3] + Vector(0, 1, 0), Eye, Visible To and Position, Color(Red), True);
  • Event Player.Icons[5] = Last Created Entity;
  • Wait(2.5, Ignore Condition);
  • Destroy Icon(Event Player.Icons[5]);
  • }
  • }
  • rule("Widow recharge ability 2 charges")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Widowmaker;
  • }
  • conditions
  • {
  • Event Player.D < 2;
  • }
  • actions
  • {
  • Wait(1, Ignore Condition);
  • Wait Until(Is Dead(Event Player) == True, 14);
  • Skip If(Is Dead(Event Player) == True, 2);
  • Event Player.D = Event Player.D + 1;
  • Set Ability 2 Enabled(Event Player, True);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Mercy init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mercy;
  • }
  • actions
  • {
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Destroy HUD Text(Event Player.Huds[2]);
  • Set Max Health(Event Player, 50);
  • Set Damage Dealt(Event Player, 100);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.InitSpeed = 120;
  • Event Player.IsHuman = True;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Mercy), Button(Ability 2)), Custom String("Ability 2: Resurect"), String(
  • "{0}: {1}", Custom String("Cooldown"), Event Player.C), Left, 1, Custom Color(255, 255, 95, 255), Custom Color(255, 255, 95,
  • 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Resurect a dead\r\n human close to you."), Null, Left, 2, Custom Color(255, 255, 95, 255), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Mercy), Button(Ability 1)), Custom String("Ability 1: Valkyrie's blessing"),
  • String("{0}: {1}", Custom String("Cooldown"), Event Player.D), Left, 3, Custom Color(255, 255, 95, 255), Custom Color(255, 255,
  • 95, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Dash towards a human.\r\n This human is granted\r\n valkyrie's blessing\r\n (lifesteal and bonus\r\n combat ult charge)."),
  • "Dash towards a human.\r\n This human is granted\r\n valkyrie's blessing\r\n (lifesteal and bonus\r\n combat ult charge."),
  • Null, Left, 4, Custom Color(255, 255, 95, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.InitSpeed = 120;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Mercy), Button(Ultimate)), Custom String("Ultimate: Guardian angel"), Null,
  • Left, 5, Custom Color(255, 255, 95, 255), Custom Color(255, 255, 95, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Grants abilites AoE \r\n effects. Press Q again \r\n to teleport to an ally \r\n and heal/grant invincibility \r\n to nearby allies."),
  • Null, Left, 6, Custom Color(255, 255, 95, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Event Player.InitDamage = 100;
  • Event Player.StrongMelee = False;
  • Event Player.StrongMelee = False;
  • Event Player.InitHp = 100;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Mercy ability 1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mercy;
  • }
  • conditions
  • {
  • Is True For Any(Remove From Array(All Players(All Teams), Event Player), Distance Between(Eye Position(Event Player), Eye Position(
  • Current Array Element)) <= 25 && Is In View Angle(Event Player, Current Array Element, 25)
  • && Current Array Element.IsHuman == True && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Current Array Element), Barriers Do Not Block LOS)) == True;
  • Event Player.D == Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • }
  • actions
  • {
  • Event Player.O = First Of(Sorted Array(Filtered Array(All Living Players(All Teams), Distance Between(Eye Position(Event Player),
  • Eye Position(Current Array Element)) <= 25 && Is In View Angle(Event Player, Current Array Element, 25)
  • && Current Array Element.IsHuman == True && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Current Array Element), Barriers Do Not Block LOS)), Dot Product(Eye Position(Event Player), Eye Position(
  • Current Array Element))));
  • Wait(0.016, Ignore Condition);
  • Skip If(Has Status(Event Player, Rooted), 2);
  • Disable Movement Collision With Players(Event Player);
  • Apply Impulse(Event Player, Up, 5, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Direction Towards(Eye Position(Event Player), Eye Position(Event Player.O)), 15, To World,
  • Incorporate Contrary Motion);
  • Skip If(Is Using Ultimate(Event Player), 1);
  • Event Player.O.Mblessing = 4;
  • Skip If(!Is Using Ultimate(Event Player), 1);
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == True && Distance Between(Event Player.O,
  • Eye Position(Current Array Element)) <= 6 && Is In Line of Sight(Event Player.O, Eye Position(Current Array Element),
  • Barriers Do Not Block LOS)).Mblessing = 4;
  • Event Player.D = 10;
  • Chase Player Variable At Rate(Event Player, D, False, True, Destination and Rate);
  • Wait(0.250, Ignore Condition);
  • Enable Movement Collision With Players(Event Player);
  • }
  • }
  • rule("Mercy ability 1 effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.Mblessing > Null;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Yellow), Event Player, 4);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(Yellow), Event Player, 50);
  • Chase Player Variable At Rate(Event Player, Mblessing, False, True, Destination and Rate);
  • Create Effect(Remove From Array(All Players(All Teams), Event Player), Good Aura, Color(Yellow), Eye Position(Event Player)
  • - Vector(False, 0.750, False), 0.750, Visible To Position and Radius);
  • Event Player.MiscIDs[13] = Last Created Entity;
  • Small Message(Event Player, Custom String("{0} {1} {2}", Hero Icon String(Hero(Mercy)), Custom String(
  • "received Valkyrie's blessing!"), Hero Icon String(Hero(Mercy))));
  • Call Subroutine(IsCondTrue);
  • Small Message(Event Player, Custom String("{0} {1} {2}", Hero Icon String(Hero(Mercy)), Custom String(
  • "Valkyrie's blessing ended."), Hero Icon String(Hero(Mercy))));
  • Destroy Effect(Event Player.MiscIDs[13]);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Yellow), Event Player, 4);
  • Play Effect(Event Player, Debuff Impact Sound, Color(Yellow), Event Player, 50);
  • }
  • }
  • rule("Mercy ability 1 damage dealt effects")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.Mblessing > Null;
  • }
  • actions
  • {
  • Heal(Event Player, Event Player, Event Damage * 0.150);
  • disabled If(Event Damage * 0.150 + Health(Event Player) >= Max Health(Event Player));
  • disabled Event Player.BarrierHealth += Event Damage * 0.150 - (Max Health(Event Player) - Health(Event Player));
  • disabled Skip If(Event Player.BarrierTime > 2, 1);
  • disabled Event Player.BarrierTime = 2;
  • disabled Heal(Event Player, Event Player, Max Health(Event Player));
  • disabled End;
  • disabled If(Event Damage * 0.150 + Health(Event Player) < Max Health(Event Player));
  • Heal(Event Player, Event Player, Event Damage * 0.150);
  • disabled End;
  • Set Ultimate Charge(Event Player, Ultimate Charge Percent(Event Player) + Event Damage * 0.080);
  • }
  • }
  • rule("Mercy ability 2 mercy's side")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mercy;
  • }
  • conditions
  • {
  • Is True For Any(All Dead Players(All Teams), Current Array Element.IsHuman == True && Distance Between(Eye Position(Event Player),
  • Current Array Element.InfectPosition) <= 4 && Is In View Angle(Event Player, Current Array Element, 45) && Is In Line of Sight(
  • Eye Position(Event Player), Current Array Element.InfectPosition, Barriers Do Not Block LOS)) == True;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Event Player.C == Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Skip If(Is Using Ultimate(Event Player), 1);
  • Event Player.F = First Of(Sorted Array(Filtered Array(All Dead Players(All Teams), Distance Between(Eye Position(Event Player),
  • Position Of(Current Array Element)) <= 4 && Is In View Angle(Event Player, Current Array Element, 45)
  • && Current Array Element.IsHuman == True && Is In Line of Sight(Eye Position(Event Player), Position Of(Current Array Element),
  • Barriers Do Not Block LOS)), Dot Product(Eye Position(Event Player), Eye Position(Current Array Element))));
  • Skip If(!Is Using Ultimate(Event Player), 1);
  • Event Player.F = Filtered Array(All Dead Players(All Teams), Current Array Element.IsHuman == True && Distance Between(
  • Eye Position(Event Player), Position Of(Current Array Element)) <= 6 && Is In Line of Sight(Eye Position(Event Player),
  • Position Of(Current Array Element), Barriers Do Not Block LOS));
  • Set Primary Fire Enabled(Event Player, False);
  • Set Damage Dealt(Event Player, 0);
  • Set Move Speed(Event Player, 60);
  • Event Player.InitSpeed = 60;
  • Event Player.B = True;
  • Stop Chasing Player Variable(Event Player.F, InfectTimer);
  • Small Message(Event Player, Custom String("{0} {1} {2}", Hero Icon String(Hero(Mercy)), Custom String("Resurrecting..."),
  • Hero Icon String(Hero(Mercy))));
  • Create Effect(All Players(All Teams), Bad Aura, Color(Yellow), Position Of(Event Player), 1.500, Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Create Effect(All Players(All Teams), Good Aura Sound, Color(Yellow), Event Player, 600, Visible To Position and Radius);
  • Event Player.Effects[True] = Last Created Entity;
  • Event Player.R = 2;
  • Chase Player Variable At Rate(Event Player, R, 0, 1, Destination and Rate);
  • Call Subroutine(Mres);
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Effect(Event Player.Effects[True]);
  • Event Player.R = Null;
  • Stop Chasing Player Variable(Event Player, R);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Damage Dealt(Event Player, 100);
  • Set Move Speed(Event Player, 120);
  • Skip If(Event Player.B == False, 2);
  • Resurrect(Event Player.F);
  • Event Player.B = False;
  • Event Player.C = 20;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • Event Player.InitSpeed = 120;
  • Wait(0.050, Ignore Condition);
  • Event Player.F = Null;
  • }
  • }
  • rule("Mercy ability 2 sub")
  • {
  • event
  • {
  • Subroutine;
  • Mres;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Yellow), Position Of(Event Player), 3);
  • Skip If(Has Status(Event Player, Hacked) || Has Status(Event Player, Knocked Down) || Has Status(Event Player, Asleep)
  • || Has Status(Event Player, Frozen) || Has Status(Event Player, Stunned) || Is Dead(Event Player), 2);
  • Loop If(Event Player.R > 0);
  • Skip(1);
  • Event Player.B = False;
  • }
  • }
  • rule("Mercy ability 2 dead player's side")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is True For Any(Players On Hero(Hero(Mercy), All Teams), Array Contains(Current Array Element.F, Event Player)) == True;
  • Is Dead(Event Player) == True;
  • }
  • actions
  • {
  • Stop Chasing Player Variable(Event Player, InfectTimer);
  • Small Message(Event Player, Custom String("{0} {1} {2}", Hero Icon String(Hero(Mercy)), Custom String("Resurrecting..."),
  • Hero Icon String(Hero(Mercy))));
  • Call Subroutine(IsCondTrue);
  • Skip If(Event Player.IsHuman == False, 10);
  • Big Message(All Players(All Teams), Custom String("{0} {1} {2}", Hero Icon String(Hero(Mercy)), Event Player, Custom String(
  • "RESSURECTED!")));
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy In-World Text(Event Player.Huds[3]);
  • Destroy In-World Text(Event Player.Huds[4]);
  • Wait(0.016, Ignore Condition);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Yellow), Position Of(Event Player), 6);
  • Play Effect(All Players(All Teams), Good Pickup Effect, Color(Yellow), Position Of(Event Player), 3);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(Yellow), Event Player, 150);
  • Event Player.InfectTimer = 0;
  • Event Player.InfectPosition = 0;
  • Chase Player Variable At Rate(Event Player, InfectTimer, False, True, Destination and Rate);
  • }
  • }
  • rule("Mercy ult init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mercy;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.C = 0;
  • Event Player.D = 0;
  • Wait(0.250, Ignore Condition);
  • Small Message(Event Player, Custom String("Ult again to teleport to any human!"));
  • Event Player.K = 1;
  • Call Subroutine(IsCondTrue);
  • Event Player.K = Null;
  • }
  • }
  • rule("Mercy ult tp")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mercy;
  • }
  • conditions
  • {
  • Event Player.K == 1;
  • Is Using Ultimate(Event Player) == True;
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • Is True For Any(All Players(All Teams), Current Array Element.IsHuman == True && Is In View Angle(Event Player,
  • Current Array Element, 30)) == True;
  • }
  • actions
  • {
  • Event Player.W = First Of(Sorted Array(Filtered Array(All Players(All Teams), Is In View Angle(Event Player, Current Array Element,
  • 30) && Current Array Element.IsHuman == True), Dot Product(Eye Position(Event Player), Eye Position(Current Array Element))));
  • Wait(0.016, Ignore Condition);
  • Teleport(Event Player, Event Player.W);
  • Wait(0.016, Ignore Condition);
  • Event Player.W = Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True && Distance Between(Position Of(
  • Event Player), Current Array Element) <= 8 && Is In Line of Sight(Eye Position(Event Player), Current Array Element,
  • Barriers Do Not Block LOS));
  • Wait(0.160, Ignore Condition);
  • Heal(Event Player.W, Event Player, 200);
  • Set Status(Event Player.W, Event Player, Invincible, 3);
  • Event Player.K -= True;
  • }
  • }
  • rule("Torb init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Torbjörn;
  • }
  • actions
  • {
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Set Max Health(Event Player, 1);
  • Set Damage Dealt(Event Player, 125);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Add Health Pool To Player(Event Player, Health, 93, True, True);
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.InitSpeed = 120;
  • Event Player.IsHuman = True;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Torbjörn), Button(Ultimate)), Custom String("Ultimate/passive: ragnarok"),
  • Null, Left, 1, Custom Color(255, 85, 5, 255), Custom Color(255, 85, 5, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Ult to launch out\r\n lava. You also have\r\n very high damage\r\n fall-off, which also\r\n interacts with the\r\n lava pools."),
  • Null, Left, 2, Custom Color(255, 85, 5, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Reaper), Button(Ability 1)), Custom String("Ability 2: Undying rage"), Null,
  • Left, 3, Custom Color(255, 85, 5, 255), Custom Color(255, 85, 5, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Upon using ability 2,\r\n slow nearby zombies.\r\n Eliminations reduce the\r\n cooldown."), Null, Left, 4, Custom Color(255, 85, 5, 255), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • "Upon using ability 2,\r\n slow nearby zombies.\r\n Eliminations reduce the\r\n cooldown."), Null, Left, 4, Custom Color(
  • 255, 85, 5, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.InitDamage = 125;
  • Create Effect(Event Player, Ring, Color(Orange), Position Of(Event Player), 6.500, Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Event Player.StrongMelee = True;
  • Event Player.StrongMelee = True;
  • Event Player.InitHp = 95;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Torb extreme fallof damage")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Torbjörn;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Event Player.IsHuman == True;
  • }
  • actions
  • {
  • Start Damage Modification(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Distance Between(
  • Position Of(Event Player), Position Of(Current Array Element)) >= 6.500), Event Player, 50,
  • Position Of(Event Player), Position Of(Current Array Element)) >= 6.500), Event Player, 40,
  • Receivers Damagers and Damage Percent);
  • Event Player.MiscIDs[False] = Last Damage Modification ID;
  • }
  • }
  • rule("Torb ability 2 slow")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Torbjörn;
  • }
  • conditions
  • {
  • Is Using Ability 2(Event Player) == True;
  • }
  • actions
  • {
  • Add Health Pool To Player(Event Player, Armor, 39, False, True);
  • Event Player.Effects[1] = Last Created Health Pool;
  • Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Is In Line of Sight(Eye Position(Event Player),
  • Current Array Element, Barriers Do Not Block LOS) && Distance Between(Eye Position(Event Player), Current Array Element) <= 8)
  • .Slow += 30;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Orange), Position Of(Event Player), 16);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Orange), Event Player, 90);
  • Wait Until(Is Using Ability 2(Event Player) == False, 5);
  • Remove Health Pool From Player(Event Player.Effects[1]);
  • Remove Health Pool From Player(Event Player.Effects[1]);
  • Set Ability Cooldown(Event Player, Button(Ability 2), Ability Cooldown(Event Player, Button(Ability 2)) - Event Player.R);
  • Wait(0.016, Ignore Condition);
  • Event Player.R = 0;
  • }
  • }
  • rule("Torb decrease ability 2 cooldown on elim when using ability 2")
  • {
  • event
  • {
  • Player Earned Elimination;
  • All;
  • Torbjörn;
  • }
  • conditions
  • {
  • Is Using Ability 2(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.R = Event Player.R + 2.5;
  • Event Player.R = Event Player.R + 2.500;
  • }
  • }
  • rule("Torb decrease ability 2 cooldown on elim when using ability 2")
  • {
  • event
  • {
  • Player Earned Elimination;
  • All;
  • Torbjörn;
  • }
  • conditions
  • {
  • Ability Cooldown(Event Player, Button(Ability 2)) > 0;
  • Is Using Ability 2(Event Player) == False;
  • }
  • actions
  • {
  • Set Ability Cooldown(Event Player, Button(Ability 2), Ability Cooldown(Event Player, Button(Ability 2)) - 2.5);
  • Set Ability Cooldown(Event Player, Button(Ability 2), Ability Cooldown(Event Player, Button(Ability 2)) - 2.500);
  • }
  • }
  • rule("Lucio init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • actions
  • {
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Set Max Health(Event Player, 50);
  • Set Damage Dealt(Event Player, 100);
  • Set Move Speed(Event Player, 105.600);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.InitSpeed = 105.600;
  • Event Player.IsHuman = True;
  • Event Player.InitDamage = 100;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Lúcio), Button(Ultimate)), Custom String("Ultimate: Beatdrop"), Null, Left,
  • 3, Custom Color(100, 255, 0, 255), Custom Color(100, 255, 0, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Slow zombies and speed\r\n up humans around you.\r\n Zombies that are \r\n already slowed get\r\n stunned."), Null, Left,
  • 4, Custom Color(100, 255, 0, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Tracer), Button(Ability 2)), Custom String("Passive: Wallride"), String(
  • "{0}: {1}", Custom String("Energy"), Event Player.R), Left, 1, Custom Color(100, 255, 0, 255), Custom Color(100, 255, 0, 255),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Wallride uses energy.\r\n Energy recharges after\r\n not wallriding for\r\n 1.65 seconds."), Null, Left, 2, Custom Color(
  • 100, 255, 0, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Event Player.InitSpeed = 120;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Lúcio), Button(Secondary Fire)), Custom String(
  • "Secondary fire: disruption"), Null, Left, 5, Custom Color(100, 255, 0, 255), Custom Color(100, 255, 0, 255), Color(White),
  • Visible To and String, Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Your secondary has\r\n lowered knockback,\r\n but applies a strong \r\n slow."), Null, Left, 6, Custom Color(100, 255, 0,
  • 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Baptiste), Button(Ability 1)), Custom String("Passive: Battle hymn"), Null,
  • Left, 7, Custom Color(100, 255, 0, 255), Custom Color(100, 255, 0, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[6] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Speed up nearby humans.\r\n melee final blows\r\n at full health\r\n heal/shield nearby \r\n humans after 4 sec/\r\n holding Lshift."),
  • Null, Left, 8, Custom Color(100, 255, 0, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[7] = Last Text ID;
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Ring, Color(Lime Green), Position Of(
  • Event Player), 12, Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Event Player.W = 3;
  • Event Player.StrongMelee = True;
  • Event Player.StrongMelee = True;
  • Event Player.InitHp = 100;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Lucio speed aura")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == True;
  • Is True For Any(Players On Hero(Hero(Lúcio), All Teams), Distance Between(Position Of(Event Player), Current Array Element)
  • <= 12 && !Is Using Ability 2(Current Array Element) && Is In Line of Sight(Current Array Element, Position Of(Event Player),
  • Barriers Do Not Block LOS)) == True;
  • Hero Of(Event Player) != Hero(Lúcio);
  • }
  • actions
  • {
  • Event Player.SpeedBoost += 10;
  • Small Message(Event Player, Custom String("{0} {1} {2}", Hero Icon String(Hero(Lúcio)), Custom String("Speed boost!"), Hero Icon String(Hero(Lúcio))));
  • Small Message(Event Player, Custom String("{0} {1} {2}", Hero Icon String(Hero(Lúcio)), Custom String("Speed boost!"),
  • Hero Icon String(Hero(Lúcio))));
  • Wait(0.250, Ignore Condition);
  • Call Subroutine(IsCondTrue);
  • Small Message(Event Player, Custom String("{0} {1} {2}", Hero Icon String(Hero(Lúcio)), Custom String("Speed boost wore of."), Hero Icon String(Hero(Lúcio))));
  • Small Message(Event Player, Custom String("{0} {1} {2}", Hero Icon String(Hero(Lúcio)), Custom String("Speed boost wore of."),
  • Hero Icon String(Hero(Lúcio))));
  • Event Player.SpeedBoost -= 10;
  • }
  • }
  • rule("Lucio speed aura + ability 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == True;
  • Is True For Any(Players On Hero(Hero(Lúcio), All Teams), Distance Between(Position Of(Event Player), Current Array Element)
  • <= 12 && Is Using Ability 2(Current Array Element) && Is In Line of Sight(Current Array Element, Position Of(Event Player),
  • Barriers Do Not Block LOS)) == True;
  • Hero Of(Event Player) != Hero(Lúcio);
  • }
  • actions
  • {
  • Event Player.SpeedBoost += 14.080;
  • Small Message(Event Player, Custom String("{0} {1} {2}", Hero Icon String(Hero(Lúcio)), Custom String("Amped speed boost!"), Hero Icon String(Hero(Lúcio))));
  • Small Message(Event Player, Custom String("{0} {1} {2}", Hero Icon String(Hero(Lúcio)), Custom String("Amped speed boost!"),
  • Hero Icon String(Hero(Lúcio))));
  • Wait(0.250, Ignore Condition);
  • Call Subroutine(IsCondTrue);
  • Small Message(Event Player, Custom String("{0} {1} {2}", Hero Icon String(Hero(Lúcio)), Custom String("Amped speed boost wore of."), Hero Icon String(Hero(Lúcio))));
  • Small Message(Event Player, Custom String("{0} {1} {2}", Hero Icon String(Hero(Lúcio)), Custom String(
  • "Amped speed boost wore of."), Hero Icon String(Hero(Lúcio))));
  • Event Player.SpeedBoost -= 14.080;
  • }
  • }
  • rule("Lucio secondairy fire slow")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == False;
  • Hero Of(Attacker) == Hero(Lúcio);
  • Event Ability == Button(Secondary Fire);
  • }
  • actions
  • {
  • Event Player.Slow += 75;
  • Wait Until(Is On Ground(Event Player) == True, 10);
  • Wait(0.750, Ignore Condition);
  • Event Player.Slow -= 40;
  • }
  • }
  • rule("Lucio passive")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Is Meleeing(Event Player) == True;
  • Health(Event Player) == Max Health(Event Player);
  • }
  • actions
  • {
  • Event Player.O = 4;
  • Chase Player Variable At Rate(Event Player, O, False, True, Destination and Rate);
  • Create Effect(All Players(All Teams), Sparkles, Color(Lime Green), Event Player, True, Visible To Position and Radius);
  • Event Player.Effects[True] = Last Created Entity;
  • Call Subroutine(LUpassive);
  • Event Player.K = Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == True && Distance Between(
  • Eye Position(Event Player), Eye Position(Current Array Element)) <= 12 && Is In Line of Sight(Eye Position(Event Player),
  • Eye Position(Current Array Element), Barriers Do Not Block LOS));
  • Wait(False, Ignore Condition);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Lime Green), Position Of(Event Player), 24);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Filtered Array(Event Player.K, Health(Current Array Element) == Max Health(Current Array Element)).BarrierHealth += 50;
  • Filtered Array(Event Player.K, Health(Current Array Element) == Max Health(Current Array Element)).BarrierTime = 4;
  • Wait(False, Ignore Condition);
  • Heal(Filtered Array(Event Player.K, Health(Current Array Element) < Max Health(Current Array Element)), Event Player, 200);
  • Destroy Effect(Event Player.Effects[True]);
  • Stop Chasing Player Variable(Event Player, O);
  • Event Player.O = Null;
  • }
  • }
  • rule("Lucio lose wallride energy")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Is On Wall(Event Player) == True;
  • }
  • actions
  • {
  • Chase Player Variable At Rate(Event Player, R, False, Event Player.W, Destination and Rate);
  • Chase Player Variable At Rate(Event Player, W, 0.600, 6.400, Destination and Rate);
  • Wait(0.100, Ignore Condition);
  • Loop If(Is On Wall(Event Player));
  • Stop Chasing Player Variable(Event Player, R);
  • Event Player.W = 6;
  • Stop Chasing Player Variable(Event Player, W);
  • }
  • }
  • rule("Lucio ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == True;
  • }
  • actions
  • {
  • Wait(0.050, Ignore Condition);
  • Skip If(Is Dead(Event Player) || Has Status(Event Player, Hacked) || Has Status(Event Player, Knocked Down) || Has Status(
  • Event Player, Asleep) || Has Status(Event Player, Frozen) || Has Status(Event Player, Stunned), 2);
  • Loop If(!Is On Ground(Event Player));
  • Skip(True);
  • Abort;
  • Damage(Event Player, Null, 370);
  • Set Status(Filtered Array(All Living Players(All Teams),
  • Current Array Element.Slow > False && Current Array Element.IsHuman == False && Distance Between(Eye Position(Event Player),
  • Eye Position(Current Array Element)) <= 30 && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Current Array Element), Barriers Do Not Block LOS)), Event Player, Stunned, 2);
  • Wait(False, Ignore Condition);
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= 30 && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Current Array Element), Barriers Do Not Block LOS)).Slow += 50;
  • Event Player.F = Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == True && Distance Between(
  • Eye Position(Event Player), Eye Position(Current Array Element)) <= 30 && Is In Line of Sight(Eye Position(Event Player),
  • Eye Position(Current Array Element), Barriers Do Not Block LOS));
  • Wait(False, Ignore Condition);
  • Event Player.F.SpeedBoost += 25;
  • Wait(3, Ignore Condition);
  • Event Player.F.SpeedBoost -= 25;
  • }
  • }
  • rule("Lucio disable wallride when energy=0")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Event Player.R == Null;
  • }
  • actions
  • {
  • Disallow Button(Event Player, Button(Jump));
  • Call Subroutine(IsCondTrue);
  • Allow Button(Event Player, Button(Jump));
  • }
  • }
  • rule("Lucio gain energy when on ground")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Is On Wall(Event Player) == False;
  • }
  • actions
  • {
  • Wait(1.650, Abort When False);
  • Event Player.R = 3;
  • }
  • }
  • rule("Lucio passive sub")
  • {
  • event
  • {
  • Subroutine;
  • LUpassive;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Loop If(Event Player.O > False && !Is Button Held(Event Player, Button(Ability 1)));
  • }
  • }
  • rule("Doomfist init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Doomfist;
  • }
  • actions
  • {
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Destroy HUD Text(Event Player.Huds[2]);
  • Set Max Health(Event Player, 40);
  • Set Damage Dealt(Event Player, 110);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Disallow Button(Event Player, Button(Ultimate));
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.InitSpeed = 120;
  • Event Player.IsHuman = True;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Doomfist), Button(Secondary Fire)), Custom String(
  • "Ability 1: Kombat!"), String("{0}: {1}", Custom String("Cooldown"), Event Player.D), Left, 3, Custom Color(200,
  • 155, 15, 255), Custom Color(200, 155, 15, 255), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Ability Icon String(Hero(Doomfist), Button(Secondary Fire)), Custom String("Ability 1: Kombat!"),
  • String("{0}: {1}", Custom String("Cooldown"), Event Player.D), Left, 3, Custom Color(200, 155, 15, 255), Custom Color(200, 155,
  • 15, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Teleport to the\r\n player closest to\r\n your retice, no\r\n LoS needed, and\r\n gain a speedboost."), Null, Left, 4, Custom Color(200, 155, 15,
  • 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • "Teleport to the\r\n player closest to\r\n your retice, no\r\n LoS needed, and\r\n gain a speedboost."), Null, Left, 4,
  • Custom Color(200, 155, 15, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Sombra), Button(Ability 2)), Custom String(
  • "Secondary Fire/Ability 2: Retreat!"), String("{0}: {1}", Custom String("Cooldown"), Event Player.C), Left, 5, Custom Color(
  • 200, 155, 15, 255), Custom Color(200, 155, 15, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Press E to select\r\n a recall point. Press\r\n secondary fire to\r\n teleport to this\r\n point, destroying it."), Null,
  • Left, 6, Custom Color(200, 155, 15, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Baptiste), Button(Ability 2)), Custom String("Ultimate: Battle trance"),
  • Null, Left, 7, Custom Color(200, 155, 15, 255), Custom Color(200, 155, 15, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[6] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Grant yourself a speed\r\n boost and invincibility \r\n for 4 seconds. You\r\n can charge ult during \r\n this duration."),
  • Null, Left, 8, Custom Color(200, 155, 15, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[7] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Doomfist), Button(Melee)), Custom String("Passive: Kombat Ascension"),
  • String("{0}: {1}", Custom String("Bonus damage and projectile speed"), String("{0}%", Event Player.F)), Left, 1, Custom Color(200, 155, 15, 255), Custom Color(200, 155, 15, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Whenever you land a\r\n melee kill, gain bonus\r\n permanent damage dealt \r\n and projectile speed."),
  • Null, Left, 2, Custom Color(200, 155, 15, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • String("{0}: {1}", Custom String("Bonus damage and projectile speed"), String("{0}%", Event Player.F)), Left, 1, Custom Color(
  • 200, 155, 15, 255), Custom Color(200, 155, 15, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Whenever you land a\r\n melee kill, gain bonus\r\n permanent damage dealt \r\n and projectile speed."), Null, Left, 2,
  • Custom Color(200, 155, 15, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Event Player.InitDamage = 110;
  • Event Player.StrongMelee = True;
  • Event Player.StrongMelee = True;
  • Event Player.InitHp = 100;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Doomfist passive")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • All;
  • Doomfist;
  • }
  • conditions
  • {
  • Event Ability == Button(Melee);
  • }
  • actions
  • {
  • Event Player.F += 5;
  • Wait(0.016, Ignore Condition);
  • Wait(0.016, Ignore Condition);
  • Event Player.InitDamage = 110 + Event Player.F;
  • Wait(0.016, Ignore Condition);
  • Wait(0.016, Ignore Condition);
  • Set Damage Dealt(Event Player, Event Player.InitDamage);
  • Set Projectile Speed(Event Player, 125 + Event Player.F);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Orange), Event Player, 2);
  • Play Effect(Event Player, Buff Explosion Sound, Color(Orange), Event Player, 75);
  • Small Message(Event Player, Custom String("Kombat capabilities increased!"));
  • }
  • }
  • rule("Doomfist ability 1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Doomfist;
  • }
  • conditions
  • {
  • disabled Is Firing Primary(Event Player) == True;
  • disabled Is Button Held(Event Player, Button(Crouch)) == True;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Event Player.D == Null;
  • Is True For Any(Remove From Array(All Players(All Teams), Event Player), Is In View Angle(Event Player, Current Array Element,
  • 180)) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • }
  • actions
  • {
  • Event Player.K = Filtered Array(Remove From Array(All Players(All Teams), Event Player), Is In View Angle(Event Player,
  • Current Array Element, 180));
  • Wait(0.050, Ignore Condition);
  • Event Player.K = Filtered Array(Event Player.K, Player Closest To Reticle(Event Player, All Teams) == Current Array Element);
  • Wait(0.100, Ignore Condition);
  • Teleport(Event Player, Position Of(Event Player.K) + Vector(False, 2, False));
  • Play Effect(All Players(All Teams), Good Pickup Effect, Color(Orange), Event Player, 3);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Orange), Event Player, 75);
  • Event Player.D = 7;
  • Chase Player Variable At Rate(Event Player, D, False, True, Destination and Rate);
  • Event Player.SpeedBoost += 10;
  • Wait(2, Ignore Condition);
  • Event Player.SpeedBoost -= 10;
  • }
  • }
  • rule("Doomfist ability 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Doomfist;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • }
  • actions
  • {
  • Skip If(!Entity Exists(First Of(Event Player.Effects)), 2);
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Effect(Event Player.Effects[True]);
  • Wait(0.050, Ignore Condition);
  • Event Player.O = Position Of(Event Player);
  • Create Effect(Event Player, Orb, Color(Orange), Event Player.O, 1.250, Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Create Effect(All Players(All Teams), Bad Aura, Color(Orange), Event Player.O, 0.250, Visible To Position and Radius);
  • Event Player.Effects[True] = Last Created Entity;
  • Play Effect(Event Player, Buff Impact Sound, Color(White), Event Player, 100);
  • Small Message(Event Player, Custom String("Retreating location selected!"));
  • }
  • }
  • rule("Doomfist secondairy fire")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Doomfist;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Secondary Fire)) == True;
  • Event Player.O != Null;
  • Event Player.C == Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • }
  • actions
  • {
  • Teleport(Event Player, Event Player.O);
  • Play Effect(All Players(All Teams), Good Pickup Effect, Color(Orange), Event Player, 3);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Orange), Event Player, 75);
  • Small Message(Event Player, Custom String("Retreated!"));
  • Wait(0.050, Ignore Condition);
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Effect(Event Player.Effects[True]);
  • Event Player.O = Null;
  • Event Player.C = 12;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • }
  • }
  • rule("Doomfist enable ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Doomfist;
  • }
  • conditions
  • {
  • Ultimate Charge Percent(Event Player) == 100;
  • }
  • actions
  • {
  • Call Subroutine(ultCharged);
  • }
  • }
  • rule("Doomfist use ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Doomfist;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Event Player.B == 1;
  • }
  • actions
  • {
  • Set Ultimate Charge(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, False);
  • Set Status(Event Player, Event Player, Invincible, 4);
  • Event Player.SpeedBoost += 30;
  • Play Effect(All Players(All Teams), Good Pickup Effect, Color(Orange), Event Player, 6);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(Orange), Event Player, 140);
  • Event Player.B = Null;
  • Set Ultimate Ability Enabled(Event Player, True);
  • Wait(4, Ignore Condition);
  • Event Player.SpeedBoost -= 30;
  • }
  • }
  • rule("Tracer init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Tracer;
  • }
  • actions
  • {
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Set Max Health(Event Player, 66.667);
  • Set Damage Dealt(Event Player, 90);
  • Set Move Speed(Event Player, 110);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.InitSpeed = 110;
  • Event Player.IsHuman = True;
  • Event Player.InitDamage = 90;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Tracer), Button(Ability 1)), Custom String("Ability 1: blink"), String(
  • "{0}: {1}", Custom String("Cooldown"), Event Player.C), Left, 1, Custom Color(110, 255, 255, 255), Custom Color(110, 255, 255,
  • 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Teleport in any direction.\r\n Melee final blows reset\r\n the cooldown."), Null, Left, 2, Custom Color(110, 255, 255, 255),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(McCree), Button(Ability 1)), Custom String("Passive: stolen time"), Null,
  • Left, 3, Custom Color(110, 255, 255, 255), Custom Color(110, 255, 255, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Melee final blows charge\r\n you. This charge is used\r\n upon exiting an ability,\r\n which slow-mo's nearby\r\n zombies."),
  • Null, Left, 4, Custom Color(110, 255, 255, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Tracer), Button(Ability 2)), Custom String("Ability 2: recall"), Null, Left,
  • 5, Custom Color(110, 255, 255, 255), Custom Color(110, 255, 255, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Charged recall also\r\n stuns and pulls\r\n zombies towards\r\n you."), Null, Left, 6, Custom Color(110, 255, 255, 255),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Event Player.StrongMelee = True;
  • Event Player.StrongMelee = True;
  • Event Player.InitHp = 100;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Tracer ability 1 cooldown")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Tracer;
  • }
  • conditions
  • {
  • (Is Using Ability 1(Event Player) || Is Firing Secondary(Event Player)) == True;
  • }
  • actions
  • {
  • Event Player.C = 6;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • }
  • }
  • rule("Tracer ability 1 disable when cooldown up")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Tracer;
  • }
  • conditions
  • {
  • Event Player.C > Null;
  • }
  • actions
  • {
  • Set Ability 1 Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Call Subroutine(IsCondTrue);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • }
  • }
  • rule("Tracer passive + cooldown reset")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • All;
  • Tracer;
  • }
  • conditions
  • {
  • Is Meleeing(Event Player) == True;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(White), Event Player, 75);
  • Skip If(Entity Exists(First Of(Event Player.Effects)), 4);
  • Create Effect(Event Player, Beacon Sound, Color(White), Event Player, 200, Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Create Effect(All Players(All Teams), Sparkles, Color(Turquoise), Position Of(Event Player), 1.500,
  • Visible To Position and Radius);
  • Event Player.Effects[True] = Last Created Entity;
  • Event Player.B = 1;
  • Skip If(Event Player.C == Null, True);
  • Event Player.C = Null;
  • Wait(2, Restart When True);
  • Event Player.B = Null;
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Effect(Event Player.Effects[True]);
  • }
  • }
  • rule("Tracer passive + ability 1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Tracer;
  • }
  • conditions
  • {
  • Event Player.B == 1;
  • (Is Using Ability 1(Event Player) || Is Firing Secondary(Event Player)) == True;
  • }
  • actions
  • {
  • Call Subroutine(IsCondTrueFast);
  • Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Is In Line of Sight(Eye Position(Event Player),
  • Current Array Element, Barriers Do Not Block LOS) && Distance Between(Eye Position(Event Player), Current Array Element) <= 6)
  • .Tslow += True;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Turquoise), Position Of(Event Player), 8);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Turquoise), Event Player, 90);
  • Event Player.B = Null;
  • }
  • }
  • rule("Tracer time slow effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.Tslow > Null;
  • }
  • actions
  • {
  • Set Move Speed(Event Player, Event Player.InitSpeed * 0.500);
  • Set Aim Speed(Event Player, 50);
  • Chase Player Variable At Rate(Event Player, Tslow, False, True, Destination and Rate);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Turquoise), Event Player, 3);
  • Wait(0.250, Ignore Condition);
  • Loop If Condition Is True;
  • Set Move Speed(Event Player, Event Player.InitSpeed);
  • Set Aim Speed(Event Player, 100);
  • }
  • }
  • rule("Tracer time slow effect slow down melees")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.Tslow > Null;
  • Is Meleeing(Event Player) == True;
  • Is Firing Secondary(Event Player) == False;
  • Is Firing Primary(Event Player) == False;
  • }
  • actions
  • {
  • Disallow Button(Event Player, Button(Melee));
  • Wait(1.500, Ignore Condition);
  • Allow Button(Event Player, Button(Melee));
  • }
  • }
  • rule("Tracer time slow effect slow down falling")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.Tslow > Null;
  • Speed Of In Direction(Event Player, Down) > Null;
  • }
  • actions
  • {
  • Set Gravity(Event Player, 50);
  • Call Subroutine(IsCondTrueFast);
  • Set Gravity(Event Player, 100);
  • }
  • }
  • rule("Tracer passive + ability 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Tracer;
  • }
  • conditions
  • {
  • Event Player.B == 1;
  • Is Using Ability 2(Event Player) == True;
  • }
  • actions
  • {
  • Call Subroutine(IsCondTrueFast);
  • Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Is In Line of Sight(Eye Position(Event Player),
  • Current Array Element, Barriers Do Not Block LOS) && Distance Between(Eye Position(Event Player), Current Array Element) <= 8)
  • .Tslow += 2;
  • Set Status(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Is In Line of Sight(Eye Position(
  • Event Player), Current Array Element, Barriers Do Not Block LOS) && Distance Between(Eye Position(Event Player),
  • Current Array Element) <= 8), Event Player, Stunned, 1);
  • Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Is In Line of Sight(Eye Position(Event Player),
  • Current Array Element, Barriers Do Not Block LOS) && Distance Between(Eye Position(Event Player), Current Array Element) <= 8)
  • .KnockAway = -12;
  • Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Is In Line of Sight(Eye Position(Event Player),
  • Current Array Element, Barriers Do Not Block LOS) && Distance Between(Eye Position(Event Player), Current Array Element) <= 8)
  • .KnockAwayFrom = Event Player;
  • Current Array Element) <= 8), Event Player, Stunned, 0.7);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Turquoise), Position Of(Event Player), 12);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Turquoise), Event Player, 125);
  • Event Player.B = Null;
  • Wait Until(Ability Cooldown(Event Player, Button(Ability 2)) > 0, 3);
  • Set Ability Cooldown(Event Player, Button(Ability 2 ), 5);
  • }
  • }
  • rule("Tracer time slow effect winston primary")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Winston;
  • }
  • conditions
  • {
  • Event Player.Tslow > Null;
  • Is Meleeing(Event Player) == False;
  • Is Firing Primary(Event Player) == True;
  • }
  • actions
  • {
  • Disallow Button(Event Player, Button(Primary Fire));
  • Wait(1.200, Ignore Condition);
  • Allow Button(Event Player, Button(Primary Fire));
  • }
  • }
  • rule("Tracer time slow effect bastion primary")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Bastion;
  • }
  • conditions
  • {
  • Event Player.Tslow > Null;
  • Is Meleeing(Event Player) == False;
  • Is Firing Primary(Event Player) == True;
  • }
  • actions
  • {
  • Disallow Button(Event Player, Button(Primary Fire));
  • Wait(1.500, Ignore Condition);
  • Allow Button(Event Player, Button(Primary Fire));
  • }
  • }
  • rule("IsCondTrueFAST sub")
  • {
  • event
  • {
  • Subroutine;
  • IsCondTrueFast;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Mei init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mei;
  • }
  • actions
  • {
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Destroy HUD Text(Event Player.Huds[2]);
  • Set Max Health(Event Player, 40);
  • Set Damage Dealt(Event Player, 100);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Disallow Button(Event Player, Button(Ultimate));
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.InitSpeed = 120;
  • Event Player.IsHuman = True;
  • Event Player.InitDamage = 100;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Mei), Button(Ultimate)), Custom String("Ultimate: Avalanche"), Null, Left,
  • 3, Custom Color(100, 210, 245, 255), Custom Color(100, 210, 245, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Chill and hack nearby\r\n zombies. After 3 seconds,\r\n freeze and damage zombies\r\n still near you."), Null, Left, 4,
  • "Hack nearby zombies.\r\n After 3 seconds, freeze\r\n and damage zombies still\r\n near you."), Null, Left, 4,
  • Custom Color(100, 210, 245, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(McCree), Button(Ability 1)), Custom String(
  • "Primary fire: Endothermic blast"), String("{0}: {1}", Custom String("Cooldown"), Event Player.C), Left, 1, Custom Color(100,
  • 210, 245, 255), Custom Color(100, 210, 245, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Fire a freezing beam.\r\n Cooldown is activated\r\n after a short duration\r\n or after freezing\r\n a zombie."), Null,
  • "Overclock your blaster\r\n to enable a freezing\r\n beam for 3 seconds."), Null,
  • Left, 2, Custom Color(100, 210, 245, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Event Player.InitSpeed = 120;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Ashe), Button(Ability 1)), Custom String("Ability 2: Precision freezing"),
  • String("{0}: {1}", Custom String("Cooldown"), Event Player.D), Left, 5, Custom Color(100, 210, 245, 255), Custom Color(100,
  • 210, 245, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Fire an icicle that\r\n explodes on impact,\r\n launching you back\r\n and leaving a zone\r\n which chills zombies."),
  • "Fire a chilling icicle that\r\n explodes shortly after\r\n impact, launching you back\r\n and leaving a chilling\r\n zone."),
  • Null, Left, 6, Custom Color(100, 210, 245, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Mei), Button(Ability 1)), Custom String("Ability 1: Cryo-freeze"), Null,
  • Left, 7, Custom Color(100, 210, 245, 255), Custom Color(100, 210, 245, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[6] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Also reduces ability\r\n cooldowns. Upon exiting,\r\n freeze nearby zombies."), Null, Left, 8, Custom Color(100, 210, 245,
  • "Reduces ability cooldowns\r\n and chills nearby zombies\r\n during usage. Upon exiting,\r\n freeze nearby zombies."), Null, Left, 8, Custom Color(100, 210, 245,
  • 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[7] = Last Text ID;
  • Create HUD Text(Event Player, Icon String(Poison), Custom String("Passive: Frostbite"), Null, Left, 9, Custom Color(100, 210, 245,
  • 255), Custom Color(100, 210, 245, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[8] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Deal bonus damage to\r\n chilled zombies, even\r\n more to frozen zombies.\r\n Damaging them also\r\n grants a speedboost."),
  • Null, Left, 10, Custom Color(100, 210, 245, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[9] = Last Text ID;
  • Start Damage Modification(Filtered Array(All Living Players(All Teams), Current Array Element.Freeze > 0 && !Has Status(
  • Current Array Element, Frozen)), Event Player, 110, Receivers Damagers and Damage Percent);
  • Start Damage Modification(Filtered Array(All Living Players(All Teams), Has Status(Current Array Element, Frozen)), Event Player,
  • 120, Receivers Damagers and Damage Percent);
  • Event Player.StrongMelee = False;
  • Event Player.StrongMelee = False;
  • Event Player.InitHp = 100;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Mei primary fire freeze")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Hero Of(Attacker) == Hero(Mei);
  • Event Ability == Button(Primary Fire);
  • }
  • actions
  • {
  • Event Player.Freeze += 60;
  • Event Player.Freeze += 10;
  • Skip If(Event Player.FreezeTimer > 2, 1);
  • Event Player.FreezeTimer = 2;
  • Skip If(!Has Status(Event Player, Frozen), 4);
  • Wait(1, Ignore Condition);
  • Skip If(Attacker.C > False, 2);
  • Attacker.C = 18;
  • Chase Player Variable At Rate(Attacker, C, False, True, Destination and Rate);
  • disabled Skip If(!Has Status(Event Player, Frozen), 4);
  • disabled Wait(1, Ignore Condition);
  • disabled Skip If(Attacker.C > False, 2);
  • disabled Attacker.C = 18;
  • disabled Chase Player Variable At Rate(Attacker, C, False, True, Destination and Rate);
  • }
  • }
  • rule("Mei shift")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mei;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Set Healing Dealt(Event Player, 100);
  • Set Healing Dealt(Event Player, 100);
  • Create Effect(All Players(All Teams), Ring, Color(Aqua), Position Of(Event Player), 5, Visible To Position and Radius);
  • Event Player.Effects[0] = Last Created Entity;
  • Create Effect(All Players(All Teams), Cloud, Color(Aqua), Position Of(Event Player), 5, Visible To Position and Radius);
  • Event Player.Effects[1] = Last Created Entity;
  • Call Subroutine(IsCondTrueFast);
  • Call Subroutine(MEIability1);
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= 5 && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= 5.25 && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Current Array Element), Barriers Do Not Block LOS)).FreezeTimer = 3;
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= 5 && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= 5.25 && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Current Array Element), Barriers Do Not Block LOS)).Freeze = 175;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Aqua), Position Of(Event Player), 10);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(Aqua), Event Player, 60);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Aqua), Position Of(Event Player), 3);
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Effect(Event Player.Effects[1]);
  • }
  • }
  • rule("Mei shift reduce cd's")
  • rule("Mei ability 1 sub")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mei;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • Subroutine;
  • MEIability1;
  • }
  • actions
  • {
  • Chase Player Variable At Rate(Event Player, C, False, 3, Destination and Rate);
  • Chase Player Variable At Rate(Event Player, D, False, 3, Destination and Rate);
  • Call Subroutine(IsCondTrueFast);
  • Skip If(Event Player.C <= 0, 1);
  • Chase Player Variable At Rate(Event Player, C, False, 1, Destination and Rate);
  • Skip If(Event Player.D <= 0, 1);
  • Chase Player Variable At Rate(Event Player, D, False, 1, Destination and Rate);
  • Filtered Array(All Living Players(All Teams),
  • Current Array Element.IsHuman == False && Current Array Element.FreezeTimer < 2 && Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= 5.25
  • ).FreezeTimer = 2;
  • Filtered Array(All Living Players(All Teams),
  • Current Array Element.IsHuman == False && Distance Between(Eye Position(Event Player),
  • Eye Position(Current Array Element)) <= 5.25
  • ).Freeze += 10;
  • Damage(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False
  • && Distance Between(Position Of(Event Player),
  • Current Array Element) <= 6), Event Player, 1.500);
  • Skip If(Event Player.C <= 0.1, 1);
  • Event Player.C -= 0.1;
  • Skip If(Event Player.D <= 0.1, 1);
  • Event Player.D -= 0.1;
  • Wait(0.100, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Mei enable ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mei;
  • }
  • conditions
  • {
  • Ultimate Charge Percent(Event Player) == 100;
  • }
  • actions
  • {
  • Call Subroutine(ultCharged);
  • }
  • }
  • rule("Mei use ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mei;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Event Player.B == 1;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • }
  • actions
  • {
  • Set Ultimate Charge(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, False);
  • Event Player.B = 0;
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= 10 && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Current Array Element), Barriers Do Not Block LOS)).FreezeTimer = 3;
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= 10 && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Current Array Element), Barriers Do Not Block LOS)).Freeze = 75;
  • Set Status(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= 10 && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Current Array Element), Barriers Do Not Block LOS)), Event Player, Hacked, 3);
  • Create Effect(All Players(All Teams), Ring, Color(Aqua), Position Of(Event Player), 10, Visible To Position and Radius);
  • Event Player.Effects[2] = Last Created Entity;
  • Create Effect(All Players(All Teams), Cloud, Color(Aqua), Position Of(Event Player), 10, Visible To Position and Radius);
  • Event Player.Effects[3] = Last Created Entity;
  • Create Effect(All Players(All Teams), Sparkles, Color(Aqua), Position Of(Event Player), 10, Visible To Position and Radius);
  • Event Player.Effects[4] = Last Created Entity;
  • Create Effect(All Players(All Teams), Beacon Sound, Color(Aqua), Position Of(Event Player), 800, Visible To Position and Radius);
  • Event Player.Effects[5] = Last Created Entity;
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Aqua), Event Player, 150);
  • Play Effect(All Players(All Teams), Good Pickup Effect, Color(Aqua), Event Player, 4);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Aqua), Event Player, 20);
  • Event Player.R = 3;
  • Chase Player Variable At Rate(Event Player, R, False, True, Destination and Rate);
  • Call Subroutine(MEIult);
  • Skip If(Is Using Ability 1(Event Player), 1);
  • Skip If(Is Using Ability 1(Event Player) == False, 2);
  • Wait Until(Is Using Ability 1(Event Player) == False, 4);
  • Skip If(Has Status(Event Player, Hacked) || Has Status(Event Player, Knocked Down) || Has Status(Event Player, Asleep)
  • || Has Status(Event Player, Frozen) || Has Status(Event Player, Stunned) || Is Dead(Event Player), 8);
  • Event Player.K = Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(
  • Eye Position(Event Player), Eye Position(Current Array Element)) <= 10 && Is In Line of Sight(Eye Position(Event Player),
  • Eye Position(Current Array Element), Barriers Do Not Block LOS));
  • Wait(0.016, Ignore Condition);
  • Event Player.K.Freeze = 175;
  • Event Player.K.FreezeTimer = 3;
  • Damage(Event Player.K, Event Player, 90);
  • Damage(Event Player.K, Event Player, 100);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(Aqua), Event Player, 200);
  • Play Effect(All Players(All Teams), Good Pickup Effect, Color(Aqua), Position Of(Event Player), 6);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Aqua), Position Of(Event Player), 20);
  • Destroy Effect(Event Player.Effects[2]);
  • Destroy Effect(Event Player.Effects[3]);
  • Destroy Effect(Event Player.Effects[4]);
  • Destroy Effect(Event Player.Effects[5]);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Wait(0.500, Ignore Condition);
  • Disallow Button(Event Player, Button(Ultimate));
  • Event Player.K = 0;
  • }
  • }
  • rule("Mei ult sub")
  • {
  • event
  • {
  • Subroutine;
  • MEIult;
  • }
  • actions
  • {
  • Filtered Array(All Living Players(All Teams),
  • Current Array Element.IsHuman == False && Current Array Element.FreezeTimer < 0.500 && Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= 10 && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Current Array Element), Barriers Do Not Block LOS)).FreezeTimer = 0.500;
  • Filtered Array(All Living Players(All Teams),
  • Current Array Element.IsHuman == False && Current Array Element.Freeze < 50 && Distance Between(Eye Position(Event Player),
  • Eye Position(Current Array Element)) <= 10 && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Current Array Element), Barriers Do Not Block LOS)).Freeze = 50;
  • Skip If(Is Using Ability 1(Event Player), 1);
  • Skip If(Has Status(Event Player, Hacked) || Has Status(Event Player, Knocked Down) || Has Status(Event Player, Asleep)
  • || Has Status(Event Player, Frozen) || Has Status(Event Player, Stunned) || Is Dead(Event Player), 2);
  • Wait(0.100, Ignore Condition);
  • Loop If(Event Player.R > 0);
  • }
  • }
  • rule("Mei disable primary fire when C>0 or when hacked")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mei;
  • }
  • conditions
  • {
  • (Event Player.C > 0 || Has Status(Event Player, Hacked)) == True;
  • }
  • actions
  • {
  • Set Primary Fire Enabled(Event Player, False);
  • Call Subroutine(IsCondTrue);
  • Set Primary Fire Enabled(Event Player, True);
  • }
  • }
  • rule("Mei primary deals less dmg")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mei;
  • }
  • conditions
  • {
  • Is Firing Primary(Event Player) == True;
  • }
  • actions
  • {
  • Set Damage Dealt(Event Player, 25);
  • Call Subroutine(IsCondTrueFast);
  • Set Damage Dealt(Event Player, 100);
  • }
  • }
  • rule("Mei primary fire set cd when no players frozen")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mei;
  • }
  • conditions
  • {
  • Is Firing Primary(Event Player) == True;
  • }
  • actions
  • {
  • Small Message(Event Player, Custom String("Cryo-blast activated: cooldown will initiate after 2 seconds or enemy frozen"));
  • Wait(2, Ignore Condition);
  • Skip If(Event Player.C > False, 2);
  • Event Player.C = 18;
  • disabled Small Message(Event Player, Custom String("Cryo-blast activated: cooldown will initiate after 2 seconds or enemy frozen"));
  • Wait(3, Ignore Condition);
  • Event Player.C = 6;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • }
  • }
  • rule("Mei ability 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mei;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Event Player.D <= 0;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Is Reloading(Event Player) == False;
  • Is Firing Primary(Event Player) == False;
  • Is Using Ability 1(Event Player) == False;
  • Is Meleeing(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.D = 10;
  • Chase Player Variable At Rate(Event Player, D, False, True, Destination and Rate);
  • Set Projectile Speed(Event Player, 150);
  • Press Button(Event Player, Button(Secondary Fire));
  • Event Player.O = Eye Position(Event Player);
  • Event Player.P = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player)
  • * 500, Null, Event Player, True);
  • Event Player.N = Facing Direction Of(Event Player);
  • Wait(0.050, Ignore Condition);
  • Skip If(Has Status(Event Player, Hacked) || Has Status(Event Player, Stunned) || Has Status(Event Player, Knocked Down)
  • || Has Status(Event Player, Asleep) || Has Status(Event Player, Frozen) || Is Meleeing(Event Player) || Is Using Ability 1(
  • Event Player), 22);
  • Loop If(Is Firing Secondary(Event Player));
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • Set Projectile Speed(Event Player, 80);
  • Chase Player Variable At Rate(Event Player, O, Event Player.P, 172.500, Destination and Rate);
  • Event Player.F = 3;
  • Chase Player Variable At Rate(Event Player, F, False, True, Destination and Rate);
  • Create Effect(All Players(All Teams), Bad Aura, Color(Aqua), Event Player.O, 0.500, Visible To Position and Radius);
  • Event Player.Effects[6] = Last Created Entity;
  • Call Subroutine(MEIability21);
  • Skip If(Distance Between(Position Of(Event Player), Event Player.O) > 5, 1);
  • Apply Impulse(Event Player, Facing Direction Of(Event Player) * -1, 14, To World, Cancel Contrary Motion);
  • Event Player.F = 0;
  • Event Player.P = 0;
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(Aqua), Event Player.O, 50);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Aqua), Event Player.O, 1);
  • Wait(0.8, Ignore Condition);
  • Destroy Effect(Event Player.Effects[6]);
  • Wait(0.016, Ignore Condition);
  • Create Effect(All Players(All Teams), Ring, Color(Aqua), Event Player.O, 5, Visible To Position and Radius);
  • Event Player.Effects[6] = Last Created Entity;
  • Create Effect(All Players(All Teams), Cloud, Color(Aqua), Event Player.O, 5, Visible To Position and Radius);
  • Event Player.Effects[7] = Last Created Entity;
  • Create Effect(All Players(All Teams), Sparkles, Color(Aqua), Event Player.O, 5, Visible To Position and Radius);
  • Event Player.Effects[8] = Last Created Entity;
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(Aqua), Event Player.O, 100);
  • Play Effect(All Players(All Teams), Good Pickup Effect, Color(Aqua), Event Player.O, 6);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Aqua), Event Player.O, 10);
  • Event Player.F = 4;
  • Chase Player Variable At Rate(Event Player, F, False, True, Destination and Rate);
  • Skip If(Distance Between(Position Of(Event Player), Event Player.O) > 5.25, 1);
  • Apply Impulse(Event Player, Facing Direction Of(Event Player) * -1, 14, To World, Cancel Contrary Motion);
  • Call Subroutine(MEIability22);
  • Destroy Effect(Event Player.Effects[6]);
  • Destroy Effect(Event Player.Effects[7]);
  • Destroy Effect(Event Player.Effects[8]);
  • Event Player.F = 0;
  • Event Player.P = 0;
  • Event Player.O = 0;
  • }
  • }
  • rule("Mei ability 2 sub")
  • {
  • event
  • {
  • Subroutine;
  • MEIability21;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Skip If(Event Player.F <= 0, 1);
  • Loop If(Distance Between(Event Player.O, Ray Cast Hit Position(Event Player.O, Event Player.O + Event Player.N * 1.500, Null,
  • Loop If(Distance Between(Event Player.O, Ray Cast Hit Position(Event Player.O, Event Player.O + Event Player.N * 1.5, Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False),
  • Event Player, True)) >= 1.500);
  • Stop Chasing Player Variable(Event Player, O);
  • Stop Chasing Player Variable(Event Player, F);
  • }
  • }
  • rule("Mei ability 2 player hit")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Mei;
  • }
  • conditions
  • {
  • Event Player.O != 0;
  • Event Ability == Button(Secondary Fire);
  • Distance Between(Event Player.O, Eye Position(Victim)) <= 2.75;
  • }
  • actions
  • {
  • Event Player.F = 0;
  • Event Player.O = Position Of(Victim);
  • Stop Chasing Player Variable(Event Player, O);
  • Victim.Freeze += 100;
  • Victim.FreezeTimer = 1.4;
  • }
  • }
  • rule("Mei ability 2 zone sub")
  • {
  • event
  • {
  • Subroutine;
  • MEIability22;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Event Player.O,
  • Eye Position(Current Array Element)) <= 5 && Is In Line of Sight(Event Player.O, Eye Position(Current Array Element),
  • Barriers Do Not Block LOS)).FreezeTimer = 1;
  • Filtered Array(All Living Players(All Teams),
  • Current Array Element.IsHuman == False && Current Array Element.Freeze < 125 && Distance Between(Event Player.O, Eye Position(
  • Current Array Element)) <= 5 && Is In Line of Sight(Event Player.O, Eye Position(Current Array Element),
  • Barriers Do Not Block LOS)).Freeze = 100;
  • Barriers Do Not Block LOS)).Freeze = 125;
  • Loop If(Event Player.F > 0);
  • }
  • }
  • rule("Mei gain movespead from hitting frozen enemies")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Mei;
  • }
  • conditions
  • {
  • Has Status(Victim, Frozen) == True;
  • }
  • actions
  • {
  • Skip If(Entity Exists(Event Player.Effects[9]), 3);
  • Event Player.SpeedBoost += 15;
  • Create Effect(All Players(All Teams), Sparkles, Color(Aqua), Position Of(Event Player), 1.500, Visible To Position and Radius);
  • Event Player.Effects[9] = Last Created Entity;
  • Set Gravity(Event Player, 90);
  • Wait(1.500, Restart When True);
  • Event Player.SpeedBoost -= 15;
  • Set Gravity(Event Player, 100);
  • Destroy Effect(Event Player.Effects[9]);
  • }
  • }
  • rule("Ana init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Ana;
  • }
  • actions
  • {
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Destroy HUD Text(Event Player.Huds[2]);
  • Set Max Health(Event Player, 50.500);
  • Set Damage Dealt(Event Player, 107.143);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.InitSpeed = 120;
  • Event Player.IsHuman = True;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Ana), Button(Ability 2)), Custom String("Ability 2: Unstable mix"), Null,
  • Left, 1, Custom Color(80, 60, 190, 255), Custom Color(80, 60, 190, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "If you hit yourself,\r\n knock yourself back\r\n (Also doesn't heal you)."), Null, Left, 2, Custom Color(80, 60, 190, 255), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • "If you hit yourself,\r\n knock yourself back\r\n (Also doesn't heal you)."), Null, Left, 2, Custom Color(80, 60, 190, 255),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Widowmaker), Button(Ability 2)), Custom String("Passive: neurotoxins"),
  • Null, Left, 3, Custom Color(80, 60, 190, 255), Custom Color(80, 60, 190, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Enemies you damage\r\n are slowed."), Null, Left, 4, Custom Color(80, 60, 190, 255), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.InitSpeed = 120;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Ana), Button(Ultimate)), Custom String("Ultimate: Queen of toxicity"), Null,
  • Left, 5, Custom Color(80, 60, 190, 255), Custom Color(80, 60, 190, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Additionally grants a\r\n speedboost. You also \r\n leave toxic clouds\r\n behind that damage\r\n zombies."), Null, Left,
  • 6, Custom Color(80, 60, 190, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Event Player.StrongMelee = False;
  • Event Player.StrongMelee = False;
  • Event Player.InitHp = 100;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Ana ult speedboost")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Ana;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.SpeedBoost += 20;
  • Call Subroutine(IsCondTrue);
  • Event Player.SpeedBoost -= 20;
  • }
  • }
  • disabled rule("Ana always have 1 hp missing")
  • rule("Ana always have 1 hp missing")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Ana;
  • }
  • conditions
  • {
  • Health(Event Player) == Max Health(Event Player);
  • }
  • actions
  • {
  • Damage(Event Player, Null, 1);
  • Wait(False, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Ana ability 2 launch yourself")
  • {
  • event
  • {
  • Player Dealt Healing;
  • All;
  • Ana;
  • }
  • conditions
  • {
  • Healee == Event Player;
  • Is Using Ability 2(Event Player) == True;
  • }
  • actions
  • {
  • Apply Impulse(Event Player, Facing Direction Of(Event Player) * -1, 14, To World, Cancel Contrary Motion);
  • Damage(Event Player, Null, Event Healing);
  • }
  • }
  • rule("Ana passive")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Ana;
  • }
  • actions
  • {
  • Victim.Slow += Event Damage / 5;
  • }
  • }
  • rule("Ana ult create poisonous pools")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Ana;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.D[Event Player.F] = Position Of(Event Player);
  • Wait(0.100, Abort When False);
  • Loop If(Altitude Of(Event Player) > True);
  • Destroy Effect(Event Player.Effects[Event Player.F * 2]);
  • Destroy Effect(Event Player.Effects[Event Player.F * 2 + True]);
  • Wait(0.050, Abort When False);
  • Create Effect(All Players(All Teams), Sparkles, Color(Purple), Event Player.D[Event Player.F], 4, None);
  • Event Player.Effects[Event Player.F * 2] = Last Created Entity;
  • Wait(False, Ignore Condition);
  • Create Effect(All Players(All Teams), Cloud, Color(Blue), Event Player.D[Event Player.F], 4, None);
  • Event Player.Effects[Event Player.F * 2 + True] = Last Created Entity;
  • Wait(0.050, Ignore Condition);
  • Skip If(Event Player.F >= 3, True);
  • Event Player.F += True;
  • Skip If(Event Player.F < 3, True);
  • Event Player.F = Null;
  • Wait(0.500, Abort When False);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Ana ult poisonous pools effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Ana;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == True;
  • }
  • actions
  • {
  • Damage(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Position Of(
  • Current Array Element), First Of(Event Player.D)) <= 4 && Is In Line of Sight(Eye Position(Current Array Element), First Of(
  • Event Player.D), Barriers Do Not Block LOS)), Event Player, 2);
  • Skip If(Event Player.D[1] == 0, 1);
  • Damage(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Position Of(
  • Current Array Element), Event Player.D[1]) > 4 && Distance Between(Position Of(Current Array Element), Event Player.D[True])
  • <= 4 && Is In Line of Sight(Eye Position(Current Array Element), Event Player.D[True], Barriers Do Not Block LOS)),
  • Event Player, 2);
  • Skip If(Event Player.D[2] == 0, 1);
  • Damage(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Position Of(
  • Current Array Element), Event Player.D[2]) > 4 && Distance Between(Position Of(Current Array Element), Event Player.D[2])
  • <= 4 && Is In Line of Sight(Eye Position(Current Array Element), Event Player.D[2], Barriers Do Not Block LOS)), Event Player,
  • 2);
  • "damage([player for player in getAllPlayers() if player.IsHuman == false and distance(player.getPosition(), eventPlayer.D[2]) > 4 and distance(player.getPosition(), eventPlayer.D[3]) <= 4 and isInLoS(player.getEyePosition(), eventPlayer.D[3], BarrierLos.PAS"
  • Wait(0.100, Ignore Condition);
  • Loop If Condition Is True;
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Effect(Event Player.Effects[True]);
  • Destroy Effect(Event Player.Effects[2]);
  • Destroy Effect(Event Player.Effects[3]);
  • Destroy Effect(Event Player.Effects[4]);
  • Destroy Effect(Event Player.Effects[5]);
  • Destroy Effect(Event Player.Effects[6]);
  • Destroy Effect(Event Player.Effects[7]);
  • }
  • }
  • rule("Sym init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • actions
  • {
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Destroy HUD Text(Event Player.Huds[2]);
  • Set Max Health(Event Player, 44.444);
  • Set Damage Dealt(Event Player, 110);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Disallow Button(Event Player, Button(Ultimate));
  • Disallow Button(Event Player, Button(Ability 2));
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.InitSpeed = 120;
  • Event Player.IsHuman = True;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Tracer), Button(Ability 1)), Custom String("Ability 1: Passage"), String(
  • Create HUD Text(Event Player, Ability Icon String(Hero(Tracer), Button(Ability 1)), Custom String("Ability 2: Passage"), String(
  • "{0}: {1}", Custom String("Cooldown"), Event Player.C), Left, 1, Custom Color(100, 255, 255, 255), Custom Color(100, 255, 255,
  • 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Create a teleporter,\r\n that all players can\r\n take. Collecting a\r\n soul resets the\r\n cooldown."), Null, Left, 2,
  • Custom Color(100, 255, 255, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Sigma), Button(Ability 1)), Custom String("Passive: Lost souls"), String(
  • "{0}: {1}", Custom String("Current souls"), Event Player.D), Left, 3, Custom Color(100, 255, 255, 255), Custom Color(100, 255,
  • 255, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Souls randomly spawn\r\n around the map.\r\n Collect them to\r\n gain movespeed\r\n and to unlock\r\n ult/ability 2."),
  • "Souls randomly spawn\r\n around the map.\r\n Collect them to\r\n gain movespeed\r\n and to unlock\r\n ult/ability 1."),
  • Null, Left, 4, Custom Color(100, 255, 255, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.InitSpeed = 120;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Zarya), Button(Ability 2)), Custom String("Ability 2: Siphon soul"), String(
  • Create HUD Text(Event Player, Ability Icon String(Hero(Zarya), Button(Ability 2)), Custom String("Ability 1: Siphon soul"), String(
  • "{0}: {1}", Custom String("Cooldown"), Event Player.C2), Left, 5, Custom Color(100, 255, 255, 255), Custom Color(100, 255, 255,
  • 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Uses 1 soul to\r\n either cleanse/shield\r\n a human or chill/\r\n damage a zombie."), Null, Left, 6, Custom Color(100,
  • 255, 255, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • "Evokes 1 soul to\r\n either cleanse/shield\r\n a human or vulnerable a\r\n zombie."), Null, Left, 6, Custom Color(100, 255, 255,
  • 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Sigma), Button(Ultimate)), Custom String("Ultimate: Obliviate/reincarnate"),
  • Create HUD Text(Event Player, Ability Icon String(Hero(Moira), Button(Ultimate)), Custom String("Ultimate: Radiant soulfire"),
  • Null, Left, 7, Custom Color(100, 255, 255, 255), Custom Color(100, 255, 255, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Ult can be charged twice. \r\n First time grants\r\n obliviate, Then\r\n reincarnate. Uses \r\n souls to increase AoE \r\n and power."),
  • Custom String("Obliviate:"), Left, 8, Custom Color(100, 255, 255, 255), Color(White), Color(White), Visible To and String,
  • "Channel a large piercing beam,\r\n evoking all souls. The beam\r\n gains a bonus effect if 6\r\n souls are evoked."),
  • Custom String("Allies hit:"), Left, 8, Custom Color(100, 255, 255, 255), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[7] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Deal huge damage to up\r\n to 6 zombies inside\r\n your AoE. Zombies\r\n with low health\r\n are prioritized."),
  • Custom String("Reincarnate:"), Left, 9, Custom Color(100, 255, 255, 255), Color(White), Color(White), Visible To and String,
  • "Shield growing in size\r\n with each souls evoked,\r\n or invincibility at 6 souls\r\n plus a cleanse."),
  • Custom String("Zombies hit:"), Left, 9, Custom Color(100, 255, 255, 255), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[8] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Grant shields to all\r\n humans and res\r\n up to 3 random\r\n humans inside \r\n your AoE."), Null, Left, 10,
  • "Damage and vulnerable growing\r\n in size with each soul evoked,\r\n and at 6 souls a hack."), Null, Left, 10,
  • Custom Color(100, 255, 255, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[9] = Last Text ID;
  • Event Player.InitDamage = 110;
  • Event Player.StrongMelee = True;
  • Event Player.StrongMelee = False;
  • Event Player.InitHp = 100;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Sym ability 1 setup")
  • rule("Sym ability 2 setup")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Event Player.C == Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.Stage == Null;
  • }
  • actions
  • {
  • Create Effect(Event Player, Good Aura, Color(Aqua), Event Player.O, 1.500, Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Create Effect(Event Player, Good Aura, Color(Aqua), Event Player.AnotherSvariable, 1.500, Visible To Position and Radius);
  • Event Player.Effects[11] = Last Created Entity;
  • Create In-World Text(Event Player, Custom String("{0} {1} {2}", Icon String(Arrow: Down), Custom String(
  • "Release Lshift to select, hold m1 or m2 to cancel"), Icon String(Arrow: Down)), Event Player.O + Vector(False, True, False),
  • "Release E to select, hold m1 or m2 to cancel"), Icon String(Arrow: Down)), Event Player.F + Vector(False, True, False),
  • 1.250, Clip Against Surfaces, Visible To Position and String, Color(Aqua), Default Visibility);
  • Event Player.Effects[2] = Last Text ID;
  • Event Player.Effects[12] = Last Text ID;
  • Event Player.Stage = 1;
  • Wait(0.050, Ignore Condition);
  • Call Subroutine(Sability1setup);
  • Call Subroutine(Sability2setup);
  • }
  • }
  • rule("Sym chace O")
  • rule("Sym chace AnotherSvariable")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Event Player.Stage == 1;
  • }
  • actions
  • {
  • Event Player.O = Nearest Walkable Position(Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
  • Event Player.AnotherSvariable = Nearest Walkable Position(Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
  • + Facing Direction Of(Event Player) * 25, Null, Event Player, True));
  • Wait(0.050, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Sym ability 1 use")
  • rule("Sym ability 2 use")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Event Player.Stage == 2;
  • Is Alive(Event Player) == True;
  • Event Player.IsHuman == True;
  • }
  • actions
  • {
  • Destroy Effect(First Of(Event Player.Effects));
  • Event Player.O = Nearest Walkable Position(Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
  • + Facing Direction Of(Event Player) * 25, Null, Event Player, True));
  • Destroy Effect(Event Player.Effects[11]);
  • Destroy In-World Text(Event Player.Effects[12]);
  • Destroy Effect(Event Player.Effects[False]);
  • Destroy Effect(Event Player.Effects[True]);
  • Destroy In-World Text(Event Player.Effects[2]);
  • Wait(0.016, Ignore Condition);
  • Event Player.Stage = Null;
  • Event Player.P = Position Of(Event Player);
  • Stop Chasing Player Variable(Event Player, O);
  • Wait(0.016, Ignore Condition);
  • disabled Skip If(Entity Exists(Event Player.Effects[False]) == True, 7);
  • Create Effect(All Players(All Teams), Good Aura, Color(Aqua), Event Player.O, 1.500, Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Wait(False, Ignore Condition);
  • Create Effect(All Players(All Teams), Good Aura, Color(Aqua), Event Player.P, 1.500, Visible To Position and Radius);
  • Event Player.Effects[True] = Last Created Entity;
  • Create In-World Text(All Players(All Teams), Custom String("Entry"), Event Player.P + Vector(False, True, False), 1.250,
  • Clip Against Surfaces, Visible To Position and String, Color(Aqua), Default Visibility);
  • Event Player.Effects[2] = Last Text ID;
  • Wait(0.016, Ignore Condition);
  • Event Player.Stage = Null;
  • Start Rule(Sability1tpID, Restart Rule);
  • Start Rule(Sability2tpID, Restart Rule);
  • Skip If(Throttle Of(Event Player) == Backward, 8);
  • Teleport(Event Player, Event Player.O);
  • Wait(0.016, Ignore Condition);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Aqua), Event Player.P, 1.500);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Aqua), Event Player.P, 100);
  • Wait(False, Ignore Condition);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Aqua), Event Player.O, 1.500);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Aqua), Event Player.O, 100);
  • Event Player.StpID = Null;
  • Wait(5, Restart When True);
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Effect(Event Player.Effects[True]);
  • Destroy In-World Text(Event Player.Effects[2]);
  • Event Player.P = Null;
  • }
  • }
  • rule("Sym tp sub")
  • {
  • event
  • {
  • Subroutine;
  • Sability1tpID;
  • Sability2tpID;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Skip If(Event Player.P == Null, 2);
  • Filtered Array(All Players(All Teams), Is In Line of Sight(Eye Position(Current Array Element), Event Player.P,
  • Barriers Do Not Block LOS) && Distance Between(Event Player.P, Eye Position(Current Array Element)) <= 2).StpID = Event Player;
  • Filtered Array(All Players(All Teams), Is In Line of Sight(Eye Position(Current Array Element), Event Player.P,
  • Barriers Do Not Block LOS) && (Distance Between(Eye Position(Current Array Element), Event Player.P)
  • > 2 || !Is In Line of Sight(Eye Position(Current Array Element), Event Player.P, Barriers Do Not Block LOS))).StpID = Null;
  • Skip If(Event Player.IsHuman == False, True);
  • Loop If(Is Alive(Event Player) && Event Player.P != Null);
  • }
  • }
  • rule("Sym enable ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Ultimate Charge Percent(Event Player) == 100;
  • Event Player.B < 2;
  • }
  • actions
  • {
  • Event Player.B += True;
  • Play Effect(Event Player, Buff Impact Sound, Color(White), Event Player, 75);
  • Skip If(Event Player.B == 2, 2);
  • Call Subroutine(ultCharged);
  • }
  • }
  • rule("Sym ult not enough souls")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Event Player.D == 0;
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Event Player.B == 1;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • }
  • actions
  • {
  • Play Effect(Event Player, Debuff Impact Sound, Color(Aqua), Event Player, 50);
  • Small Message(Event Player, Custom String("Requires a minimum of 1 soul."));
  • }
  • }
  • rule("Sym use ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Event Player.D > 0;
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Event Player.B == 1;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • }
  • actions
  • {
  • Create Effect(All Players(All Teams), Beacon Sound, Color(Aqua), Position Of(Event Player), 100, Visible To Position and Radius);
  • Event Player.Effects[9] = Last Created Entity;
  • Disallow Button(Event Player, Button(Primary Fire));
  • Disallow Button(Event Player, Button(Secondary Fire));
  • Disallow Button(Event Player, Button(Melee));
  • Set Ultimate Ability Enabled(Event Player, False);
  • Set Aim Speed(Event Player, 40);
  • Event Player.InitSpeed = 40;
  • Wait(0.016, Ignore Condition);
  • Set Move Speed(Event Player, Event Player.InitSpeed);
  • disabled Start Camera(Event Player, Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
  • + World Vector Of(Vector(0, 3, 0), Event Player, Rotation) + Facing Direction Of(Event Player) * -4, Null, Event Player,
  • False), Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player) * 300,
  • Null, Event Player, True), 60);
  • disabled Set Status(Event Player, Null, Rooted, 1.6);
  • Set Ultimate Charge(Event Player, False);
  • Small Message(Event Player, Custom String("Obliviate charged."));
  • Skip If(Event Player.B == 1, True);
  • Small Message(Event Player, Custom String("Reincarnate charged."));
  • Create Progress Bar HUD Text(Event Player, Event Player.R * 62.5, Custom String("Channeling radiant soulfire"), Top, 10, Custom Color(100, 255, 255, 255
  • ), Custom Color(100, 255, 255, 255), Visible To Values and Color, Default Visibility);
  • Event Player.Effects[10] = Last Text ID;
  • Event Player.F2 = Event Player.D;
  • Wait(0.016, Ignore Condition);
  • Event Player.D = 0;
  • Event Player.R = 1.6;
  • Event Player.N2 = 0;
  • Event Player.Sangle = 0;
  • Chase Player Variable At Rate(Event Player, Sangle, -10000, 200, Destination and Rate);
  • Chase Player Variable At Rate(Event Player, R, False, True, Destination and Rate);
  • Wait(0.016, Ignore Condition);
  • Event Player.B = 2;
  • Wait Until((Has Status(Event Player, Hacked) || Has Status(Event Player, Knocked Down) || Has Status(Event Player, Asleep)
  • || Has Status(Event Player, Frozen) || Has Status(Event Player, Stunned)), 1.6);
  • Wait(0.016, Ignore Condition);
  • Event Player.N2 = 0;
  • Skip If(Has Status(Event Player, Hacked) || Has Status(Event Player, Knocked Down) || Has Status(Event Player, Asleep)
  • || Has Status(Event Player, Frozen) || Has Status(Event Player, Stunned), 2);
  • Event Player.P2 = Eye Position(Event Player);
  • Event Player.O2 = 0;
  • Event Player.R2 = Facing Direction Of(Event Player);
  • Wait(0.016, Ignore Condition);
  • Event Player.B = 3;
  • Wait Until(Event Player.B == 4, 5);
  • Event Player.O2 = 0;
  • Wait Until(Event Player.B == 5, 5);
  • disabled Clear Status(Event Player, Rooted);
  • Destroy Progress Bar HUD Text(Event Player.Effects[10]);
  • Destroy Effect(Event Player.Effects[9]);
  • Allow Button(Event Player, Button(Primary Fire));
  • Allow Button(Event Player, Button(Secondary Fire));
  • Allow Button(Event Player, Button(Melee));
  • Set Ultimate Ability Enabled(Event Player, True);
  • Set Aim Speed(Event Player, 100);
  • disabled Stop Camera(Event Player);
  • Stop Chasing Player Variable(Event Player, Sangle);
  • Event Player.InitSpeed = 120;
  • Wait(0.016, Ignore Condition);
  • Set Move Speed(Event Player, Event Player.InitSpeed);
  • Wait(0.100, Ignore Condition);
  • Event Player.B = 0;
  • }
  • }
  • rule("Sym ult animations")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.B == 3;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Set Ability 1 Enabled(Event Player, True);
  • Start Holding Button(Event Player, Button(Ability 1));
  • Wait(0.016, Ignore Condition);
  • Cancel Primary Action(Event Player);
  • Stop Holding Button(Event Player, Button(Ability 1));
  • Set Ability 1 Enabled(Event Player, False);
  • }
  • }
  • rule("Sym ult create orbiting souls")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Event Player.B == 2;
  • }
  • actions
  • {
  • Create Effect(All Players(All Teams), Orb, Color(Aqua), Update Every Frame(Eye Position(Event Player) + Vector(
  • 4 * Cosine From Degrees(Event Player.Sangle), 0, 4 * Sine From Degrees(
  • Event Player.Sangle))), 0.100, Visible To Position and Radius);
  • Event Player.Effects[11 + Event Player.N2] = Last Created Entity;
  • Event Player.N2 = Event Player.N2 + 1;
  • Wait(0.016, Ignore Condition);
  • Skip If(Event Player.N2 == Event Player.F2, 23);
  • Create Effect(All Players(All Teams), Orb, Color(Aqua), Update Every Frame(Eye Position(Event Player) + Vector(
  • 4 * Cosine From Degrees(Event Player.Sangle + 60), 0, 4 * Sine From Degrees(
  • Event Player.Sangle + 60))), 0.100, Visible To Position and Radius);
  • Event Player.Effects[11 + Event Player.N2] = Last Created Entity;
  • Event Player.N2 = Event Player.N2 + 1;
  • Wait(0.016, Ignore Condition);
  • Skip If(Event Player.N2 == Event Player.F2, 18);
  • Create Effect(All Players(All Teams), Orb, Color(Aqua), Update Every Frame(Eye Position(Event Player) + Vector(
  • 4 * Cosine From Degrees(Event Player.Sangle + 120), 0, 4 * Sine From Degrees(
  • Event Player.Sangle + 120))), 0.100, Visible To Position and Radius);
  • Event Player.Effects[11 + Event Player.N2] = Last Created Entity;
  • Event Player.N2 = Event Player.N2 + 1;
  • Wait(0.016, Ignore Condition);
  • Skip If(Event Player.N2 == Event Player.F2, 12);
  • Create Effect(All Players(All Teams), Orb, Color(Aqua), Update Every Frame(Eye Position(Event Player) + Vector(
  • 4 * Cosine From Degrees(Event Player.Sangle + 180), 0, 4 * Sine From Degrees(
  • Event Player.Sangle + 180))), 0.100, Visible To Position and Radius);
  • Event Player.Effects[11 + Event Player.N2] = Last Created Entity;
  • Event Player.N2 = Event Player.N2 + 1;
  • Wait(0.016, Ignore Condition);
  • Skip If(Event Player.N2 == Event Player.F2, 6);
  • Create Effect(All Players(All Teams), Orb, Color(Aqua), Update Every Frame(Eye Position(Event Player) + Vector(
  • 4 * Cosine From Degrees(Event Player.Sangle + 240), 0, 4 * Sine From Degrees(
  • Event Player.Sangle + 240))), 0.100, Visible To Position and Radius);
  • Event Player.Effects[11 + Event Player.N2] = Last Created Entity;
  • Event Player.N2 = Event Player.N2 + 1;
  • Wait(0.016, Ignore Condition);
  • Create Effect(All Players(All Teams), Orb, Color(Aqua), Update Every Frame(Eye Position(Event Player) + Vector(
  • 4 * Cosine From Degrees(Event Player.Sangle + 320), 0, 4 * Sine From Degrees(
  • Event Player.Sangle + 300))), 0.100, Visible To Position and Radius);
  • Event Player.Effects[11 + Event Player.N2] = Last Created Entity;
  • }
  • }
  • rule("Sym ult delete orbiting souls")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Event Player.B > 2;
  • }
  • actions
  • {
  • Destroy Effect(Event Player.Effects[11 + Event Player.N2]);
  • Wait(0.016, Ignore Condition);
  • Event Player.N2 = Event Player.N2 + 1;
  • Loop If(Count Of(Event Player.N2) < Event Player.F2);
  • }
  • }
  • rule("Sym ult beam init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Event Player.B == 3;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Skip If(Event Player.O2 > 0, 2);
  • disabled Event Player.P2[Event Player.O2] = Ray Cast Hit Position(Event Player.P2[Event Player.O2],
  • Event Player.P2[Event Player.O2] + Event Player.R2 * 7, Null, Event Player, False);
  • Event Player.P2[Event Player.O2] = Event Player.P2[Event Player.O2] + Event Player.R2 * 7;
  • Skip If(Event Player.O2 == 0, 2);
  • disabled Event Player.P2[Event Player.O2] = Ray Cast Hit Position(Event Player.P2[Event Player.O2 - 1],
  • Event Player.P2[Event Player.O2 - 1] + Event Player.R2 * 7, Null, Event Player, False);
  • Event Player.P2[Event Player.O2] = Event Player.P2[Event Player.O2 - 1] + Event Player.R2 * 7;
  • Wait(0.016, Ignore Condition);
  • disabled Create Effect(All Players(All Teams), Sphere, Color(Aqua), Event Player.P2[Event Player.O2], 0.100, Visible To and Color);
  • disabled Event Player.SultEffect[Event Player.O2] = Last Created Entity;
  • disabled Play Effect(All Players(All Teams), Good Explosion, Color(Aqua), Event Player.P2[Event Player.O2], 0.100);
  • disabled Play Effect(All Players(All Teams), Buff Impact Sound, Color(Aqua), Event Player.P2[Event Player.O2], 25);
  • Wait(0.016, Ignore Condition);
  • Event Player.O2 = Event Player.O2 + 1;
  • Skip If(Event Player.O2 == 1, 1);
  • Loop If(Distance Between(Event Player.P2[Event Player.O2 - 2], Event Player.P2[Event Player.O2 - 1]) == 7 && Event Player.O2 < 10);
  • Skip If(Event Player.O2 > 1, 1);
  • Loop;
  • Event Player.B = 4;
  • }
  • }
  • disabled rule("Sym ult beam init variables")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Event Player.B == 3;
  • Event Player.O2 == 0;
  • }
  • actions
  • {
  • Event Player.P2 = Eye Position(Event Player);
  • Event Player.O2 = 0;
  • Event Player.R2 = Facing Direction Of(Event Player);
  • }
  • }
  • rule("Sym ult beam explosion")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Event Player.B == 4;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Good Explosion, Color(Aqua), Event Player.P2[Event Player.O2], 5);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Aqua), Event Player.P2[Event Player.O2], 125);
  • Filtered Array(All Living Players(All Teams), Distance Between(Event Player.P2[Event Player.O2], Eye Position(Current Array Element)) <= 5 &&
  • Is In Line of Sight(Eye Position(Current Array Element), Event Player.P2[Event Player.O2], Barriers Do Not Block LOS)).SultHit = Event Player;
  • disabled Destroy Effect(Event Player.SultEffect[Event Player.O2]);
  • Wait(0.016, Ignore Condition);
  • Event Player.P2[Event Player.O2] = 0;
  • Wait(0.016, Ignore Condition);
  • Event Player.O2 = Event Player.O2 + 1;
  • Loop If(Count Of(Event Player.P2) > Event Player.O2);
  • Wait(0.016, Ignore Condition);
  • Event Player.P2 = 0;
  • Event Player.O2 = 0;
  • Event Player.B = 5;
  • }
  • }
  • disabled rule("Sym ult shot delete effects")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Event Player.B == 0;
  • Event Player.P2 != 0;
  • }
  • actions
  • {
  • Destroy Effect(Event Player.Effects[Event Player.O2]);
  • Wait(0.016, Ignore Condition);
  • Event Player.P2[Event Player.O2] = 0;
  • Wait(0.016, Ignore Condition);
  • Event Player.O2 = Event Player.O2 + 1;
  • Loop If(Count Of(Event Player.P2) > Event Player.O2);
  • Wait(0.016, Ignore Condition);
  • Event Player.P2 = 0;
  • Event Player.O2 = 0;
  • }
  • }
  • disabled rule("Sym ult shot explosion init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Event Player.B == 3;
  • }
  • actions
  • {
  • Event Player.O2 = 0;
  • }
  • }
  • rule("Sym ult zombies hit effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.SultHit != 0;
  • Event Player.IsHuman == False;
  • }
  • actions
  • {
  • Damage(Event Player, Event Player.SultHit, 15 * Event Player.SultHit.F2);
  • Skip If(Event Player.Svulnerable > 8 * Event Player.SultHit.F2, 1);
  • Event Player.Svulnerable = 8 * Event Player.SultHit.F2;
  • Skip If(Event Player.SvulnerableTime > 4, 1);
  • Event Player.SvulnerableTime = 4;
  • Skip If(Event Player.SultHit.F2 < 6, 1);
  • Set Status(Event Player, Event Player.SultHit, Hacked, 4);
  • Wait(0.016,Ignore Condition);
  • Event Player.SultHit = 0;
  • }
  • }
  • rule("Sym ability 1 sub")
  • rule("Sym ult Humans hit effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.SultHit != 0;
  • Event Player.IsHuman == True;
  • }
  • actions
  • {
  • If(Event Player.SultHit.F2 < 6);
  • Event Player.BarrierHealth += 20 * Event Player.SultHit.F2;
  • Skip If(Event Player.BarrierTime > 4, True);
  • Event Player.BarrierTime = 4;
  • End;
  • If(Event Player.SultHit.F2 >= 6);
  • Set Status(Event Player, Event Player.SultHit, Invincible, 4);
  • End;
  • Event Player.Slow = Null;
  • Clear Status(Event Player, Hacked);
  • Clear Status(Event Player, Knocked Down);
  • Clear Status(Event Player, Stunned);
  • Clear Status(Event Player, Rooted);
  • Wait(0.016,Ignore Condition);
  • Event Player.SultHit = 0;
  • }
  • }
  • rule("Sym vulnerable effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.Svulnerable > 0;
  • }
  • actions
  • {
  • Chase Player Variable At Rate(Event Player, SvulnerableTime, False, True, Destination and Rate);
  • Start Damage Modification(Event Player, Filtered Array(All Players(All Teams), Current Array Element. IsHuman == True),
  • Event Player.Svulnerable, Receivers Damagers and Damage Percent);
  • Event Player.MiscIDs[2] = Last Damage Modification ID;
  • Event Player.SvulnerableCheck = Event Player.Svulnerable;
  • Wait Until((Event Player.SvulnerableTime == 0 || Event Player.SvulnerableCheck != Event Player.Svulnerable), 9999);
  • Wait(0.016, Ignore Condition);
  • Loop If(Event Player.SvulnerableCheck != Event Player.Svulnerable);
  • Stop Damage Modification(Event Player.MiscIDs[2]);
  • Stop Chasing Player Variable(Event Player, SvulnerableTime);
  • Event Player.SvulnerableCheck = 0;
  • Event Player.Svulnerable = 0;
  • Event Player.SvulnerableTime = 0;
  • }
  • }
  • rule("Sym vulnerable visual effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.Svulnerable > 0;
  • }
  • actions
  • {
  • Small Message(Event Player, Custom String("{0} {1} {2}", Hero Icon String(Hero(Symmetra)), Custom String("Vulnerable!"),
  • Hero Icon String(Hero(Symmetra))));
  • Create Effect(Remove From Array(All Players(All Teams), Event Player), Bad Aura, Color(Blue), Eye Position(Event Player) - Vector(
  • 0, 1, 0), Max Health(Event Player) / 100, Visible To Position and Radius);
  • Event Player.MiscIDs[3] = Last Created Entity;
  • Wait Until(Event Player.SvulnerableTime == 0, 9999);
  • Destroy Effect(Event Player.MiscIDs[3]);
  • Small Message(Event Player, Custom String("Vulnerable wore off."));
  • }
  • }
  • rule("Sym ability 2 sub")
  • {
  • event
  • {
  • Subroutine;
  • Sability1setup;
  • Sability2setup;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Skip If(Is Button Held(Event Player, Button(Primary Fire)) || Is Button Held(Event Player, Button(Secondary Fire)), 4);
  • Loop If(Is Button Held(Event Player, Button(Ability 1)));
  • Loop If(Is Button Held(Event Player, Button(Ability 2)));
  • Event Player.Stage = 2;
  • Event Player.C = 12;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy In-World Text(Event Player.Effects[2]);
  • Skip If(Is Button Held(Event Player, Button(Primary Fire)) || Is Button Held(Event Player, Button(Secondary Fire)), True);
  • Skip(2);
  • Event Player.Stage = Null;
  • Abort;
  • }
  • }
  • rule("Sym use tp")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.StpID != Null;
  • Distance Between(Event Player.StpID.P, Eye Position(Event Player)) <= 2;
  • Throttle Of(Event Player) != Backward;
  • Event Player.StpID.P != Null;
  • }
  • actions
  • {
  • Teleport(Event Player, Event Player.StpID.O);
  • Wait(0.050, Ignore Condition);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Aqua), Event Player.StpID.P, 1);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Aqua), Event Player.StpID.P, 60);
  • Wait(False, Ignore Condition);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Aqua), Event Player.StpID.O, 1.500);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Aqua), Event Player.StpID.O, 80);
  • Event Player.StpID = Null;
  • Wait(True, Ignore Condition);
  • }
  • }
  • rule("Sym generate lost souls")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.MatchStatus == 1;
  • disabled Is Game In Progress == True;
  • disabled Global.MatchStatus == 1;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.F[Event Player.K] = Nearest Walkable Position(Vector(X Component Of(Position Of(Event Player)) + Random Integer(-50,
  • 50), Y Component Of(Position Of(Event Player)) + Random Integer(-20, 20), Z Component Of(Position Of(Event Player))
  • + Random Integer(-50, 50)));
  • Wait(True, Ignore Condition);
  • Loop If(Distance Between(Eye Position(Event Player), Event Player.F[Event Player.K]) <= 30);
  • Loop If(Distance Between(Eye Position(Event Player), Event Player.F[Event Player.K]) <= 5 + Global.MatchTime / 48);
  • Destroy Effect(Event Player.N[Event Player.K * 3]);
  • Destroy Effect(Event Player.N[Event Player.K * 3 + True]);
  • Destroy Icon(Event Player.N[Event Player.K * 3 + 2]);
  • Wait(0.050, Ignore Condition);
  • Create Effect(All Players(All Teams), Orb, Color(Aqua), Event Player.F[Event Player.K] + Vector(False, True, False), True, None);
  • Event Player.N[Event Player.K * 3] = Last Created Entity;
  • Wait(False, Ignore Condition);
  • Create Effect(All Players(All Teams), Bad Aura, Color(Blue), Event Player.F[Event Player.K] + Vector(False, True, False), 0.400,
  • None);
  • Event Player.N[Event Player.K * 3 + True] = Last Created Entity;
  • Create Icon(Event Player, Event Player.F[Event Player.K] + Vector(False, True, False), Ring Thick, None, Color(Aqua), True);
  • Event Player.N[Event Player.K * 3 + 2] = Last Created Entity;
  • Wait(0.050, Ignore Condition);
  • Skip If(Event Player.K >= 3, True);
  • Skip If(Event Player.K > 3, True);
  • Event Player.K += True;
  • Skip If(Event Player.K < 3, True);
  • Skip If(Event Player.K <= 3, True);
  • Event Player.K = Null;
  • Wait(15, Abort When False);
  • Wait(7.5 + Global.MatchTime / 120, Abort When False);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Sym collect lost soul #1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • First Of(Event Player.F) != Null;
  • Distance Between(Eye Position(Event Player), First Of(Event Player.F)) <= 2.500;
  • Event Player.D <= 5;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Good Explosion, Color(Aqua), First Of(Event Player.F), 1);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(Aqua), Event Player, 50);
  • Event Player.D += True;
  • Destroy Effect(First Of(Event Player.N));
  • Destroy Effect(Event Player.N[True]);
  • Destroy Icon(Event Player.N[2]);
  • Wait(0.050, Ignore Condition);
  • Small Message(Event Player, String("{0}: {1}", Custom String("Soul collected! Current souls"), Event Player.D));
  • Event Player.F[False] = Null;
  • Event Player.C = Null;
  • }
  • }
  • rule("Sym collect lost soul #2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Event Player.F[True] != Null;
  • Distance Between(Eye Position(Event Player), Event Player.F[True]) <= 2;
  • Event Player.D <= 5;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Good Explosion, Color(Aqua), Event Player.F[True], 1);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(Aqua), Event Player, 50);
  • Event Player.D += True;
  • Destroy Effect(Event Player.N[3]);
  • Destroy Effect(Event Player.N[4]);
  • Destroy Icon(Event Player.N[5]);
  • Wait(0.050, Ignore Condition);
  • Small Message(Event Player, String("{0}: {1}", Custom String("Soul collected! Current souls"), Event Player.D));
  • Event Player.F[True] = Null;
  • Event Player.C = Null;
  • }
  • }
  • rule("Sym collect lost soul #3")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Event Player.F[2] != Null;
  • Distance Between(Eye Position(Event Player), Event Player.F[2]) <= 2;
  • Event Player.D <= 5;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Good Explosion, Color(Aqua), Event Player.F[2], 1);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(Aqua), Event Player, 50);
  • Event Player.D += True;
  • Destroy Effect(Event Player.N[6]);
  • Destroy Effect(Event Player.N[7]);
  • Destroy Icon(Event Player.N[8]);
  • Wait(0.050, Ignore Condition);
  • Small Message(Event Player, String("{0}: {1}", Custom String("Soul collected! Current souls"), Event Player.D));
  • Event Player.F[2] = Null;
  • Event Player.C = Null;
  • }
  • }
  • rule("Sym collect lost soul #4")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Event Player.F[3] != Null;
  • Distance Between(Eye Position(Event Player), Event Player.F[3]) <= 2;
  • Event Player.D <= 5;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Good Explosion, Color(Aqua), Event Player.F[3], 1);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(Aqua), Event Player, 50);
  • Event Player.D += True;
  • Destroy Effect(Event Player.N[9]);
  • Destroy Effect(Event Player.N[10]);
  • Destroy Icon(Event Player.N[11]);
  • Wait(0.050, Ignore Condition);
  • Small Message(Event Player, String("{0}: {1}", Custom String("Soul collected! Current souls"), Event Player.D));
  • Event Player.F[3] = Null;
  • Event Player.C = Null;
  • }
  • }
  • rule("Sym set movement speed and gravity")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Event Player.D != Null;
  • Event Player.R2 == False;
  • Event Player.B < 2;
  • }
  • actions
  • {
  • Event Player.InitSpeed = 120 + Event Player.D * 1.667;
  • Set Gravity(Event Player, 100 - Event Player.D * 1.667);
  • Wait(0.250, Ignore Condition);
  • Skip If(Event Player.Slow > False, True);
  • Set Move Speed(Event Player, Event Player.InitSpeed + Event Player.SpeedBoost);
  • Skip If(Event Player.Slow <= False, True);
  • Set Move Speed(Event Player, Event Player.InitSpeed - Event Player.Slow);
  • Loop If Condition Is True;
  • Set Gravity(Event Player, 100);
  • Set Move Speed(Event Player, Event Player.InitSpeed);
  • }
  • }
  • rule("Sym souls can't go under 0")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Event Player.D < Null;
  • }
  • actions
  • {
  • Event Player.D = Null;
  • }
  • }
  • rule("Sym ability 2")
  • rule("Sym enable ability 1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Event Player.D > Null;
  • Is True For Any(Remove From Array(All Living Players(All Teams), Event Player), Is In View Angle(Event Player, Eye Position(Current Array Element), 15)
  • && Distance Between(Eye Position(Event Player), Eye Position(Current Array Element)) <= 40 && Is In Line of Sight(Eye Position(
  • Event Player), Eye Position(Current Array Element), Barriers Do Not Block LOS)) == True;
  • Event Player.C2 <= 0;
  • }
  • actions
  • {
  • Set Ability 1 Enabled(Event Player, True);
  • Event Player.W = First Of(Sorted Array(Filtered Array(Remove From Array(All Living Players(All Teams), Event Player), Distance Between(Eye Position(Event Player),
  • Eye Position(Current Array Element)) <= 40 && Is In View Angle(Event Player, Current Array Element, 15) && Is In Line of Sight(
  • Eye Position(Event Player), Eye Position(Current Array Element), Barriers Do Not Block LOS)), Dot Product(Eye Position(
  • Event Player), Eye Position(Current Array Element))));
  • Skip If(Entity Exists(Event Player.Effects[8]), 4);
  • Create In-World Text(Event Player, Custom String("Siphon soul"), Eye Position(Event Player.W) + Vector(False, 0.5, False), 1.250,
  • Clip Against Surfaces, Visible To Position and String, Color(Aqua), Default Visibility);
  • Event Player.Effects[7] = Last Text ID;
  • Create Effect(Event Player, Bad Aura, Color(Aqua), Eye Position(Event Player.W), 0.250,
  • Visible To Position and Radius);
  • Event Player.Effects[8] = Last Created Entity;
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • Destroy In-World Text(Event Player.Effects[7]);
  • Destroy Effect(Event Player.Effects[8]);
  • Event Player.W = Null;
  • Set Ability 1 Enabled(Event Player, False);
  • }
  • }
  • rule("Sym ability 1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • disabled Event Player.D > Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Is True For Any(All Living Players(All Teams), Is In View Angle(Event Player, Eye Position(Current Array Element), 25)
  • disabled Is True For Any(All Living Players(All Teams), Is In View Angle(Event Player, Eye Position(Current Array Element), 25)
  • && Distance Between(Eye Position(Event Player), Eye Position(Current Array Element)) <= 40 && Is In Line of Sight(Eye Position(
  • Event Player), Eye Position(Current Array Element), Barriers Do Not Block LOS)) == True;
  • Event Player.C2 <= 0;
  • Event Player.W != Null;
  • }
  • actions
  • {
  • Event Player.W = First Of(Sorted Array(Filtered Array(All Living Players(All Teams), Distance Between(Eye Position(Event Player),
  • Wait(0.016, Ignore Condition);
  • Cancel Primary Action(Event Player);
  • Set Ability 1 Enabled(Event Player, False);
  • disabled Event Player.W = First Of(Sorted Array(Filtered Array(All Living Players(All Teams), Distance Between(Eye Position(Event Player),
  • Eye Position(Current Array Element)) <= 40 && Is In View Angle(Event Player, Current Array Element, 25) && Is In Line of Sight(
  • Eye Position(Event Player), Eye Position(Current Array Element), Barriers Do Not Block LOS)), Dot Product(Eye Position(
  • Event Player), Eye Position(Current Array Element))));
  • Wait(False, Ignore Condition);
  • Loop If(Event Player.W == Event Player);
  • If(Event Player.W.IsHuman == True);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Aqua), Event Player.W, 1);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(Aqua), Event Player.W, 50);
  • Small Message(Event Player, Custom String("Soul siphoned!"));
  • Event Player.W.Slow = Null;
  • Clear Status(Event Player.W, Hacked);
  • Clear Status(Event Player.W, Knocked Down);
  • Clear Status(Event Player.W, Stunned);
  • Clear Status(Event Player.W, Rooted);
  • Event Player.W.BarrierHealth += 25;
  • Skip If(Event Player.W.BarrierTime > 2, True);
  • Event Player.W.BarrierTime = 2;
  • Else If(Event Player.W.IsHuman == False);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Aqua), Event Player.W, 1);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Aqua), Event Player.W, 50);
  • Small Message(Event Player, Custom String("Soul siphoned!"));
  • Damage(Event Player.W, Event Player, 40);
  • Event Player.W.Freeze += 100;
  • Skip If(Event Player.W.FreezeTimer > 4, 1);
  • Event Player.W.FreezeTimer += 4;
  • Damage(Event Player.W, Event Player, 10);
  • Skip If(Event Player.W.Svulnerable > 30, 1);
  • Event Player.W.Svulnerable = 30;
  • Skip If(Event Player.W.SvulnerableTime > 3, 1);
  • Event Player.W.SvulnerableTime = 3;
  • End;
  • Event Player.D -= True;
  • Event Player.W = Null;
  • Event Player.C2 = 2.500;
  • Chase Player Variable At Rate(Event Player, C2, False, True, Destination and Rate);
  • }
  • }
  • rule("Sym use ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Event Player.B >= True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • }
  • actions
  • {
  • Event Player.R2 = True;
  • Disallow Button(Event Player, Button(Primary Fire));
  • Disallow Button(Event Player, Button(Secondary Fire));
  • Disallow Button(Event Player, Button(Melee));
  • Set Ultimate Ability Enabled(Event Player, False);
  • Set Ultimate Charge(Event Player, False);
  • Start Heal Over Time(Event Player, Event Player, 6, 20);
  • Event Player.Effects[11] = Last Heal Over Time ID;
  • Event Player.InitSpeed = 75;
  • Event Player.F2 = True;
  • Wait(0.150, Ignore Condition);
  • Create Effect(All Players(All Teams), Ring, Color(Aqua), Position Of(Event Player), 3 + 10 * Round To Integer(Event Player.R,
  • Down), Visible To Position and Radius);
  • Event Player.Effects[7] = Last Created Entity;
  • Create Effect(All Players(All Teams), Light Shaft, Color(Aqua), Position Of(Event Player), 3 + 10 * Round To Integer(
  • Event Player.R, Down), Visible To Position and Radius);
  • Event Player.Effects[8] = Last Created Entity;
  • Create Effect(All Players(All Teams), Good Aura Sound, Color(Aqua), Position Of(Event Player), 600 + 100 * Round To Integer(
  • Event Player.R, Down), Visible To Position and Radius);
  • Event Player.Effects[9] = Last Created Entity;
  • Create Effect(All Players(All Teams), Good Aura, Color(Aqua), Eye Position(Event Player), 0.500, Visible To Position and Radius);
  • Event Player.Effects[10] = Last Created Entity;
  • Wait(False, Ignore Condition);
  • Call Subroutine(Sult);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Aqua), Position Of(Event Player), 6 + 20 * Round To Integer(
  • Event Player.R, Down));
  • Play Effect(All Players(All Teams), Good Pickup Effect, Color(Aqua), Position Of(Event Player), 6);
  • Clear Status(Event Player, Phased Out);
  • Destroy Effect(Event Player.Effects[7]);
  • Destroy Effect(Event Player.Effects[8]);
  • Destroy Effect(Event Player.Effects[9]);
  • Destroy Effect(Event Player.Effects[10]);
  • If(Event Player.B == 2 && Is Button Held(Event Player, Button(Interact)));
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Aqua), Position Of(Event Player), 6 + 20 * Round To Integer(
  • Event Player.R, Down));
  • Event Player.B = 4;
  • "eventPlayer.O2 = [player for player in getDeadPlayers(Team.ALL) if distance(eventPlayer.getEyePosition(), player.getEyePosition()) <= 3 + floor(eventPlayer.R) * 10 and player.IsHuman == true and player.InfectTimer > 0]"
  • Event Player.P2 = Filtered Array(All Living Players(All Teams), Distance Between(Eye Position(Event Player), Eye Position(
  • Current Array Element)) <= 3 + Round To Integer(Event Player.R, Down) * 10 && Current Array Element.IsHuman == True);
  • Big Message(All Players(All Teams), Custom String("{0} {1} {2}", Hero Icon String(Hero(Symmetra)), Custom String("REINCARNATED!"),
  • Hero Icon String(Hero(Symmetra))));
  • End;
  • Wait(0.050, Ignore Condition);
  • Skip If(Event Player.B >= 4, 3);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Aqua), Position Of(Event Player), 6 + 20 * Round To Integer(
  • Event Player.R, Down));
  • Event Player.B = 3;
  • Event Player.P2 = Filtered Array(All Living Players(All Teams), Distance Between(Eye Position(Event Player), Eye Position(
  • Current Array Element)) <= 3 + Round To Integer(Event Player.R, Down) * 10 && Current Array Element.IsHuman == False);
  • Big Message(All Players(All Teams), Custom String("{0} {1} {2}", Hero Icon String(Hero(Symmetra)), Custom String("OBLIVIATED!"),
  • Hero Icon String(Hero(Symmetra))));
  • Wait(0.200, Ignore Condition);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Allow Button(Event Player, Button(Primary Fire));
  • Allow Button(Event Player, Button(Secondary Fire));
  • Allow Button(Event Player, Button(Melee));
  • Event Player.InitSpeed = 120;
  • Set Move Speed(Event Player, Event Player.InitSpeed);
  • Stop Heal Over Time(Event Player.Effects[11]);
  • Event Player.R2 = False;
  • }
  • }
  • rule("Sym ult sub")
  • {
  • event
  • {
  • Subroutine;
  • Sult;
  • }
  • actions
  • {
  • If(Event Player.B == 1);
  • Skip If(Event Player.R != Round To Integer(Event Player.R, Down), True);
  • Small Message(Event Player, String("{0}: {1}", Custom String("Obliviate charging. Souls left"), Event Player.D));
  • Else If(Event Player.B == 2);
  • Skip If(Event Player.R != Round To Integer(Event Player.R, Down), True);
  • Small Message(Event Player, String("{0}: {1}", Custom String("Obliviate charging (press F to reincarnate instead). Souls left"),
  • Event Player.D));
  • End;
  • Event Player.R += 0.100;
  • Wait(0.100, Ignore Condition);
  • Skip If(Event Player.F2 == True, 1);
  • Skip If(Event Player.B == 2 && Is Button Held(Event Player, Button(Interact)), 2);
  • Skip If(Is Dead(Event Player), True);
  • Loop If(Event Player.D > False && !Is Button Held(Event Player, Button(Ultimate)));
  • }
  • }
  • rule("Sym ult allow early cancelation")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Event Player.R2 > 0;
  • }
  • actions
  • {
  • Wait Until(Is Button Held(Event Player, Button(Ultimate)) == False, 6);
  • Event Player.F2 = False;
  • }
  • }
  • rule("Sym ult obliviate effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Event Player.B == 3;
  • }
  • actions
  • {
  • Skip If(Event Player.B == 5, 2);
  • Event Player.P2 = Sorted Array(Event Player.P2, Health(Current Array Element));
  • Event Player.B = 5;
  • Create Beam Effect(All Players(All Teams), Good Beam, Position Of(Event Player.P2[Event Player.N2]), Position Of(
  • Event Player.P2[Event Player.N2]) + Up * 150, Color(Aqua), Visible To Position and Radius);
  • Event Player.Effects[11] = Last Created Entity;
  • Wait(0.150, Ignore Condition);
  • Damage(Event Player.P2[Event Player.N2], Null, Health(Event Player.P2[Event Player.N2]) <= 200 ? 1000 : Max Health(
  • Event Player.P2[Event Player.N2]) * 0.500);
  • Play Effect(All Players(All Teams), Good Pickup Effect, Color(Aqua), Position Of(Event Player.P2[Event Player.N2]), 2);
  • Wait(0.150, Ignore Condition);
  • Destroy Effect(Event Player.Effects[11]);
  • Event Player.N2 += True;
  • Event Player.R -= True;
  • Loop If(Event Player.R >= True);
  • Event Player.B = Null;
  • Event Player.R = Null;
  • Event Player.N2 = Null;
  • }
  • }
  • rule("Sym ult reincarnate effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Event Player.B == 4;
  • }
  • actions
  • {
  • Event Player.O2 = Random Value In Array(Filtered Array(All Dead Players(All Teams), Distance Between(Eye Position(Event Player),
  • Eye Position(Current Array Element)) <= 3 + 10 * Round To Integer(Event Player.R, Down)
  • && Current Array Element.IsHuman == True && Current Array Element.InfectTimer > False));
  • Skip If(Event Player.B == 6, 3);
  • Event Player.P2.BarrierHealth += 35;
  • Filtered Array(Event Player.P2, Current Array Element.BarrierTime < 2.500).BarrierTime = 2.500;
  • Event Player.B = 6;
  • Wait(False, Ignore Condition);
  • Create Beam Effect(All Players(All Teams), Good Beam, Position Of(Event Player.O2), Position Of(Event Player.O2) + Up * 150, Color(
  • Aqua), Visible To Position and Radius);
  • Event Player.Effects[11] = Last Created Entity;
  • Wait(0.050, Ignore Condition);
  • Resurrect(Event Player.O2);
  • Play Effect(All Players(All Teams), Good Pickup Effect, Color(Aqua), Position Of(Event Player.O2), 2);
  • Destroy Effect(First Of(Event Player.O2.Effects));
  • Destroy In-World Text(Event Player.O2.Huds[3]);
  • Destroy In-World Text(Event Player.O2.Huds[4]);
  • Wait(0.050, Ignore Condition);
  • Event Player.O2.BarrierHealth += 50;
  • Skip If(Event Player.O2.BarrierTime > 3, True);
  • Event Player.W.BarrierTime = 3;
  • Event Player.O2.InfectTimer = Null;
  • Event Player.O2.InfectPosition = Null;
  • Wait(0.100, Ignore Condition);
  • Destroy Effect(Event Player.Effects[11]);
  • Event Player.R -= 2;
  • Loop If(Event Player.R >= 2);
  • Event Player.B = Null;
  • Event Player.R = Null;
  • Event Player.O2 = Null;
  • }
  • }
  • rule("Sym ult deplete souls")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Event Player.B <= 2;
  • Event Player.R2 == True;
  • }
  • actions
  • {
  • Wait(0.166, Abort When False);
  • Event Player.D -= True;
  • Wait(0.834, Abort When False);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Ashe init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Ashe;
  • }
  • actions
  • {
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Destroy HUD Text(Event Player.Huds[2]);
  • Set Max Health(Event Player, 50);
  • Set Damage Dealt(Event Player, 100);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Disallow Button(Event Player, Button(Ultimate));
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.InitSpeed = 120;
  • Event Player.IsHuman = True;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Reaper), Button(Ability 1)), Custom String("Passive: Chaotic nature"), Null,
  • Left, 1, Custom Color(150, 15, 15, 255), Custom Color(150, 15, 15, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Being on fire grants\r\n a damage/speed boost."), Null, Left, 2, Custom Color(150, 15, 15, 255), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Ashe), Button(Ability 2)), Custom String("Ultimate: Maniac"), Null, Left, 3,
  • Custom Color(150, 15, 15, 255), Custom Color(150, 15, 15, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Reset dynamite's cooldown.\r\n Kills wil reset the cooldown\r\n and give some ammo, and \r\n extend the duration of \r\n this buff."),
  • "Reset cooldowns.\r\n Kills wil reset dynamite's cooldown,\r\n give some ammo and \r\n extend the duration of \r\n this buff."),
  • Null, Left, 4, Custom Color(150, 15, 15, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Ashe), Button(Ability 1)), Custom String("Ability 1: Coach Gun"), Null,
  • Left, 5, Custom Color(150, 15, 15, 255), Custom Color(150, 15, 15, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Additionally slows\r\n enemies hit."), Null, Left, 6, Custom Color(150, 15, 15, 255), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Left, 5, Custom Color(150, 15, 15, 255), Custom Color(150, 15, 15, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Disrupts enemies hit."), Null, Left, 6, Custom Color(150, 15, 15, 255), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Event Player.InitDamage = 100;
  • Event Player.StrongMelee = False;
  • Event Player.StrongMelee = False;
  • Event Player.InitHp = 100;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Ashe passive")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Ashe;
  • }
  • conditions
  • {
  • Has Status(Event Player, Burning) == True;
  • }
  • actions
  • {
  • Set Damage Dealt(Event Player, 166.667);
  • Event Player.SpeedBoost += 20;
  • Call Subroutine(IsCondTrue);
  • Set Damage Dealt(Event Player, 100);
  • Event Player.SpeedBoost -= 20;
  • }
  • }
  • rule("ashe ability 1 slow")
  • rule("ashe ability 1 disrupt")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == False;
  • Hero Of(Attacker) == Hero(Ashe);
  • Event Ability == Button(Ability 1);
  • Event Damage >= 10;
  • Event Damage >= 18;
  • }
  • actions
  • {
  • Event Player.Slow = Event Player.Slow + Event Damage * 1.15;
  • Event Player.Aslow = Event Player.Aslow + Event Damage * 1.155;
  • Wait(1, Restart When True);
  • Event Player.Slow = Event Player.Slow - (Event Player.Aslow - 10);
  • Wait(0.016, Ignore Condition);
  • Event Player.Aslow = 0;
  • Set Status(Event Player, Attacker, Stunned, 0.100);
  • }
  • }
  • rule("Ashe no self damage")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • Ashe;
  • }
  • conditions
  • {
  • Attacker == Event Player;
  • }
  • actions
  • {
  • Heal(Event Player, Null, Event Damage);
  • }
  • }
  • rule("Ashe enable ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Ashe;
  • }
  • conditions
  • {
  • Ultimate Charge Percent(Event Player) == 100;
  • }
  • actions
  • {
  • Call Subroutine(ultCharged);
  • }
  • }
  • rule("Ashe use ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Ashe;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Event Player.B == 1;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • }
  • actions
  • {
  • Set Ability Cooldown(Event Player, Button(Ability 2), False);
  • Set Ultimate Ability Enabled(Event Player, False);
  • Set Ultimate Charge(Event Player, False);
  • Set Ability Cooldown(Event Player, Button(Ability 2), False);
  • Set Ability Cooldown(Event Player, Button(Ability 1), False);
  • Event Player.B = 2;
  • Event Player.R = 4;
  • Chase Player Variable At Rate(Event Player, R, False, True, Destination and Rate);
  • Create Effect(All Players(All Teams), Bad Aura, Color(Red), Position Of(Event Player), 1.250, Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Create Effect(All Players(All Teams), Bad Aura Sound, Color(Red), Position Of(Event Player), 800, Visible To Position and Radius);
  • Event Player.Effects[True] = Last Created Entity;
  • Create Progress Bar HUD Text(Event Player, Event Player.R * 16.667, Custom String("Maniac"), Top, 10, Custom Color(150, 15, 15,
  • 255), Custom Color(150, 15, 15, 255), Visible To Values and Color, Default Visibility);
  • Event Player.Effects[2] = Last Text ID;
  • 255), Custom Color(150, 15, 15, 255), Visible To Values and Color, Default Visibility);
  • Event Player.Effects[2] = Last Text ID;
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 150);
  • Small Message(Event Player, Custom String("KILL EVERYTHING!"));
  • Call Subroutine(BRult);
  • Event Player.B = Null;
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Effect(Event Player.Effects[True]);
  • Destroy Progress Bar HUD Text(Event Player.Effects[2]);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Disallow Button(Event Player, Button(Ultimate));
  • }
  • }
  • rule("ashe ult cd reset, gain ammo and extend duration upon final blow")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • All;
  • Ashe;
  • }
  • conditions
  • {
  • Event Player.R > Null;
  • }
  • actions
  • {
  • Set Ammo(Event Player, 0, Ammo(Event Player, 0) + 3);
  • Set Ammo(Event Player, 0, Ammo(Event Player, 0) + 3);
  • Set Ability Cooldown(Event Player, Button(Ability 2), False);
  • If(Event Player.R > 3);
  • Event Player.R = 6;
  • End;
  • Event Player.R = 6;
  • End;
  • If(Event Player.R <= 3);
  • Event Player.R += 3;
  • Event Player.R += 3;
  • End;
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Red), Event Player, 6);
  • }
  • }
  • rule("Brig init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Brigitte;
  • }
  • actions
  • {
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Destroy HUD Text(Event Player.Huds[2]);
  • Set Max Health(Event Player, 62.500);
  • Set Damage Dealt(Event Player, 100);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Disallow Button(Event Player, Button(Ultimate));
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.InitSpeed = 120;
  • Event Player.IsHuman = True;
  • Create HUD Text(Event Player, Icon String(Stop), Custom String("ability 1: Taunt"), String("{0}: {1}", Custom String("Cooldown"),
  • Event Player.C), Left, 1, Custom Color(220, 140, 30, 255), Custom Color(220, 140, 30, 255), Color(White),
  • Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Taunt nearby zombies,\r\n slowing them and forcing \r\n them to walk to you.\r\n They can still attack."), Null, Left, 2,
  • Custom Color(220, 140, 30, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Brigitte), Button(Ultimate)), Custom String("Ultimate: retribution"),
  • String("{0}: {1}", Custom String("Stacks"), Event Player.B), Left, 3, Custom Color(220, 140, 30, 255), Custom Color(220, 140,
  • 30, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Stun all zombies in\r\n a zone around you.\r\n Ult can be charged\r\n and stored as stacks\r\n 3 times."), Null, Left, 4,
  • Custom Color(220, 140, 30, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.InitDamage = 100;
  • Stop Damage Modification(First Of(Event Player.MiscIDs));
  • Event Player.InitHp = 125;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Brig shift more damage")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Brigitte;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Set Damage Dealt(Event Player, 150);
  • Call Subroutine(IsCondTrue);
  • Set Damage Dealt(Event Player, 100);
  • }
  • }
  • rule("Brig ability 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Brigitte;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Event Player.C == Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • }
  • actions
  • {
  • Event Player.C = 16;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • Set Primary Fire Enabled(Event Player, False);
  • Set Ability 1 Enabled(Event Player, False);
  • Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Is In Line of Sight(Eye Position(Event Player),
  • Current Array Element, Barriers Do Not Block LOS) && Distance Between(Eye Position(Event Player), Current Array Element) <= 11)
  • .BRTaunt = Event Player;
  • Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Is In Line of Sight(Eye Position(Event Player),
  • Current Array Element, Barriers Do Not Block LOS) && Distance Between(Eye Position(Event Player), Current Array Element) <= 11)
  • .BRTauntTime += 1.500;
  • Communicate(Event Player, Hello);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Yellow), Position Of(Event Player), 16);
  • Wait(1.500, Ignore Condition);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Ability 1 Enabled(Event Player, True);
  • }
  • }
  • rule("Brig ability 2 effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.BRTauntTime > Null;
  • Is Alive(Event Player.BRTaunt) == True;
  • }
  • actions
  • {
  • Small Message(Event Player, Custom String("{0} {1} {2}", Hero Icon String(Hero(Brigitte)), Custom String("Taunted!"),
  • Hero Icon String(Hero(Brigitte))));
  • Start Facing(Event Player, Direction Towards(Eye Position(Event Player), Eye Position(Event Player.BRTaunt)), 500, To World,
  • Direction and Turn Rate);
  • Start Forcing Throttle(Event Player, True, True, False, False, False, False);
  • Chase Player Variable At Rate(Event Player, BRTauntTime, False, True, Destination and Rate);
  • Set Move Speed(Event Player, (Event Player.InitSpeed - Event Player.Slow) * 0.400);
  • Call Subroutine(IsCondTrue);
  • Stop Forcing Throttle(Event Player);
  • Stop Facing(Event Player);
  • Event Player.BRTauntTime = Null;
  • Set Move Speed(Event Player, Event Player.InitSpeed);
  • }
  • }
  • rule("Brig ability 2 play effects")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.BRTauntTime > Null;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Yellow), Position Of(Event Player), 4);
  • Wait(0.250, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Brig stack ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Brigitte;
  • }
  • conditions
  • {
  • Ultimate Charge Percent(Event Player) == 100;
  • Event Player.B < 3;
  • }
  • actions
  • {
  • Set Ultimate Charge(Event Player, False);
  • Skip If(Event Player.B < 2, True);
  • Set Ultimate Charge(Event Player, False);
  • Small Message(Event Player, Custom String("Added an ultimate stack!"));
  • Play Effect(Event Player, Buff Impact Sound, Color(White), Event Player, 75);
  • Event Player.B += True;
  • }
  • }
  • rule("Brig use ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Brigitte;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Event Player.B > Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.P == Null;
  • }
  • actions
  • {
  • Skip If(Event Player.B < 2, True);
  • Set Ultimate Charge(Event Player, False);
  • Event Player.P = Nearest Walkable Position(Position Of(Event Player));
  • Wait(0.100, Ignore Condition);
  • Create Effect(All Players(All Teams), Ring, Color(Yellow), Event Player.P, 8, Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Create Effect(All Players(All Teams), Light Shaft, Color(Yellow), Event Player.P, Event Player.R * 4,
  • Visible To Position and Radius);
  • Event Player.Effects[True] = Last Created Entity;
  • Create Effect(All Players(All Teams), Good Aura Sound, Color(Yellow), Event Player.P, 10000 - Event Player.R * 10000,
  • Visible To Position and Radius);
  • Event Player.Effects[2] = Last Created Entity;
  • Event Player.R = 2;
  • Chase Player Variable At Rate(Event Player, R, False, True, Destination and Rate);
  • Call Subroutine(BRult);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Yellow), Event Player.P, 16);
  • Play Effect(All Players(All Teams), Good Pickup Effect, Color(Yellow), Event Player.P, 16);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(Yellow), Event Player.P, 150);
  • Set Status(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Position Of(
  • Current Array Element), Event Player.P) <= 8 && Is In Line of Sight(Eye Position(Current Array Element), Event Player.P,
  • Barriers Do Not Block LOS)), Event Player, Stunned, 2.500);
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Effect(Event Player.Effects[True]);
  • Destroy Effect(Event Player.Effects[2]);
  • Event Player.B -= True;
  • Event Player.P = Null;
  • }
  • }
  • rule("Brig ult sub")
  • {
  • event
  • {
  • Subroutine;
  • BRult;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Loop If(Event Player.R > False);
  • }
  • }
  • rule("Sigma init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sigma;
  • }
  • actions
  • {
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Destroy HUD Text(Event Player.Huds[2]);
  • Set Max Health(Event Player, 31.125);
  • Set Damage Dealt(Event Player, 100);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Disallow Button(Event Player, Button(Ultimate));
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.InitSpeed = 120;
  • Event Player.IsHuman = True;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Lúcio), Button(Secondary Fire)), Custom String(
  • "Secondary fire: Time vortex"), String("{0}: {1}", Custom String("Cooldown"), Event Player.C), Left, 1, Custom Color(0, 60,
  • 215, 255), Custom Color(0, 60, 215, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Slow down time for\r\n a short duration."), Null, Left, 2, Custom Color(0, 60, 215, 255), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Sigma), Button(Ability 1)), Custom String("Ability 1: Gravity well"), Null,
  • Left, 3, Custom Color(0, 60, 215, 255), Custom Color(0, 60, 215, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Gain a small speedboost. \r\n Pull zombies towards\r\n you and stuns them,\r\n but release them when \r\n they get too close."), Null, Left, 4,
  • Custom Color(0, 60, 215, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • "Gain a small speedboost. \r\n Pull zombies towards\r\n you and stuns them,\r\n but release them when \r\n they get too close."),
  • Null, Left, 4, Custom Color(0, 60, 215, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.InitSpeed = 120;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Sigma), Button(Ability 2)), Custom String("Ultimate: Master of reality"),
  • Null, Left, 5, Custom Color(0, 60, 215, 255), Custom Color(0, 60, 215, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Select a location.\r\n After a brief moment,\r\n a meteor slams in that\r\n location, dealing\r\n massive damage to\r\n zombies."),
  • Null, Left, 6, Custom Color(0, 60, 215, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Event Player.InitDamage = 100;
  • Event Player.StrongMelee = True;
  • Event Player.StrongMelee = True;
  • Event Player.InitHp = 125;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Sigma ability 1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sigma;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Is In Line of Sight(Eye Position(Event Player),
  • Eye Position(Current Array Element), Barriers Do Not Block LOS) && Distance Between(Position Of(Event Player), Position Of(
  • Current Array Element)) > 5 && Distance Between(Position Of(Event Player), Position Of(Current Array Element)) <= 15)
  • .SIGPull = Event Player;
  • Wait(0.100, Ignore Condition);
  • Loop If Condition Is True;
  • Filtered Array(All Players(All Teams), Current Array Element.SIGPull == Event Player).SIGPull = Null;
  • }
  • }
  • rule("Sigma ability 1 speedboost")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sigma;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.SpeedBoost = Event Player.SpeedBoost + 6;
  • Event Player.SpeedBoost = Event Player.SpeedBoost + 6;
  • Wait Until(Is Using Ability 1(Event Player) == False, 5);
  • Event Player.SpeedBoost = Event Player.SpeedBoost - 6;
  • Event Player.SpeedBoost = Event Player.SpeedBoost - 6;
  • }
  • }
  • rule("Sigma ability 1 effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.SIGPull != Null;
  • Is Alive(Event Player.SIGPull) == True;
  • Distance Between(Position Of(Event Player.SIGPull), Position Of(Event Player)) > 6;
  • Distance Between(Position Of(Event Player.SIGPull), Position Of(Event Player)) <= 15;
  • }
  • actions
  • {
  • Set Status(Event Player, Event Player.SIGPull, Stunned, 5);
  • Damage(Event Player, Event Player.SIGPull, 2.500);
  • Apply Impulse(Event Player, Direction Towards(Position Of(Event Player), Eye Position(Event Player.SIGPull)), 7.500, To World,
  • Incorporate Contrary Motion);
  • Set Gravity(Event Player, 50);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Blue), Event Player, 3);
  • Wait(0.250, Ignore Condition);
  • Loop If Condition Is True;
  • Set Gravity(Event Player, 100);
  • Clear Status(Event Player, Stunned);
  • }
  • }
  • rule("Sigma ability 2 less proj. speed")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sigma;
  • }
  • conditions
  • {
  • Is Using Ability 2(Event Player) == True;
  • }
  • actions
  • {
  • Set Projectile Speed(Event Player, 100);
  • Call Subroutine(IsCondTrue);
  • Set Projectile Speed(Event Player, 140);
  • }
  • }
  • rule("sigma secondary fire")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sigma;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Secondary Fire)) == True;
  • Event Player.C == Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Global.MatchStatus == 1;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.C = 14;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Blue), Event Player, 80);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(White), Event Player, 200);
  • Set Slow Motion(40);
  • Wait(True, Ignore Condition);
  • Set Slow Motion(100);
  • }
  • }
  • rule("Sigma enable ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sigma;
  • }
  • conditions
  • {
  • Ultimate Charge Percent(Event Player) == 100;
  • }
  • actions
  • {
  • Call Subroutine(ultCharged);
  • }
  • }
  • rule("Sigma ult setup")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sigma;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Event Player.B == 1;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.Stage == Null;
  • }
  • actions
  • {
  • Create Effect(Event Player, Ring, Color(Blue), Nearest Walkable Position(Event Player.O), 8, Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Create In-World Text(Event Player, Custom String("{0} {1} {2}", Icon String(Arrow: Down), Custom String(
  • "Press Q again to build, m1 or m2 to cancel"), Icon String(Arrow: Down)), Event Player.O + Vector(False, True, False), 1.500,
  • Clip Against Surfaces, Visible To Position and String, Color(Blue), Default Visibility);
  • Event Player.Effects[True] = Last Text ID;
  • Event Player.Stage = 1;
  • Wait(0.100, Ignore Condition);
  • Call Subroutine(SIGult);
  • }
  • }
  • rule("Sigma chace O")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sigma;
  • }
  • conditions
  • {
  • Event Player.Stage == 1;
  • }
  • actions
  • {
  • Event Player.O = Nearest Walkable Position(Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
  • + Facing Direction Of(Event Player) * 20, Null, Event Player, True));
  • Wait(False, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Sigma ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sigma;
  • }
  • conditions
  • {
  • Event Player.Stage == 2;
  • }
  • actions
  • {
  • Set Ultimate Ability Enabled(Event Player, False);
  • Set Ultimate Charge(Event Player, False);
  • Event Player.P = Event Player.O + Up * 1000;
  • Wait(0.100, Ignore Condition);
  • Create Effect(All Players(All Teams), Orb, Color(Aqua), Event Player.P, 10, Visible To Position and Radius);
  • Event Player.Effects[2] = Last Created Entity;
  • Create Effect(All Players(All Teams), Bad Aura, Color(Blue), Event Player.P, 8, Visible To Position and Radius);
  • Event Player.Effects[3] = Last Created Entity;
  • Chase Player Variable Over Time(Event Player, P, Event Player.O, 3, Destination and Duration);
  • Create Effect(All Players(All Teams), Energy Sound, Color(Blue), Event Player.P, 1000, Visible To Position and Radius);
  • Event Player.Effects[4] = Last Created Entity;
  • Event Player.R = 3;
  • Chase Player Variable At Rate(Event Player, R, False, True, Destination and Rate);
  • Call Subroutine(SIGult2);
  • Damage(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Position Of(
  • Current Array Element), Event Player.O) <= 8 && Is In Line of Sight(Event Player.O, Eye Position(Current Array Element),
  • Barriers Do Not Block LOS)), Event Player, 1000);
  • Destroy Effect(Event Player.Effects[2]);
  • Destroy Effect(Event Player.Effects[3]);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Event Player.Stage = Null;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Blue), Event Player.O, 16);
  • Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Blue), Event Player.O, 8);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Blue), Event Player.O, 200);
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Aqua), Event Player.O, 8);
  • Wait(0.500, Ignore Condition);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Destroy Effect(Event Player.Effects[4]);
  • Event Player.B = Null;
  • }
  • }
  • rule("Sigma ult sub")
  • {
  • event
  • {
  • Subroutine;
  • SIGult;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Skip If(Is Button Held(Event Player, Button(Primary Fire)) || Is Button Held(Event Player, Button(Secondary Fire)), True);
  • Loop If(!Is Button Held(Event Player, Button(Ultimate)));
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy In-World Text(Event Player.Effects[True]);
  • Event Player.Stage = 2;
  • Skip If(Is Button Held(Event Player, Button(Primary Fire)) || Is Button Held(Event Player, Button(Secondary Fire)), True);
  • Skip(2);
  • Event Player.Stage = Null;
  • Abort;
  • }
  • }
  • rule("Sigma ult sub 2")
  • {
  • event
  • {
  • Subroutine;
  • SIGult2;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Blue), Event Player.O, 16 - Event Player.R * 5.333);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Blue), Event Player.O, 150 - Event Player.R * 50);
  • Loop If(Event Player.R > False);
  • }
  • }
  • rule("Rein init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reinhardt;
  • }
  • actions
  • {
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Set Max Health(Event Player, 27.273);
  • Set Max Health(Event Player, 28);
  • Set Damage Dealt(Event Player, 100);
  • Set Move Speed(Event Player, 110);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.InitSpeed = 110;
  • Event Player.IsHuman = True;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Brigitte), Button(Ultimate)), Custom String("Passive: Glorious combat"),
  • Null, Left, 1, Custom Color(255, 155, 5, 255), Custom Color(255, 155, 5, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Final blows earned in\r\n close quarters grants\r\n a speedboost and\r\n heals you for 50%\r\n of the victim's\r\n max health."),
  • Null, Left, 2, Custom Color(255, 155, 5, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Reinhardt), Button(Ability 2)), Custom String(
  • "Ability 2: righteous strike"), Null, Left, 3, Custom Color(255, 155, 5, 255), Custom Color(255, 155, 5, 255), Color(White),
  • Visible To and String, Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Gains more damage\r\n the longer it travels"), Null, Left, 4, Custom Color(255, 155, 5, 255), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.InitDamage = 100;
  • Stop Damage Modification(First Of(Event Player.MiscIDs));
  • Event Player.InitHp = 140;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Rein passive")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • All;
  • Reinhardt;
  • }
  • conditions
  • {
  • Distance Between(Eye Position(Event Player), Eye Position(Victim)) <= 8;
  • }
  • actions
  • {
  • Heal(Event Player, Event Player, Max Health(Victim) * 0.500);
  • Play Effect(All Players(All Teams), Good Pickup Effect, Color(Orange), Position Of(Event Player), 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(Orange), Event Player, 75);
  • Skip If(Entity Exists(First Of(Event Player.Effects)), 5);
  • Event Player.SpeedBoost += 25;
  • Create Effect(All Players(All Teams), Sparkles, Color(Orange), Event Player, 2, Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Create Effect(All Players(All Teams), Beacon Sound, Color(Orange), Event Player, 800, Visible To Position and Radius);
  • Event Player.Effects[True] = Last Created Entity;
  • Wait(3, Restart When True);
  • Skip If(Event Player.SpeedBoost < 25, True);
  • Event Player.SpeedBoost -= 25;
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Effect(Event Player.Effects[True]);
  • }
  • }
  • rule("Rein increase ability 2 damage")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reinhardt;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == False;
  • Is Firing Primary(Event Player) == False;
  • Is Meleeing(Event Player) == False;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.D == Null;
  • }
  • actions
  • {
  • Chase Player Variable At Rate(Event Player, D, 12, 1.500, Destination and Rate);
  • Wait(0.250, Ignore Condition);
  • Loop If(Event Player.D < 12);
  • Stop Chasing Player Variable(Event Player, D);
  • Event Player.D = Null;
  • }
  • }
  • rule("Rein ability 2 on deal extra damage")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Hero Of(Attacker) == Hero(Reinhardt);
  • Event Ability == Button(Ability 2);
  • }
  • actions
  • {
  • Damage(Event Player, Attacker, Event Damage * Attacker.D - Event Damage);
  • }
  • }
  • rule("Bap init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Baptiste;
  • }
  • actions
  • {
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Destroy HUD Text(Event Player.Huds[2]);
  • Set Max Health(Event Player, 50);
  • Set Damage Dealt(Event Player, 100);
  • Set Damage Dealt(Event Player, 90);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Disallow Button(Event Player, Button(Ultimate));
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.InitSpeed = 120;
  • Event Player.IsHuman = True;
  • Event Player.InitDamage = 100;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Moira), Button(Ability 1)), Custom String("Ability 1: Charged orb"), String(
  • Event Player.InitDamage = 90;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Moira), Button(Ability 2)), Custom String("Ability 1: Charged orb"), String(
  • "{0}: {1}", Custom String("Cooldown"), Event Player.C), Left, 1, Custom Color(0, 250, 100, 255), Custom Color(0, 250, 100,
  • 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Launch a boomerang orb.\r\n 1st cast slows and\r\n damages zombies. 2nd\r\n cast heals/shields humans,\r\n increasing in strenghth\r\n"),
  • "Launch a returning orb.\r\n 1st cast slows and\r\n damages zombies and\r\n charges next orb. 2nd\r\n cast heals/shields humans,"),
  • Null, Left, 2, Custom Color(0, 250, 100, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Wrecking Ball), Button(Crouch)), Custom String("Ultimate: Seismic slam"),
  • Null, Left, 3, Custom Color(0, 250, 100, 255), Custom Color(0, 250, 100, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Jump up and crash down,\r\n knocking away and rooting\r\n nearby zombies."), Null, Left, 4, Custom Color(0, 250, 100, 255),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.InitSpeed = 120;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Soldier: 76), Button(Ability 1)), Custom String("Passive: Exo boots"),
  • String("{0}: {1}", Custom String("Recharge"), Event Player.C2), Left, 5, Custom Color(0, 250, 100, 255), Custom Color(0, 250,
  • 100, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Launches you sideways\r\n in stead of up. Has\r\n a small cooldown."), Null, Left, 6, Custom Color(0, 250, 100, 255), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Event Player.StrongMelee = False;
  • Event Player.StrongMelee = False;
  • Event Player.InitHp = 100;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Bap ability 1 first cast")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Event Player.C == Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.N == Null;
  • }
  • actions
  • {
  • Event Player.O2 = Eye Position(Event Player);
  • Event Player.P2 = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player)
  • * 25, Null, Event Player, False);
  • Create Effect(All Players(All Teams), Orb, Color(Turquoise), Event Player.O2, 0.250, Visible To Position and Radius);
  • Event Player.Effects[True] = Last Created Entity;
  • Create Effect(All Players(All Teams), Bad Aura, Color(Red), Event Player.O2, True, Visible To Position and Radius);
  • Event Player.Effects[2] = Last Created Entity;
  • Create Effect(All Players(All Teams), Energy Sound, Color(White), Event Player.O2, 100, Visible To Position and Radius);
  • Event Player.Effects[3] = Last Created Entity;
  • Chase Player Variable At Rate(Event Player, O2, Event Player.P2, 12.500, Destination and Rate);
  • Call Subroutine(Bability111);
  • Chase Player Variable At Rate(Event Player, O2, Eye Position(Event Player), 15, Destination and Rate);
  • Call Subroutine(Bability112);
  • Filtered Array(All Players(All Teams), Current Array Element.Bability1 == Event Player).Bability1 = Null;
  • Event Player.C = 1.500;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • Event Player.N = 1;
  • Stop Chasing Player Variable(Event Player, O2);
  • Destroy Effect(Event Player.Effects[True]);
  • Destroy Effect(Event Player.Effects[2]);
  • Destroy Effect(Event Player.Effects[3]);
  • Wait(0.100, Ignore Condition);
  • Event Player.O2 = Null;
  • }
  • }
  • rule("Bap ability 1 cast 1 send")
  • {
  • event
  • {
  • Subroutine;
  • Bability111;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Filtered Array(All Players(All Teams),
  • Current Array Element.Bability1 != Event Player && Current Array Element.IsHuman == False && Distance Between(Eye Position(
  • Current Array Element), Event Player.O2) <= 3 && Is In Line of Sight(Eye Position(Current Array Element), Event Player.O2,
  • Barriers Do Not Block LOS)).Bability1 = Event Player;
  • Loop If(Event Player.O2 != Event Player.P2);
  • }
  • }
  • rule("Bap ability 1 cast 1 return")
  • {
  • event
  • {
  • Subroutine;
  • Bability112;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Filtered Array(All Players(All Teams),
  • Current Array Element.Bability1 != Event Player && Current Array Element.IsHuman == False && Distance Between(Eye Position(
  • Current Array Element), Event Player.O2) <= 3 && Is In Line of Sight(Eye Position(Current Array Element), Event Player.O2,
  • Barriers Do Not Block LOS)).Bability1 = Event Player;
  • Loop If(Distance Between(Event Player.O2, Eye Position(Event Player)) > 2);
  • }
  • }
  • rule("Bap ability 1 cast 1 enemies hit effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.Bability1 != Null;
  • Is Alive(Event Player) == True;
  • Event Player.IsHuman == False;
  • }
  • actions
  • {
  • Event Player.Slow += 15;
  • Damage(Event Player, Event Player.Bability1, 35);
  • Damage(Event Player, Event Player.Bability1, 40);
  • Skip If(Entity Exists(Event Player.MiscIDs[10]), 2);
  • Create Beam Effect(All Players(All Teams), Bad Beam, Eye Position(Event Player) - Vector(False, True, False),
  • Event Player.Bability1.O2, Color(Red), Visible To Position and Radius);
  • Event Player.MiscIDs[10] = Last Created Entity;
  • Event Player.Bability1.F += True;
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Red), Event Player.Bability1.O2, 1);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Red), Event Player.Bability1.O2, 75);
  • Wait(False, Ignore Condition);
  • Event Player.Bability1 = Null;
  • Wait(0.450, Ignore Condition);
  • Destroy Effect(Event Player.MiscIDs[10]);
  • }
  • }
  • rule("Bap ability 1 second cast")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Event Player.C == Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.N == 1;
  • }
  • actions
  • {
  • Event Player.O2 = Eye Position(Event Player);
  • Event Player.P2 = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player)
  • * 25, Null, Event Player, False);
  • Create Effect(All Players(All Teams), Orb, Color(Turquoise), Event Player.O2, 0.250, Visible To Position and Radius);
  • Event Player.Effects[True] = Last Created Entity;
  • Create Effect(All Players(All Teams), Bad Aura, Color(Yellow), Event Player.O2, True, Visible To Position and Radius);
  • Event Player.Effects[2] = Last Created Entity;
  • Create Effect(All Players(All Teams), Beacon Sound, Color(White), Event Player.O2, 100, Visible To Position and Radius);
  • Event Player.Effects[3] = Last Created Entity;
  • Chase Player Variable At Rate(Event Player, O2, Event Player.P2, 12.500, Destination and Rate);
  • Call Subroutine(Bability121);
  • Chase Player Variable At Rate(Event Player, O2, Eye Position(Event Player), 15, Destination and Rate);
  • Call Subroutine(Bability122);
  • Event Player.C = 10;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • Filtered Array(All Players(All Teams), Current Array Element.Bability1 == Event Player).Bability1 = Null;
  • Event Player.N = Null;
  • Stop Chasing Player Variable(Event Player, O2);
  • Destroy Effect(Event Player.Effects[True]);
  • Destroy Effect(Event Player.Effects[2]);
  • Destroy Effect(Event Player.Effects[3]);
  • Event Player.F = Null;
  • Wait(0.100, Ignore Condition);
  • Event Player.O2 = Null;
  • }
  • }
  • rule("Bap ability 1 cast 2 allies hit effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.Bability1 != Null;
  • Is Alive(Event Player) == True;
  • Event Player.IsHuman == True;
  • }
  • actions
  • {
  • Event Player.BarrierHealth += Event Player.Bability1.F * 20;
  • Skip If(Event Player.BarrierTime > 3, True);
  • Event Player.BarrierTime = 3;
  • Start Heal Over Time(Event Player, Event Player.Bability1, Event Player.Bability1.F, 15);
  • Skip If(Entity Exists(Event Player.MiscIDs[10]), 2);
  • Create Beam Effect(All Players(All Teams), Bad Beam, Eye Position(Event Player) - Vector(False, True, False),
  • Event Player.Bability1.O2, Color(Yellow), Visible To Position and Radius);
  • Event Player.MiscIDs[10] = Last Created Entity;
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Yellow), Event Player.Bability1.O2, 1);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Red), Event Player.Bability1.O2, 75);
  • Wait(False, Ignore Condition);
  • Event Player.Bability1 = Null;
  • Wait(0.450, Ignore Condition);
  • Destroy Effect(Event Player.MiscIDs[10]);
  • }
  • }
  • rule("Bap ability 1 cast 2 send")
  • {
  • event
  • {
  • Subroutine;
  • Bability121;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Filtered Array(Remove From Array(All Players(All Teams), Event Player),
  • Current Array Element.Bability1 != Event Player && Current Array Element.IsHuman == True && Distance Between(Eye Position(
  • Current Array Element), Event Player.O2) <= 3 && Is In Line of Sight(Eye Position(Current Array Element), Event Player.O2,
  • Barriers Do Not Block LOS)).Bability1 = Event Player;
  • Loop If(Event Player.O2 != Event Player.P2);
  • }
  • }
  • rule("Bap ability 1 cast 2 return")
  • {
  • event
  • {
  • Subroutine;
  • Bability122;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Filtered Array(All Players(All Teams),
  • Current Array Element.Bability1 != Event Player && Current Array Element.IsHuman == True && Distance Between(Eye Position(
  • Current Array Element), Event Player.O2) <= 3 && Is In Line of Sight(Eye Position(Current Array Element), Event Player.O2,
  • Barriers Do Not Block LOS)).Bability1 = Event Player;
  • Loop If(Distance Between(Event Player.O2, Eye Position(Event Player)) > True);
  • }
  • }
  • rule("Bap enable ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Baptiste;
  • }
  • conditions
  • {
  • Ultimate Charge Percent(Event Player) == 100;
  • }
  • actions
  • {
  • Call Subroutine(ultCharged);
  • }
  • }
  • rule("Bap use ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.B == 1;
  • }
  • actions
  • {
  • Set Ultimate Ability Enabled(Event Player, False);
  • Set Ultimate Charge(Event Player, False);
  • Skip If(Event Player.N == 2, 10);
  • Skip If(Altitude Of(Event Player) >= 2.500, True);
  • Apply Impulse(Event Player, Up, 15, To World, Cancel Contrary Motion);
  • Event Player.InitSpeed = 80;
  • Set Move Speed(Event Player, Event Player.InitSpeed - Event Player.Slow);
  • Event Player.B = 2;
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Orange), Event Player, 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(Turquoise), Event Player, 75);
  • Set Gravity(Event Player, 150);
  • Wait(0.200, Ignore Condition);
  • Wait Until(Is On Ground(Event Player) == True, 8);
  • Create Effect(All Players(All Teams), Good Aura, Color(Orange), Position Of(Event Player), Event Player.R,
  • Visible To Position and Radius);
  • Event Player.Effects[4] = Last Created Entity;
  • Chase Player Variable Over Time(Event Player, R, 9, 0.450, Destination and Duration);
  • Event Player.B = Null;
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Orange), Event Player, 4);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Orange), Position Of(Event Player), 18);
  • Play Effect(All Players(All Teams), Explosion Sound, Color(Turquoise), Event Player, 125);
  • Call Subroutine(Bult);
  • Stop Chasing Player Variable(Event Player, R);
  • Destroy Effect(Event Player.Effects[4]);
  • Wait(True, Ignore Condition);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Event Player.R = Null;
  • Set Gravity(Event Player, 100);
  • Event Player.InitSpeed = 120;
  • Set Move Speed(Event Player, Event Player.InitSpeed - Event Player.Slow);
  • }
  • }
  • rule("Bap ult knock away enemies")
  • {
  • event
  • {
  • Subroutine;
  • Bult;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= Event Player.R && Is In Line of Sight(Eye Position(Event Player),
  • Eye Position(Current Array Element), Barriers Do Not Block LOS)).KnockAway = 15;
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= Event Player.R && Is In Line of Sight(Eye Position(Event Player),
  • Eye Position(Current Array Element), Barriers Do Not Block LOS)).KnockAwayFrom = Event Player;
  • Set Status(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= Event Player.R && Is In Line of Sight(Eye Position(Event Player),
  • Eye Position(Current Array Element), Barriers Do Not Block LOS)), Event Player, Rooted, 0.250);
  • Damage(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= Event Player.R && Is In Line of Sight(Eye Position(Event Player),
  • Eye Position(Current Array Element), Barriers Do Not Block LOS)), Event Player, 10);
  • Loop If(Event Player.R < 9);
  • }
  • }
  • rule("Bap passive charge")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Crouching(Event Player) == True;
  • Event Player.C2 <= 0;
  • }
  • actions
  • {
  • Chase Player Variable At Rate(Event Player, Bpassive, 15, 21.428, Destination and Rate);
  • Call Subroutine(IsCondTrueFast);
  • Stop Chasing Player Variable(Event Player, Bpassive);
  • Wait(1.200, Restart When True);
  • Event Player.Bpassive = Null;
  • }
  • }
  • rule("Bap passive launches sideways")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Jumping(Event Player) == True;
  • Event Player.Bpassive > Null;
  • Has Status(Event Player, Hacked) == False;
  • Event Player.C2 <= 0;
  • }
  • actions
  • {
  • Set Gravity(Event Player, 100 + Event Player.Bpassive * 22.500);
  • Wait(False, Ignore Condition);
  • Apply Impulse(Event Player, Throttle Of(Event Player), 7.500 + Event Player.Bpassive, To Player, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Throttle Of(Event Player), 6.500 + Event Player.Bpassive, To Player, Cancel Contrary Motion);
  • Wait(0.100, Ignore Condition);
  • Event Player.C2 = 1;
  • Event Player.C2 = 1.100;
  • Chase Player Variable At Rate(Event Player, C2, 0, 1, Destination and Rate);
  • Set Gravity(Event Player, 100);
  • }
  • }
  • rule("Bap passive cooldown")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Baptiste;
  • }
  • conditions
  • {
  • Event Player.C2 > 0;
  • Is Crouching(Event Player) == True;
  • }
  • actions
  • {
  • Disallow Button(Event Player, Button(Jump));
  • Call Subroutine(IsCondTrue);
  • Allow Button(Event Player, Button(Jump));
  • }
  • }
  • rule("Zarya init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zarya;
  • }
  • actions
  • {
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Destroy HUD Text(Event Player.Huds[2]);
  • Set Max Health(Event Player, 37.500);
  • Set Damage Dealt(Event Player, 90);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Disallow Button(Event Player, Button(Ultimate));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.IsHuman = True;
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create HUD Text(Event Player, Ability Icon String(Hero(Zarya), Button(Ability 1)), Custom String("Ability 2: Null field"), String(
  • "{0}: {1}", Custom String("Cooldown"), Event Player.D), Left, 1, Custom Color(255, 0, 255, 255), Custom Color(255, 0, 255,
  • 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Half damage received to\r\n you and humans nearby\r\n for 3 seconds."), Null, Left, 2, Custom Color(255, 0, 255, 255),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Zarya), Button(Ultimate)), Custom String("Ultimate: Graviton Surge"), Null,
  • Left, 3, Custom Color(255, 0, 255, 255), Custom Color(255, 0, 255, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "launch a projectile, which \r\n detonates shortly after\r\n /after hitting something,\r\n that sucks in all nearby\r\n zombies and r"),
  • Null, Left, 4, Custom Color(255, 0, 255, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.InitSpeed = 120;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Brigitte), Button(Ultimate)), Custom String(
  • "Ability 1: For the motherland!"), String("{0}: {1}", Custom String("Cooldown"), Event Player.C), Left, 5, Custom Color(255, 0,
  • 255, 255), Custom Color(255, 0, 255, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Gain increasing movespeed\r\n and lower aimspeed.\r\n Press Lshift/melee to\r\n punch zombies in front\r\n of you, knocking them\r\n "),
  • Null, Left, 6, Custom Color(255, 0, 255, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Event Player.InitSpeed = 120;
  • Event Player.InitDamage = 90;
  • Event Player.StrongMelee = True;
  • Event Player.StrongMelee = True;
  • Event Player.InitHp = 150;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Zarya ability 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zarya;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Event Player.D <= Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Purple), Event Player, 12);
  • Event Player.D = 10;
  • Event Player.F = Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == True && Distance Between(
  • Eye Position(Event Player), Eye Position(Current Array Element)) <= 6 && Is In Line of Sight(Eye Position(Event Player),
  • Eye Position(Current Array Element), Barriers Do Not Block LOS));
  • Event Player.F.ZRhalfBubble = 3;
  • Chase Player Variable At Rate(Event Player, D, False, True, Destination and Rate);
  • Set Damage Received(Event Player, 50);
  • Set Damage Received(Event Player.F, 50);
  • Small Message(Event Player.F, Custom String("{0} {1} {2}", Hero Icon String(Hero(Zarya)), Custom String("Null barrier applied!"),
  • Hero Icon String(Hero(Zarya))));
  • Wait(3, Ignore Condition);
  • Set Damage Received(Event Player, 100);
  • Set Damage Received(Event Player.F, 100);
  • Destroy Effect(Event Player.Effects[True]);
  • Small Message(Event Player, Custom String("{0} {1} {2}", Hero Icon String(Hero(Zarya)), Custom String("Null barrier depleted."),
  • Hero Icon String(Hero(Zarya))));
  • Wait(False, Ignore Condition);
  • Event Player.F = Null;
  • }
  • }
  • rule("Zarya ability 2 visual effects")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.ZRhalfBubble > Null;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Chase Player Variable At Rate(Event Player, ZRhalfBubble, False, True, Destination and Rate);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Purple), Event Player, 4);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Purple), Event Player, 50);
  • Create Effect(Remove From Array(All Players(All Teams), Event Player), Sphere, Color(Purple), Event Player, Max Health(
  • Event Player) * 0.013, Visible To Position and Radius);
  • Event Player.MiscIDs[12] = Last Created Entity;
  • Event Player.MiscIDs[13] = Last Created Entity;
  • Call Subroutine(IsCondTrue);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(Purple), Event Player, 50);
  • Destroy Effect(Event Player.MiscIDs[12]);
  • Destroy Effect(Event Player.MiscIDs[13]);
  • }
  • }
  • rule("Zarya ability 1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zarya;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Event Player.C <= Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.R <= Null;
  • }
  • actions
  • {
  • Event Player.R = 10;
  • Chase Player Variable At Rate(Event Player, R, False, True, Destination and Rate);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Purple), Event Player, 4);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Purple), Event Player, 50);
  • }
  • }
  • rule("Zarya ability 1 activate melee when shifting")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zarya;
  • }
  • conditions
  • {
  • Event Player.R > Null;
  • Event Player.R <= 9;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Melee));
  • }
  • }
  • rule("Zarya ability 1 melee")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zarya;
  • }
  • conditions
  • {
  • Event Player.R > Null;
  • Is Meleeing(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.Stage = 1;
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(Purple), Event Player, 60);
  • Event Player.C = 6;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • Wait(0.500, Ignore Condition);
  • Event Player.Stage = Null;
  • Event Player.R = Null;
  • }
  • }
  • rule("Zarya ability 1 melee effect")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Attacker.Stage == 1;
  • Hero Of(Attacker) == Hero(Zarya);
  • }
  • actions
  • {
  • Skip If(Event Player.ZRknockback > False, 4);
  • Event Player.ZRknockback = 0.700;
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Purple), Event Player, 1.500);
  • Chase Player Variable At Rate(Event Player, ZRknockback, False, True, Destination and Rate);
  • Set Status(Event Player, Attacker, Stunned, 0.600);
  • Set Gravity(Event Player, 50);
  • Apply Impulse(Event Player, Vector Towards(Vector(X Component Of(Position Of(Attacker)), Y Component Of(Position Of(Event Player)),
  • Z Component Of(Position Of(Attacker))), Position Of(Event Player)), 16 + Distance Between(Eye Position(Event Player),
  • Eye Position(Attacker)), To World, Cancel Contrary Motion);
  • Skip If(Altitude Of(Event Player) > 0.250, True);
  • Apply Impulse(Event Player, Up, 2, To World, Cancel Contrary Motion);
  • Wait(0.100, Ignore Condition);
  • Skip If(Is True For Any(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= 3 + Max Health(Event Player) * 0.003 && Is In Line of Sight(
  • Eye Position(Event Player), Eye Position(Current Array Element), Barriers Do Not Block LOS)), True);
  • Loop If(Event Player.ZRknockback > False);
  • Set Status(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= 3 + Max Health(Event Player) * 0.003 && Is In Line of Sight(
  • Eye Position(Event Player), Eye Position(Current Array Element), Barriers Do Not Block LOS)), Event Player, Knocked Down,
  • 1.500);
  • Set Gravity(Event Player, 100);
  • }
  • }
  • rule("Zarya ability 1 movespead")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zarya;
  • }
  • conditions
  • {
  • Event Player.R > Null;
  • }
  • actions
  • {
  • Set Aim Speed(Event Player, 200 - Event Player.InitSpeed * 1.100);
  • Event Player.InitSpeed += Event Player.R * 0.060;
  • Set Move Speed(Event Player, Event Player.InitSpeed);
  • Start Forcing Throttle(Event Player, True, True, False, False, False, True);
  • Start Forcing Throttle(Event Player, True, True, False, False, False, False);
  • Wait(0.050, Ignore Condition);
  • Loop If(Event Player.R > False);
  • Event Player.InitSpeed = 120;
  • Set Move Speed(Event Player, Event Player.InitSpeed);
  • Stop Forcing Throttle(Event Player);
  • Event Player.C = 6;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • Set Aim Speed(Event Player, 100);
  • }
  • }
  • rule("Zarya enable ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zarya;
  • }
  • conditions
  • {
  • Ultimate Charge Percent(Event Player) == 100;
  • }
  • actions
  • {
  • Call Subroutine(ultCharged);
  • }
  • }
  • rule("Zarya use ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Zarya;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Event Player.B == 1;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • }
  • actions
  • {
  • Set Ultimate Charge(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, False);
  • Play Effect(All Players(All Teams), Bad Explosion, Custom Color(255, 0, 255, 255), Event Player, 3);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Purple), Event Player, 100);
  • Event Player.O = Eye Position(Event Player);
  • Event Player.P = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player)
  • * 12, Null, Event Player, False);
  • Wait(False, Ignore Condition);
  • Create Effect(All Players(All Teams), Good Aura, Custom Color(40, 0, 135, 255), Event Player.O, 0.250,
  • Visible To Position and Radius);
  • Event Player.Effects[2] = Last Created Entity;
  • Create Effect(All Players(All Teams), Bad Aura, Custom Color(255, 0, 255, 255), Event Player.O, 0.100,
  • Visible To Position and Radius);
  • Event Player.Effects[3] = Last Created Entity;
  • Create Effect(All Players(All Teams), Energy Sound, Color(White), Event Player.O, 25, Visible To Position and Radius);
  • Event Player.Effects[4] = Last Created Entity;
  • Chase Player Variable At Rate(Event Player, O, Event Player.P, 12, Destination and Rate);
  • Call Subroutine(ZRult);
  • Destroy Effect(Event Player.Effects[2]);
  • Destroy Effect(Event Player.Effects[4]);
  • Wait(False, Ignore Condition);
  • Play Effect(All Players(All Teams), Ring Explosion, Custom Color(255, 0, 255, 255), Event Player.O, 12);
  • Play Effect(All Players(All Teams), Bad Explosion, Custom Color(40, 0, 135, 255), Event Player.O, 3);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Purple), Event Player.O, 200);
  • Create Effect(All Players(All Teams), Energy Sound, Color(White), Event Player.O, 100, Visible To Position and Radius);
  • Event Player.Effects[4] = Last Created Entity;
  • Create Effect(All Players(All Teams), Good Aura, Custom Color(40, 0, 135, 255), Event Player.O, 6, Visible To Position and Radius);
  • Event Player.Effects[2] = Last Created Entity;
  • Event Player.N = 5;
  • Chase Player Variable At Rate(Event Player, N, False, True, Destination and Rate);
  • Call Subroutine(ZRult2);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(Purple), Event Player.O, 100);
  • Destroy Effect(Event Player.Effects[2]);
  • Destroy Effect(Event Player.Effects[3]);
  • Destroy Effect(Event Player.Effects[4]);
  • Event Player.O = Null;
  • Event Player.P = Null;
  • Event Player.B = Null;
  • Set Ultimate Ability Enabled(Event Player, True);
  • }
  • }
  • rule("Zarya ult sub")
  • {
  • event
  • {
  • Subroutine;
  • ZRult;
  • }
  • actions
  • {
  • Skip If(Event Player.O == Event Player.P, 2);
  • Wait(0.100, Ignore Condition);
  • Loop If(Distance Between(Event Player.O, Ray Cast Hit Position(Event Player.O, Event Player.O + Event Player.P * 0.016 * 1000,
  • All Players(All Teams), Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), True)) >= 0.500);
  • }
  • }
  • rule("Zarya ult sub 2")
  • {
  • event
  • {
  • Subroutine;
  • ZRult2;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Ring Explosion, Custom Color(255, 0, 255, 255), Event Player.O, 12);
  • "eventPlayer.K = [player for player in getLivingPlayers(Team.ALL) if player.IsHuman == false and distance(eventPlayer.O, player.getEyePosition()) <= 6 and isInLoS(eventPlayer.O, player.getEyePosition(), BarrierLos.PASS_THROUGH_BARRIERS)]"
  • Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Is In Line of Sight(Event Player.O, Eye Position(
  • Current Array Element), Barriers Do Not Block LOS) && Distance Between(Event Player.O, Position Of(Current Array Element))
  • <= 6).ZRultPull = Event Player;
  • Wait(0.100, Ignore Condition);
  • Loop If(Event Player.N > False);
  • Filtered Array(All Players(All Teams), Current Array Element.ZRultPull == Event Player).ZRultPull = Null;
  • }
  • }
  • rule("Zarya ult effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.ZRultPull != Null;
  • }
  • actions
  • {
  • "eventPlayer.disablePlayerCollision()"
  • Disable Movement Collision With Players(Event Player);
  • Damage(Event Player, Event Player.ZRultPull, 0.500);
  • Set Status(Event Player, Event Player.ZRultPull, Rooted, 0.250);
  • Set Gravity(Event Player, 75);
  • Apply Impulse(Event Player, Direction Towards(Position Of(Event Player), Event Player.ZRultPull.O), 4, To World,
  • Apply Impulse(Event Player, Direction Towards(Eye Position(Event Player), Event Player.ZRultPull.O), Distance Between(Eye Position(Event Player), Event Player.ZRultPull.O) * 2, To World,
  • Incorporate Contrary Motion);
  • Skip If(Altitude Of(Event Player) > 0.250, True);
  • Skip If((Altitude Of(Event Player) > 0.250 || Distance Between(Eye Position(Event Player), Event Player.ZRultPull.O) <= 2.25), True);
  • Apply Impulse(Event Player, Up, 2, To World, Cancel Contrary Motion);
  • Wait(0.200, Ignore Condition);
  • Loop If(Event Player.ZRultPull != Null);
  • Set Gravity(Event Player, 100);
  • Enable Movement Collision With Players(Event Player);
  • }
  • }
  • rule("Junk init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Junkrat;
  • }
  • actions
  • {
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Destroy HUD Text(Event Player.Huds[2]);
  • Set Max Health(Event Player, 50);
  • Set Damage Dealt(Event Player, 66.667);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.InitSpeed = 120;
  • Event Player.IsHuman = True;
  • Event Player.InitDamage = 66.667;
  • Create HUD Text(Event Player, Icon String(Fire), Custom String("Passive: Bring it down"), Null, Left, 1, Custom Color(170, 90, 15,
  • 255), Custom Color(170, 90, 15, 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Burn zombies you damage.\r\n Burning zombies take more\r\n damage from you."), Null, Left, 2, Custom Color(170, 90, 15,
  • 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • "Burn zombies you damage\r\n witch abilities or melee.\r\n Burning zombies take more\r\n damage from you."), Null, Left, 2,
  • Custom Color(170, 90, 15, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Junkrat), Button(Ability 1)), Custom String("Ability 1: Kaboom!"), Null,
  • Left, 3, Custom Color(170, 90, 15, 255), Custom Color(170, 90, 15, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Enemies you hit\r\n get slowed."), Null, Left, 4, Custom Color(170, 90, 15, 255), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.InitSpeed = 120;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Junkrat), Button(Ultimate)), Custom String("Ultimate: Rip-tire"), Null,
  • Left, 5, Custom Color(170, 90, 15, 255), Custom Color(170, 90, 15, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Your rip-tire deals little\r\n damage, but executes anyone\r\n that's burning."), Null, Left, 6, Custom Color(
  • 170, 90, 15, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • "Your rip-tire deals little\r\n damage, but executes anyone\r\n that's burning."), Null, Left, 6, Custom Color(170, 90, 15,
  • 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Doomfist), Button(Ability 2)), Custom String("Ability 2: Molotov"), String(
  • "{0}: {1}", Custom String("Cooldown"), Event Player.C), Left, 7, Custom Color(170, 90, 15, 255), Custom Color(170, 90, 15,
  • 255), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[6] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "throw a molotov cocktail,\r\n leaving a pool of fire\r\n that applies a stronger\r\n version of your passive\r\n to all zombies inside."), Null,
  • Left, 8, Custom Color(170, 90, 15, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • "throw a molotov cocktail,\r\n leaving a pool of fire\r\n that applies a stronger\r\n version of your passive"), Null, Left,
  • 8, Custom Color(170, 90, 15, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[7] = Last Text ID;
  • Event Player.StrongMelee = False;
  • Event Player.StrongMelee = False;
  • Event Player.InitHp = 100;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Junk ability 2 startup")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Junkrat;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Event Player.C == Null;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.Stage == Null;
  • Is Meleeing(Event Player) == False;
  • Is Firing Primary(Event Player) == False;
  • Is Using Ability 1(Event Player) == False;
  • Is Using Ultimate(Event Player) == False;
  • }
  • actions
  • {
  • Set Damage Dealt(Event Player, 0);
  • Event Player.C = 10;
  • Chase Player Variable At Rate(Event Player, C, False, True, Destination and Rate);
  • Press Button(Event Player, Button(Melee));
  • Event Player.O = Eye Position(Event Player);
  • Event Player.P = Facing Direction Of(Event Player) * 40;
  • Create Effect(All Players(All Teams), Bad Aura, Color(Red), Event Player.O, 0.500, Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Create Effect(All Players(All Teams), Smoke Sound, Color(Red), Event Player.O, 500, Visible To Position and Radius);
  • Event Player.Effects[True] = Last Created Entity;
  • Event Player.B[False] = Vector(False, -11, False);
  • Event Player.B[True] = First Of(Event Player.B);
  • Event Player.Stage = 1;
  • Wait(0.500, Ignore Condition);
  • Set Damage Dealt(Event Player, Event Player.InitDamage);
  • }
  • }
  • rule("Junk ability 2 projectile")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Junkrat;
  • }
  • conditions
  • {
  • Distance Between(Event Player.O, Ray Cast Hit Position(Event Player.O, Event Player.O + Event Player.P * 0.016 * 1000, All Players(
  • All Teams), Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), True)) >= 0.750;
  • Event Player.Stage == 1;
  • Distance Between(Event Player.O, Position Of(Event Player)) < 100;
  • }
  • actions
  • {
  • Event Player.P += Event Player.B[True] * 0.016;
  • Event Player.O += Event Player.P * 0.016;
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Orange), Event Player.O, 0.250);
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Orange), Event Player.O, 6);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Red), Event Player.O, 100);
  • Wait(False, Ignore Condition);
  • Damage(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Is In Line of Sight(Event Player.O,
  • Current Array Element, All Barriers Block LOS) && Distance Between(Event Player.O, Current Array Element) <= 5), Event Player,
  • 30);
  • Event Player.Stage = Null;
  • Destroy Effect(First Of(Event Player.Effects));
  • Wait(0.016, Ignore Condition);
  • Event Player.F = 5;
  • Event Player.F = 6;
  • Chase Player Variable At Rate(Event Player, F, False, True, Destination and Rate);
  • Create Effect(All Players(All Teams), Ring, Color(Orange), Event Player.O, 5, Visible To Position and Radius);
  • Create Effect(All Players(All Teams), Ring, Color(Orange), Event Player.O, 7, Visible To Position and Radius);
  • Event Player.Effects[0] = Last Created Entity;
  • Create Effect(All Players(All Teams), Sparkles, Color(Orange), Event Player.O, 5, Visible To Position and Radius);
  • Create Effect(All Players(All Teams), Sparkles, Color(Orange), Event Player.O, 7, Visible To Position and Radius);
  • Event Player.Effects[2] = Last Created Entity;
  • Create Effect(All Players(All Teams), Cloud, Color(Orange), Event Player.O, 5, Visible To Position and Radius);
  • Create Effect(All Players(All Teams), Cloud, Color(Orange), Event Player.O, 7, Visible To Position and Radius);
  • Event Player.Effects[3] = Last Created Entity;
  • Call Subroutine(Jability2);
  • Destroy Effect(Event Player.Effects[1]);
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Effect(Event Player.Effects[2]);
  • Destroy Effect(Event Player.Effects[3]);
  • Event Player.F = 0;
  • Event Player.P = 0;
  • Event Player.O = 0;
  • }
  • }
  • rule("Junk ability 2 zone sub")
  • {
  • event
  • {
  • Subroutine;
  • Jability2;
  • }
  • actions
  • {
  • Wait(0.050, Ignore Condition);
  • Start Damage Over Time(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(
  • Event Player.O, Eye Position(Current Array Element)) <= 5.500 && Current Array Element.JRburn <= 0 && Is In Line of Sight(
  • Eye Position(Current Array Element), Event Player.O, Barriers Do Not Block LOS)), Event Player, 4, 12);
  • Event Player.O, Eye Position(Current Array Element)) <= 7.500 && Current Array Element.JRburn <= 0 && Is In Line of Sight(
  • Eye Position(Current Array Element), Event Player.O, Barriers Do Not Block LOS)), Event Player, 6, 9);
  • Wait(0.050, Ignore Condition);
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Event Player.O,
  • Eye Position(Current Array Element)) <= 5 && Current Array Element.JRburn <= 0 && Is In Line of Sight(Event Player.O, Eye Position(Current Array Element),
  • Barriers Do Not Block LOS)).JRburn = 4;
  • Eye Position(Current Array Element)) <= 7.500 && Current Array Element.JRburn <= 0 && Is In Line of Sight(Event Player.O,
  • Eye Position(Current Array Element), Barriers Do Not Block LOS)).JRburn = 6;
  • Set Status(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Event Player.O,
  • Eye Position(Current Array Element)) <= 5.500 && Is In Line of Sight(Eye Position(
  • Current Array Element), Event Player.O, Barriers Do Not Block LOS)), Event Player, Burning, 4);
  • Eye Position(Current Array Element)) <= 7.500 && Is In Line of Sight(Eye Position(Current Array Element), Event Player.O,
  • Barriers Do Not Block LOS)), Event Player, Burning, 6);
  • Loop If(Event Player.F > 0);
  • }
  • }
  • rule("Junkrat ability 2 notify when burn can be reapplied")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.JRburn > 0;
  • }
  • actions
  • {
  • Chase Player Variable At Rate(Event Player, JRburn, 0, 1, Destination and Rate);
  • Wait(0.016, Ignore Condition);
  • Wait Until(Event Player.JRburn == 0 || Is Dead(Event Player) == True, 9999);
  • Event Player.JRburn = 0;
  • Stop Chasing Player Variable(Event Player, JRburn);
  • }
  • }
  • rule("Junkrat ability 1 - player hit")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Hero Of(Attacker) == Hero(Junkrat);
  • Event Ability == Button(Ability 1);
  • Event Player.IsHuman == False;
  • }
  • actions
  • {
  • Event Player.Slow += 60;
  • Wait Until(Is On Ground(Event Player) == True, 10);
  • Wait(0.600, Ignore Condition);
  • Event Player.Slow -= 40;
  • }
  • }
  • rule("Junkrat passive - apply burn")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Event Ability == Button(Ability 1) || Event Ability == Button(Ability 2) || Event Player == Button(Secondary Fire)
  • || Event Ability == Button(Primary Fire) || Event Ability == Button(Ultimate)) == True;
  • || Event Ability == Button(Ultimate)) == True;
  • Event Player.IsHuman == False;
  • Hero Of(Attacker) == Hero(Junkrat);
  • }
  • actions
  • {
  • Wait(0.016, Ignore condition);
  • Wait(0.016, Ignore Condition);
  • disabled Event Player.JRburn = Attacker;
  • Set Status(Event Player, Attacker, Burning, 3);
  • Start Damage Over Time(Event Player, Attacker, 3, 7);
  • Set Status(Event Player, Attacker, Burning, 5);
  • Start Damage Over Time(Event Player, Attacker, 5, 6);
  • }
  • }
  • rule("Junk deal more damage to burning enemies")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Junkrat;
  • }
  • conditions
  • {
  • Has Status(Victim, Burning) == True;
  • (Event Ability == Button(Ability 1) || Event Ability == Button(Ability 2) || Event Player == Button(Secondary Fire)
  • || Event Ability == Button(Primary Fire) || Event Ability == Button(Ultimate)) == True;
  • }
  • actions
  • {
  • If(Event Ability == Button(Ultimate));
  • Kill(Victim, Event Player);
  • Abort;
  • End;
  • If(Event Ability != Button(Ultimate));
  • Damage(Victim, Event Player, Event Damage * 0.750);
  • End;
  • }
  • }
  • rule("Junkrat gain damage while dead")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Junkrat;
  • }
  • conditions
  • {
  • Is Dead(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.InfectPosition = Nearest Walkable Position(Position Of(Event Player));
  • Set Damage Dealt(Event Player, 200);
  • Wait Until(Is Alive(Event Player) == True, 6);
  • Set Damage Dealt(Event Player, Event Player.InitDamage);
  • }
  • }
  • rule("Junkrat ult deals less damage")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Junkrat;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Ultimate Charge Percent(Event Player) == 100;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Sky Blue), Position Of(Event Player), 200);
  • Disallow Button(Event Player, Button(Ultimate));
  • Set Damage Dealt(Event Player, 0.100);
  • Wait Until((Is Button Held(Event Player, Button(Primary Fire)) || Is Button Held(Event Player, Button(Secondary Fire)) ||Is Dead(Event Player)) == True, 11);
  • Wait Until((Is Button Held(Event Player, Button(Primary Fire)) || Is Button Held(Event Player, Button(Secondary Fire)) || Is Dead(
  • Event Player)) == True, 11);
  • Set Damage Dealt(Event Player, Event Player.InitDamage);
  • allow Button(Event Player, Button(Ultimate));
  • Allow Button(Event Player, Button(Ultimate));
  • }
  • }
  • rule("Echo init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Echo;
  • }
  • actions
  • {
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Destroy HUD Text(Event Player.Huds[2]);
  • Set Max Health(Event Player, 50);
  • Set Damage Dealt(Event Player, 85);
  • Set Move Speed(Event Player, 120);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Disallow Button(Event Player, Button(Ultimate));
  • Wait(0.100, Ignore Condition);
  • Heal(Event Player, Null, Max Health(Event Player));
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Diamond,
  • Visible To and Position, Color(Aqua), True);
  • Event Player.Icons[False] = Last Created Entity;
  • Event Player.InitSpeed = 120;
  • Event Player.IsHuman = True;
  • Event Player.InitDamage = 85;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Echo), Button(Ability 2)), Custom String("Ability 2: stasis beam"), Null,
  • Left, 3, Custom Color(130, 255, 255, 255), Custom Color(130, 255, 255, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[2] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "The zombie you hit gets\r\n stunned pulled to the \r\n end of your beam.\r\n Swinging this zombie\r\n into others knocks\r\n them dow"),
  • Null, Left, 4, Custom Color(130, 255, 255, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Echo), Button(Secondary Fire)), Custom String(
  • "Secondary Fire: Sticky bombs"), Null, Left, 1, Custom Color(130, 255, 255, 255), Custom Color(130, 255, 255, 255), Color(
  • White), Visible To and String, Default Visibility);
  • Event Player.Huds[0] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Slows enemies hit, based\r\n on how many bombs hit."), Null, Left, 2, Custom Color(130, 255, 255, 255), Color(White), Color(
  • White), Visible To and String, Default Visibility);
  • Event Player.Huds[1] = Last Text ID;
  • Event Player.InitSpeed = 120;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Hanzo), Button(Ability 1)), Custom String("Ultimate: Resonant strike"), Null,
  • Left, 5, Custom Color(130, 255, 255, 255), Custom Color(130, 255, 255, 255), Color(White), Visible To and String,
  • Create HUD Text(Event Player, Ability Icon String(Hero(Hanzo), Button(Ability 1)), Custom String("Ultimate: Resonant strike"),
  • Null, Left, 5, Custom Color(130, 255, 255, 255), Custom Color(130, 255, 255, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Launch an orb of\r\n sound, that bounces\r\n between zombies,\r\n slowing, disrupting\r\n and revealing them."),
  • Null, Left, 6, Custom Color(130, 255, 255, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • "Launch an orb of\r\n sound, that bounces\r\n between zombies,\r\n slowing, disrupting\r\n and revealing them."), Null,
  • Left, 6, Custom Color(130, 255, 255, 255), Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[5] = Last Text ID;
  • Create HUD Text(Event Player, Ability Icon String(Hero(Echo), Button(Ability 1)), Custom String("Ability 1: Photon boosters"),
  • Null, Left, 7, Custom Color(130, 255, 255, 255), Custom Color(130, 255, 255, 255), Color(White), Visible To and String,
  • Default Visibility);
  • Event Player.Huds[6] = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.ShowInfo == 0), Custom String(" "), Custom String(
  • "Also knocks back\r\n and damages nearby\r\n zombies."), Null, Left, 8, Custom Color(130, 255, 255, 255), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.Huds[7] = Last Text ID;
  • Event Player.StrongMelee = False;
  • Event Player.StrongMelee = False;
  • Event Player.InitHp = 100;
  • Event Player.OutlineHuman = True;
  • Event Player.OutlineZombie = False;
  • }
  • }
  • rule("Echo decreased ms when mid-air")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Echo;
  • }
  • conditions
  • {
  • Altitude Of(Event Player) > 1;
  • }
  • actions
  • {
  • Event Player.InitSpeed = 105;
  • Wait(0.016, Ignore Condition);
  • Set Move Speed(Event Player, Event Player.InitSpeed);
  • Wait Until(Altitude Of(Event Player) <= 1, 9999);
  • Event Player.InitSpeed = 120;
  • Wait(0.016, Ignore Condition);
  • Set Move Speed(Event Player, Event Player.InitSpeed);
  • }
  • }
  • rule("Echo ability 1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Echo;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Damage(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= 7 && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Current Array Element), Barriers Do Not Block LOS)), Event Player, 15);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Sky Blue), Position Of(Event Player), 14);
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= 7 && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Current Array Element), Barriers Do Not Block LOS)).KnockAway = 15;
  • Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Eye Position(
  • Event Player), Eye Position(Current Array Element)) <= 7 && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Current Array Element), Barriers Do Not Block LOS)).KnockAwayFrom = Event Player;
  • }
  • }
  • rule("Echo ability 2 less damage")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Echo;
  • }
  • conditions
  • {
  • Is Using Ability 2(Event Player) == True;
  • }
  • actions
  • {
  • Set Aim Speed(Event Player, 65);
  • Set Damage Dealt(Event Player, 10);
  • Wait Until(Is Using Ability 2(Event Player) == False, 2.500);
  • Set Damage Dealt(Event Player, 90);
  • Set Aim Speed(Event Player, 100);
  • }
  • }
  • rule("Echo ability 2 mark one target")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Echo;
  • }
  • conditions
  • {
  • Event Ability == Button(Ability 2);
  • Victim.IsHuman == False;
  • Victim.Etarget2 == 0;
  • }
  • actions
  • {
  • Skip If(Victim == Event Player.Etarget || Event Player.Etarget == Victim, 1);
  • Wait(0.150, Ignore Condition);
  • Event Player.Etarget = Victim;
  • Victim.Etarget = Event Player;
  • Wait(0.350, Restart When True);
  • Event Player.Etarget = 0;
  • }
  • }
  • rule("Echo ability 2 set status, etc.")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == False;
  • Event Player.Etarget != 0;
  • }
  • actions
  • {
  • Skip If(Entity Exists(Event Player.Etarget.Effects[3]) == True, 2);
  • Create Effect(All Players(All Teams), Good Aura, Color(Aqua), Event Player, 1, Visible To Position and Radius);
  • Event Player.Etarget.Effects[3] = Last Created Entity;
  • Disable Movement Collision With Players(Event Player);
  • Set Gravity(Event Player, 0);
  • Set Status(Event Player, Event Player.Etarget, Stunned, 2.500);
  • Wait Until(Event Player.Etarget.Etarget != Event Player, 2.500);
  • Wait(0.100, Ignore Condition);
  • Set Gravity(Event Player, 100);
  • Enable Movement Collision With Players(Event Player);
  • Stop Forcing Player Position(Event Player);
  • Event Player.Eknockback = False;
  • Destroy Effect(Event Player.Etarget.Effects[3]);
  • Wait(0.016, Ignore Condition);
  • Event Player.Etarget = 0;
  • Wait(0.334, Restart When True);
  • Clear Status(Event Player, Stunned);
  • }
  • }
  • rule("Echo ability 2 pull target to the end of beam")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Echo;
  • }
  • conditions
  • {
  • Is Using Ability 2(Event Player) == True;
  • Event Player.Etarget != 0;
  • }
  • actions
  • {
  • Event Player.Elocation = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(
  • Event Player) * 16, Null, Event Player, False) - Facing Direction Of(Event Player) * 2;
  • If(Distance Between(Position Of(Event Player.Etarget), Event Player.Elocation) > 3);
  • Apply Impulse(Event Player.Etarget, Direction Towards(Position Of(Event Player.Etarget) - Vector(0, 1, 0), Event Player.Elocation),
  • 11, To World, Cancel Contrary Motion);
  • Skip If(Altitude Of(Event Player.Etarget) > 1, 1);
  • Apply Impulse(Event Player.Etarget, Up, 1.500, To World, Cancel Contrary Motion);
  • Event Player.Etarget.Eknockback = False;
  • End;
  • If(Distance Between(Position Of(Event Player.Etarget), Event Player.Elocation) <= 3);
  • Start Forcing Player Position(Event Player.Etarget, Update Every Frame(Event Player.Elocation) - Vector(0, 1, 0), True);
  • Event Player.Etarget.Eknockback = True;
  • End;
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • Stop Forcing Player Position(Event Player.Etarget);
  • Skip If(Event Player.Etarget == 0, 5);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Sky Blue), Event Player.Etarget, 1);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Sky Blue), Event Player.Etarget, 75);
  • Apply Impulse(Event Player.Etarget, Facing Direction Of(Event Player), 20, To World, Incorporate Contrary Motion);
  • Damage(Event Player.Etarget, Event Player, 30);
  • Event Player.Etarget.Eknockback = False;
  • Wait(1, Ignore Condition);
  • Event Player.Elocation = 0;
  • }
  • }
  • rule("Echo ability 2 target zombies to be knocked around")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.Eknockback == True;
  • Event Player.IsHuman == False;
  • Speed Of(Event Player) >= 20;
  • }
  • actions
  • {
  • Filtered Array(Remove From Array(All Players(All Teams), Event Player), Current Array Element.IsHuman == False && Distance Between(
  • Eye Position(Event Player), Eye Position(Current Array Element))
  • <= 4 && Current Array Element.Etarget2 == 0 && Is In Line of Sight(Eye Position(Event Player), Eye Position(
  • Current Array Element), Barriers Do Not Block LOS)).Etarget2 = Event Player.Etarget;
  • Wait(0.016, Abort When False);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Echo ability 2 knock around other zombies")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.Etarget2 != 0;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Good Explosion, Color(Sky Blue), Event Player, 1);
  • Event Player.KnockAway = 12;
  • Event Player.KnockAwayFrom = Event Player.Etarget2.Etarget;
  • Set Status(Event Player, Event Player.Etarget2, Knocked Down, 1.500);
  • Damage(Event Player, Event Player.Etarget2, 100);
  • Wait(0.600, Ignore Condition);
  • Event Player.Etarget2 = 0;
  • }
  • }
  • rule("Echo secondary fire slow")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == False;
  • Hero Of(Attacker) == Hero(Echo);
  • Event Ability == Button(Secondary Fire);
  • Event Damage > 5;
  • }
  • actions
  • {
  • Event Player.Slow = Event Player.Slow + Event Damage * 0.800;
  • Event Player.Eslow = Event Player.Eslow + Event Damage * 0.800;
  • Heal(Event Player, Null, Event Damage * 0.750);
  • Wait(1.5, Restart When True);
  • Wait(1.500, Restart When True);
  • Event Player.Slow = Event Player.Slow - Event Player.Eslow * 0.800;
  • Wait(0.016, Ignore Condition);
  • Event Player.Eslow = 0;
  • }
  • }
  • rule("Echo enable ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Echo;
  • }
  • conditions
  • {
  • Ultimate Charge Percent(Event Player) == 100;
  • }
  • actions
  • {
  • Call Subroutine(ultCharged);
  • }
  • }
  • rule("Echo ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Echo;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Event Player.B == 1;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.Stage == Null;
  • }
  • actions
  • {
  • Set Ultimate Charge(Event Player, 0);
  • Set Ultimate Ability Enabled(Event Player, False);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Sky Blue), Event Player, 1);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Sky Blue), Event Player, 100);
  • Event Player.O = Eye Position(Event Player);
  • Event Player.O = Eye Position(Event Player);
  • Event Player.P = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player)
  • * 100, Null, Event Player, True);
  • Chase Player Variable At Rate(Event Player, O, Event Player.P, 40, Destination and Rate);
  • Create Effect(Event Player, Good Aura, Color(Sky Blue), Event Player.O, 0.750, Visible To Position and Radius);
  • Event Player.Effects[0] = Last Created Entity;
  • Call Subroutine(Eult);
  • Stop Chasing Player Variable(Event Player, O);
  • If(Array Contains(All Players(All Teams), Event Player.P) == True);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Sky Blue), Event Player.O, 16);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Sky Blue), Event Player.O, 50);
  • Wait(0.016, Ignore Condition);
  • disabled Modify Player Variable(Event Player, P2, Append To Array, Event Player.P);
  • Damage(Event Player.P, Event Player, 35);
  • Event Player.P.Emark = 4;
  • Wait(0.016, Ignore Condition);
  • If(Array Contains(All Players(All Teams), Event Player.P) == True);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Sky Blue), Event Player.O, 16);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Sky Blue), Event Player.O, 50);
  • Wait(0.016, Ignore Condition);
  • disabled Modify Player Variable(Event Player, P2, Append To Array, Event Player.P);
  • Damage(Event Player.P, Event Player, 35);
  • Event Player.P.Emark = 4;
  • Wait(0.016, Ignore Condition);
  • End;
  • If(Count Of(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(
  • Event Player.O, Eye Position(Current Array Element)) <= 8 && Current Array Element.Emark <= 0)) > 0);
  • Event Player.P = First Of(Sorted Array(Filtered Array(All Living Players(All Teams),
  • Current Array Element.IsHuman == False && Current Array Element != Event Player.P && Current Array Element.Emark <= 0),
  • Distance Between(Event Player.O, Eye Position(Current Array Element))));
  • Call Subroutine(Eult2);
  • End;
  • If((Count Of(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Event Player.O, Eye Position(Current Array Element)) <= 8 &&
  • Current Array Element.Emark <= 0)) > 0));
  • Event Player.P = First Of(Sorted Array(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Current Array Element != Event Player.P && Current Array Element.Emark <= 0), Distance Between(
  • Event Player.O, Eye Position(Current Array Element))));
  • Call Subroutine(Eult2);
  • End;
  • Play Effect(All Players(All Teams), Good Explosion, Color(Sky Blue), Event Player.O, 1);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Sky Blue), Event Player.O, 50);
  • Destroy Effect(Event Player.Effects[0]);
  • Event Player.O = 0;
  • Stop Chasing Player Variable(Event Player, O);
  • Set Ultimate Ability Enabled(Event Player, True);
  • }
  • }
  • rule("Echo ult sub")
  • {
  • event
  • {
  • Subroutine;
  • Eult;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Skip If(Is True For Any(All Players(All Teams), Distance Between(Eye Position(Current Array Element), Event Player.O)
  • <= 1.5 && Current Array Element.IsHuman == False), 2);
  • <= 1.500 && Current Array Element.IsHuman == False), 2);
  • Loop If(Event Player.O != Event Player.P);
  • Skip(2);
  • Event Player.P = First Of(Sorted Array(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False), Distance Between(
  • Event Player.O, Eye Position(Current Array Element))));
  • Skip(3);
  • If((Count Of(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Event Player.O, Eye Position(Current Array Element)) <= 4 &&
  • Current Array Element.Emark <= 0)) > 0));
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Sky Blue), Event Player.O, 8);
  • Event Player.P = First Of(Sorted Array(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False), Distance Between(
  • Event Player.O, Eye Position(Current Array Element))));
  • Event Player.P = First Of(Sorted Array(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False),
  • Distance Between(Event Player.O, Eye Position(Current Array Element))));
  • Skip(3);
  • If(Count Of(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(
  • Event Player.O, Eye Position(Current Array Element)) <= 4 && Current Array Element.Emark <= 0)) > 0);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Sky Blue), Event Player.O, 8);
  • Event Player.P = First Of(Sorted Array(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False),
  • Distance Between(Event Player.O, Eye Position(Current Array Element))));
  • }
  • }
  • rule("Echo ult - Extra looping effects")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Echo;
  • }
  • conditions
  • {
  • Event Player.O != 0;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Sky Blue), Event Player.O, 3);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Sky Blue), Event Player.O, 20);
  • Wait(0.400, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Echo ult bounce sub")
  • {
  • event
  • {
  • Subroutine;
  • Eult2;
  • }
  • actions
  • {
  • Event Player.P = First Of(Sorted Array(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Current Array Element != Event Player.P && Current Array Element.Emark <= 0), Distance Between(
  • Event Player.O, Eye Position(Current Array Element))));
  • Wait(0.016, Ignore Condition);
  • Chase Player Variable At Rate(Event Player, O, Eye Position(Event Player.P), 40, Destination and Rate);
  • Event Player.P = First Of(Sorted Array(Filtered Array(All Living Players(All Teams),
  • Current Array Element.IsHuman == False && Current Array Element != Event Player.P && Current Array Element.Emark <= 0),
  • Distance Between(Event Player.O, Eye Position(Current Array Element))));
  • Wait(0.016, Ignore Condition);
  • Chase Player Variable At Rate(Event Player, O, Eye Position(Event Player.P), 40, Destination and Rate);
  • Wait Until(Event Player.O == Eye Position(Event Player.P), 8);
  • Modify Player Variable(Event Player, P2, Append To Array, Event Player.P);
  • Damage(Event Player.P, Event Player, 35);
  • Event Player.P.Emark = 5;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Sky Blue), Event Player.O, 20);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Sky Blue), Event Player.O, 50);
  • Wait(0.016, Ignore Condition);
  • Loop If((Count Of(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(Event Player.O, Eye Position(Current Array Element)) <= 10 &&
  • Current Array Element.Emark <= 0)) > 0));
  • Wait(0.016, Ignore Condition);
  • Loop If(Count Of(Filtered Array(All Living Players(All Teams), Current Array Element.IsHuman == False && Distance Between(
  • Event Player.O, Eye Position(Current Array Element)) <= 10 && Current Array Element.Emark <= 0)) > 0);
  • }
  • }
  • rule("Echo ult - mark effects")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.Emark > 0;
  • }
  • actions
  • {
  • Event Player.Slow += 75;
  • Event Player.Slow += 75;
  • Set Status(Event Player, Null, Stunned, 0.100);
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Event Player, Eye,
  • Visible To and Position, Color(Sky Blue), True);
  • Event Player.Icons[6] = Last Created Entity;
  • Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Hero Icon String(Hero Of(Event Player)),
  • Eye Position(Event Player) - Vector(0, 0.600, 0), 1.15,
  • Do Not Clip, Visible To Position and String, Color(Sky Blue), Default Visibility);
  • Event Player.Icons[7] = Last Text ID;
  • Event Player.Revealed += 5;
  • Chase Player Variable At Rate(Event Player, Emark, 0, 1, Destination and Rate);
  • Wait(1.5, Ignore Condition);
  • Wait(1.500, Ignore Condition);
  • Event Player.Slow -= 40;
  • Wait Until(Event Player. Emark <= 0, 3);
  • Destroy Icon(Event Player.Icons[6]);
  • Destroy In-World Text(Event Player.Icons[7]);
  • }
  • }
  • rule("Revealed effect (only applicable to zombies)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.Revealed > Null;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Chase Player Variable At Rate(Event Player, Revealed, False, 1, Destination and Rate);
  • disabled Stop Forcing Player Outlines(Event Player, All Players(All Teams));
  • Wait(0.016, Ignore Condition);
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), True,
  • Color(Green), Always);
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False), True,
  • Color(Green), Always);
  • Loop If Condition Is True;
  • disabled Wait Until(Event Player.Revealed <= 0, 9999);
  • Stop Forcing Player Outlines(Event Player, All Players(All Teams));
  • Wait(0.016, Ignore Condition);
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), True,
  • Color(Green), Default);
  • Start Forcing Player Outlines(Event Player, Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False), True,
  • Color(Green), Always);
  • }
  • }
  • rule("Apply knockback")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.KnockAway > 0;
  • }
  • actions
  • {
  • Apply Impulse(Event Player, Vector Towards(Position Of(Event Player), Vector(X Component Of(Position Of(
  • Event Player.KnockAwayFrom)), Y Component Of(Position Of(Event Player)), Z Component Of(Position Of(
  • Event Player.KnockAwayFrom)), Y Component Of(Position Of(Event Player)), Z Component Of(Position Of(
  • Event Player.KnockAwayFrom)))), Event Player.KnockAway * -1, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Up, Event Player.KnockAway * 0.400, To World, Cancel Contrary Motion);
  • Wait(0.016, Ignore Condition);
  • Event Player.KnockAway = 0;
  • Event Player.KnockAwayFrom = 0;
  • }
  • }
  • rule("Slowed effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.Slow > Null;
  • Event Player.Tslow == Null;
  • }
  • actions
  • {
  • Set Move Speed(Event Player, Event Player.InitSpeed - Event Player.Slow);
  • Chase Player Variable At Rate(Event Player, Slow, False, 7.500, Destination and Rate);
  • Wait(0.250, Ignore Condition);
  • Skip If(Event Player.BRTauntTime > False, 4);
  • Skip If(!Is Moving(Event Player), True);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Green), Position Of(Event Player), 2.500);
  • Loop If Condition Is True;
  • Stop Chasing Player Variable(Event Player, Slow);
  • }
  • }
  • rule("Slow cap at 95")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.Slow > 95;
  • }
  • actions
  • {
  • Event Player.Slow = 95;
  • Wait(0.050, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Speed boost effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.SpeedBoost > Null;
  • Event Player.Slow == Null;
  • }
  • actions
  • {
  • Set Move Speed(Event Player, Event Player.InitSpeed + Event Player.SpeedBoost);
  • Wait(0.200, Ignore Condition);
  • Loop If Condition Is True;
  • Set Move Speed(Event Player, Event Player.InitSpeed);
  • }
  • }
  • rule("Infect humans")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == True;
  • Is Dead(Event Player) == True;
  • Global.MatchStatus == 1;
  • }
  • actions
  • {
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy Effect(Event Player.Effects[True]);
  • Event Player.InfectPosition = Nearest Walkable Position(Position Of(Event Player));
  • Event Player.InfectTimer = Null;
  • Preload Hero(Event Player, Hero(Moira));
  • Preload Hero(Event Player, Hero(Reaper));
  • Small Message(Event Player, Custom String("Turning into zombie..."));
  • Create In-World Text(Remove From Array(All Players(All Teams), Players On Hero(Hero(Mercy), All Teams)), String("{0}: {1}",
  • Custom String("Turning into zombie in"), Event Player.InfectTimer), Event Player.InfectPosition, 1.250, Do Not Clip,
  • Visible To Position and String, Color(Green), Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.InfectTimer = 6;
  • Chase Player Variable At Rate(Event Player, InfectTimer, False, True, Destination and Rate);
  • Create Effect(Players On Hero(Hero(Mercy), All Teams), Orb, Color(Yellow), Event Player.InfectPosition + Vector(False, True,
  • False), 0.500, Visible To Position and Radius);
  • Event Player.Effects[False] = Last Created Entity;
  • Create In-World Text(Players On Hero(Hero(Mercy), All Teams), String("{0}: {1}", Custom String("Resurectable - time left"),
  • Event Player.InfectTimer), Event Player.InfectPosition, 1.250, Do Not Clip, Visible To Position and String, Color(Yellow),
  • Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Call Subroutine(InfectTimer);
  • Skip If(Is Alive(Event Player), True);
  • Event Player.IsHuman = False;
  • }
  • }
  • rule("Infect humans 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == False;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Destroy Effect(First Of(Event Player.Effects));
  • Destroy HUD Text(First Of(Event Player.Huds));
  • Destroy HUD Text(Event Player.Huds[True]);
  • Destroy HUD Text(Event Player.Huds[2]);
  • Destroy HUD Text(Event Player.Huds[3]);
  • Destroy HUD Text(Event Player.Huds[4]);
  • Destroy HUD Text(Event Player.Huds[5]);
  • Destroy HUD Text(Event Player.Huds[6]);
  • Destroy HUD Text(Event Player.Huds[7]);
  • Destroy HUD Text(Event Player.Huds[8]);
  • Destroy HUD Text(Event Player.Huds[9]);
  • Destroy In-World Text(Event Player.Huds[3]);
  • Destroy In-World Text(Event Player.Huds[4]);
  • Destroy Icon(First Of(Event Player.Icons));
  • Event Player.InfectPosition = Nearest Walkable Position(Position Of(Event Player));
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Green), Event Player.InfectPosition, 6);
  • Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Green), Event Player.InfectPosition, 3);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(Green), Event Player.InfectPosition, 200);
  • Destroy Icon(First Of(Event Player.Icons));
  • Destroy In-World Text(First Of(Event Player.Huds));
  • Respawn(Event Player);
  • Wait(0.100, Ignore Condition);
  • Start Forcing Player To Be Hero(Event Player, Hero(Reaper));
  • Stop Damage Modification(First Of(Event Player.MiscIDs));
  • Big Message(All Players(All Teams), Custom String("{0} {1}", Event Player, Custom String("INFECTED!")));
  • Wait(0.100, Ignore Condition);
  • Teleport(Event Player, Event Player.InfectPosition);
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False), Event Player, Diamond,
  • Visible To and Position, Color(Green), True);
  • Event Player.Icons[True] = Last Created Entity;
  • }
  • }
  • rule("Infect timer sub")
  • {
  • event
  • {
  • Subroutine;
  • InfectTimer;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Loop If(Event Player.InfectTimer > False);
  • }
  • }
  • rule("Zombies increase mutation chance")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == False;
  • }
  • actions
  • {
  • Event Player.MutationChance += 10;
  • }
  • }
  • rule("Zombies and humans can't damage teammates")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Start Damage Modification(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == True), Filtered Array(
  • All Players(All Teams), Current Array Element.IsHuman == True), 0, Receivers Damagers and Damage Percent);
  • Start Damage Modification(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False), Filtered Array(
  • All Players(All Teams), Current Array Element.IsHuman == False), 0, Receivers Damagers and Damage Percent);
  • }
  • }
  • rule("Humans damage fall-off")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Event Player.IsHuman == True;
  • Hero Of(Event Player) != Hero(Widowmaker);
  • Hero Of(Event Player) != Hero(Torbjörn);
  • Hero Of(Event Player) != Hero(Brigitte);
  • Hero Of(Event Player) != Hero(Reinhardt);
  • }
  • actions
  • {
  • Start Damage Modification(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False && Distance Between(
  • Position Of(Event Player), Position Of(Current Array Element)) >= 17.500), Event Player, 50,
  • Receivers Damagers and Damage Percent);
  • Event Player.MiscIDs[False] = Last Damage Modification ID;
  • }
  • }
  • rule("Heal on melee kill")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • All;
  • All;
  • }
  • conditions
  • {
  • disabled Event Ability == Button(Melee);
  • Hero Of(Event Player) != Hero(Brigitte);
  • Is Meleeing(Event Player) == True;
  • }
  • actions
  • {
  • Heal(Event Player, Event Player, Max Health(Event Player));
  • Play Effect(Event Player, Buff Explosion Sound, Color(White), Event Player, 100);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Yellow), Event Player, 1.500);
  • }
  • }
  • rule("Humans deal bonus melee damage")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Ability == Button(Melee);
  • Event Player.IsHuman == True;
  • }
  • actions
  • {
  • Event Player.IsMelee = True;
  • Wait(False, Ignore Condition);
  • If(Event Player.StrongMelee == True);
  • Damage(Victim, Event Player, 55 - Event Damage);
  • End;
  • If(Event Player.StrongMelee == False);
  • Damage(Victim, Event Player, 35 - Event Damage);
  • End;
  • Damage(Victim, Event Player, 55 - Event Damage);
  • End;
  • If(Event Player.StrongMelee == False);
  • Damage(Victim, Event Player, 35 - Event Damage);
  • End;
  • Wait(0.100, Ignore Condition);
  • Event Player.IsMelee = False;
  • }
  • }
  • rule("Zombies mutate (+ spawn on spawnpoint)")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == False;
  • }
  • actions
  • {
  • Call Subroutine(IsDead);
  • Skip If(Event Player.MutationEnable == Null, 10);
  • Skip If(!(Event Player.IsHuman == False && Global.HumanKills >= 40 && Event Player.MutationChance >= 100 && Random Real(0, 100)
  • <= Event Player.MutationChance && Number Of Heroes(Hero(Bastion), All Teams) < True), 2);
  • Start Forcing Player To Be Hero(Event Player, Hero(Bastion));
  • Skip(10);
  • Skip If(!(Event Player.IsHuman == False && Event Player.MutationChance >= 40 && Random Real(0, 100)
  • <= Event Player.MutationChance), 2);
  • Call Subroutine(MutateTier3);
  • Call Subroutine(MutateTier3);
  • Skip(7);
  • Skip If(!(Event Player.IsHuman == False && Event Player.MutationChance >= 20 && Random Real(0, 100)
  • <= Event Player.MutationChance), 2);
  • Call Subroutine(MutateTier2);
  • Skip(4);
  • Skip If(Random Real(0, 100) > 40 + (Event Player.MutationChance * 0.5), 2);
  • Skip If(Random Real(0, 100) > 40 + Event Player.MutationChance * 0.500, 2);
  • Start Forcing Player To Be Hero(Event Player, Hero(Reaper));
  • Skip(1);
  • Start Forcing Player To Be Hero(Event Player, Hero(Moira));
  • Skip If(Event Player.ZombieSpawn == Null, 3);
  • Teleport(Event Player, Event Player.ZombieSpawn);
  • Wait(0.100, Ignore Condition);
  • Event Player.ZombieSpawn = Null;
  • Event Player.Freeze = Null;
  • Event Player.MutateRandom = 0;
  • }
  • }
  • rule("Tier 3 mutate sub")
  • {
  • event
  • {
  • Subroutine;
  • MutateTier3;
  • }
  • actions
  • {
  • If(Event Player.MutationChance < 60);
  • Event Player.MutateRandom = Random Real(0, 60);
  • Event Player.MutateRandom = Random Real(0, 60);
  • End;
  • If(Event Player.MutationChance >= 60);
  • Event Player.MutateRandom = Random Real(0, Event Player.MutationChance - 60 + 70);
  • Event Player.MutateRandom = Random Real(0, Event Player.MutationChance - 60 + 70);
  • End;
  • Wait(0.016, Ignore Condition);
  • If(Event Player.MutateRandom <= 25);
  • Start Forcing Player To Be Hero(Event Player, Hero(Winston));
  • Start Forcing Player To Be Hero(Event Player, Hero(Winston));
  • End;
  • If(Event Player.MutateRandom > 25 && Event Player.MutateRandom <= 47.5);
  • Start Forcing Player To Be Hero(Event Player, Hero(Roadhog));
  • If(Event Player.MutateRandom > 25 && Event Player.MutateRandom <= 47.500);
  • Start Forcing Player To Be Hero(Event Player, Hero(Roadhog));
  • End;
  • If(Event Player.MutateRandom > 47.5 && Event Player.MutateRandom <= 60);
  • Start Forcing Player To Be Hero(Event Player, Hero(Genji));
  • If(Event Player.MutateRandom > 47.500 && Event Player.MutateRandom <= 60);
  • Start Forcing Player To Be Hero(Event Player, Hero(Genji));
  • End;
  • If(Event Player.MutateRandom > 60);
  • Start Forcing Player To Be Hero(Event Player, Hero(Orisa));
  • Start Forcing Player To Be Hero(Event Player, Hero(Orisa));
  • End;
  • }
  • }
  • rule("Tier 2 mutate sub")
  • {
  • event
  • {
  • Subroutine;
  • MutateTier2;
  • }
  • actions
  • {
  • Event Player.MutateRandom = Random Real(0, 100);
  • Event Player.MutateRandom = Random Real(0, 100);
  • Wait(0.016, Ignore Condition);
  • If(Event Player.MutateRandom <= 60);
  • Start Forcing Player To Be Hero(Event Player, Hero(D.Va));
  • Start Forcing Player To Be Hero(Event Player, Hero(D.Va));
  • End;
  • If(Event Player.MutateRandom > 60);
  • Start Forcing Player To Be Hero(Event Player, Hero(Pharah));
  • Start Forcing Player To Be Hero(Event Player, Hero(Pharah));
  • End;
  • }
  • }
  • rule("Is dead sub")
  • {
  • event
  • {
  • Subroutine;
  • IsDead;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Loop If(Is Dead(Event Player));
  • }
  • }
  • rule("Zombies subtract mutation chance on kill")
  • {
  • event
  • {
  • Player Earned Elimination;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == False;
  • Hero Of(Event Player) != Hero(Reaper);
  • }
  • actions
  • {
  • Skip If(Event Player.MutationChance < 20, 2);
  • Event Player.MutationChance -= 20;
  • Skip(True);
  • Event Player.MutationChance = Null;
  • }
  • }
  • rule("Enable respawning on zombies")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == False;
  • }
  • actions
  • {
  • Enable Built-In Game Mode Respawning(Event Player);
  • }
  • }
  • rule("Humans add kills to eachother")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == True;
  • }
  • actions
  • {
  • Global.HumanKills += True;
  • }
  • }
  • rule("Zombie start heal")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Crouch)) == True;
  • Event Player.IsHuman == False;
  • Hero Of(Event Player) != Hero(Bastion);
  • Has Status(Event Player, Asleep) == False;
  • }
  • actions
  • {
  • Start Heal Over Time(Event Player, Event Player, 9999, 20);
  • Event Player.MiscIDs[False] = Last Heal Over Time ID;
  • }
  • }
  • rule("Zombie stop heal")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Crouch)) == False;
  • Event Player.IsHuman == False;
  • }
  • actions
  • {
  • Stop Heal Over Time(First Of(Event Player.MiscIDs));
  • }
  • }
  • rule("Invincibility effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Status(Event Player, Invincible) == True;
  • (Hero Of(Event Player) == Hero(Zenyatta) && Is Using Ultimate(Event Player)) == False;
  • (Hero Of(Event Player) == Hero(Mei) && Is Using Ability 1(Event Player)) == False;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Yellow), Position Of(Event Player), 3);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Yellow), Event Player, 75);
  • Create Effect(Remove From Array(All Players(All Teams), Event Player), Light Shaft, Color(Yellow), Position Of(Event Player), True,
  • Visible To Position and Radius);
  • Event Player.MiscIDs[True] = Last Created Entity;
  • Small Message(Event Player, Custom String("INVINCIBLE!"));
  • Call Subroutine(IsCondTrue);
  • Destroy Effect(Event Player.MiscIDs[True]);
  • Small Message(Event Player, Custom String("Invincibility wore off"));
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Yellow), Position Of(Event Player), 3);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Yellow), Event Player, 50);
  • }
  • }
  • rule("Freezing effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Event Player.Freeze || Event Player.FreezeTimer) > 0;
  • }
  • actions
  • {
  • Chase Player Variable At Rate(Event Player, FreezeTimer, 0, 1, Destination and Rate);
  • Chase Player Variable At Rate(Event Player, Freeze, 0, 10, Destination and Rate);
  • Call Subroutine(MEIfreeze);
  • Skip If(Event Player.Freeze > 0, 1);
  • Abort;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Aqua), Position Of(Event Player), 6);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(Aqua), Event Player, 75);
  • Stop Chasing Player Variable(Event Player, Freeze);
  • Set Status(Event Player, Null, Frozen, 1.200 + Max Health(Event Player) * 0.003);
  • Call Subroutine(IsFrozen);
  • Set Move Speed(Event Player, Event Player.InitSpeed - Event Player.Slow);
  • Event Player.Freeze = 0;
  • Event Player.FreezeTimer = 0;
  • }
  • }
  • rule("Freezing effect sub")
  • {
  • event
  • {
  • Subroutine;
  • MEIfreeze;
  • }
  • actions
  • {
  • Wait(0.150, Ignore Condition);
  • Set Move Speed(Event Player, Event Player.InitSpeed - Event Player.Slow - Event Player.Freeze * 0.500);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Aqua), Position Of(Event Player), 2);
  • Skip If(Event Player.FreezeTimer == 0, 2);
  • Loop If(Event Player.Freeze < 150);
  • Skip(2);
  • Set Move Speed(Event Player, Event Player.InitSpeed - Event Player.Slow);
  • Event Player.Freeze = 0;
  • }
  • }
  • rule("Frozen sub")
  • {
  • event
  • {
  • Subroutine;
  • IsFrozen;
  • }
  • actions
  • {
  • Set Healing Dealt(Event Player, 25);
  • Wait(0.100, Ignore Condition);
  • Loop If(Has Status(Event Player, Frozen));
  • Set Healing Dealt(Event Player, 100);
  • }
  • }
  • rule("Barrier effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.BarrierHealth > Null;
  • Is Alive(Event Player) == True;
  • Event Player.BarrierTime > Null;
  • }
  • actions
  • {
  • Remove Health Pool From Player(Event Player.MiscIDs[13]);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Yellow), Event Player, 4);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Yellow), Event Player, 50);
  • Set Status(Event Player, Null, Unkillable, 9999);
  • Small Message(Event Player, Custom String("Barrier received!"));
  • Create Effect(Remove From Array(All Players(All Teams), Event Player), Sphere, Color(Yellow), Event Player, Max Health(
  • disabled Set Status(Event Player, Null, Unkillable, 9999);
  • disabled Small Message(Event Player, Custom String("Shields received!"));
  • disabled Create Effect(Remove From Array(All Players(All Teams), Event Player), Sphere, Color(Yellow), Event Player, Max Health(
  • Event Player) * 0.013, Visible To Position and Radius);
  • Event Player.MiscIDs[11] = Last Created Entity;
  • disabled Event Player.MiscIDs[11] = Last Created Entity;
  • Create In-World Text(Remove From Array(All Players(All Teams), Event Player), String("{0}: {1}", Custom String("Barrier health"),
  • Event Player.BarrierHealth), Eye Position(Event Player) + Vector(False, True, False), 1.150, Clip Against Surfaces,
  • Visible To Position and String, Color(Yellow), Default Visibility);
  • Event Player.Huds[3] = Last Text ID;
  • Event Player.MiscIDs[11] = Last Text ID;
  • Create HUD Text(Event Player, Icon String(Heart), Custom String("Barrier"), String("{0}: {1}", Custom String("Barrier health"),
  • Custom String("{0} - {1}", Event Player.BarrierHealth, String("{0}: {1}", Custom String("Duration"),
  • Event Player.BarrierTime))), Left, 10, Color(Yellow), Color(Yellow), Color(Yellow), Visible To and String, Default Visibility);
  • Event Player.Huds[4] = Last Text ID;
  • Event Player.MiscIDs[12] = Last Text ID;
  • Chase Player Variable At Rate(Event Player, BarrierTime, False, True, Destination and Rate);
  • Call Subroutine(IsCondTrue);
  • Clear Status(Event Player, Unkillable);
  • Small Message(Event Player, Custom String("Barrier wore off."));
  • Destroy Effect(Event Player.MiscIDs[11]);
  • Destroy In-World Text(Event Player.Huds[3]);
  • Destroy HUD Text(Event Player.Huds[4]);
  • Wait(0.016, Ignore Condition);
  • Add Health Pool To Player(Event Player, Shields, Event Player.BarrierHealth, False, True);
  • Event Player.MiscIDs[13] = Last Created Health Pool;
  • Wait Until(Health(Event Player) <= Event Player.InitHp || Event Player.BarrierTime <= 0, 9999);
  • disabled Clear Status(Event Player, Unkillable);
  • disabled Small Message(Event Player, Custom String("Shields wore off."));
  • disabled Destroy Effect(Event Player.MiscIDs[11]);
  • Destroy In-World Text(Event Player.MiscIDs[11]);
  • Destroy HUD Text(Event Player.MiscIDs[12]);
  • Remove Health Pool From Player(Event Player.MiscIDs[13]);
  • Play Effect(Event Player, Debuff Impact Sound, Color(Yellow), Event Player, 75);
  • Event Player.BarrierHealth = Null;
  • Event Player.BarrierTime = Null;
  • Event Player.MiscIDs[13] = Null;
  • Stop Chasing Player Variable(Event Player, BarrierTime);
  • }
  • }
  • rule("Barrier absorb damage<barrier health")
  • rule("Shields absorb damage with shields up")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.BarrierHealth > Null;
  • Event Damage < Event Player.BarrierHealth;
  • disabled Event Damage < Event Player.BarrierHealth;
  • }
  • actions
  • {
  • Heal(Event Player, Null, Event Damage);
  • disabled Heal(Event Player, Null, Event Damage);
  • Event Player.BarrierHealth -= Event Damage;
  • }
  • }
  • rule("Barrier absorb damage>barrier health")
  • disabled rule("Barrier absorb damage>barrier health")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.BarrierHealth > Null;
  • Event Damage >= Event Player.BarrierHealth;
  • (Event Player.R == True && Hero Of(Event Player) == Hero(Baptiste)) == False;
  • }
  • actions
  • {
  • Stop Chasing Player Variable(Event Player, BarrierTime);
  • Heal(Event Player, Null, Event Player.BarrierHealth);
  • Wait(False, Ignore Condition);
  • Event Player.BarrierHealth = Null;
  • Event Player.BarrierTime = Null;
  • }
  • }
  • rule("Zombies create spawnpoint")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == False;
  • Is Alive(Event Player) == True;
  • Global.MatchStatus == 1;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Is Button Held(Event Player, Button(Crouch)) == True;
  • Event Player.DamageTaken == Null;
  • }
  • actions
  • {
  • Small Message(Event Player, Custom String("Setting spawnpoint..."));
  • Wait(1.500, Abort When False);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Green), Position Of(Event Player), 3);
  • Play Effect(Event Player, Ring Explosion Sound, Color(Green), Position Of(Event Player), 100);
  • Event Player.ZombieSpawn = Position Of(Event Player);
  • }
  • }
  • rule("Ult charged sub")
  • {
  • event
  • {
  • Subroutine;
  • ultCharged;
  • }
  • actions
  • {
  • Small Message(Event Player, Custom String("ultimate ability enabled!"));
  • Play Effect(Event Player, Buff Impact Sound, Color(White), Event Player, 75);
  • Event Player.B = 1;
  • }
  • }
  • rule("Damage recently taken")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == False;
  • }
  • actions
  • {
  • Event Player.DamageTaken = Event Damage;
  • Set Healing Dealt(Event Player, 50);
  • Wait(1, Restart When True);
  • Set Healing Dealt(Event Player, 100);
  • Wait(2, Restart When True);
  • Event Player.DamageTaken = Null;
  • }
  • }
  • rule("Humans cant damage humans FOR REAL")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == True;
  • Attacker.IsHuman == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Heal(Event Player, Null, Event Damage);
  • }
  • }
  • rule("Zombies cant damage zombies FOR REAL")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsHuman == False;
  • Attacker.IsHuman == False;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Heal(Event Player, Null, Event Damage);
  • }
  • }
  • rule("Human victory")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.HumanKills >= 60;
  • }
  • actions
  • {
  • Big Message(All Players(All Teams), Custom String("HUMANS WIN!"));
  • Set Status(All Players(All Teams), Null, Frozen, 9999);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), All Players(All Teams), 200);
  • Wait(0.250, Ignore Condition);
  • Declare Player Victory(Random Value In Array(All Players(All Teams)));
  • }
  • }
  • rule("Zombie victory")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Count Of(Filtered Array(All Players(All Teams), Current Array Element.IsHuman == False)) == Number Of Players(All Teams);
  • }
  • actions
  • {
  • Big Message(All Players(All Teams), Custom String("ZOMBIES WIN!"));
  • Set Status(All Players(All Teams), Null, Frozen, 9999);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(White), All Players(All Teams), 200);
  • Wait(0.250, Ignore Condition);
  • Declare Player Victory(Random Value In Array(All Players(All Teams)));
  • }
  • }
  • disabled rule("DUMMY BOT")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Roadhog), All Teams, -1, Position Of(Event Player), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), All Teams, -1, Position Of(Event Player), Vector(0, 0, 0));
  • }
  • }
  • disabled rule("DUMMY BOT COME HERE")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Call Subroutine(IsDead);
  • Teleport(Event Player, Position Of(Random Value In Array(Filtered Array(All Players(All Teams),
  • Current Array Element.IsHuman == True))));
  • }
  • }
Join the Workshop.codes Discord