From 948c9901e62fbd496279ef398183ded418c1534a Mon Sep 17 00:00:00 2001 From: TextAdventurer12 Date: Thu, 28 Nov 2024 01:20:11 +1300 Subject: [PATCH] create clean branch with flow aim changes --- .../Difficulty/Evaluators/AimEvaluator.cs | 9 +++++++++ .../Difficulty/Evaluators/SpeedEvaluator.cs | 2 +- osu.Game.Rulesets.Osu/Difficulty/Skills/Speed.cs | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Difficulty/Evaluators/AimEvaluator.cs b/osu.Game.Rulesets.Osu/Difficulty/Evaluators/AimEvaluator.cs index 9816f6d0a4..f5f6d3c629 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/Evaluators/AimEvaluator.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/Evaluators/AimEvaluator.cs @@ -122,6 +122,15 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators sliderBonus = osuLastObj.TravelDistance / osuLastObj.TravelTime; } + // The spacing bonus in speed evaluation + double currFlowBonus = Math.Pow((osuLastObj?.MinimumJumpDistance?? 0) / 125, 3.6); + double prevFlowBonus = Math.Pow((osuLastLastObj?.MinimumJumpDistance?? 0) / 125, 3.6); + double flowBonus = Math.Max(prevFlowBonus, currFlowBonus); + // Part of the aiming difficulty for this object is accounted for in the speed evaluator, so reduce aim difficulty here + if (flowBonus < 1) + { + aimStrain *= 0.5 + 0.5 * Math.Sqrt(flowBonus); + } // Add in acute angle bonus or wide angle bonus + velocity change bonus, whichever is larger. aimStrain += Math.Max(acuteAngleBonus * acute_angle_multiplier, wideAngleBonus * wide_angle_multiplier + velocityChangeBonus * velocity_change_multiplier); diff --git a/osu.Game.Rulesets.Osu/Difficulty/Evaluators/SpeedEvaluator.cs b/osu.Game.Rulesets.Osu/Difficulty/Evaluators/SpeedEvaluator.cs index a5f6468f17..4a3f093d21 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/Evaluators/SpeedEvaluator.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/Evaluators/SpeedEvaluator.cs @@ -54,7 +54,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators distance = Math.Min(distance, single_spacing_threshold); // Max distance bonus is 1 * `distance_multiplier` at single_spacing_threshold - double distanceBonus = Math.Pow(distance / single_spacing_threshold, 3.95) * distance_multiplier; + double distanceBonus = Math.Pow(distance / single_spacing_threshold, 3.6) * distance_multiplier; // Base difficulty with all bonuses double difficulty = (1 + speedBonus + distanceBonus) * 1000 / strainTime; diff --git a/osu.Game.Rulesets.Osu/Difficulty/Skills/Speed.cs b/osu.Game.Rulesets.Osu/Difficulty/Skills/Speed.cs index d2c4bbb618..4755d03de9 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/Skills/Speed.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/Skills/Speed.cs @@ -15,7 +15,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills /// public class Speed : OsuStrainSkill { - private double skillMultiplier => 1.430; + private double skillMultiplier => 1.58; private double strainDecayBase => 0.3; private double currentStrain;