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