Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "Island Party - Heroes Minigames v2.0.1-21 Play rounds of 21 classic and new games as minigames and score points. Widow HS only, McCree Hot Potato, Zen Sparta, Echo Rings... Code: W468T Join my discord.gg/ZdukXgB to choose the next minigame or give feedback. ~Created by Jokaes#2263 My codes in: jokaes.github.io"
  • Description: "Island Party - Heroes Minigames v3.0.0-23 Play rounds of 23 classic and new games as minigames and score points. Widow HS only, McCree Hot Potato, Zen Sparta, Echo Rings... Code: W468T Join my discord.io/IslandParty to choose the next minigame or give feedback. ~Created by Jokaes#2263 My codes in: jokaes.github.io"
  • }
  • lobby
  • {
  • Allow Players Who Are In Queue: Yes
  • Map Rotation: After A Game
  • Match Voice Chat: Enabled
  • Max Spectators: 6
  • Return To Lobby: Never
  • }
  • modes
  • {
  • Deathmatch
  • {
  • enabled maps
  • {
  • Workshop Island
  • Workshop Island Night
  • }
  • }
  • General
  • {
  • Allow Hero Switching: Off
  • Game Mode Start: Immediately
  • Hero Limit: Off
  • Kill Cam: Off
  • Kill Feed: Off
  • Respawn As Random Hero: On
  • Score To Win: 30
  • Self Initiated Respawn: Off
  • Skins: Off
  • }
  • }
  • heroes
  • {
  • General
  • {
  • Ana
  • {
  • Biotic Grenade: Off
  • Damage Dealt: 500%
  • Damage Received: 500%
  • Health: 10%
  • No Ammunition Requirement: On
  • Quick Melee: Off
  • Sleep Dart Cooldown Time: 25%
  • Ultimate Ability Nano Boost: Off
  • }
  • Bastion
  • {
  • Infinite Ultimate Duration: On
  • No Ammunition Requirement: On
  • Quick Melee: Off
  • Reconfigure: Off
  • Self-Repair: Off
  • Spawn With Ultimate Ready: On
  • Ultimate Duration: 500%
  • Ultimate Generation - Combat Configuration: Tank: 500%
  • Ultimate Generation - Passive Configuration: Tank: 500%
  • Ultimate Generation Configuration: Tank: 500%
  • }
  • Brigitte
  • {
  • Barrier Shield Cooldown Time: 200%
  • Barrier Shield Recharge Rate: 150%
  • Damage Dealt: 500%
  • Jump Vertical Speed: 200%
  • Primary Fire: Off
  • Quick Melee: Off
  • Repair Pack: Off
  • Shield Bash Cooldown Time: 35%
  • Ultimate Generation - Combat Rally: 200%
  • Ultimate Generation - Passive Rally: 0%
  • Whip Shot Cooldown Time: 30%
  • Whip Shot Knockback Scalar: 200%
  • }
  • D.Va
  • {
  • Boosters Cooldown Time: 0%
  • Damage Dealt: 10%
  • Damage Received: 10%
  • Defense Matrix: Off
  • Micro Missiles: Off
  • Primary Fire: Off
  • Quick Melee: Off
  • Ultimate Generation - Combat Self-Destruct: 0%
  • Ultimate Generation - Passive Self-Destruct: 0%
  • }
  • Doomfist
  • {
  • Damage Dealt: 10%
  • Damage Received: 10%
  • Health: 500%
  • No Ammunition Requirement: On
  • Quick Melee: Off
  • Rocket Punch Cooldown Time: 50%
  • Rocket Punch Knockback Scalar: 250%
  • Seismic Slam: Off
  • Ultimate Generation - Combat Meteor Strike: 50%
  • Ultimate Generation - Passive Meteor Strike: 0%
  • }
  • Echo
  • {
  • Flight Cooldown Time: 50%
  • Focusing Beam Cooldown Time: 50%
  • Movement Speed: 200%
  • No Ammunition Requirement: On
  • Primary Fire: Off
  • Sticky Bombs: Off
  • Ultimate Ability Duplicate: Off
  • }
  • Genji
  • {
  • Damage Dealt: 500%
  • Deflect: Off
  • No Ammunition Requirement: On
  • Primary Fire: Off
  • Secondary Fire: Off
  • Swift Strike Cooldown Time: 30%
  • Ultimate Generation - Combat Dragonblade: 500%
  • Ultimate Generation - Passive Dragonblade: 0%
  • Ultimate Generation Dragonblade: 200%
  • }
  • Lúcio
  • {
  • Amp It Up: Off
  • Crossfade: Off
  • No Ammunition Requirement: On
  • Primary Fire: Off
  • Quick Melee: Off
  • Soundwave: Off
  • Ultimate Ability Sound Barrier: Off
  • }
  • McCree
  • {
  • Combat Roll Cooldown Time: 80%
  • Damage Dealt: 10%
  • Damage Received: 10%
  • Flashbang: Off
  • Jump Vertical Speed: 300%
  • No Ammunition Requirement: On
  • Secondary Fire: Off
  • Ultimate Ability Deadeye: Off
  • }
  • Mei
  • {
  • Damage Dealt: 500%
  • Damage Received: 500%
  • Health: 10%
  • No Ammunition Requirement: On
  • Primary Fire: Off
  • Projectile Gravity: 500%
  • Projectile Speed: 38%
  • Ultimate Generation - Combat Blizzard: 125%
  • }
  • Mercy
  • {
  • Damage Dealt: 500%
  • Damage Received: 500%
  • Guardian Angel: Off
  • Movement Speed: 150%
  • No Ammunition Requirement: On
  • Primary Fire: Off
  • Resurrect: Off
  • Secondary Fire: Off
  • Ultimate Generation - Combat Valkyrie: 500%
  • Ultimate Generation Valkyrie: 500%
  • }
  • Reinhardt
  • {
  • Barrier Field: Off
  • Charge Cooldown Time: 90%
  • Fire Strike Cooldown Time: 50%
  • Ultimate Generation - Combat Earthshatter: 0%
  • Ultimate Generation - Passive Earthshatter: 0%
  • }
  • Roadhog
  • {
  • Chain Hook Cooldown Time: 25%
  • Chain Hook Cooldown Time: 38%
  • Damage Dealt: 10%
  • Damage Received: 10%
  • Movement Speed: 150%
  • No Ammunition Requirement: On
  • Primary Fire: Off
  • Quick Melee: Off
  • Secondary Fire: Off
  • Take a Breather: Off
  • Ultimate Ability Whole Hog: Off
  • Ultimate Generation - Combat Whole Hog: 0%
  • Ultimate Generation - Passive Whole Hog: 500%
  • Ultimate Generation Whole Hog: 180%
  • }
  • Sigma
  • {
  • Accretion Cooldown Time: 25%
  • Damage Dealt: 500%
  • Experimental Barrier Cooldown Time: 200%
  • Experimental Barrier Recharge Rate: 50%
  • Health: 25%
  • Jump Vertical Speed: 150%
  • Movement Speed: 150%
  • Primary Fire: Off
  • Projectile Speed: 162%
  • Quick Melee: Off
  • Ultimate Generation - Combat Gravitic Flux: 260%
  • Ultimate Generation - Passive Gravitic Flux: 0%
  • Ultimate Generation Gravitic Flux: 260%
  • }
  • Soldier: 76
  • {
  • Biotic Field: Off
  • Helix Rockets: Off
  • No Ammunition Requirement: On
  • Primary Fire: Off
  • Quick Melee: Off
  • Ultimate Ability Tactical Visor: Off
  • }
  • Sombra
  • {
  • Hack Cooldown Time: 0%
  • No Ammunition Requirement: On
  • Primary Fire: Off
  • Quick Melee: Off
  • Ultimate Generation - Combat EMP: 10%
  • Ultimate Generation - Passive EMP: 500%
  • }
  • Symmetra
  • {
  • No Ammunition Requirement: On
  • Primary Fire: Off
  • Quick Melee: Off
  • Secondary Fire: Off
  • Sentry Turret: Off
  • Teleporter Cooldown Time: 0%
  • Ultimate Ability Photon Barrier: Off
  • }
  • Torbjörn
  • {
  • Deploy Turret: Off
  • No Ammunition Requirement: On
  • Overload Cooldown Time: 25%
  • Secondary Fire: Off
  • Ultimate Ability Molten Core: Off
  • Weapons Enabled: Forge Hammer Only
  • }
  • Tracer
  • {
  • Damage Dealt: 10%
  • Damage Received: 10%
  • Movement Speed: 130%
  • No Ammunition Requirement: On
  • Primary Fire: Off
  • Recall Cooldown Time: 1%
  • Ultimate Ability Pulse Bomb: Off
  • }
  • Widowmaker
  • {
  • Grappling Hook Cooldown Time: 25%
  • No Ammunition Requirement: On
  • No Automatic Fire: On
  • Quick Melee: Off
  • Receive Headshots Only: On
  • Ultimate Ability Infra-Sight: Off
  • Venom Mine: Off
  • }
  • Winston
  • {
  • Barrier Projector: Off
  • Damage Dealt: 10%
  • Damage Received: 10%
  • Health: 500%
  • Infinite Ultimate Duration: On
  • Jump Pack Knockback Scalar: 400%
  • No Ammunition Requirement: On
  • Primal Rage Melee Knockback Scalar: 300%
  • Spawn With Ultimate Ready: On
  • Ultimate Duration: 500%
  • Ultimate Generation - Combat Primal Rage: 500%
  • Ultimate Generation - Passive Primal Rage: 500%
  • Ultimate Generation Primal Rage: 500%
  • }
  • Zenyatta
  • {
  • Damage Dealt: 10%
  • Damage Received: 10%
  • No Ammunition Requirement: On
  • Orb of Discord: Off
  • Orb of Harmony: Off
  • Primary Fire: Off
  • Secondary Fire: Off
  • Ultimate Ability Transcendence: Off
  • }
  • disabled heroes
  • {
  • Ashe
  • Baptiste
  • Hanzo
  • Junkrat
  • Moira
  • Orisa
  • Reaper
  • Reinhardt
  • Symmetra
  • Wrecking Ball
  • Zarya
  • }
  • }
  • }
  • }
  • variables
  • {
  • global:
  • 0: timeCounter
  • 1: roundTimer
  • 2: roundNumber
  • 3: playersStartOfTheRound
  • 4: heroList
  • 5: heroModeSelector
  • 6: heroesRounds
  • 7: heroOfTheRound
  • 8: heroesOfPreviousRounds
  • 9: minigameStringTitles
  • 10: minigameStringCodes
  • 11: minigameStringCredit
  • 12: minigameStringInstructions
  • 13: discordSubtringArray
  • 14: pointfeedHud
  • 15: pointfeedHudTimes
  • 16: pointfeedHudId
  • 17: pointfeedHudTimesIt
  • 18: hofPlayers
  • 19: hofPlayersCounter
  • 20: crownPos
  • 21: crownEffect
  • 22: tracerQueen
  • 23: soldierObjectivePos
  • 24: soldierObjectiveEffects
  • 25: soldierDestructorIt
  • 26: tracerQueenHud
  • 27: potatoPos
  • 28: potatoHolder
  • 29: potatoEffect
  • 30: potatoIcon
  • 31: commonRingsEffects
  • 32: rareRingsEffects
  • 33: epicRingsEffects
  • 34: legendaryRingsEffects
  • 35: commonRingsPos
  • 36: rareRingsPos
  • 37: epicRingsPos
  • 38: legendaryRingsPos
  • 39: ringsIt
  • 40: echoTeleportEffects
  • 41: echoTeleportPos
  • 42: echoRightHUD
  • 42: echoRightHud
  • 43: dvaObjectivePos
  • 44: dvaObjectiveEffects
  • 45: dvaDestructorIt
  • 46: dvaObjectiveIcons
  • 47: roadhogHoleRadius
  • 48: roadhogHoleEffects
  • 49: roadhogHoleEffectsIt
  • 50: meiSnowEffects
  • 51: meiSnowPos
  • 52: meiSnowIt
  • 53: snotPos
  • 54: snotPosRandomXComp
  • 55: snotPosRandomYComp
  • 56: snotPosRandomZComp
  • 57: snotEffects
  • 58: destructorIt
  • 59: heroOfLastRound
  • 60: islandPartyCode
  • 61: islandPartySpecialEdition
  • 62: tracerQueenPositionIcon
  • 63: firstToX
  • 64: minigamesToggleArray
  • 65: workshopSettingsIt
  • 66: scoreToWin
  • 67: topScorerAfterAllMinigames
  • 68: symColorDeciding
  • 69: symPhase
  • 70: symColorSelected
  • 71: symColorsPositions
  • 72: symPlayersInTheSelectedColor
  • 73: symInnerRound
  • 74: symTimeToReachTheColor
  • 75: symSelectedColorHud
  • 76: symTimeToReachTheColorHud
  • 77: symColoredSpheresEffectsAndText
  • 78: symVictims
  • player:
  • 0: queenPoints
  • 1: queenPointsHud
  • 2: soldierSprint
  • 3: soldierPoints
  • 4: soldierPointsHud
  • 5: mccreeInvincibleTime
  • 6: mccreeInvincibleText
  • 7: mccreeInvincibleHud
  • 8: mccreeHealthHud
  • 9: pharahHealEffect
  • 10: pharahDamageBoostEffect
  • 11: pharahHeal
  • 12: pharahDamageBoost
  • 13: pharahHealHud
  • 14: pharahDamageBoostHud
  • 15: echoPoints
  • 16: echoPointsHud
  • 17: echoClosestRing
  • 18: sigmaUsingGrasp
  • 19: sigmaCatch
  • 20: dvaPoints
  • 21: dvaPointsHud
  • 22: roadhogPostion
  • 23: roadhogYanked
  • 24: dvaDistanceText
  • 25: roadhogFalling
  • 26: meiMeeleCatchCooldown
  • 27: meiAmmo
  • 28: meiClosestSnow
  • 29: meiIsPickingSnow
  • 30: meiPickingSnowTimer
  • 31: meiIsCatching
  • 32: meiCatchCooldownHud
  • 33: meiAmmoHud
  • 34: meiHasAmmoIcon
  • 35: thirdCameraDirection
  • 36: thirdCameraZoom
  • 37: isOnThirdCamera
  • 38: meiCrouchOnMeText
  • 39: meiHasPickedUpAnyAmmo
  • 40: lucioClosestSnotIcon
  • 41: meiCatchActiveCooldownHud
  • 42: meiCatchSphereEffect
  • 43: lucioSpeed
  • 44: lucioPoints
  • 45: lucioPointsHud
  • 46: lucioClosestSnot
  • 47: lucioHasBeenOnWall
  • 48: playerSpeedHud
  • 49: discordLinkForHofPlayersHud
  • 50: playerClosestObjectiveIcon
  • 51: reinLastAttacker
  • 52: reinAttackerCreditTimer
  • 53: reinTempUltCharge
  • 54: reinUltTimer
  • 55: reinIsAlive
  • 56: reinChargeCancelTimer
  • 57: reinChargeTimer
  • 58: reinCanCancelCharge
  • 59: reinAuraEffect
  • 60: reinUltHud
  • 61: reinExplosionCenter
  • 62: symFirstPlayerInColorText
  • 63: symOrdinalString
  • 64: symOrdinalPosHud
  • 65: symIn
  • 66: sombraHackedPostion
  • }
  • subroutines
  • {
  • 0: gameModeDescriptionMessages
  • 1: startNewRound
  • 2: restartStats
  • 3: symTheColorIsSelectedTrigger
  • 4: symScoring
  • }
  • rule("Is in setup {GLOBAL}")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is In Setup == True;
  • }
  • actions
  • {
  • Global.roundTimer = 60;
  • Enable Death Spectate All Players(All Players(All Teams));
  • Disable Built-In Game Mode Respawning(All Players(All Teams));
  • Set Respawn Max Time(All Players(All Teams), 60);
  • Global.islandPartyCode = Custom String("W468T");
  • Global.islandPartySpecialEdition = Custom String("");
  • Global.roundNumber = 0;
  • disabled Global.heroModeSelector = Random Integer(0, Count Of(Global.heroList) - 1);
  • Global.heroList = Empty Array;
  • Global.heroesOfPreviousRounds = Empty Array;
  • Global.discordSubtringArray = Array(Custom String("vote for the next minigame"), Custom String("give feedback"), Custom String(
  • "report bugs"));
  • Modify Global Variable(heroList, Append To Array, Hero(Ana));
  • Modify Global Variable(heroList, Append To Array, Hero(Bastion));
  • Modify Global Variable(heroList, Append To Array, Hero(Brigitte));
  • Modify Global Variable(heroList, Append To Array, Hero(Doomfist));
  • Modify Global Variable(heroList, Append To Array, Hero(D.Va));
  • Modify Global Variable(heroList, Append To Array, Hero(Echo));
  • Modify Global Variable(heroList, Append To Array, Hero(Genji));
  • Modify Global Variable(heroList, Append To Array, Hero(Lúcio));
  • Modify Global Variable(heroList, Append To Array, Hero(McCree));
  • Modify Global Variable(heroList, Append To Array, Hero(Mei));
  • Modify Global Variable(heroList, Append To Array, Hero(Mercy));
  • Modify Global Variable(heroList, Append To Array, Hero(Pharah));
  • Modify Global Variable(heroList, Append To Array, Hero(Reinhardt));
  • Modify Global Variable(heroList, Append To Array, Hero(Roadhog));
  • Modify Global Variable(heroList, Append To Array, Hero(Sigma));
  • Modify Global Variable(heroList, Append To Array, Hero(Soldier: 76));
  • Modify Global Variable(heroList, Append To Array, Hero(Sombra));
  • Modify Global Variable(heroList, Append To Array, Hero(Symmetra));
  • Modify Global Variable(heroList, Append To Array, Hero(Torbjörn));
  • Modify Global Variable(heroList, Append To Array, Hero(Tracer));
  • Modify Global Variable(heroList, Append To Array, Hero(Widowmaker));
  • Modify Global Variable(heroList, Append To Array, Hero(Winston));
  • Modify Global Variable(heroList, Append To Array, Hero(Zenyatta));
  • disabled Global.heroOfTheRound = Global.heroList[Global.heroModeSelector];
  • disabled Global.heroOfTheRound = Random Value In Array(Remove From Array(Global.heroList, Global.heroesOfPreviousRounds));
  • Create HUD Text(All Players(All Teams), Custom String("CODE: {0}", Global.islandPartyCode),
  • Global.islandPartyCode == Custom String("W468T") ? Custom String("") : Custom String("SPECIAL EDITION"),
  • Global.islandPartySpecialEdition, Left, -998.500, White, Sky Blue, White, Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Custom String(" "), Custom String(
  • "Island Party - Heroes Minigames v2.0.1-21"), Left, -998, White, White, Orange, Visible To and String,
  • "Island Party - Heroes Minigames v3.0.0-23"), Left, -998, White, White, Orange, Visible To and String,
  • Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Play rounds of {0} classic and new games as minigames",
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Play rounds of {0}/23 classic and new games as minigames",
  • Count Of(Global.heroList)), Left, -997, White, White, White, Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Join discord.gg/4N4BAE6 and {0}",
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Join discord.io/IslandParty and {0}",
  • Global.discordSubtringArray[Global.roundNumber % 3]), Left, -996, White, White, White, Visible To and String,
  • Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Find all my codes in: jokaes.github.io"), Left, -995.500, White,
  • White, White, Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Custom String("Created by Jokaes#2263"), Null, Left, -995, White, White, White,
  • Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Custom String(" \n ", String("Round"), Global.roundNumber), Null, Left, -994, White,
  • White, White, Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Custom String("{0}", String("Round {0}", Global.roundNumber)), Null, Top, 999.999,
  • White, White, White, Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Custom String("{0}", String("Round {0}", Global.roundNumber)), Null, Top, 2, White,
  • White, White, Visible To and String, Default Visibility);
  • Wait(1.500, Ignore Condition);
  • disabled Start Forcing Player To Be Hero(All Players(All Teams), Global.heroOfTheRound);
  • Global.potatoPos = Vector(500, 500, 500);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String(" \r\n \r\n \r\n \r\n \r\n \r\n "), Left, -999, White,
  • White, White, Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Count Of(Global.hofPlayers) > 0), Null, Null, Custom String("Hall of fame"),
  • Right, -600, White, White, Orange, Visible To and Sort Order, Default Visibility);
  • Create In-World Text(All Players(All Teams), Custom String("CODE: {0}", Global.islandPartyCode), Vector(0, 200, 0), 4,
  • Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
  • Wait(3.500, Ignore Condition);
  • Communicate(All Players(All Teams), Countdown);
  • }
  • }
  • rule("Disable bulit-in game mode & start timer variables {Game in progress GLOBAL}")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Disable Built-In Game Mode Completion;
  • Disable Built-In Game Mode Music;
  • Disable Built-In Game Mode Announcer;
  • Disable Built-In Game Mode Scoring;
  • Enable Death Spectate All Players(All Players(All Teams));
  • Disable Built-In Game Mode Respawning(All Players(All Teams));
  • Set Respawn Max Time(All Players(All Teams), 60);
  • Pause Match Time;
  • Global.timeCounter = 0.001;
  • Global.roundTimer = 60;
  • "Timer of the round HUD {Standard}"
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.roundTimer > 10), Custom String(":{0}", Round To Integer(
  • Global.roundTimer, To Nearest)), Null, Null, Right, -999, White, White, White, Visible To and String, Default Visibility);
  • "Timer of the round HUD {Last moments}"
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.roundTimer <= 10), Custom String(":{0}", Round To Integer(
  • Global.roundTimer, To Nearest)), Null, Null, Right, -999, Red, White, White, Visible To and String, Default Visibility);
  • "Timer of the round HUD separator"
  • Create HUD Text(All Players(All Teams), Null, Custom String(" "), Null, Right, -998, White, White, White, Visible To and String,
  • Default Visibility);
  • "Creates a HUD in the top with [svr load: {0} | svr avg: {1} | svr peak: {2}] LOW LOAD(GREEN)"
  • Create HUD Text(Filtered Array(Host Player, (Server Load + Server Load Average + Server Load Peak) / 3 < 128 && Custom String(
  • "#Jokaes") == String("#{0}", Host Player)), Null, Custom String("svr load: {0} | svr avg: {1} | svr peak: {2}", Server Load,
  • Server Load Average, Server Load Peak), Null, Top, -100, White, Lime Green, White, Visible To and String, Default Visibility);
  • "Creates a HUD in the top with [svr load: {0} | svr avg: {1} | svr peak: {2}] MID LOAD(ORANGE)"
  • Create HUD Text(Filtered Array(Host Player, (Server Load + Server Load Average + Server Load Peak) / 3 >= 128 && (
  • Server Load + Server Load Average + Server Load Peak) / 3 <= 192 && Custom String("#Jokaes") == String("#{0}", Host Player)),
  • Null, Custom String("svr load: {0} | svr avg: {1} | svr peak: {2}", Server Load, Server Load Average, Server Load Peak), Null,
  • Top, -100, White, Orange, White, Visible To and String, Default Visibility);
  • "Creates a HUD in the top with [svr load: {0} | svr avg: {1} | svr peak: {2}] HIGH LOAD(RED)"
  • Create HUD Text(Filtered Array(Host Player, (Server Load + Server Load Average + Server Load Peak) / 3 > 192 && Custom String(
  • "#Jokaes") == String("#{0}", Host Player)), Null, Custom String("svr load: {0} | svr avg: {1} | svr peak: {2}", Server Load,
  • Server Load Average, Server Load Peak), Null, Top, -100, White, Red, White, Visible To and String, Default Visibility);
  • Global.hofPlayers = Empty Array;
  • Global.pointfeedHud = Empty Array;
  • Global.pointfeedHudTimes = Array(True, True, True, True, True, True);
  • Global.pointfeedHudId = 0;
  • Create HUD Text(All Players(All Teams), Global.minigameStringTitles[Global.heroModeSelector],
  • Global.minigameStringCodes[Global.heroModeSelector], Global.minigameStringCredit[Global.heroModeSelector], Top, 0.001, Orange,
  • White, White, Visible To Sort Order and String, Default Visibility);
  • Global.playersStartOfTheRound = All Players(All Teams);
  • }
  • }
  • rule("Is game in progress {PLAYER}")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Start Rule(gameModeDescriptionMessages, Do Nothing);
  • Enable Death Spectate All Players(Event Player);
  • Disable Built-In Game Mode Respawning(Event Player);
  • Set Respawn Max Time(Event Player, 60);
  • Preload Hero(Event Player, Global.heroList);
  • Global.playersStartOfTheRound = All Players(All Teams);
  • }
  • }
  • rule("Player join in setup")
  • {
  • event
  • {
  • Player Joined Match;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is In Setup == True;
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Wait(0.512, Ignore Condition);
  • Start Forcing Player To Be Hero(Event Player, Global.heroOfTheRound);
  • Preload Hero(Event Player, Global.heroList);
  • Set Respawn Max Time(Event Player, 9999);
  • }
  • }
  • rule("Player join with game in progress")
  • {
  • event
  • {
  • Player Joined Match;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Start Rule(gameModeDescriptionMessages, Do Nothing);
  • Disable Built-In Game Mode Respawning(Event Player);
  • Set Respawn Max Time(Event Player, 60);
  • Wait(0.512, Ignore Condition);
  • Start Forcing Player To Be Hero(Event Player, Global.heroOfTheRound);
  • Teleport(Event Player, Vector(500, 500, 500));
  • Clear Status(Event Player, Unkillable);
  • Wait(0.512, Ignore Condition);
  • Kill(Event Player, Null);
  • Preload Hero(Event Player, Global.heroList);
  • Set Respawn Max Time(Event Player, 9999);
  • }
  • }
  • disabled rule("First to 30 EDITION")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • disabled Is Game In Progress == True;
  • Is In Setup == True;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("FIRST TO 30 POINTS EDITION"), Top, 0.500, White, White,
  • Sky Blue, Visible To and String, Default Visibility);
  • Global.islandPartyCode = Custom String("Z9VEE");
  • Global.islandPartySpecialEdition = Custom String("FIRST TO 30 POINTS");
  • Wait(10, Ignore Condition);
  • Enable Built-In Game Mode Completion;
  • Enable Built-In Game Mode Announcer;
  • }
  • }
  • rule("Time Counter - Add minute")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Set Match Time(Global.timeCounter);
  • Wait(60, Ignore Condition);
  • Global.timeCounter += 1;
  • Loop;
  • }
  • }
  • rule("Force players to be the hero of the round")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Start Forcing Player To Be Hero(Event Player, Global.heroOfTheRound);
  • }
  • }
  • rule("Create new round {SETUP}")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is In Setup == True;
  • }
  • actions
  • {
  • Wait(0.048, Ignore Condition);
  • Global.heroOfTheRound = Random Value In Array(Global.heroList);
  • Preload Hero(All Players(All Teams), Global.heroOfTheRound);
  • Global.heroModeSelector = Index Of Array Value(Global.heroList, Global.heroOfTheRound);
  • Wait(0.272, Ignore Condition);
  • Start Forcing Player To Be Hero(All Players(All Teams), Global.heroOfTheRound);
  • Global.roundNumber += 1;
  • Small Message(All Players(All Teams), Custom String("ROUND {0}", Global.roundNumber));
  • Global.playersStartOfTheRound = All Players(All Teams);
  • Global.roundTimer = 60;
  • Chase Global Variable At Rate(roundTimer, 0, 1, None);
  • }
  • }
  • rule("Create new round {OUT OF TIME}")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.roundTimer <= 0;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Start Rule(startNewRound, Do Nothing);
  • }
  • }
  • rule("Create new round {LAST PLAYER ALIVE}")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Number of Living Players(All Teams) <= 1;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Start Rule(startNewRound, Do Nothing);
  • }
  • }
  • rule("Create new round 2")
  • {
  • event
  • {
  • Subroutine;
  • startNewRound;
  • }
  • actions
  • {
  • Global.roundTimer = 60;
  • Start Rule(restartStats, Do Nothing);
  • If(Count Of(Global.heroesOfPreviousRounds) == Count Of(Global.heroList) - 1);
  • Global.heroesOfPreviousRounds = Empty Array;
  • End;
  • Global.heroOfLastRound = Global.heroOfTheRound;
  • Modify Global Variable(heroesOfPreviousRounds, Append To Array, Global.heroOfTheRound);
  • Global.heroOfTheRound = Null;
  • Wait(0.048, Ignore Condition);
  • Global.heroOfTheRound = Random Value In Array(Remove From Array(Global.heroList, Global.heroesOfPreviousRounds));
  • Preload Hero(All Players(All Teams), Global.heroOfTheRound);
  • Global.heroModeSelector = Index Of Array Value(Global.heroList, Global.heroOfTheRound);
  • disabled Skip If(Global.heroOfTheRound == Hero(Roadhog), 1);
  • Respawn(All Players(All Teams));
  • Resurrect(All Players(All Teams));
  • Wait(0.272, Ignore Condition);
  • Start Forcing Player To Be Hero(All Players(All Teams), Global.heroOfTheRound);
  • Wait(0.272, Ignore Condition);
  • Global.roundNumber += 1;
  • Small Message(All Players(All Teams), Custom String("ROUND {0}", Global.roundNumber));
  • Global.playersStartOfTheRound = All Players(All Teams);
  • disabled Destroy Effect(All Players(All Teams).pharahHealEffect);
  • disabled Destroy Effect(All Players(All Teams).pharahDamageBoostEffect);
  • Start Forcing Throttle(All Players(All Teams), 0, 0, 0, 0, 0, 0);
  • Set Aim Speed(All Players(All Teams), Absolute Value(0));
  • Wait(0.750, Ignore Condition);
  • Stop Forcing Throttle(All Players(All Teams));
  • Set Aim Speed(All Players(All Teams), 100);
  • Chase Global Variable At Rate(roundTimer, 0, 1, None);
  • }
  • }
  • disabled rule("Create new round")
  • {
  • event
  • {
  • Subroutine;
  • startNewRound;
  • }
  • actions
  • {
  • Set Move Speed(All Players(All Teams), 100);
  • Set Gravity(All Players(All Teams), 100);
  • Global.roundTimer = 60;
  • Wait(0.032, Ignore Condition);
  • If(Count Of(Global.heroesOfPreviousRounds) == Count Of(Global.heroList) - 1);
  • Global.heroesOfPreviousRounds = Empty Array;
  • End;
  • Global.heroOfLastRound = Global.heroOfTheRound;
  • Modify Global Variable(heroesOfPreviousRounds, Append To Array, Global.heroOfTheRound);
  • disabled Global.heroModeSelector = Random Integer(0, Count Of(Global.heroList) - 1);
  • disabled Global.heroesRounds[Global.heroModeSelector] = True;
  • disabled Global.heroOfTheRound = Global.heroList[Global.heroModeSelector];
  • Global.heroOfTheRound = Null;
  • Wait(0.048, Ignore Condition);
  • Global.heroOfTheRound = Random Value In Array(Remove From Array(Global.heroList, Global.heroesOfPreviousRounds));
  • disabled Loop If(Global.heroOfTheRound == Global.heroesOfPreviousRounds);
  • Loop If(Is True For Any(Global.heroesOfPreviousRounds, Current Array Element == Global.heroOfTheRound));
  • Preload Hero(All Players(All Teams), Global.heroOfTheRound);
  • Global.heroModeSelector = Index Of Array Value(Global.heroList, Global.heroOfTheRound);
  • Skip If(Global.heroOfTheRound == Hero(Roadhog), 1);
  • Respawn(All Players(All Teams));
  • Resurrect(All Players(All Teams));
  • Wait(0.250, Ignore Condition);
  • Start Forcing Player To Be Hero(All Players(All Teams), Global.heroOfTheRound);
  • Global.roundNumber += 1;
  • disabled Big Message(All Players(All Teams), Custom String("ROUND {0}", Global.roundNumber));
  • Small Message(All Players(All Teams), Custom String("ROUND {0}", Global.roundNumber));
  • Chase Global Variable At Rate(roundTimer, 0, 1, None);
  • Global.playersStartOfTheRound = All Players(All Teams);
  • Destroy Effect(All Players(All Teams).pharahHealEffect);
  • Destroy Effect(All Players(All Teams).pharahDamageBoostEffect);
  • Play Effect(All Players(All Teams), Explosion Sound, White, All Players(All Teams), 200);
  • Start Forcing Throttle(All Players(All Teams), 0, 0, 0, 0, 0, 0);
  • Set Aim Speed(All Players(All Teams), Absolute Value(0));
  • Wait(0.750, Ignore Condition);
  • Stop Forcing Throttle(All Players(All Teams));
  • Set Aim Speed(All Players(All Teams), 100);
  • }
  • }
  • rule("Restart stats")
  • {
  • event
  • {
  • Subroutine;
  • restartStats;
  • }
  • actions
  • {
  • Set Move Speed(All Players(All Teams), 100);
  • Set Gravity(All Players(All Teams), 100);
  • }
  • }
  • rule("String Arrays (Title, credit, code and instructions)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • disabled Create HUD Text(All Players(All Teams), Global.minigameStringTitles[Global.heroModeSelector], Null, Null, Top, -3, Orange, White,
  • White, Visible To and String, Default Visibility);
  • disabled Create HUD Text(All Players(All Teams), Null, Null, Global.minigameStringCodes[Global.heroModeSelector], Top, -2, White, White,
  • White, Visible To and String, Default Visibility);
  • disabled Create HUD Text(All Players(All Teams), Null, Null, Global.minigameStringCredit[Global.heroModeSelector], Top, -1, White, White,
  • White, Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Null, Global.minigameStringInstructions[Global.heroModeSelector], Top, 1, White,
  • White, White, Visible To and String, Default Visibility);
  • Global.minigameStringTitles = Empty Array;
  • "Ana"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} PAINTBALL {0}", Hero Icon String(Hero(Ana))));
  • "Bastion"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} WORLD OF TANKS {0}", Hero Icon String(Hero(
  • Bastion))));
  • "Brigitte"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} BOOP {0}", Hero Icon String(Hero(Brigitte))));
  • "Doomfist"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} DOOM SUMO {0}", Hero Icon String(Hero(
  • Doomfist))));
  • "D.Va"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} AIR RACE {0}", Hero Icon String(Hero(D.Va))));
  • "Echo"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} RINGS {0}", Hero Icon String(Hero(Echo))));
  • "Genji"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} DASH {0}", Hero Icon String(Hero(Genji))));
  • "Lúcio"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} SNOT COLLECTOR {0}", Hero Icon String(Hero(
  • Lúcio))));
  • "McCree"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} HOT POTATO {0}", Hero Icon String(Hero(McCree))));
  • "Mei"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} SNOWBALL {0}", Hero Icon String(Hero(Mei))));
  • "Mercy"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} 1 PUNCH {0}", Hero Icon String(Hero(Mercy))));
  • "Pharah"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} PHARMERCY SIMULATED {0}", Hero Icon String(Hero(
  • Pharah))));
  • "Reinhardt"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} LAST MAN BOUNCING {0}", Hero Icon String(Hero(
  • Reinhardt)), Number of Living Players(All Teams)));
  • "Roadhog"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} {1} HOOKS 1 HOLE {0}", Hero Icon String(Hero(
  • Roadhog)), Number of Living Players(All Teams)));
  • "Sigma"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} DODGEBALL {0}", Hero Icon String(Hero(Sigma))));
  • "Soldier: 76"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} SPRINT RACING {0}", Hero Icon String(Hero(
  • Soldier: 76))));
  • "Sombra"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} HACK TO KILL {0}", Hero Icon String(Hero(
  • Sombra))));
  • "Symmetra"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} TELEPORT TO THE COLOR {0}", Hero Icon String(Hero(
  • Symmetra))));
  • "Torbjörn"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} HAMMER ONLY {0}", Hero Icon String(Hero(
  • Torbjörn))));
  • "Tracer"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} STEAL THE CROWN {0}", Hero Icon String(Hero(
  • Tracer))));
  • "Widowmaker"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} HS ONLY {0}", Hero Icon String(Hero(
  • Widowmaker))));
  • "Winston"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} MONKEY SUMO {0}", Hero Icon String(Hero(
  • Winston))));
  • "Zenyatta"
  • Modify Global Variable(minigameStringTitles, Append To Array, Custom String("{0} SPARTA {0}", Hero Icon String(Hero(Zenyatta))));
  • Global.minigameStringCodes = Empty Array;
  • "Ana"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on 9G11W"));
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on 1950N"));
  • "Bastion"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on 33NKS"));
  • "Brigitte"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on 55MMT / ZYDQM"));
  • "Doomfist"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on 9G11W / 2A2YA"));
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on ZWE5E / 2A2YA"));
  • "D.Va"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on DV5CA"));
  • "Echo"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on XECF0"));
  • "Genji"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on BBQ9Z"));
  • "Lúcio"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on KAJAB"));
  • "McCree"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on E515J"));
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on 9jane"));
  • "Mei"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on MQCCY"));
  • "Mercy"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on YWKSZ & D7VC0S"));
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on YWKSZ & AB7DJ"));
  • "Pharah"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on DKKKD"));
  • "Reinhardt"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on KXQZ1"));
  • "Roadhog"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on WQHER"));
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on DK0DP"));
  • "Sigma"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on 8P769 / AN5P7"));
  • "Soldier: 76"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on STJTC"));
  • "Sombra"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on YJK0D6"));
  • "Symmetra"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on BANWB"));
  • "Torbjörn"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on PHGM1"));
  • "Tracer"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on 0X8N0"));
  • "Widowmaker"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on EA5XD"));
  • "Winston"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on RA906"));
  • "Zenyatta"
  • Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on ZENPM"));
  • Global.minigameStringCredit = Empty Array;
  • "Ana"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY TOOTHPASTE"));
  • "Bastion"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY JOKAES"));
  • "Brigitte"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY FARRON / BLOCK"));
  • "Doomfist"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY CREBOS & CLAMINIUM / KIKUGIE"));
  • "D.Va"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY JOKAES"));
  • "Echo"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY JOKAES"));
  • "Genji"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY GANTZ"));
  • "Lúcio"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY JOKAES"));
  • "McCree"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY KEVLAR"));
  • "Mei"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY MITSIEE"));
  • "Mercy"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY PARACHOR"));
  • "Pharah"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY SEITA"));
  • "Reinhardt"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY KEVLAR & JINKO"));
  • "Roadhog"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY BLOCK"));
  • "Sigma"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY PUG / VOXCAE"));
  • "Soldier: 76"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY DARWIN"));
  • "Sombra"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY TEHFOOT"));
  • "Symmetra"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY TEHFOOT"));
  • "Torbjörn"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY JOKAES"));
  • "Tracer"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY KEVLAR"));
  • "Widowmaker"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY TOOTHPASTE"));
  • "Winston"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY JOKAES"));
  • "Zenyatta"
  • Modify Global Variable(minigameStringCredit, Append To Array, Custom String("BY JOKAES. ORIGINAL CREATION BY DARWIN"));
  • Global.minigameStringInstructions = Empty Array;
  • "Ana"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("One shoot to kill!"));
  • "Bastion"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("BOO BEE BEE BEE BOO BEEEE!"));
  • "Brigitte"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("Protect yourself and boop the others!"));
  • "Doomfist"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("Use your punches to get them out!"));
  • "D.Va"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("Boost and race!"));
  • "Echo"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("Collect those rings!"));
  • "Genji"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("Dash!"));
  • "Lúcio"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("Collect snot from the wall to gain speed!"));
  • "McCree"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("Shoot to pass the hot potato!"));
  • "Mei"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("Pick up snow and shoot!"));
  • "Mercy"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("Punch to kill and get ultimate!"));
  • "Pharah"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String(
  • "Kill'em all with your Mercy pocket simulated!"));
  • "Reinhardt"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("Survive, don't fall and knock them away!"));
  • "Roadhog"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("Yank'em into the hole!"));
  • "Sigma"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("Knock them out with your big rock!"));
  • "Soldier: 76"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("Gotta go fast!"));
  • "Sombra"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("Hack your opponents to kill'em!"));
  • "Symmetra"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("Teleport to the right color!"));
  • "Torbjörn"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("Overload and hammer down!"));
  • "Tracer"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("Meele to steal the crown!"));
  • "Widowmaker"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("Aim for the head!"));
  • "Winston"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("Ape kill ape!"));
  • "Zenyatta"
  • Modify Global Variable(minigameStringInstructions, Append To Array, Custom String("Kick them for Spartaaa!"));
  • }
  • }
  • rule("WORKSHOP SETTINGS")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is In Setup == True;
  • }
  • actions
  • {
  • Global.firstToX = Workshop Setting Toggle(Custom String("WIN CONDITIONS"), Custom String("FIRST TO [X] POINTS - WIN STATE"),
  • False);
  • Global.scoreToWin = Workshop Setting Integer(Custom String("WIN CONDITIONS"), Custom String("SCORE TO WIN (30)"), 30, 15, 200);
  • Global.topScorerAfterAllMinigames = Workshop Setting Toggle(Custom String("WIN CONDITIONS"), Custom String(
  • "TOP SCORER AFTER PLAYING ALL THE MINIGAMES"), False);
  • Global.minigamesToggleArray = Null;
  • For Global Variable(workshopSettingsIt, 0, Count Of(Global.heroList), 1);
  • Modify Global Variable(minigamesToggleArray, Append To Array, False);
  • End;
  • Global.minigamesToggleArray[0] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "ANA - PAINTBALL"), True);
  • Global.minigamesToggleArray[1] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "BASTION - WORLD OF TANKS"), True);
  • Global.minigamesToggleArray[2] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "BRIGITTE - BOOP"), True);
  • Global.minigamesToggleArray[3] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "DOOMFIST - DOOM SUMO"), True);
  • Global.minigamesToggleArray[4] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "DVA - AIR RACE"), True);
  • Global.minigamesToggleArray[5] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "ECHO - RINGS"), True);
  • Global.minigamesToggleArray[6] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "GENJI - DASH"), True);
  • Global.minigamesToggleArray[7] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "LÚCIO - SNOT COLLECTOR"), True);
  • Global.minigamesToggleArray[8] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "MCCREE - HOT POTATO"), True);
  • Global.minigamesToggleArray[9] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "MEI - SNOWBALL"), True);
  • Global.minigamesToggleArray[10] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "MERCY - 1 PUNCH"), True);
  • Global.minigamesToggleArray[11] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "PHARA - PHARMERCY SIMULATED"), True);
  • Global.minigamesToggleArray[12] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "REINHARDT - LAST MAN BOUNCING"), True);
  • Global.minigamesToggleArray[13] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "ROADHOG - 12 HOOKS 1 HOLE"), True);
  • Global.minigamesToggleArray[14] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "SIGMA - DODGEBALL"), True);
  • Global.minigamesToggleArray[15] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "SOLDIER 76 - SPRINT RACING"), True);
  • Global.minigamesToggleArray[16] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "SOMBRA - HACK TO KILL"), True);
  • Global.minigamesToggleArray[17] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "SYMMETRA - TELEPORT TO THE COLOR"), True);
  • Global.minigamesToggleArray[18] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "TORBJÖRN - HAMMER ONLY"), True);
  • Global.minigamesToggleArray[19] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "TRACER - STEAL THE CROWN"), True);
  • Global.minigamesToggleArray[20] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "WIDOWMAKER - HS ONLY"), True);
  • Global.minigamesToggleArray[21] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "WINSTON - MONKEY SUMO"), True);
  • Global.minigamesToggleArray[22] = Workshop Setting Toggle(Custom String("HEROES MINIGAMES (2 MINIMUM)"), Custom String(
  • "ZENYATTA - SPARTA"), True);
  • For Global Variable(workshopSettingsIt, 0, Count Of(Global.heroList), 1);
  • If(Global.minigamesToggleArray[Global.workshopSettingsIt] == False);
  • Modify Global Variable(minigamesToggleArray, Remove From Array By Index, Global.workshopSettingsIt);
  • Modify Global Variable(heroList, Remove From Array By Index, Global.workshopSettingsIt);
  • Modify Global Variable(minigameStringTitles, Remove From Array By Index, Global.workshopSettingsIt);
  • Modify Global Variable(minigameStringCodes, Remove From Array By Index, Global.workshopSettingsIt);
  • Modify Global Variable(minigameStringCredit, Remove From Array By Index, Global.workshopSettingsIt);
  • Modify Global Variable(minigameStringInstructions, Remove From Array By Index, Global.workshopSettingsIt);
  • Global.workshopSettingsIt -= 1;
  • End;
  • End;
  • Wait(0.250, Ignore Condition);
  • If(Global.firstToX == True);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("FIRST TO {0} POINTS EDITION", Global.scoreToWin), Top, 0.500,
  • White, White, Sky Blue, Visible To and String, Default Visibility);
  • End;
  • If(Global.topScorerAfterAllMinigames == True);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("TOP SCORER AFTER ALL MINIGAMES EDITION"), Top, 0.500, White,
  • White, Sky Blue, Visible To and String, Default Visibility);
  • End;
  • }
  • }
  • rule("Game Winner (First to X)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Score Of(Event Player) >= Global.scoreToWin;
  • Global.firstToX == True;
  • }
  • actions
  • {
  • Declare Player Victory(Event Player);
  • }
  • }
  • rule("Game Winner (Top Scorer after all minigames)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.topScorerAfterAllMinigames == True;
  • Global.roundNumber == Count Of(Global.heroList) + 1;
  • }
  • actions
  • {
  • Declare Player Victory(Last Of(Sorted Array(All Players(All Teams), Score Of(Current Array Element))));
  • }
  • }
  • rule("Time Counter - Add minute")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Set Match Time(Global.timeCounter);
  • Wait(60, Ignore Condition);
  • Global.timeCounter += 1;
  • Loop;
  • }
  • }
  • rule("Force players to be the hero of the round")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Start Forcing Player To Be Hero(Event Player, Global.heroOfTheRound);
  • }
  • }
  • rule("Create new round {SETUP}")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is In Setup == True;
  • }
  • actions
  • {
  • Wait(0.048, Ignore Condition);
  • Global.heroOfTheRound = Random Value In Array(Global.heroList);
  • Preload Hero(All Players(All Teams), Global.heroOfTheRound);
  • Global.heroModeSelector = Index Of Array Value(Global.heroList, Global.heroOfTheRound);
  • Wait(0.272, Ignore Condition);
  • Start Forcing Player To Be Hero(All Players(All Teams), Global.heroOfTheRound);
  • Global.roundNumber += 1;
  • Small Message(All Players(All Teams), Custom String("ROUND {0}", Global.roundNumber));
  • Global.playersStartOfTheRound = All Players(All Teams);
  • Global.roundTimer = 60;
  • Chase Global Variable At Rate(roundTimer, 0, 1, None);
  • }
  • }
  • rule("Create new round {OUT OF TIME}")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.roundTimer <= 0;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Start Rule(startNewRound, Do Nothing);
  • }
  • }
  • rule("Create new round {LAST PLAYER ALIVE}")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Number of Living Players(All Teams) <= 1;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Start Rule(startNewRound, Do Nothing);
  • }
  • }
  • rule("startNewRound()")
  • {
  • event
  • {
  • Subroutine;
  • startNewRound;
  • }
  • actions
  • {
  • Global.roundTimer = 60;
  • Start Rule(restartStats, Do Nothing);
  • If(Count Of(Global.heroesOfPreviousRounds) == Count Of(Global.heroList) - 1);
  • Global.heroesOfPreviousRounds = Empty Array;
  • End;
  • Global.heroOfLastRound = Global.heroOfTheRound;
  • Modify Global Variable(heroesOfPreviousRounds, Append To Array, Global.heroOfTheRound);
  • Global.heroOfTheRound = Null;
  • Wait(0.048, Ignore Condition);
  • Global.heroOfTheRound = Random Value In Array(Remove From Array(Global.heroList, Global.heroesOfPreviousRounds));
  • Preload Hero(All Players(All Teams), Global.heroOfTheRound);
  • Global.heroModeSelector = Index Of Array Value(Global.heroList, Global.heroOfTheRound);
  • Respawn(All Players(All Teams));
  • Resurrect(All Players(All Teams));
  • Wait(0.272, Ignore Condition);
  • Wait(0.272, Ignore Condition);
  • Start Forcing Player To Be Hero(All Players(All Teams), Global.heroOfTheRound);
  • Global.roundNumber += 1;
  • Small Message(All Players(All Teams), Custom String("ROUND {0}", Global.roundNumber));
  • Global.playersStartOfTheRound = All Players(All Teams);
  • Start Forcing Throttle(All Players(All Teams), 0, 0, 0, 0, 0, 0);
  • Set Aim Speed(All Players(All Teams), Absolute Value(0));
  • Wait(0.750, Ignore Condition);
  • Stop Forcing Throttle(All Players(All Teams));
  • Set Aim Speed(All Players(All Teams), 100);
  • Chase Global Variable At Rate(roundTimer, 0, 1, None);
  • }
  • }
  • rule("restartStats()")
  • {
  • event
  • {
  • Subroutine;
  • restartStats;
  • }
  • actions
  • {
  • Set Move Speed(All Players(All Teams), 100);
  • Set Gravity(All Players(All Teams), 100);
  • }
  • }
  • rule("Description and credit (Small Messages)")
  • {
  • event
  • {
  • Subroutine;
  • gameModeDescriptionMessages;
  • }
  • actions
  • {
  • Wait(3.500, Ignore Condition);
  • Small Message(Event Player, Custom String("Island Party - Heroes Minigames v2.0.1-21"));
  • Small Message(Event Player, Custom String("Island Party - Heroes Minigames v3.0.0-23"));
  • Wait(3.500, Ignore Condition);
  • Small Message(Event Player, Custom String("Play rounds of {0} minigames", Count Of(Global.heroList)));
  • Small Message(Event Player, Custom String("Play rounds of {0}/23 minigames", Count Of(Global.heroList)));
  • Wait(3.500, Ignore Condition);
  • Small Message(Event Player, Custom String("Created by Jokaes#2263"));
  • }
  • }
  • rule("On kill: full heal")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • All;
  • All;
  • }
  • conditions
  • {
  • Victim != Event Player;
  • Hero Of(Event Player) != Hero(Ana);
  • Hero Of(Event Player) != Hero(Brigitte);
  • Hero Of(Event Player) != Hero(Doomfist);
  • Hero Of(Event Player) != Hero(D.Va);
  • Hero Of(Event Player) != Hero(Echo);
  • Hero Of(Event Player) != Hero(McCree);
  • Hero Of(Event Player) != Hero(Mei);
  • Hero Of(Event Player) != Hero(Mercy);
  • Hero Of(Event Player) != Hero(Pharah);
  • Hero Of(Event Player) != Hero(Reinhardt);
  • Hero Of(Event Player) != Hero(Roadhog);
  • Hero Of(Event Player) != Hero(Sigma);
  • Hero Of(Event Player) != Hero(Soldier: 76);
  • Hero Of(Event Player) != Hero(Sombra);
  • Hero Of(Event Player) != Hero(Symmetra);
  • Hero Of(Event Player) != Hero(Tracer);
  • Hero Of(Event Player) != Hero(Winston);
  • Hero Of(Event Player) != Hero(Zenyatta);
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Good Pickup Effect, Yellow, Event Player, 1);
  • Heal(Event Player, Null, Max Health(Event Player));
  • }
  • }
  • rule("On kill: cooldown reset")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • All;
  • All;
  • }
  • conditions
  • {
  • Victim != Event Player;
  • Hero Of(Event Player) != Hero(Ana);
  • Hero Of(Event Player) != Hero(Echo);
  • Hero Of(Event Player) != Hero(McCree);
  • Hero Of(Event Player) != Hero(Sigma);
  • Hero Of(Event Player) != Hero(Symmetra);
  • Hero Of(Event Player) != Hero(Tracer);
  • Hero Of(Event Player) != Hero(Winston);
  • }
  • actions
  • {
  • Set Ability Cooldown(Event Player, Button(Primary Fire), 0);
  • Set Ability Cooldown(Event Player, Button(Secondary Fire), 0);
  • Set Ability Cooldown(Event Player, Button(Ability 1), 0);
  • Set Ability Cooldown(Event Player, Button(Ability 2), 0);
  • }
  • }
  • rule("On kill: score")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • All;
  • All;
  • }
  • conditions
  • {
  • Victim != Event Player;
  • Hero Of(Event Player) != Hero(D.Va);
  • Hero Of(Event Player) != Hero(Echo);
  • Hero Of(Event Player) != Hero(McCree);
  • Hero Of(Event Player) != Hero(Reinhardt);
  • Hero Of(Event Player) != Hero(Sigma);
  • Hero Of(Event Player) != Hero(Symmetra);
  • Hero Of(Event Player) != Hero(Tracer);
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Good Pickup Effect, White, Event Player, 1);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, White, Event Player, 100);
  • Modify Player Score(Event Player, 1);
  • Small Message(Event Player, Custom String("+1 point with {0} {1}", Hero Icon String(Hero Of(Event Player)), Hero Of(
  • Event Player)));
  • Wait(0.032, Ignore Condition);
  • Create HUD Text(All Players(All Teams), Hero Icon String(Hero Of(Event Player)), Event Player, Custom String("+1 point"), Right,
  • -1 + Global.pointfeedHudId, Orange, White, Orange, Visible To, Default Visibility);
  • Modify Global Variable(pointfeedHud, Append To Array, Last Text ID);
  • Global.pointfeedHudTimes[Count Of(Global.pointfeedHud) - 1] = 3.744;
  • Global.pointfeedHudId -= 0.010;
  • }
  • }
  • rule("Last seconds sound")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.roundTimer <= 5;
  • }
  • actions
  • {
  • Play Effect(Event Player, Explosion Sound, White, Event Player, 200);
  • Wait(1, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("HUD Pointfeed reduce times")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is True For Any(Global.pointfeedHudTimes, Current Array Element == 3.744) == True;
  • }
  • actions
  • {
  • While(True);
  • For Global Variable(pointfeedHudTimesIt, 0, Count Of(Global.pointfeedHudTimes), 1);
  • If(Global.pointfeedHudTimes[Global.pointfeedHudTimesIt] > 0);
  • Global.pointfeedHudTimes[Global.pointfeedHudTimesIt] -= 0.016;
  • End;
  • End;
  • Wait(0.016, Ignore Condition);
  • End;
  • }
  • }
  • rule("Destroy HUD Pointfeed {more than 6}")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Count Of(Global.pointfeedHud) > 6;
  • }
  • actions
  • {
  • While(Count Of(Global.pointfeedHud) > 6);
  • Destroy HUD Text(Global.pointfeedHud[0]);
  • Modify Global Variable(pointfeedHud, Remove From Array By Index, 0);
  • Wait(0.032, Ignore Condition);
  • End;
  • }
  • }
  • rule("Destroy HUD Pointfeed {time}")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is True For Any(Global.pointfeedHudTimes, Current Array Element <= 0) == True;
  • }
  • actions
  • {
  • While(True);
  • For Global Variable(pointfeedHudTimesIt, 0, Count Of(Global.pointfeedHudTimes), 1);
  • If(Global.pointfeedHudTimes[Global.pointfeedHudTimesIt] <= 0);
  • Destroy HUD Text(Global.pointfeedHud[Global.pointfeedHudTimesIt]);
  • Modify Global Variable(pointfeedHud, Remove From Array By Index, Global.pointfeedHudTimesIt);
  • Modify Global Variable(pointfeedHudTimes, Remove From Array By Index, Global.pointfeedHudTimesIt);
  • End;
  • End;
  • Wait(0.016, Ignore Condition);
  • End;
  • }
  • }
  • rule("Reset HUD Pointfeed ID")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Count Of(Global.pointfeedHud) == 0;
  • }
  • actions
  • {
  • Global.pointfeedHudId = 0;
  • }
  • }
  • rule("HoF player HUD")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.hofPlayersCounter != Count Of(Global.hofPlayers);
  • }
  • actions
  • {
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("{0}", Last Of(Global.hofPlayers)), Right, -500, White, White,
  • Orange, Visible To and Sort Order, Default Visibility);
  • Global.hofPlayersCounter = Count Of(Global.hofPlayers);
  • }
  • }
  • rule("Hof append")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • If(Score Of(Event Player) >= 200);
  • If(Score Of(Event Player) >= 120);
  • If(Array Contains(Global.hofPlayers, Custom String("{0}", Event Player)) == False);
  • Modify Global Variable(hofPlayers, Append To Array, Custom String("{0}", Event Player));
  • End;
  • End;
  • Wait(10, Ignore Condition);
  • Loop;
  • }
  • }
  • rule("HoF effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Score Of(Event Player) >= 200;
  • Score Of(Event Player) >= 120;
  • }
  • actions
  • {
  • Create Effect(Filtered Array(All Players(All Teams), Is Alive(Event Player)), Sparkles, Orange, Event Player, 1,
  • Create HUD Text(Event Player, Custom String("You seam to enjoy this mode. You should join discord.io/IslandParty {0}", Icon String(
  • Happy)), Null, Null, Top, 1000, Orange, Orange, Orange, Visible To and String, Default Visibility);
  • Event Player.discordLinkForHofPlayersHud = Last Text ID;
  • disabled Create Effect(Filtered Array(All Players(All Teams), Is Alive(Event Player)), Sparkles, Orange, Event Player, 1,
  • Visible To Position and Radius);
  • Play Effect(Event Player, Buff Impact Sound, White, Event Player, 200);
  • Wait(1, Ignore Condition);
  • Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 200);
  • Play Effect(Event Player, Buff Impact Sound, White, Event Player, 200);
  • Wait(1, Ignore Condition);
  • Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 200);
  • Play Effect(Event Player, Buff Impact Sound, White, Event Player, 200);
  • Wait(1, Ignore Condition);
  • Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 200);
  • Wait(75, Ignore Condition);
  • Destroy HUD Text(Event Player.discordLinkForHofPlayersHud);
  • }
  • }
  • rule("HoF outlines")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Score Of(Event Player) >= 120;
  • }
  • actions
  • {
  • Start Forcing Player Outlines(Event Player, All Players(All Teams), True, Blue);
  • Wait(0.192, Ignore Condition);
  • Start Forcing Player Outlines(Event Player, All Players(All Teams), True, Green);
  • Wait(0.192, Ignore Condition);
  • Start Forcing Player Outlines(Event Player, All Players(All Teams), True, Orange);
  • Wait(0.192, Ignore Condition);
  • Start Forcing Player Outlines(Event Player, All Players(All Teams), True, Purple);
  • Wait(0.192, Ignore Condition);
  • Start Forcing Player Outlines(Event Player, All Players(All Teams), True, Red);
  • Wait(0.192, Ignore Condition);
  • Start Forcing Player Outlines(Event Player, All Players(All Teams), True, Turquoise);
  • Wait(0.192, Ignore Condition);
  • Start Forcing Player Outlines(Event Player, All Players(All Teams), True, White);
  • Wait(0.192, Ignore Condition);
  • Start Forcing Player Outlines(Event Player, All Players(All Teams), True, Yellow);
  • Wait(0.192, Ignore Condition);
  • Loop;
  • }
  • }
  • rule("----- HEROES -----")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("ANA on kill")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • All;
  • Ana;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Ana);
  • }
  • actions
  • {
  • While(Is Using Ability 1(Event Player) == True);
  • Wait(0.032, Ignore Condition);
  • End;
  • Set Ability Cooldown(Event Player, Button(Ability 1), 0);
  • }
  • }
  • rule("BASTION tank")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Bastion;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Bastion);
  • Is Using Ultimate(Event Player) == False;
  • }
  • actions
  • {
  • Press Button(Event Player, Ultimate);
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("BRIG init")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Brigitte;
  • }
  • conditions
  • {
  • Global.heroOfTheRound == Hero(Brigitte);
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Wait(0.032, Ignore Condition);
  • Set Status(Event Player, Null, Unkillable, Global.roundTimer);
  • }
  • }
  • rule("BRIG standard gravity")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Brigitte;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Brigitte);
  • Is Firing Secondary(Event Player) != True;
  • Has Status(Event Player, Stunned) == False;
  • }
  • actions
  • {
  • Set Gravity(Event Player, 100);
  • }
  • }
  • rule("BRIG shield gravity")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Brigitte;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Brigitte);
  • Is Firing Secondary(Event Player) == True;
  • }
  • actions
  • {
  • Set Gravity(Event Player, 200);
  • }
  • }
  • rule("BRIG stunned gravity & longer stun")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Brigitte;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Brigitte);
  • Has Status(Event Player, Stunned) == True;
  • }
  • actions
  • {
  • Set Gravity(Event Player, 25);
  • Set Status(Event Player, Null, Stunned, 1.500);
  • }
  • }
  • rule("BRIG speed-boosted shield bash")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Brigitte;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Brigitte);
  • Is Firing Primary(Event Player) == True;
  • Is Firing Secondary(Event Player) == True;
  • }
  • actions
  • {
  • Set Move Speed(Event Player, 200);
  • Wait(0.250, Ignore Condition);
  • Set Move Speed(Event Player, 100);
  • }
  • }
  • rule("BRIG ult cooldown reset")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Brigitte;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Brigitte);
  • Is Using Ultimate(Event Player) == True;
  • }
  • actions
  • {
  • Set Ability Cooldown(Event Player, Button(Primary Fire), 0);
  • Set Ability Cooldown(Event Player, Button(Secondary Fire), 0);
  • Set Ability Cooldown(Event Player, Button(Ability 1), 0);
  • }
  • }
  • rule("BRIG auto-healing")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Brigitte;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Brigitte);
  • Health(Event Player) < Max Health(Event Player);
  • }
  • actions
  • {
  • Heal(Event Player, Null, Max Health(Event Player));
  • Wait(0.032, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("BRIG end of the round {EACH PLAYER}")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Brigitte);
  • Global.heroOfLastRound == Hero(Brigitte);
  • }
  • actions
  • {
  • Clear Status(Event Player, Unkillable);
  • Set Gravity(Event Player, 100);
  • Set Move Speed(Event Player, 100);
  • }
  • }
  • rule("DOOM init player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Doomfist;
  • }
  • conditions
  • {
  • Global.heroOfTheRound == Hero(Doomfist);
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Wait(0.064, Ignore Condition);
  • Disallow Button(Event Player, Primary Fire);
  • }
  • }
  • rule("DOOM ult stun")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Doomfist;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Doomfist);
  • Is Using Ultimate(Attacker) == True;
  • }
  • actions
  • {
  • Set Status(Victim, Event Player, Stunned, 3);
  • }
  • }
  • rule("DOOM not using ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Doomfist);
  • Is Using Ultimate(Event Player) == False;
  • }
  • actions
  • {
  • Set Move Speed(Event Player, 100);
  • Disallow Button(Event Player, Primary Fire);
  • }
  • }
  • rule("DOOM using ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Doomfist);
  • Is Using Ultimate(Event Player) == True;
  • }
  • actions
  • {
  • Set Move Speed(Event Player, 150);
  • Allow Button(Event Player, Primary Fire);
  • Set Ability Cooldown(Event Player, Button(Secondary Fire), 0);
  • Set Ability Cooldown(Event Player, Button(Ability 1), 0);
  • }
  • }
  • rule("DOOM end of the round {EACH PLAYER}")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Doomfist);
  • Global.heroOfLastRound == Hero(Doomfist);
  • }
  • actions
  • {
  • Allow Button(Event Player, Primary Fire);
  • }
  • }
  • rule("DVA init player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.heroOfTheRound == Hero(D.Va);
  • Is Alive(Event Player) == True;
  • Is Game In Progress == True;
  • Is In Alternate Form(Event Player) == False;
  • Event Player.dvaPointsHud == Null;
  • }
  • actions
  • {
  • Event Player.dvaPointsHud = Null;
  • Set Facing(Event Player, Direction Towards(Eye Position(Event Player), Global.dvaObjectivePos[0]), To World);
  • Set Status(Event Player, Null, Phased Out, 60);
  • Wait(0.256, Ignore Condition);
  • Teleport(Event Player, Vector(0, 0, 0));
  • Event Player.dvaPoints = 0;
  • Set Facing(Event Player, Direction Towards(Eye Position(Event Player), Global.dvaObjectivePos[0]), To World);
  • Set Status(Event Player, Null, Phased Out, 60);
  • Set Status(Event Player, Null, Unkillable, Global.roundTimer);
  • If(Event Player.dvaPointsHud == Null);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("{0}: {1}/5", Event Player, Event Player.dvaPoints), Left, (
  • Event Player.dvaPoints + 10) * -1, White, White, Purple, Visible To Sort Order and String, Default Visibility);
  • Event Player.dvaPointsHud = Last Text ID;
  • End;
  • Create In-World Text(Event Player, Custom String("{0} M", Distance Between(Position Of(Event Player),
  • Global.dvaObjectivePos[Event Player.dvaPoints])), Global.dvaObjectivePos[Event Player.dvaPoints], 2, Clip Against Surfaces,
  • Visible To Position and String, White, Default Visibility);
  • Event Player.dvaDistanceText = Last Text ID;
  • Set Facing(Event Player, Direction Towards(Eye Position(Event Player), Global.dvaObjectivePos[0]), To World);
  • Create Icon(Event Player, Global.dvaObjectivePos[Event Player.dvaPoints] + Vector(0, 1.500, 0), Flag, Visible To and Position,
  • Purple, True);
  • Event Player.playerClosestObjectiveIcon = Last Created Entity;
  • Set Gravity(Event Player, 0);
  • }
  • }
  • rule("DVA init global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.heroOfTheRound == Hero(D.Va);
  • }
  • actions
  • {
  • Global.dvaObjectiveEffects = Empty Array;
  • Global.dvaObjectiveIcons = Empty Array;
  • Global.dvaObjectivePos = Array(Vector(Random Real(-100, 100), Random Real(45, 100), Random Real(-100, 100)), Vector(Random Real(
  • -100, 100), Random Real(45, 100), Random Real(-100, 100)), Vector(Random Real(-100, 100), Random Real(45, 100), Random Real(
  • -100, 100)), Vector(Random Real(-100, 100), Random Real(45, 100), Random Real(-100, 100)), Vector(Random Real(-100, 100),
  • Random Real(45, 100), Random Real(-100, 100)));
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.dvaPoints == 0), Good Aura, Purple,
  • Global.dvaObjectivePos[0], 3, Visible To Position and Radius);
  • Modify Global Variable(dvaObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.dvaPoints == 0), Good Aura, Purple,
  • Global.dvaObjectivePos[0], 2, Visible To Position and Radius);
  • Modify Global Variable(dvaObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.dvaPoints == 0), Good Aura, Purple,
  • Global.dvaObjectivePos[0], 1, Visible To Position and Radius);
  • Modify Global Variable(dvaObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.dvaPoints == 1), Good Aura, Purple,
  • Global.dvaObjectivePos[1], 3, Visible To Position and Radius);
  • Modify Global Variable(dvaObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.dvaPoints == 1), Good Aura, Purple,
  • Global.dvaObjectivePos[1], 2, Visible To Position and Radius);
  • Modify Global Variable(dvaObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.dvaPoints == 1), Good Aura, Purple,
  • Global.dvaObjectivePos[1], 1, Visible To Position and Radius);
  • Modify Global Variable(dvaObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.dvaPoints == 2), Good Aura, Purple,
  • Global.dvaObjectivePos[2], 3, Visible To Position and Radius);
  • Modify Global Variable(dvaObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.dvaPoints == 2), Good Aura, Purple,
  • Global.dvaObjectivePos[2], 2, Visible To Position and Radius);
  • Modify Global Variable(dvaObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.dvaPoints == 2), Good Aura, Purple,
  • Global.dvaObjectivePos[2], 1, Visible To Position and Radius);
  • Modify Global Variable(dvaObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.dvaPoints == 3), Good Aura, Purple,
  • Global.dvaObjectivePos[3], 3, Visible To Position and Radius);
  • Modify Global Variable(dvaObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.dvaPoints == 3), Good Aura, Purple,
  • Global.dvaObjectivePos[3], 2, Visible To Position and Radius);
  • Modify Global Variable(dvaObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.dvaPoints == 3), Good Aura, Purple,
  • Global.dvaObjectivePos[3], 1, Visible To Position and Radius);
  • Modify Global Variable(dvaObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.dvaPoints == 4), Good Aura, Purple,
  • Global.dvaObjectivePos[4], 3, Visible To Position and Radius);
  • Modify Global Variable(dvaObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.dvaPoints == 4), Good Aura, Purple,
  • Global.dvaObjectivePos[4], 2, Visible To Position and Radius);
  • Modify Global Variable(dvaObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.dvaPoints == 4), Good Aura, Purple,
  • Global.dvaObjectivePos[4], 1, Visible To Position and Radius);
  • Modify Global Variable(dvaObjectiveEffects, Append To Array, Last Created Entity);
  • disabled Wait(0.016, Ignore Condition);
  • disabled Create Icon(Filtered Array(All Players(All Teams), Current Array Element.dvaPoints == 0), Global.dvaObjectivePos[0] + Vector(0,
  • 1.500, 0), Flag, Visible To and Position, Purple, True);
  • disabled Modify Global Variable(dvaObjectiveIcons, Append To Array, Last Created Entity);
  • disabled Create Icon(Filtered Array(All Players(All Teams), Current Array Element.dvaPoints == 1), Global.dvaObjectivePos[1] + Vector(0,
  • 1.500, 0), Flag, Visible To and Position, Purple, True);
  • disabled Modify Global Variable(dvaObjectiveIcons, Append To Array, Last Created Entity);
  • disabled Create Icon(Filtered Array(All Players(All Teams), Current Array Element.dvaPoints == 2), Global.dvaObjectivePos[2] + Vector(0,
  • 1.500, 0), Flag, Visible To and Position, Purple, True);
  • disabled Modify Global Variable(dvaObjectiveIcons, Append To Array, Last Created Entity);
  • disabled Create Icon(Filtered Array(All Players(All Teams), Current Array Element.dvaPoints == 3), Global.dvaObjectivePos[3] + Vector(0,
  • 1.500, 0), Flag, Visible To and Position, Purple, True);
  • disabled Modify Global Variable(dvaObjectiveIcons, Append To Array, Last Created Entity);
  • disabled Create Icon(Filtered Array(All Players(All Teams), Current Array Element.dvaPoints == 4), Global.dvaObjectivePos[4] + Vector(0,
  • 1.500, 0), Flag, Visible To and Position, Purple, True);
  • disabled Modify Global Variable(dvaObjectiveIcons, Append To Array, Last Created Entity);
  • }
  • }
  • rule("DVA point")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • D.Va;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(D.Va);
  • Event Player.dvaPoints < 5;
  • Distance Between(Position Of(Event Player), Global.dvaObjectivePos[Event Player.dvaPoints]) <= 7.500;
  • }
  • actions
  • {
  • Modify Player Score(Event Player, 1);
  • Small Message(Event Player, Custom String("+1 point with {0} {1}", Hero Icon String(Hero Of(Event Player)), Hero Of(
  • Event Player)));
  • Event Player.dvaPoints += 1;
  • Play Effect(All Players(All Teams), Good Pickup Effect, Purple, Event Player, 1);
  • Play Effect(Event Player, Buff Explosion Sound, Purple, Event Player, 100);
  • Create HUD Text(All Players(All Teams), Hero Icon String(Hero Of(Event Player)), Event Player, Custom String("+1 point"), Right,
  • -1 + Global.pointfeedHudId, Orange, White, Orange, Visible To, Default Visibility);
  • Modify Global Variable(pointfeedHud, Append To Array, Last Text ID);
  • Global.pointfeedHudTimes[Count Of(Global.pointfeedHud) - 1] = 3.744;
  • Global.pointfeedHudId -= 0.010;
  • }
  • }
  • rule("DVA boosting")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • D.Va;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(D.Va);
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Set Move Speed(Event Player, 500);
  • Set Gravity(Event Player, 0);
  • }
  • }
  • rule("DVA not boosting in air")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • D.Va;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(D.Va);
  • Is Using Ability 1(Event Player) == False;
  • Is In Air(Event Player) == True;
  • }
  • actions
  • {
  • Set Move Speed(Event Player, 10);
  • Set Gravity(Event Player, 0);
  • }
  • }
  • rule("DVA not boosting on ground")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • D.Va;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(D.Va);
  • Is Using Ability 1(Event Player) == False;
  • Is On Ground(Event Player) == True;
  • }
  • actions
  • {
  • Set Move Speed(Event Player, 100);
  • Set Gravity(Event Player, 100);
  • }
  • }
  • disabled rule("DVA brake")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • D.Va;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(D.Va);
  • Is Button Held(Event Player, Crouch) == True;
  • }
  • actions
  • {
  • Cancel Primary Action(Event Player);
  • Wait(0.048, Ignore Condition);
  • disabled Apply Impulse(Event Player, Down, 0.001, To World, Cancel Contrary Motion);
  • disabled Apply Impulse(Event Player, Up, 0.001, To World, Cancel Contrary Motion);
  • disabled Apply Impulse(Event Player, Backward, 0.001, To World, Cancel Contrary Motion);
  • disabled Apply Impulse(Event Player, Forward, 0.001, To World, Cancel Contrary Motion);
  • disabled Apply Impulse(Event Player, Right, 0.001, To World, Cancel Contrary Motion);
  • disabled Apply Impulse(Event Player, Left, 0.001, To World, Cancel Contrary Motion);
  • Start Accelerating(Event Player, Facing Direction Of(Event Player) * -1, 100, Speed Of(Event Player), To World,
  • Direction Rate and Max Speed);
  • disabled Wait(1, Ignore Condition);
  • Wait(0.400, Ignore Condition);
  • Stop Accelerating(Event Player);
  • }
  • }
  • rule("DVA baby call mecha")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • D.Va;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(D.Va);
  • Is In Alternate Form(Event Player) == True;
  • }
  • actions
  • {
  • Set Ultimate Charge(Event Player, 100);
  • Press Button(Event Player, Ultimate);
  • Wait(0.016, Ignore Condition);
  • Set Status(Event Player, Null, Phased Out, 60);
  • Set Status(Event Player, Null, Unkillable, Global.roundTimer);
  • Loop If Condition Is True;
  • }
  • }
  • rule("DVA winner")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • D.Va;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(D.Va);
  • Event Player.dvaPoints >= 5;
  • }
  • actions
  • {
  • Global.roundTimer = 0.032;
  • }
  • }
  • rule("DVA end of the round {GLOBAL}")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(D.Va);
  • Global.heroOfLastRound == Hero(D.Va);
  • }
  • actions
  • {
  • Global.dvaDestructorIt = 0;
  • For Global Variable(dvaDestructorIt, 0, Count Of(Global.dvaObjectiveEffects), 1);
  • Destroy Effect(Global.dvaObjectiveEffects[Global.dvaDestructorIt]);
  • Destroy Icon(Global.dvaObjectiveIcons[Global.dvaDestructorIt]);
  • End;
  • }
  • }
  • rule("DVA end of the round {EACH PLAYER}")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(D.Va);
  • Global.heroOfLastRound == Hero(D.Va);
  • }
  • actions
  • {
  • Event Player.dvaPoints = 0;
  • Wait(0.016, Ignore Condition);
  • Clear Status(Event Player, Phased Out);
  • Clear Status(Event Player, Unkillable);
  • Set Gravity(Event Player, 100);
  • Set Move Speed(Event Player, 100);
  • Stop Accelerating(Event Player);
  • Wait(0.512, Ignore Condition);
  • Destroy HUD Text(Event Player.dvaPointsHud);
  • Destroy In-World Text(Event Player.dvaDistanceText);
  • Destroy Icon(Event Player.playerClosestObjectiveIcon);
  • Wait(0.064, Ignore Condition);
  • Event Player.dvaPointsHud = Null;
  • }
  • }
  • rule("ECHO init player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Echo;
  • }
  • conditions
  • {
  • Global.heroOfTheRound == Hero(Echo);
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.echoPointsHud = Null;
  • Event Player.echoPoints = 0;
  • Wait(1, Ignore Condition);
  • If(Event Player.echoPointsHud == Null);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("{0}: {1}/40 = {2}/4 points", Event Player,
  • Event Player.echoPoints, Round To Integer(Event Player.echoPoints / 10, Down)), Left, (Event Player.echoPoints + 10) * -1,
  • White, White, Aqua, Visible To Sort Order and String, Default Visibility);
  • Event Player.echoPointsHud = Last Text ID;
  • End;
  • Set Status(Event Player, Null, Unkillable, Global.roundTimer);
  • }
  • }
  • rule("ECHO init global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.heroOfTheRound == Hero(Echo);
  • }
  • actions
  • {
  • "Creates the array to store the effects of the common rings"
  • Global.commonRingsEffects = Empty Array;
  • "Creates the array to store the positions of the common rings"
  • Global.commonRingsPos = Empty Array;
  • "Append to the array commonRingsPos the not random common ring position"
  • Modify Global Variable(commonRingsPos, Append To Array, Vector(0, 16, 0));
  • "Append to the array commonRingsPos a new position"
  • Modify Global Variable(commonRingsPos, Append To Array, Vector(Random Real(-32, 32), Random Real(2, 32), Random Real(-32, 32)));
  • "Append to the array commonRingsPos a new position"
  • Modify Global Variable(commonRingsPos, Append To Array, Vector(Random Real(-32, 32), Random Real(2, 32), Random Real(-32, 32)));
  • "Append to the array commonRingsPos a new position"
  • Modify Global Variable(commonRingsPos, Append To Array, Vector(Random Real(-32, 32), Random Real(2, 32), Random Real(-32, 32)));
  • "Append to the array commonRingsPos a new position"
  • Modify Global Variable(commonRingsPos, Append To Array, Vector(Random Real(-32, 32), Random Real(2, 32), Random Real(-32, 32)));
  • "Append to the array commonRingsPos a new position"
  • Modify Global Variable(commonRingsPos, Append To Array, Vector(Random Real(-32, 32), Random Real(2, 32), Random Real(-32, 32)));
  • "Append to the array commonRingsPos a new position"
  • Modify Global Variable(commonRingsPos, Append To Array, Vector(Random Real(-32, 32), Random Real(2, 32), Random Real(-32, 32)));
  • "Append to the array commonRingsPos a new position"
  • Modify Global Variable(commonRingsPos, Append To Array, Vector(Random Real(-32, 32), Random Real(2, 32), Random Real(-32, 32)));
  • "Creates the not random common ring"
  • Create Effect(All Players(All Teams), Good Aura, White, Global.commonRingsPos[0], 1, Visible To Position and Radius);
  • "Append the last created common ring to commonRingsEffects"
  • Modify Global Variable(commonRingsEffects, Append To Array, Last Created Entity);
  • "Create a common ring effect in the position in commonRingsPos"
  • Create Effect(All Players(All Teams), Good Aura, White, Global.commonRingsPos[1], 1, Visible To Position and Radius);
  • "Append the last created common ring to commonRingsEffects"
  • Modify Global Variable(commonRingsEffects, Append To Array, Last Created Entity);
  • "Create a common ring effect in the position in commonRingsPos"
  • Create Effect(All Players(All Teams), Good Aura, White, Global.commonRingsPos[2], 1, Visible To Position and Radius);
  • "Append the last created common ring to commonRingsEffects"
  • Modify Global Variable(commonRingsEffects, Append To Array, Last Created Entity);
  • "Create a common ring effect in the position in commonRingsPos"
  • Create Effect(All Players(All Teams), Good Aura, White, Global.commonRingsPos[3], 1, Visible To Position and Radius);
  • "Append the last created common ring to commonRingsEffects"
  • Modify Global Variable(commonRingsEffects, Append To Array, Last Created Entity);
  • "Create a common ring effect in the position in commonRingsPos"
  • Create Effect(All Players(All Teams), Good Aura, White, Global.commonRingsPos[4], 1, Visible To Position and Radius);
  • "Append the last created common ring to commonRingsEffects"
  • Modify Global Variable(commonRingsEffects, Append To Array, Last Created Entity);
  • "Create a common ring effect in the position in commonRingsPos"
  • Create Effect(All Players(All Teams), Good Aura, White, Global.commonRingsPos[5], 1, Visible To Position and Radius);
  • "Append the last created common ring to commonRingsEffects"
  • Modify Global Variable(commonRingsEffects, Append To Array, Last Created Entity);
  • "Create a common ring effect in the position in commonRingsPos"
  • Create Effect(All Players(All Teams), Good Aura, White, Global.commonRingsPos[6], 1, Visible To Position and Radius);
  • "Append the last created common ring to commonRingsEffects"
  • Modify Global Variable(commonRingsEffects, Append To Array, Last Created Entity);
  • "Create a common ring effect in the position in commonRingsPos"
  • Create Effect(All Players(All Teams), Good Aura, White, Global.commonRingsPos[7], 1, Visible To Position and Radius);
  • "Append the last created common ring to commonRingsEffects"
  • Modify Global Variable(commonRingsEffects, Append To Array, Last Created Entity);
  • "Creates the array to store the effects of the rare rings"
  • Global.rareRingsEffects = Empty Array;
  • "Creates the array to store the positions of the rare rings"
  • Global.rareRingsPos = Empty Array;
  • "Append to the array rareRingsPos a new position"
  • Modify Global Variable(rareRingsPos, Append To Array, Vector(Random Real(-36, 36), Random Real(2, 36), Random Real(-36, 36)));
  • "Append to the array rareRingsPos a new position"
  • Modify Global Variable(rareRingsPos, Append To Array, Vector(Random Real(-36, 36), Random Real(2, 36), Random Real(-36, 36)));
  • "Append to the array rareRingsPos a new position"
  • Modify Global Variable(rareRingsPos, Append To Array, Vector(Random Real(-36, 36), Random Real(2, 36), Random Real(-36, 36)));
  • "Append to the array rareRingsPos a new position"
  • Modify Global Variable(rareRingsPos, Append To Array, Vector(Random Real(-36, 36), Random Real(2, 36), Random Real(-36, 36)));
  • "Append to the array rareRingsPos a new position"
  • Modify Global Variable(rareRingsPos, Append To Array, Vector(Random Real(-36, 36), Random Real(2, 36), Random Real(-36, 36)));
  • "Append to the array rareRingsPos a new position"
  • Modify Global Variable(rareRingsPos, Append To Array, Vector(Random Real(-36, 36), Random Real(2, 36), Random Real(-36, 36)));
  • "Create a rare ring effect in the position in rareRingsPos"
  • Create Effect(All Players(All Teams), Good Aura, Aqua, Global.rareRingsPos[0], 1, Visible To Position and Radius);
  • "Append the last created rare ring to rareRingsEffects"
  • Modify Global Variable(rareRingsEffects, Append To Array, Last Created Entity);
  • "Create a rare ring effect in the position in rareRingsPos"
  • Create Effect(All Players(All Teams), Good Aura, Aqua, Global.rareRingsPos[1], 1, Visible To Position and Radius);
  • "Append the last created rare ring to rareRingsEffects"
  • Modify Global Variable(rareRingsEffects, Append To Array, Last Created Entity);
  • "Create a rare ring effect in the position in rareRingsPos"
  • Create Effect(All Players(All Teams), Good Aura, Aqua, Global.rareRingsPos[2], 1, Visible To Position and Radius);
  • "Append the last created rare ring to rareRingsEffects"
  • Modify Global Variable(rareRingsEffects, Append To Array, Last Created Entity);
  • "Create a rare ring effect in the position in rareRingsPos"
  • Create Effect(All Players(All Teams), Good Aura, Aqua, Global.rareRingsPos[3], 1, Visible To Position and Radius);
  • "Append the last created rare ring to rareRingsEffects"
  • Modify Global Variable(rareRingsEffects, Append To Array, Last Created Entity);
  • "Create a rare ring effect in the position in rareRingsPos"
  • Create Effect(All Players(All Teams), Good Aura, Aqua, Global.rareRingsPos[4], 1, Visible To Position and Radius);
  • "Append the last created rare ring to rareRingsEffects"
  • Modify Global Variable(rareRingsEffects, Append To Array, Last Created Entity);
  • "Create a rare ring effect in the position in rareRingsPos"
  • Create Effect(All Players(All Teams), Good Aura, Aqua, Global.rareRingsPos[5], 1, Visible To Position and Radius);
  • "Append the last created rare ring to rareRingsEffects"
  • Modify Global Variable(rareRingsEffects, Append To Array, Last Created Entity);
  • "Creates the array to store the effects of the epic rings"
  • Global.epicRingsEffects = Empty Array;
  • "Creates the array to store the positions of the epic rings"
  • Global.epicRingsPos = Empty Array;
  • "Append to the array epicRingsPos a new position"
  • Modify Global Variable(epicRingsPos, Append To Array, Vector(Random Real(-44, 44), Random Real(2, 44), Random Real(-44, 44)));
  • "Append to the array epicRingsPos a new position"
  • Modify Global Variable(epicRingsPos, Append To Array, Vector(Random Real(-44, 44), Random Real(2, 44), Random Real(-44, 44)));
  • "Create a epic ring effect in the position in epicRingsPos"
  • Create Effect(All Players(All Teams), Good Aura, Purple, Global.epicRingsPos[0], 1, Visible To Position and Radius);
  • "Append the last created epic ring to epicRingsEffects"
  • Modify Global Variable(epicRingsEffects, Append To Array, Last Created Entity);
  • "Create a epic ring effect in the position in epicRingsPos"
  • Create Effect(All Players(All Teams), Good Aura, Purple, Global.epicRingsPos[1], 1, Visible To Position and Radius);
  • "Append the last created epic ring to epicRingsEffects"
  • Modify Global Variable(epicRingsEffects, Append To Array, Last Created Entity);
  • "Creates the array to store the effects of the legendary rings"
  • Global.legendaryRingsEffects = Empty Array;
  • "Creates the array to store the positions of the legendary rings"
  • Global.legendaryRingsPos = Empty Array;
  • "Append to the array legendaryRingsPos a new position"
  • Modify Global Variable(legendaryRingsPos, Append To Array, Vector(Random Real(-48, 48), Random Real(2, 48), Random Real(-48, 48)));
  • "Create a legendary ring effect in the position in legendaryRingsPos"
  • Create Effect(All Players(All Teams), Good Aura, Orange, Global.legendaryRingsPos[0], 1, Visible To Position and Radius);
  • "Append the last created legendary ring to legendaryRingsEffects"
  • Modify Global Variable(legendaryRingsEffects, Append To Array, Last Created Entity);
  • "Creates the array to store the effects of the teleport orbs"
  • Global.echoTeleportEffects = Empty Array;
  • "Creates the array to store the positions of the teleport orbs"
  • Global.echoTeleportPos = Empty Array;
  • "Append to the array echoTeleportPos a new position"
  • Modify Global Variable(echoTeleportPos, Append To Array, Vector(Random Real(-40, 40), Random Real(2, 40), Random Real(-40, 40)));
  • "Create a teleport orb effect in the position in echoTeleportPos"
  • Create Effect(All Players(All Teams), Orb, Green, Global.echoTeleportPos[0], 1, Visible To Position and Radius);
  • "Append the last created teleport orb to echoTeleportEffects"
  • Modify Global Variable(echoTeleportEffects, Append To Array, Last Created Entity);
  • "Append to the array echoTeleportPos a new position"
  • Modify Global Variable(echoTeleportPos, Append To Array, Vector(Random Real(-40, 40), Random Real(2, 40), Random Real(-40, 40)));
  • "Create a boost orb effect in the position in echoTeleportPos"
  • Create Effect(All Players(All Teams), Orb, Green, Global.echoTeleportPos[1], 1, Visible To Position and Radius);
  • "Append the last created teleport orb to echoTeleportEffects"
  • Modify Global Variable(echoTeleportEffects, Append To Array, Last Created Entity);
  • Global.echoRightHUD = Empty Array;
  • Global.echoRightHud = Empty Array;
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String(" \n"), Right, 995, White, White, White, Visible To and String,
  • Default Visibility);
  • Modify Global Variable(echoRightHUD, Append To Array, Last Text ID);
  • Modify Global Variable(echoRightHud, Append To Array, Last Text ID);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("White rings: 1 point"), Right, 996, White, White, White,
  • Visible To and String, Default Visibility);
  • Modify Global Variable(echoRightHUD, Append To Array, Last Text ID);
  • Modify Global Variable(echoRightHud, Append To Array, Last Text ID);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Blue rings: 2 points"), Right, 997, White, White, Aqua,
  • Visible To and String, Default Visibility);
  • Modify Global Variable(echoRightHUD, Append To Array, Last Text ID);
  • Modify Global Variable(echoRightHud, Append To Array, Last Text ID);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Purple rings: 4 points"), Right, 998, White, White, Purple,
  • Visible To and String, Default Visibility);
  • Modify Global Variable(echoRightHUD, Append To Array, Last Text ID);
  • Modify Global Variable(echoRightHud, Append To Array, Last Text ID);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Orange rings: 5 points"), Right, 999, White, White, Orange,
  • Visible To and String, Default Visibility);
  • Modify Global Variable(echoRightHUD, Append To Array, Last Text ID);
  • Modify Global Variable(echoRightHud, Append To Array, Last Text ID);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String(" \nTeleport"), Right, 1000, White, White, Green,
  • Visible To and String, Default Visibility);
  • Modify Global Variable(echoRightHUD, Append To Array, Last Text ID);
  • Modify Global Variable(echoRightHud, Append To Array, Last Text ID);
  • }
  • }
  • rule("ECHO reduce speed when taking damage")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Echo);
  • }
  • actions
  • {
  • Set Move Speed(Event Player, 50);
  • Wait(0.500, Ignore Condition);
  • Set Move Speed(Event Player, 100);
  • }
  • }
  • rule("ECHO meele stun")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Echo;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Echo);
  • Is Button Held(Attacker, Melee) == True;
  • }
  • actions
  • {
  • If(Is Button Held(Attacker, Melee) == True);
  • Set Status(Victim, Event Player, Stunned, 0.750);
  • End;
  • }
  • }
  • rule("ECHO healing like Mercy passive")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Echo;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Echo);
  • Health(Event Player) < 200;
  • }
  • actions
  • {
  • Wait(0.064, Ignore Condition);
  • Start Heal Over Time(Event Player, Null, Global.roundTimer, 200);
  • }
  • }
  • rule("ECHO not healing")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Echo;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Echo);
  • Health(Event Player) == 200;
  • }
  • actions
  • {
  • Stop All Heal Over Time(Event Player);
  • Wait(0.016, Ignore Condition);
  • }
  • }
  • rule("ECHO points common rings")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Echo;
  • }
  • conditions
  • {
  • Is True For Any(Global.commonRingsPos, Distance Between(Event Player, Current Array Element) <= 2) == True;
  • Is True For Any(Global.commonRingsPos, Distance Between(Event Player, Current Array Element) <= 2.150) == True;
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Echo);
  • }
  • actions
  • {
  • Event Player.echoClosestRing = First Of(Sorted Array(Global.commonRingsPos, Distance Between(Event Player,
  • Current Array Element)));
  • Wait(0.016, Ignore Condition);
  • Event Player.echoClosestRing = Index Of Array Value(Global.commonRingsPos, Event Player.echoClosestRing);
  • Event Player.echoPoints += 1;
  • Play Effect(All Players(All Teams), Good Pickup Effect, White, Event Player, 1);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, White, Event Player, 100);
  • Global.commonRingsPos[Event Player.echoClosestRing] = Vector(Random Real(-32, 32), Random Real(2, 32), Random Real(-32, 32));
  • }
  • }
  • rule("ECHO points rare rings")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Echo;
  • }
  • conditions
  • {
  • Is True For Any(Global.rareRingsPos, Distance Between(Event Player, Current Array Element) <= 2) == True;
  • Is True For Any(Global.rareRingsPos, Distance Between(Event Player, Current Array Element) <= 2.150) == True;
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Echo);
  • }
  • actions
  • {
  • Event Player.echoClosestRing = First Of(Sorted Array(Global.rareRingsPos, Distance Between(Event Player, Current Array Element)));
  • Wait(0.016, Ignore Condition);
  • Event Player.echoClosestRing = Index Of Array Value(Global.rareRingsPos, Event Player.echoClosestRing);
  • Event Player.echoPoints += 2;
  • Play Effect(All Players(All Teams), Good Pickup Effect, Aqua, Event Player, 1);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Aqua, Event Player, 100);
  • Global.rareRingsPos[Event Player.echoClosestRing] = Vector(Random Real(-36, 36), Random Real(2, 36), Random Real(-36, 36));
  • }
  • }
  • rule("ECHO points epic rings")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Echo;
  • }
  • conditions
  • {
  • Is True For Any(Global.epicRingsPos, Distance Between(Event Player, Current Array Element) <= 2) == True;
  • Is True For Any(Global.epicRingsPos, Distance Between(Event Player, Current Array Element) <= 2.150) == True;
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Echo);
  • }
  • actions
  • {
  • Event Player.echoClosestRing = First Of(Sorted Array(Global.epicRingsPos, Distance Between(Event Player, Current Array Element)));
  • Wait(0.016, Ignore Condition);
  • Event Player.echoClosestRing = Index Of Array Value(Global.epicRingsPos, Event Player.echoClosestRing);
  • Event Player.echoPoints += 4;
  • Play Effect(All Players(All Teams), Good Pickup Effect, Purple, Event Player, 1);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Purple, Event Player, 100);
  • Global.epicRingsPos[Event Player.echoClosestRing] = Vector(Random Real(-44, 44), Random Real(2, 44), Random Real(-44, 44));
  • }
  • }
  • rule("ECHO points legendary rings")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Echo;
  • }
  • conditions
  • {
  • Is True For Any(Global.legendaryRingsPos, Distance Between(Event Player, Current Array Element) <= 2) == True;
  • Is True For Any(Global.legendaryRingsPos, Distance Between(Event Player, Current Array Element) <= 2.150) == True;
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Echo);
  • }
  • actions
  • {
  • Event Player.echoClosestRing = First Of(Sorted Array(Global.legendaryRingsPos, Distance Between(Event Player,
  • Current Array Element)));
  • Wait(0.016, Ignore Condition);
  • Event Player.echoClosestRing = Index Of Array Value(Global.legendaryRingsPos, Event Player.echoClosestRing);
  • Event Player.echoPoints += 5;
  • Play Effect(All Players(All Teams), Good Pickup Effect, Orange, Event Player, 1);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Orange, Event Player, 100);
  • Global.legendaryRingsPos[Event Player.echoClosestRing] = Vector(Random Real(-48, 48), Random Real(2, 48), Random Real(-48, 48));
  • }
  • }
  • rule("ECHO teleports")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Echo;
  • }
  • conditions
  • {
  • Is True For Any(Global.echoTeleportPos, Distance Between(Event Player, Current Array Element) <= 2) == True;
  • Is True For Any(Global.echoTeleportPos, Distance Between(Event Player, Current Array Element) <= 2.150) == True;
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Echo);
  • }
  • actions
  • {
  • Teleport(Event Player, Sorted Array(Global.echoTeleportPos, Distance Between(Event Player, Current Array Element))[1]);
  • Wait(0.016, Ignore Condition);
  • Play Effect(All Players(All Teams), Good Explosion, Green, Event Player, 1);
  • Play Effect(All Players(All Teams), Explosion Sound, Green, Event Player, 100);
  • Global.echoTeleportPos[0] = Vector(Random Real(-40, 40), Random Real(2, 40), Random Real(-40, 40));
  • Global.echoTeleportPos[1] = Vector(Random Real(-40, 40), Random Real(2, 40), Random Real(-40, 40));
  • Wait(1.500, Ignore Condition);
  • }
  • }
  • rule("ECHO winner")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Echo;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Echo);
  • Event Player.echoPoints >= 40;
  • }
  • actions
  • {
  • Global.roundTimer = 0.032;
  • }
  • }
  • rule("ECHO end of the round {GLOBAL}")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Echo);
  • Global.heroOfLastRound == Hero(Echo);
  • }
  • actions
  • {
  • Wait(0.064, Ignore Condition);
  • For Global Variable(ringsIt, 0, 8, 1);
  • Destroy Effect(Global.commonRingsEffects[Global.ringsIt]);
  • Destroy Effect(Global.rareRingsEffects[Global.ringsIt]);
  • Destroy Effect(Global.epicRingsEffects[Global.ringsIt]);
  • Destroy Effect(Global.legendaryRingsEffects[Global.ringsIt]);
  • Destroy Effect(Global.echoTeleportEffects[Global.ringsIt]);
  • Destroy HUD Text(Global.echoRightHUD[Global.ringsIt]);
  • Destroy HUD Text(Global.echoRightHud[Global.ringsIt]);
  • End;
  • "Creates the array to store the effects of the common rings"
  • Global.commonRingsEffects = Empty Array;
  • "Creates the array to store the positions of the common rings"
  • Global.commonRingsPos = Empty Array;
  • "Creates the array to store the effects of the rare rings"
  • Global.rareRingsEffects = Empty Array;
  • "Creates the array to store the positions of the rare rings"
  • Global.rareRingsPos = Empty Array;
  • "Creates the array to store the effects of the epic rings"
  • Global.epicRingsEffects = Empty Array;
  • "Creates the array to store the positions of the epic rings"
  • Global.epicRingsPos = Empty Array;
  • "Creates the array to store the effects of the legendary rings"
  • Global.legendaryRingsEffects = Empty Array;
  • "Creates the array to store the positions of the legendary rings"
  • Global.legendaryRingsPos = Empty Array;
  • "Creates the array to store the effects of the teleports"
  • Global.echoTeleportEffects = Empty Array;
  • "Creates the array to store the positions of the teleports"
  • Global.echoTeleportPos = Empty Array;
  • For Global Variable(ringsIt, 0, 8, 1);
  • "Append to the array commonRingsPos the not random common ring position"
  • Modify Global Variable(commonRingsPos, Append To Array, Vector(0, -16, 0));
  • "Append to the array rareRingsPos the not random rare ring position"
  • Modify Global Variable(rareRingsPos, Append To Array, Vector(0, -16, 0));
  • "Append to the array epicRingsPos the not random epic ring position"
  • Modify Global Variable(epicRingsPos, Append To Array, Vector(0, -16, 0));
  • "Append to the array legendaryRingsPos the not random legendary ring position"
  • Modify Global Variable(legendaryRingsPos, Append To Array, Vector(0, -16, 0));
  • "Append to the array echoTeleportPos the not random legendary ring position"
  • Modify Global Variable(echoTeleportPos, Append To Array, Vector(0, -16, 0));
  • End;
  • }
  • }
  • rule("ECHO end of the round {EACH PLAYER}")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Echo);
  • Global.heroOfLastRound == Hero(Echo);
  • }
  • actions
  • {
  • Wait(Event Player.echoPoints * 0.001, Ignore Condition);
  • Modify Player Score(Event Player, Round To Integer(Event Player.echoPoints / 10, Down));
  • If(Event Player.echoPoints >= 10);
  • Small Message(Event Player, Custom String("+{0} with {1} {2}", Custom String("{0} {1}", Round To Integer(
  • Event Player.echoPoints / 10, Down), Round To Integer(Event Player.echoPoints / 10, Down) > 1 ? Custom String("points")
  • : Custom String("point")), Hero Icon String(Hero Of(Event Player)), Hero Of(Event Player)));
  • Play Effect(All Players(All Teams), Good Pickup Effect, White, Event Player, 1);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, White, Event Player, 100);
  • Create HUD Text(All Players(All Teams), Hero Icon String(Hero Of(Event Player)), Event Player, Custom String("+{1} {2}", Null,
  • Round To Integer(Event Player.echoPoints / 10, Down), Round To Integer(Event Player.echoPoints / 10, Down) > 1 ? Custom String(
  • "points") : Custom String("point")), Right, -1 + Global.pointfeedHudId, Orange, White, Orange, Visible To, Default Visibility);
  • Modify Global Variable(pointfeedHud, Append To Array, Last Text ID);
  • Global.pointfeedHudTimes[Count Of(Global.pointfeedHud) - 1] = 3.744;
  • Global.pointfeedHudId -= 0.010;
  • End;
  • Clear Status(Event Player, Unkillable);
  • Stop All Heal Over Time(Event Player);
  • Wait(0.256, Ignore Condition);
  • Destroy HUD Text(Event Player.echoPointsHud);
  • }
  • }
  • rule("LUCIO init player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Lúcio);
  • }
  • actions
  • {
  • Event Player.lucioPointsHud = Null;
  • Create Icon(Event Player, First Of(Sorted Array(Global.snotPos, Distance Between(Position Of(Event Player),
  • Current Array Element))), Circle, Visible To and Position, Green, True);
  • Current Array Element))), Ring Thick, Visible To and Position, Green, True);
  • Event Player.lucioClosestSnotIcon = Last Created Entity;
  • Event Player.lucioSpeed = 100;
  • Event Player.lucioPoints = 0;
  • Event Player.lucioHasBeenOnWall = False;
  • Wait(0.256, Ignore Condition);
  • Create HUD Text(Event Player, String("{0} m/s", Horizontal Speed Of(Event Player)), Null, Null, Left, 2, Green, White, White,
  • Visible To and String, Default Visibility);
  • Event Player.playerSpeedHud = Last Text ID;
  • Wait(0.016, Ignore Condition);
  • If(Event Player.lucioPointsHud == Null);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("{0}: {1}/8 = {2}/4 points", Event Player,
  • Event Player.lucioPoints, Round To Integer(Event Player.lucioPoints / 2, Down)), Left, (Event Player.lucioPoints + 10) * -1,
  • White, White, Green, Visible To Sort Order and String, Default Visibility);
  • Event Player.lucioPointsHud = Last Text ID;
  • End;
  • }
  • }
  • rule("LUCIO Snot")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Lúcio);
  • }
  • actions
  • {
  • Global.snotPos = Empty Array;
  • Global.snotEffects = Empty Array;
  • Global.snotPosRandomXComp = Random Real(-18, 18);
  • Global.snotPosRandomYComp = Random Real(-4, -14);
  • Modify Global Variable(snotPos, Append To Array, Ray Cast Hit Position(Vector(Global.snotPosRandomXComp, Global.snotPosRandomYComp,
  • 35), Vector(Global.snotPosRandomXComp, Global.snotPosRandomYComp, -35), Null, All Players(All Teams), False));
  • Create Effect(All Players(All Teams), Orb, Green, Global.snotPos[0] + Forward, 1, Visible To Position and Radius);
  • Modify Global Variable(snotEffects, Append To Array, Last Created Entity);
  • Global.snotPosRandomXComp = Random Real(-18, 18);
  • Global.snotPosRandomYComp = Random Real(-4, -14);
  • Modify Global Variable(snotPos, Append To Array, Ray Cast Hit Position(Vector(Global.snotPosRandomXComp, Global.snotPosRandomYComp,
  • 35), Vector(Global.snotPosRandomXComp, Global.snotPosRandomYComp, -35), Null, All Players(All Teams), False));
  • Create Effect(All Players(All Teams), Orb, Green, Global.snotPos[1] + Forward, 1, Visible To Position and Radius);
  • Modify Global Variable(snotEffects, Append To Array, Last Created Entity);
  • Global.snotPosRandomXComp = Random Real(-18, 18);
  • Global.snotPosRandomYComp = Random Real(-4, -14);
  • Modify Global Variable(snotPos, Append To Array, Ray Cast Hit Position(Vector(Global.snotPosRandomXComp, Global.snotPosRandomYComp,
  • -35), Vector(Global.snotPosRandomXComp, Global.snotPosRandomYComp, 35), Null, All Players(All Teams), False));
  • Create Effect(All Players(All Teams), Orb, Green, Global.snotPos[2] + Backward, 1, Visible To Position and Radius);
  • Modify Global Variable(snotEffects, Append To Array, Last Created Entity);
  • Global.snotPosRandomXComp = Random Real(-18, 18);
  • Global.snotPosRandomYComp = Random Real(-4, -14);
  • Modify Global Variable(snotPos, Append To Array, Ray Cast Hit Position(Vector(Global.snotPosRandomXComp, Global.snotPosRandomYComp,
  • -35), Vector(Global.snotPosRandomXComp, Global.snotPosRandomYComp, 35), Null, All Players(All Teams), False));
  • Create Effect(All Players(All Teams), Orb, Green, Global.snotPos[3] + Backward, 1, Visible To Position and Radius);
  • Modify Global Variable(snotEffects, Append To Array, Last Created Entity);
  • Wait(1, Ignore Condition);
  • Global.snotPosRandomZComp = Random Real(-18, 18);
  • Global.snotPosRandomYComp = Random Real(-4, -14);
  • Modify Global Variable(snotPos, Append To Array, Ray Cast Hit Position(Vector(35, Global.snotPosRandomYComp,
  • Global.snotPosRandomZComp), Vector(-35, Global.snotPosRandomYComp, Global.snotPosRandomZComp), Null, All Players(All Teams),
  • False));
  • Create Effect(All Players(All Teams), Orb, Green, Global.snotPos[4] + Left, 1, Visible To Position and Radius);
  • Modify Global Variable(snotEffects, Append To Array, Last Created Entity);
  • Global.snotPosRandomZComp = Random Real(-18, 18);
  • Global.snotPosRandomYComp = Random Real(-4, -14);
  • Modify Global Variable(snotPos, Append To Array, Ray Cast Hit Position(Vector(35, Global.snotPosRandomYComp,
  • Global.snotPosRandomZComp), Vector(-35, Global.snotPosRandomYComp, Global.snotPosRandomZComp), Null, All Players(All Teams),
  • False));
  • Create Effect(All Players(All Teams), Orb, Green, Global.snotPos[5] + Left, 1, Visible To Position and Radius);
  • Modify Global Variable(snotEffects, Append To Array, Last Created Entity);
  • Global.snotPosRandomZComp = Random Real(-18, 18);
  • Global.snotPosRandomYComp = Random Real(-4, -14);
  • Modify Global Variable(snotPos, Append To Array, Ray Cast Hit Position(Vector(-35, Global.snotPosRandomYComp,
  • Global.snotPosRandomZComp), Vector(35, Global.snotPosRandomYComp, Global.snotPosRandomZComp), Null, All Players(All Teams),
  • False));
  • Create Effect(All Players(All Teams), Orb, Green, Global.snotPos[6] + Right, 1, Visible To Position and Radius);
  • Modify Global Variable(snotEffects, Append To Array, Last Created Entity);
  • Global.snotPosRandomZComp = Random Real(-18, 18);
  • Global.snotPosRandomYComp = Random Real(-4, -14);
  • Modify Global Variable(snotPos, Append To Array, Ray Cast Hit Position(Vector(-35, Global.snotPosRandomYComp,
  • Global.snotPosRandomZComp), Vector(35, Global.snotPosRandomYComp, Global.snotPosRandomZComp), Null, All Players(All Teams),
  • False));
  • Create Effect(All Players(All Teams), Orb, Green, Global.snotPos[7] + Right, 1, Visible To Position and Radius);
  • Modify Global Variable(snotEffects, Append To Array, Last Created Entity);
  • }
  • }
  • rule("LUCIO point")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Is True For Any(Global.snotPos, Distance Between(Event Player, Current Array Element) <= 2) == True;
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Lúcio);
  • }
  • actions
  • {
  • Event Player.lucioClosestSnot = First Of(Sorted Array(Global.snotPos, Distance Between(Event Player, Current Array Element)));
  • Wait(0.016, Ignore Condition);
  • Event Player.lucioClosestSnot = Index Of Array Value(Global.snotPos, Event Player.lucioClosestSnot);
  • Event Player.lucioPoints += 1;
  • Event Player.lucioSpeed = Event Player.lucioSpeed + 12.500;
  • Set Move Speed(Event Player, Event Player.lucioSpeed);
  • Skip(Random Value In Array(Array(0, 7)));
  • Global.snotPosRandomXComp = Random Real(-18, 18);
  • Global.snotPosRandomYComp = Random Real(-4, -14);
  • Skip(Random Value In Array(Array(0, 2)));
  • Global.snotPos[Event Player.lucioClosestSnot] = Ray Cast Hit Position(Vector(Global.snotPosRandomXComp, Global.snotPosRandomYComp,
  • 35), Vector(Global.snotPosRandomXComp, Global.snotPosRandomYComp, -35), Null, All Players(All Teams), False) + Forward;
  • Skip(1);
  • Global.snotPos[Event Player.lucioClosestSnot] = Ray Cast Hit Position(Vector(Global.snotPosRandomXComp, Global.snotPosRandomYComp,
  • -35), Vector(Global.snotPosRandomXComp, Global.snotPosRandomYComp, 35), Null, All Players(All Teams), False) + Backward;
  • Skip(6);
  • Global.snotPosRandomZComp = Random Real(-18, 18);
  • Global.snotPosRandomYComp = Random Real(-4, -14);
  • Skip(Random Value In Array(Array(0, 2)));
  • Global.snotPos[Event Player.lucioClosestSnot] = Ray Cast Hit Position(Vector(35, Global.snotPosRandomYComp,
  • Global.snotPosRandomZComp), Vector(-35, Global.snotPosRandomYComp, Global.snotPosRandomZComp), Null, All Players(All Teams),
  • False) + Left;
  • Skip(1);
  • Global.snotPos[Event Player.lucioClosestSnot] = Ray Cast Hit Position(Vector(-35, Global.snotPosRandomYComp,
  • Global.snotPosRandomZComp), Vector(35, Global.snotPosRandomYComp, Global.snotPosRandomZComp), Null, All Players(All Teams),
  • False) + Right;
  • Wait(0.016, Ignore Condition);
  • Play Effect(All Players(All Teams), Good Pickup Effect, Green, Event Player, 1);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Green, Event Player, 100);
  • }
  • }
  • rule("LUCIO on ground = reset speed")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Lúcio);
  • Is On Ground(Event Player) == True;
  • Event Player.lucioSpeed > 100;
  • }
  • actions
  • {
  • Event Player.lucioSpeed = 100;
  • Set Move Speed(Event Player, Event Player.lucioSpeed);
  • Play Effect(Event Player, Debuff Impact Sound, Green, Event Player, 100);
  • Small Message(Event Player, Custom String("on ground = speed reset"));
  • }
  • }
  • rule("LUCIO winner")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Lúcio);
  • Event Player.lucioPoints >= 8;
  • }
  • actions
  • {
  • Global.roundTimer = 0.032;
  • }
  • }
  • rule("LUCIO end of the round {GLOBAL}")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Lúcio);
  • Global.heroOfLastRound == Hero(Lúcio);
  • }
  • actions
  • {
  • Wait(0.064, Ignore Condition);
  • For Global Variable(destructorIt, 0, 8, 1);
  • Destroy Effect(Global.snotEffects[Global.destructorIt]);
  • End;
  • Global.snotEffects = Empty Array;
  • For Global Variable(ringsIt, 0, 8, 1);
  • Modify Global Variable(snotPos, Append To Array, Vector(0, -16, 0));
  • End;
  • }
  • }
  • rule("LUCIO end of the round {EACH PLAYER}")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Lúcio);
  • Global.heroOfLastRound == Hero(Lúcio);
  • }
  • actions
  • {
  • Wait(Event Player.lucioPoints * 0.016, Ignore Condition);
  • Modify Player Score(Event Player, Round To Integer(Event Player.lucioPoints / 2, Down));
  • If(Event Player.lucioPoints >= 2);
  • Small Message(Event Player, Custom String("+{0} with {1} {2}", Custom String("{0} {1}", Round To Integer(
  • Event Player.lucioPoints / 2, Down), Round To Integer(Event Player.lucioPoints / 2, Down) > 1 ? Custom String("points")
  • : Custom String("point")), Hero Icon String(Hero Of(Event Player)), Hero Of(Event Player)));
  • Play Effect(All Players(All Teams), Good Pickup Effect, White, Event Player, 1);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, White, Event Player, 100);
  • Create HUD Text(All Players(All Teams), Hero Icon String(Hero Of(Event Player)), Event Player, Custom String("+{1} {2}", Null,
  • Round To Integer(Event Player.lucioPoints / 2, Down), Round To Integer(Event Player.lucioPoints / 2, Down) > 1 ? Custom String(
  • "points") : Custom String("point")), Right, -1 + Global.pointfeedHudId, Orange, White, Orange, Visible To, Default Visibility);
  • Modify Global Variable(pointfeedHud, Append To Array, Last Text ID);
  • Global.pointfeedHudTimes[Count Of(Global.pointfeedHud) - 1] = 3.744;
  • Global.pointfeedHudId -= 0.010;
  • End;
  • Destroy HUD Text(Event Player.playerSpeedHud);
  • Destroy Icon(Event Player.lucioClosestSnotIcon);
  • Set Move Speed(Event Player, 100);
  • Wait(0.256, Ignore Condition);
  • Destroy HUD Text(Event Player.lucioPointsHud);
  • }
  • }
  • rule("MCCREE init player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • McCree;
  • }
  • conditions
  • {
  • Global.heroOfTheRound == Hero(McCree);
  • disabled Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.mccreeHealthHud = Null;
  • Wait(0.256, Ignore Condition);
  • If(Event Player.mccreeHealthHud == Null);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("{0} : {1} HP {2}", Event Player, Round To Integer(Health(
  • Event Player), Up), Global.potatoHolder == Event Player ? Icon String(Fire) : Custom String(" ")), Left, Health(Event Player)
  • * -1, White, White, Red, Visible To Sort Order and String, Default Visibility);
  • Event Player.mccreeHealthHud = Last Text ID;
  • End;
  • Start Damage Modification(All Players(All Teams), All Players(All Teams), 50, Receivers Damagers and Damage Percent);
  • }
  • }
  • rule("MCCREE choose a potato holder")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(McCree);
  • Global.potatoHolder == Null;
  • }
  • actions
  • {
  • Global.potatoHolder = Random Value In Array(All Living Players(All Teams));
  • Global.potatoPos = Global.potatoHolder;
  • Loop If Condition Is True;
  • Add Health Pool To Player(Global.potatoHolder, Health, 25, False, True);
  • }
  • }
  • rule("MCCREE potato effect")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(McCree);
  • }
  • actions
  • {
  • Create Effect(All Players(All Teams), Bad Aura, Red, Global.potatoPos, 1, Visible To Position and Radius);
  • Global.potatoEffect = Last Created Entity;
  • Create Icon(All Players(All Teams), Global.potatoPos, Fire, Visible To and Position, Red, True);
  • Global.potatoIcon = Last Created Entity;
  • }
  • }
  • rule("MCCREE potato holder")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • McCree;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(McCree);
  • Event Player == Global.potatoHolder;
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Burning, Global.roundTimer);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, White, Event Player, 50);
  • Start Damage Over Time(Event Player, Null, Global.roundTimer, 250);
  • Set Move Speed(Event Player, 110);
  • Allow Button(Event Player, Primary Fire);
  • Allow Button(Event Player, Melee);
  • Set Ability Cooldown(Event Player, Button(Ability 1), 0);
  • }
  • }
  • rule("MCCREE not potato holder")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • McCree;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(McCree);
  • Event Player != Global.potatoHolder;
  • }
  • actions
  • {
  • Clear Status(Event Player, Burning);
  • Stop All Damage Over Time(Event Player);
  • Set Move Speed(Event Player, 100);
  • Disallow Button(Event Player, Primary Fire);
  • Disallow Button(Event Player, Melee);
  • }
  • }
  • rule("MCCREE pas​s the potato")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • McCree;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(McCree);
  • Event Player == Global.potatoHolder;
  • }
  • actions
  • {
  • Destroy In-World Text(Event Player.mccreeInvincibleText);
  • Destroy HUD Text(Event Player.mccreeInvincibleHud);
  • Global.potatoHolder = Victim;
  • Global.potatoPos = Victim;
  • Event Player.mccreeInvincibleTime = 1;
  • Set Status(Event Player, Null, Invincible, Event Player.mccreeInvincibleTime);
  • Create In-World Text(Filtered Array(All Players(All Teams), Event Player.mccreeInvincibleTime > 0), Custom String(
  • "INVINCIBLE: {0}", Event Player.mccreeInvincibleTime), Attacker, 1, Clip Against Surfaces, Visible To Position and String,
  • Yellow, Default Visibility);
  • Event Player.mccreeInvincibleText = Last Text ID;
  • Wait(0.016, Ignore Condition);
  • Create HUD Text(Filtered Array(Event Player, Event Player.mccreeInvincibleTime > 0), Custom String("INVINCIBLE: {0}",
  • Event Player.mccreeInvincibleTime), Null, Null, Left, 2, Yellow, White, White, Visible To and String, Default Visibility);
  • Event Player.mccreeInvincibleHud = Last Text ID;
  • Wait(0.016, Ignore Condition);
  • Chase Player Variable Over Time(Event Player, mccreeInvincibleTime, 0, Event Player.mccreeInvincibleTime,
  • Destination and Duration);
  • Set Ability Cooldown(Attacker, Button(Ability 1), 0);
  • Set Ability Cooldown(Victim, Button(Ability 1), 0);
  • If(Event Ability == Button(Melee));
  • Heal(Attacker, Null, 15);
  • Play Effect(All Players(All Teams), Ring Explosion, Yellow, Event Player, 1);
  • Play Effect(All Players(All Teams), Ring Explosion, Yellow, Event Player, 2);
  • Play Effect(All Players(All Teams), Ring Explosion, Yellow, Event Player, 3);
  • End;
  • }
  • }
  • rule("MCCREE potato holder dies")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(McCree);
  • Event Player == Global.potatoHolder;
  • }
  • actions
  • {
  • Global.potatoHolder = Null;
  • }
  • }
  • rule("MCCREE potato holder leaves")
  • {
  • event
  • {
  • Player Left Match;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(McCree);
  • Event Player == Global.potatoHolder;
  • }
  • actions
  • {
  • Global.potatoHolder = Null;
  • }
  • }
  • rule("MCCREE win {OUT OF TIME}")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • McCree;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(McCree);
  • Global.roundTimer <= 0.500;
  • Number of Players(All Teams) > 1;
  • Round To Integer(Count Of(Global.playersStartOfTheRound) / Number of Living Players(All Teams), Up) - 1 > 0;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Good Pickup Effect, White, Event Player, 1);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, White, Event Player, 100);
  • Modify Player Score(Event Player, Round To Integer(Count Of(Global.playersStartOfTheRound) / Number of Living Players(All Teams),
  • Up) - 1);
  • Small Message(Event Player, Custom String("+{0} with {1} {2}", Custom String("{0} {1}", Round To Integer(Count Of(
  • Global.playersStartOfTheRound) / Number of Living Players(All Teams), Up) - 1, Round To Integer(Count Of(
  • Global.playersStartOfTheRound) / Number of Living Players(All Teams), Up) - 1 > 1 ? Custom String("points") : Custom String(
  • "point")), Hero Icon String(Hero Of(Event Player)), Hero Of(Event Player)));
  • Create HUD Text(All Players(All Teams), Hero Icon String(Hero Of(Event Player)), Event Player, Custom String("+{1} {2}", Null,
  • Round To Integer(Count Of(Global.playersStartOfTheRound) / Count Of(All Living Players(All Teams)), Up) - 1, Round To Integer(
  • Count Of(Global.playersStartOfTheRound) / Number of Living Players(All Teams), Up) - 1 > 1 ? Custom String("points")
  • : Custom String("point")), Right, -1 + Global.pointfeedHudId, Orange, White, Orange, Visible To, Default Visibility);
  • Modify Global Variable(pointfeedHud, Append To Array, Last Text ID);
  • Global.pointfeedHudTimes[Count Of(Global.pointfeedHud) - 1] = 3.744;
  • Global.pointfeedHudId -= 0.010;
  • }
  • }
  • rule("MCCREE win {LAST PLAYER ALIVE}")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • McCree;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(McCree);
  • Number of Living Players(All Teams) <= 1;
  • Number of Players(All Teams) > 1;
  • Round To Integer(Count Of(Global.playersStartOfTheRound) / Number of Living Players(All Teams), Up) - 1 > 0;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Good Pickup Effect, White, Event Player, 1);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, White, Event Player, 100);
  • Modify Player Score(Event Player, Count Of(Global.playersStartOfTheRound) - 1);
  • Small Message(Event Player, Custom String("+{0} with {1} {2}", Custom String("{0} {1}", Round To Integer(Count Of(
  • Global.playersStartOfTheRound) / Number of Living Players(All Teams), Up) - 1, Round To Integer(Count Of(
  • Global.playersStartOfTheRound) / Number of Living Players(All Teams), Up) - 1 > 1 ? Custom String("points") : Custom String(
  • "point")), Hero Icon String(Hero Of(Event Player)), Hero Of(Event Player)));
  • Create HUD Text(All Players(All Teams), Hero Icon String(Hero Of(Event Player)), Event Player, Custom String("+{1} {2}", Null,
  • Round To Integer(Count Of(Global.playersStartOfTheRound) / Count Of(All Living Players(All Teams)), Up) - 1, Round To Integer(
  • Count Of(Global.playersStartOfTheRound) / Number of Living Players(All Teams), Up) - 1 > 1 ? Custom String("points")
  • : Custom String("point")), Right, -1 + Global.pointfeedHudId, Orange, White, Orange, Visible To, Default Visibility);
  • Modify Global Variable(pointfeedHud, Append To Array, Last Text ID);
  • Global.pointfeedHudTimes[Count Of(Global.pointfeedHud) - 1] = 3.744;
  • Global.pointfeedHudId -= 0.010;
  • }
  • }
  • rule("MCCREE end of the round {GLOBAL}")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(McCree);
  • Global.heroOfLastRound == Hero(McCree);
  • }
  • actions
  • {
  • Destroy Effect(Global.potatoEffect);
  • Destroy Icon(Global.potatoIcon);
  • Global.potatoHolder = Null;
  • }
  • }
  • rule("MCCREE end of the round {EACH PLAYER}")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(McCree);
  • Global.heroOfLastRound == Hero(McCree);
  • }
  • actions
  • {
  • Clear Status(Event Player, Burning);
  • Stop Damage Over Time(Last Damage Over Time ID);
  • Stop All Damage Modifications;
  • Set Move Speed(Event Player, 100);
  • Allow Button(Event Player, Primary Fire);
  • Allow Button(Event Player, Melee);
  • Wait(1, Ignore Condition);
  • Remove All Health Pools From Player(Event Player);
  • Destroy HUD Text(Event Player.mccreeHealthHud);
  • }
  • }
  • rule("MEI init player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mei;
  • }
  • conditions
  • {
  • Global.heroOfTheRound == Hero(Mei);
  • Is Alive(Event Player) == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Set Max Health(Event Player, 0.001);
  • Set Max Health(Event Player, 0.040);
  • Set Player Health(Event Player, 1);
  • Set Damage Dealt(Event Player, 1000);
  • Event Player.meiAmmo = 0;
  • Disallow Button(Event Player, Secondary Fire);
  • Disallow Button(Event Player, Ultimate);
  • Event Player.meiIsPickingSnow = False;
  • Set Status(Event Player, Null, Unkillable, 60);
  • Wait(1, Ignore Condition);
  • disabled Allow Button(Event Player, Secondary Fire);
  • Event Player.meiAmmo = 1;
  • Event Player.meiPickingSnowTimer = 1;
  • Set Max Health(Event Player, 0.001);
  • Set Max Health(Event Player, 0.040);
  • Create HUD Text(Event Player, Custom String("{1} AMMO: {0}/3", Event Player.meiAmmo, Ability Icon String(Hero(Mei), Button(
  • Secondary Fire))), Null, Null, Left, 0, Sky Blue, White, White, Visible To and String, Default Visibility);
  • Event Player.meiAmmoHud = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Event Player.meiMeeleCatchCooldown >= 2), Custom String("{1} CATCH COOLDOWN: {0}",
  • Event Player.meiMeeleCatchCooldown, Ability Icon String(Hero(Mei), Button(Melee))), Null, Null, Left, 0.100, Sky Blue, White,
  • White, Visible To and String, Default Visibility);
  • Event Player.meiCatchActiveCooldownHud = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Event Player.meiMeeleCatchCooldown > 0 && Event Player.meiMeeleCatchCooldown < 2),
  • Custom String("{1} CATCH COOLDOWN: {0}", Event Player.meiMeeleCatchCooldown, Ability Icon String(Hero(Mei), Button(Melee))),
  • Null, Null, Left, 0.100, White, White, White, Visible To and String, Default Visibility);
  • Event Player.meiCatchCooldownHud = Last Text ID;
  • Create Icon(Filtered Array(All Players(All Teams), Event Player.meiAmmo > 0 && Is Alive(Event Player)), Event Player, Asterisk,
  • Visible To and Position, Sky Blue, False);
  • Event Player.meiHasAmmoIcon = Last Created Entity;
  • Create In-World Text(Filtered Array(Event Player, Event Player.meiHasPickedUpAnyAmmo == False), Custom String("{0} crouch on me",
  • Icon String(Arrow: Down)), First Of(Sorted Array(Global.meiSnowPos, Distance Between(Position Of(Event Player),
  • Current Array Element))) + Vector(0, 0.500, 0), 1, Clip Against Surfaces, Visible To Position and String, Sky Blue,
  • Default Visibility);
  • Create In-World Text(Filtered Array(All Players(All Teams), Event Player.meiAmmo > 0 && Is Alive(Event Player)), Custom String(
  • "{0}", Ability Icon String(Hero(Mei), Button(Ultimate))), Event Player, 2, Clip Against Surfaces,
  • Visible To Position and String, Sky Blue, Default Visibility);
  • Event Player.meiHasAmmoIcon = Last Text ID;
  • Create In-World Text(Filtered Array(Event Player, Event Player.meiHasPickedUpAnyAmmo == False), Custom String(
  • "{0} crouch on me {1}", Icon String(Arrow: Down), Input Binding String(Button(Crouch)) != Custom String("") ? Custom String(
  • "[{0}]", Input Binding String(Button(Crouch))) : Custom String("")), First Of(Sorted Array(Global.meiSnowPos, Distance Between(
  • Position Of(Event Player), Current Array Element))) + Vector(0, 0.500, 0), 1, Clip Against Surfaces,
  • Visible To Position and String, Sky Blue, Default Visibility);
  • Event Player.meiCrouchOnMeText = Last Text ID;
  • Create Effect(Filtered Array(All Players(All Teams), Event Player.meiMeeleCatchCooldown >= 2), Sphere, Sky Blue, Event Player, 1,
  • Visible To Position and Radius);
  • Event Player.meiCatchSphereEffect = Last Created Entity;
  • }
  • }
  • rule("MEI init global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.heroOfTheRound == Hero(Mei);
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • "Creates the array to store the effects of the snow spots"
  • Global.meiSnowEffects = Empty Array;
  • "Creates the array to store the positions of the snow spots"
  • Global.meiSnowPos = Empty Array;
  • For Global Variable(meiSnowIt, 0, Round To Integer(Count Of(Global.playersStartOfTheRound) / 3, Up) + 1, 1);
  • "Append to the array meiSnowPos a new position"
  • Modify Global Variable(meiSnowPos, Append To Array, Vector(Random Real(-16, 16), -0.500, Random Real(-16, 16)));
  • Wait(0.016, Ignore Condition);
  • End;
  • "Create a snow spot effect in the position in meiSnowPos"
  • Create Effect(All Players(All Teams), Sphere, White, Global.meiSnowPos[0], 1, Visible To Position and Radius);
  • "Append the last created snow spot to meiSnowEffects"
  • Modify Global Variable(meiSnowEffects, Append To Array, Last Created Entity);
  • "Create a snow sparkle effect in the position in meiSnowPos"
  • Create Effect(All Players(All Teams), Sparkles, White, Global.meiSnowPos[0] + Vector(0, 0.500, 0), 1,
  • Visible To Position and Radius);
  • "Append the last created snow spot to meiSnowEffects"
  • Modify Global Variable(meiSnowEffects, Append To Array, Last Created Entity);
  • Abort If(Round To Integer(Count Of(Global.playersStartOfTheRound) / 3, Up) + 1 == 1);
  • "Create a snow spot effect in the position in meiSnowPos"
  • Create Effect(All Players(All Teams), Sphere, White, Global.meiSnowPos[1], 1, Visible To Position and Radius);
  • "Append the last created snow spot to meiSnowEffects"
  • Modify Global Variable(meiSnowEffects, Append To Array, Last Created Entity);
  • "Create a snow sparkle effect in the position in meiSnowPos"
  • Create Effect(All Players(All Teams), Sparkles, White, Global.meiSnowPos[1] + Vector(0, 0.500, 0), 1,
  • Visible To Position and Radius);
  • "Append the last created snow spot to meiSnowEffects"
  • Modify Global Variable(meiSnowEffects, Append To Array, Last Created Entity);
  • Abort If(Round To Integer(Count Of(Global.playersStartOfTheRound) / 3, Up) + 1 == 2);
  • "Create a snow spot effect in the position in meiSnowPos"
  • Create Effect(All Players(All Teams), Sphere, White, Global.meiSnowPos[2], 1, Visible To Position and Radius);
  • "Append the last created snow spot to meiSnowEffects"
  • Modify Global Variable(meiSnowEffects, Append To Array, Last Created Entity);
  • "Create a snow sparkle effect in the position in meiSnowPos"
  • Create Effect(All Players(All Teams), Sparkles, White, Global.meiSnowPos[2] + Vector(0, 0.500, 0), 1,
  • Visible To Position and Radius);
  • "Append the last created snow spot to meiSnowEffects"
  • Modify Global Variable(meiSnowEffects, Append To Array, Last Created Entity);
  • Abort If(Round To Integer(Count Of(Global.playersStartOfTheRound) / 3, Up) + 1 == 3);
  • "Create a snow spot effect in the position in meiSnowPos"
  • Create Effect(All Players(All Teams), Sphere, White, Global.meiSnowPos[3], 1, Visible To Position and Radius);
  • "Append the last created snow spot to meiSnowEffects"
  • Modify Global Variable(meiSnowEffects, Append To Array, Last Created Entity);
  • "Create a snow sparkle effect in the position in meiSnowPos"
  • Create Effect(All Players(All Teams), Sparkles, White, Global.meiSnowPos[3] + Vector(0, 0.500, 0), 1,
  • Visible To Position and Radius);
  • "Append the last created snow spot to meiSnowEffects"
  • Modify Global Variable(meiSnowEffects, Append To Array, Last Created Entity);
  • Abort If(Round To Integer(Count Of(Global.playersStartOfTheRound) / 4, Up) + 1 == 4);
  • "Create a snow spot effect in the position in meiSnowPos"
  • Create Effect(All Players(All Teams), Sphere, White, Global.meiSnowPos[4], 1, Visible To Position and Radius);
  • "Append the last created snow spot to meiSnowEffects"
  • Modify Global Variable(meiSnowEffects, Append To Array, Last Created Entity);
  • "Create a snow sparkle effect in the position in meiSnowPos"
  • Create Effect(All Players(All Teams), Sparkles, White, Global.meiSnowPos[4] + Vector(0, 0.500, 0), 1,
  • Visible To Position and Radius);
  • "Append the last created snow spot to meiSnowEffects"
  • Modify Global Variable(meiSnowEffects, Append To Array, Last Created Entity);
  • }
  • }
  • rule("MEI Kill")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Mei);
  • Event Ability != Button(Melee);
  • }
  • actions
  • {
  • If(Victim.meiIsCatching == False);
  • Clear Status(Event Player, Unkillable);
  • Kill(Victim, Attacker);
  • "10 ult % = 20 ult %"
  • Set Ultimate Charge(Attacker, Ultimate Charge Percent(Attacker) + 10);
  • End;
  • If(Victim.meiIsCatching == True);
  • Small Message(Victim, Custom String("You catched {0} snowball", Attacker));
  • Small Message(Attacker, Custom String("{0} catched your snowball", Victim));
  • End;
  • }
  • }
  • rule("MEI Pick up Snow")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mei;
  • }
  • conditions
  • {
  • Is True For Any(Global.meiSnowPos, Distance Between(Event Player, Current Array Element) <= 2) == True;
  • disabled (Is Crouching(Event Player) || Is Button Held(Event Player, Primary Fire)) == True;
  • Is Crouching(Event Player) == True;
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Mei);
  • }
  • actions
  • {
  • If(Event Player.meiAmmo < 3);
  • Event Player.meiClosestSnow = First Of(Sorted Array(Global.meiSnowPos, Distance Between(Event Player, Current Array Element)));
  • Wait(0.016, Ignore Condition);
  • Event Player.meiClosestSnow = Index Of Array Value(Global.meiSnowPos, Event Player.meiClosestSnow);
  • Play Effect(All Players(All Teams), Good Pickup Effect, White, Event Player, 1);
  • Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 100);
  • Global.meiSnowPos[Event Player.meiClosestSnow] = Vector(Random Real(-16, 16), -0.500, Random Real(-16, 16));
  • Event Player.meiAmmo += 1;
  • Event Player.meiHasPickedUpAnyAmmo = True;
  • Else;
  • Small Message(Event Player, Custom String("MAX AMMO REACHED"));
  • End;
  • }
  • }
  • rule("MEI Meele Catch Cooldown")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mei;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Mei);
  • Is Button Held(Event Player, Melee) == True;
  • Event Player.meiMeeleCatchCooldown == 0;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Event Player.meiIsCatching = True;
  • Event Player.meiMeeleCatchCooldown = 3;
  • Set Ability Cooldown(Event Player, Button(Melee), Event Player.meiMeeleCatchCooldown);
  • Chase Player Variable At Rate(Event Player, meiMeeleCatchCooldown, 0, 1, None);
  • }
  • }
  • rule("MEI No Meele Catch")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mei;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Mei);
  • Event Player.meiMeeleCatchCooldown < 2;
  • }
  • actions
  • {
  • Event Player.meiIsCatching = False;
  • }
  • }
  • rule("MEI Meele Catch Catch")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • disabled Is In View Angle(Victim, Attacker, 45) == True;
  • Victim.meiIsCatching == True;
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Mei);
  • Event Player.meiMeeleCatchCooldown >= 2;
  • Event Ability == Button(Secondary Fire);
  • }
  • actions
  • {
  • disabled Victim.meiIsCatching = True;
  • Victim.meiAmmo += 1;
  • If(Event Player.meiAmmo < 3);
  • Victim.meiAmmo += 1;
  • Else;
  • Small Message(Event Player, Custom String("MAX AMMO REACHED"));
  • End;
  • }
  • }
  • rule("MEI Disallow Meele")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Mei);
  • Event Player.meiMeeleCatchCooldown > 0;
  • }
  • actions
  • {
  • Disallow Button(Event Player, Melee);
  • }
  • }
  • rule("MEI Allow Meele")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Mei);
  • Event Player.meiMeeleCatchCooldown == 0;
  • }
  • actions
  • {
  • Allow Button(Event Player, Melee);
  • }
  • }
  • rule("MEI Disallow Sec. Fire")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Mei);
  • (Event Player.meiAmmo <= 0 || Event Player.meiIsPickingSnow == True) == True;
  • }
  • actions
  • {
  • Disallow Button(Event Player, Secondary Fire);
  • }
  • }
  • rule("MEI Allow Sec. Fire")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Mei);
  • disabled Is Button Held(Event Player, Secondary Fire) == True;
  • (Event Player.meiAmmo > 0 && Event Player.meiIsPickingSnow == False) == True;
  • disabled (Is Crouching(Event Player) || Is Button Held(Event Player, Primary Fire)) == False;
  • }
  • actions
  • {
  • Allow Button(Event Player, Secondary Fire);
  • }
  • }
  • rule("MEI Shoot")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mei;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Mei);
  • Is Button Held(Event Player, Secondary Fire) == True;
  • Is Firing Secondary(Event Player) == True;
  • (Event Player.meiAmmo > 0 && Event Player.meiIsPickingSnow == False) == True;
  • disabled (Is Crouching(Event Player) || Is Button Held(Event Player, Primary Fire)) == False;
  • }
  • actions
  • {
  • disabled Wait(0.032, Abort When False);
  • Wait(0.016, Ignore Condition);
  • Disallow Button(Event Player, Melee);
  • If(Is Firing Secondary(Event Player) == False);
  • Event Player.meiAmmo -= 1;
  • If(Event Player.meiMeeleCatchCooldown == 0);
  • Allow Button(Event Player, Melee);
  • End;
  • Abort;
  • End;
  • Loop;
  • }
  • }
  • rule("MEI Stop Shoot")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mei;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Mei);
  • Is Button Held(Event Player, Secondary Fire) == True;
  • }
  • actions
  • {
  • disabled Wait(0.368, Ignore Condition);
  • If(Event Player.meiAmmo <= 0);
  • Disallow Button(Event Player, Secondary Fire);
  • disabled Set Status(Event Player, Null, Stunned, 0.016);
  • Cancel Primary Action(Event Player);
  • End;
  • Wait(0.016, Ignore Condition);
  • Disallow Button(Event Player, Secondary Fire);
  • Loop If Condition Is True;
  • disabled If(Event Player.meiAmmo > 0);
  • disabled Event Player.meiAmmo -= 1;
  • If(Event Player.meiAmmo > 0);
  • Allow Button(Event Player, Secondary Fire);
  • End;
  • disabled End;
  • }
  • }
  • rule("MEI Ultimate")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mei;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Mei);
  • Is Button Held(Event Player, Ultimate) == True;
  • Ultimate Charge Percent(Event Player) >= 100;
  • }
  • actions
  • {
  • Destroy HUD Text(Event Player.meiAmmoHud);
  • Create HUD Text(Event Player, Custom String("AMMO: ∞/3", Event Player.meiAmmo), Null, Null, Left, 0, Sky Blue, White, White,
  • Visible To and String, Default Visibility);
  • Event Player.meiAmmoHud = Last Text ID;
  • Event Player.meiAmmo = 9999;
  • Set Status(Event Player, Null, Burning, Global.roundTimer);
  • }
  • }
  • rule("MEI end of the round {EACH PLAYER}")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Mei);
  • Global.heroOfLastRound == Hero(Mei);
  • }
  • actions
  • {
  • Event Player.meiAmmo = 1;
  • Allow Button(Event Player, Melee);
  • Allow Button(Event Player, Secondary Fire);
  • Allow Button(Event Player, Ultimate);
  • Event Player.meiIsPickingSnow = False;
  • Set Damage Dealt(Event Player, 100);
  • Clear Status(Event Player, Unkillable);
  • Clear Status(Event Player, Burning);
  • Set Max Health(Event Player, 100);
  • Destroy HUD Text(Event Player.meiAmmoHud);
  • Destroy HUD Text(Event Player.meiCatchActiveCooldownHud);
  • Destroy HUD Text(Event Player.meiCatchCooldownHud);
  • Destroy Icon(Event Player.meiHasAmmoIcon);
  • Destroy In-World Text(Event Player.meiHasAmmoIcon);
  • Destroy In-World Text(Event Player.meiCrouchOnMeText);
  • Destroy Effect(Event Player.meiCatchSphereEffect);
  • }
  • }
  • rule("MEI end of the round {GLOBAL}")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Mei);
  • Global.heroOfLastRound == Hero(Mei);
  • }
  • actions
  • {
  • Wait(0.064, Ignore Condition);
  • For Global Variable(meiSnowIt, 0, 10, 1);
  • Destroy Effect(Global.meiSnowEffects[Global.meiSnowIt]);
  • disabled Destroy HUD Text(Global.echoRightHUD[Global.ringsIt]);
  • End;
  • disabled Wait(1, Ignore Condition);
  • Global.meiSnowEffects = Empty Array;
  • Global.meiSnowPos = Empty Array;
  • }
  • }
  • rule("MERCY go back, told you")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Mercy;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Mercy);
  • Distance Between(Event Player, Vector(0, 0, 0)) >= 60;
  • }
  • actions
  • {
  • Small Message(Event Player, Custom String("go back"));
  • Set Status(Event Player, Null, Stunned, 1);
  • Wait(4, Ignore Condition);
  • Abort If Condition Is False;
  • Small Message(Event Player, Custom String("told you"));
  • Set Status(Event Player, Null, Stunned, 5);
  • }
  • }
  • rule("MERCY secondary buttons")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Mercy);
  • (Is Button Held(Event Player, Primary Fire) || Is Button Held(Event Player, Secondary Fire)) == True;
  • }
  • actions
  • {
  • Press Button(Event Player, Melee);
  • }
  • }
  • rule("PHARAH init effects")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Pharah;
  • }
  • conditions
  • {
  • Global.heroOfTheRound == Hero(Pharah);
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Wait(2, Ignore Condition);
  • Create Effect(Filtered Array(All Players(All Teams), Event Player.pharahHeal == True), Good Aura, Yellow, Event Player, 1,
  • Visible To Position and Radius);
  • Event Player.pharahHealEffect = Last Created Entity;
  • Create Effect(Filtered Array(All Players(All Teams), Health(Event Player) > 199), Good Aura, Aqua, Event Player, 1,
  • Visible To Position and Radius);
  • Event Player.pharahDamageBoostEffect = Last Created Entity;
  • Create HUD Text(Filtered Array(Event Player, Event Player.pharahHeal == True), Custom String("HEALING"), Null, Null, Left, 2,
  • Yellow, White, White, Visible To and String, Default Visibility);
  • Event Player.pharahHealHud = Last Text ID;
  • Create HUD Text(Filtered Array(Event Player, Health(Event Player) > 199), Custom String("DAMAGE BOOST"), Null, Null, Left, 2, Blue,
  • White, White, Visible To and String, Default Visibility);
  • Event Player.pharahDamageBoostHud = Last Text ID;
  • }
  • }
  • rule("PHARAH damage boost")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Pharah;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Pharah);
  • Health(Event Player) > 199;
  • Event Player.pharahHeal == True;
  • }
  • actions
  • {
  • Event Player.pharahHeal = False;
  • Event Player.pharahDamageBoost = True;
  • Set Damage Dealt(Event Player, 130);
  • Stop All Heal Over Time(Event Player);
  • Wait(0.016, Ignore Condition);
  • }
  • }
  • rule("PHARAH healing")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Pharah;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Pharah);
  • Health(Event Player) < Max Health(Event Player);
  • }
  • actions
  • {
  • Event Player.pharahDamageBoost = False;
  • Wait(0.500, Ignore Condition);
  • Event Player.pharahHeal = True;
  • Set Damage Dealt(Event Player, 100);
  • Start Heal Over Time(Event Player, Null, Global.roundTimer, 50);
  • }
  • }
  • rule("PHARAH dead")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Pharah);
  • }
  • actions
  • {
  • Wait(0.032, Ignore Condition);
  • Event Player.pharahHeal = False;
  • Event Player.pharahDamageBoost = False;
  • Wait(0.032, Ignore Condition);
  • Destroy Effect(Event Player.pharahHealEffect);
  • Wait(0.032, Ignore Condition);
  • Destroy Effect(Event Player.pharahDamageBoostEffect);
  • Stop All Heal Over Time(Event Player);
  • Set Damage Dealt(Event Player, 100);
  • Destroy HUD Text(Event Player.pharahHealHud);
  • Destroy HUD Text(Event Player.pharahDamageBoostHud);
  • }
  • }
  • rule("PHARAH end of the round {EACH PLAYER}")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Pharah);
  • Global.heroOfLastRound == Hero(Pharah);
  • }
  • actions
  • {
  • Event Player.pharahHeal = False;
  • Event Player.pharahDamageBoost = False;
  • Destroy Effect(Event Player.pharahHealEffect);
  • Destroy Effect(Event Player.pharahDamageBoostEffect);
  • Destroy HUD Text(Event Player.pharahHealHud);
  • Destroy HUD Text(Event Player.pharahDamageBoostHud);
  • Stop All Heal Over Time(Event Player);
  • Set Damage Dealt(Event Player, 100);
  • }
  • }
  • rule("REIN init player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reinhardt;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Reinhardt);
  • }
  • actions
  • {
  • Wait(0.256, Ignore Condition);
  • Disallow Button(Event Player, Ultimate);
  • Set Damage Dealt(Event Player, 50);
  • Set Projectile Speed(Event Player, 150);
  • }
  • }
  • rule("REIN bounce")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reinhardt;
  • }
  • conditions
  • {
  • Distance Between(Position Of(Event Player), Nearest Walkable Position(Position Of(Event Player))) <= 0.500;
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Reinhardt);
  • }
  • actions
  • {
  • Skip If(Is Button Held(Event Player, Crouch) == False, 1);
  • Apply Impulse(Event Player, Up, 10, To World, Cancel Contrary Motion);
  • Skip If(Is Button Held(Event Player, Crouch) == True, 1);
  • Apply Impulse(Event Player, Up, 20, To World, Cancel Contrary Motion);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, White, Event Player, 25);
  • disabled Play Effect(All Players(All Teams), Good Explosion, Purple, Vector(X Component Of(Position Of(Event Player)), Y Component Of(
  • Position Of(Event Player)) - 2.100, Z Component Of(Position Of(Event Player))), 0.100);
  • Wait(0.064, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("REIN knockback effect on all abilities")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Reinhardt;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Reinhardt);
  • }
  • actions
  • {
  • Apply Impulse(Victim, Vector(X Component Of(Direction Towards(Attacker, Victim)), 0, Z Component Of(Direction Towards(Attacker,
  • Victim))), Event Damage * ((60 - Global.roundTimer) / 60 + 1), To World, Cancel Contrary Motion);
  • disabled Small Message(Attacker, Custom String("{0}", Event Damage * ((60 - Global.roundTimer) / 60 + 1), Event Damage));
  • Heal(Victim, Null, Event Damage);
  • Victim.reinLastAttacker = Attacker;
  • Victim.reinAttackerCreditTimer = 10;
  • Chase Player Variable At Rate(Victim, reinAttackerCreditTimer, 0, 1, Destination and Rate);
  • Skip If(Attacker.reinUltTimer > 0, 2);
  • Attacker.reinTempUltCharge = Ultimate Charge Percent(Event Player) + (13 - Count Of(Filtered Array(All Players(All Teams),
  • Current Array Element.reinIsAlive == True)) / 2);
  • Set Ultimate Charge(Attacker, Attacker.reinTempUltCharge);
  • }
  • }
  • rule("REIN died")
  • {
  • event
  • {
  • Player Died;
  • All;
  • Reinhardt;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Reinhardt);
  • Victim.reinAttackerCreditTimer > 0;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Good Pickup Effect, White, Victim.reinLastAttacker, 1);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, White, Victim.reinLastAttacker, 100);
  • Modify Player Score(Victim.reinLastAttacker, 1);
  • Small Message(Victim.reinLastAttacker, Custom String("+1 point with {0} {1}", Hero Icon String(Hero Of(Victim.reinLastAttacker)),
  • Hero Of(Victim.reinLastAttacker)));
  • Wait(0.032, Ignore Condition);
  • Create HUD Text(All Players(All Teams), Hero Icon String(Hero Of(Victim.reinLastAttacker)), Victim.reinLastAttacker, Custom String(
  • "+1 point"), Right, -1 + Global.pointfeedHudId, Orange, White, Orange, Visible To, Default Visibility);
  • Modify Global Variable(pointfeedHud, Append To Array, Last Text ID);
  • Global.pointfeedHudTimes[Count Of(Global.pointfeedHud) - 1] = 3.744;
  • Global.pointfeedHudId -= 0.010;
  • }
  • }
  • rule("REIN charge: make shorter")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reinhardt;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Reinhardt);
  • }
  • actions
  • {
  • Event Player.reinChargeTimer = 3;
  • Chase Player Variable At Rate(Event Player, reinChargeTimer, 0, 1, Destination and Rate);
  • }
  • }
  • rule("REIN charge: stop after delay")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reinhardt;
  • }
  • conditions
  • {
  • Event Player.reinChargeTimer <= 0;
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Reinhardt);
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Stunned, 0.016);
  • Event Player.reinCanCancelCharge = False;
  • Stop Accelerating(Event Player);
  • }
  • }
  • rule("REIN charge: make the player glide")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reinhardt;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Reinhardt);
  • }
  • actions
  • {
  • Start Accelerating(Event Player, Vector(0, 0.800, 0), 30, 4, To Player, Direction Rate and Max Speed);
  • Event Player.reinChargeCancelTimer = 0.800;
  • Chase Player Variable At Rate(Event Player, reinChargeCancelTimer, 0, 1, Destination and Rate);
  • }
  • }
  • rule("REIN charge: allow cancel")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reinhardt;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • Is Button Held(Event Player, Ability 1) == False;
  • Event Player.reinChargeCancelTimer <= 0;
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Reinhardt);
  • }
  • actions
  • {
  • Event Player.reinCanCancelCharge = True;
  • }
  • }
  • rule("REIN charge: cancel (press charge again to cancel a charge)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reinhardt;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • Is Button Held(Event Player, Ability 1) == True;
  • Event Player.reinCanCancelCharge == True;
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Reinhardt);
  • }
  • actions
  • {
  • Event Player.reinCanCancelCharge = False;
  • Event Player.reinChargeTimer = 0;
  • }
  • }
  • rule("REIN charge: stop")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reinhardt;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == False;
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Reinhardt);
  • }
  • actions
  • {
  • Event Player.reinChargeTimer = 0;
  • }
  • }
  • rule("REIN charge: boom boom if two rein charge each other")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reinhardt;
  • }
  • conditions
  • {
  • Has Status(Event Player, Knocked Down) == True;
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Reinhardt);
  • }
  • actions
  • {
  • Event Player.reinExplosionCenter = (Position Of(Event Player) + Position Of(Closest Player To(Event Player, All Teams))) / 2;
  • Wait(0.020, Ignore Condition);
  • Play Effect(All Players(All Teams), Bad Explosion, Red, Event Player.reinExplosionCenter, 15);
  • Play Effect(All Players(All Teams), Ring Explosion, Red, Event Player.reinExplosionCenter, 50);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Red, Event Player.reinExplosionCenter, 200);
  • Wait(0.020, Ignore Condition);
  • Event Player.reinExplosionCenter = Null;
  • }
  • }
  • rule("REIN ult: charge")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • All;
  • Reinhardt;
  • }
  • conditions
  • {
  • Event Player.reinUltTimer <= 0;
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Reinhardt);
  • }
  • actions
  • {
  • Event Player.reinTempUltCharge = Ultimate Charge Percent(Event Player) + 30;
  • Set Ultimate Charge(Attacker, Event Player.reinTempUltCharge);
  • }
  • }
  • rule("REIN ult: use")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reinhardt;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Ultimate) == True;
  • Ultimate Charge Percent(Event Player) >= 100;
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Reinhardt);
  • }
  • actions
  • {
  • Set Ultimate Charge(Event Player, 0);
  • Set Status(Event Player, Null, Burning, 1 + Number of Living Players(All Teams));
  • Play Effect(All Players(All Teams), Explosion Sound, White, Event Player, 200);
  • Set Move Speed(Event Player, 140);
  • Set Projectile Speed(Event Player, 300);
  • Set Damage Dealt(Event Player, 80);
  • Event Player.reinUltTimer = 1 + Number of Living Players(All Teams);
  • Wait(0.016, Ignore Condition);
  • Create Effect(All Players(All Teams), Bad Aura, Red, Event Player, 1.500, Visible To Position and Radius);
  • Event Player.reinAuraEffect = Last Created Entity;
  • Wait(0.016, Ignore Condition);
  • Create HUD Text(Event Player, Custom String("POWER-UP: {0}", Event Player.reinUltTimer), Null, Null, Left, 2, Yellow, White, White,
  • Visible To and String, Default Visibility);
  • Event Player.reinUltHud = Last Text ID;
  • Chase Player Variable At Rate(Event Player, reinUltTimer, -1, 1, Destination and Rate);
  • }
  • }
  • rule("REIN ult: stun effect")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • Reinhardt;
  • }
  • conditions
  • {
  • Has Status(Attacker, Burning) == True;
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Stunned, 1);
  • }
  • }
  • rule("REIN ult: end")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reinhardt;
  • }
  • conditions
  • {
  • Event Player.reinUltTimer <= 0;
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Reinhardt);
  • }
  • actions
  • {
  • Set Damage Dealt(Event Player, 50);
  • Set Projectile Speed(Event Player, 150);
  • Set Move Speed(Event Player, 100);
  • Wait(0.064, Ignore Condition);
  • Destroy Effect(Event Player.reinAuraEffect);
  • Destroy HUD Text(Event Player.reinUltHud);
  • disabled Small Message(All Players(All Teams), Custom String("end end"));
  • }
  • }
  • rule("REIN end of the round {EACH PLAYER}")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Reinhardt);
  • Global.heroOfLastRound == Hero(Reinhardt);
  • }
  • actions
  • {
  • Stop Accelerating(Event Player);
  • Allow Button(Event Player, Ultimate);
  • Set Damage Dealt(Event Player, 100);
  • Set Projectile Speed(Event Player, 100);
  • Set Move Speed(Event Player, 100);
  • Event Player.reinUltTimer = 0;
  • Wait(0.064, Ignore Condition);
  • Destroy Effect(Event Player.reinAuraEffect);
  • Destroy HUD Text(Event Player.reinUltHud);
  • }
  • }
  • rule("ROADHOG init global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.heroOfTheRound == Hero(Roadhog);
  • }
  • actions
  • {
  • Global.roadhogHoleRadius = 7;
  • Global.roadhogHoleEffects = Empty Array;
  • Create Effect(All Players(All Teams), Light Shaft, Red, Vector(0, 0, 0), Global.roadhogHoleRadius, Visible To Position and Radius);
  • Modify Global Variable(roadhogHoleEffects, Append To Array, Last Created Entity);
  • Create Effect(All Players(All Teams), Light Shaft, Red, Vector(0, 0, 0), Global.roadhogHoleRadius, Visible To Position and Radius);
  • Modify Global Variable(roadhogHoleEffects, Append To Array, Last Created Entity);
  • Create Effect(All Players(All Teams), Light Shaft, Red, Vector(0, 0, 0), Global.roadhogHoleRadius, Visible To Position and Radius);
  • Modify Global Variable(roadhogHoleEffects, Append To Array, Last Created Entity);
  • Create Effect(All Players(All Teams), Ring, White, Vector(0, 0, 0), Global.roadhogHoleRadius, Visible To Position and Radius);
  • Modify Global Variable(roadhogHoleEffects, Append To Array, Last Created Entity);
  • Create Effect(All Players(All Teams), Ring, White, Vector(0, 0, 0), Global.roadhogHoleRadius, Visible To Position and Radius);
  • Modify Global Variable(roadhogHoleEffects, Append To Array, Last Created Entity);
  • Create Effect(All Players(All Teams), Ring, White, Vector(0, 0, 0), Global.roadhogHoleRadius, Visible To Position and Radius);
  • Modify Global Variable(roadhogHoleEffects, Append To Array, Last Created Entity);
  • Create Effect(All Players(All Teams), Light Shaft, Red, Vector(0, 0, 0), Global.roadhogHoleRadius, Visible To Position and Radius);
  • Modify Global Variable(roadhogHoleEffects, Append To Array, Last Created Entity);
  • Create Effect(All Players(All Teams), Light Shaft, Red, Vector(0, 0, 0), Global.roadhogHoleRadius, Visible To Position and Radius);
  • Modify Global Variable(roadhogHoleEffects, Append To Array, Last Created Entity);
  • Chase Global Variable Over Time(roadhogHoleRadius, 9, 60, None);
  • Create In-World Text(All Players(All Teams), Custom String("{0}", Icon String(Skull)), Vector(0, 5, 0), 4, Clip Against Surfaces,
  • Visible To Position and String, White, Default Visibility);
  • Modify Global Variable(roadhogHoleEffects, Append To Array, Last Text ID);
  • Wait(0.500, Ignore Condition);
  • Global.minigameStringTitles[Index Of Array Value(Global.heroList, Hero(Roadhog))] = Custom String("{0} {1} HOOKS 1 HOLE {0}",
  • Hero Icon String(Hero(Roadhog)), Number of Living Players(All Teams));
  • }
  • }
  • rule("ROADHOG init player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.heroOfTheRound == Hero(Roadhog);
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Start Forcing Throttle(Event Player, 0, 0, 0, 0, 0, 0);
  • Set Gravity(Event Player, 0);
  • disabled While(Y Component Of(Position Of(Event Player)) < 9);
  • Teleport(Event Player, 10 * Normalize(Vector(Random Real(-1, 1), 0, Random Real(-1, 1))));
  • While(Distance Between(Position Of(Event Player) * Vector(1, 0, 1), Vector(0, 10, 0) * Vector(1, 0, 1))
  • disabled Start Forcing Throttle(Event Player, 0, 0, 0, 0, 0, 0);
  • disabled Set Gravity(Event Player, 0);
  • disabled Teleport(Event Player, 10 * Normalize(Vector(Random Real(-1, 1), 0, Random Real(-1, 1))));
  • disabled While(Distance Between(Position Of(Event Player) * Vector(1, 0, 1), Vector(0, 10, 0) * Vector(1, 0, 1))
  • <= Global.roadhogHoleRadius);
  • Teleport(Event Player, 10 * Normalize(Vector(Random Real(-1, 1), 0, Random Real(-1, 1))));
  • Wait(0.175, Ignore Condition);
  • End;
  • Disallow Button(Event Player, Ability 1);
  • disabled Teleport(Event Player, 10 * Normalize(Vector(Random Real(-1, 1), 0, Random Real(-1, 1))));
  • disabled Wait(0.175, Ignore Condition);
  • disabled End;
  • disabled Disallow Button(Event Player, Ability 1);
  • Event Player.roadhogYanked = True;
  • Wait(0.512, Ignore Condition);
  • While(Y Component Of(Position Of(Event Player)) < 9);
  • Teleport(Event Player, Position Of(Event Player) + Vector(0, 10, 0));
  • Wait(0.175, Ignore Condition);
  • While(Y Component Of(Position Of(Event Player)) >= 10.500);
  • Teleport(Event Player, Vector(X Component Of(Position Of(Event Player)), 10, Z Component Of(Position Of(Event Player))));
  • Wait(0.175, Ignore Condition);
  • End;
  • End;
  • Allow Button(Event Player, Ability 1);
  • Set Gravity(Event Player, 0);
  • Apply Impulse(Event Player, Down, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Up, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Backward, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Forward, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Right, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Left, 0.001, To World, Cancel Contrary Motion);
  • disabled Wait(0.512, Ignore Condition);
  • disabled While(Y Component Of(Position Of(Event Player)) < 9);
  • disabled Teleport(Event Player, Position Of(Event Player) + Vector(0, 10, 0));
  • disabled Wait(0.175, Ignore Condition);
  • disabled While(Y Component Of(Position Of(Event Player)) >= 10.500);
  • disabled Teleport(Event Player, Vector(X Component Of(Position Of(Event Player)), 10, Z Component Of(Position Of(Event Player))));
  • disabled Wait(0.175, Ignore Condition);
  • disabled End;
  • disabled End;
  • disabled Allow Button(Event Player, Ability 1);
  • disabled Set Gravity(Event Player, 0);
  • disabled Apply Impulse(Event Player, Down, 0.001, To World, Cancel Contrary Motion);
  • disabled Apply Impulse(Event Player, Up, 0.001, To World, Cancel Contrary Motion);
  • disabled Apply Impulse(Event Player, Backward, 0.001, To World, Cancel Contrary Motion);
  • disabled Apply Impulse(Event Player, Forward, 0.001, To World, Cancel Contrary Motion);
  • disabled Apply Impulse(Event Player, Right, 0.001, To World, Cancel Contrary Motion);
  • disabled Apply Impulse(Event Player, Left, 0.001, To World, Cancel Contrary Motion);
  • Event Player.roadhogYanked = False;
  • Event Player.roadhogFalling = False;
  • Wait(1.500, Ignore Condition);
  • Stop Forcing Throttle(Event Player);
  • disabled Event Player.roadhogFalling = False;
  • disabled Wait(1.500, Ignore Condition);
  • disabled Stop Forcing Throttle(Event Player);
  • }
  • }
  • rule("ROADHOG Hole gravity")
  • rule("ROADHOG in the hole")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Roadhog;
  • }
  • conditions
  • {
  • disabled Distance Between(Vector(X Component Of(Position Of(Event Player)), 10, Z Component Of(Position Of(Event Player))), Vector(0, 10,
  • 0)) <= Global.roadhogHoleRadius;
  • Distance Between(Position Of(Event Player) * Vector(1, 0, 1), Vector(0, 10, 0) * Vector(1, 0, 1)) <= Global.roadhogHoleRadius;
  • Distance Between(Position Of(Event Player), Vector(0, 0, 0)) <= Global.roadhogHoleRadius;
  • Event Player.roadhogYanked == False;
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Roadhog);
  • Global.roundTimer <= 58;
  • }
  • actions
  • {
  • Event Player.roadhogFalling = True;
  • Wait(0.250, Ignore Condition);
  • Event Player.roadhogPostion = Position Of(Event Player);
  • disabled While(Is Alive(Event Player) && Event Player.roadhogYanked == False && Hero Of(Event Player) == Hero(Roadhog));
  • While(Is Alive(Event Player) && Hero Of(Event Player) == Hero(Roadhog));
  • Event Player.roadhogPostion = Event Player.roadhogPostion - Vector(0, 0.500, 0);
  • Teleport(Event Player, Event Player.roadhogPostion);
  • Wait(0.016, Ignore Condition);
  • End;
  • Event Player.roadhogFalling = False;
  • Disable Movement Collision With Environment(Event Player, True);
  • disabled Set Status(Event Player, Null, Frozen, Global.roundTimer);
  • }
  • }
  • rule("ROADHOG water")
  • rule("ROADHOG out of the hole")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Roadhog;
  • }
  • conditions
  • {
  • disabled Distance Between(Vector(X Component Of(Position Of(Event Player)), 10, Z Component Of(Position Of(Event Player))), Vector(0, 10,
  • 0)) <= Global.roadhogHoleRadius;
  • disabled Distance Between(Position Of(Event Player) * Vector(1, 0, 1), Vector(0, 10, 0) * Vector(1, 0, 1)) <= Global.roadhogHoleRadius;
  • Distance Between(Position Of(Event Player), Vector(0, 0, 0)) > Global.roadhogHoleRadius;
  • Event Player.roadhogYanked == False;
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Roadhog);
  • Y Component Of(Ray Cast Hit Position(Position Of(Event Player), Vector(X Component Of(Position Of(Event Player)), -200,
  • Z Component Of(Position Of(Event Player))), Null, All Players(All Teams), True)) <= -1;
  • Global.roundTimer <= 58;
  • }
  • actions
  • {
  • Event Player.roadhogFalling = True;
  • Wait(0.250, Ignore Condition);
  • Event Player.roadhogPostion = Position Of(Event Player);
  • While(Is Alive(Event Player) && Event Player.roadhogYanked == False && Hero Of(Event Player) == Hero(Roadhog));
  • Event Player.roadhogPostion = Event Player.roadhogPostion - Vector(0, 0.500, 0);
  • Teleport(Event Player, Event Player.roadhogPostion);
  • Wait(0.016, Ignore Condition);
  • End;
  • Small Message(Event Player, Custom String("{0}", Random Value In Array(Array(Custom String("sleep with the fishes"), Custom String(
  • "be water my friend")))));
  • Event Player.roadhogFalling = False;
  • Enable Movement Collision With Environment(Event Player);
  • disabled Clear Status(Event Player, Frozen);
  • }
  • }
  • rule("ROADHOG Yank")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Roadhog;
  • }
  • conditions
  • {
  • Event Ability == Button(Ability 1);
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Roadhog);
  • }
  • actions
  • {
  • While(Is Using Ability 1(Attacker));
  • Wait(0.016, Ignore Condition);
  • Victim.roadhogYanked = True;
  • Disallow Button(Event Player, Ability 1);
  • End;
  • Wait(0.128, Ignore Condition);
  • Victim.roadhogYanked = False;
  • Allow Button(Event Player, Ability 1);
  • }
  • }
  • rule("ROADHOG fix position")
  • rule("ROADHOG secondary buttons")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Roadhog;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Roadhog);
  • Is Alive(Event Player) == True;
  • (Y Component Of(Position Of(Event Player)) >= 9.500 && Y Component Of(Position Of(Event Player)) <= 10.500) == False;
  • Global.roundTimer <= 57.500;
  • Event Player.roadhogFalling == False;
  • }
  • actions
  • {
  • disabled Small Message(Event Player, Custom String("preparing fix..."));
  • Wait(2.500, Abort When False);
  • Teleport(Event Player, Vector(X Component Of(Position Of(Event Player)), 10, Z Component Of(Position Of(Event Player))));
  • disabled Small Message(Event Player, Custom String("fixing..."));
  • }
  • }
  • rule("ROADHOG stop movement")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Roadhog;
  • }
  • conditions
  • {
  • Event Player.roadhogYanked == False;
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Roadhog);
  • Throttle Of(Event Player) == Vector(0, 0, 0);
  • (Is Button Held(Event Player, Primary Fire) || Is Button Held(Event Player, Secondary Fire)) == True;
  • }
  • actions
  • {
  • Wait(0.048, Ignore Condition);
  • disabled Apply Impulse(Event Player, Down, 0.001, To World, Cancel Contrary Motion);
  • disabled Apply Impulse(Event Player, Up, 0.001, To World, Cancel Contrary Motion);
  • disabled Apply Impulse(Event Player, Backward, 0.001, To World, Cancel Contrary Motion);
  • disabled Apply Impulse(Event Player, Forward, 0.001, To World, Cancel Contrary Motion);
  • disabled Apply Impulse(Event Player, Right, 0.001, To World, Cancel Contrary Motion);
  • disabled Apply Impulse(Event Player, Left, 0.001, To World, Cancel Contrary Motion);
  • Start Forcing Player Position(Event Player, Position Of(Event Player), False);
  • Wait(0.048, Ignore Condition);
  • Stop Forcing Player Position(Event Player);
  • Press Button(Event Player, Ability 1);
  • }
  • }
  • rule("ROADHOG secondary buttons")
  • rule("ROADHOG cd")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Roadhog);
  • (Is Button Held(Event Player, Primary Fire) || Is Button Held(Event Player, Secondary Fire)) == True;
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Press Button(Event Player, Ability 1);
  • While(Is Using Ability 1(Event Player) == True);
  • Wait(0.032, Ignore Condition);
  • End;
  • disabled Small Message(Event Player, Custom String("{0}", Ability Cooldown(Event Player, Button(Ability 1))));
  • Set Ability Cooldown(Event Player, Button(Ability 1), 1.900);
  • }
  • }
  • rule("ROADHOG end of the round {GLOBAL}")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Roadhog);
  • Global.heroOfLastRound == Hero(Roadhog);
  • }
  • actions
  • {
  • For Global Variable(roadhogHoleEffectsIt, 0, Count Of(Global.roadhogHoleEffects), 1);
  • Destroy Effect(Global.roadhogHoleEffects[Global.roadhogHoleEffectsIt]);
  • End;
  • Destroy In-World Text(Last Of(Global.roadhogHoleEffects));
  • }
  • }
  • rule("ROADHOG end of the round {EACH PLAYER}")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Roadhog);
  • Global.heroOfLastRound == Hero(Roadhog);
  • }
  • actions
  • {
  • Set Gravity(Event Player, 100);
  • disabled Set Gravity(Event Player, 100);
  • Event Player.roadhogYanked = True;
  • Enable Movement Collision With Environment(Event Player);
  • }
  • }
  • rule("SIGMA init player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sigma;
  • }
  • conditions
  • {
  • Global.heroOfTheRound == Hero(Sigma);
  • }
  • actions
  • {
  • Start Damage Modification(Event Player, Event Player, 0, Receivers Damagers and Damage Percent);
  • Event Player.sigmaCatch = False;
  • }
  • }
  • rule("SIGMA Ult damage off")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sigma;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == True;
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Sigma);
  • }
  • actions
  • {
  • Set Damage Dealt(Event Player, 0);
  • }
  • }
  • rule("SIGMA no Ult damage on")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sigma;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == False;
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Sigma);
  • }
  • actions
  • {
  • Set Damage Dealt(Event Player, 100);
  • }
  • }
  • rule("SIGMA Ult stunt")
  • {
  • event
  • {
  • Player Dealt Knockback;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == True;
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Sigma);
  • }
  • actions
  • {
  • Set Status(Victim, Null, Stunned, 5);
  • }
  • }
  • rule("SIGMA grasp cooldown")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sigma;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Sigma);
  • }
  • actions
  • {
  • Event Player.sigmaUsingGrasp = True;
  • Set Damage Received(Event Player, 1);
  • Wait(0.125, Ignore Condition);
  • Cancel Primary Action(Event Player);
  • Set Damage Received(Event Player, 100);
  • While(Is Using Ability 1(Event Player));
  • Wait(0.032, Ignore Condition);
  • End;
  • If(Event Player.sigmaCatch == True);
  • Set Ability Cooldown(Event Player, Button(Ability 1), 2);
  • Else;
  • Set Ability Cooldown(Event Player, Button(Ability 1), 10);
  • End;
  • Event Player.sigmaUsingGrasp = False;
  • Event Player.sigmaCatch = False;
  • }
  • }
  • rule("SIGMA catch")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Sigma;
  • }
  • conditions
  • {
  • Is In View Angle(Victim, Attacker, 45) == True;
  • Victim.sigmaUsingGrasp == True;
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Sigma);
  • }
  • actions
  • {
  • Victim.sigmaCatch = True;
  • Kill(Attacker, Victim);
  • Small Message(Array(Victim, Attacker), Custom String("rock catched {0} by {1}", Custom String("{0}{1}", Ability Icon String(Hero(
  • Sigma), Button(Ability 2)), Ability Icon String(Hero(Sigma), Button(Ability 1))), Victim));
  • }
  • }
  • rule("SIGMA no catch")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Sigma;
  • }
  • conditions
  • {
  • Is In View Angle(Victim, Attacker, 45) == False;
  • Victim.sigmaUsingGrasp == False;
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Sigma);
  • }
  • actions
  • {
  • Event Player.sigmaCatch = False;
  • Kill(Victim, Attacker);
  • }
  • }
  • rule("SIGMA kill")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • All;
  • Sigma;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Sigma);
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Good Pickup Effect, Green, Event Player, 1);
  • Modify Player Score(Event Player, 1);
  • Small Message(Event Player, Custom String("+1 point with {0} {1}", Hero Icon String(Hero Of(Event Player)), Hero Of(
  • Event Player)));
  • Create HUD Text(All Players(All Teams), Hero Icon String(Hero Of(Event Player)), Event Player, Custom String("+1 point"), Right,
  • -1 + Global.pointfeedHudId, Orange, White, Orange, Visible To, Default Visibility);
  • Modify Global Variable(pointfeedHud, Append To Array, Last Text ID);
  • Global.pointfeedHudTimes[Count Of(Global.pointfeedHud) - 1] = 3.744;
  • Global.pointfeedHudId -= 0.010;
  • }
  • }
  • rule("SIGMA end of the round")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sigma;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Sigma);
  • Global.heroOfLastRound == Hero(Sigma);
  • }
  • actions
  • {
  • Set Damage Dealt(Event Player, 100);
  • Start Damage Modification(Event Player, Event Player, 100, Receivers Damagers and Damage Percent);
  • }
  • }
  • rule("SOLDIER init global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.heroOfTheRound == Hero(Soldier: 76);
  • }
  • actions
  • {
  • Global.soldierObjectiveEffects = Empty Array;
  • Global.soldierObjectivePos = Empty Array;
  • Global.soldierObjectivePos = Array(Vector(-18, 0, -18), Vector(-18, 0, 0), Vector(-18, 0, 18), Vector(0, 0, -18), Vector(0, 0, 18),
  • Vector(18, 0, -18), Vector(18, 0, 0), Vector(18, 0, 18));
  • Global.soldierObjectivePos = Randomized Array(Global.soldierObjectivePos);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 0), Light Shaft, Blue,
  • Global.soldierObjectivePos[0], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 0), Light Shaft, Blue,
  • Global.soldierObjectivePos[0], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 0), Light Shaft, Blue,
  • Global.soldierObjectivePos[0], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 1), Light Shaft, Blue,
  • Global.soldierObjectivePos[1], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 1), Light Shaft, Blue,
  • Global.soldierObjectivePos[1], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 1), Light Shaft, Blue,
  • Global.soldierObjectivePos[1], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 2), Light Shaft, Blue,
  • Global.soldierObjectivePos[2], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 2), Light Shaft, Blue,
  • Global.soldierObjectivePos[2], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 2), Light Shaft, Blue,
  • Global.soldierObjectivePos[2], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 3), Light Shaft, Blue,
  • Global.soldierObjectivePos[3], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 3), Light Shaft, Blue,
  • Global.soldierObjectivePos[3], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 3), Light Shaft, Blue,
  • Global.soldierObjectivePos[3], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 4), Light Shaft, Blue,
  • Global.soldierObjectivePos[4], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 4), Light Shaft, Blue,
  • Global.soldierObjectivePos[4], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 4), Light Shaft, Blue,
  • Global.soldierObjectivePos[4], 1.500, Visible To Position and Radius);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 5), Light Shaft, Blue,
  • Global.soldierObjectivePos[5], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 5), Light Shaft, Blue,
  • Global.soldierObjectivePos[5], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 5), Light Shaft, Blue,
  • Global.soldierObjectivePos[5], 1.500, Visible To Position and Radius);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 6), Light Shaft, Blue,
  • Global.soldierObjectivePos[6], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 6), Light Shaft, Blue,
  • Global.soldierObjectivePos[6], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 6), Light Shaft, Blue,
  • Global.soldierObjectivePos[6], 1.500, Visible To Position and Radius);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 7), Light Shaft, Blue,
  • Global.soldierObjectivePos[7], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 7), Light Shaft, Blue,
  • Global.soldierObjectivePos[7], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • Create Effect(Filtered Array(All Players(All Teams), Current Array Element.soldierPoints == 7), Light Shaft, Blue,
  • Global.soldierObjectivePos[7], 1.500, Visible To Position and Radius);
  • Modify Global Variable(soldierObjectiveEffects, Append To Array, Last Created Entity);
  • }
  • }
  • rule("SOLDIER init & phased out")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Soldier: 76;
  • }
  • conditions
  • {
  • Global.heroOfTheRound == Hero(Soldier: 76);
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.soldierPointsHud = Null;
  • Start Forcing Throttle(Event Player, 0, 0, 0, 0, 0, 0);
  • Wait(0.512, Ignore Condition);
  • Teleport(Event Player, Vector(0, 0, 0));
  • Set Facing(Event Player, Direction Towards(Eye Position(Event Player), Global.soldierObjectivePos[0]), To World);
  • Set Status(Event Player, Null, Phased Out, 60);
  • Event Player.soldierPoints = 0;
  • Stop Forcing Throttle(Event Player);
  • Wait(0.256, Ignore Condition);
  • If(Event Player.soldierPointsHud == Null);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("{0}: {1}/8 = {2}/4 points", Event Player,
  • Event Player.soldierPoints, Round To Integer(Event Player.soldierPoints / 2, Down)), Left, (Event Player.soldierPoints + 10)
  • * -1, White, White, Blue, Visible To Sort Order and String, Default Visibility);
  • Event Player.soldierPointsHud = Last Text ID;
  • End;
  • Teleport(Event Player, Vector(0, 0, 0));
  • Set Facing(Event Player, Direction Towards(Eye Position(Event Player), Global.soldierObjectivePos[0]), To World);
  • Wait(0.256, Ignore Condition);
  • Teleport(Event Player, Vector(0, 0, 0));
  • Set Facing(Event Player, Direction Towards(Eye Position(Event Player), Global.soldierObjectivePos[0]), To World);
  • Create HUD Text(Event Player, String("{0} m/s", Horizontal Speed Of(Event Player)), Null, Null, Left, 2, Blue, White, White,
  • Visible To and String, Default Visibility);
  • Event Player.playerSpeedHud = Last Text ID;
  • Create Icon(Event Player, Global.soldierObjectivePos[Event Player.soldierPoints] + Vector(0, 1.500, 0), Flag,
  • Visible To and Position, Blue, True);
  • Event Player.playerClosestObjectiveIcon = Last Created Entity;
  • }
  • }
  • rule("SOLDIER sprint")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Soldier: 76;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Using Ability 1(Event Player) == True;
  • Horizontal Speed Of(Event Player) > 5;
  • Global.heroOfTheRound == Hero(Soldier: 76);
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Phased Out, 60);
  • Event Player.soldierSprint += 1.500;
  • Set Move Speed(Event Player, Event Player.soldierSprint);
  • Wait(0.100, Ignore Condition);
  • Loop If Condition Is True;
  • Event Player.soldierSprint = 100;
  • Set Move Speed(Event Player, 100);
  • Play Effect(Event Player, Debuff Impact Sound, Green, Event Player, 100);
  • }
  • }
  • rule("SOLDIER point")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Soldier: 76;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Soldier: 76);
  • Event Player.soldierPoints < 8;
  • Distance Between(Position Of(Event Player), Global.soldierObjectivePos[Event Player.soldierPoints]) <= 1.550;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Good Pickup Effect, Blue, Event Player, 1);
  • Play Effect(Event Player, Buff Explosion Sound, Blue, Event Player, 100);
  • Event Player.soldierPoints += 1;
  • If(Event Player.soldierPoints % 2 == 0);
  • Modify Player Score(Event Player, 1);
  • Small Message(Event Player, Custom String("+1 point with {0} {1}", Hero Icon String(Hero Of(Event Player)), Hero Of(
  • Event Player)));
  • Create HUD Text(All Players(All Teams), Hero Icon String(Hero Of(Event Player)), Event Player, Custom String("+1 point"), Right,
  • -1 + Global.pointfeedHudId, Orange, White, Orange, Visible To, Default Visibility);
  • Modify Global Variable(pointfeedHud, Append To Array, Last Text ID);
  • Global.pointfeedHudTimes[Count Of(Global.pointfeedHud) - 1] = 3.744;
  • Global.pointfeedHudId -= 0.010;
  • End;
  • }
  • }
  • rule("SOLDIER winner")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Soldier: 76;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Soldier: 76);
  • Event Player.soldierPoints >= 8;
  • }
  • actions
  • {
  • Global.roundTimer = 0.032;
  • }
  • }
  • rule("SOLDIER end of the round {GLOBAL}")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Soldier: 76);
  • Global.heroOfLastRound == Hero(Soldier: 76);
  • }
  • actions
  • {
  • Global.soldierDestructorIt = 0;
  • For Global Variable(soldierDestructorIt, 0, Count Of(Global.soldierObjectiveEffects), 1);
  • Destroy Effect(Global.soldierObjectiveEffects[Global.soldierDestructorIt]);
  • End;
  • }
  • }
  • rule("SOLDIER end of the round {EACH PLAYER}")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Soldier: 76);
  • Global.heroOfLastRound == Hero(Soldier: 76);
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Event Player.soldierPoints = 0;
  • Destroy HUD Text(Event Player.playerSpeedHud);
  • Destroy Icon(Event Player.playerClosestObjectiveIcon);
  • Clear Status(Event Player, Phased Out);
  • Set Move Speed(Event Player, 100);
  • Wait(0.256, Ignore Condition);
  • Destroy HUD Text(Event Player.soldierPointsHud);
  • }
  • }
  • rule("SOMBRA hack to kill")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sombra;
  • }
  • conditions
  • {
  • Has Status(Event Player, Hacked) == True;
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Sombra);
  • }
  • actions
  • {
  • Event Player.sombraHackedPostion = Position Of(Event Player);
  • Play Effect(All Players(All Teams), Bad Explosion, Purple, Event Player.sombraHackedPostion, 1.500);
  • Teleport(Event Player, Vector(0, -500, 0));
  • }
  • }
  • rule("SOMBRA limit stealth duration")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Sombra;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Sombra);
  • }
  • actions
  • {
  • Wait(6, Abort When False);
  • Press Button(Event Player, Ability 1);
  • Small Message(Event Player, Custom String("Maximum Stealth Duration Reached"));
  • }
  • }
  • rule("SYM init player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Symmetra);
  • }
  • actions
  • {
  • "Brig flag text above the head for the player who reached the color first"
  • Create In-World Text(Filtered Array(All Players(All Teams), First Of(Global.symPlayersInTheSelectedColor) == Event Player),
  • Custom String("{0}", Ability Icon String(Hero(Brigitte), Button(Ultimate))), Event Player, 2, Clip Against Surfaces,
  • Visible To Position and String, White, Default Visibility);
  • Event Player.symFirstPlayerInColorText = Last Text ID;
  • Set Status(Event Player, Null, Rooted, 9999);
  • Disable Movement Collision With Players(Event Player);
  • Event Player.symIn = False;
  • Wait(0.512, Ignore Condition);
  • Teleport(Event Player, Vector(0, 0, 0));
  • "Left HUD showing which position you finish the run to the color + brig flag icon if you finished 1st"
  • Create HUD Text(Filtered Array(Event Player, Event Player.symIn && Global.symPhase == Custom String(
  • "someoneReachedTheSelectedColor")), Custom String("{0}{1}", Index Of Array Value(Global.symPlayersInTheSelectedColor,
  • Event Player) + 1, Event Player.symOrdinalString), Null, Null, Left, 2, White, White, White, Visible To and String,
  • Default Visibility);
  • Event Player.symOrdinalPosHud = Last Text ID;
  • }
  • }
  • rule("SYM init global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Symmetra);
  • }
  • actions
  • {
  • Global.symColoredSpheresEffectsAndText = Empty Array;
  • Global.symPlayersInTheSelectedColor = Empty Array;
  • Global.symVictims = Empty Array;
  • Global.symInnerRound = 0;
  • Global.symColorDeciding = 0;
  • Global.symColorSelected = 0;
  • Global.symTimeToReachTheColor = 5;
  • Wait(0.032, Ignore Condition);
  • Global.symColorsPositions = Array(Vector(0, 0, 0), Vector(0, 0, 15), Vector(-15, 0, 15), Vector(-15, 0, 0), Vector(-15, 0, -15),
  • Vector(0, 0, -15), Vector(15, 0, -15), Vector(15, 0, 0), Vector(15, 0, 15));
  • Create Effect(All Players(All Teams), Sphere, Blue, Global.symColorsPositions[1], 5, Visible To Position and Radius);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Created Entity);
  • Create Effect(All Players(All Teams), Sphere, Green, Global.symColorsPositions[2], 5, Visible To Position and Radius);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Created Entity);
  • Create Effect(All Players(All Teams), Sphere, Orange, Global.symColorsPositions[3], 5, Visible To Position and Radius);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Created Entity);
  • Create Effect(All Players(All Teams), Sphere, Purple, Global.symColorsPositions[4], 5, Visible To Position and Radius);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Created Entity);
  • Create Effect(All Players(All Teams), Sphere, Red, Global.symColorsPositions[5], 5, Visible To Position and Radius);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Created Entity);
  • Create Effect(All Players(All Teams), Sphere, Turquoise, Global.symColorsPositions[6], 5, Visible To Position and Radius);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Created Entity);
  • Create Effect(All Players(All Teams), Sphere, White, Global.symColorsPositions[7], 5, Visible To Position and Radius);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Created Entity);
  • Create Effect(All Players(All Teams), Sphere, Yellow, Global.symColorsPositions[8], 5, Visible To Position and Radius);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Created Entity);
  • Create In-World Text(Filtered Array(All Players(All Teams), Distance Between(Ray Cast Hit Position(Eye Position(
  • Current Array Element), Eye Position(Current Array Element) + Facing Direction Of(Current Array Element) * 15, Null,
  • All Players(All Teams), False), Global.symColorsPositions[1]) <= 5), Custom String("BLUE"),
  • Global.symColorsPositions[1] + Vector(0, 1.500, 0), 2, Clip Against Surfaces, Visible To, White, Default Visibility);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(All Players(All Teams), Distance Between(Ray Cast Hit Position(Eye Position(
  • Current Array Element), Eye Position(Current Array Element) + Facing Direction Of(Current Array Element) * 21.210, Null,
  • All Players(All Teams), False), Global.symColorsPositions[2]) <= 5), Custom String("GREEN"),
  • Global.symColorsPositions[2] + Vector(0, 1.500, 0), 2, Clip Against Surfaces, Visible To, White, Default Visibility);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(All Players(All Teams), Distance Between(Ray Cast Hit Position(Eye Position(
  • Current Array Element), Eye Position(Current Array Element) + Facing Direction Of(Current Array Element) * 15, Null,
  • All Players(All Teams), False), Global.symColorsPositions[3]) <= 5), Custom String("ORANGE"),
  • Global.symColorsPositions[3] + Vector(0, 1.500, 0), 2, Clip Against Surfaces, Visible To, White, Default Visibility);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(All Players(All Teams), Distance Between(Ray Cast Hit Position(Eye Position(
  • Current Array Element), Eye Position(Current Array Element) + Facing Direction Of(Current Array Element) * 21.210, Null,
  • All Players(All Teams), False), Global.symColorsPositions[4]) <= 5), Custom String("PURPLE"),
  • Global.symColorsPositions[4] + Vector(0, 1.500, 0), 2, Clip Against Surfaces, Visible To, White, Default Visibility);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(All Players(All Teams), Distance Between(Ray Cast Hit Position(Eye Position(
  • Current Array Element), Eye Position(Current Array Element) + Facing Direction Of(Current Array Element) * 15, Null,
  • All Players(All Teams), False), Global.symColorsPositions[5]) <= 5), Custom String("RED"),
  • Global.symColorsPositions[5] + Vector(0, 1.500, 0), 2, Clip Against Surfaces, Visible To, White, Default Visibility);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(All Players(All Teams), Distance Between(Ray Cast Hit Position(Eye Position(
  • Current Array Element), Eye Position(Current Array Element) + Facing Direction Of(Current Array Element) * 21.210, Null,
  • All Players(All Teams), False), Global.symColorsPositions[6]) <= 5), Custom String("TURQUOISE"),
  • Global.symColorsPositions[6] + Vector(0, 1.500, 0), 2, Clip Against Surfaces, Visible To, White, Default Visibility);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(All Players(All Teams), Distance Between(Ray Cast Hit Position(Eye Position(
  • Current Array Element), Eye Position(Current Array Element) + Facing Direction Of(Current Array Element) * 15, Null,
  • All Players(All Teams), False), Global.symColorsPositions[7]) <= 5), Custom String("WHITE"),
  • Global.symColorsPositions[7] + Vector(0, 1.500, 0), 2, Clip Against Surfaces, Visible To, White, Default Visibility);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(All Players(All Teams), Distance Between(Ray Cast Hit Position(Eye Position(
  • Current Array Element), Eye Position(Current Array Element) + Facing Direction Of(Current Array Element) * 21.210, Null,
  • All Players(All Teams), False), Global.symColorsPositions[8]) <= 5), Custom String("YELLOW"),
  • Global.symColorsPositions[8] + Vector(0, 1.500, 0), 2, Clip Against Surfaces, Visible To, White, Default Visibility);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Text ID);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.symColorDeciding == 1), Null, Null, Custom String("THE COLOR IS..."),
  • Top, 3, White, White, Blue, Visible To and String, Default Visibility);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Text ID);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.symColorDeciding == 2), Null, Null, Custom String("THE COLOR IS..."),
  • Top, 3, White, White, Green, Visible To and String, Default Visibility);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Text ID);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.symColorDeciding == 3), Null, Null, Custom String("THE COLOR IS..."),
  • Top, 3, White, White, Orange, Visible To and String, Default Visibility);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Text ID);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.symColorDeciding == 4), Null, Null, Custom String("THE COLOR IS..."),
  • Top, 3, White, White, Purple, Visible To and String, Default Visibility);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Text ID);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.symColorDeciding == 5), Null, Null, Custom String("THE COLOR IS..."),
  • Top, 3, White, White, Red, Visible To and String, Default Visibility);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Text ID);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.symColorDeciding == 6), Null, Null, Custom String("THE COLOR IS..."),
  • Top, 3, White, White, Turquoise, Visible To and String, Default Visibility);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Text ID);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.symColorDeciding == 7), Null, Null, Custom String("THE COLOR IS..."),
  • Top, 3, White, White, White, Visible To and String, Default Visibility);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Text ID);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.symColorDeciding == 8), Null, Null, Custom String("THE COLOR IS..."),
  • Top, 3, White, White, Purple, Visible To and String, Default Visibility);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Text ID);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Syms in: {0}", Count Of(Filtered Array(All Players(All Teams),
  • Current Array Element.symIn))), Left, 3, White, White, White, Visible To and String, Default Visibility);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Text ID);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Syms out: {0}", Count Of(Filtered Array(All Players(All Teams),
  • Current Array Element.symIn == False && Is Alive(Current Array Element)))), Left, 4, White, White, White,
  • Visible To and String, Default Visibility);
  • Modify Global Variable(symColoredSpheresEffectsAndText, Append To Array, Last Text ID);
  • Call Subroutine(symTheColorIsSelectedTrigger);
  • }
  • }
  • rule("SYM invisibility ON")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Symmetra);
  • Distance Between(Position Of(Event Player), Vector(0, 0, 0)) <= 2;
  • }
  • actions
  • {
  • disabled Set Invisible(Remove From Array(All Players(All Teams), Event Player), All);
  • Set Invisible(All Players(All Teams), All);
  • }
  • }
  • rule("SYM invisibility OFF")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Symmetra);
  • Distance Between(Position Of(Event Player), Vector(0, 0, 0)) > 2;
  • }
  • actions
  • {
  • Wait(0.064, Ignore Condition);
  • disabled Set Invisible(Remove From Array(All Players(All Teams), Event Player), None);
  • Set Invisible(Event Player, None);
  • }
  • }
  • disabled rule("SYM invisibility ON 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Symmetra);
  • Distance Between(Position Of(Event Player), Closest Player To(Event Player, All Teams)) <= 2;
  • }
  • actions
  • {
  • Set Invisible(Filtered Array(All Players(All Teams), Distance Between(Position Of(Current Array Element), Position Of(
  • Event Player)) <= 2), All);
  • }
  • }
  • disabled rule("SYM invisibility OFF 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Symmetra);
  • Distance Between(Position Of(Event Player), Closest Player To(Event Player, All Teams)) > 2;
  • }
  • actions
  • {
  • Set Invisible(Filtered Array(All Players(All Teams), Distance Between(Position Of(Current Array Element), Position Of(
  • Event Player)) > 2), None);
  • }
  • }
  • rule("SYM decidingOnAColor PHASE")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Symmetra);
  • Global.symPhase == Custom String("decidingOnAColor");
  • }
  • actions
  • {
  • Global.symColorDeciding = Random Value In Array(Remove From Array(Array(1, 2, 3, 4, 5, 6, 7, 8), Global.symColorDeciding));
  • Wait(0.192, Abort When False);
  • Loop If Condition Is True;
  • }
  • }
  • rule("SYM theColorIsSelected TRIGGER")
  • {
  • event
  • {
  • Subroutine;
  • symTheColorIsSelectedTrigger;
  • }
  • actions
  • {
  • Global.symPlayersInTheSelectedColor = Empty Array;
  • Global.symPhase = Custom String("decidingOnAColor");
  • Wait(3, Ignore Condition);
  • Global.symColorDeciding = 0;
  • Global.symPhase = Custom String("theColorIsSelected");
  • }
  • }
  • rule("SYM theColorIsSelected PHASE")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Symmetra);
  • Global.symPhase == Custom String("theColorIsSelected");
  • disabled Global.symColorSelected == 0;
  • }
  • actions
  • {
  • disabled Global.symColorSelected = Random Value In Array(Array(3, 7));
  • Global.symColorSelected = Random Integer(1, 8);
  • Wait(0.032, Ignore Condition);
  • Global.symPlayersInTheSelectedColor = Empty Array;
  • If(Global.symColorSelected == 1);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.symColorSelected == 1 && (Global.symPhase == Custom String(
  • "theColorIsSelected") || Global.symPhase == Custom String("theColorIsSelectedEnd") || Global.symPhase == Custom String(
  • "someoneReachedTheSelectedColor"))), Custom String("THE COLOR IS BLUE"), Null, Null, Top, 3, Blue, Blue, Blue,
  • Visible To and String, Default Visibility);
  • Global.symSelectedColorHud = Last Text ID;
  • Else If(Global.symColorSelected == 2);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.symColorSelected == 2 && (Global.symPhase == Custom String(
  • "theColorIsSelected") || Global.symPhase == Custom String("theColorIsSelectedEnd") || Global.symPhase == Custom String(
  • "someoneReachedTheSelectedColor"))), Custom String("THE COLOR IS GREEN"), Null, Null, Top, 3, Green, Green, Green,
  • Visible To and String, Default Visibility);
  • Global.symSelectedColorHud = Last Text ID;
  • Else If(Global.symColorSelected == 3);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.symColorSelected == 3 && (Global.symPhase == Custom String(
  • "theColorIsSelected") || Global.symPhase == Custom String("theColorIsSelectedEnd") || Global.symPhase == Custom String(
  • "someoneReachedTheSelectedColor"))), Custom String("THE COLOR IS ORANGE"), Null, Null, Top, 3, Orange, Orange, Orange,
  • Visible To and String, Default Visibility);
  • Global.symSelectedColorHud = Last Text ID;
  • Else If(Global.symColorSelected == 4);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.symColorSelected == 4 && (Global.symPhase == Custom String(
  • "theColorIsSelected") || Global.symPhase == Custom String("theColorIsSelectedEnd") || Global.symPhase == Custom String(
  • "someoneReachedTheSelectedColor"))), Custom String("THE COLOR IS PURPLE"), Null, Null, Top, 3, Purple, Purple, Purple,
  • Visible To and String, Default Visibility);
  • Global.symSelectedColorHud = Last Text ID;
  • Else If(Global.symColorSelected == 5);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.symColorSelected == 5 && (Global.symPhase == Custom String(
  • "theColorIsSelected") || Global.symPhase == Custom String("theColorIsSelectedEnd") || Global.symPhase == Custom String(
  • "someoneReachedTheSelectedColor"))), Custom String("THE COLOR IS RED"), Null, Null, Top, 3, Red, Red, Red,
  • Visible To and String, Default Visibility);
  • Global.symSelectedColorHud = Last Text ID;
  • Else If(Global.symColorSelected == 6);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.symColorSelected == 6 && (Global.symPhase == Custom String(
  • "theColorIsSelected") || Global.symPhase == Custom String("theColorIsSelectedEnd") || Global.symPhase == Custom String(
  • "someoneReachedTheSelectedColor"))), Custom String("THE COLOR IS TURQUOISE"), Null, Null, Top, 3, Turquoise, Turquoise,
  • Turquoise, Visible To and String, Default Visibility);
  • Global.symSelectedColorHud = Last Text ID;
  • Else If(Global.symColorSelected == 7);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.symColorSelected == 7 && (Global.symPhase == Custom String(
  • "theColorIsSelected") || Global.symPhase == Custom String("theColorIsSelectedEnd") || Global.symPhase == Custom String(
  • "someoneReachedTheSelectedColor"))), Custom String("THE COLOR IS WHITE"), Null, Null, Top, 3, White, White, White,
  • Visible To and String, Default Visibility);
  • Global.symSelectedColorHud = Last Text ID;
  • Else If(Global.symColorSelected == 8);
  • Create HUD Text(Filtered Array(All Players(All Teams), Global.symColorSelected == 8 && (Global.symPhase == Custom String(
  • "theColorIsSelected") || Global.symPhase == Custom String("theColorIsSelectedEnd") || Global.symPhase == Custom String(
  • "someoneReachedTheSelectedColor"))), Custom String("THE COLOR IS YELLOW"), Null, Null, Top, 3, Yellow, Yellow, Yellow,
  • Visible To and String, Default Visibility);
  • Global.symSelectedColorHud = Last Text ID;
  • End;
  • Global.symPhase = Custom String("theColorIsSelectedEnd");
  • disabled Small Message(All Players(All Teams), Custom String("end of theColorIsSelected"));
  • }
  • }
  • rule("SYM someoneReachedTheSelectedColor TRIGGER")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Symmetra);
  • Global.symPhase == Custom String("theColorIsSelectedEnd");
  • disabled Count Of(Global.symPlayersInTheSelectedColor) >= 1;
  • Is True For Any(Global.playersStartOfTheRound, Current Array Element.symIn) == True;
  • }
  • actions
  • {
  • Global.symPhase = Custom String("someoneReachedTheSelectedColor");
  • }
  • }
  • rule("SYM someoneReachedTheSelectedColor PHASE")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Symmetra);
  • Global.symPhase == Custom String("someoneReachedTheSelectedColor");
  • }
  • actions
  • {
  • Chase Global Variable At Rate(symTimeToReachTheColor, 0, 1, None);
  • If(Global.symColorSelected == 1);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Time to reach the color: {0}", Global.symTimeToReachTheColor),
  • Top, 4, Blue, Blue, Blue, Visible To and String, Default Visibility);
  • Global.symTimeToReachTheColorHud = Last Text ID;
  • Else If(Global.symColorSelected == 2);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Time to reach the color: {0}", Global.symTimeToReachTheColor),
  • Top, 4, Green, Green, Green, Visible To and String, Default Visibility);
  • Global.symTimeToReachTheColorHud = Last Text ID;
  • Else If(Global.symColorSelected == 3);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Time to reach the color: {0}", Global.symTimeToReachTheColor),
  • Top, 4, Orange, Orange, Orange, Visible To and String, Default Visibility);
  • Global.symTimeToReachTheColorHud = Last Text ID;
  • Else If(Global.symColorSelected == 4);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Time to reach the color: {0}", Global.symTimeToReachTheColor),
  • Top, 4, Purple, Purple, Purple, Visible To and String, Default Visibility);
  • Global.symTimeToReachTheColorHud = Last Text ID;
  • Else If(Global.symColorSelected == 5);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Time to reach the color: {0}", Global.symTimeToReachTheColor),
  • Top, 4, Red, Red, Red, Visible To and String, Default Visibility);
  • Global.symTimeToReachTheColorHud = Last Text ID;
  • Else If(Global.symColorSelected == 6);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Time to reach the color: {0}", Global.symTimeToReachTheColor),
  • Top, 4, Turquoise, Turquoise, Turquoise, Visible To and String, Default Visibility);
  • Global.symTimeToReachTheColorHud = Last Text ID;
  • Else If(Global.symColorSelected == 7);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Time to reach the color: {0}", Global.symTimeToReachTheColor),
  • Top, 4, White, White, White, Visible To and String, Default Visibility);
  • Global.symTimeToReachTheColorHud = Last Text ID;
  • Else If(Global.symColorSelected == 8);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("Time to reach the color: {0}", Global.symTimeToReachTheColor),
  • Top, 4, Yellow, Yellow, Yellow, Visible To and String, Default Visibility);
  • Global.symTimeToReachTheColorHud = Last Text ID;
  • End;
  • }
  • }
  • rule("SYM innerRoundTimerIsOver TRIGGER")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Symmetra);
  • Global.symTimeToReachTheColor == 0;
  • Global.symPhase == Custom String("someoneReachedTheSelectedColor");
  • }
  • actions
  • {
  • Global.symPhase = Custom String("innerTimeRoundIsOver");
  • }
  • }
  • rule("SYM innerRoundTimerIsOver PHASE")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Symmetra);
  • Global.symPhase == Custom String("innerTimeRoundIsOver");
  • }
  • actions
  • {
  • Stop Chasing Global Variable(symTimeToReachTheColor);
  • Destroy HUD Text(Global.symSelectedColorHud);
  • disabled Small Message(All Players(All Teams), Custom String("destroyed symSelectedColorHud"));
  • Destroy HUD Text(Global.symTimeToReachTheColorHud);
  • Global.symInnerRound += 1;
  • Teleport(All Players(All Teams), Vector(0, 0, 0));
  • Global.symPhase = Custom String("decidingOnAColor");
  • Global.symColorSelected = 0;
  • Global.symTimeToReachTheColor = Global.symInnerRound == 1 ? 3 : (Global.symInnerRound == 2 ? 2 : 1);
  • Call Subroutine(symScoring);
  • Call Subroutine(symTheColorIsSelectedTrigger);
  • }
  • }
  • rule("SYM scoring")
  • {
  • event
  • {
  • Subroutine;
  • symScoring;
  • }
  • actions
  • {
  • disabled Global.symVictims = Remove From Array(Filtered Array(Global.playersStartOfTheRound, Is Alive(Current Array Element)),
  • Global.symPlayersInTheSelectedColor);
  • Global.symVictims = Remove From Array(All Living Players(All Teams), Global.symPlayersInTheSelectedColor);
  • Press Button(Global.symVictims, Ability 2);
  • Wait(0.032, Ignore Condition);
  • If(Count Of(Global.symVictims) > 0);
  • Kill(Global.symVictims, First Of(Global.symPlayersInTheSelectedColor));
  • Play Effect(All Players(All Teams), Good Pickup Effect, White, First Of(Global.symPlayersInTheSelectedColor), 1);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, White, First Of(Global.symPlayersInTheSelectedColor), 100);
  • Modify Player Score(First Of(Global.symPlayersInTheSelectedColor), Count Of(Global.symVictims));
  • Small Message(First Of(Global.symPlayersInTheSelectedColor), Custom String("+{0} with {1} {2}", Custom String("{0} {1}", Count Of(
  • Global.symVictims), Count Of(Global.symVictims) > 1 ? Custom String("points") : Custom String("point")), Hero Icon String(Hero(
  • Symmetra)), Hero(Symmetra)));
  • Create HUD Text(All Players(All Teams), Hero Icon String(Hero(Symmetra)), First Of(Global.symPlayersInTheSelectedColor),
  • Custom String("+{1}", Null, Custom String("{0} {1}", Count Of(Global.symVictims), Count Of(Global.symVictims)
  • > 1 ? Custom String("points") : Custom String("point"))), Right, -1 + Global.pointfeedHudId, Orange, White, Orange, Visible To,
  • Default Visibility);
  • Modify Global Variable(pointfeedHud, Append To Array, Last Text ID);
  • Global.pointfeedHudTimes[Count Of(Global.pointfeedHud) - 1] = 3.744;
  • Global.pointfeedHudId -= 0.010;
  • End;
  • }
  • }
  • rule("SYM in")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Symmetra;
  • }
  • conditions
  • {
  • Distance Between(Position Of(Event Player), Global.symColorsPositions[Global.symColorSelected]) <= 5;
  • Distance Between(Position Of(Event Player), Vector(0, 0, 0)) > 5;
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Symmetra);
  • Array Contains(Global.playersStartOfTheRound, Event Player) == True;
  • Event Player.symIn == False;
  • Global.symTimeToReachTheColor > 0;
  • (Global.symPhase == Custom String("theColorIsSelectedEnd") || Global.symPhase == Custom String("someoneReachedTheSelectedColor"))
  • == True;
  • }
  • actions
  • {
  • Teleport(Event Player, Global.symColorsPositions[Global.symColorSelected]);
  • Play Effect(All Players(All Teams), Good Pickup Effect, White, Event Player, 1);
  • If(Global.symColorSelected == 1);
  • Play Effect(Event Player, Buff Explosion Sound, Blue, Event Player, 100);
  • Else If(Global.symColorSelected == 2);
  • Play Effect(Event Player, Buff Explosion Sound, Green, Event Player, 100);
  • Else If(Global.symColorSelected == 3);
  • Play Effect(Event Player, Buff Explosion Sound, Orange, Event Player, 100);
  • Else If(Global.symColorSelected == 4);
  • Play Effect(Event Player, Buff Explosion Sound, Purple, Event Player, 100);
  • Else If(Global.symColorSelected == 5);
  • Play Effect(Event Player, Buff Explosion Sound, Red, Event Player, 100);
  • Else If(Global.symColorSelected == 6);
  • Play Effect(Event Player, Buff Explosion Sound, Turquoise, Event Player, 100);
  • Else If(Global.symColorSelected == 7);
  • Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 100);
  • Else If(Global.symColorSelected == 8);
  • Play Effect(Event Player, Buff Explosion Sound, Yellow, Event Player, 100);
  • End;
  • Event Player.symIn = True;
  • Modify Global Variable(symPlayersInTheSelectedColor, Append To Array, Event Player);
  • If(Count Of(Global.symPlayersInTheSelectedColor) == 1);
  • Event Player.symOrdinalString = Custom String("st {0}", Ability Icon String(Hero(Brigitte), Button(Ultimate)));
  • Else If(Count Of(Global.symPlayersInTheSelectedColor) == 2);
  • Event Player.symOrdinalString = Custom String("nd");
  • Else If(Count Of(Global.symPlayersInTheSelectedColor) == 3);
  • Event Player.symOrdinalString = Custom String("rd");
  • Else;
  • Event Player.symOrdinalString = Custom String("th");
  • End;
  • Set Status(Event Player, Null, Burning, 9999);
  • Disallow Button(Event Player, Interact);
  • Wait(0.466, Ignore Condition);
  • Press Button(Event Player, Ability 2);
  • Wait(0.032, Ignore Condition);
  • Disallow Button(Event Player, Ability 2);
  • }
  • }
  • rule("SYM out")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Distance Between(Position Of(Event Player), Global.symColorsPositions[Global.symColorSelected]) > 5;
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Symmetra);
  • Global.roundTimer <= 58;
  • disabled Event Player.symIn == True;
  • }
  • actions
  • {
  • Clear Status(Event Player, Burning);
  • Allow Button(Event Player, Interact);
  • Allow Button(Event Player, Ability 2);
  • Event Player.symIn = False;
  • Wait(0.064, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("SYM position corrector")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Symmetra);
  • Global.symPhase == Custom String("decidingOnAColor");
  • Distance Between(Event Player, Vector(0, 0, 0)) > 1;
  • }
  • actions
  • {
  • Teleport(Event Player, Vector(0, 0, 0));
  • Wait(0.032, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • disabled rule("SYM player debug")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Create HUD Text(All Players(All Teams), Custom String("{0}: {1}", Event Player, Event Player.symIn), Null, Null, Left, 0, White,
  • White, White, Visible To and String, Default Visibility);
  • "Left HUD showing which position you finish the run to the color + brig flag icon if you finished 1st"
  • Create HUD Text(Event Player, Custom String("{0}{1}", Index Of Array Value(Global.symPlayersInTheSelectedColor, Event Player) + 1,
  • Event Player.symOrdinalString), Null, Null, Left, 2, White, White, White, Visible To and String, Default Visibility);
  • }
  • }
  • disabled rule("SYM global debug")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Create HUD Text(All Players(All Teams), Custom String("Phase: {0}", Global.symPhase), Null, Null, Left, 0, White, White, White,
  • Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Custom String("Color Selected: {0}, {1}", Array(Custom String("NULL"), Custom String(
  • "BLUE"), Custom String("GREEN"), Custom String("ORANGE"), Custom String("PURPLE"), Custom String("RED"), Custom String(
  • "TURQUOISE"), Custom String("WHITE"), Custom String("YELLOW"))[Global.symColorSelected], Global.symColorSelected), Null, Null,
  • Left, 0, White, White, White, Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Custom String("innerTime: {0}", Global.symTimeToReachTheColor), Null, Null, Left, 0, White,
  • White, White, Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Custom String("innerRound: {0}", Global.symInnerRound), Null, Null, Left, 0, White, White,
  • White, Visible To and String, Default Visibility);
  • }
  • }
  • rule("SYM phase corrector")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Symmetra);
  • Global.symPhase != Null;
  • }
  • actions
  • {
  • Global.symPhase = Null;
  • }
  • }
  • rule("SYM end of the round {EACH PLAYER}")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Symmetra);
  • Global.heroOfLastRound == Hero(Symmetra);
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Clear Status(Event Player, Burning);
  • Clear Status(Event Player, Rooted);
  • Enable Movement Collision With Players(Event Player);
  • Allow Button(Event Player, Interact);
  • Allow Button(Event Player, Ability 2);
  • Set Invisible(All Players(All Teams), None);
  • Destroy In-World Text(Event Player.symFirstPlayerInColorText);
  • Destroy HUD Text(Event Player.symOrdinalPosHud);
  • }
  • }
  • rule("SYM end of the round {GLOBAL}")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Symmetra);
  • Global.heroOfLastRound == Hero(Symmetra);
  • }
  • actions
  • {
  • Destroy HUD Text(Global.symSelectedColorHud);
  • Destroy HUD Text(Global.symTimeToReachTheColorHud);
  • Wait(0.016, Ignore Condition);
  • For Global Variable(destructorIt, 0, Count Of(Global.symColoredSpheresEffectsAndText), 1);
  • Destroy Effect(Global.symColoredSpheresEffectsAndText[Global.destructorIt]);
  • Destroy In-World Text(Global.symColoredSpheresEffectsAndText[Global.destructorIt]);
  • Destroy HUD Text(Global.symColoredSpheresEffectsAndText[Global.destructorIt]);
  • End;
  • Global.symColoredSpheresEffectsAndText = Empty Array;
  • Global.symPlayersInTheSelectedColor = Empty Array;
  • Global.symVictims = Empty Array;
  • Global.symColorsPositions = Empty Array;
  • Global.symPhase = Null;
  • Global.symInnerRound = 0;
  • Global.symColorDeciding = 0;
  • Global.symColorSelected = 0;
  • Global.symTimeToReachTheColor = 5;
  • Stop Chasing Global Variable(symTimeToReachTheColor);
  • }
  • }
  • rule("TRACER create crown")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Tracer);
  • disabled Global.tracerQueen == Null;
  • }
  • actions
  • {
  • disabled Destroy Effect(Global.crownEffect);
  • Global.crownPos = Vector(0, 1.500, 0);
  • Create Effect(All Players(All Teams), Good Aura, Orange, Global.crownPos, 1, Visible To Position and Radius);
  • Global.crownEffect = Last Created Entity;
  • Create HUD Text(Global.tracerQueen, Custom String("QUEEN"), Null, Null, Left, 2, Orange, White, White, Visible To and String,
  • Default Visibility);
  • Global.tracerQueenHud = Last Text ID;
  • Create Icon(All Players(All Teams), Global.crownPos, Arrow: Down, Visible To and Position, Orange, True);
  • Global.tracerQueenPositionIcon = Last Created Entity;
  • }
  • }
  • rule("TRACER stun & steal")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Tracer;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Tracer);
  • }
  • actions
  • {
  • If(Global.tracerQueen == Attacker);
  • Set Status(Victim, Event Player, Stunned, 1);
  • End;
  • If(Global.tracerQueen == Victim);
  • Set Status(Victim, Event Player, Stunned, 0.750);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Orange, Event Player, 50);
  • Global.tracerQueen = Attacker;
  • Global.crownPos = Attacker;
  • End;
  • }
  • }
  • rule("TRACER init queen")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Tracer);
  • }
  • actions
  • {
  • Event Player.queenPointsHud = Null;
  • Event Player.queenPoints = 0;
  • Wait(0.256, Ignore Condition);
  • If(Event Player.queenPointsHud == Null);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("{0}: {1}/10 {2}", Event Player, Event Player.queenPoints,
  • Event Player == Global.tracerQueen ? Custom String("queen") : Custom String("")), Left, (Event Player.queenPoints + 10) * -1,
  • White, White, Orange, Visible To Sort Order and String, Default Visibility);
  • Event Player.queenPointsHud = Last Text ID;
  • End;
  • Set Gravity(Event Player, 100);
  • }
  • }
  • rule("TRACER first queen")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Distance Between(Event Player, Position Of(Global.crownEffect)) <= 1.500;
  • Global.heroOfTheRound == Hero(Tracer);
  • Global.tracerQueen == Null;
  • Global.roundTimer <= 58.500;
  • }
  • actions
  • {
  • Wait(0.064, Abort When False);
  • Play Effect(Event Player, Buff Impact Sound, Orange, Event Player, 50);
  • Global.tracerQueen = Event Player;
  • Global.crownPos = Event Player;
  • }
  • }
  • rule("TRACER is queen = points, gravity")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Tracer;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Tracer);
  • Global.tracerQueen == Event Player;
  • }
  • actions
  • {
  • Set Gravity(Event Player, 500);
  • Wait(1, Abort When False);
  • Event Player.queenPoints += 1;
  • Play Effect(All Players(All Teams), Good Pickup Effect, Orange, Event Player, 1);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Orange, Event Player, 50);
  • Loop If Condition Is True;
  • }
  • }
  • rule("TRACER is not queen = points, gravity")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Tracer;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Tracer);
  • Global.tracerQueen != Event Player;
  • }
  • actions
  • {
  • Set Gravity(Event Player, 100);
  • }
  • }
  • rule("TRACER queen winner")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Tracer;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Tracer);
  • Global.tracerQueen == Event Player;
  • Event Player.queenPoints >= 10;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Good Pickup Effect, White, Event Player, 1);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, White, Event Player, 100);
  • Modify Player Score(Event Player, Count Of(Global.playersStartOfTheRound) - 1);
  • Small Message(Event Player, Custom String("+{0} with {1} {2}", Custom String("{0} {1}", Count Of(Global.playersStartOfTheRound)
  • - 1, Count Of(Global.playersStartOfTheRound) - 1 > 1 ? Custom String("points") : Custom String("point")), Hero Icon String(
  • Hero Of(Event Player)), Hero Of(Event Player)));
  • Create HUD Text(All Players(All Teams), Hero Icon String(Hero Of(Event Player)), Event Player, Custom String("+{1}", Null,
  • Custom String("{0} {1}", Count Of(Global.playersStartOfTheRound) - 1, Count Of(Global.playersStartOfTheRound)
  • - 1 > 1 ? Custom String("points") : Custom String("point"))), Right, -1 + Global.pointfeedHudId, Orange, White, Orange,
  • Visible To, Default Visibility);
  • Modify Global Variable(pointfeedHud, Append To Array, Last Text ID);
  • Global.pointfeedHudTimes[Count Of(Global.pointfeedHud) - 1] = 3.744;
  • Global.pointfeedHudId -= 0.010;
  • Global.roundTimer = 0.032;
  • }
  • }
  • rule("TRACER dead queen")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Tracer);
  • Global.tracerQueen == Event Player;
  • }
  • actions
  • {
  • Global.tracerQueen = Null;
  • Global.crownPos = Vector(0, 1.500, 0);
  • }
  • }
  • rule("TRACER leaver queen")
  • {
  • event
  • {
  • Player Left Match;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound == Hero(Tracer);
  • Global.tracerQueen == Event Player;
  • }
  • actions
  • {
  • Global.tracerQueen = Null;
  • Global.crownPos = Vector(0, 1.500, 0);
  • }
  • }
  • rule("TRACER destroy crown")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Tracer);
  • }
  • actions
  • {
  • Destroy Effect(Global.crownEffect[0]);
  • Global.tracerQueen = Null;
  • }
  • }
  • rule("TRACER secondary buttons")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Tracer);
  • Is Button Held(Event Player, Primary Fire) == True;
  • }
  • actions
  • {
  • Press Button(Event Player, Melee);
  • }
  • }
  • rule("TRACER end of the round {EACH PLAYER}")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Tracer);
  • Global.heroOfLastRound == Hero(Tracer);
  • }
  • actions
  • {
  • Event Player.queenPoints = 0;
  • Set Gravity(Event Player, 100);
  • Wait(0.256, Ignore Condition);
  • Destroy HUD Text(Event Player.queenPointsHud);
  • }
  • }
  • rule("TRACER end of the round {GLOBAL}")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.heroOfTheRound != Hero(Tracer);
  • Global.heroOfLastRound == Hero(Tracer);
  • }
  • actions
  • {
  • Global.tracerQueen = Null;
  • Wait(0.256, Ignore Condition);
  • Destroy Icon(Global.tracerQueenPositionIcon);
  • Destroy HUD Text(Global.tracerQueenHud);
  • }
  • }
  • rule("WINSTON rage")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Winston;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Winston);
  • Is Using Ultimate(Event Player) == False;
  • }
  • actions
  • {
  • Press Button(Event Player, Ultimate);
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("WINSTON jump cooldown")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Winston;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Winston);
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Wait(0.032, Ignore Condition);
  • Set Ability Cooldown(Event Player, Button(Ability 1), 12);
  • }
  • }
  • rule("ZEN mega-kick")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Zenyatta;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Zenyatta);
  • }
  • actions
  • {
  • Apply Impulse(Victim, Facing Direction Of(Event Player) + Vector(0, 0.100, 0), 75, To World, Cancel Contrary Motion);
  • }
  • }
  • rule("ZEN secondary buttons")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Alive(Event Player) == True;
  • Global.heroOfTheRound == Hero(Zenyatta);
  • (Is Button Held(Event Player, Primary Fire) || Is Button Held(Event Player, Secondary Fire)) == True;
  • }
  • actions
  • {
  • Press Button(Event Player, Melee);
  • }
  • }
  • rule("----- THIRD CAMERA PERSON ----- Made by Mitsiee. More at https://workshop.codes/third-person")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Enable/disable third camera person")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Communicating(Event Player, Fall Back) == True;
  • }
  • actions
  • {
  • If(Event Player.isOnThirdCamera == False);
  • Event Player.isOnThirdCamera = True;
  • Small Message(Event Player, Custom String(
  • "----- THIRD CAMERA PERSON ----- Made by Mitsiee. More at https://workshop.codes/third-person"));
  • Else;
  • Event Player.isOnThirdCamera = False;
  • Stop Camera(Event Player);
  • End;
  • }
  • }
  • rule("Initialise")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.isOnThirdCamera == True;
  • }
  • actions
  • {
  • Event Player.thirdCameraDirection = 1;
  • Event Player.thirdCameraZoom = -2.500;
  • }
  • }
  • rule("Set Third Person")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • ((Hero Of(Event Player) == Hero(Widowmaker) || Hero Of(Event Player) == Hero(Ashe) || Hero Of(Event Player) == Hero(Ana))
  • && Is Button Held(Event Player, Secondary Fire)) != True;
  • Event Player.isOnThirdCamera == True;
  • }
  • actions
  • {
  • Start Camera(Event Player, Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(Vector(
  • Event Player.thirdCameraDirection * Min(Event Player.thirdCameraZoom / 2.500, -0.750), 0, 0), Event Player, Rotation)
  • + Facing Direction Of(Event Player) * Event Player.thirdCameraZoom, All Players(All Teams), Event Player, False),
  • Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player) * 200,
  • All Players(All Teams), Event Player, False), 60);
  • disabled Start Camera(Event Player, Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(Vector(
  • Event Player.thirdCameraDirection, 0, 0), Event Player, Rotation) + Facing Direction Of(Event Player)
  • * Event Player.thirdCameraZoom, All Players(All Teams), Event Player, False), Ray Cast Hit Position(Eye Position(Event Player),
  • Eye Position(Event Player) + Facing Direction Of(Event Player) * 200, All Players(All Teams), Event Player, False), 60);
  • }
  • }
  • rule("Unset Third Person for specific conditions")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • ((Hero Of(Event Player) == Hero(Widowmaker) || Hero Of(Event Player) == Hero(Ashe) || Hero Of(Event Player) == Hero(Ana))
  • && Is Button Held(Event Player, Secondary Fire)) == True;
  • Event Player.isOnThirdCamera == True;
  • }
  • actions
  • {
  • Stop Camera(Event Player);
  • }
  • }
  • rule("Pressing Interact")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Interact) == True;
  • Event Player.isOnThirdCamera == True;
  • }
  • actions
  • {
  • If(Event Player.thirdCameraDirection == -1);
  • Event Player.thirdCameraDirection = 1;
  • Else;
  • Event Player.thirdCameraDirection = -1;
  • End;
  • }
  • }
  • rule("----- TEST -----")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • disabled rule("Lobby with Dummies (TEST)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is In Setup == True;
  • (Custom String("Jokaes") == Custom String("{0}", Host Player)) == True;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Ashe), All Teams, -1, Vector(0, 0, 0), Vector(0, 0, 0));
  • disabled Loop If(Count Of(All Players(All Teams)) < 2);
  • disabled Loop If(Count Of(All Players(All Teams)) < 3);
  • Loop If(Count Of(All Players(All Teams)) < 5);
  • disabled Loop If(Count Of(All Players(All Teams)) < 6);
  • disabled Loop If(Count Of(All Players(All Teams)) < 12);
  • }
  • }
  • disabled rule("Dummys Summon (TEST)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Communicating(Event Player, Hello) == True;
  • (Custom String("Jokaes") == Custom String("{0}", Host Player)) == True;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Ashe), All Teams, -1, Position Of(Event Player), Vector(0, 0, 0));
  • }
  • }
  • disabled rule("Dummy Aim Bot (TEST)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • (Custom String("Jokaes") == Custom String("{0}", Host Player)) == True;
  • }
  • actions
  • {
  • Start Facing(Event Player, Direction Towards(Event Player, Sorted Array(Filtered Array(All Players(All Teams), Is Alive(
  • Current Array Element)), Distance Between(Event Player, Current Array Element))[1]), 10000, To World, Direction and Turn Rate);
  • Start Holding Button(Event Player, Ability 2);
  • Start Holding Button(Event Player, Ability 1);
  • Start Holding Button(Event Player, Secondary Fire);
  • Start Holding Button(Event Player, Primary Fire);
  • Start Holding Button(Event Player, Interact);
  • Wait(Random Real(0.300, 1), Ignore Condition);
  • Stop Holding Button(Event Player, Interact);
  • Stop Holding Button(Event Player, Primary Fire);
  • Stop Holding Button(Event Player, Secondary Fire);
  • Stop Holding Button(Event Player, Ability 1);
  • Stop Holding Button(Event Player, Ability 2);
  • Loop If Condition Is True;
  • }
  • }
  • disabled rule("Dummy Ult (TEST)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Ultimate Charge Percent(Event Player) == 100;
  • (Custom String("Jokaes") == Custom String("{0}", Host Player)) == True;
  • }
  • actions
  • {
  • Press Button(Event Player, Ultimate);
  • }
  • }
  • disabled rule("Dummy Meele loop (TEST)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • (Custom String("Jokaes") == Custom String("{0}", Host Player)) == True;
  • }
  • actions
  • {
  • Start Facing(Event Player, Direction Towards(Event Player, Closest Player To(Event Player, Opposite Team Of(Team Of(
  • Event Player)))), 10000, To World, Direction and Turn Rate);
  • Press Button(Event Player, Melee);
  • Wait(Random Real(0.250, 0.350), Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • disabled rule("Dummy Moving (TEST)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • (Custom String("Jokaes") == Custom String("{0}", Host Player)) == True;
  • }
  • actions
  • {
  • Start Throttle In Direction(Event Player, Direction Towards(Event Player, Sorted Array(Filtered Array(All Players(All Teams),
  • Is Alive(Current Array Element)), Distance Between(Event Player, Current Array Element))[1]), 1, To World,
  • Replace existing throttle, Direction and Magnitude);
  • }
  • }
  • disabled rule("Skip until (TEST)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • disabled Is Button Held(Event Player, Interact) == True;
  • Global.heroOfTheRound != Hero(Mei);
  • Global.roundTimer <= 58;
  • (Custom String("Jokaes") == Custom String("{0}", Host Player)) == True;
  • }
  • actions
  • {
  • Global.roundTimer = 1;
  • disabled Press Button(Event Player, Interact);
  • }
  • }
  • disabled rule("Skip round (TEST)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Interact) == True;
  • Is Button Held(Event Player, Crouch) == True;
  • (Custom String("Jokaes") == Custom String("{0}", Host Player)) == True;
  • (Custom String("Jokaes") == Custom String("{0}", Event Player)) == True;
  • }
  • actions
  • {
  • disabled Kill(All Players(All Teams), Null);
  • Global.roundTimer = 1;
  • disabled Set Status(Event Player, Null, Stunned, 1);
  • }
  • }
  • disabled rule("Force dummy to be hero of the round (TEST)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Hero Of(Event Player) == Hero(Ashe);
  • (Custom String("Jokaes") == Custom String("{0}", Host Player)) == True;
  • }
  • actions
  • {
  • Start Forcing Player To Be Hero(Event Player, Global.heroOfTheRound);
  • }
  • }
  • disabled rule("Destroy the dummies (TEST)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Custom String("Jokaes") == Custom String("{0}", Host Player)) == True;
  • (Custom String("Jokaes") == Custom String("{0}", Event Player)) == True;
  • Is Button Held(Event Player, Ultimate) == True;
  • Is Button Held(Event Player, Reload) == True;
  • Is Button Held(Event Player, Interact) == True;
  • }
  • actions
  • {
  • Destroy All Dummy Bots;
  • }
  • }
  • disabled rule("Ray Cast Detector (TEST)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Primary Fire) == True;
  • }
  • actions
  • {
  • Create HUD Text(All Players(All Teams), Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
  • + Facing Direction Of(Event Player) * 200, Null, All Players(All Teams), False), Null, Null, Left, 0, White, White, White,
  • Visible To, Default Visibility);
  • Create Effect(Event Player, Orb, Yellow, Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
  • + Facing Direction Of(Event Player) * 200, Null, All Players(All Teams), False), 1, None);
  • Create Beam Effect(All Players(All Teams), Good Beam, Eye Position(Event Player), Ray Cast Hit Position(Eye Position(Event Player),
  • Eye Position(Event Player) + Facing Direction Of(Event Player) * 200, All Players(All Teams), All Players(All Teams), False),
  • Red, None);
  • }
  • }
  • disabled rule("Destroy all the HUD (TEST)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Interact) == True;
  • Is Button Held(Event Player, Ultimate) == True;
  • Is Button Held(Event Player, Crouch) == True;
  • }
  • actions
  • {
  • Destroy All HUD Text;
  • Disable Game Mode HUD(Event Player);
  • Disable Hero HUD(Event Player);
  • }
  • }
  • disabled rule("Debug HUDs (TEST)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Custom String("Jokaes") == Custom String("{0}", Host Player)) == True;
  • }
  • actions
  • {
  • Create HUD Text(Event Player, Custom String("{0} m/s", Horizontal Speed Of(Event Player)), Null, Null, Left, 0, White, White,
  • White, Visible To and String, Default Visibility);
  • disabled Create HUD Text(Event Player, Custom String("{0}", Position Of(Event Player)), Null, Null, Left, 0, White, White, White,
  • Visible To and String, Default Visibility);
  • disabled Create HUD Text(Event Player, Custom String("{0}", Y Component Of(Position Of(Event Player))), Null, Null, Left, 0, White, White,
  • White, Visible To and String, Default Visibility);
  • disabled Create HUD Text(Event Player, Custom String("{0}", Distance Between(Event Player, Vector(0, 10, 0))), Null, Null, Left, 0, White,
  • White, White, Visible To and String, Default Visibility);
  • disabled Create HUD Text(Event Player, Custom String("{0}", Count Of(Global.pointfeedHud)), Null, Null, Left, 0, White, White, White,
  • Visible To and String, Default Visibility);
  • disabled Create HUD Text(Event Player, Custom String("{0}", Count Of(Global.pointfeedHudTimes)), Null, Null, Left, 0, White, White, White,
  • Visible To and String, Default Visibility);
  • disabled Create HUD Text(Event Player, Custom String("{0}", Throttle Of(Event Player)), Null, Null, Left, 0, White, White, White,
  • Visible To and String, Default Visibility);
  • }
  • }
  • rule("Created by Jokaes#2263")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Code: W468T")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • }
Join the Workshop.codes Discord