mirror of
https://github.com/osukey/osukey.git
synced 2025-04-29 10:47:22 +09:00
Implement mono tl nerf for stamina, disable convert specific nerfs
This commit is contained in:
parent
d84c956af9
commit
09a38fec94
@ -24,6 +24,29 @@ namespace osu.Game.Rulesets.Taiko.Difficulty.Evaluators
|
|||||||
return 30 / interval;
|
return 30 / interval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Determines the number of fingers available to hit the current <see cref="TaikoDifficultyHitObject"/>.
|
||||||
|
/// Any mono notes that is more than 0.5s apart from note of the other colour will be considered to have more
|
||||||
|
/// than 2 fingers available, since players can move their hand over to hit the same key with multiple fingers.
|
||||||
|
/// </summary>
|
||||||
|
private static int availableFingersFor(TaikoDifficultyHitObject hitObject)
|
||||||
|
{
|
||||||
|
DifficultyHitObject? previousColourChange = hitObject.Colour.MonoStreak?.FirstHitObject.Previous(0);
|
||||||
|
DifficultyHitObject? nextColourChange = hitObject.Colour.MonoStreak?.LastHitObject.Next(0);
|
||||||
|
|
||||||
|
if (previousColourChange != null && hitObject.StartTime - previousColourChange.StartTime < 300)
|
||||||
|
{
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nextColourChange != null && nextColourChange.StartTime - hitObject.StartTime < 300)
|
||||||
|
{
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 5;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Evaluates the minimum mechanical stamina required to play the current object. This is calculated using the
|
/// Evaluates the minimum mechanical stamina required to play the current object. This is calculated using the
|
||||||
/// maximum possible interval between two hits using the same key, by alternating 2 keys for each colour.
|
/// maximum possible interval between two hits using the same key, by alternating 2 keys for each colour.
|
||||||
@ -37,7 +60,7 @@ namespace osu.Game.Rulesets.Taiko.Difficulty.Evaluators
|
|||||||
|
|
||||||
// Find the previous hit object hit by the current key, which is two notes of the same colour prior.
|
// Find the previous hit object hit by the current key, which is two notes of the same colour prior.
|
||||||
TaikoDifficultyHitObject taikoCurrent = (TaikoDifficultyHitObject)current;
|
TaikoDifficultyHitObject taikoCurrent = (TaikoDifficultyHitObject)current;
|
||||||
TaikoDifficultyHitObject? keyPrevious = taikoCurrent.PreviousMono(1);
|
TaikoDifficultyHitObject? keyPrevious = taikoCurrent.PreviousMono(availableFingersFor(taikoCurrent) - 1);
|
||||||
|
|
||||||
if (keyPrevious == null)
|
if (keyPrevious == null)
|
||||||
{
|
{
|
||||||
|
@ -33,6 +33,11 @@ namespace osu.Game.Rulesets.Taiko.Difficulty.Preprocessing.Colour.Data
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public TaikoDifficultyHitObject FirstHitObject => HitObjects[0];
|
public TaikoDifficultyHitObject FirstHitObject => HitObjects[0];
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The last <see cref="TaikoDifficultyHitObject"/> in this <see cref="MonoStreak"/>.
|
||||||
|
/// </summary>
|
||||||
|
public TaikoDifficultyHitObject LastHitObject => HitObjects[^1];
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The hit type of all objects encoded within this <see cref="MonoStreak"/>
|
/// The hit type of all objects encoded within this <see cref="MonoStreak"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -83,15 +83,6 @@ namespace osu.Game.Rulesets.Taiko.Difficulty
|
|||||||
double combinedRating = combined.DifficultyValue() * difficulty_multiplier;
|
double combinedRating = combined.DifficultyValue() * difficulty_multiplier;
|
||||||
double starRating = rescale(combinedRating * 1.4);
|
double starRating = rescale(combinedRating * 1.4);
|
||||||
|
|
||||||
// TODO: This is temporary measure as we don't detect abuse of multiple-input playstyles of converts within the current system.
|
|
||||||
if (beatmap.BeatmapInfo.Ruleset.OnlineID == 0)
|
|
||||||
{
|
|
||||||
starRating *= 0.925;
|
|
||||||
// For maps with low colour variance and high stamina requirement, multiple inputs are more likely to be abused.
|
|
||||||
if (colourRating < 2 && staminaRating > 8)
|
|
||||||
starRating *= 0.80;
|
|
||||||
}
|
|
||||||
|
|
||||||
HitWindows hitWindows = new TaikoHitWindows();
|
HitWindows hitWindows = new TaikoHitWindows();
|
||||||
hitWindows.SetDifficulty(beatmap.Difficulty.OverallDifficulty);
|
hitWindows.SetDifficulty(beatmap.Difficulty.OverallDifficulty);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user