diff --git a/osu.Game.Rulesets.Osu/Objects/OsuHitObject.cs b/osu.Game.Rulesets.Osu/Objects/OsuHitObject.cs index 2d1331d30a..c14ef9c2ea 100644 --- a/osu.Game.Rulesets.Osu/Objects/OsuHitObject.cs +++ b/osu.Game.Rulesets.Osu/Objects/OsuHitObject.cs @@ -16,9 +16,9 @@ public abstract class OsuHitObject : HitObject, IHasCombo, IHasPosition public const double OBJECT_RADIUS = 64; private const double hittable_range = 300; - private const double hit_window_50 = 150; - private const double hit_window_100 = 80; - private const double hit_window_300 = 30; + public double HitWindow50 = 150; + public double HitWindow100 = 80; + public double HitWindow300 = 30; public float TimePreempt = 600; public float TimeFadein = 400; @@ -50,13 +50,13 @@ public double HitWindowFor(HitResult result) switch (result) { default: - return 300; + return hittable_range; case HitResult.Meh: - return 150; + return HitWindow50; case HitResult.Good: - return 80; + return HitWindow100; case HitResult.Great: - return 30; + return HitWindow300; } } @@ -78,6 +78,10 @@ protected override void ApplyDefaultsToSelf(ControlPointInfo controlPointInfo, B TimePreempt = (float)BeatmapDifficulty.DifficultyRange(difficulty.ApproachRate, 1800, 1200, 450); TimeFadein = (float)BeatmapDifficulty.DifficultyRange(difficulty.ApproachRate, 1200, 800, 300); + HitWindow50 = BeatmapDifficulty.DifficultyRange(difficulty.OverallDifficulty, 99.5, 149.5, 199.5); + HitWindow100 = BeatmapDifficulty.DifficultyRange(difficulty.OverallDifficulty, 59.5, 99.5, 139.5); + HitWindow300 = BeatmapDifficulty.DifficultyRange(difficulty.OverallDifficulty, 19.5, 49.5, 79.5); + Scale = (1.0f - 0.7f * (difficulty.CircleSize - 5) / 5) / 2; } }