diff --git a/osu.Game.Rulesets.Catch/CatchRuleset.cs b/osu.Game.Rulesets.Catch/CatchRuleset.cs
index 7327fb4513..94c8c36c09 100644
--- a/osu.Game.Rulesets.Catch/CatchRuleset.cs
+++ b/osu.Game.Rulesets.Catch/CatchRuleset.cs
@@ -234,9 +234,9 @@ namespace osu.Game.Rulesets.Catch
};
}
- public override BeatmapDifficulty GetRateAdjustedDifficulty(IBeatmapDifficultyInfo baseDifficulty, double rate)
+ public override BeatmapDifficulty GetRateAdjustedDisplayDifficulty(IBeatmapDifficultyInfo difficulty, double rate)
{
- BeatmapDifficulty adjustedDifficulty = new BeatmapDifficulty(baseDifficulty);
+ BeatmapDifficulty adjustedDifficulty = new BeatmapDifficulty(difficulty);
double preempt = adjustedDifficulty.ApproachRate < 6 ? (1200.0 + 600.0 * (5 - adjustedDifficulty.ApproachRate) / 5) : (1200.0 - 750.0 * (adjustedDifficulty.ApproachRate - 5) / 5);
diff --git a/osu.Game.Rulesets.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs
index f4cf9409e8..a99f0df066 100644
--- a/osu.Game.Rulesets.Osu/OsuRuleset.cs
+++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs
@@ -330,9 +330,9 @@ namespace osu.Game.Rulesets.Osu
public override RulesetSetupSection CreateEditorSetupSection() => new OsuSetupSection();
- public override BeatmapDifficulty GetRateAdjustedDifficulty(IBeatmapDifficultyInfo baseDifficulty, double rate)
+ public override BeatmapDifficulty GetRateAdjustedDisplayDifficulty(IBeatmapDifficultyInfo difficulty, double rate)
{
- BeatmapDifficulty adjustedDifficulty = new BeatmapDifficulty(baseDifficulty);
+ BeatmapDifficulty adjustedDifficulty = new BeatmapDifficulty(difficulty);
double preempt = adjustedDifficulty.ApproachRate < 5 ? (1200.0 + 600.0 * (5 - adjustedDifficulty.ApproachRate) / 5) : (1200.0 - 750.0 * (adjustedDifficulty.ApproachRate - 5) / 5);
preempt /= rate;
diff --git a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs
index 88d0087622..6e5cdbf2d1 100644
--- a/osu.Game.Rulesets.Taiko/TaikoRuleset.cs
+++ b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs
@@ -265,9 +265,9 @@ namespace osu.Game.Rulesets.Taiko
};
}
- public override BeatmapDifficulty GetRateAdjustedDifficulty(IBeatmapDifficultyInfo baseDifficulty, double rate)
+ public override BeatmapDifficulty GetRateAdjustedDisplayDifficulty(IBeatmapDifficultyInfo difficulty, double rate)
{
- BeatmapDifficulty adjustedDifficulty = new BeatmapDifficulty(baseDifficulty);
+ BeatmapDifficulty adjustedDifficulty = new BeatmapDifficulty(difficulty);
double hitwindow = 35.0 - 15.0 * (adjustedDifficulty.OverallDifficulty - 5) / 5;
hitwindow /= rate;
diff --git a/osu.Game/Overlays/Mods/BeatmapAttributesDisplay.cs b/osu.Game/Overlays/Mods/BeatmapAttributesDisplay.cs
index bf39666f83..6270b2bb49 100644
--- a/osu.Game/Overlays/Mods/BeatmapAttributesDisplay.cs
+++ b/osu.Game/Overlays/Mods/BeatmapAttributesDisplay.cs
@@ -179,7 +179,7 @@ namespace osu.Game.Overlays.Mods
mod.ApplyToDifficulty(originalDifficulty);
Ruleset ruleset = gameRuleset.Value.CreateInstance();
- adjustedDifficulty = ruleset.GetRateAdjustedDifficulty(originalDifficulty, rate);
+ adjustedDifficulty = ruleset.GetRateAdjustedDisplayDifficulty(originalDifficulty, rate);
haveRateChangedValues = hasRateAdjustedProperties(originalDifficulty, adjustedDifficulty);
diff --git a/osu.Game/Rulesets/Ruleset.cs b/osu.Game/Rulesets/Ruleset.cs
index edfe691b86..c7c81ecb55 100644
--- a/osu.Game/Rulesets/Ruleset.cs
+++ b/osu.Game/Rulesets/Ruleset.cs
@@ -377,6 +377,16 @@ namespace osu.Game.Rulesets
/// The display name.
public virtual LocalisableString GetDisplayNameForHitResult(HitResult result) => result.GetLocalisableDescription();
+ ///
+ /// Applies changes to difficulty attributes for presenting to a user a rough estimate of how rate adjust mods affect difficulty.
+ /// Importantly, this should NOT BE USED FOR ANY CALCULATIONS.
+ /// It is also not always correct, and arguably is never correct depending on your frame of mind.
+ ///
+ /// >The that will be adjusted.
+ /// The rate adjustment multiplier from mods. For example 1.5 for DT.
+ /// The adjusted difficulty attributes.
+ public virtual BeatmapDifficulty GetRateAdjustedDisplayDifficulty(IBeatmapDifficultyInfo difficulty, double rate) => new BeatmapDifficulty(difficulty);
+
///
/// Creates ruleset-specific beatmap filter criteria to be used on the song select screen.
///
@@ -391,14 +401,5 @@ namespace osu.Game.Rulesets
/// Can be overridden to alter the difficulty section to the editor beatmap setup screen.
///
public virtual DifficultySection? CreateEditorDifficultySection() => null;
-
- ///
- /// Changes after they're adjusted according to rate.
- /// Doesn't change any attributes by default.
- ///
- /// >The that will be adjusted.
- /// Rate of the gameplay. For example 1.5 for DT.
- /// Copy of difficulty info with values changed according to rate and ruleset-specific behaviour.
- public virtual BeatmapDifficulty GetRateAdjustedDifficulty(IBeatmapDifficultyInfo baseDifficulty, double rate) => new BeatmapDifficulty(baseDifficulty);
}
}
diff --git a/osu.Game/Screens/Select/Details/AdvancedStats.cs b/osu.Game/Screens/Select/Details/AdvancedStats.cs
index 85eb81eb9e..f617cb1d8e 100644
--- a/osu.Game/Screens/Select/Details/AdvancedStats.cs
+++ b/osu.Game/Screens/Select/Details/AdvancedStats.cs
@@ -137,7 +137,7 @@ namespace osu.Game.Screens.Select.Details
foreach (var mod in mods.Value.OfType())
rate = mod.ApplyToRate(0, rate);
- adjustedDifficulty = ruleset.GetRateAdjustedDifficulty(originalDifficulty, rate);
+ adjustedDifficulty = ruleset.GetRateAdjustedDisplayDifficulty(originalDifficulty, rate);
haveRateChangedValues = hasRateAdjustedProperties(originalDifficulty, adjustedDifficulty);
}
}