1
0
mirror of https://github.com/ppy/osu.git synced 2026-05-25 10:30:16 +08:00

osu!taiko changes to length bonus using consistency factor (#33582)

* Implement new formulas for length bonus

* Add comment(s)

* Fix up HDFL thing
This commit is contained in:
Eloise
2025-06-10 11:31:11 +01:00
committed by GitHub
Unverified
parent 699fbb1a85
commit 7066f3def7
@@ -86,7 +86,9 @@ namespace osu.Game.Rulesets.Taiko.Difficulty
difficultyValue *= 1 + 0.10 * Math.Max(0, attributes.StarRating - 10);
double lengthBonus = 1 + 0.1 * Math.Min(1.0, totalHits / 1500.0);
// Applies a bonus to maps with more total difficulty, calculating this with a map's total hits and consistency factor.
double totalDifficultHits = totalHits * Math.Pow(attributes.ConsistencyFactor, 0.5);
double lengthBonus = 1 + 0.25 * totalDifficultHits / (totalDifficultHits + 4000);
difficultyValue *= lengthBonus;
// Scales miss penalty by the total hits of a map, making misses more punishing on maps with fewer objects.
@@ -119,11 +121,16 @@ namespace osu.Game.Rulesets.Taiko.Difficulty
if (score.Mods.Any(m => m is ModHidden) && !isConvert)
accuracyValue *= 1.075;
double lengthBonus = Math.Min(1.15, Math.Pow(totalHits / 1500.0, 0.3));
// Applies a bonus to maps with more total difficulty, calculating this with a map's total hits and consistency factor.
double totalDifficultHits = totalHits * Math.Pow(attributes.ConsistencyFactor, 0.5);
double lengthBonus = 1 + 0.4 * totalDifficultHits / (totalDifficultHits + 4000);
accuracyValue *= lengthBonus;
// Applies a bonus to maps with more total memory required with HDFL.
double memoryLengthBonus = Math.Min(1.15, Math.Pow(totalHits / 1500.0, 0.3));
// Slight HDFL Bonus for accuracy. A clamp is used to prevent against negative values.
if (score.Mods.Any(m => m is ModFlashlight<TaikoHitObject>) && score.Mods.Any(m => m is ModHidden) && !isConvert)
accuracyValue *= Math.Max(1.0, 1.05 * lengthBonus);
accuracyValue *= Math.Max(1.0, 1.05 * memoryLengthBonus);
return accuracyValue;
}