From 7312b0e20d051811dda7b794217037ce20f25ca4 Mon Sep 17 00:00:00 2001 From: Acentech Dev Date: Tue, 21 Jul 2026 12:55:00 +0300 Subject: [PATCH] fix(minigame): announce entrance-opened for sub-minute registration windows SendOpenedNotificationsAsync only looped per full minute, so a <1min entrance (e.g. a 30s test window) sent no golden 'event opened' notification. Now sends one up front when TotalMinutes==0. >=1min windows unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../PlugIns/PeriodicTasks/MiniGameStartBasePlugIn.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/GameLogic/PlugIns/PeriodicTasks/MiniGameStartBasePlugIn.cs b/src/GameLogic/PlugIns/PeriodicTasks/MiniGameStartBasePlugIn.cs index 7c3e6dc..e8e77fe 100644 --- a/src/GameLogic/PlugIns/PeriodicTasks/MiniGameStartBasePlugIn.cs +++ b/src/GameLogic/PlugIns/PeriodicTasks/MiniGameStartBasePlugIn.cs @@ -102,6 +102,14 @@ public abstract class MiniGameStartBasePlugIn : Peri return; } + // Sub-minute entrance windows (e.g. a 30s test window) have (int)TotalMinutes == 0, so the + // per-minute loop below would send nothing and players would get no "event opened" notification. + // Announce once up front in that case (>= 1 minute windows are unaffected). + if ((int)enterDuration.TotalMinutes == 0 && this.Configuration?.EntranceOpenedMessage is { } shortOpenMessage) + { + await state.Context.SendGlobalNotificationAsync(string.Format(shortOpenMessage, 1)).ConfigureAwait(false); + } + for (var remainingMinutes = (int)enterDuration.TotalMinutes; remainingMinutes > 0; remainingMinutes--) { if (this.Configuration?.EntranceOpenedMessage is { } openMessage)