diff --git a/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs b/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs
index ba29a9a0ce..34ede153dd 100644
--- a/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs
+++ b/osu.Game/Rulesets/Scoring/DrainingHealthProcessor.cs
@@ -10,7 +10,10 @@ using osu.Game.Rulesets.Objects;
namespace osu.Game.Rulesets.Scoring
{
///
- /// A which continuously drains health.
+ /// A which continuously drains health.
+ /// At HP=0, the minimum health reached for a perfect play is 95%.
+ /// At HP=5, the minimum health reached for a perfect play is 70%.
+ /// At HP=10, the minimum health reached for a perfect play is 30%.
///
public class DrainingHealthProcessor : HealthProcessor
{
@@ -19,6 +22,21 @@ namespace osu.Game.Rulesets.Scoring
///
private const double minimum_health_error = 0.01;
+ ///
+ /// The minimum health target at an HP drain rate of 0.
+ ///
+ private const double min_health_target = 0.95;
+
+ ///
+ /// The minimum health target at an HP drain rate of 5.
+ ///
+ private const double mid_health_target = 0.70;
+
+ ///
+ /// The minimum health target at an HP drain rate of 10.
+ ///
+ private const double max_health_target = 0.30;
+
private IBeatmap beatmap;
private double gameplayEndTime;
@@ -56,7 +74,7 @@ namespace osu.Game.Rulesets.Scoring
if (beatmap.HitObjects.Count > 0)
gameplayEndTime = beatmap.HitObjects[^1].GetEndTime();
- targetMinimumHealth = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.95, 0.70, 0.30);
+ targetMinimumHealth = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, min_health_target, mid_health_target, max_health_target);
base.ApplyBeatmap(beatmap);
}