1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-28 02:02:53 +08:00

Clamp slider end estimate to 0

This commit is contained in:
apollo-dw 2021-11-11 12:46:22 +00:00
parent 7075108062
commit 95bfb2c69b
2 changed files with 4 additions and 4 deletions

View File

@ -127,10 +127,10 @@ namespace osu.Game.Rulesets.Osu.Difficulty
// We assume 15% of sliders in a map are difficult since there's no way to tell from the performance calculator.
double estimateDifficultSliders = Attributes.SliderCount * 0.15;
double estimateSliderEndsDropped = Math.Min(estimateDifficultSliders, Math.Min(countOk + countMeh + countMiss, Attributes.MaxCombo - scoreMaxCombo));
double estimateSliderEndsDropped = Math.Clamp(Math.Min(countOk + countMeh + countMiss, Attributes.MaxCombo - scoreMaxCombo), 0, estimateDifficultSliders);
double sliderNerfFactor = (1 - Attributes.SliderFactor) * Math.Pow(1 - estimateSliderEndsDropped / estimateDifficultSliders, 3) + Attributes.SliderFactor;
aimValue *= Math.Max(Attributes.SliderFactor, sliderNerfFactor);
aimValue *= sliderNerfFactor;
aimValue *= accuracy;
// It is important to also consider accuracy difficulty when doing that.

View File

@ -20,6 +20,8 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
this.withSliders = withSliders;
}
private readonly bool withSliders;
protected override int HistoryLength => 2;
private const double wide_angle_multiplier = 1.5;
@ -32,8 +34,6 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
private double skillMultiplier => 23.25;
private double strainDecayBase => 0.15;
private bool withSliders = true;
private double strainValueOf(DifficultyHitObject current)
{
if (current.BaseObject is Spinner || Previous.Count <= 1 || Previous[0].BaseObject is Spinner)