mirror of
https://github.com/ppy/osu.git
synced 2025-03-28 01:47:33 +08:00
updated to add nerf for repeated acute angles
This commit is contained in:
parent
2f8972b529
commit
ddf87316df
@ -23,7 +23,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
protected override int HistoryLength => 2;
|
protected override int HistoryLength => 2;
|
||||||
|
|
||||||
private const double wide_angle_multiplier = 1.5;
|
private const double wide_angle_multiplier = 1.5;
|
||||||
private const double acute_angle_multiplier = 1.5;
|
private const double acute_angle_multiplier = 2.0;
|
||||||
|
|
||||||
private double currentStrain = 1;
|
private double currentStrain = 1;
|
||||||
|
|
||||||
@ -69,6 +69,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
{
|
{
|
||||||
double currAngle = osuCurrObj.Angle.Value;
|
double currAngle = osuCurrObj.Angle.Value;
|
||||||
double prevAngle = osuPrevObj.Angle.Value;
|
double prevAngle = osuPrevObj.Angle.Value;
|
||||||
|
double lastAngle = osuLastObj.Angle.Value;
|
||||||
|
|
||||||
// Rewarding angles, take the smaller velocity as base.
|
// Rewarding angles, take the smaller velocity as base.
|
||||||
angleBonus = Math.Min(currVelocity, prevVelocity);
|
angleBonus = Math.Min(currVelocity, prevVelocity);
|
||||||
@ -84,7 +85,8 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
* Math.Pow(Math.Sin(Math.PI / 2 * Math.Min(1, (100 - osuCurrObj.StrainTime) / 25)), 2) // scale buff from 150 bpm 1/4 to 200 bpm 1/4
|
* Math.Pow(Math.Sin(Math.PI / 2 * Math.Min(1, (100 - osuCurrObj.StrainTime) / 25)), 2) // scale buff from 150 bpm 1/4 to 200 bpm 1/4
|
||||||
* Math.Pow(Math.Sin(Math.PI / 2 * (Math.Min(100, osuCurrObj.JumpDistance) - 50) / 50), 2); // Buff distance exceeding 50 (radius) up to 100 (diameter).
|
* Math.Pow(Math.Sin(Math.PI / 2 * (Math.Min(100, osuCurrObj.JumpDistance) - 50) / 50), 2); // Buff distance exceeding 50 (radius) up to 100 (diameter).
|
||||||
|
|
||||||
wideAngleBonus *= angleBonus * (1 - Math.Pow(calcWideAngleBonus(prevAngle), 3)); // Penalize wide angles if they're repeated, reducing the penalty as the prevAngle gets more acute.
|
wideAngleBonus *= angleBonus * (1 - Math.Min(wideAngleBonus, Math.Pow(calcWideAngleBonus(prevAngle), 3))); // Penalize wide angles if they're repeated, reducing the penalty as the prevAngle gets more acute.
|
||||||
|
acuteAngleBonus *= 0.5 + 0.5 * (1 - Math.Min(acuteAngleBonus, Math.Pow(calcAcuteAngleBonus(lastAngle), 3))); // Penalize acute angles if they're repeated, reducing the penalty as the lastAngle gets more obtuse.
|
||||||
|
|
||||||
angleBonus = acuteAngleBonus * acute_angle_multiplier + wideAngleBonus * wide_angle_multiplier; // add the anglebuffs together.
|
angleBonus = acuteAngleBonus * acute_angle_multiplier + wideAngleBonus * wide_angle_multiplier; // add the anglebuffs together.
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user