Return to post
- settings
- {
- main
- {
Description: "■■■■■■■■■■■■■■■■■■■■■■ ■■■■ ScrimTime v1.21 ■■■■ ■■ Standard ■■ ■■ 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
{
disabled maps
{
Hanamura Winter
}
}
- Control
{
Score To Win: 3
disabled maps
{
Lijiang Tower Lunar New Year
}
}
- Escort
- Hybrid
{
disabled maps
{
Blizzard World Winter
Eichenwalde Halloween
Hollywood Halloween
King's Row Winter
}
}
- 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_RemoveAssemblingHeroes
7: Scrim_ReadyUpFreqMode
8: Scrim_SetupTimeOverride
9: Scrim_ReadyUpCaptainMode
10: Scrim_EnableReadyVoiceLine
11: Scrim_MinimumPlayersToStart
12: Scrim_SetupCountdownTime
13: Scrim_FreezeSetupTime
14: Scrim_AllowForceTeamReady
15: Scrim_ForceTeamReadyHoldTime
16: Scrim_MapCompletionMode
17: Scrim_ForceNonControlTwoRounds
18: Scrim_ForceControlThreeRounds
19: Scrim_TeamOneScore
20: Scrim_TeamTwoScore
21: Scrim_AllowDefendersTeleport
22: Scrim_EnableSpecScoreboard
23: Scrim_AllowHostHideScoreboard
24: Scrim_HideScoreboardID
25: Scrim_DisplayScoreboardLegend
26: Scrim_ScoreboardGroupMode
27: Scrim_ScoreboardSize
28: Scrim_DisplayMatchTime
29: Scrim_MatchTime
30: Scrim_SetupAddTimeCaptainMode
31: Scrim_SetupAddTimeStep
32: Scrim_SetupAddTimeMax
33: Scrim_DisplayServerLoad
34: Scrims_KeybindButtonArray
35: Scrims_KeybindCommand
36: Scrims_KeybindReady
37: Scrims_KeybindDefenderTeleport
38: Scrims_KeybindAddSetupTime
39: Logs_EnableLogTracker
40: Logs_OutputFormat
41: Logs_AutoMatchEndTime
42: Logs_CurrentObjectiveIndex
43: Logs_CurrentControlScoringTeam
44: Logs_ControlMapArray
45: Logs_ControlStageArray
46: Logs_AbilityNameArray
47: Logs_TrackKills
48: Logs_TrackHeroSwaps
49: Logs_TrackObjectiveCapture
50: Logs_PointCaptureProgressStep
51: Logs_PayloadCaptureProgressStep
52: Logs_PointCaptureProgress
53: Logs_PayloadCaptureProgress
54: Logs_TrackAbilities
55: Logs_TrackUltimates
56: Logs_TrackOffensiveAssists
57: Logs_TrackDefensiveAssists
58: Logs_TrackDamage
59: Logs_TrackHealing
60: Logs_TrackDvaDemechs
61: Logs_TrackEchoDuplicates
62: Logs_TrackRoundStartEnd
63: Logs_TrackMatchStartEnd
64: Logs_PlayerSummaryFrequency
65: Logs_PlayerSummaryCount
66: 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: Scrim_CurrentHoldTime
2: Logs_LastHero
3: Logs_LastHeroTime
4: Logs_HeroesPlayedTimeArray
5: Logs_HeroesPlayedArray
6: Logs_OffensiveAssists
7: Logs_DefensiveAssists
8: Logs_CurrentHeroIterator
9: Logs_CurrentHeroIterated
10: Logs_UltimateID
11: Logs_DuplicateID
}
subroutines
{
0: CalcHeroPlayedTime
}
rule("Settings: Ready Up Options")
{
event
{
Ongoing - Global;
}
actions
{
Global.Scrim_ReadyUpFreqMode = Workshop Setting Combo(Custom String("Ready Up System"), Custom String("Enable Ready Up System"), 1,
Array(Custom String("Only Round One"), Custom String("Every Round"), Custom String("Off")), 0);
Global.Scrim_ReadyUpCaptainMode = Workshop Setting Combo(Custom String("Ready Up System"), Custom String("Who Needs to Ready Up"),
1, Array(Custom String("Only Players in First Slot"), Custom String("All Players")), 1);
Global.Scrim_AllowForceTeamReady = Workshop Setting Toggle(Custom String("Ready Up System"), Custom String(
"Allow Players to Force Team Ready"), True, 2);
Global.Scrim_ForceTeamReadyHoldTime = Workshop Setting Integer(Custom String("Ready Up System"), Custom String(
"Force Team Ready Button Hold Time"), 3, 1, 5, 3);
Global.Scrim_SetupCountdownTime = Workshop Setting Integer(Custom String("Ready Up System"), Custom String("Countdown Timer"), 5,
5, 10, 4);
Global.Scrim_MinimumPlayersToStart = Workshop Setting Integer(Custom String("Ready Up System"), Custom String(
"Minimum Number of Players in Game"), 12, 1, 12, 5);
Global.Scrim_FreezeSetupTime = Workshop Setting Toggle(Custom String("Ready Up System"), Custom String("Freeze Setup Timer"),
False, 6);
Global.Scrim_EnableReadyVoiceLine = Workshop Setting Toggle(Custom String("Ready Up System"), Custom String(
"Play Voice Line When Readying"), True, 7);
}
- 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_AllowDefendersTeleport = Workshop Setting Toggle(Custom String("Setup Phase"), Custom String(
"Allow Defenders to Teleport Between Objective and Spawn"), True, 1);
Global.Scrim_SetupTimeOverride = Workshop Setting Integer(Custom String("Setup Phase"), Custom String("Setup Time Override"), 60,
45, 120, 2);
Global.Scrim_SetupAddTimeCaptainMode = Workshop Setting Combo(Custom String("Setup Phase"), Custom String(
"Who Can Add Setup Time"), 1, Array(Custom String("Only Players in First Slot"), Custom String("All Players"), Custom String(
"Off")), 3);
Global.Scrim_SetupAddTimeStep = Workshop Setting Integer(Custom String("Setup Phase"), Custom String("Setup Time Added"), 30, 1,
60, 4);
Global.Scrim_SetupAddTimeMax = Workshop Setting Integer(Custom String("Setup Phase"), Custom String("Setup Time Maximum"), 90, 45,
600, 5);
}
}
rule("Settings: Map Completion Options")
{
event
{
Ongoing - Global;
}
actions
{
Global.Scrim_MapCompletionMode = Workshop Setting Toggle(Custom String("Map Completion"), Custom String(
"Ensure Full Map is Attacked on Round 2 for Non-Control Maps"), True, 0);
Global.Scrim_ForceNonControlTwoRounds = Workshop Setting Combo(Custom String("Map Completion"), Custom String(
"End Non-Control Maps After Two Rounds"), 0, Array(Custom String("If either team fails to complete map"), Custom String(
"Always"), Custom String("Off")), 1);
Global.Scrim_ForceControlThreeRounds = Workshop Setting Toggle(Custom String("Map Completion"), Custom String(
"End Non-Control Maps After Three Rounds"), True, 2);
}
}
rule("Settings: Spectator Scoreboard Options")
{
event
{
Ongoing - Global;
}
actions
{
Global.Scrim_EnableSpecScoreboard = Workshop Setting Toggle(Custom String("Spectator Scoreboard"), 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);
- 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);
- Global.Scrim_DebugMode = Workshop Setting Toggle(Custom String("Debug Options"), Custom String("Enable Scrim Debug Mode"), False,
- 0);
- }
- }
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_KeybindReady = Global.Scrims_KeybindButtonArray[Workshop Setting Combo(Custom String("Keybinds"), Custom String(
"Ready Up Toggle / Force Team Ready"), 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_KeybindAddSetupTime = Global.Scrims_KeybindButtonArray[Workshop Setting Combo(Custom String("Keybinds"),
Custom String("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("Initialisation: 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("Initialisation: 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("HUD Setup: Top Left Info")
- rule("Match: Remove Assembling Heroes")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
Global.Scrim_ReadyUpFreqMode != 2;
(Match Round == 1 || Global.Scrim_ReadyUpFreqMode == 1) == True;
Is In Setup == 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, Global.Scrim_ReadyUpCaptainMode == 0 ? Custom String(
"Countdown will commence when {0} and {1} are ready", Players In Slot(0, Team 1), Players In Slot(0, Team 2)) : Custom String(
"Countdown will commence when all players are ready [{0}/{1}]", Count Of(Filtered Array(All Players(All Teams),
Current Array Element.Scrim_PlayerReady)), Count Of(All Players(All Teams))), Null, Left, 0.100, Null, Global.Colour_TextTypeA,
Null, Visible To and String, Default Visibility);
Create HUD Text(All Players(All Teams), Null, Null, Team 1, Left, 1, Null, Null, Global.Colour_TeamOne, Visible To and String,
Default Visibility);
Create HUD Text(All Players(All Teams), Null, Null, Team 2, Left, 3, Null, Null, Global.Colour_TeamTwo, Visible To and String,
Default Visibility);
If(Global.Scrim_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);
End;
}
}
rule("HUD Setup: Ready Toggle")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.Scrim_ReadyUpFreqMode != 2;
(Match Round == 1 || Global.Scrim_ReadyUpFreqMode == 1) == True;
Is In Setup == True;
}
actions
{
If(Global.Scrim_ReadyUpCaptainMode == 1 || (Global.Scrim_ReadyUpCaptainMode == 0 && Slot Of(Event Player) == 0));
Create HUD Text(All Players(All Teams), Null, Custom String(" {0} {1}", Event Player.Scrim_PlayerReady ? Custom String("•")
: Custom String("•"), Event Player), Null, Left, (Team Of(Event Player) == Team 1 ? 2 : 4) + Slot Of(Event Player) * 0.100,
Null, Event Player.Scrim_PlayerReady ? Global.Colour_TextTypeC : Global.Colour_TextTypeB, Null, Visible To String and Color,
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);
If(Global.Scrim_ReadyUpCaptainMode == 1 && Global.Scrim_AllowForceTeamReady);
Create HUD Text(Event Player, Null, Custom String("[{0} + {1}] (Press) {2} / (Hold) Force Team Ready", Input Binding String(
Global.Scrims_KeybindCommand), Input Binding String(Global.Scrims_KeybindReady),
Event Player.Scrim_PlayerReady ? Custom String("Unready") : Custom String("Ready Up")), Null, Top, 5.200, Null, Is Button Held(
Event Player, Global.Scrims_KeybindCommand) && Is Button Held(Event Player, Global.Scrims_KeybindReady)
? Global.Colour_TextTypeB : Global.Colour_TextTypeA, Null, String and Color, Visible Never);
Else;
Create HUD Text(Event Player, Null, Custom String("[{0} + {1}] {2}", Input Binding String(Global.Scrims_KeybindCommand),
Input Binding String(Global.Scrims_KeybindReady), Event Player.Scrim_PlayerReady ? Custom String("Unready") : Custom String(
"Ready Up")), Null, Top, 5.200, Null, Is Button Held(Event Player, Global.Scrims_KeybindCommand) && Is Button Held(
Event Player, Global.Scrims_KeybindReady) ? Global.Colour_TextTypeB : Global.Colour_TextTypeA, Null, String and Color,
Visible Never);
End;
End;
}
}
rule("HUD Setup: Force Ready Hold Bar")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.Scrim_ReadyUpFreqMode != 2;
Global.Scrim_AllowForceTeamReady == True;
- Is Assembling Heroes == True;
- Global.Scrim_RemoveAssemblingHeroes == True;
- }
- actions
- {
Create Progress Bar HUD Text(Event Player.Scrim_CurrentHoldTime >= 0.200 ? Event Player : Null,
Event Player.Scrim_CurrentHoldTime / Global.Scrim_ForceTeamReadyHoldTime * 100, Null, Top, 5.500, Global.Colour_TextTypeA,
Null, Visible To Values and Color, Visible Never);
- Set Match Time(0);
- }
- }
rule("HUD Setup: Defender Teleport")
- rule("Debug: Force Ready (Interact + Ability 1)")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
Global.Scrim_AllowDefendersTeleport == True;
- Is In Setup == True;
Is Team On Defense(Team Of(Event Player)) == True;
- Is Button Held(Host Player, Button(Interact)) == True;
- Is Button Held(Host Player, Button(Ability 1)) == True;
- Global.Scrim_DebugMode == True;
- }
- actions
- {
Create HUD Text(Event Player, Null, Custom String("[{0} + {1}] {2}", Input Binding String(Global.Scrims_KeybindCommand),
Input Binding String(Global.Scrims_KeybindDefenderTeleport), Is In Spawn Room(Event Player) ? Custom String(
"Teleport to the Objective") : Custom String("Teleport Back to Spawn")), Null, Top, 5.300, Null, Is Button Held(Event Player,
Global.Scrims_KeybindCommand) && Is Button Held(Event Player, Global.Scrims_KeybindDefenderTeleport)
? Global.Colour_TextTypeB : Global.Colour_TextTypeA, Null, String and Color, Visible Never);
- 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("HUD Setup: Add Setup Time")
- rule("Debug: Reduce Timer to 5 (Interact + Alt Fire)")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
Global.Scrim_SetupAddTimeCaptainMode != 2;
Is In Setup == True;
- Is Button Held(Host Player, Button(Interact)) == True;
- Is Button Held(Host Player, Button(Secondary Fire)) == True;
- Global.Scrim_DebugMode == True;
- }
- actions
- {
If(Slot Of(Event Player) == 0 || Global.Scrim_SetupAddTimeCaptainMode == 1);
Create HUD Text(Event Player, Null, Custom String("[{0} + {1}] Add {2} Sec to Setup Timer ", Input Binding String(
Global.Scrims_KeybindCommand), Input Binding String(Global.Scrims_KeybindAddSetupTime), Global.Scrim_SetupAddTimeStep), Null,
Top, 5.400, Null, Is Button Held(Event Player, Global.Scrims_KeybindCommand) && Is Button Held(Event Player,
Global.Scrims_KeybindAddSetupTime) ? Global.Colour_TextTypeB : Global.Colour_TextTypeA, Null, String and Color, 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_SetupAddTimeStep), Null, Top, 5.400, Global.Colour_TextTypeA, Global.Colour_TextTypeA,
Global.Colour_TextTypeA, Visible To and String, Visible Never);
End;
- Set Match Time(5);
- }
- }
rule("Setup: Remove Assembling Heroes")
- rule("Debug: Spawn Test Bot (Interact + Ultimate)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
Global.Scrim_RemoveAssemblingHeroes == True;
Is Assembling Heroes == True;
- Global.Scrim_DebugMode == True;
- Is Button Held(Host Player, Button(Interact)) == True;
- Is Button Held(Host Player, Button(Ultimate)) == True;
- }
- actions
- {
Set Match Time(0);
- Create Dummy Bot(Hero(D.Va), Opposite Team Of(Team Of(Host Player)), -1, Host Player, Vector(0, 0, 0));
- }
- }
rule("Setup: Override Setup Time")
- rule("Setup: Begin")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is In Setup == True;
- }
- actions
- {
Wait(0.016, Ignore Condition);
Set Match Time(Global.Scrim_SetupTimeOverride);
- If(Match Round == 1 || Global.Scrim_RequireReadyEveryRound == True);
- Set Match Time(3600);
- End;
- }
- }
rule("Setup: Freeze Setup Time")
- rule("Setup: HUD Setup")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
Global.Scrim_ReadyUpFreqMode != 2;
Global.Scrim_FreezeSetupTime == True;
(Match Round == 1 || Global.Scrim_ReadyUpFreqMode == 1) == True;
- Is In Setup == True;
- (Match Round == 1 || Global.Scrim_RequireReadyEveryRound) == True;
- }
- actions
- {
Pause Match Time;
- 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 || Global.Logs_DebugMode);
- Create HUD Text(All Players(All Teams), Null, Null, Custom String(
- "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: Add Setup Time")
- rule("Setup: HUD Setup (Player)")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
Global.Scrim_SetupAddTimeCaptainMode != 2;
- Is In Setup == True;
(Slot Of(Event Player) == 0 || Global.Scrim_SetupAddTimeCaptainMode == 1) == True;
Is Button Held(Event Player, Global.Scrims_KeybindCommand) == True;
Is Button Held(Event Player, Global.Scrims_KeybindAddSetupTime) == True;
- (Match Round == 1 || Global.Scrim_RequireReadyEveryRound) == True;
- }
- actions
- {
If(Match Time < Global.Scrim_SetupAddTimeMax);
Set Match Time(Min(Global.Scrim_SetupAddTimeMax + 0.900, Global.Scrim_SetupAddTimeStep + Match Time));
Small Message(All Players(All Teams), Custom String("{0} extended setup time by {1} sec", Event Player,
Global.Scrim_SetupAddTimeStep));
Else;
Small Message(Event Player, Custom String("Setup timer cannot be extended beyond {0}", Custom String("{0}:{1}{2}",
Round To Integer(Global.Scrim_SetupAddTimeMax / 60, Down), Global.Scrim_SetupAddTimeMax % 60 < 10 ? Custom String("0")
: Custom String(""), Global.Scrim_SetupAddTimeMax % 60)));
- If(!Global.Scrim_CaptainOnlyMode || (Global.Scrim_CaptainOnlyMode && Slot Of(Event Player) == 0));
- 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 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 teams") : Custom String("all players")), Null, Top, 5.400, Color(White),
- Color(White), Color(White), Visible To and String, Visible Never);
- }
- }
rule("Setup: Teleport to Objective/Spawn (Defenders Only)")
- rule("Setup: Set Player Ready/Unready")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
Global.Scrim_AllowDefendersTeleport == True;
Is Team On Defense(Team Of(Event Player)) == True;
- Is In Setup == True;
Is Button Held(Event Player, Global.Scrims_KeybindCommand) == True;
Is Button Held(Event Player, Global.Scrims_KeybindDefenderTeleport) == 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(Is In Spawn Room(Event Player));
Teleport(Event Player, Nearest Walkable Position(Objective Position(Objective Index)));
Small Message(Event Player, Custom String("Teleported to Objective"));
Else;
Teleport(Event Player, Spawn Points(Team Of(Event Player)));
Small Message(Event Player, Custom String("Teleported to Spawn"));
End;
- Event Player.PlayerReady = Event Player.PlayerReady ? False : True;
- Event Player.PlayerReadyIcon = Event Player.PlayerReady ? Icon String(Checkmark) : Icon String(X);
- }
- }
rule("Setup: Toggle Player Ready / Force Team Ready")
- rule("Setup: Teleport to Objective/Spawn (Defenders Only)")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
Global.Scrim_ReadyUpFreqMode != 2;
(Match Round == 1 || Global.Scrim_ReadyUpFreqMode == 1) == True;
(Slot Of(Event Player) == 0 || Global.Scrim_ReadyUpCaptainMode == 1) == True;
- Is In Setup == True;
Is Button Held(Event Player, Global.Scrims_KeybindCommand) == True;
Is Button Held(Event Player, Global.Scrims_KeybindReady) == True;
- Global.Scrim_AllowDefendersTeleport == True;
- Is Team On Defense(Team Of(Event Player)) == True;
- Is Button Held(Event Player, Button(Interact)) == True;
- Is Button Held(Event Player, Button(Jump)) == True;
- }
- actions
- {
If(Global.Scrim_ReadyUpCaptainMode == 1 && Global.Scrim_AllowForceTeamReady);
Event Player.Scrim_CurrentHoldTime = 0;
Chase Player Variable Over Time(Event Player, Scrim_CurrentHoldTime, Global.Scrim_ForceTeamReadyHoldTime,
Global.Scrim_ForceTeamReadyHoldTime, None);
Wait Until(!(Is Button Held(Event Player, Global.Scrims_KeybindCommand) && Is Button Held(Event Player,
Global.Scrims_KeybindReady)), Global.Scrim_ForceTeamReadyHoldTime);
Stop Chasing Player Variable(Event Player, Scrim_CurrentHoldTime);
Event Player.Scrim_CurrentHoldTime = 0;
If(Is Button Held(Event Player, Global.Scrims_KeybindCommand) && Is Button Held(Event Player, Global.Scrims_KeybindReady));
If(Is In Setup);
Small Message(All Players(All Teams), Custom String("{0} forced {1} ready", Event Player, Team Of(Event Player)));
All Players(Team Of(Event Player)).Scrim_PlayerReady = True;
If(Global.Scrim_EnableReadyVoiceLine);
Communicate(Event Player, Go);
End;
End;
Abort;
End;
End;
If(Event Player.Scrim_PlayerReady);
Event Player.Scrim_PlayerReady = False;
- If(Is In Spawn Room(Event Player));
- Teleport(Event Player, Objective Position(Objective Index));
- Small Message(Event Player, Custom String("Teleported to Objective"));
- Else;
Event Player.Scrim_PlayerReady = True;
If(Global.Scrim_EnableReadyVoiceLine);
Communicate(Event Player, Ready);
End;
- Respawn(Event Player);
- Small Message(Event Player, Custom String("Teleported to Spawn"));
- 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_ReadyUpFreqMode != 2;
Global.Scrim_ReadyUpCaptainMode == 0;
(Match Round == 1 || Global.Scrim_ReadyUpFreqMode == 1) == True;
- Is In Setup == True;
Players In Slot(0, Team 1).Scrim_PlayerReady == True;
Players In Slot(0, Team 2).Scrim_PlayerReady == True;
- (Match Round == 1 || Global.Scrim_RequireReadyEveryRound) == 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("Both Captains ready, but minimum number of players ({0}) not met",
Global.Scrim_MinimumPlayersToStart));
Abort;
End;
Small Message(All Players(All Teams), Custom String("Both Captains ready, commencing countdown"));
If(Global.Scrim_FreezeSetupTime);
Unpause Match Time;
End;
- 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(Global.Scrim_FreezeSetupTime);
Pause Match Time;
End;
Set Match Time(Global.Scrim_SetupTimeOverride);
- 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_ReadyUpFreqMode != 2;
Global.Scrim_ReadyUpCaptainMode == 1;
(Match Round == 1 || Global.Scrim_ReadyUpFreqMode == 1) == True;
- Is In Setup == True;
Is True For All(All Players(All Teams), Current Array Element.Scrim_PlayerReady) == True;
- (Match Round == 1 || Global.Scrim_RequireReadyEveryRound) == True;
- 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("All players ready, but minimum number of players ({0}) not met",
Global.Scrim_MinimumPlayersToStart));
Abort;
End;
Small Message(All Players(All Teams), Custom String("All players ready, commencing countdown"));
If(Global.Scrim_FreezeSetupTime);
Unpause Match Time;
End;
- 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"));
If(Global.Scrim_FreezeSetupTime);
Pause Match Time;
End;
Set Match Time(Global.Scrim_SetupTimeOverride);
End;
}
}
rule("Game: Clean Up HUD Text")
{
event
{
Ongoing - Global;
}
actions
{
While(True);
Wait Until(Is Game In Progress, 99999);
Destroy All HUD Text;
Wait Until(Is Between Rounds, 99999);
Destroy All HUD Text;
End;
}
}
rule("Game: Reset Player Ready Status")
{
event
{
Ongoing - Global;
}
conditions
{
Global.Scrim_ReadyUpFreqMode != 2;
Is Game In Progress == True;
}
actions
{
Wait(0.016, Ignore Condition);
All Players(All Teams).Scrim_PlayerReady = False;
Stop Chasing Player Variable(All Players(All Teams), Scrim_CurrentHoldTime);
All Players(All Teams).Scrim_CurrentHoldTime = 0;
}
}
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
{
Global.Scrim_DisplayMatchTime == True;
Is Game In Progress == 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);
- 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("ScoreboardSD: Create Legend")
- rule("Game: Begin")
- {
- 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("ScoreboardSD: 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("ScoreboardSD: Create Player Entries (Medium)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Game In Progress == True;
Global.Scrim_EnableSpecScoreboard == True;
Global.Scrim_ScoreboardSize == 1;
- (Match Round == 1 || Global.Scrim_RequireReadyEveryRound) == True;
- }
- 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("{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)) * 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);
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;
- Destroy All HUD Text;
- }
- }
rule("ScoreboardSD: Create Player Entries (Large)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Game In Progress == True;
Global.Scrim_EnableSpecScoreboard == True;
Global.Scrim_ScoreboardSize == 2;
}
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;
}
}
disabled rule("ScoreboardT2: Create Legend")
{
event
{
Ongoing - Global;
}
conditions
{
Global.Scrim_EnableSpecScoreboard == True;
Global.Scrim_DisplayScoreboardLegend == True;
Is Game In Progress == 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 • E • DD • DT • 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 • E • DD • DT • 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 • E • DD • HP • 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 • E • DD • DT • 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 • E • DD • DT • 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 • E • DD • HP • 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 • E • DD • DT • 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 • E • DD • DT • 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 • E • DD • HP • 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 • E • DD • DT • 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 • E • DD • DT • 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 • E • DD • HP • UU")), Left, 1.300, Null, Null, Global.Colour_TextTypeA, None, Visible Always);
End;
End;
}
}
disabled rule("ScoreboardT2: Create Player Entries (Small)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.Scrim_EnableSpecScoreboard == True;
Global.Scrim_ScoreboardSize == 0;
Is Game In Progress == 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), Player Stat(Event Player,
Eliminations)), Custom String("{0} • {1} • {2}", Round To Integer(Player Stat(Event Player, Hero Damage Dealt), To Nearest),
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, Damage Taken), To Nearest), 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;
}
}
disabled rule("ScoreboardT2: Create Player Entries (Medium)")
- rule("Game: Reset Player Ready Status")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
Global.Scrim_EnableSpecScoreboard == True;
Global.Scrim_ScoreboardSize == 1;
- Is Game In Progress == True;
- (Match Round == 1 || Global.Scrim_RequireReadyEveryRound) == True;
- }
- 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("{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)) * 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);
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);
- }
- }
disabled rule("ScoreboardT2: Create Player Entries (Large)")
- rule("Scoreboard: Create HUD Text")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
Global.Scrim_EnableSpecScoreboard == True;
Global.Scrim_ScoreboardSize == 2;
- Is Game In Progress == 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, 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), Player Stat(Event Player,
Eliminations)), Custom String("{0} • {1} • {2}", Round To Integer(Player Stat(Event Player, Hero Damage Dealt), To Nearest),
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, Damage Taken), To Nearest), 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;
- 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")
- rule("Round End: Ensure Map Completion (Map Completion Mode)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
Global.Scrim_EnableSpecScoreboard == True;
Global.Scrim_AllowHostHideScoreboard == True;
Is Game In Progress == 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;
}
}
rule("Map Completion: Save Team Scores on Round End")
{
event
{
Ongoing - Global;
}
conditions
{
Current Game Mode != Game Mode(Control);
Is Between Rounds == True;
}
actions
{
If(Is Team On Offense(Team 1));
Global.Scrim_TeamOneScore = Team Score(Team 1);
Else;
Global.Scrim_TeamTwoScore = Team Score(Team 2);
End;
}
}
rule("Map Completion: Ensure Map Completion (Non-Control)")
{
event
{
Ongoing - Global;
}
conditions
{
Global.Scrim_MapCompletionMode == True;
- 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("Setting {0} score to {1} to ensure map completion", Is Team On Offense(Team 1)
- 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("Setting {0} score to {1} to ensure map completion", Is Team On Offense(Team 1)
- 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("Map Completion: Force Match End After Two Rounds (Non-Control)")
- rule("Round End: Force Match End After Two Rounds (Map Completion Mode)")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
Global.Scrim_ForceNonControlTwoRounds != 2;
Current Game Mode != Game Mode(Control);
- Is Between Rounds == True;
- Current Game Mode != Game Mode(Control);
- Match Round == 2;
- Global.Scrim_MapCompleteMode == True;
- Global.Scrim_ForceMatchEndAftTwoRounds == True;
- }
- actions
- {
If(Global.Scrim_ForceNonControlTwoRounds == 0 && Global.Scrim_TeamOneScore + Global.Scrim_TeamTwoScore == (
Current Game Mode == Game Mode(Assault) ? 4 : 6));
Small Message(All Players(All Teams), Custom String("Both teams completed map, match will proceed as normal"));
Else;
Small Message(All Players(All Teams), Custom String("Concluding match after two rounds"));
Wait(1, Ignore Condition);
Declare Match Draw;
End;
}
}
rule("Map Completion: Force Match End After Three Rounds (Control)")
{
event
{
Ongoing - Global;
}
conditions
{
Global.Scrim_ForceControlThreeRounds == True;
Current Game Mode == Game Mode(Control);
Team Score(Team 1) + Team Score(Team 2) == 3;
}
actions
{
Small Message(All Players(All Teams), Custom String("Concluding match after three rounds", Is Team On Offense(Team 1)
? Team 1 : Team 2, 2));
- 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 Team Victory(Team Score(Team 1) > Team Score(Team 2) ? Team 1 : Team 2);
}
}
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},{2}", Custom String("{0},{1},{2}", Global.Scrim_MatchTime, Match Round,
Current Game Mode != Game Mode(Control) ? (Is Team On Offense(Team 1) ? Team 1 : Team 2) : Null), Custom String("{0},{1}",
Team Score(Team 1), Team Score(Team 2)), Custom String("{0}", Objective Index)));
Wait Until(Is Game In Progress, 99999);
Log To Inspector(Custom String(",setup_complete,{0}", Custom String("{0},{1},{2}", Global.Scrim_MatchTime, Match Round,
Match Time)));
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},{2}", Global.Scrim_MatchTime, Match Round,
Current Game Mode != Game Mode(Control) ? (Is Team On Offense(Team 1) ? Team 1 : Team 2) : Null), Custom String("{0},{1}",
Team Score(Team 1), Team Score(Team 2)), Custom String("{0},{1},{2}", Objective Index, Custom String("{0},{1}",
Control Mode Scoring Percentage(Team 1), Control Mode Scoring Percentage(Team 2)), Match Time)));
}
}
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: 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},{2}", Null,
Null, Match Time)));
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},{1}", Global.Scrim_MatchTime, Match Round),
Custom String("{0},{1}", Control Mode Scoring Team, Objective Index), Custom String("{0},{1},{2}",
Control Mode Scoring Percentage(Team 1), Control Mode Scoring Percentage(Team 2), Match Time)));
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 Spawn/Swap")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.Logs_EnableLogTracker == True;
(Global.Logs_TrackHeroSwaps || Global.Logs_PlayerSummaryCount != 2) == True;
Hero Of(Event Player) != Event Player.Logs_LastHero;
Is Match Complete == False;
}
actions
{
If(Global.Logs_TrackHeroSwaps && Array Contains(All Heroes, Hero Of(Event Player)));
If(Array Contains(All Heroes, Event Player.Logs_LastHero));
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)));
Else;
Log To Inspector(Custom String(",hero_spawn,{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;
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
{
Event Player.Logs_UltimateID += 1;
If(Hero Of(Event Player) == Hero(D.Va) && Is In Alternate Form(Event Player) && Global.Logs_TrackDvaDemechs);
Log To Inspector(Custom String(",remech_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},{1}", Hero Being Duplicated(
Event Player), Event Player.Logs_UltimateID)));
Else;
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},{1}", Hero Being Duplicated(
Event Player), Event Player.Logs_UltimateID)));
End;
}
}
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;
Hero Of(Event Player) != Hero(D.Va);
Is Game In Progress == True;
}
actions
{
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},{1}", Hero Being Duplicated(
Event Player), Event Player.Logs_UltimateID)));
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},{1}", Hero Being Duplicated(
Event Player), Event Player.Logs_UltimateID)));
}
}
rule("Logs: D.Va Remech/Self-Destruct Used")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.Logs_EnableLogTracker == True;
Is Using Ultimate(Event Player) == True;
Hero Of(Event Player) == Hero(D.Va);
Is Game In Progress == True;
}
actions
{
Wait(1.740, Ignore Condition);
If(Global.Logs_TrackDvaDemechs && !Is In Alternate Form(Event Player));
Log To Inspector(Custom String(",dva_remech,{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}",
Event Player.Logs_UltimateID)));
Else If(Global.Logs_TrackUltimates);
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},{1}", Hero Being Duplicated(
Event Player), Event Player.Logs_UltimateID)));
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},{1}", Hero Being Duplicated(
Event Player), Event Player.Logs_UltimateID)));
End;
}
}
rule("Logs: Echo Duplicate")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.Logs_EnableLogTracker == True;
Global.Logs_TrackEchoDuplicates == True;
Is Game In Progress == True;
Is Duplicating(Event Player) == True;
}
actions
{
Event Player.Logs_DuplicateID = Event Player.Logs_UltimateID;
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},{1}", Hero Being Duplicated(Event Player),
Event Player.Logs_DuplicateID)));
Wait Until(!Is Duplicating(Event Player), 99999);
Log To Inspector(Custom String(",echo_duplicate_end,{0},{1},{2}", Global.Scrim_MatchTime, Custom String("{0},{1},{2}", Team Of(
Event Player), Event Player, Hero Of(Event Player)), Event Player.Logs_DuplicateID));
}
}
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: 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;
}
}
rule("Debug: Force Ready (Interact + Ability 1)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.Scrim_DebugMode == True;
Is In Setup == True;
Is Button Held(Host Player, Button(Interact)) == True;
Is Button Held(Host Player, Button(Ability 1)) == True;
}
actions
{
All Players(All Teams).Scrim_PlayerReady = True;
}
}
rule("Debug: Reduce Timer to 5 (Interact + Alt Fire)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.Scrim_DebugMode == True;
Is Button Held(Host Player, Button(Interact)) == True;
Is Button Held(Host Player, Button(Secondary Fire)) == True;
}
actions
{
Set Match Time(5);
}
}
rule("Debug: Spawn Test Bot (Interact + Melee)")
{
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), Opposite Team Of(Team Of(Host Player)), -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(All Teams);
}
}
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, Global.Colour_TextTypeA, Global.Colour_TextTypeA, Global.Colour_TextTypeA,
Visible To and String, Visible Always);
- Declare Team Victory(Is Team On Offense(Team 1) ? Team 1 : Team 2);
- }
- }