diff --git a/osu.Game/Rulesets/Scoring/HitResult.cs b/osu.Game/Rulesets/Scoring/HitResult.cs
index 6303062f03..cc528e406f 100644
--- a/osu.Game/Rulesets/Scoring/HitResult.cs
+++ b/osu.Game/Rulesets/Scoring/HitResult.cs
@@ -175,6 +175,7 @@ namespace osu.Game.Rulesets.Scoring
case HitResult.LargeTickHit:
case HitResult.LargeTickMiss:
case HitResult.LegacyComboIncrease:
+ case HitResult.ComboBreak:
return true;
default:
@@ -187,11 +188,19 @@ namespace osu.Game.Rulesets.Scoring
///
public static bool AffectsAccuracy(this HitResult result)
{
- // LegacyComboIncrease is a special type which is neither a basic, tick, bonus, or accuracy-affecting result.
- if (result == HitResult.LegacyComboIncrease)
- return false;
+ switch (result)
+ {
+ // LegacyComboIncrease is a special non-gameplay type which is neither a basic, tick, bonus, or accuracy-affecting result.
+ case HitResult.LegacyComboIncrease:
+ return false;
- return IsScorable(result) && !IsBonus(result);
+ // ComboBreak is a special type that only affects combo. It cannot be considered as basic, tick, bonus, or accuracy-affecting.
+ case HitResult.ComboBreak:
+ return false;
+
+ default:
+ return IsScorable(result) && !IsBonus(result);
+ }
}
///
@@ -199,11 +208,19 @@ namespace osu.Game.Rulesets.Scoring
///
public static bool IsBasic(this HitResult result)
{
- // LegacyComboIncrease is a special type which is neither a basic, tick, bonus, or accuracy-affecting result.
- if (result == HitResult.LegacyComboIncrease)
- return false;
+ switch (result)
+ {
+ // LegacyComboIncrease is a special non-gameplay type which is neither a basic, tick, bonus, or accuracy-affecting result.
+ case HitResult.LegacyComboIncrease:
+ return false;
- return IsScorable(result) && !IsTick(result) && !IsBonus(result);
+ // ComboBreak is a special type that only affects combo. It cannot be considered as basic, tick, bonus, or accuracy-affecting.
+ case HitResult.ComboBreak:
+ return false;
+
+ default:
+ return IsScorable(result) && !IsTick(result) && !IsBonus(result);
+ }
}
///
@@ -252,6 +269,7 @@ namespace osu.Game.Rulesets.Scoring
case HitResult.Miss:
case HitResult.SmallTickMiss:
case HitResult.LargeTickMiss:
+ case HitResult.ComboBreak:
return false;
default:
@@ -264,11 +282,20 @@ namespace osu.Game.Rulesets.Scoring
///
public static bool IsScorable(this HitResult result)
{
- // LegacyComboIncrease is not actually scorable (in terms of usable by rulesets for that purpose), but needs to be defined as such to be correctly included in statistics output.
- if (result == HitResult.LegacyComboIncrease)
- return true;
+ switch (result)
+ {
+ // LegacyComboIncrease is not actually scorable (in terms of usable by rulesets for that purpose), but needs to be defined as such to be correctly included in statistics output.
+ case HitResult.LegacyComboIncrease:
+ return true;
- return result >= HitResult.Miss && result < HitResult.IgnoreMiss;
+ // ComboBreak is its own type that affects score via combo.
+ case HitResult.ComboBreak:
+ return true;
+
+ default:
+ // Note that IgnoreHit and IgnoreMiss are excluded as they do not affect score.
+ return result >= HitResult.Miss && result < HitResult.IgnoreMiss;
+ }
}
///