mirror of
https://github.com/ppy/osu.git
synced 2024-11-11 11:37:28 +08:00
Add per-ruleset score multipliers for classic scoring
This commit is contained in:
parent
df500dec04
commit
c36badab4b
@ -7,5 +7,6 @@ namespace osu.Game.Rulesets.Catch.Scoring
|
|||||||
{
|
{
|
||||||
public class CatchScoreProcessor : ScoreProcessor
|
public class CatchScoreProcessor : ScoreProcessor
|
||||||
{
|
{
|
||||||
|
protected override double ClassicScoreMultiplier => 28;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,5 +10,7 @@ namespace osu.Game.Rulesets.Mania.Scoring
|
|||||||
protected override double DefaultAccuracyPortion => 0.99;
|
protected override double DefaultAccuracyPortion => 0.99;
|
||||||
|
|
||||||
protected override double DefaultComboPortion => 0.01;
|
protected override double DefaultComboPortion => 0.01;
|
||||||
|
|
||||||
|
protected override double ClassicScoreMultiplier => 16;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,8 @@ namespace osu.Game.Rulesets.Osu.Scoring
|
|||||||
{
|
{
|
||||||
public class OsuScoreProcessor : ScoreProcessor
|
public class OsuScoreProcessor : ScoreProcessor
|
||||||
{
|
{
|
||||||
|
protected override double ClassicScoreMultiplier => 36;
|
||||||
|
|
||||||
protected override HitEvent CreateHitEvent(JudgementResult result)
|
protected override HitEvent CreateHitEvent(JudgementResult result)
|
||||||
=> base.CreateHitEvent(result).With((result as OsuHitCircleJudgementResult)?.CursorPositionAtHit);
|
=> base.CreateHitEvent(result).With((result as OsuHitCircleJudgementResult)?.CursorPositionAtHit);
|
||||||
|
|
||||||
|
@ -10,5 +10,7 @@ namespace osu.Game.Rulesets.Taiko.Scoring
|
|||||||
protected override double DefaultAccuracyPortion => 0.75;
|
protected override double DefaultAccuracyPortion => 0.75;
|
||||||
|
|
||||||
protected override double DefaultComboPortion => 0.25;
|
protected override double DefaultComboPortion => 0.25;
|
||||||
|
|
||||||
|
protected override double ClassicScoreMultiplier => 22;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,6 +76,11 @@ namespace osu.Game.Rulesets.Scoring
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
protected virtual double DefaultComboPortion => 0.7;
|
protected virtual double DefaultComboPortion => 0.7;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// An arbitrary multiplier to scale scores in the <see cref="ScoringMode.Classic"/> scoring mode.
|
||||||
|
/// </summary>
|
||||||
|
protected virtual double ClassicScoreMultiplier => 36;
|
||||||
|
|
||||||
private readonly double accuracyPortion;
|
private readonly double accuracyPortion;
|
||||||
private readonly double comboPortion;
|
private readonly double comboPortion;
|
||||||
|
|
||||||
@ -246,7 +251,7 @@ namespace osu.Game.Rulesets.Scoring
|
|||||||
// This gives a similar feeling to osu!stable scoring (ScoreV1) while keeping classic scoring as only a constant multiple of standardised scoring.
|
// This gives a similar feeling to osu!stable scoring (ScoreV1) while keeping classic scoring as only a constant multiple of standardised scoring.
|
||||||
// The invariant is important to ensure that scores don't get re-ordered on leaderboards between the two scoring modes.
|
// The invariant is important to ensure that scores don't get re-ordered on leaderboards between the two scoring modes.
|
||||||
double scaledStandardised = GetScore(ScoringMode.Standardised, accuracyRatio, comboRatio, statistics) / max_score;
|
double scaledStandardised = GetScore(ScoringMode.Standardised, accuracyRatio, comboRatio, statistics) / max_score;
|
||||||
return Math.Pow(scaledStandardised * totalHitObjects, 2) * 36;
|
return Math.Pow(scaledStandardised * totalHitObjects, 2) * ClassicScoreMultiplier;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user