Skip to content

Commit 8c1e678

Browse files
committed
Use betterAccuracyPercentage Everywhere
Someone brought this up during discussion, and from what I can tell, there's no real reason why this wasn't done either. All this does is use the number of circles instead of the number of objects for accuracy calculations, since circles are the only objects that check for accuracy. Could also be merged with ppy#27063 to use circles + sliders when sliders check for accuracy (aka when classic mod is disabled). Currently the code for that is included but commented out.
1 parent a039ee8 commit 8c1e678

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs

+3-4
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ protected override PerformanceAttributes CreatePerformanceAttributes(ScoreInfo s
5151

5252
usingClassicSliderAccuracy = score.Mods.OfType<OsuModClassic>().Any(m => m.NoSliderHeadAccuracy.Value);
5353

54-
accuracy = score.Accuracy;
5554
scoreMaxCombo = score.MaxCombo;
5655
countGreat = score.Statistics.GetValueOrDefault(HitResult.Great);
5756
countOk = score.Statistics.GetValueOrDefault(HitResult.Ok);
@@ -256,12 +255,12 @@ private double computeAccuracyValue(ScoreInfo score, OsuDifficultyAttributes att
256255
betterAccuracyPercentage = 0;
257256

258257
// It is possible to reach a negative accuracy with this formula. Cap it at zero - zero points.
259-
if (betterAccuracyPercentage < 0)
260-
betterAccuracyPercentage = 0;
258+
if (accuracy < 0)
259+
accuracy = 0;
261260

262261
// Lots of arbitrary values from testing.
263262
// Considering to use derivation from perfect accuracy in a probabilistic manner - assume normal distribution.
264-
double accuracyValue = Math.Pow(1.52163, attributes.OverallDifficulty) * Math.Pow(betterAccuracyPercentage, 24) * 2.83;
263+
double accuracyValue = Math.Pow(1.52163, attributes.OverallDifficulty) * Math.Pow(accuracy, 24) * 2.83;
265264

266265
// Bonus for many hitcircles - it's harder to keep good accuracy up for longer.
267266
accuracyValue *= Math.Min(1.15, Math.Pow(amountHitObjectsWithAccuracy / 1000.0, 0.3));

0 commit comments

Comments
 (0)