Decompiled source of BetterAntlerPickaxe v1.0.1

BetterAntlerPickaxe.dll

Decompiled 2 months ago
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.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("FastAndFairTerraforming")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("FastAndFairTerraforming")]
[assembly: AssemblyCopyright("Copyright ©  2024")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("50f9b3a1-625e-498f-99f4-48215dec5f4d")]
[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 FastAndFairTerraforming;

[BepInPlugin("vaffle.BetterAntlerPickaxe", "BetterAntlerPickaxe", "1.0.0")]
public class Class1 : BaseUnityPlugin
{
	[HarmonyPatch(typeof(CharacterAnimEvent), "CustomFixedUpdate")]
	private static class CharacterAnimEvent_Awake_Patch
	{
		private static void Prefix(CharacterAnimEvent __instance)
		{
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			object value = Traverse.Create((object)__instance).Field("m_character").GetValue();
			Character val = (Character)((value is Character) ? value : null);
			if ((Object)(object)val != (Object)(object)Player.m_localPlayer)
			{
				return;
			}
			ItemData currentWeapon = ((Humanoid)((val is Humanoid) ? val : null)).GetCurrentWeapon();
			object obj;
			if (currentWeapon == null)
			{
				obj = null;
			}
			else
			{
				GameObject dropPrefab = currentWeapon.m_dropPrefab;
				obj = ((dropPrefab != null) ? ((Object)dropPrefab).name : null);
			}
			if ((string?)obj == "PickaxeAntler")
			{
				object value2 = Traverse.Create((object)__instance).Field("m_animator").GetValue();
				Animator val2 = (Animator)((value2 is Animator) ? value2 : null);
				AnimatorStateInfo currentAnimatorStateInfo = val2.GetCurrentAnimatorStateInfo(0);
				if (((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("swing_pickaxe"))
				{
					val2.speed = 2f;
				}
			}
		}
	}

	[HarmonyPatch(typeof(SEMan), "ModifyAttack")]
	private class Damage
	{
		private static void Prefix(SEMan __instance, ref HitData hitData)
		{
			object value = Traverse.Create((object)__instance).Field("m_character").GetValue();
			Character val = (Character)((value is Character) ? value : null);
			if (!((Object)(object)val != (Object)(object)Player.m_localPlayer))
			{
				ItemData currentWeapon = ((Humanoid)((val is Humanoid) ? val : null)).GetCurrentWeapon();
				object obj;
				if (currentWeapon == null)
				{
					obj = null;
				}
				else
				{
					GameObject dropPrefab = currentWeapon.m_dropPrefab;
					obj = ((dropPrefab != null) ? ((Object)dropPrefab).name : null);
				}
				if ((string?)obj == "PickaxeAntler")
				{
					HitData val2 = hitData;
					val2.m_damage.m_pickaxe = val2.m_damage.m_pickaxe / 2f;
					hitData = val2;
				}
			}
		}
	}

	[HarmonyPatch(typeof(Attack), "GetAttackStamina")]
	private class Stamina
	{
		private static void Prefix(Attack __instance)
		{
			object value = Traverse.Create((object)__instance).Field("m_character").GetValue();
			Character val = (Character)((value is Character) ? value : null);
			if (!((Object)(object)val != (Object)(object)Player.m_localPlayer))
			{
				ItemData currentWeapon = ((Humanoid)((val is Humanoid) ? val : null)).GetCurrentWeapon();
				object obj;
				if (currentWeapon == null)
				{
					obj = null;
				}
				else
				{
					GameObject dropPrefab = currentWeapon.m_dropPrefab;
					obj = ((dropPrefab != null) ? ((Object)dropPrefab).name : null);
				}
				if ((string?)obj == "PickaxeAntler")
				{
					__instance.m_attackStamina /= 2f;
				}
			}
		}
	}

	private void Awake()
	{
		Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), (string)null);
	}
}