Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix some maps requiring multiple intro skips that weren't there on stable #27784

Merged
merged 2 commits into from
Apr 3, 2024

Conversation

bdach
Copy link
Collaborator

@bdach bdach commented Apr 3, 2024

Closes #25633.

The reason why that particular beatmap did not have a double skip on stable is here:

        protected bool AllowDoubleSkip
        {
            get
            {
                int leadIn = leadInTime < 10000 ? -leadInTime : 0;
                return !(this is PlayerVs)
                       && AudioEngine.Time < leadIn - (InputManager.ReplayMode ? 50 : 0)
                       && SkipBoundary > 6000;
            }
        }

The particular place of interest is the leadInTime < 10000 check. If leadInTime < 10000, then leadIn == -leadInTime, and it turns out that AudioEngine.Time will always be more than or equal to -leadInTime, because it's also the gameplay start time (link).

This essentially means that if the leadInTime is less than 10000, that particular check is just dead. So a double skip can only occur if the gameplay starts at time -10000 or earlier due to the storyboard.

Here's a beatmap to test with, which reflects the test cases included in this PR one-to-one: storyboard - test (11).zip

…able

Closes ppy#25633.

The reason why that particular beatmap did not have a double skip
on stable is here:

    https://github.com/peppy/osu-stable-reference/blob/e53980dd76857ee899f66ce519ba1597e7874f28/osu!/GameModes/Play/Player.cs#L1761-L1770

The particular place of interest is the `leadInTime < 10000` check.
If `leadInTime < 10000`, then `leadIn == leadInTime`, and it turns out
that `AudioEngine.Time` will always be more than or equal to `leadIn`,
because it's also the gameplay start time:

    https://github.com/peppy/osu-stable-reference/blob/e53980dd76857ee899f66ce519ba1597e7874f28/osu!/GameModes/Play/Player.cs#L2765

This essentially means that if the `leadInTime` is less than 10000,
that particular check is just dead. So a double skip can only occur
if the gameplay starts at time -10000 or earlier due to the storyboard.
@peppy peppy self-requested a review April 3, 2024 20:09
Copy link
Member

@peppy peppy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Matches expectations and fixes one other beatmap I've noticed this on 👍

@peppy peppy merged commit 2f64c16 into ppy:master Apr 3, 2024
13 of 17 checks passed
@bdach bdach deleted the double-skip-yet-again branch April 4, 2024 06:02
smoogipoo pushed a commit to smoogipoo/osu that referenced this pull request Apr 4, 2024
 Fix some maps requiring multiple intro skips that weren't there on stable
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Multiple skip sections before beatmap starts
3 participants