From 9c74a8ff6ef75709a6d7e887329d34fa52ee630e Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Thu, 6 Feb 2025 20:48:27 -0600 Subject: [PATCH 1/3] Hard-sync winning KOTH faction --- .../SUGMA/GameModes/Elimination/EliminationGamemode.cs | 7 ++++--- .../Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs index ad0a0a902..4ce267c3f 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs @@ -182,9 +182,10 @@ public override void StartRound(string[] arguments = null) "\n- Tracked grids:" + trackedGrids); } + protected bool _setWinnerFromArgs = false; public override void StopRound() { - bool setWinnerFromArgs = false; + _setWinnerFromArgs = false; foreach (var arg in Arguments) { if (arg.StartsWith("win")) @@ -194,12 +195,12 @@ public override void StopRound() long.TryParse(arg.Remove(0, 3), out factionId); _winningFaction = MyAPIGateway.Session.Factions.TryGetFactionById(factionId); - setWinnerFromArgs = true; + _setWinnerFromArgs = true; break; } } - if (!setWinnerFromArgs && MyAPIGateway.Session.IsServer) + if (!_setWinnerFromArgs && MyAPIGateway.Session.IsServer) { Arguments = Arguments.Concat(new[] { $"win{_winningFaction?.FactionId ?? -1}" }).ToArray(); } diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs index 1b2922307..14eac3484 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs @@ -59,8 +59,10 @@ public override void StartRound(string[] arguments = null) public override void StopRound() { base.StopRound(); + if (!_setWinnerFromArgs) + _winningFaction = ControlPoint._zoneOwner; - SUGMA_SessionComponent.I.GetComponent("KOTHHud")?.MatchEnded(ControlPoint._zoneOwner); + SUGMA_SessionComponent.I.GetComponent("KOTHHud")?.MatchEnded(_winningFaction); SUGMA_SessionComponent.I.UnregisterComponent("KOTHHud"); ControlPoint = null; From f1ea0977cc2299accf1be438e821e4299283cb4f Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Thu, 6 Feb 2025 20:52:35 -0600 Subject: [PATCH 2/3] i'm stupid --- .../SUGMA/GameModes/Elimination/EliminationGamemode.cs | 7 +++---- .../Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs | 3 +-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs index 4ce267c3f..ad0a0a902 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs @@ -182,10 +182,9 @@ public override void StartRound(string[] arguments = null) "\n- Tracked grids:" + trackedGrids); } - protected bool _setWinnerFromArgs = false; public override void StopRound() { - _setWinnerFromArgs = false; + bool setWinnerFromArgs = false; foreach (var arg in Arguments) { if (arg.StartsWith("win")) @@ -195,12 +194,12 @@ public override void StopRound() long.TryParse(arg.Remove(0, 3), out factionId); _winningFaction = MyAPIGateway.Session.Factions.TryGetFactionById(factionId); - _setWinnerFromArgs = true; + setWinnerFromArgs = true; break; } } - if (!_setWinnerFromArgs && MyAPIGateway.Session.IsServer) + if (!setWinnerFromArgs && MyAPIGateway.Session.IsServer) { Arguments = Arguments.Concat(new[] { $"win{_winningFaction?.FactionId ?? -1}" }).ToArray(); } diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs index 14eac3484..66ade0997 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs @@ -58,9 +58,8 @@ public override void StartRound(string[] arguments = null) public override void StopRound() { + _winningFaction = ControlPoint._zoneOwner; base.StopRound(); - if (!_setWinnerFromArgs) - _winningFaction = ControlPoint._zoneOwner; SUGMA_SessionComponent.I.GetComponent("KOTHHud")?.MatchEnded(_winningFaction); SUGMA_SessionComponent.I.UnregisterComponent("KOTHHud"); From e591d3687122c3f18af2ced7362225d4cb105609 Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Thu, 6 Feb 2025 21:34:58 -0600 Subject: [PATCH 3/3] Fix KOTH win condition display --- .../SUGMA/GameModes/Elimination/EliminationGamemode.cs | 2 +- .../Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs index ad0a0a902..c7034ba57 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs @@ -189,12 +189,12 @@ public override void StopRound() { if (arg.StartsWith("win")) { - Log.Info("Winner in arguments found: " + arg); long factionId; long.TryParse(arg.Remove(0, 3), out factionId); _winningFaction = MyAPIGateway.Session.Factions.TryGetFactionById(factionId); setWinnerFromArgs = true; + Log.Info($"Winner in arguments found: {factionId} ({_winningFaction?.Name})"); break; } } diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs index 66ade0997..64792aa39 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs @@ -70,13 +70,13 @@ public override void StopRound() internal override void DisplayWinMessage() { - if (ControlPoint._zoneOwner == null) + if (_winningFaction == null) { MyAPIGateway.Utilities.ShowNotification("YOU ARE ALL LOSERS.", 10000, "Red"); return; } - MyAPIGateway.Utilities.ShowNotification($"A WINNER IS [{ControlPoint._zoneOwner?.Name}]!", 10000); + MyAPIGateway.Utilities.ShowNotification($"A WINNER IS [{_winningFaction?.Name}]!", 10000); } public override void UpdateActive()