Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ ▩▩▩▩ ScrimTime v1.01 ▩▩▩▩ ▩▩ workshop.codes/scrimtime ▩▩ ▩▩ Configure in Workshop Settings ▩▩ ▩▩▩ Ready Up: Interact + Reload ▩▩ ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩"
  • Description: "=====ScrimTime===== > Version: 0.9 > Full information at: workshop.codes/scrimtime > Check Workshop Settings for customisation options > Interact + Reload to ready up"
  • }
  • lobby
  • {
  • Map Rotation: After A Game
  • Map Rotation: Paused
  • Max Spectators: 12
  • Return To Lobby: After A Game
  • }
  • modes
  • {
  • Assault
  • Control
  • Escort
  • Hybrid
  • General
  • {
  • Competitive Rules: On
  • Game Mode Start: Immediately
  • Kill Cam: Off
  • Limit Roles: 2 Of Each Role Per Team
  • Skins: Off
  • }
  • }
  • }
  • variables
  • {
  • global:
  • 0: Scrim_DebugMode
  • 1: Scrim_EnableReadyUpSystem
  • 2: Scrim_CaptainOnlyMode
  • 3: Scrim_MapCompleteMode
  • 4: Scrim_ForceMatchEndAftTwoRounds
  • 5: Scrim_RemoveAssemblingHeroes
  • 6: Scrim_SetupCountdownTime
  • 7: Scrim_RequireReadyEveryRound
  • 8: Scrim_AllowDefendersTeleport
  • 9: Scrim_EnableSpecScoreboard
  • 10: Scrim_AllowHostHideScoreboard
  • 11: Scrim_HideScoreboardID
  • 12: Scrim_DisplayScoreboardLegend
  • 13: Scrim_ScoreboardGroupMode
  • 14: Scrim_AllowCaptainTimeAdd
  • 15: Scrim_CaptainAddTimeStep
  • 16: Scrim_CaptainAddTimeMax
  • 17: Scrim_DisplayServerLoad
  • 18: Scrims_KeybindButtonArray
  • 19: Scrims_KeybindCommand
  • 20: Scrims_KeybindReadyToggle
  • 21: Scrims_KeybindDefenderTeleport
  • 22: Scrims_KeybindCaptainAddTime
  • 23: Logs_EnableLogTracker
  • 24: Logs_OutputFormat
  • 25: Logs_AutoMatchEndTime
  • 26: Logs_CurrentObjectiveIndex
  • 27: Logs_CurrentControlScoringTeam
  • 28: Logs_ControlMapArray
  • 29: Logs_ControlStageArray
  • 30: Logs_AbilityNameArray
  • 31: Logs_TrackKills
  • 32: Logs_TrackHeroSwaps
  • 33: Logs_TrackObjectiveCapture
  • 34: Logs_TrackAbilities
  • 35: Logs_TrackUltimates
  • 36: Logs_TrackOffensiveAssists
  • 37: Logs_TrackDefensiveAssists
  • 38: Logs_TrackDamage
  • 39: Logs_TrackHealing
  • 40: Logs_TrackDvaDemechs
  • 41: Logs_TrackEchoDuplicates
  • 42: Logs_TrackRoundStartEnd
  • 43: Logs_TrackMatchStartEnd
  • 44: Logs_EnablePlayerSummary
  • 45: Logs_PlayerSummaryCount
  • 1: Scrim_CaptainOnlyMode
  • 2: Scrim_MapCompleteMode
  • 3: Scrim_ForceMatchEndAftTwoRounds
  • 4: Scrim_RemoveAssemblingHeroes
  • 5: Scrim_SetupCountdownTime
  • 6: Scrim_RequireReadyEveryRound
  • 7: Scrim_AllowDefendersTeleport
  • 8: Logs_DebugMode
  • 26: Scrim_ScoreboardEnabled
  • player:
  • 0: Scrim_PlayerReady
  • 1: Scrim_PlayerReadyIcon
  • 2: Logs_LastHero
  • 3: Logs_OffensiveAssists
  • 4: Logs_DefensiveAssists
  • 5: Logs_HeroesPlayedArray
  • 6: Logs_CurrentHeroIterator
  • 7: Logs_CurrentHeroIterated
  • 0: PlayerReady
  • 1: PlayerReadyIcon
  • 6: Logs_HeroesPlayedArray
  • }
  • rule("Settings: Ready Up Options")
  • rule("Settings: Option Configuration")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.Scrim_EnableReadyUpSystem = Workshop Setting Toggle(Custom String("Ready Up System"), Custom String(
  • "Enable Ready Up System"), True, 0);
  • Global.Scrim_CaptainOnlyMode = Workshop Setting Toggle(Custom String("Ready Up System"), Custom String("Captain-Only Mode"), True,
  • 1);
  • Global.Scrim_RequireReadyEveryRound = Workshop Setting Toggle(Custom String("Ready Up System"), Custom String(
  • "Require ready up for every round"), False, 2);
  • Global.Scrim_SetupCountdownTime = Workshop Setting Integer(Custom String("Ready Up System"), Custom String("Countdown Timer"), 5,
  • 5, 30, 3);
  • }
  • }
  • rule("Settings: Setup Options")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.Scrim_RemoveAssemblingHeroes = Workshop Setting Toggle(Custom String("Setup"), Custom String(
  • Global.Scrim_RemoveAssemblingHeroes = Workshop Setting Toggle(Custom String("Setup Options"), Custom String(
  • "Remove Assembling Heroes Phase"), True, 0);
  • Global.Scrim_AllowCaptainTimeAdd = Workshop Setting Toggle(Custom String("Setup"), Custom String(
  • "Allow Captains to add Setup Time"), True, 1);
  • Global.Scrim_CaptainAddTimeStep = Workshop Setting Integer(Custom String("Setup"), Custom String("Setup Time Added"), 30, 1, 60,
  • 2);
  • Global.Scrim_CaptainAddTimeMax = Workshop Setting Integer(Custom String("Setup"), Custom String("Setup Time Maximum"), 90, 60, 180,
  • 3);
  • Global.Scrim_AllowDefendersTeleport = Workshop Setting Toggle(Custom String("Setup"), Custom String(
  • Global.Scrim_CaptainOnlyMode = Workshop Setting Toggle(Custom String("Setup Options"), Custom String(
  • "Only Require Captains to Ready Up"), True, 1);
  • Global.Scrim_RequireReadyEveryRound = Workshop Setting Toggle(Custom String("Setup Options"), Custom String(
  • "Require ready up for every round"), False, 2);
  • Global.Scrim_SetupCountdownTime = Workshop Setting Integer(Custom String("Setup Options"), Custom String("Setup Countdown Time"),
  • 5, 5, 30, 3);
  • Global.Scrim_AllowDefendersTeleport = Workshop Setting Toggle(Custom String("Setup Options"), Custom String(
  • "Allow Defenders to Teleport Between Objective and Spawn"), True, 4);
  • }
  • }
  • rule("Settings: Match Options")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.Scrim_MapCompleteMode = Workshop Setting Toggle(Custom String("Match"), Custom String("Enable Map Completion Mode"), True,
  • Global.Scrim_MapCompleteMode = Workshop Setting Toggle(Custom String("Match Options"), Custom String("Map Completion Mode"), True,
  • 0);
  • Global.Scrim_ForceMatchEndAftTwoRounds = Workshop Setting Toggle(Custom String("Match"), Custom String(
  • Global.Scrim_ForceMatchEndAftTwoRounds = Workshop Setting Toggle(Custom String("Match Options"), Custom String(
  • "Force Match to End After Two Rounds in Map Completion Mode"), True, 1);
  • }
  • }
  • rule("Settings: Scoreboard Options")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.Scrim_EnableSpecScoreboard = Workshop Setting Toggle(Custom String("Scoreboard"), Custom String(
  • Global.Scrim_ScoreboardEnabled = Workshop Setting Toggle(Custom String("Scoreboard Options"), Custom String(
  • "Enable Spectator Scoreboard"), True, 0);
  • Global.Scrim_ScoreboardGroupMode = Workshop Setting Combo(Custom String("Scoreboard"), Custom String("Scoreboard Style"), 0, Array(
  • Custom String("Group by role, sort by team"), Custom String("Group by team, sort by role"), Custom String(
  • "Group by team, sort by slot")), 1);
  • Global.Scrim_DisplayScoreboardLegend = Workshop Setting Toggle(Custom String("Scoreboard"), Custom String("Display Legend"), True,
  • 2);
  • Global.Scrim_AllowHostHideScoreboard = Workshop Setting Toggle(Custom String("Scoreboard"), Custom String(
  • "Allow Host Spectator to Toggle Scoreboard"), True, 3);
  • }
  • }
  • rule("Settings: Log Options")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.Logs_EnableLogTracker = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Enable Log Generator"),
  • False, 0);
  • Global.Logs_OutputFormat = Workshop Setting Combo(Custom String("Log Generator"), Custom String("Output Format"), 0, Array(
  • Custom String("CSV")), 1);
  • Global.Logs_TrackKills = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Kills & Deaths"), True, 2);
  • Global.Logs_TrackOffensiveAssists = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Offensive Assists"),
  • True, 3);
  • Global.Logs_TrackDefensiveAssists = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Defensive Assists"),
  • True, 4);
  • Global.Logs_TrackHeroSwaps = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Hero Swaps"), True, 5);
  • Global.Logs_TrackUltimates = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Ultimates Charged & Used"),
  • True, 6);
  • Global.Logs_TrackAbilities = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Abilities Used*"), True, 7);
  • Global.Logs_TrackDamage = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Damage*"), True, 8);
  • Global.Logs_TrackHealing = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Healing*"), True, 9);
  • Global.Logs_TrackDvaDemechs = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("D.Va Demechs & Remechs"),
  • True, 10);
  • Global.Logs_TrackEchoDuplicates = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Echo Duplicates"), True,
  • 11);
  • Global.Logs_TrackMatchStartEnd = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Match Start & End"), True,
  • 12);
  • Global.Logs_TrackRoundStartEnd = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Round Start & End"), True,
  • 13);
  • Global.Logs_TrackObjectiveCapture = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Objective Captures"),
  • True, 14);
  • Global.Logs_EnablePlayerSummary = Workshop Setting Toggle(Custom String("Log Generator"), Custom String(
  • "End-of-Match Player Summary"), True, 15);
  • }
  • }
  • rule("Settings: Keybind Options")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.Scrims_KeybindButtonArray = Array(Button(Primary Fire), Button(Secondary Fire), Button(Ability 1), Button(Ability 2),
  • Button(Ultimate), Button(Interact), Button(Jump), Button(Crouch), Button(Melee), Button(Reload));
  • Global.Scrims_KeybindCommand = Global.Scrims_KeybindButtonArray[Workshop Setting Combo(Custom String("Keybinds"), Custom String(
  • "Command"), 5, Array(Custom String("Primary Fire"), Custom String("Secondary Fire"), Custom String("Ability 1"), Custom String(
  • "Ability 2"), Custom String("Ultimate"), Custom String("Interact"), Custom String("Jump"), Custom String("Crouch"),
  • Custom String("Melee"), Custom String("Reload")), 0)];
  • Global.Scrims_KeybindReadyToggle = Global.Scrims_KeybindButtonArray[Workshop Setting Combo(Custom String("Keybinds"),
  • Custom String("Ready Up Toggle"), 9, Array(Custom String("Primary Fire"), Custom String("Secondary Fire"), Custom String(
  • "Ability 1"), Custom String("Ability 2"), Custom String("Ultimate"), Custom String("Interact"), Custom String("Jump"),
  • Custom String("Crouch"), Custom String("Melee"), Custom String("Reload")), 1)];
  • Global.Scrims_KeybindDefenderTeleport = Global.Scrims_KeybindButtonArray[Workshop Setting Combo(Custom String("Keybinds"),
  • Custom String("Defender Teleport"), 6, Array(Custom String("Primary Fire"), Custom String("Secondary Fire"), Custom String(
  • "Ability 1"), Custom String("Ability 2"), Custom String("Ultimate"), Custom String("Interact"), Custom String("Jump"),
  • Custom String("Crouch"), Custom String("Melee"), Custom String("Reload")), 2)];
  • Global.Scrims_KeybindCaptainAddTime = Global.Scrims_KeybindButtonArray[Workshop Setting Combo(Custom String("Keybinds"),
  • Custom String("Captain Add Setup Time"), 4, Array(Custom String("Primary Fire"), Custom String("Secondary Fire"),
  • Custom String("Ability 1"), Custom String("Ability 2"), Custom String("Ultimate"), Custom String("Interact"), Custom String(
  • "Jump"), Custom String("Crouch"), Custom String("Melee"), Custom String("Reload")), 3)];
  • }
  • }
  • rule("Settings: Debug Options")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.Scrim_DebugMode = Workshop Setting Toggle(Custom String("Debug"), Custom String("Enable Debug Mode"), False, 0);
  • Global.Scrim_DisplayServerLoad = Workshop Setting Toggle(Custom String("Debug"), Custom String("Display Server Load"), True, 1);
  • Global.Logs_AutoMatchEndTime = Workshop Setting Integer(Custom String("Debug"), Custom String("Automatically End Match Time"),
  • 3600, 10, 3600, 2);
  • }
  • }
  • rule("Init: Match")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • If(!Global.Logs_EnableLogTracker);
  • Disable Inspector Recording;
  • End;
  • Global.Scrim_DebugMode = Workshop Setting Toggle(Custom String("Debug Options"), Custom String("Enable Scrim Debug Mode"), False,
  • 0);
  • }
  • }
  • rule("Init: Player")
  • rule("Settings: Player Setup")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Event Player.Scrim_PlayerReady = False;
  • Event Player.Scrim_PlayerReadyIcon = Icon String(X);
  • Event Player.PlayerReady = False;
  • Event Player.PlayerReadyIcon = Icon String(X);
  • Event Player.Logs_HeroesPlayedArray = Empty Array;
  • }
  • }
  • rule("Match: Remove Assembling Heroes")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Assembling Heroes == True;
  • Global.Scrim_RemoveAssemblingHeroes == True;
  • }
  • actions
  • {
  • Set Match Time(0);
  • }
  • }
  • rule("Debug: Force Ready (Interact + Ability 1)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is In Setup == True;
  • Is Button Held(Host Player, Button(Interact)) == True;
  • Is Button Held(Host Player, Button(Ability 1)) == True;
  • Global.Scrim_DebugMode == True;
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Button(Interact));
  • Start Holding Button(Event Player, Button(Reload));
  • Stop Holding Button(Event Player, Button(Interact));
  • Stop Holding Button(Event Player, Button(Reload));
  • }
  • }
  • rule("Debug: Reduce Timer to 5 (Interact + Alt Fire)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Host Player, Button(Interact)) == True;
  • Is Button Held(Host Player, Button(Secondary Fire)) == True;
  • Global.Scrim_DebugMode == True;
  • }
  • actions
  • {
  • Set Match Time(5);
  • }
  • }
  • rule("Debug: Spawn Test Bot (Interact + Melee)")
  • rule("Debug: Spawn Test Bot (Interact + Ultimate)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Scrim_DebugMode == True;
  • Is Button Held(Host Player, Button(Interact)) == True;
  • Is Button Held(Host Player, Button(Melee)) == True;
  • Is Button Held(Host Player, Button(Ultimate)) == True;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(D.Va), Opposite Team Of(Team Of(Host Player)), -1, Host Player, Vector(0, 0, 0));
  • }
  • }
  • rule("Debug: Automatically End Match")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Scrim_DebugMode == True;
  • Global.Logs_AutoMatchEndTime < 3600;
  • }
  • actions
  • {
  • Wait(Global.Logs_AutoMatchEndTime, Ignore Condition);
  • Declare Team Victory(Team 1);
  • }
  • }
  • rule("Debug: Display Server Loads")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Scrim_DebugMode == True;
  • Global.Scrim_DisplayServerLoad == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Create HUD Text(All Players(All Teams), Null, Custom String(
  • "{0} Current Server Load\r\n{1} Average Server Load\r\n{2} Peak Server Load", Server Load, Server Load Average,
  • Server Load Peak), Null, Left, 100, Color(White), Color(White), Color(White), Visible To and String, Visible Always);
  • }
  • }
  • rule("Setup: Begin")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is In Setup == True;
  • Global.Scrim_EnableReadyUpSystem == True;
  • }
  • actions
  • {
  • If(Match Round == 1 || Global.Scrim_RequireReadyEveryRound == True);
  • Set Match Time(3600);
  • End;
  • }
  • }
  • rule("Setup: HUD Setup")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is In Setup == True;
  • (Match Round == 1 || Global.Scrim_RequireReadyEveryRound) == True;
  • Global.Scrim_EnableReadyUpSystem == True;
  • }
  • actions
  • {
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String("workshop.codes/scrimtime"), Left, 0, Color(White), Color(White),
  • Color(Yellow), Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Global.Scrim_CaptainOnlyMode ? Custom String(
  • "Captain-only mode enabled, only {0} and {1} need to ready up", Players In Slot(0, Team 1), Players In Slot(0, Team 2))
  • : Custom String("Captain-only mode disabled, all players will need to ready up"), Null, Left, 0.100, Color(White), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Team 1, Null, Null, Left, 1, Color(Blue), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Team 2, Null, Null, Left, 3, Color(Red), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • If(Global.Scrim_DebugMode);
  • If(Global.Scrim_DebugMode || Global.Logs_DebugMode);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String(
  • "{0} Debug Mode is enabled, turn it off in Workshop Settings if this is not intentional {0}", Icon String(Warning)), Top,
  • 6.100, Null, Null, Color(Yellow), Visible To and String, Default Visibility);
  • "Notice: Debug Mode is enabled, turn it off in Workshop Settings if this is not intentional"), Top, -1, Null, Null, Color(
  • Yellow), Visible To and String, Default Visibility);
  • End;
  • }
  • }
  • rule("Setup: HUD Setup (Player)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is In Setup == True;
  • (Match Round == 1 || Global.Scrim_RequireReadyEveryRound) == True;
  • Global.Scrim_EnableReadyUpSystem == True;
  • }
  • actions
  • {
  • If(!Global.Scrim_CaptainOnlyMode || (Global.Scrim_CaptainOnlyMode && Slot Of(Event Player) == 0));
  • Create HUD Text(All Players(All Teams), Event Player.Scrim_PlayerReadyIcon, Event Player,
  • Event Player.Scrim_PlayerReady ? Custom String("Ready") : Custom String("Not Ready"), Left, (Team Of(Event Player)
  • == Team 1 ? 2 : 4) + Slot Of(Event Player) * 0.100, Team Of(Event Player) == Team 1 ? Color(Blue) : Color(Red), Color(Yellow),
  • Color(White), Visible To and String, Visible Always);
  • Create HUD Text(Event Player, Null, Null, Event Player.Scrim_PlayerReady ? Custom String("You are readied up") : Custom String(
  • "You are not readied up"), Top, 5.100, Color(White), Color(White), Event Player.Scrim_PlayerReady ? Color(Green) : Color(
  • Yellow), String and Color, Visible Never);
  • Create HUD Text(Event Player, Null, Custom String("Press {0} + {2} to {1}", Custom String("{0} ({1})",
  • Global.Scrims_KeybindCommand, Input Binding String(Global.Scrims_KeybindCommand)),
  • Event Player.Scrim_PlayerReady ? Custom String("unready") : Custom String("ready up"), Custom String("{0} ({1})",
  • Global.Scrims_KeybindReadyToggle, Input Binding String(Global.Scrims_KeybindReadyToggle))), Null, Top, 5.200, Color(White),
  • Color(White), Color(White), Visible To and String, Visible Never);
  • Create HUD Text(All Players(All Teams), Event Player.PlayerReadyIcon, Event Player, Event Player.PlayerReady ? Custom String(
  • "Ready") : Custom String("Not Ready"), Left, (Team Of(Event Player) == Team 1 ? 2 : 4) + Slot Of(Event Player) * 0.100,
  • Team Of(Event Player) == Team 1 ? Color(Blue) : Color(Red), Color(Yellow), Color(White), Visible To and String,
  • Visible Always);
  • Create HUD Text(Event Player, Custom String(""), Null, Event Player.PlayerReady ? Custom String("You are readied up")
  • : Custom String("You are not readied up"), Top, 5.100, Color(White), Color(White), Event Player.PlayerReady ? Color(Green)
  • : Color(Yellow), String and Color, Visible Never);
  • Create HUD Text(Event Player, Null, Custom String("Press Interact ({0}) + Reload ({2}) to {1}", Input Binding String(Button(
  • Interact)), Event Player.PlayerReady ? Custom String("unready") : Custom String("ready up"), Input Binding String(Button(
  • Reload))), Null, Top, 5.200, Color(White), Color(White), Color(White), Visible To and String, Visible Never);
  • End;
  • If(Global.Scrim_AllowDefendersTeleport && Is Team On Defense(Team Of(Event Player)));
  • Create HUD Text(Event Player, Null, Custom String("Press {0} + {1} to teleport between objective and spawn room", Custom String(
  • "{0} ({1})", Global.Scrims_KeybindCommand, Input Binding String(Global.Scrims_KeybindCommand)), Custom String("{0} ({1})",
  • Global.Scrims_KeybindDefenderTeleport, Input Binding String(Global.Scrims_KeybindDefenderTeleport))), Null, Top, 5.300, Color(
  • White), Color(White), Color(White), Visible To and String, Visible Never);
  • Create HUD Text(Event Player, Null, Custom String("Press Interact ({0}) + Jump ({1}) to teleport between objective and spawn room",
  • Input Binding String(Button(Interact)), Input Binding String(Button(Jump))), Null, Top, 5.300, Color(White), Color(White),
  • Color(White), Visible To and String, Visible Never);
  • End;
  • Create HUD Text(Event Player, Null, Custom String("Match will commence when {0} are ready",
  • Global.Scrim_CaptainOnlyMode ? Custom String("both Captains") : Custom String("all players")), Null, Top, 5.400, Color(White),
  • Global.Scrim_CaptainOnlyMode ? Custom String("both teams") : Custom String("all players")), Null, Top, 5.400, Color(White),
  • Color(White), Color(White), Visible To and String, Visible Never);
  • }
  • }
  • rule("Setup: HUD Setup (Captain Add Time)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is In Setup == True;
  • Global.Scrim_RequireReadyEveryRound == False;
  • Global.Scrim_AllowCaptainTimeAdd == True;
  • (!Global.Scrim_EnableReadyUpSystem || Match Round != 1) == True;
  • }
  • actions
  • {
  • If(Slot Of(Event Player) == 0);
  • Create HUD Text(Event Player, Null, Custom String("Press {0} + {1} to add {2} sec to the Setup Timer", Custom String("{0} ({1})",
  • Global.Scrims_KeybindCommand, Input Binding String(Global.Scrims_KeybindCommand)), Custom String("{0} ({1})",
  • Global.Scrims_KeybindCaptainAddTime, Input Binding String(Global.Scrims_KeybindCaptainAddTime)),
  • Global.Scrim_CaptainAddTimeStep), Null, Top, 5.350, Color(White), Color(White), Color(White), Visible To and String,
  • Visible Never);
  • Else;
  • Create HUD Text(Event Player, Null, Custom String("{0} and {1} can add {2} sec to the setup timer", Players In Slot(0, Team 1),
  • Players In Slot(0, Team 2), Global.Scrim_CaptainAddTimeStep), Null, Top, 5.350, Color(White), Color(White), Color(White),
  • Visible To and String, Visible Never);
  • End;
  • }
  • }
  • rule("Setup: Captain Add Time")
  • rule("Setup: Set Player Ready/Unready")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is In Setup == True;
  • Slot Of(Event Player) == 0;
  • Global.Scrim_RequireReadyEveryRound == False;
  • Global.Scrim_AllowCaptainTimeAdd == True;
  • (!Global.Scrim_EnableReadyUpSystem || Match Round != 1) == True;
  • Is Button Held(Event Player, Global.Scrims_KeybindCommand) == True;
  • Is Button Held(Event Player, Global.Scrims_KeybindCaptainAddTime) == True;
  • (Match Round == 1 || Global.Scrim_RequireReadyEveryRound) == True;
  • (Slot Of(Event Player) == 0 || Global.Scrim_CaptainOnlyMode == False) == True;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Is Button Held(Event Player, Button(Reload)) == True;
  • }
  • actions
  • {
  • If(Match Time < Global.Scrim_CaptainAddTimeMax);
  • Set Match Time(Min(Global.Scrim_CaptainAddTimeMax + 0.900, Global.Scrim_CaptainAddTimeStep + Match Time));
  • Small Message(All Players(All Teams), Custom String("{0} extended setup time by {1} sec", Event Player,
  • Global.Scrim_CaptainAddTimeStep));
  • Else;
  • Small Message(Event Player, Custom String("Setup timer cannot be extended beyond {0}", Custom String("{0}:{1}{2}",
  • Round To Integer(Global.Scrim_CaptainAddTimeMax / 60, Down), Global.Scrim_CaptainAddTimeMax % 60 < 10 ? Custom String("0")
  • : Custom String(""), Global.Scrim_CaptainAddTimeMax % 60)));
  • End;
  • Event Player.PlayerReady = Event Player.PlayerReady ? False : True;
  • Event Player.PlayerReadyIcon = Event Player.PlayerReady ? Icon String(Checkmark) : Icon String(X);
  • }
  • }
  • rule("Setup: Teleport to Objective/Spawn (Defenders Only)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is In Setup == True;
  • Global.Scrim_AllowDefendersTeleport == True;
  • Is Team On Defense(Team Of(Event Player)) == True;
  • Is Button Held(Event Player, Global.Scrims_KeybindCommand) == True;
  • Is Button Held(Event Player, Global.Scrims_KeybindDefenderTeleport) == True;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Is Button Held(Event Player, Button(Jump)) == True;
  • }
  • actions
  • {
  • If(Is In Spawn Room(Event Player));
  • Teleport(Event Player, Nearest Walkable Position(Objective Position(Objective Index)));
  • Teleport(Event Player, Objective Position(Objective Index));
  • Small Message(Event Player, Custom String("Teleported to Objective"));
  • Else;
  • Teleport(Event Player, Spawn Points(Team Of(Event Player)));
  • Respawn(Event Player);
  • Small Message(Event Player, Custom String("Teleported to Spawn"));
  • End;
  • }
  • }
  • rule("Setup: Set Player Ready/Unready")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Scrim_EnableReadyUpSystem == True;
  • Is In Setup == True;
  • (Match Round == 1 || Global.Scrim_RequireReadyEveryRound) == True;
  • (Slot Of(Event Player) == 0 || Global.Scrim_CaptainOnlyMode == False) == True;
  • Is Button Held(Event Player, Global.Scrims_KeybindCommand) == True;
  • Is Button Held(Event Player, Global.Scrims_KeybindReadyToggle) == True;
  • }
  • actions
  • {
  • Event Player.Scrim_PlayerReady = Event Player.Scrim_PlayerReady ? False : True;
  • Event Player.Scrim_PlayerReadyIcon = Event Player.Scrim_PlayerReady ? Icon String(Checkmark) : Icon String(X);
  • Wait Until(!Is Button Held(Event Player, Button(Jump)), 99999);
  • }
  • }
  • rule("Setup: Both Teams Ready, Start Match (Captain-Only Mode)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Scrim_EnableReadyUpSystem == True;
  • Global.Scrim_CaptainOnlyMode == True;
  • Is In Setup == True;
  • (Match Round == 1 || Global.Scrim_RequireReadyEveryRound) == True;
  • Players In Slot(0, Team 1).Scrim_PlayerReady == True;
  • Players In Slot(0, Team 2).Scrim_PlayerReady == True;
  • Global.Scrim_CaptainOnlyMode == True;
  • Players In Slot(0, Team 1).PlayerReady == True;
  • Players In Slot(0, Team 2).PlayerReady == True;
  • }
  • actions
  • {
  • Small Message(All Players(All Teams), Custom String("Both Captains ready, commencing match"));
  • Small Message(All Players(All Teams), Custom String("Both teams ready, commencing match!"));
  • Set Match Time(Global.Scrim_SetupCountdownTime);
  • Wait Until(Players In Slot(0, Team 1).Scrim_PlayerReady == False || Players In Slot(0, Team 2).Scrim_PlayerReady == False,
  • Wait Until(Players In Slot(0, Team 1).PlayerReady == False || Players In Slot(0, Team 2).PlayerReady == False,
  • Global.Scrim_SetupCountdownTime);
  • If(Players In Slot(0, Team 1).Scrim_PlayerReady == False || Players In Slot(0, Team 2).Scrim_PlayerReady == False);
  • Small Message(All Players(All Teams), Custom String("Someone unreadied, resetting setup time"));
  • If(Players In Slot(0, Team 1).PlayerReady == False || Players In Slot(0, Team 2).PlayerReady == False);
  • Small Message(All Players(All Teams), Custom String("Someone unreadied, resetting setup time!"));
  • Set Match Time(3600);
  • End;
  • }
  • }
  • rule("Setup: Both Teams Ready, Start Match (All Players Mode)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Scrim_EnableReadyUpSystem == True;
  • Global.Scrim_CaptainOnlyMode == False;
  • Is In Setup == True;
  • (Match Round == 1 || Global.Scrim_RequireReadyEveryRound) == True;
  • Count Of(Filtered Array(All Players(All Teams), Current Array Element.Scrim_PlayerReady == True)) == Count Of(All Players(
  • All Teams));
  • Global.Scrim_CaptainOnlyMode == False;
  • Count Of(Filtered Array(All Players(All Teams), Current Array Element.PlayerReady == True)) == Count Of(All Players(All Teams));
  • }
  • actions
  • {
  • Small Message(All Players(All Teams), Custom String("All players ready, commencing match"));
  • Small Message(All Players(All Teams), Custom String("All players ready, commencing match!"));
  • Set Match Time(Global.Scrim_SetupCountdownTime);
  • Wait Until(Count Of(Filtered Array(All Players(All Teams), Current Array Element.Scrim_PlayerReady == True)) < Count Of(
  • All Players(All Teams)), Global.Scrim_SetupCountdownTime);
  • If(Count Of(Filtered Array(All Players(All Teams), Current Array Element.Scrim_PlayerReady == True)) < Count Of(All Players(
  • All Teams)));
  • Small Message(All Players(All Teams), Custom String("Someone unreadied, resetting setup time"));
  • Wait Until(Count Of(Filtered Array(All Players(All Teams), Current Array Element.PlayerReady == True)) < Count Of(All Players(
  • All Teams)), Global.Scrim_SetupCountdownTime);
  • If(Count Of(Filtered Array(All Players(All Teams), Current Array Element.PlayerReady == True)) < Count Of(All Players(All Teams)));
  • Small Message(All Players(All Teams), Custom String("Someone unreadied, resetting setup time!"));
  • Set Match Time(3600);
  • End;
  • }
  • }
  • rule("Game: In Progress")
  • rule("Game: Begin")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • (Match Round == 1 || Global.Scrim_RequireReadyEveryRound) == True;
  • }
  • actions
  • {
  • Destroy All HUD Text;
  • }
  • }
  • rule("Game: Reset Player Ready Status")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Scrim_EnableReadyUpSystem == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Event Player.Scrim_PlayerReady = False;
  • Event Player.Scrim_PlayerReadyIcon = Icon String(X);
  • }
  • }
  • rule("Scoreboard: Create Legend")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.Scrim_EnableSpecScoreboard == True;
  • Global.Scrim_DisplayScoreboardLegend == True;
  • (Match Round == 1 || Global.Scrim_RequireReadyEveryRound) == True;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • If(Global.Scrim_ScoreboardGroupMode == 0);
  • Create HUD Text(Null, Null, Custom String("{0} {1}", Ability Icon String(Hero(Genji), Button(Ultimate)), Custom String(
  • "K • D • DD • DT • OA • UU")), Null, Left, 1, Null, Color(White), Null, None, Visible Always);
  • Create HUD Text(Null, Null, Custom String("{0} {1}", Ability Icon String(Hero(Reinhardt), Button(Secondary Fire)), Custom String(
  • "K • D • DD • DT • DB • UU")), Null, Left, 2, Null, Color(White), Null, None, Visible Always);
  • Create HUD Text(Null, Null, Custom String("{0} {1}", Ability Icon String(Hero(Baptiste), Button(Ability 1)), Custom String(
  • "K • D • HP • DT • OA • UU")), Null, Left, 3, Null, Color(White), Null, None, Visible Always);
  • Else;
  • Create HUD Text(Null, Null, Custom String("{0} {1}", Ability Icon String(Hero(Genji), Button(Ultimate)), Custom String(
  • "K • D • DD • DT • OA • UU")), Null, Left, 1.100, Null, Color(White), Null, None, Visible Always);
  • Create HUD Text(Null, Null, Custom String("{0} {1}", Ability Icon String(Hero(Reinhardt), Button(Secondary Fire)), Custom String(
  • "K • D • DD • DT • DB • UU")), Null, Left, 1.200, Null, Color(White), Null, None, Visible Always);
  • Create HUD Text(Null, Null, Custom String("{0} {1}", Ability Icon String(Hero(Baptiste), Button(Ability 1)), Custom String(
  • "K • D • HP • DT • OA • UU")), Null, Left, 1.300, Null, Color(White), Null, None, Visible Always);
  • End;
  • Event Player.PlayerReady = False;
  • Event Player.PlayerReadyIcon = Icon String(X);
  • }
  • }
  • rule("Scoreboard: Create HUD Text")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.Scrim_EnableSpecScoreboard == True;
  • (Match Round == 1 || Global.Scrim_RequireReadyEveryRound) == True;
  • Global.Scrim_ScoreboardEnabled == True;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • If(Global.Scrim_ScoreboardGroupMode == 0);
  • Create HUD Text(Null, Null, Custom String("{0} {1} • {2}", Hero Icon String(Hero Of(Event Player)), Custom String(
  • "{0} • {1} • {2}", Player Stat(Event Player, Final Blows), Player Stat(Event Player, Deaths), Array Contains(
  • All Support Heroes, Hero Of(Event Player)) ? Round To Integer(Player Stat(Event Player, Healing Dealt), To Nearest)
  • : Round To Integer(Player Stat(Event Player, Hero Damage Dealt), Up)), Custom String("{0} • {1} • {2}", Round To Integer(
  • Player Stat(Event Player, Damage Taken), To Nearest), Array Contains(All Tank Heroes, Hero Of(Event Player))
  • ? Round To Integer(Player Stat(Event Player, Damage Blocked), To Nearest) : Player Stat(Event Player, Offensive Assists),
  • Player Stat(Event Player, Ultimates Used))), Null, Left, (Array Contains(All Damage Heroes, Hero Of(Event Player)) ? 1 : (
  • Array Contains(All Tank Heroes, Hero Of(Event Player)) ? 2 : 3)) + (Team Of(Event Player) == Team 1 ? 0.100 : 0.200), Null,
  • Team Of(Event Player) == Team 1 ? Color(Blue) : Color(Red), Null, Sort Order and String, Visible Always);
  • Else If(Global.Scrim_ScoreboardGroupMode == 1);
  • Create HUD Text(Null, Null, Custom String("{0} {1} • {2}", Hero Icon String(Hero Of(Event Player)), Custom String(
  • "{0} • {1} • {2}", Player Stat(Event Player, Final Blows), Player Stat(Event Player, Deaths), Array Contains(
  • All Support Heroes, Hero Of(Event Player)) ? Round To Integer(Player Stat(Event Player, Healing Dealt), To Nearest)
  • : Round To Integer(Player Stat(Event Player, Hero Damage Dealt), Up)), Custom String("{0} • {1} • {2}", Round To Integer(
  • Player Stat(Event Player, Damage Taken), To Nearest), Array Contains(All Tank Heroes, Hero Of(Event Player))
  • ? Round To Integer(Player Stat(Event Player, Damage Blocked), To Nearest) : Player Stat(Event Player, Offensive Assists),
  • Player Stat(Event Player, Ultimates Used))), Null, Left, (Array Contains(All Damage Heroes, Hero Of(Event Player)) ? 1 : (
  • Array Contains(All Tank Heroes, Hero Of(Event Player)) ? 2 : 3)) * 0.100 + (Team Of(Event Player) == Team 1 ? 2 : 3), Null,
  • Team Of(Event Player) == Team 1 ? Color(Blue) : Color(Red), Null, Sort Order and String, Visible Always);
  • Else;
  • Create HUD Text(Null, Null, Custom String("{0} {1} • {2}", Hero Icon String(Hero Of(Event Player)), Custom String(
  • "{0} • {1} • {2}", Player Stat(Event Player, Final Blows), Player Stat(Event Player, Deaths), Array Contains(
  • All Support Heroes, Hero Of(Event Player)) ? Round To Integer(Player Stat(Event Player, Healing Dealt), To Nearest)
  • : Round To Integer(Player Stat(Event Player, Hero Damage Dealt), Up)), Custom String("{0} • {1} • {2}", Round To Integer(
  • Player Stat(Event Player, Damage Taken), To Nearest), Array Contains(All Tank Heroes, Hero Of(Event Player))
  • ? Round To Integer(Player Stat(Event Player, Damage Blocked), To Nearest) : Player Stat(Event Player, Offensive Assists),
  • Player Stat(Event Player, Ultimates Used))), Null, Left, Slot Of(Event Player) * 0.100 + (Team Of(Event Player)
  • == Team 1 ? 2 : 3), Null, Team Of(Event Player) == Team 1 ? Color(Blue) : Color(Red), Null, Sort Order and String,
  • Visible Always);
  • End;
  • Create HUD Text(Null, Null, Custom String("{0} {1} / {2}", Hero Icon String(Hero Of(Event Player)), Custom String(
  • "{0} / {1} / {2}", Player Stat(Event Player, Final Blows), Player Stat(Event Player, Deaths), Array Contains(
  • All Support Heroes, Hero Of(Event Player)) ? Round To Integer(Player Stat(Event Player, Healing Dealt), To Nearest)
  • : Round To Integer(Player Stat(Event Player, Hero Damage Dealt), Up)), Custom String("{0} / {1} / {2}", Round To Integer(
  • Player Stat(Event Player, Damage Taken), To Nearest), Array Contains(All Tank Heroes, Hero Of(Event Player))
  • ? Round To Integer(Player Stat(Event Player, Damage Blocked), To Nearest) : Player Stat(Event Player, Offensive Assists),
  • Player Stat(Event Player, Ultimates Used))), Null, Left, Slot Of(Event Player) * 0.100 + (Team Of(Event Player)
  • == Team 1 ? 5 : 6), Null, Team Of(Event Player) == Team 1 ? Color(Blue) : Color(Red), Null, String, Visible Always);
  • }
  • }
  • rule("Scoreboard: Host Spectator Toggle")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.Scrim_EnableSpecScoreboard == True;
  • Global.Scrim_AllowHostHideScoreboard == True;
  • Is Button Held(Host Player, Button(Jump)) == True;
  • Is Button Held(Host Player, Button(Ultimate)) == True;
  • Team Of(Host Player) == All Teams;
  • }
  • actions
  • {
  • If(Global.Scrim_HideScoreboardID == Null);
  • Small Message(All Players(All Teams), Custom String("Host Toggled Scoreboard Off"));
  • Create HUD Text(Host Player, Null, Null, Custom String(
  • " \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"),
  • Left, 0, Color(White), Color(White), Color(White), Visible To and String, Visible Always);
  • Global.Scrim_HideScoreboardID = Last Text ID;
  • Else;
  • Small Message(All Players(All Teams), Custom String("Host Toggled Scoreboard On"));
  • Destroy HUD Text(Global.Scrim_HideScoreboardID);
  • Global.Scrim_HideScoreboardID = Null;
  • End;
  • }
  • }
  • rule("Round Complete: Ensure Map Completion (Map Completion Mode)")
  • rule("Round End: Ensure Map Completion (Map Completion Mode)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Between Rounds == True;
  • Current Game Mode != Game Mode(Control);
  • Global.Scrim_MapCompleteMode == True;
  • Team Score(Is Team On Offense(Team 1) ? Team 1 : Team 2) < (Current Game Mode == Game Mode(Assault) ? 2 : 3);
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • If(Current Game Mode == Game Mode(Assault));
  • Small Message(All Players(All Teams), Custom String(
  • "Map Completion Mode is enabled - Forcing {0}'s score to {1} to ensure map completion", Is Team On Offense(Team 1)
  • ? Team 1 : Team 2, 2));
  • Set Team Score(Is Team On Offense(Team 1) ? Team 1 : Team 2, 2);
  • Else;
  • Small Message(All Players(All Teams), Custom String(
  • "Map Completion Mode is enabled - Forcing {0}'s score to {1} to ensure map completion", Is Team On Offense(Team 1)
  • ? Team 1 : Team 2, 3));
  • Set Team Score(Is Team On Offense(Team 1) ? Team 1 : Team 2, 3);
  • End;
  • }
  • }
  • rule("Round Complete: Force Match End After Two Rounds (Map Completion Mode)")
  • rule("Round End: Force Match End After Two Rounds (Map Completion Mode)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Between Rounds == True;
  • Current Game Mode != Game Mode(Control);
  • Match Round == 2;
  • Global.Scrim_MapCompleteMode == True;
  • Global.Scrim_ForceMatchEndAftTwoRounds == True;
  • }
  • actions
  • {
  • Small Message(All Players(All Teams), Custom String("Map Completion Mode is enabled - Concluding match after two rounds",
  • Is Team On Offense(Team 1) ? Team 1 : Team 2, 2));
  • Wait(1, Ignore Condition);
  • Declare Match Draw;
  • }
  • }
  • disabled rule("Logs: Array Configuration")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • }
  • actions
  • {
  • Global.Logs_ControlMapArray = Array(Map(Nepal), Map(Lijiang Tower), Map(Ilios), Map(Oasis), Map(Busan));
  • Global.Logs_ControlStageArray = Array(Custom String("Village"), Custom String("Shrine"), Custom String("Sanctum"), Custom String(
  • "Night Market"), Custom String("Garden"), Custom String("Control Center"), Custom String("Lighthouse"), Custom String("Well"),
  • Custom String("Ruins"), Custom String("City Center"), Custom String("Gardens"), Custom String("University"), Custom String(
  • "Downtown"), Custom String("Sanctuary"), Custom String("MEKA Base"));
  • Global.Logs_AbilityNameArray = Array(Array(Custom String("Wraith Form"), Custom String("Shadow Step"), Custom String(
  • "Death Blossom")), Array(Custom String("Blink"), Custom String("Recall"), Custom String("Pulse Bomb")), Array(Custom String(
  • "Guardian Angel"), Custom String("Resurrect"), Custom String("Valkyrie")), Array(Custom String("Storm Arrows"), Custom String(
  • "Sonic Arrow"), Custom String("Dragonstrike")), Array(Custom String("Deploy Turret"), Custom String("Overload"), Custom String(
  • "Molten Core")), Array(Custom String("Charge"), Custom String("Fire Strike"), Custom String("Earthshatter")), Array(
  • Custom String("Jump Jet"), Custom String("Concussive Blast"), Custom String("Barrage")), Array(Custom String("Jump Pack"),
  • Custom String("Barrier Projector"), Custom String("Primal Rage")), Array(Custom String("Grappling Hook"), Custom String(
  • "Venom Mine"), Custom String("Infra-Sight")), Array(Custom String("Reconfigure"), Custom String("Self-Repair"), Custom String(
  • "Configuration: Tank")), Array(Custom String("Sentry Turret"), Custom String("Teleporter"), Custom String("Photon Barrier")),
  • Array(Custom String("Orb of Harmony"), Custom String("Orb of Discord"), Custom String("Transcendence")), Array(Custom String(
  • "Swift Strike"), Custom String("Deflect"), Custom String("Dragonblade")), Array(Custom String("Chain Hook"), Custom String(
  • "Take a Breather"), Custom String("Whole Hog")), Array(Custom String("Combat Roll"), Custom String("Flashbang"), Custom String(
  • "Deadeye")), Array(Custom String("Concussion Mine"), Custom String("Steel Trap"), Custom String("RIP-Tire")), Array(
  • Custom String("Particle Barrier"), Custom String("Projected Barrier"), Custom String("Graviton Surge")), Array(Custom String(
  • "Sprint"), Custom String("Biotic Field"), Custom String("Tactical Visor")), Array(Custom String("Crossfade"), Custom String(
  • "Amp It Up"), Custom String("Sound Barrier")), Array(Custom String("Boosters"), Custom String("Micro Missiles"), Custom String(
  • "Self-Destruct")), Array(Custom String("Cryo-Freeze"), Custom String("Ice Wall"), Custom String("Blizzard")), Array(
  • Custom String("Stealth"), Custom String("Translocator"), Custom String("EMP")), Array(Custom String("Rising Uppercut"),
  • Custom String("Seismic Slam"), Custom String("Meteor Strike")), Array(Custom String("Sleep Dart"), Custom String(
  • "Biotic Grenade"), Custom String("Nano Boost")), Array(Custom String("Fortify"), Custom String("Protective Barrier"),
  • Custom String("Supercharger")), Array(Custom String("Whip Shot"), Custom String("Repair Pack"), Custom String("Rally")), Array(
  • Custom String("Fade"), Custom String("Biotic Orb"), Custom String("Coalescence")), Array(Custom String("Roll"), Custom String(
  • "Adaptive Shield"), Custom String("Minefield")), Array(Custom String("Coach Gun"), Custom String("Dynamite"), Custom String(
  • "B.O.B.")), Array(Custom String("Flight"), Custom String("Focusing Beam"), Custom String("Duplicate")), Array(Custom String(
  • "Regenerative Burst"), Custom String("Immortality Field"), Custom String("Amplification Matrix")), Array(Custom String(
  • "Kinetic Grasp"), Custom String("Accretion"), Custom String("Gravitic Flux")));
  • }
  • }
  • rule("Logs: Match Start")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Match Round == 1;
  • }
  • actions
  • {
  • If(Global.Logs_TrackMatchStartEnd);
  • Log To Inspector(Custom String(",match_start,{0},{1}", Custom String("{0},{1},{2}", Total Time Elapsed, Current Map,
  • Current Game Mode), Custom String("{0},{1}", Team 1, Team 2)));
  • End;
  • }
  • }
  • rule("Logs: Round Start")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Is In Setup == True;
  • }
  • actions
  • {
  • Global.Logs_CurrentControlScoringTeam = All Teams;
  • Global.Logs_CurrentObjectiveIndex = Objective Index;
  • If(Global.Logs_TrackRoundStartEnd == True);
  • Log To Inspector(Custom String(",round_start,{0},{1}", Custom String("{0},{1}", Total Time Elapsed, Match Round), Custom String(
  • "{0},{1},{2}", Team Score(Team 1), Team Score(Team 2), Objective Index)));
  • Wait Until(Is Game In Progress, 99999);
  • Log To Inspector(Custom String(",setup_complete,{0}", Custom String("{0},{1}", Total Time Elapsed, Match Round)));
  • End;
  • }
  • }
  • rule("Logs: Objective Captured (Non-Control)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackObjectiveCapture == True;
  • Is Game In Progress == True;
  • Current Game Mode != Game Mode(Control);
  • Is Objective Complete(Global.Logs_CurrentObjectiveIndex) == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",objective_captured,{0},{1},{2}", Custom String("{0}", Total Time Elapsed), Custom String(
  • "{0},{1}", Is Team On Offense(Team 1) ? Team 1 : Team 2, Objective Index), Custom String("{0},{1}")));
  • Global.Logs_CurrentObjectiveIndex = Objective Index;
  • }
  • }
  • rule("Logs: Objective Captured (Control)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackObjectiveCapture == True;
  • Is Game In Progress == True;
  • Current Game Mode == Game Mode(Control);
  • Control Mode Scoring Team != Global.Logs_CurrentControlScoringTeam;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",objective_captured,{0},{1},{2}", Custom String("{0}", Total Time Elapsed), Custom String(
  • "{0},{1}", Control Mode Scoring Team, Objective Index), Custom String("{0},{1}", Control Mode Scoring Percentage(Team 1),
  • Control Mode Scoring Percentage(Team 2))));
  • Global.Logs_CurrentControlScoringTeam = Control Mode Scoring Team;
  • }
  • }
  • rule("Logs: Round Complete")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackRoundStartEnd == True;
  • Is Between Rounds == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",round_end,{0},{1},{2}", Custom String("{0},{1}", Total Time Elapsed, Match Round), Custom String(
  • "{0},{1}", Team Score(Team 1), Team Score(Team 2)), Custom String("{0},{1},{2}", Objective Index,
  • Control Mode Scoring Percentage(Team 1), Control Mode Scoring Percentage(Team 2))));
  • }
  • }
  • rule("Logs: Match Complete")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Is Match Complete == True;
  • }
  • actions
  • {
  • Wait Until(!Global.Logs_EnablePlayerSummary || Global.Logs_PlayerSummaryCount == Count Of(All Players(All Teams)), 99999);
  • If(Global.Logs_TrackMatchStartEnd);
  • Log To Inspector(Custom String(",match_end,{0},{1},{2}", Custom String("{0}", Total Time Elapsed), Custom String("{0}", Team Score(
  • Team 1)), Custom String("{0}", Team Score(Team 2))));
  • End;
  • }
  • }
  • rule("Logs: End-of-Match Player Summary")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_EnablePlayerSummary == True;
  • Is Match Complete == True;
  • }
  • actions
  • {
  • For Player Variable(Event Player, Logs_CurrentHeroIterator, 0, Count Of(Event Player.Logs_HeroesPlayedArray), 1);
  • Event Player.Logs_CurrentHeroIterated = Event Player.Logs_HeroesPlayedArray[Event Player.Logs_CurrentHeroIterator];
  • Log To Inspector(Custom String(",player_stat,{0},{1},{2}", Total Time Elapsed, Custom String("{0},{1},{2}", Team Of(Event Player),
  • Event Player, Event Player.Logs_CurrentHeroIterated), Custom String("{0},{1}", Custom String("{0},{1},{2}", Custom String(
  • "{0},{1},{2}", Custom String("{0},{1},{2}", Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated,
  • Eliminations), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Final Blows), Player Hero Stat(
  • Event Player, Event Player.Logs_CurrentHeroIterated, Deaths)), Custom String("{0},{1},{2}", Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, All Damage Dealt), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated,
  • Barrier Damage Dealt), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Hero Damage Dealt)),
  • Custom String("{0},{1},{2}", Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Healing Dealt),
  • Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Healing Received), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Self Healing))), Custom String("{0},{1},{2}", Custom String("{0},{1}", Player Hero Stat(
  • Event Player, Event Player.Logs_CurrentHeroIterated, Damage Taken), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Damage Blocked)), Custom String("{0},{1}", Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Defensive Assists), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Offensive Assists)), Custom String("{0},{1}", Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Ultimates Earned), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated,
  • Ultimates Used))), Custom String("{0},{1}", Custom String("{0},{1},{2}", Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Multikill Best), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated,
  • Multikills), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Solo Kills)), Custom String("{0},{1},{2}",
  • Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Objective Kills), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Environmental Kills), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Environmental Deaths)))), Custom String("{0},{1}", Custom String("{0},{1},{2}",
  • Custom String("{0},{1}", Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Critical Hits),
  • Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Critical Hit Accuracy)), Custom String("{0},{1},{2}",
  • Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Scoped Accuracy), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Scoped Critical Hit Accuracy), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Scoped Critical Hit Kills)), Custom String("{0},{1},{2}", Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Shots Fired), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated,
  • Shots Hit), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Shots Missed))), Custom String("{0}",
  • Custom String("{0},{1},{2}", Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Scoped Shots),
  • Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Scoped Hits), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Weapon Accuracy)))))));
  • End;
  • Global.Logs_PlayerSummaryCount += 1;
  • }
  • }
  • rule("Logs: Kills")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackKills == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",kill,{0},{1}", Total Time Elapsed, Custom String("{0},{1},{2}", Custom String("{0},{1},{2}",
  • Team Of(Attacker), Attacker, Hero Of(Attacker)), Custom String("{0},{1},{2}", Team Of(Victim), Victim, Hero Of(Victim)),
  • Custom String("{0},{1},{2}", Custom String("{0},{1}", Event Ability, Event Damage), Event Was Critical Hit,
  • Event Was Environment))));
  • }
  • }
  • rule("Logs: Hero Swap")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackHeroSwaps == True;
  • Hero Of(Event Player) != Event Player.Logs_LastHero;
  • Is Match Complete == False;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",hero_swap,{0},{1},{2}", Total Time Elapsed, Custom String("{0},{1}", Team Of(Event Player),
  • Event Player), Custom String("{0},{1}", Hero Of(Event Player), Event Player.Logs_LastHero)));
  • If(!Array Contains(Event Player.Logs_HeroesPlayedArray, Hero Of(Event Player)) && Array Contains(All Heroes, Hero Of(
  • Event Player)));
  • Modify Player Variable(Event Player, Logs_HeroesPlayedArray, Append To Array, Hero Of(Event Player));
  • End;
  • Event Player.Logs_LastHero = Hero Of(Event Player);
  • }
  • }
  • rule("Logs: Damage")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackDamage == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",damage,{0},{1}", Total Time Elapsed, Custom String("{0},{1},{2}", Custom String("{0},{1},{2}",
  • Team Of(Attacker), Attacker, Hero Of(Attacker)), Custom String("{0},{1},{2}", Team Of(Victim), Victim, Hero Of(Victim)),
  • Custom String("{0},{1},{2}", Custom String("{0},{1}", Event Ability, Event Damage), Event Was Critical Hit,
  • Event Was Environment))));
  • }
  • }
  • rule("Logs: Healing")
  • {
  • event
  • {
  • Player Received Healing;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackHealing == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",healing,{0},{1}", Total Time Elapsed, Custom String("{0},{1},{2}", Custom String("{0},{1},{2}",
  • Team Of(Healer), Healer, Hero Of(Healer)), Custom String("{0},{1},{2}", Team Of(Healee), Healee, Hero Of(Healee)),
  • Custom String("{0},{1},{2}", Event Ability, Event Healing, Event Was Health Pack))));
  • }
  • }
  • rule("Logs: Offensive Assists")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackOffensiveAssists == True;
  • Event Player.Logs_OffensiveAssists < Player Stat(Event Player, Offensive Assists);
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",offensive_assist,{0},{1},{2}", Custom String("{0}", Total Time Elapsed), Custom String(
  • "{0},{1},{2}", Team Of(Event Player), Event Player, Hero Of(Event Player)), Custom String("{0}", Hero Being Duplicated(
  • Event Player))));
  • Event Player.Logs_OffensiveAssists += 1;
  • Loop If Condition Is True;
  • }
  • }
  • rule("Logs: Defensive Assists")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackDefensiveAssists == True;
  • Event Player.Logs_DefensiveAssists < Player Stat(Event Player, Defensive Assists);
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",defensive_assist,{0},{1},{2}", Custom String("{0}", Total Time Elapsed), Custom String(
  • "{0},{1},{2}", Team Of(Event Player), Event Player, Hero Of(Event Player)), Custom String("{0}", Hero Being Duplicated(
  • Event Player))));
  • Event Player.Logs_DefensiveAssists += 1;
  • Loop If Condition Is True;
  • }
  • }
  • rule("Logs: Ability 1 Used")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackAbilities == True;
  • Is Using Ability 1(Event Player) == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",ability_1_used,{0},{1},{2}", Custom String("{0}", Total Time Elapsed), Custom String(
  • "{0},{1},{2}", Team Of(Event Player), Event Player, Hero Of(Event Player)), Custom String("{0}", Hero Being Duplicated(
  • Event Player))));
  • }
  • }
  • rule("Logs: Ability 2 Used")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackAbilities == True;
  • Is Using Ability 2(Event Player) == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",ability_2_used,{0},{1},{2}", Custom String("{0}", Total Time Elapsed), Custom String(
  • "{0},{1},{2}", Team Of(Event Player), Event Player, Hero Of(Event Player)), Custom String("{0}", Hero Being Duplicated(
  • Event Player))));
  • }
  • }
  • rule("Logs: Ultimate Charged")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackUltimates == True;
  • Ultimate Charge Percent(Event Player) == 100;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",ultimate_charged,{0},{1},{2}", Custom String("{0}", Total Time Elapsed), Custom String(
  • "{0},{1},{2}", Team Of(Event Player), Event Player, Hero Of(Event Player)), Custom String("{0}", Hero Being Duplicated(
  • Event Player))));
  • }
  • }
  • rule("Logs: Ultimate Used")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackUltimates == True;
  • Is Using Ultimate(Event Player) == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • If(Global.Logs_TrackDvaDemechs && Hero Of(Event Player) == Hero(D.Va));
  • Wait(1.740, Ignore Condition);
  • If(!Is In Alternate Form(Event Player));
  • Log To Inspector(Custom String(",dva_remech,{0},{1}", Custom String("{0}", Total Time Elapsed), Custom String("{0},{1},{2}",
  • Team Of(Event Player), Event Player, Hero Of(Event Player))));
  • Else;
  • Log To Inspector(Custom String(",ultimate_start,{0},{1},{2}", Custom String("{0}", Total Time Elapsed), Custom String(
  • "{0},{1},{2}", Team Of(Event Player), Event Player, Hero Of(Event Player)), Custom String("{0}", Hero Being Duplicated(
  • Event Player))));
  • Wait Until(!Is Using Ultimate(Event Player), 99999);
  • Log To Inspector(Custom String(",ultimate_end,{0},{1},{2}", Custom String("{0}", Total Time Elapsed), Custom String("{0},{1},{2}",
  • Team Of(Event Player), Event Player, Hero Of(Event Player)), Custom String("{0}", Hero Being Duplicated(Event Player))));
  • End;
  • Else;
  • Log To Inspector(Custom String(",ultimate_start,{0},{1},{2}", Custom String("{0}", Total Time Elapsed), Custom String(
  • "{0},{1},{2}", Team Of(Event Player), Event Player, Hero Of(Event Player)), Custom String("{0}", Hero Being Duplicated(
  • Event Player))));
  • Wait Until(!Is Using Ultimate(Event Player), 99999);
  • Log To Inspector(Custom String(",ultimate_end,{0},{1},{2}", Custom String("{0}", Total Time Elapsed), Custom String("{0},{1},{2}",
  • Team Of(Event Player), Event Player, Hero Of(Event Player)), Custom String("{0}", Hero Being Duplicated(Event Player))));
  • End;
  • }
  • }
  • rule("Logs: Echo Duplicate")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackEchoDuplicates == True;
  • Is Duplicating(Event Player) == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",echo_duplicate_start,{0},{1},{2}", Total Time Elapsed, Custom String("{0},{1},{2}", Team Of(
  • Event Player), Event Player, Hero Of(Event Player)), Custom String("{0}", Hero Being Duplicated(Event Player))));
  • Wait Until(!Is Duplicating(Event Player), 99999);
  • Log To Inspector(Custom String(",echo_duplicate_end,{0},{1}", Total Time Elapsed, Custom String("{0},{1},{2}", Team Of(
  • Event Player), Event Player, Hero Of(Event Player))));
  • }
  • }
  • rule("Logs: D.Va Demech")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • D.Va;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackDvaDemechs == True;
  • Is In Alternate Form(Event Player) == False;
  • Health(Event Player) == 0.020;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",dva_demech,{0},{1}", Total Time Elapsed, Custom String("{0},{1},{2}", Custom String("{0},{1},{2}",
  • Team Of(Attacker), Attacker, Hero Of(Attacker)), Custom String("{0},{1},{2}", Team Of(Victim), Victim, Hero Of(Victim)),
  • Custom String("{0},{1},{2}", Custom String("{0},{1}", Event Ability, Event Damage), Event Was Critical Hit,
  • Event Was Environment))));
  • Declare Team Victory(Is Team On Offense(Team 1) ? Team 1 : Team 2);
  • }
  • }
Join the Workshop.codes Discord