diff --git a/osu.Game/Rulesets/Mods/IApplicableToHealthProcessor.cs b/osu.Game/Rulesets/Mods/IApplicableToHealthProcessor.cs
index a181955653..2676060efa 100644
--- a/osu.Game/Rulesets/Mods/IApplicableToHealthProcessor.cs
+++ b/osu.Game/Rulesets/Mods/IApplicableToHealthProcessor.cs
@@ -8,7 +8,7 @@ namespace osu.Game.Rulesets.Mods
public interface IApplicableToHealthProcessor : IApplicableMod
{
///
- /// Provide a to a mod. Called once on initialisation of a play instance.
+ /// Provides a loaded to a mod. Called once on initialisation of a play instance.
///
void ApplyToHealthProcessor(HealthProcessor healthProcessor);
}
diff --git a/osu.Game/Rulesets/Mods/IApplicableToScoreProcessor.cs b/osu.Game/Rulesets/Mods/IApplicableToScoreProcessor.cs
index cb00770868..b93e50921f 100644
--- a/osu.Game/Rulesets/Mods/IApplicableToScoreProcessor.cs
+++ b/osu.Game/Rulesets/Mods/IApplicableToScoreProcessor.cs
@@ -12,7 +12,7 @@ namespace osu.Game.Rulesets.Mods
public interface IApplicableToScoreProcessor : IApplicableMod
{
///
- /// Provide a to a mod. Called once on initialisation of a play instance.
+ /// Provides a loaded to a mod. Called once on initialisation of a play instance.
///
void ApplyToScoreProcessor(ScoreProcessor scoreProcessor);
diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs
index d76d44767a..09eaf1c543 100644
--- a/osu.Game/Screens/Play/Player.cs
+++ b/osu.Game/Screens/Play/Player.cs
@@ -297,11 +297,19 @@ namespace osu.Game.Screens.Play
ScoreProcessor.HasCompleted.BindValueChanged(scoreCompletionChanged);
HealthProcessor.Failed += onFail;
- foreach (var mod in Mods.Value.OfType())
- mod.ApplyToScoreProcessor(ScoreProcessor);
+ // Provide judgement processors to mods after they're loaded so that they're on the gameplay clock,
+ // this is required for mods that apply transforms to these processors.
+ ScoreProcessor.OnLoadComplete += _ =>
+ {
+ foreach (var mod in Mods.Value.OfType())
+ mod.ApplyToScoreProcessor(ScoreProcessor);
+ };
- foreach (var mod in Mods.Value.OfType())
- mod.ApplyToHealthProcessor(HealthProcessor);
+ HealthProcessor.OnLoadComplete += _ =>
+ {
+ foreach (var mod in Mods.Value.OfType())
+ mod.ApplyToHealthProcessor(HealthProcessor);
+ };
IsBreakTime.BindTo(breakTracker.IsBreakTime);
IsBreakTime.BindValueChanged(onBreakTimeChanged, true);