diff --git a/osu.Game/Rulesets/Mods/IMod.cs b/osu.Game/Rulesets/Mods/IMod.cs
index bdfb273b13..325b75b76e 100644
--- a/osu.Game/Rulesets/Mods/IMod.cs
+++ b/osu.Game/Rulesets/Mods/IMod.cs
@@ -39,8 +39,8 @@ namespace osu.Game.Rulesets.Mods
///
///
/// - Should be always false for cases where the user is not interacting with the game.
- /// - Should be false in for mods that make gameplay duration dependent on user input (e.g. ).
- /// - Should be false in for mods that affect the gameplay duration (e.g. and ).
+ /// - Should be false in for mods that make gameplay duration dependent on user input (e.g. ).
+ /// - Should be false in for mods that affect the gameplay duration (e.g. and ).
///
///
/// The mod usage.
diff --git a/osu.Game/Rulesets/Mods/ModRateAdjust.cs b/osu.Game/Rulesets/Mods/ModRateAdjust.cs
index 810b93c4dd..ab724673b6 100644
--- a/osu.Game/Rulesets/Mods/ModRateAdjust.cs
+++ b/osu.Game/Rulesets/Mods/ModRateAdjust.cs
@@ -11,7 +11,7 @@ namespace osu.Game.Rulesets.Mods
{
public abstract class ModRateAdjust : Mod, IApplicableToRate
{
- public override bool IsPlayable(ModUsage usage) => usage != ModUsage.MultiplayerFree;
+ public override bool IsPlayable(ModUsage usage) => usage != ModUsage.MultiplayerPerPlayer;
public abstract BindableNumber SpeedChange { get; }
diff --git a/osu.Game/Rulesets/Mods/ModTimeRamp.cs b/osu.Game/Rulesets/Mods/ModTimeRamp.cs
index fa6a9f3e5b..96b38301b5 100644
--- a/osu.Game/Rulesets/Mods/ModTimeRamp.cs
+++ b/osu.Game/Rulesets/Mods/ModTimeRamp.cs
@@ -30,7 +30,7 @@ namespace osu.Game.Rulesets.Mods
[SettingSource("Adjust pitch", "Should pitch be adjusted with speed")]
public abstract BindableBool AdjustPitch { get; }
- public override bool IsPlayable(ModUsage usage) => usage != ModUsage.MultiplayerFree;
+ public override bool IsPlayable(ModUsage usage) => usage != ModUsage.MultiplayerPerPlayer;
public override Type[] IncompatibleMods => new[] { typeof(ModRateAdjust), typeof(ModAdaptiveSpeed) };
diff --git a/osu.Game/Rulesets/Mods/ModUsage.cs b/osu.Game/Rulesets/Mods/ModUsage.cs
index 0892f528d5..59a62bfc6f 100644
--- a/osu.Game/Rulesets/Mods/ModUsage.cs
+++ b/osu.Game/Rulesets/Mods/ModUsage.cs
@@ -9,18 +9,20 @@ namespace osu.Game.Rulesets.Mods
public enum ModUsage
{
///
- /// Used for a per-user gameplay session. Determines whether the mod is playable by an end user.
+ /// Used for a per-user gameplay session.
+ /// Determines whether the mod is playable by an end user.
///
User,
///
- /// Used as a "required mod" for a multiplayer match.
+ /// Used in multiplayer but must be applied to all users.
+ /// This is generally the case for mods which affect the length of gameplay.
///
- MultiplayerRequired,
+ MultiplayerRoomWide,
///
- /// Used as a "free mod" for a multiplayer match.
+ /// Used in multiplayer either at a room or per-player level (i.e. "free mod").
///
- MultiplayerFree,
+ MultiplayerPerPlayer,
}
}
diff --git a/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSongSelect.cs b/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSongSelect.cs
index 4c1350a56b..63467dbb9d 100644
--- a/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSongSelect.cs
+++ b/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSongSelect.cs
@@ -117,8 +117,8 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer
protected override BeatmapDetailArea CreateBeatmapDetailArea() => new PlayBeatmapDetailArea();
- protected override bool IsValidMod(Mod mod) => base.IsValidMod(mod) && mod.IsPlayable(ModUsage.MultiplayerRequired);
+ protected override bool IsValidMod(Mod mod) => base.IsValidMod(mod) && mod.IsPlayable(ModUsage.MultiplayerRoomWide);
- protected override bool IsValidFreeMod(Mod mod) => base.IsValidFreeMod(mod) && mod.IsPlayable(ModUsage.MultiplayerFree);
+ protected override bool IsValidFreeMod(Mod mod) => base.IsValidFreeMod(mod) && mod.IsPlayable(ModUsage.MultiplayerPerPlayer);
}
}
diff --git a/osu.Game/Utils/ModUtils.cs b/osu.Game/Utils/ModUtils.cs
index 4915f5bdc6..946386a7ce 100644
--- a/osu.Game/Utils/ModUtils.cs
+++ b/osu.Game/Utils/ModUtils.cs
@@ -121,7 +121,7 @@ namespace osu.Game.Utils
/// Invalid mods, if any were found. Will be null if all mods were valid.
/// Whether the input mods were all valid. If false, will contain all invalid entries.
public static bool CheckValidRequiredModsForMultiplayer(IEnumerable mods, [NotNullWhen(false)] out List? invalidMods)
- => checkValid(mods, m => m.IsPlayable(ModUsage.MultiplayerRequired), out invalidMods);
+ => checkValid(mods, m => m.IsPlayable(ModUsage.MultiplayerRoomWide), out invalidMods);
///
/// Check the provided combination of mods are valid as "free mods" in a multiplayer match session.
@@ -130,7 +130,7 @@ namespace osu.Game.Utils
/// Invalid mods, if any were found. Will be null if all mods were valid.
/// Whether the input mods were all valid. If false, will contain all invalid entries.
public static bool CheckValidFreeModsForMultiplayer(IEnumerable mods, [NotNullWhen(false)] out List? invalidMods)
- => checkValid(mods, m => m.IsPlayable(ModUsage.MultiplayerFree), out invalidMods);
+ => checkValid(mods, m => m.IsPlayable(ModUsage.MultiplayerPerPlayer), out invalidMods);
private static bool checkValid(IEnumerable mods, Predicate valid, [NotNullWhen(false)] out List? invalidMods)
{