From 9577472c9e3c9444fb6682aaf3266832f64cb707 Mon Sep 17 00:00:00 2001 From: Dan Balasescu Date: Mon, 15 Sep 2025 12:49:42 +0900 Subject: [PATCH] Fix errors in gameplay stage of matchmaking --- .../OnlinePlay/Matchmaking/MatchmakingScreen.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/osu.Game/Screens/OnlinePlay/Matchmaking/MatchmakingScreen.cs b/osu.Game/Screens/OnlinePlay/Matchmaking/MatchmakingScreen.cs index ba2e5593bf..b02583103d 100644 --- a/osu.Game/Screens/OnlinePlay/Matchmaking/MatchmakingScreen.cs +++ b/osu.Game/Screens/OnlinePlay/Matchmaking/MatchmakingScreen.cs @@ -217,6 +217,10 @@ namespace osu.Game.Screens.OnlinePlay.Matchmaking private void updateGameplayState() { MultiplayerPlaylistItem item = client.Room!.CurrentPlaylistItem; + + if (item.Expired) + return; + RulesetInfo ruleset = rulesets.GetRuleset(item.RulesetID)!; Ruleset rulesetInstance = ruleset.CreateInstance(); @@ -228,9 +232,15 @@ namespace osu.Game.Screens.OnlinePlay.Matchmaking Mods.Value = item.RequiredMods.Select(m => m.ToMod(rulesetInstance)).ToArray(); if (Beatmap.Value is DummyWorkingBeatmap) - client.ChangeState(MultiplayerUserState.Idle).FireAndForget(); + { + if (client.LocalUser!.State == MultiplayerUserState.Ready) + client.ChangeState(MultiplayerUserState.Idle).FireAndForget(); + } else - client.ChangeState(MultiplayerUserState.Ready).FireAndForget(); + { + if (client.LocalUser!.State == MultiplayerUserState.Idle) + client.ChangeState(MultiplayerUserState.Ready).FireAndForget(); + } client.ChangeBeatmapAvailability(beatmapAvailabilityTracker.Availability.Value).FireAndForget(); }