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