Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ ▩▩▩▩ LogTime v1.10 ▩▩▩▩ ▩▩ workshop.codes/logtime ▩▩ ▩▩ Configure in Workshop Settings ▩▩ ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩"
  • Description: "■■■■■■■■■■■■■■■■■■■■■■ ■■■■ LogTime v1.20 ■■■■ ■■ Standard ■■ ■■ workshop.codes/scrimtime ■■ ■■ Configure in Workshop Settings ■■ ■■ Ready Up: Interact + Reload ■■ ■■■■■■■■■■■■■■■■■■■■■■"
  • }
  • lobby
  • {
  • Map Rotation: After A Game
  • 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:
  • 100: Scrim_MatchTime
  • 101: Logs_EnableLogTracker
  • 102: Logs_OutputFormat
  • 103: Logs_CurrentObjectiveIndex
  • 104: Logs_CurrentControlScoringTeam
  • 105: Logs_ControlMapArray
  • 106: Logs_ControlStageArray
  • 107: Logs_AbilityNameArray
  • 108: Logs_TrackKills
  • 109: Logs_TrackHeroSwaps
  • 110: Logs_TrackObjectiveCapture
  • 111: Logs_PointCaptureProgressStep
  • 112: Logs_PayloadCaptureProgressStep
  • 113: Logs_PointCaptureProgress
  • 114: Logs_PayloadCaptureProgress
  • 115: Logs_TrackAbilities
  • 116: Logs_TrackUltimates
  • 117: Logs_TrackOffensiveAssists
  • 118: Logs_TrackDefensiveAssists
  • 119: Logs_TrackDamage
  • 120: Logs_TrackHealing
  • 121: Logs_TrackDvaDemechs
  • 122: Logs_TrackEchoDuplicates
  • 123: Logs_TrackRoundStartEnd
  • 124: Logs_TrackMatchStartEnd
  • 125: Logs_PlayerSummaryFrequency
  • 126: Logs_PlayerSummaryCount
  • 127: Logs_TrackMercyRez
  • 105: Logs_TrackKills
  • 106: Logs_TrackHeroSwaps
  • 107: Logs_TrackObjectiveCapture
  • 108: Logs_PointCaptureProgressStep
  • 109: Logs_PayloadCaptureProgressStep
  • 110: Logs_PointCaptureProgress
  • 111: Logs_PayloadCaptureProgress
  • 112: Logs_TrackAbilities
  • 113: Logs_TrackUltimates
  • 114: Logs_TrackOffensiveAssists
  • 115: Logs_TrackDefensiveAssists
  • 116: Logs_TrackDamage
  • 117: Logs_TrackHealing
  • 118: Logs_TrackDvaDemechs
  • 119: Logs_TrackEchoDuplicates
  • 120: Logs_TrackRoundStartEnd
  • 121: Logs_TrackMatchStartEnd
  • 122: Logs_PlayerSummaryFrequency
  • 123: Logs_PlayerSummaryCount
  • 124: Logs_TrackMercyRez
  • player:
  • 100: Logs_LastHero
  • 101: Logs_LastHeroTime
  • 102: Logs_HeroesPlayedTimeArray
  • 103: Logs_HeroesPlayedArray
  • 104: Logs_OffensiveAssists
  • 105: Logs_DefensiveAssists
  • 106: Logs_CurrentHeroIterator
  • 107: Logs_CurrentHeroIterated
  • 108: Logs_UltimateID
  • 109: Logs_DuplicateID
  • }
  • subroutines
  • {
  • 0: CalcHeroPlayedTime
  • }
  • rule("Settings: Log Options")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.Logs_EnableLogTracker = Workshop Setting Toggle(Custom String("Log Generator"), Custom String("Enable Log Generator"), True,
  • 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);
  • }
  • }
  • disabled rule("Logs: Array Configuration")
  • rule("Logs: Update Match Time")
  • {
  • 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")));
  • 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("Logs: Match Start")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Match Round == 1;
  • }
  • actions
  • {
  • If(Global.Logs_TrackMatchStartEnd);
  • Log To Inspector(Custom String(",match_start,{0},{1}", Custom String("{0},{1},{2}", Global.Scrim_MatchTime, Current Map,
  • Current Game Mode), Custom String("{0},{1}", Team 1, Team 2)));
  • End;
  • }
  • }
  • rule("Logs: Round Start")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Is In Setup == True;
  • }
  • actions
  • {
  • Global.Logs_CurrentControlScoringTeam = All Teams;
  • Global.Logs_CurrentObjectiveIndex = Objective Index;
  • If(Global.Logs_TrackRoundStartEnd == True);
  • Log To Inspector(Custom String(",round_start,{0},{1}", Custom String("{0},{1}", Global.Scrim_MatchTime, Match Round),
  • Custom String("{0},{1},{2}", Team Score(Team 1), Team Score(Team 2), Objective Index)));
  • 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}", Global.Scrim_MatchTime, Match Round)));
  • 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}")));
  • 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}", Control Mode Scoring Percentage(
  • Team 1), Control Mode Scoring Percentage(Team 2))));
  • 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 Swap")
  • 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);
  • 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)));
  • 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
  • {
  • Log To Inspector(Custom String(",ultimate_charged,{0},{1},{2}", Custom String("{0}", Global.Scrim_MatchTime), Custom String(
  • "{0},{1},{2}", Team Of(Event Player), Event Player, Hero Of(Event Player)), Custom String("{0}", Hero Being Duplicated(
  • Event Player))));
  • 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
  • {
  • If(Global.Logs_TrackDvaDemechs && Hero Of(Event Player) == Hero(D.Va));
  • Wait(1.740, Ignore Condition);
  • If(!Is In Alternate Form(Event Player));
  • Log To Inspector(Custom String(",dva_remech,{0},{1}", Custom String("{0}", Global.Scrim_MatchTime), Custom String("{0},{1},{2}",
  • Team Of(Event Player), Event Player, Hero Of(Event Player))));
  • Else;
  • Log To Inspector(Custom String(",ultimate_start,{0},{1},{2}", Custom String("{0}", Global.Scrim_MatchTime), Custom String(
  • "{0},{1},{2}", Team Of(Event Player), Event Player, Hero Of(Event Player)), Custom String("{0}", Hero Being Duplicated(
  • Event Player))));
  • Wait Until(!Is Using Ultimate(Event Player), 99999);
  • Log To Inspector(Custom String(",ultimate_end,{0},{1},{2}", Custom String("{0}", Global.Scrim_MatchTime), Custom String(
  • "{0},{1},{2}", Team Of(Event Player), Event Player, Hero Of(Event Player)), Custom String("{0}", Hero Being Duplicated(
  • Event Player))));
  • End;
  • Else;
  • Log To Inspector(Custom String(",ultimate_start,{0},{1},{2}", Custom String("{0}", Global.Scrim_MatchTime), Custom String(
  • "{0},{1},{2}", Team Of(Event Player), Event Player, Hero Of(Event Player)), Custom String("{0}", Hero Being Duplicated(
  • Event Player))));
  • Wait Until(!Is Using Ultimate(Event Player), 99999);
  • Log To Inspector(Custom String(",ultimate_end,{0},{1},{2}", Custom String("{0}", Global.Scrim_MatchTime), Custom String(
  • "{0},{1},{2}", Team Of(Event Player), Event Player, Hero Of(Event Player)), Custom String("{0}", Hero Being Duplicated(
  • Event Player))));
  • End;
  • 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: Echo Duplicate")
  • rule("Logs: D.Va Remech/Self-Destruct Used")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackEchoDuplicates == True;
  • Is Duplicating(Event Player) == 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(",echo_duplicate_start,{0},{1},{2}", Global.Scrim_MatchTime, Custom String("{0},{1},{2}", Team Of(
  • Event Player), Event Player, Hero Of(Event Player)), Custom String("{0}", Hero Being Duplicated(Event Player))));
  • Wait Until(!Is Duplicating(Event Player), 99999);
  • Log To Inspector(Custom String(",echo_duplicate_end,{0},{1}", Global.Scrim_MatchTime, Custom String("{0},{1},{2}", Team Of(
  • Event Player), Event Player, Hero Of(Event Player))));
  • 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: D.Va Demech")
  • rule("Logs: Echo Duplicate")
  • {
  • event
  • {
  • Player Took Damage;
  • Ongoing - Each Player;
  • All;
  • All;
  • D.Va;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackDvaDemechs == True;
  • Is In Alternate Form(Event Player) == False;
  • Health(Event Player) == 0.020;
  • Global.Logs_TrackEchoDuplicates == True;
  • Is Game In Progress == True;
  • Is Duplicating(Event Player) == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",dva_demech,{0},{1}", Global.Scrim_MatchTime, Custom String("{0},{1},{2}", Custom String(
  • "{0},{1},{2}", Team Of(Attacker), Attacker, Hero Of(Attacker)), Custom String("{0},{1},{2}", Team Of(Victim), Victim, Hero Of(
  • Victim)), Custom String("{0},{1},{2}", Custom String("{0},{1}", Event Ability, Event Damage), Event Was Critical Hit,
  • Event Was Environment))));
  • 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: Round Complete")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackRoundStartEnd == True;
  • Is Between Rounds == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",round_end,{0},{1},{2}", Custom String("{0},{1}", Global.Scrim_MatchTime, Match Round),
  • Custom String("{0},{1}", Team Score(Team 1), Team Score(Team 2)), Custom String("{0},{1},{2}", Objective Index,
  • Control Mode Scoring Percentage(Team 1), Control Mode Scoring Percentage(Team 2))));
  • }
  • }
  • rule("Logs: Match Complete")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • Global.Logs_TrackMatchStartEnd == True;
  • Is Match Complete == True;
  • }
  • actions
  • {
  • Log To Inspector(Custom String(",match_end,{0},{1},{2}", Custom String("{0},{1}", Global.Scrim_MatchTime, Match Round),
  • Custom String("{0}", Team Score(Team 1)), Custom String("{0}", Team Score(Team 2))));
  • }
  • }
  • rule("Logs: Player Stat Summary")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Logs_EnableLogTracker == True;
  • (Global.Logs_PlayerSummaryFrequency == 0 || (Global.Logs_PlayerSummaryFrequency == 1 && Is Match Complete)) == True;
  • Is Between Rounds == True;
  • }
  • actions
  • {
  • Call Subroutine(CalcHeroPlayedTime);
  • For Player Variable(Event Player, Logs_CurrentHeroIterator, 0, Count Of(Event Player.Logs_HeroesPlayedArray), 1);
  • Event Player.Logs_CurrentHeroIterated = Event Player.Logs_HeroesPlayedArray[Event Player.Logs_CurrentHeroIterator];
  • Log To Inspector(Custom String(",player_stat,{0},{1},{2}", Custom String("{0},{1}", Global.Scrim_MatchTime, Match Round),
  • Custom String("{0},{1},{2}", Team Of(Event Player), Event Player, Event Player.Logs_CurrentHeroIterated), Custom String(
  • "{0},{1}", Custom String("{0},{1},{2}", Custom String("{0},{1},{2}", Custom String("{0},{1},{2}", Player Hero Stat(
  • Event Player, Event Player.Logs_CurrentHeroIterated, Eliminations), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Final Blows), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated,
  • Deaths)), Custom String("{0},{1},{2}", Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, All Damage Dealt),
  • Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Barrier Damage Dealt), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Hero Damage Dealt)), Custom String("{0},{1},{2}", Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Healing Dealt), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated,
  • Healing Received), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Self Healing))), Custom String(
  • "{0},{1},{2}", Custom String("{0},{1}", Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Damage Taken),
  • Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Damage Blocked)), Custom String("{0},{1}",
  • Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Defensive Assists), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Offensive Assists)), Custom String("{0},{1}", Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Ultimates Earned), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated,
  • Ultimates Used))), Custom String("{0},{1}", Custom String("{0},{1},{2}", Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Multikill Best), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated,
  • Multikills), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Solo Kills)), Custom String("{0},{1},{2}",
  • Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Objective Kills), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Environmental Kills), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Environmental Deaths)))), Custom String("{0},{1}", Custom String("{0},{1},{2}",
  • Custom String("{0},{1}", Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Critical Hits),
  • Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Critical Hit Accuracy)), Custom String("{0},{1},{2}",
  • Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Scoped Accuracy), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Scoped Critical Hit Accuracy), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Scoped Critical Hit Kills)), Custom String("{0},{1},{2}", Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Shots Fired), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated,
  • Shots Hit), Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Shots Missed))), Custom String("{0},{1}",
  • Custom String("{0},{1},{2}", Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Scoped Shots),
  • Player Hero Stat(Event Player, Event Player.Logs_CurrentHeroIterated, Scoped Hits), Player Hero Stat(Event Player,
  • Event Player.Logs_CurrentHeroIterated, Weapon Accuracy)),
  • Event Player.Logs_HeroesPlayedTimeArray[Event Player.Logs_CurrentHeroIterator])))));
  • End;
  • Global.Logs_PlayerSummaryCount += 1;
  • }
  • }
Join the Workshop.codes Discord