diff --git a/osu.Game.Rulesets.Osu/Difficulty/OsuRatingCalculator.cs b/osu.Game.Rulesets.Osu/Difficulty/OsuRatingCalculator.cs index 42a6d65cd5..9ddd658d17 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/OsuRatingCalculator.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/OsuRatingCalculator.cs @@ -31,9 +31,6 @@ namespace osu.Game.Rulesets.Osu.Difficulty double aimRating = CalculateDifficultyRating(aimDifficultyValue); - if (mods.Any(m => m is OsuModTouchDevice)) - aimRating = Math.Pow(aimRating, 0.8); - if (mods.Any(m => m is OsuModRelax)) aimRating *= 0.9; diff --git a/osu.Game.Rulesets.Osu/Difficulty/Skills/Aim.cs b/osu.Game.Rulesets.Osu/Difficulty/Skills/Aim.cs index 6a131511ef..17e5990895 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/Skills/Aim.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/Skills/Aim.cs @@ -10,6 +10,7 @@ using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Osu.Difficulty.Evaluators; using osu.Game.Rulesets.Osu.Difficulty.Preprocessing; using osu.Game.Rulesets.Osu.Difficulty.Utils; +using osu.Game.Rulesets.Osu.Mods; using osu.Game.Rulesets.Osu.Objects; namespace osu.Game.Rulesets.Osu.Difficulty.Skills @@ -50,11 +51,20 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills double decayAim = strainDecayAim(((OsuDifficultyHitObject)current).AdjustedDeltaTime); double decaySpeed = strainDecaySpeed(((OsuDifficultyHitObject)current).AdjustedDeltaTime); + double aimDifficulty = AimEvaluator.EvaluateDifficultyOf(current, IncludeSliders); + double speedDifficulty = SpeedAimEvaluator.EvaluateDifficultyOf(current); + + if (Mods.Any(m => m is OsuModTouchDevice)) + { + aimDifficulty = Math.Pow(aimDifficulty, 0.8); + speedDifficulty = Math.Pow(speedDifficulty, 0.95); + } + currentAimStrain *= decayAim; - currentAimStrain += AimEvaluator.EvaluateDifficultyOf(current, IncludeSliders) * (1 - decayAim) * skillMultiplierAim; + currentAimStrain += aimDifficulty * (1 - decayAim) * skillMultiplierAim; currentSpeedStrain *= decaySpeed; - currentSpeedStrain += SpeedAimEvaluator.EvaluateDifficultyOf(current) * (1 - decaySpeed) * skillMultiplierSpeed; + currentSpeedStrain += speedDifficulty * (1 - decaySpeed) * skillMultiplierSpeed; double totalStrain = DifficultyCalculationUtils.Norm(meanExponent, currentAimStrain, currentSpeedStrain);