diff --git a/osu.Game/Rulesets/Scoring/HealthProcessor.cs b/osu.Game/Rulesets/Scoring/HealthProcessor.cs index a1389d7ee9..8dd6cc1ed9 100644 --- a/osu.Game/Rulesets/Scoring/HealthProcessor.cs +++ b/osu.Game/Rulesets/Scoring/HealthProcessor.cs @@ -70,7 +70,11 @@ protected override void Update() base.Update(); if (!IsBreakTime.Value) - Health.Value -= drainRate * Time.Elapsed; + { + // When jumping from before the gameplay start to after it or vice-versa, we only want to consider any drain since the gameplay start time + double lastTime = Math.Max(gameplayStartTime, Time.Current - Time.Elapsed); + Health.Value -= drainRate * (Time.Current - lastTime); + } } protected override void ApplyResultInternal(JudgementResult result)