diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs
index c30ac6b88b..24446db92a 100644
--- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs
@@ -312,7 +312,7 @@ private void updateBonusScore()
tick.TriggerResult(true);
if (tick is DrawableSpinnerBonusTick)
- gainedBonus.Value = score_per_tick * (spins - HitObject.FirstBonusSpin);
+ gainedBonus.Value = score_per_tick * (spins - HitObject.SpinsRequiredForBonus);
}
completedFullSpins++;
diff --git a/osu.Game.Rulesets.Osu/Objects/Spinner.cs b/osu.Game.Rulesets.Osu/Objects/Spinner.cs
index a26cb7b090..5ef670c739 100644
--- a/osu.Game.Rulesets.Osu/Objects/Spinner.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Spinner.cs
@@ -31,6 +31,11 @@ public double EndTime
///
public int SpinsRequired { get; protected set; } = 1;
+ ///
+ /// The number of spins required to start receiving bonus score. The first bonus is awarded on this spin count.
+ ///
+ public int SpinsRequiredForBonus => SpinsRequired + bonus_spins_gap;
+
///
/// The gap between spinner completion and the first bonus-awarding spin.
///
@@ -41,11 +46,6 @@ public double EndTime
///
public int MaximumBonusSpins { get; protected set; } = 1;
- ///
- /// The first spin awarding bonus score.
- ///
- public int FirstBonusSpin => SpinsRequired + bonus_spins_gap;
-
public override Vector2 StackOffset => Vector2.Zero;
protected override void ApplyDefaultsToSelf(ControlPointInfo controlPointInfo, IBeatmapDifficultyInfo difficulty)
@@ -73,7 +73,7 @@ protected override void CreateNestedHitObjects(CancellationToken cancellationTok
double startTime = StartTime + (float)(i + 1) / totalSpins * Duration;
- AddNested(i < FirstBonusSpin
+ AddNested(i < SpinsRequiredForBonus
? new SpinnerTick { StartTime = startTime, SpinnerDuration = Duration }
: new SpinnerBonusTick { StartTime = startTime, SpinnerDuration = Duration, Samples = new[] { CreateHitSampleInfo("spinnerbonus") } });
}