From a118095c4e2c32e897c7d20c67b391b27ac80043 Mon Sep 17 00:00:00 2001 From: kwotaq Date: Mon, 30 Sep 2024 21:33:04 +0300 Subject: [PATCH] Balance update --- .../Difficulty/OsuPerformanceCalculator.cs | 11 ++++++----- .../Difficulty/Skills/OsuStrainSkill.cs | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs b/osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs index e9148f639250..65ecbf6f7f7b 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs @@ -14,7 +14,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty { public class OsuPerformanceCalculator : PerformanceCalculator { - public const double PERFORMANCE_BASE_MULTIPLIER = 1.14; // This is being adjusted to keep the final pp value scaled around what it used to be when changing things. + public const double PERFORMANCE_BASE_MULTIPLIER = 1.195; // This is being adjusted to keep the final pp value scaled around what it used to be when changing things. private double accuracy; private int scoreMaxCombo; @@ -90,9 +90,10 @@ private double computeAimValue(ScoreInfo score, OsuDifficultyAttributes attribut double aimValue = OsuStrainSkill.DifficultyToPerformance(attributes.AimDifficulty); double lengthObjectCount = attributes.AimDifficultStrainCount * 3; - double lengthBonus = 0.9 + lengthObjectCount / 2000.0; + double lengthBonus = 0.9 + Math.Min(1.0, lengthObjectCount / 2000.0) + + (lengthObjectCount > 2000 ? Math.Log10(lengthObjectCount / 2000.0) : 0.0); aimValue *= lengthBonus; - + if (effectiveMissCount > 0) aimValue *= 0.97 * Math.Pow(1 - Math.Pow(effectiveMissCount / totalHits, 0.775), Math.Pow(effectiveMissCount, .875)); @@ -143,12 +144,12 @@ private double computeSpeedValue(ScoreInfo score, OsuDifficultyAttributes attrib double lengthObjectCount = (totalHits + attributes.SpeedDifficultStrainCount) / 2; double lengthBonus = 0.9 + 0.45 * Math.Min(1.0, lengthObjectCount / 2000.0) + - (lengthObjectCount > 2000 ? Math.Log10(lengthObjectCount / 2000.0) * 0.4 : 0.0); + (lengthObjectCount > 2000 ? Math.Log10(lengthObjectCount / 2000.0) * 0.3 : 0.0); speedValue *= lengthBonus; if (effectiveMissCount > 0) speedValue *= 0.97 * Math.Pow(1 - Math.Pow(effectiveMissCount / totalHits, 0.775), Math.Pow(effectiveMissCount, .875)); - + speedValue *= getComboScalingFactor(attributes); double approachRateFactor = 0.0; diff --git a/osu.Game.Rulesets.Osu/Difficulty/Skills/OsuStrainSkill.cs b/osu.Game.Rulesets.Osu/Difficulty/Skills/OsuStrainSkill.cs index 2804a0ff96e0..8d0f0a32d7a9 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/Skills/OsuStrainSkill.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/Skills/OsuStrainSkill.cs @@ -73,8 +73,8 @@ public double CountDifficultStrains() // Use a weighted sum of all strains. Constants are arbitrary and give nice values double totalStrains = ObjectStrains.Count; - double rateOfChange = 10 + 13000.0 / totalStrains; - return ObjectStrains.Sum(s => 1.1 / (1 + Math.Exp(-10 * (s / consistentTopStrain - 0.86 - (rateOfChange / totalStrains))))); + double rateOfChange = 50 + 15000.0 / totalStrains; + return ObjectStrains.Sum(s => 1.1 / (1 + Math.Exp(-10 * (s / consistentTopStrain - 0.88 - (rateOfChange / totalStrains))))); } public static double DifficultyToPerformance(double difficulty) => Math.Pow(5.0 * Math.Max(1.0, difficulty / 0.0675) - 4.0, 3.0) / 100000.0;