Fix max combo calculation in osu diffcalc

This commit is contained in:
Henry Lin 2022-01-23 11:11:12 +08:00
parent ccac7b85be
commit f53ce5aedf
1 changed files with 4 additions and 2 deletions

View File

@ -63,8 +63,10 @@ protected override DifficultyAttributes CreateDifficultyAttributes(IBeatmap beat
double drainRate = beatmap.Difficulty.DrainRate;
int maxCombo = beatmap.HitObjects.Count;
// Add the ticks + tail of the slider. 1 is subtracted because the head circle would be counted twice (once for the slider itself in the line above)
maxCombo += beatmap.HitObjects.OfType<Slider>().Sum(s => s.NestedHitObjects.Count - 1);
// Add the ticks + tail of the slider
// 1 is subtracted because the head circle would be counted twice (once for the slider itself in the line above)
// an additional 1 is subtracted if only nested objects are judged because the hit result of the entire slider would not contribute to combo
maxCombo += beatmap.HitObjects.OfType<Slider>().Sum(s => s.NestedHitObjects.Count - 1 - (s.OnlyJudgeNestedObjects ? 1 : 0));
int hitCirclesCount = beatmap.HitObjects.Count(h => h is HitCircle);
int sliderCount = beatmap.HitObjects.Count(h => h is Slider);