fix: Ensure player has required flags for auto rtds (resolves #193)

This commit is contained in:
MSWS
2025-12-01 19:33:49 -08:00
parent a66a4cb03c
commit 1765a87039

View File

@@ -25,6 +25,9 @@ public class AutoRTDCommand(IServiceProvider provider) : ICommand, IListener {
private readonly IMsgLocalizer localizer = private readonly IMsgLocalizer localizer =
provider.GetRequiredService<IMsgLocalizer>(); provider.GetRequiredService<IMsgLocalizer>();
private readonly IPermissionManager perms =
provider.GetRequiredService<IPermissionManager>();
private readonly Dictionary<string, bool> playerStatuses = new(); private readonly Dictionary<string, bool> playerStatuses = new();
private ICookie? autoRtdCookie; private ICookie? autoRtdCookie;
public string Id => "autortd"; public string Id => "autortd";
@@ -75,9 +78,10 @@ public class AutoRTDCommand(IServiceProvider provider) : ICommand, IListener {
[UsedImplicitly] [UsedImplicitly]
[EventHandler] [EventHandler]
public void OnRoundStart(GameInitEvent ev) { public void OnRoundStart(GameInitEvent ev) {
var messenger = provider.GetRequiredService<IMessenger>();
Task.Run(async () => { Task.Run(async () => {
foreach (var player in finder.GetOnline()) { foreach (var player in finder.GetOnline()) {
if (!perms.HasFlags(player, RequiredFlags)) continue;
if (!playerStatuses.TryGetValue(player.Id, out var status)) { if (!playerStatuses.TryGetValue(player.Id, out var status)) {
await fetchCookie(player); await fetchCookie(player);
status = playerStatuses.GetValueOrDefault(player.Id, false); status = playerStatuses.GetValueOrDefault(player.Id, false);