Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of SmallCheatDetector v1.0.3
SmallCheatDetector.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Controls; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("RadiationIsCool")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("RadiationIsCool")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("8ee335db-0cbe-470c-8fbc-69263f01b35a")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace PiggyAntiCheat { [BepInPlugin("Piggy.SmallCheatDetector", "SmallCheatDetector", "1.0.3")] public class Plugin : BaseUnityPlugin { private const string modGUID = "Piggy.SmallCheatDetector"; private const string modName = "SmallCheatDetector"; private const string modVersion = "1.0.3"; private readonly Harmony harmony = new Harmony("Piggy.SmallCheatDetector"); private static Plugin Instance; public static bool setKorean; public static ManualLogSource mls; public static AssetBundle Bundle; public static string PluginDirectory; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } PluginDirectory = ((BaseUnityPlugin)this).Info.Location; mls = Logger.CreateLogSource("Piggy.SmallCheatDetector"); mls.LogInfo((object)"Small Cheat Detector is loaded"); setKorean = ((BaseUnityPlugin)this).Config.Bind<bool>("Translation", "SetKorean", false, "Set language to Korean.").Value; Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), (string)null); } } } namespace PiggyAntiCheat.Patches { [HarmonyPatch(typeof(GrabbableObject))] internal class GrabbableObjectPatch { public static List<string> twoItemCheckedName = new List<string>(); [HarmonyPostfix] [HarmonyPatch("Update")] private static void Update_Postfix(GrabbableObject __instance, ref bool ___isPocketed, ref Item ___itemProperties, ref PlayerControllerB ___playerHeldBy) { CheckTwoHandedCheat(___itemProperties, ___playerHeldBy, ___isPocketed); } private static void CheckTwoHandedCheat(Item ___itemProperties, PlayerControllerB ___playerHeldBy, bool ___isPocketed) { if (!___isPocketed || !___itemProperties.twoHanded) { return; } foreach (string item in twoItemCheckedName) { if (item == ___playerHeldBy.playerUsername) { return; } } if (Plugin.setKorean) { HUDManager.Instance.DisplayTip("양 손 치트 감지!", "플레이어 " + ___playerHeldBy.playerUsername + " 이(가) 양 손 아이템을 인벤토리에 넣었습니다! 아이템 이름: " + ___itemProperties.itemName, false, false, "LC_Tip1"); } else { HUDManager.Instance.DisplayTip("Detect Two-Handed cheat!", "Player " + ___playerHeldBy.playerUsername + " put both hand items in his pockets! Item name: " + ___itemProperties.itemName, false, false, "LC_Tip1"); } twoItemCheckedName.Add(___playerHeldBy.playerUsername); } } [HarmonyPatch(typeof(ShipBuildModeManager))] internal class ShipBuildModeManagerPatch { [HarmonyPostfix] [HarmonyPatch("Update")] private static void Update_Postfix(ShipBuildModeManager __instance) { //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)GameNetworkManager.Instance == (Object)null) && !((Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)null) && ((ButtonControl)Keyboard.current.kKey).wasPressedThisFrame && GameNetworkManager.Instance.isHostingGame && !StartOfRound.Instance.localPlayerController.inTerminalMenu && !StartOfRound.Instance.localPlayerController.isTypingChat && !StartOfRound.Instance.localPlayerController.isPlayerDead && StartOfRound.Instance.localPlayerController.isPlayerControlled) { if (StartOfRound.Instance.unlockablesList.unlockables[16].inStorage) { StartOfRound.Instance.unlockablesList.unlockables[16].inStorage = false; StartOfRound.Instance.ReturnUnlockableFromStorageClientRpc(16); } __instance.PlaceShipObject(new Vector3(7.4564f, 1.9736f, -16.3774f), new Vector3(270f, 90f, -9f), GameObject.Find("Terminal").GetComponentInChildren<PlaceableShipObject>(), true); } } } }