From af9f9e771a062be3369f09ab3dd2c090454e5fee Mon Sep 17 00:00:00 2001 From: Givy120 <89256026+Givikap120@users.noreply.github.com> Date: Tue, 21 Apr 2026 18:05:11 +0300 Subject: [PATCH] Use Mehs in the okAdjustment (#37264) I'm not sure why they were excluded initially, so creating this PR as a potential fix If there's an actual reason for this then this PR is probably unnecessary Co-authored-by: James Wilson Co-authored-by: StanR <8269193+stanriders@users.noreply.github.com> --- .../Difficulty/OsuPerformanceCalculator.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs b/osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs index dc3d9cd19d..6ad5c98c3f 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs @@ -391,19 +391,21 @@ namespace osu.Game.Rulesets.Osu.Difficulty private double calculateEstimatedSliderBreaks(double topWeightedSliderFactor, OsuDifficultyAttributes attributes) { - if (!usingClassicSliderAccuracy || countOk == 0) + int nonMissMistakes = countOk + countMeh; + + if (!usingClassicSliderAccuracy || nonMissMistakes == 0) return 0; double missedComboPercent = 1.0 - (double)scoreMaxCombo / attributes.MaxCombo; - double estimatedSliderBreaks = Math.Min(countOk, effectiveMissCount * topWeightedSliderFactor); + double estimatedSliderBreaks = Math.Min(nonMissMistakes, effectiveMissCount * topWeightedSliderFactor); - // Scores with more Oks are more likely to have slider breaks. - double okAdjustment = ((countOk - estimatedSliderBreaks) + 0.5) / countOk; + // Scores with more Oks and Mehs are more likely to have slider breaks. + double nonMissMistakeAdjustment = ((nonMissMistakes - estimatedSliderBreaks) + 0.5) / nonMissMistakes; // There is a low probability of extra slider breaks on effective miss counts close to 1, as score based calculations are good at indicating if only a single break occurred. estimatedSliderBreaks *= DifficultyCalculationUtils.Smoothstep(effectiveMissCount, 1, 2); - return estimatedSliderBreaks * okAdjustment * DifficultyCalculationUtils.Logistic(missedComboPercent, 0.33, 15); + return estimatedSliderBreaks * nonMissMistakeAdjustment * DifficultyCalculationUtils.Logistic(missedComboPercent, 0.33, 15); } ///