Decompiled source of Digitalroots Slope Combat Assistance v2.0.27

plugins/Digitalroot.Valheim.SlopeCombatAssistance.dll

Decompiled a month ago
using System;
using System.Diagnostics;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using HarmonyLib;
using JetBrains.Annotations;
using Jotunn.Utils;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyCompany("Digitalroot Technologies")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCopyright("Copyright © Digitalroot Technologies 2021 - 2024")]
[assembly: AssemblyDescription("Slope Combat Assistance for Valheim")]
[assembly: AssemblyFileVersion("2.0.27.0")]
[assembly: AssemblyInformationalVersion("2.0.27+38e9b25adcaa74140117ac22018f4106921e292b")]
[assembly: AssemblyProduct("Digitalroot Valheim Slope Combat Assistance")]
[assembly: AssemblyTitle("Digitalroot.Valheim.SlopeCombatAssistance")]
[assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/Digitalroot-Valheim/Digitalroot.Valheim.SlopeCombatFix")]
[assembly: NeutralResourcesLanguage("en-US")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("2.0.27.0")]
[module: UnverifiableCode]
namespace Digitalroot.Valheim.SlopeCombatAssistance;

[BepInPlugin("digitalroot.mods.slopecombatassistance", "Digitalroot's Slope Combat Assistance", "2.0.27")]
[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
[BepInDependency("com.jotunn.jotunn", "2.10.0")]
[BepInIncompatibility("hitbox.fix")]
[BepInIncompatibility("digitalroot.mods.slopecombatfix")]
public class Main : BaseUnityPlugin
{
	public static Main Instance;

	private Harmony _harmony;

	[UsedImplicitly]
	public static ConfigEntry<int> NexusId;

	public readonly ConfigEntry<float> Offset;

	public readonly ConfigEntry<float> Height;

	public const string Version = "2.0.27";

	public const string Name = "Digitalroot's Slope Combat Assistance";

	public const string Guid = "digitalroot.mods.slopecombatassistance";

	public const string Namespace = "Digitalroot.Valheim.SlopeCombatAssistance";

	public Main()
	{
		//IL_002f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0034: Unknown result type (might be due to invalid IL or missing references)
		//IL_0040: Unknown result type (might be due to invalid IL or missing references)
		//IL_004d: Expected O, but got Unknown
		//IL_004d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0057: Expected O, but got Unknown
		//IL_008e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0093: Unknown result type (might be due to invalid IL or missing references)
		//IL_009a: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b3: Expected O, but got Unknown
		//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bd: Expected O, but got Unknown
		//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0100: Unknown result type (might be due to invalid IL or missing references)
		//IL_010c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0119: Expected O, but got Unknown
		//IL_0119: Unknown result type (might be due to invalid IL or missing references)
		//IL_0123: Expected O, but got Unknown
		Instance = this;
		NexusId = ((BaseUnityPlugin)this).Config.Bind<int>("General", "NexusID", 1569, new ConfigDescription("Nexus mod ID for updates", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
		{
			Browsable = false,
			ReadOnly = true
		} }));
		Offset = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Offset", 0f, new ConfigDescription("Modify offset", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), new object[1] { (object)new ConfigurationManagerAttributes
		{
			IsAdminOnly = true,
			Browsable = true,
			Order = 1
		} }));
		Height = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Height", 1f, new ConfigDescription("Modify height (0.6 default, 1 mod default)", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 5f), new object[1] { (object)new ConfigurationManagerAttributes
		{
			IsAdminOnly = true,
			Browsable = true,
			Order = 0
		} }));
	}

	private void Awake()
	{
		try
		{
			_harmony = Harmony.CreateAndPatchAll(typeof(Main).Assembly, "digitalroot.mods.slopecombatassistance");
		}
		catch (Exception ex)
		{
			((BaseUnityPlugin)this).Logger.LogError((object)ex);
		}
	}

	private void OnDestroy()
	{
		try
		{
			Harmony harmony = _harmony;
			if (harmony != null)
			{
				harmony.UnpatchSelf();
			}
		}
		catch (Exception ex)
		{
			((BaseUnityPlugin)this).Logger.LogError((object)ex);
		}
	}
}
public static class Patch
{
	[HarmonyPatch(typeof(Attack), "DoMeleeAttack")]
	public class PatchAttackDoMeleeAttack
	{
		private static void Prefix(ref Attack __instance, ref float ___m_maxYAngle, ref float ___m_attackOffset, ref float ___m_attackHeight)
		{
			Humanoid character = __instance.m_character;
			Player val = (Player)(object)((character is Player) ? character : null);
			if (val != null && !((Object)(object)val != (Object)(object)Player.m_localPlayer))
			{
				___m_maxYAngle = 180f;
				___m_attackOffset = Main.Instance.Offset.Value;
				___m_attackHeight = Main.Instance.Height.Value;
			}
		}
	}
}