diff --git a/src/Patches/Gameplay/Anticheat/CheckPlayerLevelPatch.cs b/src/Patches/Gameplay/Anticheat/CheckPlayerLevelPatch.cs
index e18f9d2..e74778b 100644
--- a/src/Patches/Gameplay/Anticheat/CheckPlayerLevelPatch.cs
+++ b/src/Patches/Gameplay/Anticheat/CheckPlayerLevelPatch.cs
@@ -1,6 +1,6 @@
-using BetterAmongUs.Utilities;
-using BetterAmongUs.Modules;
+using BetterAmongUs.Modules;
using BetterAmongUs.Patches.Gameplay.UI.Settings;
+using BetterAmongUs.Utilities;
using HarmonyLib;
namespace BetterAmongUs.Patches.Gameplay.Anticheat;
@@ -20,6 +20,10 @@ internal static class CheckPlayerLevelPatch
// Kick players below minimum level
if (!__instance.IsLocalPlayer() && BetterGameSettings.KickLevel.GetBool() && __instance.Data.PlayerLevel < BetterGameSettings.KickLevelBelow.GetInt())
{
+ var minPlayers = BetterGameSettings.KickLevelBelowMinimumPlayers.GetInt();
+ if (minPlayers > 1 && minPlayers > BAUPlugin.AllPlayerControls.Count)
+ return;
+
__instance.TryKick(setReasonInfo: $" is level {__instance.Data.PlayerLevel}, level must be equal or above {BetterGameSettings.KickLevelBelow.GetInt()} to join");
}
}
diff --git a/src/Patches/Gameplay/UI/Settings/GameSettingsPatch.cs b/src/Patches/Gameplay/UI/Settings/GameSettingsPatch.cs
index 5bcf9f8..907b5f7 100644
--- a/src/Patches/Gameplay/UI/Settings/GameSettingsPatch.cs
+++ b/src/Patches/Gameplay/UI/Settings/GameSettingsPatch.cs
@@ -23,6 +23,7 @@ internal sealed class BetterGameSettings
internal static OptionIntItem? DetectedLevelAbove;
internal static OptionCheckboxItem? KickLevel;
internal static OptionIntItem? KickLevelBelow;
+ internal static OptionIntItem? KickLevelBelowMinimumPlayers;
internal static OptionCheckboxItem? DetectCheatClients;
internal static OptionCheckboxItem? DetectInvalidRpcs;
internal static OptionCheckboxItem? RpcRateLimiting;
@@ -88,6 +89,7 @@ internal static class GameSettingsPatch
BetterGameSettings.DetectedLevelAbove = OptionIntItem.Create(BetterSettingsTab, TranslationStrings.BetterSetting_Setting_DetectedLevelAbove, (100, 10000, 5), 500, ("Lv ", ""), BetterGameSettings.DetectedLevel);
BetterGameSettings.KickLevel = OptionCheckboxItem.Create(BetterSettingsTab, TranslationStrings.BetterSetting_Setting_KickLevel, false);
BetterGameSettings.KickLevelBelow = OptionIntItem.Create(BetterSettingsTab, TranslationStrings.BetterSetting_Setting_KickLevelBelow, (0, 10000, 1), 0, ("Lv ", ""), BetterGameSettings.KickLevel);
+ BetterGameSettings.KickLevelBelowMinimumPlayers = OptionIntItem.Create(BetterSettingsTab, TranslationStrings.BetterSetting_Setting_KickLevelBelowMinimumPlayers, (1, 15, 1), 9, parent: BetterGameSettings.KickLevelBelow);
BetterGameSettings.DetectCheatClients = OptionCheckboxItem.Create(BetterSettingsTab, TranslationStrings.BetterSetting_Setting_DetectCheatClients, true);
BetterGameSettings.DetectInvalidRpcs = OptionCheckboxItem.Create(BetterSettingsTab, TranslationStrings.BetterSetting_Setting_DetectInvalidRpcs, true);
BetterGameSettings.RpcRateLimiting = OptionCheckboxItem.Create(BetterSettingsTab, TranslationStrings.BetterSetting_Setting_RpcRateLimiting, true);
diff --git a/src/Resources/Lang/en_US.json b/src/Resources/Lang/en_US.json
index 1bd4326..35f731a 100644
--- a/src/Resources/Lang/en_US.json
+++ b/src/Resources/Lang/en_US.json
@@ -97,6 +97,7 @@
"BetterSetting.Setting.DetectedLevelAbove": "Detected player level above",
"BetterSetting.Setting.KickLevel": "Kick player levels",
"BetterSetting.Setting.KickLevelBelow": "Kick player level below",
+ "BetterSetting.Setting.KickLevelBelowMinimumPlayers": "Only when player count at least",
"BetterSetting.Setting.DetectCheatClients": "Detect cheat clients",
"BetterSetting.Setting.DetectInvalidRpcs": "Detect invalid Rpcs",
"BetterSetting.Setting.RpcRateLimiting": "Rpc Rate Limiting",
diff --git a/src/build/Generated/TranslationStrings.cs b/src/build/Generated/TranslationStrings.cs
index f594500..18bf97a 100644
--- a/src/build/Generated/TranslationStrings.cs
+++ b/src/build/Generated/TranslationStrings.cs
@@ -478,6 +478,11 @@ public static class TranslationStrings
///
public static readonly TranslationString BetterSetting_Setting_KickLevelBelow = new("BetterSetting.Setting.KickLevelBelow");
+ ///
+ /// Base Translation: Only when player count at least
+ ///
+ public static readonly TranslationString BetterSetting_Setting_KickLevelBelowMinimumPlayers = new("BetterSetting.Setting.KickLevelBelowMinimumPlayers");
+
///
/// Base Translation: Detect cheat clients
///