mirror of
https://github.com/ppy/osu.git
synced 2025-02-14 23:33:23 +08:00
Update OsuStrainSkill.cs
This commit is contained in:
parent
f11af6c507
commit
5505eaf168
@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
@ -23,6 +23,12 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
protected virtual double ReducedStrainBaseline => 0.75;
|
protected virtual double ReducedStrainBaseline => 0.75;
|
||||||
|
|
||||||
|
protected double MaxDifficulty; //Max difficulty of a single object
|
||||||
|
|
||||||
|
protected double SummedDifficulty; //Summed difficulty of a single object
|
||||||
|
|
||||||
|
protected double AddedStrain; //Summed difficulty of a single object
|
||||||
|
|
||||||
protected OsuStrainSkill(Mod[] mods)
|
protected OsuStrainSkill(Mod[] mods)
|
||||||
: base(mods)
|
: base(mods)
|
||||||
{
|
{
|
||||||
@ -39,6 +45,12 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
|
|
||||||
List<double> strains = peaks.OrderDescending().ToList();
|
List<double> strains = peaks.OrderDescending().ToList();
|
||||||
|
|
||||||
|
foreach (double strain in strains.OrderDescending())
|
||||||
|
{
|
||||||
|
AddStrain(strain);
|
||||||
|
AddedStrain = strains.Count;
|
||||||
|
}
|
||||||
|
|
||||||
// We are reducing the highest strains first to account for extreme difficulty spikes
|
// We are reducing the highest strains first to account for extreme difficulty spikes
|
||||||
for (int i = 0; i < Math.Min(strains.Count, ReducedSectionCount); i++)
|
for (int i = 0; i < Math.Min(strains.Count, ReducedSectionCount); i++)
|
||||||
{
|
{
|
||||||
@ -57,6 +69,16 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
return difficulty;
|
return difficulty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected virtual void AddStrain(double currentStrain)
|
||||||
|
{
|
||||||
|
SummedDifficulty += currentStrain;
|
||||||
|
|
||||||
|
if (MaxDifficulty < currentStrain)
|
||||||
|
MaxDifficulty = currentStrain;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override double DifficultyFactor() => SummedDifficulty / AddedStrain / MaxDifficulty;
|
||||||
|
|
||||||
public static double DifficultyToPerformance(double difficulty) => Math.Pow(5.0 * Math.Max(1.0, difficulty / 0.0675) - 4.0, 3.0) / 100000.0;
|
public static double DifficultyToPerformance(double difficulty) => Math.Pow(5.0 * Math.Max(1.0, difficulty / 0.0675) - 4.0, 3.0) / 100000.0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user