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.
This commit is contained in:
Astra 2026-10-03 00:03:22 +01:00
parent b16e6fb213
commit baba6ef084
3 changed files with 19 additions and 13 deletions

View file

@ -116,14 +116,14 @@ namespace src.command
if (command.ArgCount < 2) if (command.ArgCount < 2)
{ {
Reply("Usage: css_setoverride <name or steamid64>"); Reply("Usage: css_setoverride <name, steamid64, @me, @all, @ct, @t, @random, ...>");
return; return;
} }
var targetPlayer = Utilities.GetPlayers().FirstOrDefault(p => p != null && p.IsValid // zio: same targets as css_setskill. Several targets are all set to one state:
&& (p.SteamID.ToString().Equals(command.GetArg(1), StringComparison.CurrentCultureIgnoreCase) // on if any of them is off, otherwise off.
|| p.PlayerName.Equals(command.GetArg(1), StringComparison.OrdinalIgnoreCase))); var targets = GetSetSkillTargets(player, command.GetArg(1), _ => true);
if (targetPlayer == null) if (targets.Count == 0)
{ {
Reply(player == null Reply(player == null
? Localization.GetTranslationWithoutIlliterate("player_not_found_setskill") ? Localization.GetTranslationWithoutIlliterate("player_not_found_setskill")
@ -131,8 +131,12 @@ namespace src.command
return; return;
} }
bool enabled = CooldownOverride.Toggle(targetPlayer); bool enabled = targets.Any(p => !CooldownOverride.IsSet(p));
Reply($"Cooldown override {(enabled ? $"{ChatColors.Lime}ON" : $"{ChatColors.LightRed}OFF")}{ChatColors.Default} for {ChatColors.LightRed}\u202A{targetPlayer.PlayerName}\u202C"); 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) private static void Command_SetSkill(CCSPlayerController? player, CommandInfo command)

View file

@ -44,7 +44,7 @@ namespace src
public override string ModuleName => "[CS2] [ jRandomSkills ]"; public override string ModuleName => "[CS2] [ jRandomSkills ]";
public override string ModuleAuthor => "D3X (Original), Juzlus (Modifier), ByDexterTR (Contributor)"; 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 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) public override void Load(bool hotReload)
{ {

View file

@ -15,14 +15,16 @@ namespace src.utils
private static readonly HashSet<ulong> _players = []; private static readonly HashSet<ulong> _players = [];
private static readonly ConcurrentDictionary<Type, FieldInfo[]> _stateFields = new(); private static readonly ConcurrentDictionary<Type, FieldInfo[]> _stateFields = new();
// Toggles the override and returns the new state. // Sets the override for one player.
public static bool Toggle(CCSPlayerController player) public static void Set(CCSPlayerController player, bool enabled)
{ {
if (_players.Remove(Key(player))) return false; if (enabled) _players.Add(Key(player));
_players.Add(Key(player)); else _players.Remove(Key(player));
return true;
} }
// 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. // 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) public static bool Has(CCSPlayerController? player)
{ {