1
0
mirror of https://github.com/ppy/osu.git synced 2026-06-04 21:39:30 +08:00

Fix Hidden mod perfect stacks buff for osu! reading difficulty (#36918)

The `OpacityAt` conditional adds `Preempt` to `StartTime` when the
intention is to check for when `previousObj` is hit, which means it
should just be `StartTime`.

In addition to that, the third conditional's purpose is to ensure that
the buff only applies if `currObj` is animating (its opacity is changing
from the Hidden mod) when `previousObj` is hit. This restructures it so
that it reads more cleanly and communicates its purpose better.


[Conversation](https://discord.com/channels/546120878908506119/1374004990875795586/1480886152042119190)
This commit is contained in:
Rian (Reza Mouna Hendrian)
2026-03-11 03:42:36 +07:00
committed by GitHub
Unverified
parent de0e2c33c9
commit e9f59752c9
@@ -131,7 +131,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
var previousObj = (OsuDifficultyHitObject)currObj.Previous(0);
// Buff perfect stacks only if current note is completely invisible at the time you click the previous note.
if (currObj.LazyJumpDistance == 0 && currObj.OpacityAt(previousObj.BaseObject.StartTime + previousObj.Preempt, true) == 0 && previousObj.StartTime + previousObj.Preempt > currObj.StartTime)
if (currObj.LazyJumpDistance == 0 && currObj.OpacityAt(previousObj.BaseObject.StartTime, true) == 0 && previousObj.StartTime > currObj.StartTime - currObj.Preempt)
hiddenDifficulty += hidden_multiplier * 2500 / Math.Pow(currObj.AdjustedDeltaTime, 1.5); // Perfect stacks are harder the less time between notes
return hiddenDifficulty;