diff --git a/osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs b/osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs index 462c47c420..d863a208b0 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs @@ -438,12 +438,14 @@ namespace osu.Game.Rulesets.Osu.Difficulty return 0; double missedComboPercent = 1.0 - (double)scoreMaxCombo / attributes.MaxCombo; - double estimatedSliderbreaks = countMiss * topWeightedSliderFactor * DifficultyCalculationUtils.Logistic(missedComboPercent, 0.33, 15); - return Math.Min(countMeh + countOk, estimatedSliderbreaks); + double estimatedSliderbreaks = Math.Min(countOk, effectiveMissCount * topWeightedSliderFactor); + // scores with more oks are more likely to have sliderbreaks + double okAdjustment = ((countOk - estimatedSliderbreaks) + 0.5) / countOk; + return estimatedSliderbreaks * okAdjustment * DifficultyCalculationUtils.Logistic(missedComboPercent, 0.33, 15); } private int totalHits => countGreat + countOk + countMeh + countMiss; private int totalSuccessfulHits => countGreat + countOk + countMeh; private int totalImperfectHits => countOk + countMeh + countMiss; } -} +} \ No newline at end of file