diff --git a/osu.Game/Rulesets/Judgements/Judgement.cs b/osu.Game/Rulesets/Judgements/Judgement.cs
index 684ee0b403..2b5c4aae95 100644
--- a/osu.Game/Rulesets/Judgements/Judgement.cs
+++ b/osu.Game/Rulesets/Judgements/Judgement.cs
@@ -32,6 +32,11 @@ namespace osu.Game.Rulesets.Judgements
///
public bool IsHit => Result > HitResult.Miss;
+ ///
+ /// Whether this judgement is the final judgement for the hit object.
+ ///
+ public bool Final = true;
+
///
/// The offset from a perfect hit at which this judgement occurred.
/// Populated when added via .
diff --git a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs
index 9b4f7e7fc7..19bddd05e0 100644
--- a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs
+++ b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs
@@ -105,12 +105,12 @@ namespace osu.Game.Rulesets.Objects.Drawables
}
private bool judgementOccurred;
- private bool hasJudgementResult => Judgements.LastOrDefault()?.Result >= HitResult.Miss;
+ private bool judgementFinalized => judgements.LastOrDefault()?.Final == true;
///
/// Whether this and all of its nested s have been judged.
///
- public virtual bool AllJudged => (!ProvidesJudgement || hasJudgementResult) && (NestedHitObjects?.All(h => h.AllJudged) ?? true);
+ public virtual bool AllJudged => (!ProvidesJudgement || judgementFinalized) && (NestedHitObjects?.All(h => h.AllJudged) ?? true);
///
/// Notifies that a new judgement has occurred for this .
@@ -159,7 +159,7 @@ namespace osu.Game.Rulesets.Objects.Drawables
judgementOccurred |= d.UpdateJudgement(userTriggered);
}
- if (!ProvidesJudgement || hasJudgementResult || judgementOccurred)
+ if (!ProvidesJudgement || judgementFinalized || judgementOccurred)
return judgementOccurred;
var endTime = (HitObject as IHasEndTime)?.EndTime ?? HitObject.StartTime;