Decompiled source of StackSizeMultiplier v1.0.2

StackSizeMultiplier.dll

Decompiled 6 hours ago
using System;
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.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.2")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("StackSizeMultiplier")]
[assembly: AssemblyTitle("StackSizeMultiplier")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.2.0")]
[module: UnverifiableCode]
namespace StackSizeMultiplier;

[BepInPlugin("blacks7ar.StackSizeMultiplier", "StackSizeMultiplier", "1.0.2")]
public class Plugin : BasePlugin
{
	[HarmonyPatch]
	private static class Patches
	{
		[HarmonyPostfix]
		[HarmonyPatch(typeof(ItemContainer), "GetStackSize", new Type[] { typeof(ItemInfo) })]
		private static void ItemContainer_GetStackSize_Postfix(ItemContainer __instance, ItemInfo itemInfo, ref int __result)
		{
			int capacity = __instance.capacity;
			if (capacity != 5 && capacity != 45 && capacity != 4)
			{
				__result = Helper.ApplyMultiplier(itemInfo, __result);
			}
		}
	}

	private static class Helper
	{
		public static int ApplyMultiplier(ItemInfo itemInfo, int baseStack)
		{
			if ((Object)(object)itemInfo == (Object)null || (Object)(object)itemInfo.storageClass == (Object)null)
			{
				return baseStack;
			}
			string name = ((Object)itemInfo.storageClass).name;
			int result = baseStack;
			if (itemInfo.localizedName.ToLower().Contains("arrow"))
			{
				return baseStack * _ammoMultiplier.Value;
			}
			if (name.Contains("Small"))
			{
				if (itemInfo.stackSize == 1)
				{
					return baseStack * 10 * _smallMultiplier.Value;
				}
				return baseStack * _smallMultiplier.Value;
			}
			if (name.Contains("Medium"))
			{
				return baseStack * _mediumMultiplier.Value;
			}
			return result;
		}
	}

	private const string modGUID = "blacks7ar.StackSizeMultiplier";

	public const string modName = "StackSizeMultiplier";

	public const string modAuthor = "blacks7ar";

	public const string modVersion = "1.0.2";

	private static ConfigEntry<int> _smallMultiplier;

	private static ConfigEntry<int> _mediumMultiplier;

	private static ConfigEntry<int> _ammoMultiplier;

	public override void Load()
	{
		//IL_0076: Unknown result type (might be due to invalid IL or missing references)
		_smallMultiplier = ((BasePlugin)this).Config.Bind<int>("General", "Small Items", 5, "Stack multiplier for small items.");
		_mediumMultiplier = ((BasePlugin)this).Config.Bind<int>("General", "Medium Items", 50, "Stack multiplier for medium items.");
		_ammoMultiplier = ((BasePlugin)this).Config.Bind<int>("General", "Ammos", 5, "Stack multiplier for ammo items (ie. arrows).");
		((BasePlugin)this).Log.LogInfo((object)"Mod loaded!");
		new Harmony("blacks7ar.StackSizeMultiplier").PatchAll();
	}
}