diff --git a/Assets/Script/Menu/DifficultySelect/DifficultySelectMenu.cs b/Assets/Script/Menu/DifficultySelect/DifficultySelectMenu.cs index 1c46939a17..3e86fddf2d 100644 --- a/Assets/Script/Menu/DifficultySelect/DifficultySelectMenu.cs +++ b/Assets/Script/Menu/DifficultySelect/DifficultySelectMenu.cs @@ -143,6 +143,14 @@ private void OnEnable() _songList = new List { GlobalVariables.State.CurrentSong }; } + // Starting a fresh selection session: discard any session-scoped modifiers + // imposed by a previous song (see ApplySessionModifiers) so each player's + // own saved selection is what shows and is edited here. + foreach (var player in PlayerContainer.Players) + { + player.Profile.RestoreSavedModifiers(); + } + // ChangePlayer(0) will update for the current player _playerIndex = 0; _vocalModifierSelectIndex = -1; @@ -534,7 +542,8 @@ private void ChangePlayer(int add) // Call the player with the selected modifiers, the "primary player" var primaryPlayer = PlayerContainer.Players[_vocalModifierSelectIndex]; - // Copy modifiers to all other vocal players + // Apply the primary player's modifiers to the other vocal players + // for this session only, so their own saved selections survive foreach (var player in PlayerContainer.Players) { if (player.SittingOut) continue; @@ -542,7 +551,7 @@ private void ChangePlayer(int add) if (player.Profile.GameMode == GameMode.Vocals) { - player.Profile.CopyModifiers(primaryPlayer.Profile); + player.Profile.ApplySessionModifiers(primaryPlayer.Profile); } } }