Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of FruityCradles v1.0.6
FruityCradles.dll
Decompiled 2 weeks agousing 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 On.RoR2; using RoR2; using RoR2.Items; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Events; 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 = "")] [assembly: AssemblyCompany("FruityCradles")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("FruityCradles")] [assembly: AssemblyTitle("FruityCradles")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace FruityCradles; internal class FruityCradleBehavior : OptionChestBehavior { internal PurchaseInteraction purchaseInteraction; public GameObject voidExecuteEffect => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/CritGlassesVoid/CritGlassesVoidExecuteEffect.prefab").WaitForCompletion(); private void Start() { //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Expected O, but got Unknown if (NetworkServer.active) { if ((Object)(object)purchaseInteraction == (Object)null) { purchaseInteraction = ((Component)this).GetComponent<PurchaseInteraction>(); } if ((Object)(object)purchaseInteraction != (Object)null) { ((UnityEvent<Interactor>)(object)purchaseInteraction.onPurchase).AddListener((UnityAction<Interactor>)SoTrue); } base.rng = new Xoroshiro128Plus(Run.instance.treasureRng.nextUlong); ((OptionChestBehavior)this).Roll(); } } private void VoidCancel(TeleporterInteraction obj) { //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Expected O, but got Unknown TeleporterInteraction.onTeleporterBeginChargingGlobal -= VoidCancel; if (Object.op_Implicit((Object)(object)((Component)this).gameObject)) { if ((Object)(object)voidExecuteEffect != (Object)null) { EffectManager.SpawnEffect(voidExecuteEffect, new EffectData { origin = ((Component)this).transform.position, scale = 3f }, true); } Object.Destroy((Object)(object)((Component)this).gameObject); } } public void SoTrue(Interactor interactor) { ((OptionChestBehavior)this).Open(); } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.RiskOfBrainrot.FruityCradles", "FruityCradles", "1.0.5")] public class FruityCradlesPlugin : BaseUnityPlugin { public const string guid = "com.RiskOfBrainrot.FruityCradles"; public const string teamName = "RiskOfBrainrot"; public const string modName = "FruityCradles"; public const string version = "1.0.5"; private GameObject voidPotentialPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/OptionPickup/OptionPickup.prefab").WaitForCompletion(); private GameObject voidCradlePrefab; public static float cradleHealthCost = 0.2f; public static PluginInfo PInfo { get; private set; } internal static ConfigFile CustomConfigFile { get; set; } public static ConfigEntry<bool> DoCradleSoulCost { get; set; } public static ConfigEntry<float> CradleSoulPayCost { get; set; } public static ConfigEntry<bool> DoCradlePotential { get; set; } private void Awake() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown CustomConfigFile = new ConfigFile(Paths.ConfigPath + "\\FruityCradles.cfg", true); DoCradleSoulCost = CustomConfigFile.Bind<bool>("FruityCradles: Reworks", "Change Cradle To Soul Cost", true, ""); DoCradlePotential = CustomConfigFile.Bind<bool>("FruityCradles: Reworks", "Change Cradle To Drop Potentials", true, ""); CradleSoulPayCost = CustomConfigFile.Bind<float>("FruityCradles: Reworks", "Cradle Pay Cost", cradleHealthCost, "Expressed as a decimal, i.e 0.2 is 20%. Rounded to the nearest 10%"); VoidCradleRework(); } private void VoidCradleRework() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Expected O, but got Unknown //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_0112: 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) voidCradlePrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidChest/VoidChest.prefab").WaitForCompletion(); if (!Object.op_Implicit((Object)(object)voidCradlePrefab)) { return; } PurchaseInteraction component = voidCradlePrefab.GetComponent<PurchaseInteraction>(); if (Object.op_Implicit((Object)(object)component)) { component.cost = Mathf.RoundToInt(CradleSoulPayCost.Value * 10f) * 10; if (DoCradleSoulCost.Value) { component.costType = (CostTypeIndex)15; component.setUnavailableOnTeleporterActivated = true; component.saleStarCompatible = false; } } if (DoCradlePotential.Value) { ChestBehavior component2 = voidCradlePrefab.GetComponent<ChestBehavior>(); FruityCradleBehavior fruityCradleBehavior = voidCradlePrefab.AddComponent<FruityCradleBehavior>(); OptionChestBehavior.Roll += new hook_Roll(DoOptionCradleBehavior); if (Object.op_Implicit((Object)(object)component2)) { fruityCradleBehavior.purchaseInteraction = component; ((OptionChestBehavior)fruityCradleBehavior).dropTable = component2.dropTable; ((OptionChestBehavior)fruityCradleBehavior).displayTier = (ItemTier)6; ((OptionChestBehavior)fruityCradleBehavior).dropUpVelocityStrength = 20f; ((OptionChestBehavior)fruityCradleBehavior).dropForwardVelocityStrength = 0f; ((OptionChestBehavior)fruityCradleBehavior).openState = component2.openState; ((OptionChestBehavior)fruityCradleBehavior).pickupPrefab = voidPotentialPrefab; ((OptionChestBehavior)fruityCradleBehavior).numOptions = 1; Object.Destroy((Object)(object)component2); } } } private void DoOptionCradleBehavior(orig_Roll orig, OptionChestBehavior self) { //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_008c: 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_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Invalid comparison between Unknown and I4 //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) if (self is FruityCradleBehavior) { if (!NetworkServer.active) { Debug.LogWarning((object)"[Server] function 'System.Void RoR2.OptionChestBehavior::Roll()' called on client"); return; } List<UniquePickup> list = new List<UniquePickup>(); UniquePickup val = self.dropTable.GeneratePickupPreReplacement(self.rng); list.Add(val); Pair[] array = ItemCatalog.itemRelationships[ItemRelationshipTypes.ContagiousItem]; Pair[] array2 = array; foreach (Pair val2 in array2) { PickupIndex val3 = PickupCatalog.FindPickupIndex(val2.itemDef2.itemIndex); if (!(val3 != val.pickupIndex)) { if ((int)val2.itemDef2.tier == 8) { break; } PickupIndex val4 = PickupCatalog.FindPickupIndex(val2.itemDef1.itemIndex); list.Add(new UniquePickup(val4)); } } self.generatedPickups = list; RandomlyLunarUtils.CheckForLunarReplacementUniqueArray<List<UniquePickup>>(self.generatedPickups, self.rng); } else { orig.Invoke(self); } } }