Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of RandomItemQuantity v1.1.0
RandomItemQuantity.dll
Decompiled 3 months agousing System; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using On.RoR2; using RiskOfOptions; using RiskOfOptions.OptionConfigs; using RiskOfOptions.Options; using RoR2; 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("ok")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("ok")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("3c9913da-dd36-4e3d-8731-3f1a7ecb3505")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace RandomItemQuantity; [BepInPlugin("com.beeru.randomitemquantity", "RandomItemQuantity", "1.1.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class RandomItemQuantityMod : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static IsDisabledDelegate <>9__41_0; public static IsDisabledDelegate <>9__41_1; public static IsDisabledDelegate <>9__41_2; public static IsDisabledDelegate <>9__41_3; public static IsDisabledDelegate <>9__41_4; public static IsDisabledDelegate <>9__41_5; public static IsDisabledDelegate <>9__41_6; public static IsDisabledDelegate <>9__41_7; internal bool <Awake>b__41_0() { return !enableMod.Value; } internal bool <Awake>b__41_1() { return !enableMod.Value; } internal bool <Awake>b__41_2() { return !enableMod.Value; } internal bool <Awake>b__41_3() { return !enableMod.Value; } internal bool <Awake>b__41_4() { return !enableMod.Value; } internal bool <Awake>b__41_5() { return !enableMod.Value; } internal bool <Awake>b__41_6() { return !enableMod.Value; } internal bool <Awake>b__41_7() { return !enableMod.Value; } } public const string PluginGUID = "com.beeru.randomitemquantity"; public const string PluginName = "RandomItemQuantity"; public const string PluginVersion = "1.1.0"; public static ManualLogSource logger; private static Random rng = new Random(); public static ConfigEntry<bool> enableMod { get; set; } public static ConfigEntry<float> minQuantity { get; set; } public static ConfigEntry<float> maxQuantity { get; set; } public static ConfigEntry<float> speedItemCap { get; set; } public static ConfigEntry<bool> affectWhiteItems { get; set; } public static ConfigEntry<bool> affectGreenItems { get; set; } public static ConfigEntry<bool> affectRedItems { get; set; } public static ConfigEntry<bool> affectYellowItems { get; set; } public static ConfigEntry<bool> affectLunarItems { get; set; } public void Awake() { //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Expected O, but got Unknown //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Expected O, but got Unknown //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Expected O, but got Unknown //IL_020d: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Expected O, but got Unknown //IL_021d: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Expected O, but got Unknown //IL_022d: Unknown result type (might be due to invalid IL or missing references) //IL_0232: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0248: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_025f: Unknown result type (might be due to invalid IL or missing references) //IL_0289: Expected O, but got Unknown //IL_0284: Unknown result type (might be due to invalid IL or missing references) //IL_028e: Expected O, but got Unknown //IL_0294: Unknown result type (might be due to invalid IL or missing references) //IL_0299: Unknown result type (might be due to invalid IL or missing references) //IL_02a4: Unknown result type (might be due to invalid IL or missing references) //IL_02af: Unknown result type (might be due to invalid IL or missing references) //IL_02bb: Unknown result type (might be due to invalid IL or missing references) //IL_02c6: Unknown result type (might be due to invalid IL or missing references) //IL_0274: Unknown result type (might be due to invalid IL or missing references) //IL_0279: Unknown result type (might be due to invalid IL or missing references) //IL_027f: Expected O, but got Unknown //IL_02f0: Expected O, but got Unknown //IL_02eb: Unknown result type (might be due to invalid IL or missing references) //IL_02f5: Expected O, but got Unknown //IL_02fb: Unknown result type (might be due to invalid IL or missing references) //IL_0300: Unknown result type (might be due to invalid IL or missing references) //IL_030b: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Unknown result type (might be due to invalid IL or missing references) //IL_02e0: Unknown result type (might be due to invalid IL or missing references) //IL_02e6: Expected O, but got Unknown //IL_0335: Expected O, but got Unknown //IL_0330: Unknown result type (might be due to invalid IL or missing references) //IL_033a: Expected O, but got Unknown //IL_0340: Unknown result type (might be due to invalid IL or missing references) //IL_0345: Unknown result type (might be due to invalid IL or missing references) //IL_0350: Unknown result type (might be due to invalid IL or missing references) //IL_0320: Unknown result type (might be due to invalid IL or missing references) //IL_0325: Unknown result type (might be due to invalid IL or missing references) //IL_032b: Expected O, but got Unknown //IL_037a: Expected O, but got Unknown //IL_0375: Unknown result type (might be due to invalid IL or missing references) //IL_037f: Expected O, but got Unknown //IL_0385: Unknown result type (might be due to invalid IL or missing references) //IL_038a: Unknown result type (might be due to invalid IL or missing references) //IL_0395: Unknown result type (might be due to invalid IL or missing references) //IL_0365: Unknown result type (might be due to invalid IL or missing references) //IL_036a: Unknown result type (might be due to invalid IL or missing references) //IL_0370: Expected O, but got Unknown //IL_03bf: Expected O, but got Unknown //IL_03ba: Unknown result type (might be due to invalid IL or missing references) //IL_03c4: Expected O, but got Unknown //IL_03ca: Unknown result type (might be due to invalid IL or missing references) //IL_03cf: Unknown result type (might be due to invalid IL or missing references) //IL_03da: Unknown result type (might be due to invalid IL or missing references) //IL_03aa: Unknown result type (might be due to invalid IL or missing references) //IL_03af: Unknown result type (might be due to invalid IL or missing references) //IL_03b5: Expected O, but got Unknown //IL_0404: Expected O, but got Unknown //IL_03ff: Unknown result type (might be due to invalid IL or missing references) //IL_0409: Expected O, but got Unknown //IL_040f: Unknown result type (might be due to invalid IL or missing references) //IL_0414: Unknown result type (might be due to invalid IL or missing references) //IL_041f: Unknown result type (might be due to invalid IL or missing references) //IL_03ef: Unknown result type (might be due to invalid IL or missing references) //IL_03f4: Unknown result type (might be due to invalid IL or missing references) //IL_03fa: Expected O, but got Unknown //IL_0449: Expected O, but got Unknown //IL_0444: Unknown result type (might be due to invalid IL or missing references) //IL_044e: Expected O, but got Unknown //IL_0454: Unknown result type (might be due to invalid IL or missing references) //IL_0459: Unknown result type (might be due to invalid IL or missing references) //IL_0464: Unknown result type (might be due to invalid IL or missing references) //IL_046f: Unknown result type (might be due to invalid IL or missing references) //IL_047b: Unknown result type (might be due to invalid IL or missing references) //IL_0486: Unknown result type (might be due to invalid IL or missing references) //IL_0434: Unknown result type (might be due to invalid IL or missing references) //IL_0439: Unknown result type (might be due to invalid IL or missing references) //IL_043f: Expected O, but got Unknown //IL_04b0: Expected O, but got Unknown //IL_04ab: Unknown result type (might be due to invalid IL or missing references) //IL_04b5: Expected O, but got Unknown //IL_04eb: Unknown result type (might be due to invalid IL or missing references) //IL_04f5: Expected O, but got Unknown //IL_049b: Unknown result type (might be due to invalid IL or missing references) //IL_04a0: Unknown result type (might be due to invalid IL or missing references) //IL_04a6: Expected O, but got Unknown logger = ((BaseUnityPlugin)this).Logger; enableMod = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Enable Mod", true, (ConfigDescription)null); minQuantity = ((BaseUnityPlugin)this).Config.Bind<float>("Quantity", "Min", 1f, new ConfigDescription("", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1000f), Array.Empty<object>())); maxQuantity = ((BaseUnityPlugin)this).Config.Bind<float>("Quantity", "Max", 50f, new ConfigDescription("", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1000f), Array.Empty<object>())); speedItemCap = ((BaseUnityPlugin)this).Config.Bind<float>("Items", "Speed Item Cap", 10f, new ConfigDescription("", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1000f), Array.Empty<object>())); affectWhiteItems = ((BaseUnityPlugin)this).Config.Bind<bool>("Items", "White", true, (ConfigDescription)null); affectGreenItems = ((BaseUnityPlugin)this).Config.Bind<bool>("Items", "Green", true, (ConfigDescription)null); affectRedItems = ((BaseUnityPlugin)this).Config.Bind<bool>("Items", "Red", true, (ConfigDescription)null); affectYellowItems = ((BaseUnityPlugin)this).Config.Bind<bool>("Items", "Boss", true, (ConfigDescription)null); affectLunarItems = ((BaseUnityPlugin)this).Config.Bind<bool>("Items", "Lunar", false, (ConfigDescription)null); if (minQuantity.Value < 1f) { minQuantity.Value = 1f; } if (maxQuantity.Value > 1000f) { maxQuantity.Value = 1000f; } if (minQuantity.Value > maxQuantity.Value) { minQuantity.Value = maxQuantity.Value; } Sprite val = LoadIcon(); if ((Object)(object)val != (Object)null) { ModSettingsManager.SetModIcon(val); } ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(enableMod, new CheckBoxConfig { description = "Toggle On/Off" })); ConfigEntry<float> obj = minQuantity; SliderConfig val2 = new SliderConfig { min = 1f, max = 1000f, FormatString = "{0:0}", description = "Min Quantity to recieve" }; object obj2 = <>c.<>9__41_0; if (obj2 == null) { IsDisabledDelegate val3 = () => !enableMod.Value; <>c.<>9__41_0 = val3; obj2 = (object)val3; } ((BaseOptionConfig)val2).checkIfDisabled = (IsDisabledDelegate)obj2; ModSettingsManager.AddOption((BaseOption)new SliderOption(obj, val2)); ConfigEntry<float> obj3 = maxQuantity; SliderConfig val4 = new SliderConfig { min = 1f, max = 1000f, FormatString = "{0:0}", description = "Max Quantity to recieve" }; object obj4 = <>c.<>9__41_1; if (obj4 == null) { IsDisabledDelegate val5 = () => !enableMod.Value; <>c.<>9__41_1 = val5; obj4 = (object)val5; } ((BaseOptionConfig)val4).checkIfDisabled = (IsDisabledDelegate)obj4; ModSettingsManager.AddOption((BaseOption)new SliderOption(obj3, val4)); ConfigEntry<bool> obj5 = affectWhiteItems; CheckBoxConfig val6 = new CheckBoxConfig { description = "Enable/Disable Randomness for White Items" }; object obj6 = <>c.<>9__41_2; if (obj6 == null) { IsDisabledDelegate val7 = () => !enableMod.Value; <>c.<>9__41_2 = val7; obj6 = (object)val7; } ((BaseOptionConfig)val6).checkIfDisabled = (IsDisabledDelegate)obj6; ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(obj5, val6)); ConfigEntry<bool> obj7 = affectGreenItems; CheckBoxConfig val8 = new CheckBoxConfig { description = "Enable/Disable Randomness for Green Items" }; object obj8 = <>c.<>9__41_3; if (obj8 == null) { IsDisabledDelegate val9 = () => !enableMod.Value; <>c.<>9__41_3 = val9; obj8 = (object)val9; } ((BaseOptionConfig)val8).checkIfDisabled = (IsDisabledDelegate)obj8; ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(obj7, val8)); ConfigEntry<bool> obj9 = affectRedItems; CheckBoxConfig val10 = new CheckBoxConfig { description = "Enable/Disable Randomness for Red Items" }; object obj10 = <>c.<>9__41_4; if (obj10 == null) { IsDisabledDelegate val11 = () => !enableMod.Value; <>c.<>9__41_4 = val11; obj10 = (object)val11; } ((BaseOptionConfig)val10).checkIfDisabled = (IsDisabledDelegate)obj10; ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(obj9, val10)); ConfigEntry<bool> obj11 = affectYellowItems; CheckBoxConfig val12 = new CheckBoxConfig { description = "Enable/Disable Randomness for Yellow Items" }; object obj12 = <>c.<>9__41_5; if (obj12 == null) { IsDisabledDelegate val13 = () => !enableMod.Value; <>c.<>9__41_5 = val13; obj12 = (object)val13; } ((BaseOptionConfig)val12).checkIfDisabled = (IsDisabledDelegate)obj12; ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(obj11, val12)); ConfigEntry<bool> obj13 = affectLunarItems; CheckBoxConfig val14 = new CheckBoxConfig { description = "Enable/Disable Randomness for Lunar Items" }; object obj14 = <>c.<>9__41_6; if (obj14 == null) { IsDisabledDelegate val15 = () => !enableMod.Value; <>c.<>9__41_6 = val15; obj14 = (object)val15; } ((BaseOptionConfig)val14).checkIfDisabled = (IsDisabledDelegate)obj14; ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(obj13, val14)); ConfigEntry<float> obj15 = speedItemCap; SliderConfig val16 = new SliderConfig { min = 1f, max = 1000f, FormatString = "{0:0}", description = "Modify amount of speed items (dlc items don't work like Mocha or Hunter's Harpoon)" }; object obj16 = <>c.<>9__41_7; if (obj16 == null) { IsDisabledDelegate val17 = () => !enableMod.Value; <>c.<>9__41_7 = val17; obj16 = (object)val17; } ((BaseOptionConfig)val16).checkIfDisabled = (IsDisabledDelegate)obj16; ModSettingsManager.AddOption((BaseOption)new SliderOption(obj15, val16)); minQuantity.SettingChanged += OnQuantityChanged; maxQuantity.SettingChanged += OnQuantityChanged; Inventory.GiveItem_ItemIndex_int += new hook_GiveItem_ItemIndex_int(Inventory_GiveItem_ItemIndex_int); } private void OnQuantityChanged(object sender, EventArgs e) { if (minQuantity.Value > maxQuantity.Value) { if (sender == minQuantity) { maxQuantity.Value = minQuantity.Value; } else { minQuantity.Value = maxQuantity.Value; } } } private Sprite LoadIcon() { //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Expected O, but got Unknown //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) try { string path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "icon.png"); if (!File.Exists(path)) { return null; } byte[] array = File.ReadAllBytes(path); Texture2D val = new Texture2D(2, 2, (TextureFormat)4, false); if (ImageConversion.LoadImage(val, array)) { ((Texture)val).filterMode = (FilterMode)0; ((Texture)val).wrapMode = (TextureWrapMode)1; ((Texture)val).anisoLevel = 0; val.Apply(); return Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f), 100f); } } catch { } return null; } private bool IsSpeedItem(ItemIndex itemIndex) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) if (itemIndex == Items.Hoof.itemIndex) { return true; } if (itemIndex == Items.SprintBonus.itemIndex) { return true; } if (itemIndex == Items.JumpBoost.itemIndex) { return true; } if (itemIndex == Items.SprintOutOfCombat.itemIndex) { return true; } return false; } private bool ShouldAffectItem(ItemTier tier) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected I4, but got Unknown return (int)tier switch { 0 => affectWhiteItems.Value, 1 => affectGreenItems.Value, 2 => affectRedItems.Value, 4 => affectYellowItems.Value, 3 => affectLunarItems.Value, 6 => affectWhiteItems.Value, 7 => affectGreenItems.Value, 8 => affectRedItems.Value, 9 => affectYellowItems.Value, _ => false, }; } private void Inventory_GiveItem_ItemIndex_int(orig_GiveItem_ItemIndex_int orig, Inventory self, ItemIndex itemIndex, int count) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Invalid comparison between Unknown and I4 //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) PlayerCharacterMasterController component = ((Component)self).GetComponent<PlayerCharacterMasterController>(); ItemDef itemDef = ItemCatalog.GetItemDef(itemIndex); if (enableMod.Value && (Object)(object)component != (Object)null && (Object)(object)itemDef != (Object)null && (int)itemDef.tier != 5 && !itemDef.hidden && ShouldAffectItem(itemDef.tier)) { int minValue = (int)minQuantity.Value; int num = (int)maxQuantity.Value; if (IsSpeedItem(itemIndex)) { num = Math.Min(num, (int)speedItemCap.Value); } int num2 = rng.Next(minValue, num + 1); orig.Invoke(self, itemIndex, num2); } else { orig.Invoke(self, itemIndex, count); } } }