mirror of
https://github.com/D1GQ/BetterAmongUs.git
synced 2026-10-20 01:46:19 +00:00
Fix code for 2025.3.25
This commit is contained in:
1 parent
654db62f25
commit
028676c42b
11 files changed
+53
-67
No files matched your search
@@ -185,11 +185,11 @@ class BAUAntiCheat
|
||||
if (GameState.IsInGamePlay)
|
||||
{
|
||||
if (callId is (byte)RpcCalls.SetColor
|
||||
or (byte)RpcCalls.SetHat
|
||||
or (byte)RpcCalls.SetSkin
|
||||
or (byte)RpcCalls.SetVisor
|
||||
or (byte)RpcCalls.SetPet
|
||||
or (byte)RpcCalls.SetNamePlate)
|
||||
or (byte)RpcCalls.SetHat_Deprecated
|
||||
or (byte)RpcCalls.SetSkin_Deprecated
|
||||
or (byte)RpcCalls.SetVisor_Deprecated
|
||||
or (byte)RpcCalls.SetPet_Deprecated
|
||||
or (byte)RpcCalls.SetNamePlate_Deprecated)
|
||||
{
|
||||
BetterNotificationManager.NotifyCheat(player, string.Format(Translator.GetString("AntiCheat.InvalidSetRPC"), Enum.GetName((RpcCalls)callId)));
|
||||
Logger.LogCheat($"{player.BetterData().RealName} {Enum.GetName((RpcCalls)callId)}: {GameState.IsInGamePlay}");
|
||||
|
||||
@@ -5,5 +5,5 @@ namespace BetterAmongUs.Modules.AntiCheat;
|
||||
[RegisterRPCHandler]
|
||||
internal sealed class SetHatHandler : RPCHandler
|
||||
{
|
||||
internal override byte CallId => (byte)RpcCalls.SetHat;
|
||||
internal override byte CallId => (byte)RpcCalls.SetHat_Deprecated;
|
||||
}
|
||||
@@ -5,5 +5,5 @@ namespace BetterAmongUs.Modules.AntiCheat;
|
||||
[RegisterRPCHandler]
|
||||
internal sealed class SetNamePlateHandler : RPCHandler
|
||||
{
|
||||
internal override byte CallId => (byte)RpcCalls.SetNamePlate;
|
||||
internal override byte CallId => (byte)RpcCalls.SetNamePlate_Deprecated;
|
||||
}
|
||||
@@ -5,5 +5,5 @@ namespace BetterAmongUs.Modules.AntiCheat;
|
||||
[RegisterRPCHandler]
|
||||
internal sealed class SetPetHandler : RPCHandler
|
||||
{
|
||||
internal override byte CallId => (byte)RpcCalls.SetPet;
|
||||
internal override byte CallId => (byte)RpcCalls.SetPet_Deprecated;
|
||||
}
|
||||
@@ -5,5 +5,5 @@ namespace BetterAmongUs.Modules.AntiCheat;
|
||||
[RegisterRPCHandler]
|
||||
internal sealed class SetSkinHandler : RPCHandler
|
||||
{
|
||||
internal override byte CallId => (byte)RpcCalls.SetSkin;
|
||||
internal override byte CallId => (byte)RpcCalls.SetSkin_Deprecated;
|
||||
}
|
||||
@@ -5,5 +5,5 @@ namespace BetterAmongUs.Modules.AntiCheat;
|
||||
[RegisterRPCHandler]
|
||||
internal sealed class SetVisorHandler : RPCHandler
|
||||
{
|
||||
internal override byte CallId => (byte)RpcCalls.SetVisor;
|
||||
internal override byte CallId => (byte)RpcCalls.SetVisor_Deprecated;
|
||||
}
|
||||
@@ -17,7 +17,7 @@ class FileChecker
|
||||
"System", "Unity", "Harmony", "BepInEx", "Microsoft", "Il2Cpp", "Hazel",
|
||||
"MonoMod", "netstandard", "mscorlib", "AssetRipper", "Cpp2IL", "AsmResolver", "Iced",
|
||||
"SemanticVersioning", "Mono.Cecil", "Assembly-CSharp", "StableNameDotNet",
|
||||
"Disarm", "Gee.External.Capstone", "Rewired_Core", "AddressablesPlayAssetDelivery",
|
||||
"Disarm", "Gee.External.Capstone", "Rewired_Core", "AddressablesPlayAssetDelivery", "Newtonsoft.Json",
|
||||
"Assembly-CSharp-firstpass", "Sentry", "BetterAmongUs", "MCI", "CrowdedMod", "Mini.RegionInstall", "Unlock", "Skin"
|
||||
});
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ internal static class GameState
|
||||
internal static bool IsNormalGame => GameOptionsManager.Instance.CurrentGameOptions.GameMode is GameModes.Normal or GameModes.NormalFools;
|
||||
internal static bool IsHideNSeek => GameOptionsManager.Instance != null && GameOptionsManager.Instance.CurrentGameOptions.GameMode is GameModes.HideNSeek or GameModes.SeekFools;
|
||||
internal static bool SkeldIsActive => (MapNames)GameOptionsManager.Instance.CurrentGameOptions.MapId == MapNames.Skeld;
|
||||
internal static bool MiraHQIsActive => (MapNames)GameOptionsManager.Instance.CurrentGameOptions.MapId == MapNames.Mira;
|
||||
internal static bool MiraHQIsActive => (MapNames)GameOptionsManager.Instance.CurrentGameOptions.MapId == MapNames.MiraHQ;
|
||||
internal static bool PolusIsActive => (MapNames)GameOptionsManager.Instance.CurrentGameOptions.MapId == MapNames.Polus;
|
||||
internal static bool DleksIsActive => (MapNames)GameOptionsManager.Instance.CurrentGameOptions.MapId == MapNames.Dleks;
|
||||
internal static bool AirshipIsActive => (MapNames)GameOptionsManager.Instance.CurrentGameOptions.MapId == MapNames.Airship;
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
using HarmonyLib;
|
||||
using AmongUs.Data.Player;
|
||||
using HarmonyLib;
|
||||
|
||||
namespace BetterAmongUs.Patches;
|
||||
|
||||
[HarmonyPatch(typeof(StatsManager), nameof(StatsManager.BanMinutesLeft), MethodType.Getter)]
|
||||
[HarmonyPatch(typeof(PlayerBanData), nameof(PlayerBanData.BanMinutesLeft), MethodType.Getter)]
|
||||
internal static class DisconnectPenaltyPatch
|
||||
{
|
||||
internal static bool Prefix(StatsManager __instance, ref int __result)
|
||||
internal static bool Prefix(PlayerBanData __instance, ref int __result)
|
||||
{
|
||||
if (__instance.BanPoints != 0f)
|
||||
{
|
||||
|
||||
@@ -205,12 +205,12 @@ class GamePlayManager
|
||||
|
||||
switch (EndGameResult.CachedGameOverReason)
|
||||
{
|
||||
case GameOverReason.HumansByTask:
|
||||
case GameOverReason.CrewmatesByTask:
|
||||
winTeam = Translator.GetString(StringNames.Crewmates);
|
||||
winTag = Translator.GetString("Game.Summary.Result.TasksCompletion");
|
||||
winColor = "#8cffff";
|
||||
break;
|
||||
case GameOverReason.HumansByVote:
|
||||
case GameOverReason.CrewmatesByVote:
|
||||
winTeam = Translator.GetString(StringNames.Crewmates);
|
||||
winTag = Translator.GetString("Game.Summary.Result.ImpostersVotedOut");
|
||||
winColor = "#8cffff";
|
||||
@@ -220,33 +220,33 @@ class GamePlayManager
|
||||
winTag = Translator.GetString("Game.Summary.Result.ImpostorsDisconnected");
|
||||
winColor = "#8cffff";
|
||||
break;
|
||||
case GameOverReason.ImpostorByKill:
|
||||
case GameOverReason.ImpostorsByKill:
|
||||
winTeam = Translator.GetString(StringNames.ImpostorsCategory);
|
||||
winTag = Translator.GetString("Game.Summary.Result.CrewOutnumbered");
|
||||
winColor = "#f00202";
|
||||
break;
|
||||
case GameOverReason.ImpostorBySabotage:
|
||||
case GameOverReason.ImpostorsBySabotage:
|
||||
winTeam = Translator.GetString(StringNames.ImpostorsCategory);
|
||||
winTag = Translator.GetString("Game.Summary.Result.Sabotage");
|
||||
winColor = "#f00202";
|
||||
break;
|
||||
case GameOverReason.ImpostorByVote:
|
||||
case GameOverReason.ImpostorsByVote:
|
||||
winTeam = Translator.GetString(StringNames.ImpostorsCategory);
|
||||
winTag = Translator.GetString("Game.Summary.Result.CrewOutnumbered");
|
||||
winColor = "#f00202";
|
||||
break;
|
||||
case GameOverReason.HumansDisconnect:
|
||||
case GameOverReason.CrewmateDisconnect:
|
||||
winTeam = Translator.GetString(StringNames.ImpostorsCategory);
|
||||
winTag = Translator.GetString("Game.Summary.Result.CrematesDisconnected");
|
||||
winColor = "#f00202";
|
||||
break;
|
||||
|
||||
case GameOverReason.HideAndSeek_ByTimer:
|
||||
case GameOverReason.HideAndSeek_CrewmatesByTimer:
|
||||
winTeam = Translator.GetString("Game.Summary.Hiders");
|
||||
winTag = Translator.GetString("Game.Summary.Result.TimeOut");
|
||||
winColor = "#8cffff";
|
||||
break;
|
||||
case GameOverReason.HideAndSeek_ByKills:
|
||||
case GameOverReason.HideAndSeek_ImpostorsByKills:
|
||||
winTeam = Translator.GetString("Game.Summary.Seekers");
|
||||
winTag = Translator.GetString("Game.Summary.Result.NoSurvivors");
|
||||
winColor = "#f00202";
|
||||
|
||||
@@ -9,7 +9,8 @@ namespace BetterAmongUs.Patches;
|
||||
[HarmonyPatch]
|
||||
internal class PrivateLobbyPatch
|
||||
{
|
||||
private static AprilFoolsModeToggleButton? toggle;
|
||||
private static GameObject? toggle;
|
||||
private static List<PassiveButton>? buttons = [];
|
||||
private static TextMeshPro? toggleText;
|
||||
|
||||
[HarmonyPatch(typeof(CreateGameOptions))]
|
||||
@@ -18,81 +19,65 @@ internal class PrivateLobbyPatch
|
||||
internal static void CreateGameOptionsShow_Postfix(CreateGameOptions __instance)
|
||||
{
|
||||
if (toggle != null) return;
|
||||
buttons.Clear();
|
||||
|
||||
toggle = UnityEngine.Object.Instantiate(__instance.AprilFoolsToggle, __instance.transform);
|
||||
toggle = UnityEngine.Object.Instantiate(__instance.AprilFoolsToggle, __instance.contentObjects.First().transform.parent);
|
||||
if (toggle != null)
|
||||
{
|
||||
buttons.Add(toggle.transform.Find("AprilOn").GetComponent<PassiveButton>());
|
||||
buttons.Add(toggle.transform.Find("AprilOff").GetComponent<PassiveButton>());
|
||||
if (buttons.Count < 2) return;
|
||||
|
||||
toggle.gameObject.SetActive(true);
|
||||
var onButton = toggle.onButton.GetComponent<PassiveButton>();
|
||||
var onButton = buttons[0];
|
||||
if (onButton != null)
|
||||
{
|
||||
onButton.gameObject.SetActive(false);
|
||||
onButton.OnClick = new();
|
||||
onButton.OnClick.AddListener((Action)(() => TogglePrivateOnlyLobby(true)));
|
||||
}
|
||||
var offButton = toggle.offButton.GetComponent<PassiveButton>();
|
||||
var offButton = buttons[1];
|
||||
if (offButton != null)
|
||||
{
|
||||
offButton.gameObject.SetActive(false);
|
||||
offButton.OnClick = new();
|
||||
offButton.OnClick.AddListener((Action)(() => TogglePrivateOnlyLobby(false)));
|
||||
}
|
||||
var aspect = toggle.gameObject.AddComponent<AspectPosition>();
|
||||
aspect.Alignment = AspectPosition.EdgeAlignments.Top;
|
||||
aspect.DistanceFromEdge = new UnityEngine.Vector3(0, 1.7f, 0);
|
||||
aspect.DistanceFromEdge = new UnityEngine.Vector3(0, 1.62f, 0);
|
||||
aspect.AdjustPosition();
|
||||
|
||||
var text = toggle.transform.Find("AprilFoolsModeText")?.GetComponent<TextMeshPro>();
|
||||
var text = toggle.transform.Find("BlackSquare/ModeText")?.GetComponent<TextMeshPro>();
|
||||
if (text != null)
|
||||
{
|
||||
text.DestroyTextTranslator();
|
||||
text.text = "Private Only Lobby";
|
||||
toggleText = text;
|
||||
}
|
||||
|
||||
var banner = toggle.transform.Find("Banner")?.GetComponent<SpriteRenderer>();
|
||||
if (banner != null)
|
||||
{
|
||||
banner.color = new(1, 1, 1, 0.25f);
|
||||
}
|
||||
}
|
||||
|
||||
TogglePrivateOnlyLobby(Main.PrivateOnlyLobby.Value);
|
||||
}
|
||||
|
||||
private static void TogglePrivateOnlyLobby(bool modeOn)
|
||||
{
|
||||
Main.PrivateOnlyLobby.Value = modeOn;
|
||||
}
|
||||
if (buttons.Count < 2) return;
|
||||
|
||||
[HarmonyPatch(typeof(AprilFoolsModeToggleButton))]
|
||||
[HarmonyPatch(nameof(AprilFoolsModeToggleButton.Update))]
|
||||
[HarmonyPrefix]
|
||||
internal static bool AprilFoolsModeToggleButtonUpdate_Prefix(AprilFoolsModeToggleButton __instance)
|
||||
{
|
||||
if (__instance == toggle)
|
||||
buttons[0].gameObject.SetActive(true);
|
||||
buttons[1].gameObject.SetActive(true);
|
||||
buttons[0].SelectButton(false);
|
||||
buttons[1].SelectButton(false);
|
||||
|
||||
if (modeOn)
|
||||
{
|
||||
if (Main.PrivateOnlyLobby.Value)
|
||||
{
|
||||
__instance.offButton.OutColor = Color.grey;
|
||||
__instance.offText.color = Color.grey;
|
||||
__instance.offButtonSprite.color = Color.grey;
|
||||
__instance.onButton.OutColor = Color.white;
|
||||
__instance.onText.color = Color.white;
|
||||
__instance.onButtonSprite.color = Color.green;
|
||||
if (toggleText != null) toggleText.color = new(1, 1, 1, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
__instance.onButton.OutColor = Color.grey;
|
||||
__instance.onText.color = Color.grey;
|
||||
__instance.onButtonSprite.color = Color.grey;
|
||||
__instance.offButton.OutColor = Color.white;
|
||||
__instance.offText.color = Color.white;
|
||||
__instance.offButtonSprite.color = Color.green;
|
||||
if (toggleText != null) toggleText.color = new(1, 1, 1, 0.5f);
|
||||
}
|
||||
|
||||
return false;
|
||||
buttons[0].SelectButton(true);
|
||||
}
|
||||
|
||||
return true;
|
||||
else
|
||||
{
|
||||
buttons[1].SelectButton(true);
|
||||
}
|
||||
Main.PrivateOnlyLobby.Value = modeOn;
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(LobbyInfoPane))]
|
||||
|
||||
Reference in new issue
Block a user