Estimate number of difficult sliders, and increase assumed slider radius

This commit is contained in:
apollo-dw
2021-11-11 00:42:06 +00:00
parent 2d2a6d8a18
commit 5df694e912
2 changed files with 8 additions and 3 deletions

View File

@ -125,9 +125,14 @@ namespace osu.Game.Rulesets.Osu.Difficulty
aimValue *= 1.0 + 0.04 * (12.0 - Attributes.ApproachRate);
}
// Estimate the number of sliderends dropped
// We assume 20% of sliders in a map are difficult since there's no way to tell from pp-side.
double estimateDifficultSliders = Attributes.SliderCount * 0.15;
double estimateSliderEndsDropped = Math.Min(Attributes.SliderCount, Math.Min(countOk + countMeh + countMiss, Attributes.MaxCombo - scoreMaxCombo));
aimValue *= (1 - Attributes.SliderFactor) * Math.Pow(1 - (estimateSliderEndsDropped / Attributes.SliderCount), 5.5) + Attributes.SliderFactor;
estimateSliderEndsDropped = Math.Min(estimateSliderEndsDropped, estimateDifficultSliders);
double sliderNerfFactor = (1 - Attributes.SliderFactor) * Math.Pow(1 - estimateSliderEndsDropped / estimateDifficultSliders, 5.5) + Attributes.SliderFactor;
aimValue *= Math.Max(Attributes.SliderFactor, sliderNerfFactor);
aimValue *= accuracy;
// It is important to also consider accuracy difficulty when doing that.