diff --git a/osu.Game.Rulesets.Taiko/Judgements/TaikoDrumRollJudgement.cs b/osu.Game.Rulesets.Taiko/Judgements/TaikoDrumRollJudgement.cs
index 4663d00bdc..e1a630e6b7 100644
--- a/osu.Game.Rulesets.Taiko/Judgements/TaikoDrumRollJudgement.cs
+++ b/osu.Game.Rulesets.Taiko/Judgements/TaikoDrumRollJudgement.cs
@@ -9,8 +9,8 @@ namespace osu.Game.Rulesets.Taiko.Judgements
{
public override bool AffectsCombo => false;
- public override bool AffectsHP => false;
-
protected override int NumericResultFor(HitResult result) => 0;
+
+ protected override double HealthIncreaseFor(HitResult result) => 0;
}
}
diff --git a/osu.Game.Rulesets.Taiko/Judgements/TaikoDrumRollTickJudgement.cs b/osu.Game.Rulesets.Taiko/Judgements/TaikoDrumRollTickJudgement.cs
index 446dd0d11b..b2adf45bab 100644
--- a/osu.Game.Rulesets.Taiko/Judgements/TaikoDrumRollTickJudgement.cs
+++ b/osu.Game.Rulesets.Taiko/Judgements/TaikoDrumRollTickJudgement.cs
@@ -19,5 +19,16 @@ namespace osu.Game.Rulesets.Taiko.Judgements
return 200;
}
}
+
+ protected override double HealthIncreaseFor(HitResult result)
+ {
+ switch(result)
+ {
+ default:
+ return 0;
+ case HitResult.Great:
+ return 0.0000003;
+ }
+ }
}
}
diff --git a/osu.Game.Rulesets.Taiko/Judgements/TaikoJudgement.cs b/osu.Game.Rulesets.Taiko/Judgements/TaikoJudgement.cs
index 386495bf1b..f43227ecca 100644
--- a/osu.Game.Rulesets.Taiko/Judgements/TaikoJudgement.cs
+++ b/osu.Game.Rulesets.Taiko/Judgements/TaikoJudgement.cs
@@ -9,12 +9,7 @@ namespace osu.Game.Rulesets.Taiko.Judgements
public class TaikoJudgement : Judgement
{
public override HitResult MaxResult => HitResult.Great;
-
- ///
- /// Whether this should affect user's hitpoints.
- ///
- public virtual bool AffectsHP => true;
-
+
///
/// Computes the numeric result value for the combo portion of the score.
///
@@ -32,5 +27,32 @@ namespace osu.Game.Rulesets.Taiko.Judgements
return 300;
}
}
+
+ ///
+ /// Retrieves the numeric health increase of a .
+ ///
+ /// The to find the numeric health increase for.
+ /// The numeric health increase of .
+ protected virtual double HealthIncreaseFor(HitResult result)
+ {
+ switch (result)
+ {
+ default:
+ return 0;
+ case HitResult.Miss:
+ return -1.0;
+ case HitResult.Good:
+ return 1.1;
+ case HitResult.Great:
+ return 3.0;
+ }
+ }
+
+ ///
+ /// Retrieves the numeric health increase of a .
+ ///
+ /// The to find the numeric health increase for.
+ /// The numeric health increase of .
+ public double HealthIncreaseFor(JudgementResult result) => HealthIncreaseFor(result.Type);
}
}
diff --git a/osu.Game.Rulesets.Taiko/Judgements/TaikoStrongJudgement.cs b/osu.Game.Rulesets.Taiko/Judgements/TaikoStrongJudgement.cs
index 2665540d07..81dfaf4cc3 100644
--- a/osu.Game.Rulesets.Taiko/Judgements/TaikoStrongJudgement.cs
+++ b/osu.Game.Rulesets.Taiko/Judgements/TaikoStrongJudgement.cs
@@ -1,12 +1,14 @@
// Copyright (c) 2007-2018 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+using osu.Game.Rulesets.Scoring;
+
namespace osu.Game.Rulesets.Taiko.Judgements
{
public class TaikoStrongJudgement : TaikoJudgement
{
// MainObject already changes the HP
- public override bool AffectsHP => false;
+ protected override double HealthIncreaseFor(HitResult result) => 0;
public override bool AffectsCombo => false;
}
diff --git a/osu.Game.Rulesets.Taiko/Judgements/TaikoSwellJudgement.cs b/osu.Game.Rulesets.Taiko/Judgements/TaikoSwellJudgement.cs
index b913f5d730..ca89d4d0e5 100644
--- a/osu.Game.Rulesets.Taiko/Judgements/TaikoSwellJudgement.cs
+++ b/osu.Game.Rulesets.Taiko/Judgements/TaikoSwellJudgement.cs
@@ -9,6 +9,15 @@ namespace osu.Game.Rulesets.Taiko.Judgements
{
public override bool AffectsCombo => false;
- protected override int NumericResultFor(HitResult result) => 0;
+ protected override double HealthIncreaseFor(HitResult result)
+ {
+ switch(result)
+ {
+ default:
+ return 0;
+ case HitResult.Miss:
+ return -0.65;
+ }
+ }
}
}
diff --git a/osu.Game.Rulesets.Taiko/Judgements/TaikoSwellTickJudgement.cs b/osu.Game.Rulesets.Taiko/Judgements/TaikoSwellTickJudgement.cs
index 8dd03796ea..448c16dad6 100644
--- a/osu.Game.Rulesets.Taiko/Judgements/TaikoSwellTickJudgement.cs
+++ b/osu.Game.Rulesets.Taiko/Judgements/TaikoSwellTickJudgement.cs
@@ -9,17 +9,8 @@ namespace osu.Game.Rulesets.Taiko.Judgements
{
public override bool AffectsCombo => false;
- public override bool AffectsHP => false;
+ protected override int NumericResultFor(HitResult result) => 0;
- protected override int NumericResultFor(HitResult result)
- {
- switch (result)
- {
- default:
- return 0;
- case HitResult.Great:
- return 300;
- }
- }
+ protected override double HealthIncreaseFor(HitResult result) => 0;
}
}
diff --git a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHit.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHit.cs
index 48731388cb..8c19e64de6 100644
--- a/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHit.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHit.cs
@@ -42,7 +42,7 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables
}
var result = HitObject.HitWindows.ResultFor(timeOffset);
- if (result == HitResult.None)
+ if (result <= HitResult.Miss)
return;
if (!validActionPressed)
diff --git a/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs b/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs
index b791d889ee..50989cef7c 100644
--- a/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs
+++ b/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs
@@ -73,11 +73,8 @@ namespace osu.Game.Rulesets.Taiko.Scoring
///
protected override bool DefaultFailCondition => JudgedHits == MaxHits && Health.Value <= 0.5;
- private double hpIncreaseTick;
- private double hpIncreaseGreat;
- private double hpIncreaseGood;
- private double hpIncreaseMiss;
- private double hpIncreaseMissSwell;
+ private double hpMultiplier;
+ private double hpMissMultiplier;
public TaikoScoreProcessor(RulesetContainer rulesetContainer)
: base(rulesetContainer)
@@ -88,49 +85,25 @@ namespace osu.Game.Rulesets.Taiko.Scoring
{
base.ApplyBeatmap(beatmap);
- double hpMultiplierNormal = 1 / (hp_hit_great * beatmap.HitObjects.FindAll(o => o is Hit).Count * BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.5, 0.75, 0.98));
+ hpMultiplier = 0.01 / (hp_hit_great * beatmap.HitObjects.FindAll(o => o is Hit).Count * BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.5, 0.75, 0.98));
- hpIncreaseTick = hp_hit_tick;
- hpIncreaseGreat = hpMultiplierNormal * hp_hit_great;
- hpIncreaseGood = hpMultiplierNormal * hp_hit_good;
- hpIncreaseMiss = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, hp_miss_min, hp_miss_mid, hp_miss_max);
- hpIncreaseMissSwell = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, swell_hp_miss_min, swell_hp_miss_mid, swell_hp_miss_max);
+ hpMissMultiplier = BeatmapDifficulty.DifficultyRange(beatmap.BeatmapInfo.BaseDifficulty.DrainRate, 0.0018, 0.0075, 0.0120);
}
protected override void ApplyResult(JudgementResult result)
{
base.ApplyResult(result);
- if (!((TaikoJudgement)result.Judgement).AffectsHP)
- return;
-
- bool isSwell = false;
- bool isTick = result.Judgement is TaikoDrumRollTickJudgement;
-
- if(!isTick)
- isSwell = result.Judgement is TaikoSwellJudgement;
-
- // Apply HP changes
- switch (result.Type)
+ if (result.Judgement is TaikoJudgement taikoJudgement)
{
- case HitResult.Miss:
- // Missing ticks shouldn't drop HP
- if (isSwell)
- Health.Value += hpIncreaseMissSwell;
- else if (!isTick)
- Health.Value += hpIncreaseMiss;
- break;
- case HitResult.Good:
- // Swells shouldn't increase HP
- if (!isSwell)
- Health.Value += hpIncreaseGood;
- break;
- case HitResult.Great:
- if (isTick)
- Health.Value += hpIncreaseTick;
- else if(!isSwell)
- Health.Value += hpIncreaseGreat;
- break;
+ double hpIncrease = taikoJudgement.HealthIncreaseFor(result);
+
+ if (result.Type == HitResult.Miss)
+ hpIncrease *= hpMissMultiplier;
+ else
+ hpIncrease *= hpMultiplier;
+
+ Health.Value += hpIncrease;
}
}
diff --git a/osu.sln.DotSettings b/osu.sln.DotSettings
index 38288bc912..d6882282e6 100644
--- a/osu.sln.DotSettings
+++ b/osu.sln.DotSettings
@@ -200,7 +200,6 @@
GL
GLSL
HID
- HP
HUD
ID
IP