diff --git a/src/GameLogic/PlugIns/PeriodicTasks/PeriodicTaskBasePlugIn.cs b/src/GameLogic/PlugIns/PeriodicTasks/PeriodicTaskBasePlugIn.cs index a29eaae..07883a5 100644 --- a/src/GameLogic/PlugIns/PeriodicTasks/PeriodicTaskBasePlugIn.cs +++ b/src/GameLogic/PlugIns/PeriodicTasks/PeriodicTaskBasePlugIn.cs @@ -71,9 +71,12 @@ public abstract class PeriodicTaskBasePlugIn : IPeriodic return; } - if (this.IsPreviousEventStillRunning(state)) + // A GM ForceStart (e.g. /starths) bypasses the "previous run still within its TaskDuration" + // guard: the previous event has actually ended, and the admin explicitly wants a new one now. + // (Without this, TaskDuration keeps the state blocked for its full length even after the event + // finished, so a re-start only worked after a server restart.) Scheduled auto-starts still respect it. + if (!this._isStartForced && this.IsPreviousEventStillRunning(state)) { - this._isStartForced = false; return; }