mirror of
https://github.com/ppy/osu.git
synced 2025-02-15 04:52:57 +08:00
Balancing
This commit is contained in:
parent
856b631471
commit
07cb7011e5
@ -4,7 +4,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using osu.Framework.Extensions.ObjectExtensions;
|
|
||||||
using osu.Game.Rulesets.Difficulty.Preprocessing;
|
using osu.Game.Rulesets.Difficulty.Preprocessing;
|
||||||
using osu.Game.Rulesets.Osu.Difficulty.Preprocessing;
|
using osu.Game.Rulesets.Osu.Difficulty.Preprocessing;
|
||||||
using osu.Game.Rulesets.Osu.Objects;
|
using osu.Game.Rulesets.Osu.Objects;
|
||||||
@ -25,7 +24,8 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
|
|||||||
double density = 0;
|
double density = 0;
|
||||||
double densityAnglesNerf = -2; // we have threshold of 2
|
double densityAnglesNerf = -2; // we have threshold of 2
|
||||||
|
|
||||||
OsuDifficultyHitObject? prevObj0 = null;
|
// Despite being called prev, it's actually more late in time
|
||||||
|
OsuDifficultyHitObject prevObj0 = currObj;
|
||||||
|
|
||||||
var readingObjects = currObj.ReadingObjects;
|
var readingObjects = currObj.ReadingObjects;
|
||||||
for (int i = 0; i < readingObjects.Count; i++)
|
for (int i = 0; i < readingObjects.Count; i++)
|
||||||
@ -45,9 +45,6 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
|
|||||||
double timeBetweenCurrAndLoopObj = currObj.StartTime - loopObj.StartTime;
|
double timeBetweenCurrAndLoopObj = currObj.StartTime - loopObj.StartTime;
|
||||||
loopDifficulty *= getTimeNerfFactor(timeBetweenCurrAndLoopObj);
|
loopDifficulty *= getTimeNerfFactor(timeBetweenCurrAndLoopObj);
|
||||||
|
|
||||||
if (prevObj0.IsNull())
|
|
||||||
prevObj0 = (OsuDifficultyHitObject)loopObj.Previous(0);
|
|
||||||
|
|
||||||
// Only if next object is slower, representing break from many notes in a row
|
// Only if next object is slower, representing break from many notes in a row
|
||||||
if (loopObj.StrainTime > prevObj0.StrainTime)
|
if (loopObj.StrainTime > prevObj0.StrainTime)
|
||||||
{
|
{
|
||||||
@ -294,8 +291,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
|
|||||||
double density = ReadingEvaluator.EvaluateDensityOf(current, false);
|
double density = ReadingEvaluator.EvaluateDensityOf(current, false);
|
||||||
double preempt = currObj.Preempt / 1000;
|
double preempt = currObj.Preempt / 1000;
|
||||||
|
|
||||||
// Consider that density matters only starting from 3rd note on the screen
|
double densityFactor = Math.Pow(density / 6.2, 1.5);
|
||||||
double densityFactor = Math.Max(0, density - 1) / 5;
|
|
||||||
|
|
||||||
double invisibilityFactor;
|
double invisibilityFactor;
|
||||||
|
|
||||||
|
@ -231,11 +231,9 @@ namespace osu.Game.Rulesets.Osu.Difficulty
|
|||||||
accuracyValue *= 1.02;
|
accuracyValue *= 1.02;
|
||||||
|
|
||||||
// Visual indication bonus
|
// Visual indication bonus
|
||||||
double visualIndicationBonus = 1.0 + 0.1 * logistic(8.0 - attributes.ApproachRate);
|
accuracyValue *= 1.0 + 0.2 * logistic(8.0 - attributes.ApproachRate);
|
||||||
|
|
||||||
accuracyValue *= visualIndicationBonus;
|
|
||||||
if (score.Mods.Any(h => h is OsuModHidden || h is OsuModTraceable))
|
if (score.Mods.Any(h => h is OsuModHidden || h is OsuModTraceable))
|
||||||
accuracyValue *= visualIndicationBonus;
|
accuracyValue *= 1.0 + 0.1 * logistic(8.0 - attributes.ApproachRate);
|
||||||
|
|
||||||
return accuracyValue;
|
return accuracyValue;
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
public class ReadingLowAR : GraphSkill
|
public class ReadingLowAR : GraphSkill
|
||||||
{
|
{
|
||||||
private readonly List<double> difficulties = new List<double>();
|
private readonly List<double> difficulties = new List<double>();
|
||||||
private double skillMultiplier => 1.25;
|
private double skillMultiplier => 1.26;
|
||||||
private double aimComponentMultiplier => 0.4;
|
private double aimComponentMultiplier => 0.4;
|
||||||
|
|
||||||
public ReadingLowAR(Mod[] mods)
|
public ReadingLowAR(Mod[] mods)
|
||||||
@ -86,8 +86,8 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
return difficulty;
|
return difficulty;
|
||||||
}
|
}
|
||||||
public static double DifficultyToPerformance(double difficulty) => Math.Max(
|
public static double DifficultyToPerformance(double difficulty) => Math.Max(
|
||||||
Math.Max(Math.Pow(difficulty, 1) * 13.0, Math.Pow(difficulty, 2) * 13.0),
|
Math.Max(Math.Pow(difficulty, 1.5) * 22, Math.Pow(difficulty, 2) * 22.0),
|
||||||
Math.Max(Math.Pow(difficulty, 3) * 9.00, Math.Pow(difficulty, 4) * 6.0));
|
Math.Max(Math.Pow(difficulty, 3) * 12.0, Math.Pow(difficulty, 4) * 6.00));
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ReadingHidden : Aim
|
public class ReadingHidden : Aim
|
||||||
|
Loading…
Reference in New Issue
Block a user