Return to post
settings
{
main
{
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"
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"
}
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: 38%
Chain Hook Cooldown Time: 25%
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 Generation - Combat Whole Hog: 0%
Ultimate Generation - Passive Whole Hog: 500%
Ultimate Generation Whole Hog: 180%
Ultimate Ability Whole Hog: Off
}
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 v3.0.0-23"), Left, -998, White, White, Orange, Visible To and String,
"Island Party - Heroes Minigames v2.0.1-21"), 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}/23 classic and new games as minigames",
Create HUD Text(All Players(All Teams), Null, Null, Custom String("Play rounds of {0} 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.io/IslandParty and {0}",
Create HUD Text(All Players(All Teams), Null, Null, Custom String("Join discord.gg/4N4BAE6 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, 2, 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);
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 1950N"));
Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on 9G11W"));
"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 ZWE5E / 2A2YA"));
Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on 9G11W / 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 9jane"));
Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on E515J"));
"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 & AB7DJ"));
Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on YWKSZ & D7VC0S"));
"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 DK0DP"));
Modify Global Variable(minigameStringCodes, Append To Array, Custom String("Play it more on WQHER"));
"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 v3.0.0-23"));
Small Message(Event Player, Custom String("Island Party - Heroes Minigames v2.0.1-21"));
Wait(3.500, Ignore Condition);
Small Message(Event Player, Custom String("Play rounds of {0}/23 minigames", Count Of(Global.heroList)));
Small Message(Event Player, Custom String("Play rounds of {0} 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) >= 120);
If(Score Of(Event Player) >= 200);
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) >= 120;
Score Of(Event Player) >= 200;
}
actions
{
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,
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.150) == True;
Is True For Any(Global.commonRingsPos, Distance Between(Event Player, Current Array Element) <= 2) == 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.150) == True;
Is True For Any(Global.rareRingsPos, Distance Between(Event Player, Current Array Element) <= 2) == 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.150) == True;
Is True For Any(Global.epicRingsPos, Distance Between(Event Player, Current Array Element) <= 2) == 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.150) == True;
Is True For Any(Global.legendaryRingsPos, Distance Between(Event Player, Current Array Element) <= 2) == 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.150) == True;
Is True For Any(Global.echoTeleportPos, Distance Between(Event Player, Current Array Element) <= 2) == 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))), Ring Thick, Visible To and Position, Green, True);
Current Array Element))), Circle, 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 pass 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.040);
Set Player Health(Event Player, 1);
Set Max Health(Event Player, 0.001);
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.040);
Set Max Health(Event Player, 0.001);
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 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);
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);
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
{
If(Event Player.meiAmmo < 3);
Victim.meiAmmo += 1;
Else;
Small Message(Event Player, Custom String("MAX AMMO REACHED"));
End;
disabled Victim.meiIsCatching = True;
Victim.meiAmmo += 1;
}
}
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 In-World Text(Event Player.meiHasAmmoIcon);
Destroy Icon(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
{
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))
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))
<= Global.roadhogHoleRadius);
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);
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);
Event Player.roadhogYanked = True;
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);
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);
Event Player.roadhogYanked = False;
disabled Event Player.roadhogFalling = False;
disabled Wait(1.500, Ignore Condition);
disabled Stop Forcing Throttle(Event Player);
Event Player.roadhogFalling = False;
Wait(1.500, Ignore Condition);
Stop Forcing Throttle(Event Player);
}
}
rule("ROADHOG in the hole")
rule("ROADHOG Hole gravity")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Distance Between(Position Of(Event Player), Vector(0, 0, 0)) <= Global.roadhogHoleRadius;
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;
Event Player.roadhogYanked == False;
Is Game In Progress == True;
Global.heroOfTheRound == Hero(Roadhog);
Global.roundTimer <= 58;
}
actions
{
Disable Movement Collision With Environment(Event Player, True);
disabled Set Status(Event Player, Null, Frozen, Global.roundTimer);
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;
}
}
rule("ROADHOG out of the hole")
rule("ROADHOG water")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Distance Between(Position Of(Event Player), Vector(0, 0, 0)) > Global.roadhogHoleRadius;
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;
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
{
Enable Movement Collision With Environment(Event Player);
disabled Clear Status(Event Player, Frozen);
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;
}
}
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 secondary buttons")
rule("ROADHOG fix position")
{
event
{
Ongoing - Each Player;
All;
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;
Global.heroOfTheRound == Hero(Roadhog);
(Is Button Held(Event Player, Primary Fire) || Is Button Held(Event Player, Secondary Fire)) == True;
Throttle Of(Event Player) == Vector(0, 0, 0);
}
actions
{
Press Button(Event Player, Ability 1);
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);
}
}
rule("ROADHOG cd")
rule("ROADHOG secondary buttons")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Game In Progress == True;
Is Alive(Event Player) == True;
Global.heroOfTheRound == Hero(Roadhog);
Is Using Ability 1(Event Player) == True;
(Is Button Held(Event Player, Primary Fire) || Is Button Held(Event Player, Secondary Fire)) == True;
}
actions
{
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);
Press Button(Event Player, Ability 1);
}
}
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
{
disabled Set Gravity(Event Player, 100);
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;
}
}
}