Skip to content

Commit b77d0ad

Browse files
authored
Merge pull request #202 from BakersDozenBagels/LNMissJudgements
Allow Customization of LN Missed Release Judgement
2 parents 7538eb8 + 54cbd3a commit b77d0ad

File tree

3 files changed

+16
-5
lines changed

3 files changed

+16
-5
lines changed

Quaver.API/Maps/Processors/Scoring/JudgementWindows.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ public class JudgementWindows
3535

3636
public Judgement ComboBreakJudgement { get; set; } = Judgement.Miss;
3737

38+
// Never actually null; the nullability is to allow migration from the old database schema without this column.
39+
public Judgement? LNMissJudgement { get; set; } = Judgement.Good;
40+
3841
/// <summary>
3942
/// Returns the value of the window from <see cref="Judgement"/>
4043
/// </summary>

Quaver.API/Maps/Processors/Scoring/ScoreProcessorKeys.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,8 +198,16 @@ public Judgement CalculateScore(int hitDifference, KeyPressType keyPressType, bo
198198
if (!(absoluteDifference <= window))
199199
continue;
200200

201-
// Make Okays no longer possible on releases (good window increases)
202-
if (keyPressType == KeyPressType.Release && j == Judgement.Okay)
201+
// Releasing an LN late rounds the judgement up to what holding it forever would give
202+
// On Default*, this rounds up to a Good
203+
if (keyPressType == KeyPressType.Release && hitDifference < 0 && i > (int)Windows.LNMissJudgement)
204+
{
205+
judgement = Windows.LNMissJudgement.Value;
206+
break;
207+
}
208+
209+
// Make Okays no longer possible on releases (good window increases) unless LNMissJudgement is Okay or worse
210+
if (keyPressType == KeyPressType.Release && j == Judgement.Okay && (int)Windows.LNMissJudgement < (int)Judgement.Okay)
203211
{
204212
judgement = Judgement.Good;
205213
break;

Quaver.API/Replays/Virtual/VirtualReplayPlayer.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -319,12 +319,12 @@ private void HandleMissedLongNoteReleases()
319319
continue;
320320

321321
// Judgement when a user doesn't release an LN.
322-
var missedReleaseJudgement = Judgement.Good;
322+
var missedReleaseJudgement = ScoreProcessor.Windows.LNMissJudgement;
323323

324-
ScoreProcessor.CalculateScore(missedReleaseJudgement, true);
324+
ScoreProcessor.CalculateScore(missedReleaseJudgement.Value, true);
325325

326326
// Add new miss stat.
327-
var stat = new HitStat(HitStatType.Miss, KeyPressType.None, hitObject, hitObject.EndTime, missedReleaseJudgement, int.MinValue,
327+
var stat = new HitStat(HitStatType.Miss, KeyPressType.None, hitObject, hitObject.EndTime, missedReleaseJudgement.Value, int.MinValue,
328328
ScoreProcessor.Accuracy, ScoreProcessor.Health);
329329

330330
ScoreProcessor.Stats.Add(stat);

0 commit comments

Comments
 (0)