From 75f4788236183845abfc12754702d761426c4163 Mon Sep 17 00:00:00 2001 From: Astra Date: Sat, 3 Oct 2026 00:03:22 +0100 Subject: [PATCH] setoverride: same targets as setskill (@me, @all, @ct, @t, @random, ...) Several targets are all set to one state: on if any is off, otherwise off. Bump to 1.2.4.b3-panorama4. --- .../src/command/Command.cs | 18 +++++++++++------- jRandomSkills - SRC Files/src/jRandomSkills.cs | 2 +- .../src/utils/CooldownOverride.cs | 12 +++++++----- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/jRandomSkills - SRC Files/src/command/Command.cs b/jRandomSkills - SRC Files/src/command/Command.cs index 53307a1..11db0db 100644 --- a/jRandomSkills - SRC Files/src/command/Command.cs +++ b/jRandomSkills - SRC Files/src/command/Command.cs @@ -116,14 +116,14 @@ namespace src.command if (command.ArgCount < 2) { - Reply("Usage: css_setoverride "); + Reply("Usage: css_setoverride "); return; } - var targetPlayer = Utilities.GetPlayers().FirstOrDefault(p => p != null && p.IsValid - && (p.SteamID.ToString().Equals(command.GetArg(1), StringComparison.CurrentCultureIgnoreCase) - || p.PlayerName.Equals(command.GetArg(1), StringComparison.OrdinalIgnoreCase))); - if (targetPlayer == null) + // zio: same targets as css_setskill. Several targets are all set to one state: + // on if any of them is off, otherwise off. + var targets = GetSetSkillTargets(player, command.GetArg(1), _ => true); + if (targets.Count == 0) { Reply(player == null ? Localization.GetTranslationWithoutIlliterate("player_not_found_setskill") @@ -131,8 +131,12 @@ namespace src.command return; } - bool enabled = CooldownOverride.Toggle(targetPlayer); - Reply($"Cooldown override {(enabled ? $"{ChatColors.Lime}ON" : $"{ChatColors.LightRed}OFF")}{ChatColors.Default} for {ChatColors.LightRed}\u202A{targetPlayer.PlayerName}\u202C"); + bool enabled = targets.Any(p => !CooldownOverride.IsSet(p)); + foreach (var targetPlayer in targets) + CooldownOverride.Set(targetPlayer, enabled); + + string who = targets.Count == 1 ? targets[0].PlayerName : $"{targets.Count} players"; + Reply($"Cooldown override {(enabled ? $"{ChatColors.Lime}ON" : $"{ChatColors.LightRed}OFF")}{ChatColors.Default} for {ChatColors.LightRed}\u202A{who}\u202C"); } private static void Command_SetSkill(CCSPlayerController? player, CommandInfo command) diff --git a/jRandomSkills - SRC Files/src/jRandomSkills.cs b/jRandomSkills - SRC Files/src/jRandomSkills.cs index d627d27..48523e6 100644 --- a/jRandomSkills - SRC Files/src/jRandomSkills.cs +++ b/jRandomSkills - SRC Files/src/jRandomSkills.cs @@ -44,7 +44,7 @@ namespace src public override string ModuleName => "[CS2] [ jRandomSkills ]"; public override string ModuleAuthor => "D3X (Original), Juzlus (Modifier), ByDexterTR (Contributor)"; public override string ModuleDescription => "Plugin adds random skills every round for CS2 by D3X. Modified by Juzlus."; - public override string ModuleVersion => "1.2.4.b3-panorama3"; + public override string ModuleVersion => "1.2.4.b3-panorama4"; public override void Load(bool hotReload) { diff --git a/jRandomSkills - SRC Files/src/utils/CooldownOverride.cs b/jRandomSkills - SRC Files/src/utils/CooldownOverride.cs index 0a8992e..d47654e 100644 --- a/jRandomSkills - SRC Files/src/utils/CooldownOverride.cs +++ b/jRandomSkills - SRC Files/src/utils/CooldownOverride.cs @@ -15,14 +15,16 @@ namespace src.utils private static readonly HashSet _players = []; private static readonly ConcurrentDictionary _stateFields = new(); - // Toggles the override and returns the new state. - public static bool Toggle(CCSPlayerController player) + // Sets the override for one player. + public static void Set(CCSPlayerController player, bool enabled) { - if (_players.Remove(Key(player))) return false; - _players.Add(Key(player)); - return true; + if (enabled) _players.Add(Key(player)); + else _players.Remove(Key(player)); } + // The player's own setting, without following a bot takeover like Has does. + public static bool IsSet(CCSPlayerController player) => _players.Contains(Key(player)); + // A bot a human has taken over counts as that human, since skills run on the bot's controller. public static bool Has(CCSPlayerController? player) {