Skip to content

Commit

Permalink
remove rhythm restriction from acute and balancing attempt
Browse files Browse the repository at this point in the history
  • Loading branch information
kwotaq committed Jan 27, 2025
1 parent 7133a2f commit ff85a14
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 16 deletions.
19 changes: 8 additions & 11 deletions osu.Game.Rulesets.Osu/Difficulty/Evaluators/AimEvaluator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
public static class AimEvaluator
{
private const double wide_angle_multiplier = 1.5;
private const double acute_angle_multiplier = 2.9;
private const double acute_angle_multiplier = 2.7;
private const double slider_multiplier = 1.35;
private const double velocity_change_multiplier = 0.75;
private const double wiggle_multiplier = 1.02;
Expand Down Expand Up @@ -77,18 +77,15 @@ public static double EvaluateDifficultyOf(DifficultyHitObject current, bool with
// Rewarding angles, take the smaller velocity as base.
double angleBonus = Math.Min(currVelocity, prevVelocity);

if (Math.Max(osuCurrObj.StrainTime, osuLastObj.StrainTime) < 1.25 * Math.Min(osuCurrObj.StrainTime, osuLastObj.StrainTime)) // If rhythms are the same.
{
acuteAngleBonus = calcAcuteAngleBonus(currAngle);
acuteAngleBonus = calcAcuteAngleBonus(currAngle);

// Penalize angle repetition.
acuteAngleBonus *= 0.07 + 0.93 * (1 - Math.Min(acuteAngleBonus, Math.Pow(calcAcuteAngleBonus(lastAngle), 3)));
// Penalize angle repetition.
acuteAngleBonus *= 0.05 + 0.95 * (1 - Math.Min(acuteAngleBonus, Math.Pow(calcAcuteAngleBonus(lastAngle), 3)));

// Apply acute angle bonus for BPM above 300 1/2 and distance more than one diameter
acuteAngleBonus *= angleBonus *
DifficultyCalculationUtils.Smootherstep(DifficultyCalculationUtils.MillisecondsToBPM(osuCurrObj.StrainTime, 2), 300, 400) *
DifficultyCalculationUtils.Smootherstep(osuCurrObj.LazyJumpDistance, diameter, diameter * 2);
}
// Apply acute angle bonus for BPM above 300 1/2 and distance more than one diameter
acuteAngleBonus *= angleBonus *
DifficultyCalculationUtils.Smootherstep(DifficultyCalculationUtils.MillisecondsToBPM(osuCurrObj.StrainTime, 2), 300, 400) *
DifficultyCalculationUtils.Smootherstep(osuCurrObj.LazyJumpDistance, diameter, diameter * 2);

wideAngleBonus = calcWideAngleBonus(currAngle);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public static class RhythmEvaluator
{
private const int history_time_max = 5 * 1000; // 5 seconds
private const int history_objects_max = 32;
private const double rhythm_overall_multiplier = 0.8;
private const double rhythm_overall_multiplier = 0.7;
private const double rhythm_ratio_multiplier = 12.0;

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public static class SpeedEvaluator
private const double single_spacing_threshold = OsuDifficultyHitObject.NORMALISED_DIAMETER * 1.25; // 1.25 circles distance between centers
private const double min_speed_bonus = 200; // 200 BPM 1/4th
private const double speed_balancing_factor = 40;
private const double distance_multiplier = 0.7;
private const double distance_multiplier = 0.6;

/// <summary>
/// Evaluates the difficulty of tapping the current object, based on:
Expand Down
4 changes: 2 additions & 2 deletions osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty
{
public class OsuPerformanceCalculator : PerformanceCalculator
{
public const double PERFORMANCE_BASE_MULTIPLIER = 1.2; // This is being adjusted to keep the final pp value scaled around what it used to be when changing things.
public const double PERFORMANCE_BASE_MULTIPLIER = 1.22; // This is being adjusted to keep the final pp value scaled around what it used to be when changing things.

private bool usingClassicSliderAccuracy;

Expand Down Expand Up @@ -449,4 +449,4 @@ private double calculateEstimatedSliderbreaks(double topWeightedSliderFactor, Os
private int totalSuccessfulHits => countGreat + countOk + countMeh;
private int totalImperfectHits => countOk + countMeh + countMiss;
}
}
}
2 changes: 1 addition & 1 deletion osu.Game.Rulesets.Osu/Difficulty/Skills/OsuStrainSkill.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public abstract class OsuStrainSkill : StrainSkill
/// The duration strain reduction will apply to.
/// We assume that the first seconds of the map are always easier than calculated difficulty due to them being free to retry.
/// </summary>
protected virtual int ReducedDuration => 40;
protected virtual int ReducedDuration => 45;

/// <summary>
/// The baseline multiplier applied to the section with the biggest strain.
Expand Down

0 comments on commit ff85a14

Please sign in to comment.