From 0af73152816bc9c52c6de306b7c946e474141d4e Mon Sep 17 00:00:00 2001 From: Givikap120 Date: Sat, 13 Jul 2024 19:58:08 +0300 Subject: [PATCH] rebalanced high AR --- .../Difficulty/Evaluators/ReadingEvaluator.cs | 4 ++-- .../Difficulty/Skills/Reading.cs | 15 ++++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Difficulty/Evaluators/ReadingEvaluator.cs b/osu.Game.Rulesets.Osu/Difficulty/Evaluators/ReadingEvaluator.cs index 936766a7a9..48a2fe80f0 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/Evaluators/ReadingEvaluator.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/Evaluators/ReadingEvaluator.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.Linq; using osu.Game.Rulesets.Difficulty.Preprocessing; using osu.Game.Rulesets.Osu.Difficulty.Preprocessing; +using osu.Game.Rulesets.Osu.Difficulty.Skills; using osu.Game.Rulesets.Osu.Objects; namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators @@ -348,8 +349,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators else value = Math.Exp(9.07583 - 80.0 * preempt / 3); - // The power is 2 times higher to compensate sqrt in high AR skill - return Math.Pow(value, 2); + return Math.Pow(value, 1.0 / ReadingHighAR.MECHANICAL_PP_POWER); } } } diff --git a/osu.Game.Rulesets.Osu/Difficulty/Skills/Reading.cs b/osu.Game.Rulesets.Osu/Difficulty/Skills/Reading.cs index 2a92e0e4f2..c749729ac9 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/Skills/Reading.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/Skills/Reading.cs @@ -118,9 +118,9 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills public class ReadingHighAR : GraphSkill { - - private const double skill_multiplier = 0.13727; - private const double component_default_value_multiplier = 445; + public const double MECHANICAL_PP_POWER = 0.6; + private const double skill_multiplier = 9.3; + private const double component_default_value_multiplier = 280; public ReadingHighAR(Mod[] mods) : base(mods) { @@ -169,8 +169,8 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills public override double DifficultyValue() { // Simulating summing to get the most correct value possible - double aimValue = Math.Sqrt(aimComponent.DifficultyValue() * skill_multiplier) * OsuDifficultyCalculator.DIFFICULTY_MULTIPLIER; - double speedValue = Math.Sqrt(speedComponent.DifficultyValue() * skill_multiplier) * OsuDifficultyCalculator.DIFFICULTY_MULTIPLIER; + double aimValue = Math.Sqrt(aimComponent.DifficultyValue()) * OsuDifficultyCalculator.DIFFICULTY_MULTIPLIER; + double speedValue = Math.Sqrt(speedComponent.DifficultyValue()) * OsuDifficultyCalculator.DIFFICULTY_MULTIPLIER; double aimPerformance = OsuStrainSkill.DifficultyToPerformance(aimValue); double speedPerformance = OsuStrainSkill.DifficultyToPerformance(speedValue); @@ -180,13 +180,14 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills // Length bonus is in SR to not inflate Star Rating of short AR11 maps double lengthBonus = OsuPerformanceCalculator.CalculateDefaultLengthBonus(objectsCount); + lengthBonus = Math.Pow(lengthBonus, 0.5 / MECHANICAL_PP_POWER); // Get average preempt of objects double averagePreempt = objectsPreemptSum / objectsCount / 1000; // Increase length bonus for long maps with very high AR // https://www.desmos.com/calculator/wz9wckqgzu - double lengthBonusPower = 2 + 2 * Math.Pow(0.1, Math.Pow(2.3 * averagePreempt, 8)); + double lengthBonusPower = 1 + 0.75 * Math.Pow(0.1, Math.Pow(2.3 * averagePreempt, 8)); // Be sure that increasing AR won't decrease pp if (lengthBonus < 1) lengthBonusPower = 2; @@ -197,7 +198,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills double difficultyValue = Math.Pow(adjustedDifficulty / OsuDifficultyCalculator.DIFFICULTY_MULTIPLIER, 2.0); // Sqrt value to make difficulty depend less on mechanical difficulty - return 53.2 * Math.Sqrt(difficultyValue); + return skill_multiplier * Math.Pow(difficultyValue, MECHANICAL_PP_POWER); } public class HighARAimComponent : Aim