1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-05 09:42:54 +08:00

Compare commits

...

8 Commits

Author SHA1 Message Date
Milo
90d98b4c54
Merge 3d0b15c875 into 1d610a0f1b 2024-11-30 23:23:10 +01:00
Milo
3d0b15c875
format 2024-11-11 21:34:48 -04:00
Milo
50cbcd4a0c
remove unnecessary empty line 2024-11-11 21:27:06 -04:00
Milo
9cadca84bb lm 2024-11-12 02:07:48 +01:00
Milo
2fc4752999 lm 2024-11-12 02:06:42 +01:00
Milo
9a05edab7a implement proposed osu!mania mod, Full Perfect 2024-11-12 01:55:20 +01:00
Milo
5977fbfce7 implement proposed osu!mania mod, Full Perfect 2024-11-12 01:35:48 +01:00
Milo
5ae56df32b
implement proposed osu!mania mod, Full Perfect 2024-11-11 18:52:30 -04:00
2 changed files with 39 additions and 1 deletions

View File

@ -247,7 +247,7 @@ namespace osu.Game.Rulesets.Mania
return new Mod[]
{
new ManiaModHardRock(),
new MultiMod(new ManiaModSuddenDeath(), new ManiaModPerfect()),
new MultiMod(new ManiaModSuddenDeath(), new ManiaModPerfect(), new ManiaModFullPerfect()),
new MultiMod(new ManiaModDoubleTime(), new ManiaModNightcore()),
new MultiMod(new ManiaModFadeIn(), new ManiaModHidden(), new ManiaModCover()),
new ManiaModFlashlight(),

View File

@ -0,0 +1,38 @@
// 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.4
using System;
using System.Linq;
using osu.Framework.Localisation;
using osu.Game.Rulesets.Judgements;
using osu.Game.Rulesets.Scoring;
namespace osu.Game.Rulesets.Mania.Mods
{
public class ManiaModFullPerfect : ManiaModPerfect
{
public override string Name => "Full Perfect";
public override string Acronym => "FP";
public override LocalisableString Description => @"Placeholder";
public override double ScoreMultiplier => 1;
public override Type[] IncompatibleMods => base.IncompatibleMods.Concat(new[]
{
typeof(ManiaModPerfect),
}).ToArray();
protected override bool FailCondition(HealthProcessor healthProcessor, JudgementResult result)
{
if (!isRelevantResult(result.Judgement.MinResult) && !isRelevantResult(result.Judgement.MaxResult) && !isRelevantResult(result.Type))
return false;
if (result.Judgement.MaxResult == HitResult.Perfect)
return result.Type < HitResult.Perfect;
return result.Type != result.Judgement.MaxResult;
}
private bool isRelevantResult(HitResult result) => result.AffectsAccuracy() || result.AffectsCombo();
}
}