diff --git a/osu.Game.Rulesets.Osu.Tests/Mods/TestSceneOsuModFreezeFrame.cs b/osu.Game.Rulesets.Osu.Tests/Mods/TestSceneOsuModFreezeFrame.cs index 57d2b94188..31498295da 100644 --- a/osu.Game.Rulesets.Osu.Tests/Mods/TestSceneOsuModFreezeFrame.cs +++ b/osu.Game.Rulesets.Osu.Tests/Mods/TestSceneOsuModFreezeFrame.cs @@ -2,7 +2,10 @@ // See the LICENCE file in the repository root for full licence text. using NUnit.Framework; +using osu.Game.Rulesets.Osu.Beatmaps; using osu.Game.Rulesets.Osu.Mods; +using osu.Game.Rulesets.Osu.Objects; +using osu.Game.Rulesets.Osu.UI; namespace osu.Game.Rulesets.Osu.Tests.Mods { @@ -18,5 +21,39 @@ namespace osu.Game.Rulesets.Osu.Tests.Mods Autoplay = false, }); } + + [Test] + public void TestSkipToFirstCircleNotSuppressed() + { + CreateModTest(new ModTestData + { + Mod = new OsuModFreezeFrame(), + CreateBeatmap = () => new OsuBeatmap + { + HitObjects = + { + new HitCircle { StartTime = 5000, Position = OsuPlayfield.BASE_SIZE / 2 } + } + }, + PassCondition = () => Player.GameplayClockContainer.GameplayStartTime > 0 + }); + } + + [Test] + public void TestSkipToFirstSpinnerNotSuppressed() + { + CreateModTest(new ModTestData + { + Mod = new OsuModFreezeFrame(), + CreateBeatmap = () => new OsuBeatmap + { + HitObjects = + { + new Spinner { StartTime = 5000, Position = OsuPlayfield.BASE_SIZE / 2 } + } + }, + PassCondition = () => Player.GameplayClockContainer.GameplayStartTime > 0 + }); + } } } diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModFreezeFrame.cs b/osu.Game.Rulesets.Osu/Mods/OsuModFreezeFrame.cs index e75ed24a7d..368d76d1ba 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModFreezeFrame.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModFreezeFrame.cs @@ -57,7 +57,8 @@ namespace osu.Game.Rulesets.Osu.Mods void applyFadeInAdjustment(OsuHitObject osuObject) { - osuObject.TimePreempt += osuObject.StartTime - lastNewComboTime; + if (osuObject is not Spinner) + osuObject.TimePreempt += osuObject.StartTime - lastNewComboTime; foreach (var nested in osuObject.NestedHitObjects.OfType()) {