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);
}
}