mirror of
https://github.com/ppy/osu.git
synced 2025-02-06 04:12:55 +08:00
Merge pull request #15227 from emu1337/aim-refactor-ppcalc
osu! Difficulty Aim Overhaul: PP Calc Changes
This commit is contained in:
commit
57b892a028
@ -111,13 +111,11 @@ namespace osu.Game.Rulesets.Osu.Difficulty
|
|||||||
|
|
||||||
double approachRateFactor = 0.0;
|
double approachRateFactor = 0.0;
|
||||||
if (Attributes.ApproachRate > 10.33)
|
if (Attributes.ApproachRate > 10.33)
|
||||||
approachRateFactor = Attributes.ApproachRate - 10.33;
|
approachRateFactor = 0.3 * (Attributes.ApproachRate - 10.33);
|
||||||
else if (Attributes.ApproachRate < 8.0)
|
else if (Attributes.ApproachRate < 8.0)
|
||||||
approachRateFactor = 0.025 * (8.0 - Attributes.ApproachRate);
|
approachRateFactor = 0.1 * (8.0 - Attributes.ApproachRate);
|
||||||
|
|
||||||
double approachRateTotalHitsFactor = 1.0 / (1.0 + Math.Exp(-(0.007 * (totalHits - 400))));
|
aimValue *= 1.0 + approachRateFactor * lengthBonus; // Buff for longer maps with high AR.
|
||||||
|
|
||||||
double approachRateBonus = 1.0 + (0.03 + 0.37 * approachRateTotalHitsFactor) * approachRateFactor;
|
|
||||||
|
|
||||||
if (mods.Any(m => m is OsuModBlinds))
|
if (mods.Any(m => m is OsuModBlinds))
|
||||||
aimValue *= 1.3 + (totalHits * (0.0016 / (1 + 2 * effectiveMissCount)) * Math.Pow(accuracy, 16)) * (1 - 0.003 * Attributes.DrainRate * Attributes.DrainRate);
|
aimValue *= 1.3 + (totalHits * (0.0016 / (1 + 2 * effectiveMissCount)) * Math.Pow(accuracy, 16)) * (1 - 0.003 * Attributes.DrainRate * Attributes.DrainRate);
|
||||||
@ -127,10 +125,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty
|
|||||||
aimValue *= 1.0 + 0.04 * (12.0 - Attributes.ApproachRate);
|
aimValue *= 1.0 + 0.04 * (12.0 - Attributes.ApproachRate);
|
||||||
}
|
}
|
||||||
|
|
||||||
aimValue *= approachRateBonus;
|
aimValue *= accuracy;
|
||||||
|
|
||||||
// Scale the aim value with accuracy _slightly_.
|
|
||||||
aimValue *= 0.5 + accuracy / 2.0;
|
|
||||||
// It is important to also consider accuracy difficulty when doing that.
|
// It is important to also consider accuracy difficulty when doing that.
|
||||||
aimValue *= 0.98 + Math.Pow(Attributes.OverallDifficulty, 2) / 2500;
|
aimValue *= 0.98 + Math.Pow(Attributes.OverallDifficulty, 2) / 2500;
|
||||||
|
|
||||||
@ -156,11 +151,9 @@ namespace osu.Game.Rulesets.Osu.Difficulty
|
|||||||
|
|
||||||
double approachRateFactor = 0.0;
|
double approachRateFactor = 0.0;
|
||||||
if (Attributes.ApproachRate > 10.33)
|
if (Attributes.ApproachRate > 10.33)
|
||||||
approachRateFactor = Attributes.ApproachRate - 10.33;
|
approachRateFactor = 0.3 * (Attributes.ApproachRate - 10.33);
|
||||||
|
|
||||||
double approachRateTotalHitsFactor = 1.0 / (1.0 + Math.Exp(-(0.007 * (totalHits - 400))));
|
speedValue *= 1.0 + approachRateFactor * lengthBonus; // Buff for longer maps with high AR.
|
||||||
|
|
||||||
speedValue *= 1.0 + (0.03 + 0.37 * approachRateTotalHitsFactor) * approachRateFactor;
|
|
||||||
|
|
||||||
if (mods.Any(m => m is OsuModBlinds))
|
if (mods.Any(m => m is OsuModBlinds))
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user