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 HZ WoodPolish v1.0.0
HZ_WoodPolish.dll
Decompiled 2 days agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using HarmonyLib; using Jotunn; using Jotunn.Configs; using Jotunn.Entities; using Jotunn.Managers; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("HZ_WoodPolish")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("HZ_WoodPolish")] [assembly: AssemblyTitle("HZ_WoodPolish")] [assembly: AssemblyVersion("1.0.0.0")] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [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 HZ_Polish { [BepInPlugin("hz.valheim.polish", "HZ_WoodPolish", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class HZPolishPlugin : BaseUnityPlugin { public const string PluginGUID = "hz.valheim.polish"; public const string PluginName = "HZ_WoodPolish"; public const string PluginVersion = "1.0.0"; public const string PieceGameObjectName = "HZPolish_Piece"; public const string ResinPrefabName = "Resin"; public const string ResinSharedName = "$item_resin"; internal static readonly int PolishedHash = StringExtensionMethods.GetStableHashCode("HZPolish_polished"); private void Awake() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) PrefabManager.OnVanillaPrefabsAvailable += RegisterPiece; new Harmony("hz.valheim.polish").PatchAll(); } private void RegisterPiece() { //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Expected O, but got Unknown //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Expected O, but got Unknown //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Expected O, but got Unknown PrefabManager.OnVanillaPrefabsAvailable -= RegisterPiece; GameObject prefab = PrefabManager.Instance.GetPrefab("piece_repair"); if ((Object)(object)prefab == (Object)null) { Logger.LogError((object)"HZ_Polish: prefab 'piece_repair' não encontrado. Verifique o nome no dnSpy."); return; } GameObject val = PrefabManager.Instance.CreateClonedPrefab("HZPolish_Piece", prefab); Sprite icon = null; GameObject prefab2 = PrefabManager.Instance.GetPrefab("Resin"); if ((Object)(object)prefab2 != (Object)null) { ItemDrop component = prefab2.GetComponent<ItemDrop>(); if ((Object)(object)component != (Object)null) { icon = component.m_itemData.GetIcon(); } } else { Logger.LogWarning((object)"HZ_Polish: prefab 'Resin' não encontrado, ícone ficará vazio."); } PieceConfig val2 = new PieceConfig(); val2.Name = "Polir"; val2.Description = "Polir e reparar totalmente uma peça de madeira, protegendo-a do desgaste da chuva. Custo: 1 Resina por aplicação."; val2.PieceTable = "Hammer"; val2.Category = "Misc"; val2.Icon = icon; val2.Requirements = (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig { Item = "Resin", Amount = 1, Recover = false } }; PieceConfig val3 = val2; CustomPiece val4 = new CustomPiece(val, false, val3); PieceManager.Instance.AddPiece(val4); } } [HarmonyPatch(typeof(Player), "Repair")] public static class Player_Repair_PolishPatch { private static bool Prefix(Player __instance, ItemData toolItem, Piece repairPiece) { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)repairPiece == (Object)null || ((Object)((Component)repairPiece).gameObject).name != "HZPolish_Piece") { return true; } Piece hoveringPiece = __instance.GetHoveringPiece(); if ((Object)(object)hoveringPiece == (Object)null) { return false; } if (!PrivateArea.CheckAccess(((Component)hoveringPiece).transform.position, 0f, true, false)) { return false; } WearNTear component = ((Component)hoveringPiece).GetComponent<WearNTear>(); if ((Object)(object)component == (Object)null || (int)component.m_materialType != 0) { ((Character)__instance).Message((MessageType)1, hoveringPiece.m_name + " só funciona em madeira.", 0, (Sprite)null); return false; } ZNetView component2 = ((Component)hoveringPiece).GetComponent<ZNetView>(); if ((Object)(object)component2 == (Object)null || !component2.IsValid()) { return false; } if (component2.GetZDO().GetBool(HZPolishPlugin.PolishedHash, false)) { ((Character)__instance).Message((MessageType)1, hoveringPiece.m_name + " já está polido.", 0, (Sprite)null); return false; } Inventory inventory = ((Humanoid)__instance).GetInventory(); if (inventory.CountItems("$item_resin", -1, true) < 1) { ((Character)__instance).Message((MessageType)2, "$msg_missingrequirement", 0, (Sprite)null); return false; } component2.ClaimOwnership(); inventory.RemoveItem("$item_resin", 1, -1, true); component.Repair(); component2.GetZDO().Set(HZPolishPlugin.PolishedHash, true); component.m_noRoofWear = false; __instance.FaceLookDirection(); ZSyncAnimation value = Traverse.Create((object)__instance).Field("m_zanim").GetValue<ZSyncAnimation>(); if (value != null) { value.SetTrigger(toolItem.m_shared.m_attack.m_attackAnimation); } hoveringPiece.m_placeEffect.Create(((Component)hoveringPiece).transform.position, ((Component)hoveringPiece).transform.rotation, (Transform)null, 1f, -1); ((Character)__instance).Message((MessageType)1, hoveringPiece.m_name + " polido e reparado!", 0, (Sprite)null); return false; } } [HarmonyPatch(typeof(WearNTear), "Awake")] public static class WearNTear_Awake_PolishPatch { private static void Postfix(WearNTear __instance) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) if ((int)__instance.m_materialType == 0) { ZNetView component = ((Component)__instance).GetComponent<ZNetView>(); if (!((Object)(object)component == (Object)null) && component.IsValid() && component.GetZDO().GetBool(HZPolishPlugin.PolishedHash, false)) { __instance.m_noRoofWear = false; } } } } }