diff --git a/osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs b/osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs index 306c491210..87a6fbb23a 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs @@ -121,13 +121,8 @@ namespace osu.Game.Rulesets.Osu.Difficulty : 0.0); } - // Scale the aim value with accuracy _alot_ - if (accuracy > .8) - aimValue *= 0.5 + Math.Pow(Math.Sin(2.5 * (accuracy - .8) * Math.PI), 2) / 2; - else - aimValue *= accuracy * (.5 / .8); - // It is important to also consider accuracy difficulty when doing that - aimValue *= 0.975 + Math.Pow(Attributes.OverallDifficulty, 2) / 2000; + // Scale the aim value with accuracy and OD + aimValue *= .975 + Math.Pow(Attributes.OverallDifficulty, 2) / 1500 + 200 * (accuracy - 1) * Math.Pow(1 / Attributes.OverallDifficulty, 2); return aimValue; } @@ -157,13 +152,8 @@ namespace osu.Game.Rulesets.Osu.Difficulty if (mods.Any(m => m is OsuModHidden)) speedValue *= 1.0 + 0.04 * (12.0 - Attributes.ApproachRate); - // Scale the speed value with accuracy _alot_ - if (accuracy > .8) - speedValue *= 0.5 + Math.Pow(Math.Sin(2.5 * (accuracy - .8) * Math.PI), 2) / 2; - else - speedValue *= accuracy * (.5 / .8); - // It is important to also consider accuracy difficulty when doing that - speedValue *= 0.95 + Math.Pow(Attributes.OverallDifficulty, 2) / 1000; + // Scale the speed value with accuracy and OD + speedValue *= .95 + Math.Pow(Attributes.OverallDifficulty, 2) / 750 + 200 * (accuracy - 1) * Math.Pow(1 / Attributes.OverallDifficulty, 2); return speedValue; }