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 HarmonyLib; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("HammerFall")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("HP")] [assembly: AssemblyProduct("HammerFall")] [assembly: AssemblyCopyright("Copyright © HP 2026")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("ec7a6b85-18f8-4405-9aeb-d1d727e46f8f")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace HammerFall; [BepInPlugin("youdied.hammerfall", "HammerFall", "1.1.1")] public class HammerFallPlugin : BaseUnityPlugin { [HarmonyPatch(typeof(Character), "UpdateGroundContact")] private class FallDamagePatch { private static readonly FieldRef MaxAirAltitude = AccessTools.FieldRefAccess("m_maxAirAltitude"); private static void Postfix(Character __instance) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown //IL_0040: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)__instance != (Object)(object)Player.m_localPlayer)) { Player player = (Player)__instance; if (IsHoldingHammer(player) && IsNearWorkbench(player)) { MaxAirAltitude.Invoke(__instance) = ((Component)__instance).transform.position.y; } } } } public const string ModId = "youdied.hammerfall"; public const string ModName = "HammerFall"; public const string ModVersion = "1.1.1"; private void Awake() { Harmony.CreateAndPatchAll(typeof(FallDamagePatch), (string)null); ((BaseUnityPlugin)this).Logger.LogInfo((object)"HammerFall v1.1.1 loaded."); } private static bool IsHoldingHammer(Player player) { ItemData value = Traverse.Create((object)player).Field("m_rightItem").GetValue(); if (value == null) { return false; } int result; if (!(value.m_shared.m_name == "$item_hammer")) { GameObject dropPrefab = value.m_dropPrefab; result = ((((dropPrefab != null) ? ((Object)dropPrefab).name : null) == "Hammer") ? 1 : 0); } else { result = 1; } return (byte)result != 0; } private static bool IsNearWorkbench(Player player) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) Vector3 position = ((Component)player).transform.position; List value = Traverse.Create(typeof(CraftingStation)).Field("m_allStations").GetValue>(); if (value == null) { return false; } foreach (CraftingStation item in value) { if (!((Object)(object)item == (Object)null) && item.m_name == "$piece_workbench") { Vector3 val = ((Component)item).transform.position - position; if (((Vector3)(ref val)).sqrMagnitude <= 10000f) { return true; } } } return false; } }