Make relax ok/meh nerfs less drastic, add flashlight nerf, remove ar bonus for relax

This commit is contained in:
StanR 2022-07-04 19:59:30 +03:00
parent 45258b3f14
commit 212360f67e
2 changed files with 11 additions and 2 deletions

View File

@ -44,7 +44,10 @@ protected override DifficultyAttributes CreateDifficultyAttributes(IBeatmap beat
double sliderFactor = aimRating > 0 ? aimRatingNoSliders / aimRating : 1;
if (mods.Any(h => h is OsuModRelax))
{
speedRating = 0.0;
flashlightRating *= 0.75;
}
double baseAimPerformance = Math.Pow(5 * Math.Max(1, aimRating / 0.0675) - 4, 3) / 100000;
double baseSpeedPerformance = Math.Pow(5 * Math.Max(1, speedRating / 0.0675) - 4, 3) / 100000;

View File

@ -52,9 +52,9 @@ protected override PerformanceAttributes CreatePerformanceAttributes(ScoreInfo s
if (score.Mods.Any(h => h is OsuModRelax))
{
// As we're adding Oks and Mehs to an approximated number of combo breaks the result can be higher than total hits in specific scenarios (which breaks some calculations) so we need to clamp it.
effectiveMissCount = Math.Min(effectiveMissCount + countOk + countMeh, totalHits);
effectiveMissCount = Math.Min(effectiveMissCount + countOk * 0.33 + countMeh * 0.66, totalHits);
multiplier *= 0.6;
multiplier *= 0.7;
}
double aimValue = computeAimValue(score, osuAttributes);
@ -105,6 +105,9 @@ private double computeAimValue(ScoreInfo score, OsuDifficultyAttributes attribut
else if (attributes.ApproachRate < 8.0)
approachRateFactor = 0.1 * (8.0 - attributes.ApproachRate);
if (score.Mods.Any(h => h is OsuModRelax))
approachRateFactor = 0.0;
aimValue *= 1.0 + approachRateFactor * lengthBonus; // Buff for longer maps with high AR.
if (score.Mods.Any(m => m is OsuModBlinds))
@ -134,6 +137,9 @@ private double computeAimValue(ScoreInfo score, OsuDifficultyAttributes attribut
private double computeSpeedValue(ScoreInfo score, OsuDifficultyAttributes attributes)
{
if (score.Mods.Any(h => h is OsuModRelax))
return 0.0;
double speedValue = Math.Pow(5.0 * Math.Max(1.0, attributes.SpeedDifficulty / 0.0675) - 4.0, 3.0) / 100000.0;
double lengthBonus = 0.95 + 0.4 * Math.Min(1.0, totalHits / 2000.0) +