1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-07 20:52:56 +08:00

osu!taiko new rhythm penalty for long intervals using stamina difficulty (#31573)

* Replace long interval nerf with a new one that uses stamina difficulty

* Turn tabs into spaces

* Update unit tests

---------

Co-authored-by: StanR <hi@stanr.info>
This commit is contained in:
Eloise 2025-01-20 08:40:52 +00:00 committed by GitHub
parent 2d0bc6cb62
commit e57565435e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 6 additions and 5 deletions

View File

@ -14,13 +14,13 @@ namespace osu.Game.Rulesets.Taiko.Tests
{
protected override string ResourceAssembly => "osu.Game.Rulesets.Taiko";
[TestCase(3.3056113401782845d, 200, "diffcalc-test")]
[TestCase(3.3056113401782845d, 200, "diffcalc-test-strong")]
[TestCase(3.305554470092722d, 200, "diffcalc-test")]
[TestCase(3.305554470092722d, 200, "diffcalc-test-strong")]
public void Test(double expectedStarRating, int expectedMaxCombo, string name)
=> base.Test(expectedStarRating, expectedMaxCombo, name);
[TestCase(4.4473902679506896d, 200, "diffcalc-test")]
[TestCase(4.4473902679506896d, 200, "diffcalc-test-strong")]
[TestCase(4.4472572672057815d, 200, "diffcalc-test")]
[TestCase(4.4472572672057815d, 200, "diffcalc-test-strong")]
public void TestClockRateAdjusted(double expectedStarRating, int expectedMaxCombo, string name)
=> Test(expectedStarRating, expectedMaxCombo, name, new TaikoModDoubleTime());

View File

@ -30,7 +30,8 @@ namespace osu.Game.Rulesets.Taiko.Difficulty.Skills
double difficulty = RhythmEvaluator.EvaluateDifficultyOf(current, greatHitWindow);
// To prevent abuse of exceedingly long intervals between awkward rhythms, we penalise its difficulty.
difficulty *= DifficultyCalculationUtils.Logistic(current.DeltaTime, 350, -1 / 25.0, 0.5) + 0.5;
double staminaDifficulty = StaminaEvaluator.EvaluateDifficultyOf(current) - 0.5; // Remove base strain
difficulty *= DifficultyCalculationUtils.Logistic(staminaDifficulty, 1 / 15.0, 50.0);
return difficulty;
}