using System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("AichoGuardian")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("AichoGuardian")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("D28110A9-E229-4700-AD4D-DCD37486A82B")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8.1", FrameworkDisplayName = ".NET Framework 4.8.1")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace HideTMPieces; [BepInPlugin("com.yourname.hidetmpieces", "HideTMPieces", "1.0.0")] public class HideTMPiecesPlugin : BaseUnityPlugin { public const string PluginGUID = "com.yourname.hidetmpieces"; public const string PluginName = "HideTMPieces"; public const string PluginVersion = "1.0.0"; internal static ManualLogSource Log; private readonly Harmony _harmony = new Harmony("com.yourname.hidetmpieces"); private void Awake() { Log = ((BaseUnityPlugin)this).Logger; _harmony.PatchAll(); Log.LogInfo((object)"HideTMPieces v1.0.0 cargado — ocultando piezas _TM del martillo."); } private void OnDestroy() { _harmony.UnpatchSelf(); } } [HarmonyPatch(typeof(PieceTable), "UpdateAvailable")] public static class PieceTable_UpdateAvailable_Patch { private static void Postfix(PieceTable __instance) { if (__instance.m_availablePieces == null) { return; } int num = 0; foreach (List availablePiece in __instance.m_availablePieces) { int count = availablePiece.Count; availablePiece.RemoveAll((Piece p) => (Object)(object)p != (Object)null && IsTMPiece(p)); num += count - availablePiece.Count; } if (num > 0) { HideTMPiecesPlugin.Log.LogDebug((object)$"[UpdateAvailable] Ocultadas {num} pieza(s) _TM."); } } private static bool IsTMPiece(Piece piece) { if ((Object)(object)((Component)piece).gameObject == (Object)null) { return false; } string prefabName = Utils.GetPrefabName(((Component)piece).gameObject); return prefabName.EndsWith("_TM", StringComparison.OrdinalIgnoreCase); } }