mirror of
https://github.com/ppy/osu
synced 2025-01-10 08:09:40 +00:00
add large tick misses back into effectivemisscount
This commit is contained in:
parent
6d4cb608ab
commit
31e0853641
@ -53,7 +53,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty
|
||||
{
|
||||
countSliderEndsDropped = osuAttributes.SliderCount - score.Statistics.GetValueOrDefault(HitResult.SliderTailHit);
|
||||
countLargeTickMiss = score.Statistics.GetValueOrDefault(HitResult.LargeTickMiss);
|
||||
effectiveMissCount = countMiss;
|
||||
effectiveMissCount = calculateEffectiveLazerMissCount(osuAttributes);
|
||||
}
|
||||
|
||||
double multiplier = PERFORMANCE_BASE_MULTIPLIER;
|
||||
@ -274,6 +274,22 @@ namespace osu.Game.Rulesets.Osu.Difficulty
|
||||
|
||||
return Math.Max(countMiss, comboBasedMissCount);
|
||||
}
|
||||
private double calculateEffectiveLazerMissCount(OsuDifficultyAttributes attributes)
|
||||
{
|
||||
// Cap LargeTickMisses to avoid buzz sliders giving high miss counts
|
||||
// Uses very similar formula to calculateEffectiveMissCount(), but utilizes osu!lazer's extra data
|
||||
double comboBasedMissCount = 0.0;
|
||||
|
||||
if (attributes.SliderCount > 0)
|
||||
{
|
||||
comboBasedMissCount = (attributes.MaxCombo - countSliderEndsDropped) / Math.Max(1.0, scoreMaxCombo);
|
||||
}
|
||||
|
||||
// Clamp miss count to maximum amount of possible breaks
|
||||
comboBasedMissCount = Math.Min(comboBasedMissCount, countOk + countMeh + countMiss + countLargeTickMiss);
|
||||
|
||||
return Math.Max(countMiss, comboBasedMissCount);
|
||||
}
|
||||
|
||||
// Miss penalty assumes that a player will miss on the hardest parts of a map,
|
||||
// so we use the amount of relatively difficult sections to adjust miss penalty
|
||||
|
Loading…
Reference in New Issue
Block a user