From e9f59752c9600557b60c25d810d36df9e76364c2 Mon Sep 17 00:00:00 2001 From: "Rian (Reza Mouna Hendrian)" <52914632+Rian8337@users.noreply.github.com> Date: Wed, 11 Mar 2026 03:42:36 +0700 Subject: [PATCH] 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) --- osu.Game.Rulesets.Osu/Difficulty/Evaluators/ReadingEvaluator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Difficulty/Evaluators/ReadingEvaluator.cs b/osu.Game.Rulesets.Osu/Difficulty/Evaluators/ReadingEvaluator.cs index 326e98609c..3363e2fbe0 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/Evaluators/ReadingEvaluator.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/Evaluators/ReadingEvaluator.cs @@ -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;