diff --git a/osu.Game.Rulesets.Osu/Difficulty/Evaluators/RhythmEvaluator.cs b/osu.Game.Rulesets.Osu/Difficulty/Evaluators/RhythmEvaluator.cs
index c4d78c7904..09e9011596 100644
--- a/osu.Game.Rulesets.Osu/Difficulty/Evaluators/RhythmEvaluator.cs
+++ b/osu.Game.Rulesets.Osu/Difficulty/Evaluators/RhythmEvaluator.cs
@@ -61,14 +61,14 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
}
}
- private const int history_time_max = 5 * 1000; // 5 seconds of calculatingRhythmBonus max.
- private const int history_objects_max = 32;
+ private const int history_time_max = 4 * 1000; // 5 seconds of calculatingRhythmBonus max.
+ private const int history_objects_max = 24;
private const double rhythm_multiplier = 1.32;
///
/// Calculates a rhythm multiplier for the difficulty of the tap associated with historic data of the current .
///
- public static double EvaluateDifficultyOf(DifficultyHitObject current, double clockRate)
+ public static double EvaluateDifficultyOf(DifficultyHitObject current)
{
if (current.BaseObject is Spinner)
return 0;
@@ -81,18 +81,15 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
var previousIsland = new Island(deltaDifferenceEpsilon);
Dictionary islandCounts = new Dictionary();
- int historyTimeMaxAdjusted = (int)Math.Ceiling(history_time_max / clockRate);
- int historyObjectsMaxAdjusted = (int)Math.Ceiling(history_objects_max / clockRate);
-
double startRatio = 0; // store the ratio of the current start of an island to buff for tighter rhythms
bool firstDeltaSwitch = false;
- int historicalNoteCount = Math.Min(current.Index, historyObjectsMaxAdjusted);
+ int historicalNoteCount = Math.Min(current.Index, history_objects_max);
int rhythmStart = 0;
- while (rhythmStart < historicalNoteCount - 2 && current.StartTime - current.Previous(rhythmStart).StartTime < historyTimeMaxAdjusted)
+ while (rhythmStart < historicalNoteCount - 2 && current.StartTime - current.Previous(rhythmStart).StartTime < history_time_max)
rhythmStart++;
OsuDifficultyHitObject prevObj = (OsuDifficultyHitObject)current.Previous(rhythmStart);
@@ -103,7 +100,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
{
OsuDifficultyHitObject currObj = (OsuDifficultyHitObject)current.Previous(i - 1);
- double currHistoricalDecay = (historyTimeMaxAdjusted - (current.StartTime - currObj.StartTime)) / historyTimeMaxAdjusted; // scales note 0 to 1 from history to now
+ double currHistoricalDecay = (history_time_max - (current.StartTime - currObj.StartTime)) / history_time_max; // scales note 0 to 1 from history to now
currHistoricalDecay = Math.Min((double)(historicalNoteCount - i) / historicalNoteCount, currHistoricalDecay); // either we're limited by time or limited by object count.
diff --git a/osu.Game.Rulesets.Osu/Difficulty/OsuDifficultyCalculator.cs b/osu.Game.Rulesets.Osu/Difficulty/OsuDifficultyCalculator.cs
index 835f4ee196..e93475ecff 100644
--- a/osu.Game.Rulesets.Osu/Difficulty/OsuDifficultyCalculator.cs
+++ b/osu.Game.Rulesets.Osu/Difficulty/OsuDifficultyCalculator.cs
@@ -134,7 +134,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty
{
new Aim(mods, true),
new Aim(mods, false),
- new Speed(mods, clockRate)
+ new Speed(mods)
};
if (mods.Any(h => h is OsuModFlashlight))
diff --git a/osu.Game.Rulesets.Osu/Difficulty/Skills/Speed.cs b/osu.Game.Rulesets.Osu/Difficulty/Skills/Speed.cs
index d0586662ff..f7f081b7ea 100644
--- a/osu.Game.Rulesets.Osu/Difficulty/Skills/Speed.cs
+++ b/osu.Game.Rulesets.Osu/Difficulty/Skills/Speed.cs
@@ -17,7 +17,6 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
public class Speed : OsuStrainSkill
{
private double skillMultiplier => 1.375;
- private readonly double clockRate;
private double strainDecayBase => 0.3;
private double currentStrain;
@@ -28,10 +27,9 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
private readonly List objectStrains = new List();
- public Speed(Mod[] mods, double clockRate)
+ public Speed(Mod[] mods)
: base(mods)
{
- this.clockRate = clockRate;
}
private double strainDecay(double ms) => Math.Pow(strainDecayBase, ms / 1000);
@@ -43,7 +41,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
currentStrain *= strainDecay(((OsuDifficultyHitObject)current).StrainTime);
currentStrain += SpeedEvaluator.EvaluateDifficultyOf(current) * skillMultiplier;
- currentRhythm = RhythmEvaluator.EvaluateDifficultyOf(current, clockRate);
+ currentRhythm = RhythmEvaluator.EvaluateDifficultyOf(current);
double totalStrain = currentStrain * currentRhythm;