Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of Squeakys Item Multiplier v1.0.0
SqueakyItemMultiplier.dll
Decompiled 18 hours agousing System; using System.CodeDom.Compiler; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using On.RoR2; using RoR2; using UnityEngine; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("SqueakyItemMultiplier")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+096fb0f7649ca644625506d52655ecc01b14a784")] [assembly: AssemblyProduct("SqueakyItemMultiplier")] [assembly: AssemblyTitle("SqueakyItemMultiplier")] [assembly: AssemblyVersion("1.0.0.0")] namespace SqueakyItemMultiplier { [BepInPlugin("com.squeakysquared.squeakyitemmultiplier", "SqueakyItemMultiplier", "1.0.0")] public class SqueakyItemMultiplierPlugin : BaseUnityPlugin { private ConfigEntry<int> itemMultiplier; private ConfigEntry<bool> enableDebugLogging; private ConfigEntry<bool> multiplyLunarItems; private ConfigEntry<bool> multiplyVoidItems; public void Awake() { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Expected O, but got Unknown ((BaseUnityPlugin)this).Logger.LogWarning((object)"=== SQUEAKY ITEM MULTIPLIER AWAKE START ==="); itemMultiplier = ((BaseUnityPlugin)this).Config.Bind<int>("Settings", "ItemMultiplier", 5, new ConfigDescription("Multiplier for items (e.g., 5 means 1 item becomes 5)", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 100), Array.Empty<object>())); enableDebugLogging = ((BaseUnityPlugin)this).Config.Bind<bool>("Debug", "EnableDebugLogging", true, "Enable detailed logging"); multiplyLunarItems = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "MultiplyLunarItems", true, "Multiply lunar (blue) items"); multiplyVoidItems = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "MultiplyVoidItems", true, "Multiply void (purple) items"); ((BaseUnityPlugin)this).Logger.LogWarning((object)$"=== CONFIG LOADED: Multiplier={itemMultiplier.Value}, Debug={enableDebugLogging.Value} ==="); ((BaseUnityPlugin)this).Logger.LogInfo((object)string.Format("{0} v{1} loaded! Multiplier: {2}x", "SqueakyItemMultiplier", "1.0.0", itemMultiplier.Value)); GenericPickupController.AttemptGrant += new hook_AttemptGrant(OnPickupAttemptGrant); ((BaseUnityPlugin)this).Logger.LogWarning((object)"=== HOOK REGISTERED ==="); } private void OnPickupAttemptGrant(orig_AttemptGrant orig, GenericPickupController self, CharacterBody body) { //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: 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_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) ((BaseUnityPlugin)this).Logger.LogWarning((object)"=== PICKUP ATTEMPT GRANT CALLED ==="); if ((Object)(object)body == (Object)null || (Object)(object)self == (Object)null || (Object)(object)body.inventory == (Object)null || itemMultiplier.Value <= 1) { orig.Invoke(self, body); return; } if (!NetworkServer.active) { ((BaseUnityPlugin)this).Logger.LogInfo((object)"Not server, skipping"); return; } Inventory inventory = body.inventory; Dictionary<ItemIndex, int> dictionary = new Dictionary<ItemIndex, int>(); GenericStaticEnumerable<ItemIndex, AllItemsEnumerator> allItems = ItemCatalog.allItems; AllItemsEnumerator enumerator = allItems.GetEnumerator(); try { while (((AllItemsEnumerator)(ref enumerator)).MoveNext()) { ItemIndex current = ((AllItemsEnumerator)(ref enumerator)).Current; int itemCountEffective = inventory.GetItemCountEffective(current); if (itemCountEffective > 0) { dictionary[current] = itemCountEffective; } } } finally { ((IDisposable)(AllItemsEnumerator)(ref enumerator)).Dispose(); } orig.Invoke(self, body); allItems = ItemCatalog.allItems; AllItemsEnumerator enumerator2 = allItems.GetEnumerator(); try { while (((AllItemsEnumerator)(ref enumerator2)).MoveNext()) { ItemIndex current2 = ((AllItemsEnumerator)(ref enumerator2)).Current; int itemCountEffective2 = inventory.GetItemCountEffective(current2); int num = (dictionary.ContainsKey(current2) ? dictionary[current2] : 0); int num2 = itemCountEffective2 - num; if (num2 <= 0) { continue; } ItemDef itemDef = ItemCatalog.GetItemDef(current2); ((BaseUnityPlugin)this).Logger.LogWarning((object)string.Format("=== PICKUP DETECTED: {0}, added {1} ===", ((itemDef != null) ? ((Object)itemDef).name : null) ?? "unknown", num2)); if (ShouldMultiplyItem(itemDef)) { int num3 = num2 * (itemMultiplier.Value - 1); ((BaseUnityPlugin)this).Logger.LogWarning((object)$"=== MULTIPLYING: Giving {num3} extra copies ==="); inventory.GiveItemPermanent(itemDef, num3); if (enableDebugLogging.Value) { ((BaseUnityPlugin)this).Logger.LogInfo((object)$"Multiplied {itemDef.nameToken} x{itemMultiplier.Value}"); } } else { ((BaseUnityPlugin)this).Logger.LogInfo((object)("Item " + ((itemDef != null) ? ((Object)itemDef).name : null) + " filtered out")); } } } finally { ((IDisposable)(AllItemsEnumerator)(ref enumerator2)).Dispose(); } } private bool ShouldMultiplyItem(ItemDef itemDef) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Invalid comparison between Unknown and I4 //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Invalid comparison between Unknown and I4 //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Invalid comparison between Unknown and I4 //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Invalid comparison between Unknown and I4 //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Invalid comparison between Unknown and I4 //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Invalid comparison between Unknown and I4 if ((Object)(object)itemDef == (Object)null || (int)itemDef.tier == 5) { return false; } if ((int)itemDef.tier == 3 && !multiplyLunarItems.Value) { return false; } if (((int)itemDef.tier == 6 || (int)itemDef.tier == 7 || (int)itemDef.tier == 8 || (int)itemDef.tier == 9) && !multiplyVoidItems.Value) { return false; } return !itemDef.ContainsTag((ItemTag)10) && !itemDef.ContainsTag((ItemTag)9); } public void OnDestroy() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown GenericPickupController.AttemptGrant -= new hook_AttemptGrant(OnPickupAttemptGrant); ((BaseUnityPlugin)this).Logger.LogInfo((object)"SqueakyItemMultiplier unloaded."); } } internal static class PluginInfo { public const string PLUGIN_GUID = "com.squeakysquared.squeakyitemmultiplier"; public const string PLUGIN_NAME = "SqueakyItemMultiplier"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace SqueakyItemMultiplier.Properties { [GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")] [DebuggerNonUserCode] [CompilerGenerated] internal class Resources { private static ResourceManager resourceMan; private static CultureInfo resourceCulture; [EditorBrowsable(EditorBrowsableState.Advanced)] internal static ResourceManager ResourceManager { get { if (resourceMan == null) { ResourceManager resourceManager = new ResourceManager("SqueakyItemMultiplier.Properties.Resources", typeof(Resources).Assembly); resourceMan = resourceManager; } return resourceMan; } } [EditorBrowsable(EditorBrowsableState.Advanced)] internal static CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } internal Resources() { } } }