1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-08 12:23:21 +08:00

added bandaid to restore some balancing

This commit is contained in:
Givikap120 2024-09-26 16:58:41 +03:00
parent 49e7686f85
commit 82cde30c27

View File

@ -67,6 +67,8 @@ namespace osu.Game.Rulesets.Osu.Difficulty
double speedValue = computeSpeedValue(score, osuAttributes);
double mechanicalValue = Math.Pow(Math.Pow(aimValue, power) + Math.Pow(speedValue, power), 1.0 / power);
mechanicalValue *= calculateMechanicalBalancingMultiplier(osuAttributes);
// Cognition
double lowARValue = computeReadingLowARValue(score, osuAttributes);
@ -396,6 +398,26 @@ namespace osu.Game.Rulesets.Osu.Difficulty
return Math.Max(countMiss, comboBasedMissCount);
}
private double calculateMechanicalBalancingMultiplier(OsuDifficultyAttributes attributes)
{
double aimValue = OsuStrainSkill.DifficultyToPerformance(attributes.AimDifficulty);
double speedValue = OsuStrainSkill.DifficultyToPerformance(attributes.SpeedDifficulty);
double lengthBonus = CalculateDefaultLengthBonus(totalHits);
aimValue *= lengthBonus;
speedValue *= lengthBonus;
double power = OsuDifficultyCalculator.SUM_POWER;
double summedValue = Math.Pow(Math.Pow(aimValue, power) + Math.Pow(speedValue, power), 1.0 / power);
const double threshold = 800;
if (summedValue < threshold)
return 1;
return (threshold + (summedValue - threshold) * 1.4) / summedValue;
}
private double getComboScalingFactor(OsuDifficultyAttributes attributes) => attributes.MaxCombo <= 0 ? 1.0 : Math.Min(Math.Pow(scoreMaxCombo, 0.8) / Math.Pow(attributes.MaxCombo, 0.8), 1.0);
private int totalHits => countGreat + countOk + countMeh + countMiss;