Decompiled source of Stamins Tweaker v1.0.3

BepInEx/plugins/StaminaTweaks.dll

Decompiled a month ago
using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
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("StaminaTweaksFull")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("StaminaTweaksFull")]
[assembly: AssemblyCopyright("Copyright ©  2022")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("17ab3ab7-bbc8-424d-b565-d7d5bead066c")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace StaminaTweaks;

[BepInPlugin("StaminaTweaks", "Stamina Tweaks", "1.0.0.3")]
[BepInProcess("valheim.exe")]
public class StaminaTweaks : BaseUnityPlugin
{
	private const string pluginGUID = "StaminaTweaks";

	private const string pluginName = "Stamina Tweaks";

	private const string pluginVersion = "1.0.0.3";

	public static readonly Harmony harmony = new Harmony("StaminaTweaks");

	private void Awake()
	{
		harmony.PatchAll();
	}

	private void OnDestroy()
	{
	}
}
[HarmonyPatch(typeof(Attack), "GetAttackStamina")]
public static class AxePickaxeTweaks
{
	private static void Postfix(ref Attack __instance, ref float __result)
	{
		//IL_0035: Unknown result type (might be due to invalid IL or missing references)
		if (__instance != null && (Object)(object)__instance.m_character != (Object)null && __instance.m_character.GetRightItem() != null && !LootSpawner.IsMonsterInRange(((Component)Player.m_localPlayer).transform.position, 20f))
		{
			switch (__instance.m_character.GetRightItem().m_shared.m_name)
			{
			case "$item_axe_stone":
			case "$item_axe_bronze":
			case "$item_axe_flint":
			case "$item_axe_iron":
			case "$item_axe_blackmetal":
			case "$item_axe_jotunbane":
			case "$item_pickaxe_stone":
			case "$item_pickaxe_iron":
			case "$item_pickaxe_bronze":
			case "$item_pickaxe_antler":
			case "$item_pickaxe_blackmetal":
			case "$item_battleaxe":
			case "$item_battleaxe_crystal":
				__result = 0f;
				break;
			}
		}
	}
}
[HarmonyPatch(typeof(Player), "UseStamina")]
public static class PlayerAndToolsTweaks
{
	private static void Prefix(ref Player __instance, ref float v, ref float ___m_runStaminaDrain, ref float ___m_jumpStaminaUsage, ref float ___m_sneakStaminaDrain, ref float ___m_dodgeStaminaUsage, ref float ___m_encumberedStaminaDrain, ref float ___m_swimStaminaDrainMinSkill, ref float ___m_swimStaminaDrainMaxSkill)
	{
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
		if (!((Object)(object)__instance != (Object)null))
		{
			return;
		}
		if (!LootSpawner.IsMonsterInRange(((Component)Player.m_localPlayer).transform.position, 20f))
		{
			___m_runStaminaDrain = 0f;
			___m_jumpStaminaUsage = 0f;
			___m_sneakStaminaDrain = 0f;
			___m_dodgeStaminaUsage = 0f;
			___m_encumberedStaminaDrain = 0f;
			___m_swimStaminaDrainMinSkill = 0f;
			___m_swimStaminaDrainMaxSkill = 0f;
		}
		else
		{
			___m_runStaminaDrain = 10f;
			___m_jumpStaminaUsage = 10f;
			___m_sneakStaminaDrain = 5f;
			___m_dodgeStaminaUsage = 10f;
			___m_encumberedStaminaDrain = 10f;
			___m_swimStaminaDrainMinSkill = 5f;
			___m_swimStaminaDrainMaxSkill = 2f;
		}
		string name = new StackTrace().GetFrame(2).GetMethod().Name;
		if ((((Humanoid)__instance).GetRightItem() != null && !LootSpawner.IsMonsterInRange(((Component)Player.m_localPlayer).transform.position, 20f) && name.Contains("UpdatePlacement")) || name.Contains("Repair") || name.Contains("RemovePiece"))
		{
			switch (((Humanoid)__instance).GetRightItem().m_shared.m_name)
			{
			case "$item_hammer":
			case "$item_hoe":
			case "$item_cultivator":
				v = 0f;
				break;
			}
		}
	}
}
[HarmonyPatch(typeof(Character), "IsSwimming")]
public static class GetPlayerIsSwimming
{
	public static bool playerIsSwimming;

	private static void Postfix(ref Character __instance, ref bool __result)
	{
		if ((Object)(object)__instance != (Object)null && __instance.IsPlayer())
		{
			playerIsSwimming = __result;
		}
	}
}
[HarmonyPatch(typeof(Player), "UpdateStats", new Type[] { typeof(float) })]
public static class RegenerationTweaks
{
	private static void Postfix(ref Player __instance)
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_020b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0258: Unknown result type (might be due to invalid IL or missing references)
		if (!((Object)(object)__instance != (Object)null))
		{
			return;
		}
		if (((Humanoid)__instance).GetRightItem() != null && !LootSpawner.IsMonsterInRange(((Component)Player.m_localPlayer).transform.position, 20f) && ((Character)__instance).InAttack() && !GetPlayerIsSwimming.playerIsSwimming && !((Character)__instance).IsEncumbered())
		{
			switch (((Humanoid)__instance).GetRightItem().m_shared.m_name)
			{
			case "$item_axe_stone":
			case "$item_axe_bronze":
			case "$item_axe_flint":
			case "$item_axe_iron":
			case "$item_axe_blackmetal":
			case "$item_axe_jotunbane":
			case "$item_pickaxe_stone":
			case "$item_pickaxe_iron":
			case "$item_pickaxe_bronze":
			case "$item_pickaxe_antler":
			case "$item_pickaxe_blackmetal":
				((Character)__instance).AddStamina(0.05f);
				break;
			}
		}
		if (GetPlayerIsSwimming.playerIsSwimming && !((Character)__instance).InAttack() && !LootSpawner.IsMonsterInRange(((Component)Player.m_localPlayer).transform.position, 20f))
		{
			((Character)__instance).AddStamina(0.05f);
		}
		if (((Character)__instance).IsEncumbered() && !((Character)__instance).InAttack() && !GetPlayerIsSwimming.playerIsSwimming && !LootSpawner.IsMonsterInRange(((Component)Player.m_localPlayer).transform.position, 20f))
		{
			((Character)__instance).AddStamina(0.05f);
		}
	}
}