Decompiled source of DurabilityMultiplier v1.0.3

DurabilityMultiplier.dll

Decompiled 2 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Core.Logging.Interpolation;
using BepInEx.Logging;
using BepInEx.Unity.IL2CPP;
using HarmonyLib;
using SandSailorStudio.Inventory;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("blacks7ar")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.3")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("DurabilityMultiplier")]
[assembly: AssemblyTitle("DurabilityMultiplier")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.3.0")]
[module: UnverifiableCode]
namespace DurabilityMultiplier;

[BepInPlugin("blacks7ar.DurabilityMultiplier", "DurabilityMultiplier", "1.0.3")]
public class Plugin : BasePlugin
{
	[HarmonyPatch]
	private static class Patches
	{
		private static readonly HashSet<string> ProcessedItems = new HashSet<string>();

		[HarmonyPrefix]
		[HarmonyPatch(typeof(ItemInfo), "Configure")]
		private static void Configure_Prefix(ref ItemInfo __instance)
		{
			//IL_01d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01df: Expected O, but got Unknown
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Expected O, but got Unknown
			//IL_017c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0183: Expected O, but got Unknown
			bool flag = default(bool);
			try
			{
				if ((Object)(object)__instance == (Object)null || __instance._durabAttrData == null)
				{
					return;
				}
				ManualLogSource dMLogger = DMLogger;
				BepInExDebugLogInterpolatedStringHandler val = new BepInExDebugLogInterpolatedStringHandler(11, 2, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(__instance.localizedName);
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" category: ");
					((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(__instance.category.localizedName);
				}
				dMLogger.LogDebug(val);
				string name = __instance.Name;
				if (ProcessedItems.Contains(name))
				{
					return;
				}
				ItemCategoryInfo category = __instance.category;
				if (!string.IsNullOrEmpty((category != null) ? category.Name : null))
				{
					float num = 1f;
					if (IsAmmos(__instance))
					{
						num = _ammosDurabilityMultiplier.Value;
					}
					if (IsArmors(__instance))
					{
						num = _armorsDurabilityMultiplier.Value;
					}
					if (IsFoods(__instance))
					{
						num = _foodsDurabilityMultiplier.Value;
					}
					if (IsJunks(__instance))
					{
						num = _junksDurabilityMultiplier.Value;
					}
					if (IsMaterials(__instance))
					{
						num = _materialsDurabilityMultiplier.Value;
					}
					if (IsMisc(__instance))
					{
						num = _miscDurabilityMultiplier.Value;
					}
					if (IsSeeds(__instance))
					{
						num = _seedsDurabilityMultiplier.Value;
					}
					if (IsWeaponsAndTools(__instance))
					{
						num = _weaponsToolsDurabilityMultiplier.Value;
					}
					if (IsShields(__instance))
					{
						num = _shieldsDurabilityMultiplier.Value;
					}
					float value = __instance._durabAttrData.value;
					float num2 = value * num;
					__instance._durabAttrData.value = num2;
					ManualLogSource dMLogger2 = DMLogger;
					val = new BepInExDebugLogInterpolatedStringHandler(16, 3, ref flag);
					if (flag)
					{
						((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(name);
						((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" durability ");
						((BepInExLogInterpolatedStringHandler)val).AppendFormatted<float>(value);
						((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" -> ");
						((BepInExLogInterpolatedStringHandler)val).AppendFormatted<float>(num2);
					}
					dMLogger2.LogDebug(val);
					ProcessedItems.Add(name);
				}
			}
			catch (Exception ex)
			{
				ManualLogSource dMLogger3 = DMLogger;
				BepInExErrorLogInterpolatedStringHandler val2 = new BepInExErrorLogInterpolatedStringHandler(58, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val2).AppendLiteral("An error occured while configuring Durability Multiplier: ");
					((BepInExLogInterpolatedStringHandler)val2).AppendFormatted<Exception>(ex);
				}
				dMLogger3.LogError(val2);
			}
		}
	}

	private const string modGUID = "blacks7ar.DurabilityMultiplier";

	public const string modName = "DurabilityMultiplier";

	public const string modAuthor = "blacks7ar";

	public const string modVersion = "1.0.3";

	private static ManualLogSource DMLogger;

	private static ConfigEntry<float> _ammosDurabilityMultiplier;

	private static ConfigEntry<float> _armorsDurabilityMultiplier;

	private static ConfigEntry<float> _foodsDurabilityMultiplier;

	private static ConfigEntry<float> _junksDurabilityMultiplier;

	private static ConfigEntry<float> _materialsDurabilityMultiplier;

	private static ConfigEntry<float> _miscDurabilityMultiplier;

	private static ConfigEntry<float> _seedsDurabilityMultiplier;

	private static ConfigEntry<float> _weaponsToolsDurabilityMultiplier;

	private static ConfigEntry<float> _shieldsDurabilityMultiplier;

	public override void Load()
	{
		//IL_0163: Unknown result type (might be due to invalid IL or missing references)
		DMLogger = ((BasePlugin)this).Log;
		_ammosDurabilityMultiplier = ((BasePlugin)this).Config.Bind<float>("General", "Ammos Durability Multiplier", 3f, "Multiplies ammos max durability. (i.e Arrows or Baits");
		_armorsDurabilityMultiplier = ((BasePlugin)this).Config.Bind<float>("General", "Armors Durability Multiplier", 2f, "Multiplies armors max durability");
		_foodsDurabilityMultiplier = ((BasePlugin)this).Config.Bind<float>("General", "Foods Durability Multiplier", 2f, "Multiplies foods max durability.");
		_junksDurabilityMultiplier = ((BasePlugin)this).Config.Bind<float>("General", "Junk Item Durability Multiplier", 2f, "Multiplies junk items max durability. (i.e spoiled food)");
		_materialsDurabilityMultiplier = ((BasePlugin)this).Config.Bind<float>("General", "Materials Durability Multiplier", 2f, "Multiplies materials max durability. (i.e leathers, sticks etc.)");
		_miscDurabilityMultiplier = ((BasePlugin)this).Config.Bind<float>("General", "Misc Items Durability Multiplier", 2f, "Multiplies misc items max durability. (i.e bone, crawler sack etc.)");
		_seedsDurabilityMultiplier = ((BasePlugin)this).Config.Bind<float>("General", "Seeds Durability Multiplier", 2f, "Multiplies seeds max durability");
		_weaponsToolsDurabilityMultiplier = ((BasePlugin)this).Config.Bind<float>("General", "Tools And Weapon Durability Multiplier", 2f, "Multiplies tools and weapons max durability");
		_shieldsDurabilityMultiplier = ((BasePlugin)this).Config.Bind<float>("General", "Shields Durability Multiplier", 2f, "Multiplies shields max durability");
		DMLogger.LogInfo((object)"Mod loaded!");
		new Harmony("blacks7ar.DurabilityMultiplier").PatchAll();
	}

	private static bool IsAmmos(ItemInfo item)
	{
		string localizedName = item.category.localizedName;
		return localizedName == "Arrows" || localizedName == "Bait";
	}

	private static bool IsArmors(ItemInfo item)
	{
		string localizedName = item.category.localizedName;
		int num;
		switch (localizedName)
		{
		default:
			num = ((!(localizedName == "Shoulders")) ? 1 : 0);
			break;
		case "Boots":
		case "Cape":
		case "Chest":
		case "Gloves":
		case "Helmets":
		case "Pants":
			num = 0;
			break;
		}
		return num == 0;
	}

	private static bool IsFoods(ItemInfo item)
	{
		return item.category.localizedName == "Food";
	}

	private static bool IsJunks(ItemInfo item)
	{
		return item.category.localizedName == "Junk";
	}

	private static bool IsMaterials(ItemInfo item)
	{
		string localizedName = item.category.localizedName;
		return localizedName == "Iron" || localizedName == "Materials" || localizedName == "Wood";
	}

	private static bool IsMisc(ItemInfo item)
	{
		return item.category.localizedName == "Misc";
	}

	private static bool IsSeeds(ItemInfo item)
	{
		return item.category.localizedName == "Seeds";
	}

	private static bool IsWeaponsAndTools(ItemInfo item)
	{
		string localizedName = item.category.localizedName;
		int num;
		switch (localizedName)
		{
		default:
			num = ((!(localizedName == "Smilk Bags")) ? 1 : 0);
			break;
		case "WaterSkins":
		case "Smilk Flasks":
		case "Axes":
		case "Draw Knives":
		case "Fishing Rods":
		case "Gadgets":
		case "Hammers":
		case "Hoes":
		case "Knives":
		case "Pickaxes":
		case "Rakes":
		case "Shovels":
		case "Special Tools":
		case "Road Makers":
		case "Torches":
		case "Bows":
		case "OneHanded":
		case "TwoHanded":
			num = 0;
			break;
		}
		return num == 0;
	}

	private static bool IsShields(ItemInfo item)
	{
		return item.category.localizedName == "Shields";
	}
}