Closes https://github.com/ppy/osu/issues/26073.
For any potential future usage
Fix osu! standardised score conversion sometimes exceeding bounds
-1
ShouldMigrateToNewStandardised()
Co-authored-by: Zyf <zyfarok@gmail.com> Closes https://github.com/ppy/osu/issues/25860 Users reported that some stable scores would convert to large negative total scores in lazer after the introduction of combo exponent. Those large negative total scores were actually mangled NaNs. The root cause of this was the following calculation going below zero unexpectedly: https://github.com/ppy/osu/blob/8e8d9b2cd96be4c4b3d8f1f01dc013fc9d41f765/osu.Game/Database/StandardisedScoreMigrationTools.cs#L323 which then propagates negative numbers onward until https://github.com/ppy/osu/blob/8e8d9b2cd96be4c4b3d8f1f01dc013fc9d41f765/osu.Game/Database/StandardisedScoreMigrationTools.cs#L337 which yields a NaN due to attempting to take the square root of a negative number. To fix, clamp `comboPortionInScoreV1` to sane limits: to `comboPortionFromLongestComboInScoreV1` from below, and to `maximumAchievableComboPortionInScoreV1` from above. This is a less direct fix than perhaps imagined, but it seems like a better one as it will also affect the calculation of both the lower and the upper estimate of the score.
Hopefully, _hopefully_, makes all this a little bit less inscrutable.
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
Correctly handle multiple online score ID types
IScoreInfo : IHasNamedFiles
LegacyOnlineID
Addresses https://github.com/ppy/osu/discussions/24989.
Closes https://github.com/ppy/osu/issues/24926.
ArchiveReader
Stream
CollapsibleButtonContainerSlim