mirror of
https://github.com/D1GQ/BetterAmongUs.git
synced 2026-10-19 15:51:52 +00:00
add RemovePetOnDeath and DisableSabotages
This commit is contained in:
1 parent
6a16b1122c
commit
001e326ac3
6 files changed
+45
-8
No files matched your search
@@ -308,11 +308,7 @@ internal class NetworkManager
|
||||
return false;
|
||||
}
|
||||
|
||||
if (BAUAntiCheat.RpcUpdateSystemCheck(player, systemType, reader) != true)
|
||||
{
|
||||
Logger.LogCheat($"RPC canceled by Anti-Cheat: {Enum.GetName(typeof(SystemTypes), (int)systemType)} - {MessageReader.Get(reader).ReadByte()}");
|
||||
return false;
|
||||
}
|
||||
if (BAUAntiCheat.RpcUpdateSystemCheck(player, systemType, reader) != true) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
using BetterAmongUs.Modules;
|
||||
using BetterAmongUs.Patches;
|
||||
using HarmonyLib;
|
||||
|
||||
namespace BetterAmongUs.Managers;
|
||||
|
||||
[HarmonyPatch]
|
||||
internal static class PrivateOnlyLobbyManager
|
||||
{
|
||||
internal static void SyncNames()
|
||||
{
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(PlayerControl))]
|
||||
[HarmonyPatch(nameof(PlayerControl.Die))]
|
||||
[HarmonyPostfix]
|
||||
internal static void PlayerControlDie_Postfix(PlayerControl __instance)
|
||||
{
|
||||
if (GameState.IsPrivateOnlyLobby && BetterGameSettings.RemovePetOnDeath.GetBool())
|
||||
{
|
||||
__instance.RpcSetPet(PetData.EmptyId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -245,10 +245,20 @@ class BAUAntiCheat
|
||||
// Check game states when sabotaging
|
||||
internal static bool RpcUpdateSystemCheck(PlayerControl player, SystemTypes systemType, MessageReader oldReader)
|
||||
{
|
||||
if (Utils.SystemTypeIsSabotage(systemType) || systemType is SystemTypes.Doors)
|
||||
{
|
||||
if (GameState.IsPrivateOnlyLobby && BetterGameSettings.DisableSabotages.GetBool()) return false;
|
||||
}
|
||||
|
||||
MessageReader reader = MessageReader.Get(oldReader);
|
||||
|
||||
RegisterRPCHandlerAttribute.GetClassInstance<UpdateSystemHandler>().CatchedSystemType = systemType;
|
||||
return RPCHandler.HandleRPC((byte)RpcCalls.UpdateSystem, player, reader, HandlerFlag.AntiCheatCancel);
|
||||
bool notCanceled = RPCHandler.HandleRPC((byte)RpcCalls.UpdateSystem, player, reader, HandlerFlag.AntiCheatCancel);
|
||||
if (!notCanceled)
|
||||
{
|
||||
Logger.LogCheat($"RPC canceled by Anti-Cheat: {Enum.GetName(typeof(SystemTypes), (int)systemType)} - {MessageReader.Get(reader).ReadByte()}");
|
||||
}
|
||||
return notCanceled;
|
||||
}
|
||||
|
||||
// Check if RPC is known
|
||||
|
||||
@@ -104,6 +104,7 @@ internal static class GameState
|
||||
internal static bool IsCountDown => GameStartManager.InstanceExists && GameStartManager.Instance.startState == GameStartManager.StartingStates.Countdown;
|
||||
internal static bool IsShip => ShipStatus.Instance != null;
|
||||
internal static bool IsHost => AmongUsClient.Instance != null && AmongUsClient.Instance.AmHost;
|
||||
internal static bool IsPrivateOnlyLobby => (Main.PrivateOnlyLobby.Value || AmongUsClient.Instance.AmLocalHost) && IsHost;
|
||||
internal static bool IsBetterHostLobby => PlayerControl.LocalPlayer.IsHost() || Main.AllPlayerControls.Any(pc => pc.IsHost() && pc.BetterData().IsBetterUser);
|
||||
internal static bool IsTOHEHostLobby => Main.AllPlayerControls.Any(pc => pc.IsHost() && pc.BetterData().IsTOHEHost);
|
||||
internal static bool IsCanMove => PlayerControl.LocalPlayer?.CanMove is true;
|
||||
|
||||
@@ -24,6 +24,8 @@ class BetterGameSettings
|
||||
internal static BetterOptionItem? DesyncRoles;
|
||||
internal static BetterOptionItem? CancelInvalidSabotage;
|
||||
internal static BetterOptionItem? CensorDetectionReason;
|
||||
internal static BetterOptionItem? RemovePetOnDeath;
|
||||
internal static BetterOptionItem? DisableSabotages;
|
||||
}
|
||||
|
||||
class BetterGameSettingsTemp
|
||||
@@ -47,7 +49,7 @@ static class GameSettingMenuPatch
|
||||
BetterOptionItem.TempPlayerOptionDataNum = 0;
|
||||
TitleList.Clear();
|
||||
|
||||
// Use 1500 next ID
|
||||
// Use 1700 next ID
|
||||
|
||||
// Anti-Cheat Settings
|
||||
{
|
||||
@@ -91,11 +93,13 @@ static class GameSettingMenuPatch
|
||||
|
||||
// Gameplay Settings
|
||||
{
|
||||
if (IsPreload || GameState.IsHost)
|
||||
if (IsPreload || GameState.IsHost && GameState.IsPrivateOnlyLobby)
|
||||
{
|
||||
if (IsPreload || !GameState.IsHideNSeek)
|
||||
{
|
||||
new BetterOptionHeaderItem().Create(BetterSettingsTab, Translator.GetString("BetterSetting.MainHeader.Gameplay"));
|
||||
BetterGameSettings.DisableSabotages = new BetterOptionCheckboxItem().Create(1500, BetterSettingsTab, Translator.GetString("BetterSetting.Setting.DisableSabotages"), false);
|
||||
BetterGameSettings.RemovePetOnDeath = new BetterOptionCheckboxItem().Create(1600, BetterSettingsTab, Translator.GetString("BetterSetting.Setting.RemovePetOnDeath"), false);
|
||||
}
|
||||
else if (IsPreload || GameState.IsHideNSeek)
|
||||
{
|
||||
|
||||
@@ -87,6 +87,8 @@
|
||||
"BetterSetting.Setting.DetectInvalidRPCs": "Detect invalid RPCs",
|
||||
"BetterSetting.Setting.RoleRandomizer": "Randomizer",
|
||||
"BetterSetting.Setting.DesyncRoles": "Desync roles to other clients",
|
||||
"BetterSetting.Setting.DisableSabotages": "Disable sabotages",
|
||||
"BetterSetting.Setting.RemovePetOnDeath": "Remove pet on death",
|
||||
"BetterSetting.Setting.HideAndSeekImpNum": "# Seekers",
|
||||
"BetterSetting.TempSetting.HideAndSeekImpNum": "Seeker",
|
||||
|
||||
|
||||
Reference in new issue
Block a user