mirror of
https://github.com/ppy/osu.git
synced 2026-05-13 20:33:35 +08:00
osu!taiko skills refactor (#32426)
Co-authored-by: James Wilson <tsunyoku@gmail.com>
This commit is contained in:
committed by
GitHub
Unverified
parent
9eadc9f68c
commit
8b11be5ac0
@@ -108,35 +108,43 @@ namespace osu.Game.Rulesets.Taiko.Difficulty
|
||||
var stamina = skills.OfType<Stamina>().Single(s => !s.SingleColourStamina);
|
||||
var singleColourStamina = skills.OfType<Stamina>().Single(s => s.SingleColourStamina);
|
||||
|
||||
double rhythmRating = rhythm.DifficultyValue() * rhythm_skill_multiplier;
|
||||
double readingRating = reading.DifficultyValue() * reading_skill_multiplier;
|
||||
double colourRating = colour.DifficultyValue() * colour_skill_multiplier;
|
||||
double staminaRating = stamina.DifficultyValue() * stamina_skill_multiplier;
|
||||
double monoStaminaRating = singleColourStamina.DifficultyValue() * stamina_skill_multiplier;
|
||||
double monoStaminaFactor = staminaRating == 0 ? 1 : Math.Pow(monoStaminaRating / staminaRating, 5);
|
||||
double rhythmSkill = rhythm.DifficultyValue() * rhythm_skill_multiplier;
|
||||
double readingSkill = reading.DifficultyValue() * reading_skill_multiplier;
|
||||
double colourSkill = colour.DifficultyValue() * colour_skill_multiplier;
|
||||
double staminaSkill = stamina.DifficultyValue() * stamina_skill_multiplier;
|
||||
double monoStaminaSkill = singleColourStamina.DifficultyValue() * stamina_skill_multiplier;
|
||||
double monoStaminaFactor = staminaSkill == 0 ? 1 : Math.Pow(monoStaminaSkill / staminaSkill, 5);
|
||||
|
||||
double colourDifficultStrains = colour.CountTopWeightedStrains();
|
||||
double rhythmDifficultStrains = rhythm.CountTopWeightedStrains();
|
||||
double staminaDifficultStrains = stamina.CountTopWeightedStrains();
|
||||
|
||||
// As we don't have pattern integration in osu!taiko, we apply the other two skills relative to rhythm.
|
||||
patternMultiplier = Math.Pow(staminaRating * colourRating, 0.10);
|
||||
patternMultiplier = Math.Pow(staminaSkill * colourSkill, 0.10);
|
||||
|
||||
strainLengthBonus = 1
|
||||
+ Math.Min(Math.Max((staminaDifficultStrains - 1000) / 3700, 0), 0.15)
|
||||
+ Math.Min(Math.Max((staminaRating - 7.0) / 1.0, 0), 0.05);
|
||||
+ Math.Min(Math.Max((staminaSkill - 7.0) / 1.0, 0), 0.05);
|
||||
|
||||
double combinedRating = combinedDifficultyValue(rhythm, reading, colour, stamina, isRelax, isConvert);
|
||||
double starRating = rescale(combinedRating * 1.4);
|
||||
|
||||
// Calculate proportional contribution of each skill to the combinedRating.
|
||||
double skillRating = starRating / (rhythmSkill + readingSkill + colourSkill + staminaSkill);
|
||||
|
||||
double rhythmDifficulty = rhythmSkill * skillRating;
|
||||
double readingDifficulty = readingSkill * skillRating;
|
||||
double colourDifficulty = colourSkill * skillRating;
|
||||
double staminaDifficulty = staminaSkill * skillRating;
|
||||
|
||||
TaikoDifficultyAttributes attributes = new TaikoDifficultyAttributes
|
||||
{
|
||||
StarRating = starRating,
|
||||
Mods = mods,
|
||||
RhythmDifficulty = rhythmRating,
|
||||
ReadingDifficulty = readingRating,
|
||||
ColourDifficulty = colourRating,
|
||||
StaminaDifficulty = staminaRating,
|
||||
RhythmDifficulty = rhythmDifficulty,
|
||||
ReadingDifficulty = readingDifficulty,
|
||||
ColourDifficulty = colourDifficulty,
|
||||
StaminaDifficulty = staminaDifficulty,
|
||||
MonoStaminaFactor = monoStaminaFactor,
|
||||
RhythmTopStrains = rhythmDifficultStrains,
|
||||
ColourTopStrains = colourDifficultStrains,
|
||||
|
||||
Reference in New Issue
Block a user