Return to post
- settings
- {
- main
- {
Description: "▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ ▩▩▩▩ ScrimTime v1.10 ▩▩▩▩ ▩▩ 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
- }
- }
workshop
{
Control Point Progress Increment: 33.330
}
- }
- variables
- {
- global:
0: Colour_TeamOne
1: Colour_TeamTwo
2: Colour_TextTypeA
3: Colour_TextTypeB
4: Colour_TextTypeC
5: Scrim_DebugMode
6: Scrim_EnableReadyUpSystem
7: Scrim_CaptainOnlyMode
8: Scrim_EnableReadyVoiceLine
9: Scrim_MinimumPlayersToStart
10: Scrim_SetupCountdownTime
11: Scrim_RequireReadyEveryRound
12: Scrim_MapCompleteMode
13: Scrim_ForceMatchEndAftTwoRounds
14: Scrim_RemoveAssemblingHeroes
15: Scrim_AllowDefendersTeleport
16: Scrim_EnableSpecScoreboard
17: Scrim_AllowHostHideScoreboard
18: Scrim_HideScoreboardID
19: Scrim_DisplayScoreboardLegend
20: Scrim_ScoreboardGroupMode
21: Scrim_ScoreboardSize
22: Scrim_DisplayMatchTime
23: Scrim_MatchTime
24: Scrim_AllowCaptainTimeAdd
25: Scrim_CaptainAddTimeStep
26: Scrim_CaptainAddTimeMax
27: Scrim_DisplayServerLoad
28: Scrims_KeybindButtonArray
29: Scrims_KeybindCommand
30: Scrims_KeybindReadyToggle
31: Scrims_KeybindDefenderTeleport
32: Scrims_KeybindCaptainAddTime
33: Logs_EnableLogTracker
34: Logs_OutputFormat
35: Logs_AutoMatchEndTime
36: Logs_CurrentObjectiveIndex
37: Logs_CurrentControlScoringTeam
38: Logs_ControlMapArray
39: Logs_ControlStageArray
40: Logs_AbilityNameArray
41: Logs_TrackKills
42: Logs_TrackHeroSwaps
43: Logs_TrackObjectiveCapture
44: Logs_PointCaptureProgressStep
45: Logs_PayloadCaptureProgressStep
46: Logs_PointCaptureProgress
47: Logs_PayloadCaptureProgress
48: Logs_TrackAbilities
49: Logs_TrackUltimates
50: Logs_TrackOffensiveAssists
51: Logs_TrackDefensiveAssists
52: Logs_TrackDamage
53: Logs_TrackHealing
54: Logs_TrackDvaDemechs
55: Logs_TrackEchoDuplicates
56: Logs_TrackRoundStartEnd
57: Logs_TrackMatchStartEnd
58: Logs_PlayerSummaryFrequency
59: Logs_PlayerSummaryCount
60: Logs_TrackMercyRez
- 0: Scrim_DebugMode
- 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: Logs_LastHero
2: Logs_LastHeroTime
3: Logs_HeroesPlayedTimeArray
4: Logs_HeroesPlayedArray
5: Logs_OffensiveAssists
6: Logs_DefensiveAssists
7: Logs_CurrentHeroIterator
8: Logs_CurrentHeroIterated
}
subroutines
{
0: CalcHeroPlayedTime
}
rule("Settings: Ready Up Options")
{
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_EnableReadyVoiceLine = Workshop Setting Toggle(Custom String("Ready Up System"), Custom String(
"Play voice line when readying"), True, 2);
Global.Scrim_RequireReadyEveryRound = Workshop Setting Toggle(Custom String("Ready Up System"), Custom String(
"Require ready up for every round"), False, 3);
Global.Scrim_MinimumPlayersToStart = Workshop Setting Integer(Custom String("Ready Up System"), Custom String(
"Minimum number of players to start"), 12, 1, 12, 4);
Global.Scrim_SetupCountdownTime = Workshop Setting Integer(Custom String("Ready Up System"), Custom String(
"Countdown Timer when both teams are ready"), 5, 5, 30, 5);
}
}
rule("Settings: Map Completion Mode Options")
{
event
{
Ongoing - Global;
}
actions
{
Global.Scrim_MapCompleteMode = Workshop Setting Toggle(Custom String("Map Completion Mode"), Custom String(
"Enable Map Completion Mode"), True, 0);
Global.Scrim_ForceMatchEndAftTwoRounds = Workshop Setting Toggle(Custom String("Map Completion Mode"), Custom String(
"Force Match to End After Two Rounds in Map Completion Mode"), True, 1);
}
- 0: PlayerReady
- 1: PlayerReadyIcon
- 6: Logs_HeroesPlayedArray
- }
rule("Settings: Setup Phase Options")
- rule("Settings: Option Configuration")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
Global.Scrim_RemoveAssemblingHeroes = Workshop Setting Toggle(Custom String("Setup Phase"), 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 Phase"), Custom String(
"Allow Captains to add Setup Time"), True, 1);
Global.Scrim_CaptainAddTimeStep = Workshop Setting Integer(Custom String("Setup Phase"), Custom String("Setup Time Added"), 30, 1,
60, 2);
Global.Scrim_CaptainAddTimeMax = Workshop Setting Integer(Custom String("Setup Phase"), Custom String("Setup Time Maximum"), 90,
60, 180, 3);
Global.Scrim_AllowDefendersTeleport = Workshop Setting Toggle(Custom String("Setup Phase"), 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: Spectator Scoreboard Options")
{
event
{
Ongoing - Global;
}
actions
{
Global.Scrim_EnableSpecScoreboard = Workshop Setting Toggle(Custom String("Spectator Scoreboard"), Custom String(
- 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 Options"), Custom String(
- "Force Match to End After Two Rounds in Map Completion Mode"), True, 1);
- Global.Scrim_ScoreboardEnabled = Workshop Setting Toggle(Custom String("Scoreboard Options"), Custom String(
- "Enable Spectator Scoreboard"), True, 0);
Global.Scrim_ScoreboardSize = Workshop Setting Combo(Custom String("Spectator Scoreboard"), Custom String("Size"), 0, Array(
Custom String("Small"), Custom String("Medium"), Custom String("Large")), 1);
Global.Scrim_ScoreboardGroupMode = Workshop Setting Combo(Custom String("Spectator Scoreboard"), Custom String(
"Player Grouping 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")), 2);
Global.Scrim_DisplayScoreboardLegend = Workshop Setting Toggle(Custom String("Spectator Scoreboard"), Custom String(
"Display Legend"), True, 3);
Global.Scrim_DisplayMatchTime = Workshop Setting Toggle(Custom String("Spectator Scoreboard"), Custom String("Display Match Time"),
True, 4);
Global.Scrim_AllowHostHideScoreboard = Workshop Setting Toggle(Custom String("Spectator Scoreboard"), Custom String(
"Allow Host Spectator to Toggle Scoreboard"), True, 5);
}
}
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 and 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"), True, 6);
Global.Logs_TrackAbilities = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Abilities*"), 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_TrackMercyRez = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Mercy Resurrects"), True, 12);
Global.Logs_TrackMatchStartEnd = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Match Start & End"), True,
13);
Global.Logs_TrackRoundStartEnd = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Round Start & End"), True,
14);
Global.Logs_TrackObjectiveCapture = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Objective Captures"),
True, 15);
Global.Logs_PointCaptureProgressStep = Workshop Setting Real(Custom String("Log Generator"), Custom String(
"Control Point Progress Increment"), 33.333, 0, 100, 16);
Global.Logs_PayloadCaptureProgressStep = Workshop Setting Real(Custom String("Log Generator"), Custom String(
"Payload Progress Increment"), 10, 0, 100, 17);
Global.Logs_PlayerSummaryFrequency = Workshop Setting Combo(Custom String("Log Generator"), Custom String(
"Player Stat Summary Frequency"), 0, Array(Custom String("Every Round End"), Custom String("Only Match End"), Custom String(
"Off")), 18);
}
}
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);
- Global.Scrim_DebugMode = Workshop Setting Toggle(Custom String("Debug Options"), Custom String("Enable Scrim Debug Mode"), False,
- 0);
- }
- }
rule("Init: Match")
{
event
{
Ongoing - Global;
}
actions
{
If(!Global.Logs_EnableLogTracker);
Disable Inspector Recording;
End;
Global.Colour_TeamOne = Custom Color(50, 185, 240, 255);
Global.Colour_TeamTwo = Custom Color(250, 5, 30, 255);
Global.Colour_TextTypeA = Custom Color(255, 255, 255, 255);
Global.Colour_TextTypeB = Custom Color(255, 210, 40, 255);
Global.Colour_TextTypeC = Custom Color(40, 205, 60, 255);
}
}
rule("Init: Player")
- rule("Settings: Player Setup")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- actions
- {
Event Player.Scrim_PlayerReady = False;
- 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;
}
actions
{
Create Dummy Bot(Hero(Reaper), Team 1, -1, Position Of(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;
- Is Button Held(Host Player, Button(Ultimate)) == 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, Global.Colour_TextTypeA, Global.Colour_TextTypeA, Global.Colour_TextTypeA,
Visible To and String, Visible Always);
- Create Dummy Bot(Hero(D.Va), Opposite Team Of(Team Of(Host Player)), -1, Host Player, Vector(0, 0, 0));
- }
- }
- 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, Global.Colour_TextTypeA,
Global.Colour_TextTypeA, Global.Colour_TextTypeB, Visible To and String, Default Visibility);
- 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, Null,
Global.Colour_TextTypeA, Null, Visible To and String, Default Visibility);
Create HUD Text(All Players(All Teams), Team 1, Null, Null, Left, 1, Global.Colour_TeamOne, Null, Null, Visible To and String,
- : 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);
Create HUD Text(All Players(All Teams), Team 2, Null, Null, Left, 3, Global.Colour_TeamTwo, Null, Null, 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, Global.Colour_TextTypeB, 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_PlayerReady ? Icon String(Checkmark) : Icon String(X), 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 ? Global.Colour_TeamOne : Global.Colour_TeamTwo, Global.Colour_TextTypeA,
Event Player.Scrim_PlayerReady ? Global.Colour_TextTypeC : Global.Colour_TextTypeB, Visible To String and Color,
- 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, Null, Null, Event Player.Scrim_PlayerReady ? Custom String("You are readied up") : Custom String(
"You are not readied up"), Top, 5.100, Null, Null,
Event Player.Scrim_PlayerReady ? Global.Colour_TextTypeC : Global.Colour_TextTypeB, 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, Null,
Global.Colour_TextTypeA, Null, String, Visible Never);
- 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, Null,
Global.Colour_TextTypeA, Null, 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,
Global.Colour_TextTypeA, Global.Colour_TextTypeA, Global.Colour_TextTypeA, String, Visible Never);
- 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)")
- rule("Setup: Set Player Ready/Unready")
- {
- 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, Global.Colour_TextTypeA, Global.Colour_TextTypeA, Global.Colour_TextTypeA,
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, Global.Colour_TextTypeA,
Global.Colour_TextTypeA, Global.Colour_TextTypeA, Visible To and String, Visible Never);
End;
}
}
rule("Setup: Captain Add Time")
{
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: Toggle 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
{
If(Event Player.Scrim_PlayerReady);
Event Player.Scrim_PlayerReady = False;
Else;
Event Player.Scrim_PlayerReady = True;
If(Global.Scrim_EnableReadyVoiceLine);
Communicate(Event Player, Ready);
End;
End;
- 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
- {
If(Number Of Players(All Teams) < Global.Scrim_MinimumPlayersToStart);
Small Message(All Players(All Teams), Custom String("Minimum number of players to start ({0}) not met",
Global.Scrim_MinimumPlayersToStart));
Abort;
End;
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
- {
If(Number Of Players(All Teams) < Global.Scrim_MinimumPlayersToStart);
Small Message(All Players(All Teams), Custom String("Minimum number of players to start ({0}) not met",
Global.Scrim_MinimumPlayersToStart));
Abort;
End;
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: Destroy All HUD Text when Match Starts")
- 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;
- (Match Round == 1 || Global.Scrim_RequireReadyEveryRound) == True;
- }
- actions
- {
- Wait(0.016, Ignore Condition);
Event Player.Scrim_PlayerReady = False;
}
}
rule("Scoreboard: Update Match Time")
{
event
{
Ongoing - Global;
}
actions
{
Global.Scrim_MatchTime = 0;
While(True);
Wait Until(Is Game In Progress, 99999);
Chase Global Variable At Rate(Scrim_MatchTime, 99999, 1, None);
Wait Until(!Is Game In Progress, 99999);
Stop Chasing Global Variable(Scrim_MatchTime);
End;
}
}
rule("Scoreboard: Create Match Time Display")
{
event
{
Ongoing - Global;
}
conditions
{
Is Game In Progress == True;
Global.Scrim_DisplayMatchTime == True;
}
actions
{
Wait(0.016, Ignore Condition);
If(Global.Scrim_ScoreboardSize == 0);
Create HUD Text(Null, Null, Custom String("{0} Match Time: {1}", Ability Icon String(Hero(Lúcio), Button(Ability 2)),
Custom String("{0}:{1}{2}", Round To Integer(Global.Scrim_MatchTime / 60, Down),
Global.Scrim_MatchTime % 60 < 10 ? Custom String("0") : Custom String(""), Round To Integer(Global.Scrim_MatchTime % 60,
Down))), Null, Left, 4, Null, Global.Colour_TextTypeA, Null, String, Visible Always);
Else;
Create HUD Text(Null, Null, Null, Custom String("{0} Match Time: {1}", Ability Icon String(Hero(Lúcio), Button(Ability 2)),
Custom String("{0}:{1}{2}", Round To Integer(Global.Scrim_MatchTime / 60, Down),
Global.Scrim_MatchTime % 60 < 10 ? Custom String("0") : Custom String(""), Round To Integer(Global.Scrim_MatchTime % 60,
Down))), Left, 4, Null, Null, Global.Colour_TextTypeA, String, Visible Always);
End;
}
}
rule("Scoreboard: Create Legend")
{
event
{
Ongoing - Global;
}
conditions
{
Is Game In Progress == True;
Global.Scrim_EnableSpecScoreboard == True;
Global.Scrim_DisplayScoreboardLegend == True;
}
actions
{
Wait(0.016, Ignore Condition);
If(Global.Scrim_ScoreboardSize == 0);
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, Global.Colour_TextTypeA, 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, Global.Colour_TextTypeA, 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, Global.Colour_TextTypeA, 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, Global.Colour_TextTypeA, 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, Global.Colour_TextTypeA, 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, Global.Colour_TextTypeA, Null, None, Visible Always);
End;
Else;
If(Global.Scrim_ScoreboardGroupMode == 0);
Create HUD Text(Null, Null, Null, Custom String("{0} {1}", Ability Icon String(Hero(Genji), Button(Ultimate)), Custom String(
"K • D • DD • DT • OA • UU")), Left, 1, Null, Null, Global.Colour_TextTypeA, None, Visible Always);
Create HUD Text(Null, Null, Null, Custom String("{0} {1}", Ability Icon String(Hero(Reinhardt), Button(Secondary Fire)),
Custom String("K • D • DD • DT • DB • UU")), Left, 2, Null, Null, Global.Colour_TextTypeA, None, Visible Always);
Create HUD Text(Null, Null, Null, Custom String("{0} {1}", Ability Icon String(Hero(Baptiste), Button(Ability 1)), Custom String(
"K • D • HP • DT • OA • UU")), Left, 3, Null, Null, Global.Colour_TextTypeA, None, Visible Always);
Else;
Create HUD Text(Null, Null, Null, Custom String("{0} {1}", Ability Icon String(Hero(Genji), Button(Ultimate)), Custom String(
"K • D • DD • DT • OA • UU")), Left, 1.100, Null, Null, Global.Colour_TextTypeA, None, Visible Always);
Create HUD Text(Null, Null, Null, Custom String("{0} {1}", Ability Icon String(Hero(Reinhardt), Button(Secondary Fire)),
Custom String("K • D • DD • DT • DB • UU")), Left, 1.200, Null, Null, Global.Colour_TextTypeA, None, Visible Always);
Create HUD Text(Null, Null, Null, Custom String("{0} {1}", Ability Icon String(Hero(Baptiste), Button(Ability 1)), Custom String(
"K • D • HP • DT • OA • UU")), Left, 1.300, Null, Null, Global.Colour_TextTypeA, None, Visible Always);
End;
End;
}
}
rule("Scoreboard: Create Player Entries (Small)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Game In Progress == True;
Global.Scrim_EnableSpecScoreboard == True;
Global.Scrim_ScoreboardSize == 0;
}
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), To Nearest)), 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 ? Global.Colour_TeamOne : Global.Colour_TeamTwo, 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), To Nearest)), 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 ? Global.Colour_TeamOne : Global.Colour_TeamTwo, 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), To Nearest)), 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 ? Global.Colour_TeamOne : Global.Colour_TeamTwo, Null,
Sort Order and String, Visible Always);
End;
}
}
rule("Scoreboard: Create Player Entries (Medium)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Game In Progress == True;
Global.Scrim_EnableSpecScoreboard == True;
Global.Scrim_ScoreboardSize == 1;
}
actions
{
Wait(0.016, Ignore Condition);
If(Global.Scrim_ScoreboardGroupMode == 0);
Create HUD Text(Null, 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), To Nearest)), 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))), 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,
Null, Team Of(Event Player) == Team 1 ? Global.Colour_TeamOne : Global.Colour_TeamTwo, Sort Order and String, Visible Always);
Else If(Global.Scrim_ScoreboardGroupMode == 1);
Create HUD Text(Null, Null, Null, Custom String("{1} • {2}", Null, 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),
To Nearest)), 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))), 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), Team Of(Event Player) == Team 1 ? Global.Colour_TeamOne : Global.Colour_TeamTwo,
Null, Global.Colour_TextTypeA, Sort Order and String, Visible Always);
Else;
Create HUD Text(Null, 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), To Nearest)), 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))), Left, Slot Of(Event Player) * 0.100 + (Team Of(Event Player) == Team 1 ? 2 : 3),
Null, Null, Team Of(Event Player) == Team 1 ? Global.Colour_TeamOne : Global.Colour_TeamTwo, Sort Order and String,
Visible Always);
End;
- Event Player.PlayerReady = False;
- Event Player.PlayerReadyIcon = Icon String(X);
- }
- }
rule("Scoreboard: Create Player Entries (Large)")
- rule("Scoreboard: Create HUD Text")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Is Game In Progress == True;
Global.Scrim_EnableSpecScoreboard == True;
Global.Scrim_ScoreboardSize == 2;
- (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, Hero Icon String(Hero Of(Event Player)), Event Player, Custom String("{1} • {2}", Null, 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), To Nearest)), 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))), 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), Team Of(
Event Player) == Team 1 ? Global.Colour_TeamOne : Global.Colour_TeamTwo, Team Of(Event Player)
== Team 1 ? Global.Colour_TeamOne : Global.Colour_TeamTwo, Global.Colour_TextTypeA, Sort Order and String, Visible Always);
Else If(Global.Scrim_ScoreboardGroupMode == 1);
Create HUD Text(Null, Hero Icon String(Hero Of(Event Player)), Event Player, Custom String("{1} • {2}", Null, 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), To Nearest)), 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))), 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), Team Of(
Event Player) == Team 1 ? Global.Colour_TeamOne : Global.Colour_TeamTwo, Team Of(Event Player)
== Team 1 ? Global.Colour_TeamOne : Global.Colour_TeamTwo, Global.Colour_TextTypeA, Sort Order and String, Visible Always);
Else;
Create HUD Text(Null, Hero Icon String(Hero Of(Event Player)), Event Player, Custom String("{1} • {2}", Null, 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), To Nearest)), 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))), Left, Slot Of(Event Player) * 0.100 + (Team Of(Event Player) == Team 1 ? 2 : 3),
Team Of(Event Player) == Team 1 ? Global.Colour_TeamOne : Global.Colour_TeamTwo, Team Of(Event Player)
== Team 1 ? Global.Colour_TeamOne : Global.Colour_TeamTwo, Global.Colour_TextTypeA, Sort Order and String, Visible Always);
End;
}
}
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(Ultimate)) == True;
Is Button Held(Host Player, Button(Ability 1)) == 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(Null, 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, Global.Colour_TextTypeA, Global.Colour_TextTypeA, Global.Colour_TextTypeA, 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;
- 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("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}", Global.Scrim_MatchTime, 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}", Global.Scrim_MatchTime, 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}", Global.Scrim_MatchTime, Match Round)));
End;
}
}
rule("Logs: Control Point Increment")
{
event
{
Ongoing - Global;
}
conditions
{
Global.Logs_EnableLogTracker == True;
Global.Logs_PointCaptureProgressStep > 0;
Is Game In Progress == True;
Point Capture Percentage >= Global.Logs_PointCaptureProgress + Global.Logs_PointCaptureProgressStep;
}
actions
{
Log To Inspector(Custom String(",point_progress,{0},{1}", Custom String("{0},{1}", Global.Scrim_MatchTime, Match Round),
Custom String("{0},{1},{2}", Current Game Mode == Game Mode(Control) ? Opposite Team Of(Control Mode Scoring Team) : (
Is Team On Offense(Team 1) ? Team 1 : Team 2), Objective Index, Point Capture Percentage)));
Global.Logs_PointCaptureProgress += Global.Logs_PointCaptureProgressStep;
}
}
rule("Logs: Payload Increment")
{
event
{
Ongoing - Global;
}
conditions
{
Global.Logs_EnableLogTracker == True;
Global.Logs_PayloadCaptureProgressStep > 0;
Is Game In Progress == True;
Payload Progress Percentage >= Global.Logs_PayloadCaptureProgress + Global.Logs_PayloadCaptureProgressStep;
}
actions
{
Log To Inspector(Custom String(",payload_progress,{0},{1}", Custom String("{0},{1}", Global.Scrim_MatchTime, Match Round),
Custom String("{0},{1},{2}", Is Team On Offense(Team 1) ? Team 1 : Team 2, Objective Index, Payload Progress Percentage)));
Global.Logs_PayloadCaptureProgress += Global.Logs_PayloadCaptureProgressStep;
}
}
rule("Logs: Reset Control Point Progress")
{
event
{
Ongoing - Global;
}
conditions
{
Global.Logs_EnableLogTracker == True;
Global.Logs_PointCaptureProgressStep > 0;
Is Game In Progress == True;
Point Capture Percentage == 0;
}
actions
{
Global.Logs_PointCaptureProgress = 0;
}
}
rule("Logs: Reset Payload Progress")
{
event
{
Ongoing - Global;
}
conditions
{
Global.Logs_EnableLogTracker == True;
Global.Logs_PayloadCaptureProgressStep > 0;
Is Game In Progress == True;
Payload Progress Percentage == 0;
}
actions
{
Global.Logs_PayloadCaptureProgress = 0;
}
}
rule("Logs: Objective Captured (Non-Control)")
{
event
{
Ongoing - Global;
}
conditions
{
Global.Logs_EnableLogTracker == True;
Global.Logs_TrackObjectiveCapture == 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},{1}", Global.Scrim_MatchTime, Match Round),
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;
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},{1}", Global.Scrim_MatchTime, Match Round),
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: 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}", Global.Scrim_MatchTime, 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 || Global.Logs_PlayerSummaryCount != 3) == True;
Hero Of(Event Player) != Event Player.Logs_LastHero;
Is Match Complete == False;
}
actions
{
If(Global.Logs_TrackHeroSwaps);
Log To Inspector(Custom String(",hero_swap,{0},{1},{2}", Global.Scrim_MatchTime, Custom String("{0},{1}", Team Of(Event Player),
Event Player), Custom String("{0},{1},{2}", Hero Of(Event Player), Event Player.Logs_LastHero,
Global.Scrim_MatchTime - Event Player.Logs_LastHeroTime)));
End;
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;
If(Array Contains(All Heroes, Hero Of(Event Player)) && Array Contains(All Heroes, Event Player.Logs_LastHero));
Call Subroutine(CalcHeroPlayedTime);
End;
Event Player.Logs_LastHero = Hero Of(Event Player);
Event Player.Logs_LastHeroTime = Global.Scrim_MatchTime;
}
}
rule("Logs SUBR: Calculate Hero Played Time")
{
event
{
Subroutine;
CalcHeroPlayedTime;
}
actions
{
Event Player.Logs_HeroesPlayedTimeArray[Index Of Array Value(Event Player.Logs_HeroesPlayedArray, Event Player.Logs_LastHero)
] += Global.Scrim_MatchTime - Event Player.Logs_LastHeroTime;
}
}
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}", Global.Scrim_MatchTime, 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}", Global.Scrim_MatchTime, 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}", Global.Scrim_MatchTime), 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}", Global.Scrim_MatchTime), 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}", Global.Scrim_MatchTime), 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}", Global.Scrim_MatchTime), 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}", Global.Scrim_MatchTime), 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}", Global.Scrim_MatchTime), 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}", Global.Scrim_MatchTime), 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}", Global.Scrim_MatchTime), 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}", Global.Scrim_MatchTime), 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}", Global.Scrim_MatchTime), 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}", Global.Scrim_MatchTime, 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}", Global.Scrim_MatchTime, 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}", Global.Scrim_MatchTime, 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: Mercy Resurrect")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.Logs_EnableLogTracker == True;
Global.Logs_TrackMercyRez == True;
Is Game In Progress == True;
Is Dead(Event Player) == True;
}
actions
{
Wait Until(Is Alive(Event Player), 99999);
Wait(0.240, Ignore Condition);
If(!Is In Spawn Room(Event Player) && Is Game In Progress);
Log To Inspector(Custom String(",mercy_rez,{0},{1}", Global.Scrim_MatchTime, Custom String("{0},{1}", Custom String("{0},{1},{2}",
Team Of(Event Player), Players On Hero(Hero(Mercy), Team Of(Event Player)), Hero(Mercy)), Custom String("{0},{1},{2}", Team Of(
Event Player), Event Player, Hero Of(Event Player)))));
End;
}
}
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}", Global.Scrim_MatchTime, 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;
Global.Logs_TrackMatchStartEnd == True;
Is Match Complete == True;
}
actions
{
Log To Inspector(Custom String(",match_end,{0},{1},{2}", Custom String("{0},{1}", Global.Scrim_MatchTime, Match Round),
Custom String("{0}", Team Score(Team 1)), Custom String("{0}", Team Score(Team 2))));
}
}
rule("Logs: Player Stat Summary")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.Logs_EnableLogTracker == True;
(Global.Logs_PlayerSummaryFrequency == 0 || (Global.Logs_PlayerSummaryFrequency == 1 && Is Match Complete)) == True;
Is Between Rounds == True;
}
actions
{
Call Subroutine(CalcHeroPlayedTime);
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}", Custom String("{0},{1}", Global.Scrim_MatchTime, Match Round),
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},{1}",
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)),
Event Player.Logs_HeroesPlayedTimeArray[Event Player.Logs_CurrentHeroIterator])))));
End;
Global.Logs_PlayerSummaryCount += 1;
- Declare Team Victory(Is Team On Offense(Team 1) ? Team 1 : Team 2);
- }
- }