mirror of
https://github.com/ppy/osu.git
synced 2025-01-12 18:23:04 +08:00
Add ManiaHealthProcessor
that uses the legacy drain rate algorithm
This commit is contained in:
parent
8314f656a3
commit
d924227810
@ -1,23 +1,61 @@
|
||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||
// See the LICENCE file in the repository root for full licence text.
|
||||
|
||||
using osu.Game.Rulesets.Judgements;
|
||||
using System.Collections.Generic;
|
||||
using osu.Game.Rulesets.Mania.Objects;
|
||||
using osu.Game.Rulesets.Objects;
|
||||
using osu.Game.Rulesets.Scoring;
|
||||
|
||||
namespace osu.Game.Rulesets.Mania.Scoring
|
||||
{
|
||||
public partial class ManiaHealthProcessor : DrainingHealthProcessor
|
||||
public partial class ManiaHealthProcessor : LegacyDrainingHealthProcessor
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public ManiaHealthProcessor(double drainStartTime)
|
||||
: base(drainStartTime, 1.0)
|
||||
: base(drainStartTime)
|
||||
{
|
||||
}
|
||||
|
||||
protected override HitResult GetSimulatedHitResult(Judgement judgement)
|
||||
protected override IEnumerable<HitObject> EnumerateTopLevelHitObjects() => Beatmap.HitObjects;
|
||||
|
||||
protected override IEnumerable<HitObject> EnumerateNestedHitObjects(HitObject hitObject) => hitObject.NestedHitObjects;
|
||||
|
||||
protected override double GetHealthIncreaseFor(HitObject hitObject, HitResult result)
|
||||
{
|
||||
// Users are not expected to attain perfect judgements for all notes due to the tighter hit window.
|
||||
return judgement.MaxResult == HitResult.Perfect ? HitResult.Great : judgement.MaxResult;
|
||||
double increase = 0;
|
||||
|
||||
switch (result)
|
||||
{
|
||||
case HitResult.Miss:
|
||||
switch (hitObject)
|
||||
{
|
||||
case HeadNote:
|
||||
case TailNote:
|
||||
return -(Beatmap.Difficulty.DrainRate + 1) * 0.00375;
|
||||
|
||||
default:
|
||||
return -(Beatmap.Difficulty.DrainRate + 1) * 0.0075;
|
||||
}
|
||||
|
||||
case HitResult.Meh:
|
||||
return -(Beatmap.Difficulty.DrainRate + 1) * 0.0016;
|
||||
|
||||
case HitResult.Ok:
|
||||
return 0;
|
||||
|
||||
case HitResult.Good:
|
||||
increase = 0.004 - Beatmap.Difficulty.DrainRate * 0.0004;
|
||||
break;
|
||||
|
||||
case HitResult.Great:
|
||||
increase = 0.005 - Beatmap.Difficulty.DrainRate * 0.0005;
|
||||
break;
|
||||
|
||||
case HitResult.Perfect:
|
||||
increase = 0.0055 - Beatmap.Difficulty.DrainRate * 0.0005;
|
||||
break;
|
||||
}
|
||||
|
||||
return HpMultiplierNormal * increase;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user