Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of MithrixSurprise v1.0.6
MithrixSurprise.dll
Decompiled a year agousing System; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using On.RoR2; using RiskOfOptions; using RiskOfOptions.OptionConfigs; using RiskOfOptions.Options; using RoR2; using RoR2.ExpansionManagement; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("MithrixSurprise")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+6c43b7a651d506ee2a26ea45e5101e5306fdfedc")] [assembly: AssemblyProduct("MithrixSurprise")] [assembly: AssemblyTitle("MithrixSurprise")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace MithrixSurprise; [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Nuxlar.MithrixSurprise", "MithrixSurprise", "1.0.6")] public class MithrixSurprise : BaseUnityPlugin { internal static ConfigEntry<float> probability; private static SpawnCard theBoi = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/Brother/cscBrother.asset").WaitForCompletion(); internal static ConfigEntry<float> probabilityFalse; private static readonly ExpansionDef dlc2 = Addressables.LoadAssetAsync<ExpansionDef>((object)"RoR2/DLC2/Common/DLC2.asset").WaitForCompletion(); private static readonly SpawnCard theFalseBoi = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC2/FalseSonBoss/cscFalseSonBoss.asset").WaitForCompletion(); private static ConfigFile RoRConfig { get; set; } public void Awake() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Expected O, but got Unknown //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Expected O, but got Unknown RoRConfig = new ConfigFile(Paths.ConfigPath + "\\MithrixSurprise.cfg", true); probability = RoRConfig.Bind<float>("General", "Spawn Chance", 0.5f, "Mithrix spawn chance."); probabilityFalse = RoRConfig.Bind<float>("General", "Spawn Chance False Son", 0f, "False Son spawn chance. (Requires SotS)"); if (!File.Exists(Paths.ConfigPath + "\\MithrixSurpriseFirstRun.cfg")) { if (probability.Value != (float)((ConfigEntryBase)probability).DefaultValue) { ConfigEntry<float> obj = probability; obj.Value *= 100f; } File.Create(Paths.ConfigPath + "\\MithrixSurpriseFirstRun.cfg"); } Math.Clamp(probability.Value, 0f, 100f); Math.Clamp(probabilityFalse.Value, 0f, 100f); if (RoO.Enabled) { string text = Assembly.GetExecutingAssembly().Location.Replace("MithrixSurprise.dll", "icon.png"); if (!File.Exists(text)) { text = ""; } RoO.AddOptions(text); } PurchaseInteraction.OnInteractionBegin += new hook_OnInteractionBegin(PurchaseInteraction_OnInteractionBegin); } private static void PurchaseInteraction_OnInteractionBegin(orig_OnInteractionBegin orig, PurchaseInteraction self, Interactor activator) { if (self.CanBeAffordedByInteractor(activator)) { if (RoR2Application.rng.RangeFloat(0f, 1f) < probability.Value / 100f) { SpawnTheBoi(((Component)activator).GetComponent<CharacterBody>(), theBoi); } if (!Run.instance.IsExpansionEnabled(dlc2)) { orig.Invoke(self, activator); return; } if (RoR2Application.rng.RangeFloat(0f, 1f) < probabilityFalse.Value / 100f) { SpawnTheBoi(((Component)activator).GetComponent<CharacterBody>(), theFalseBoi); } orig.Invoke(self, activator); } else { orig.Invoke(self, activator); } } private static void SpawnTheBoi(CharacterBody activatorBody, SpawnCard spawnCard) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_003b: 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_0051: Expected O, but got Unknown Transform coreTransform = activatorBody.coreTransform; MonsterSpawnDistance val = (MonsterSpawnDistance)2; DirectorPlacementRule val2 = new DirectorPlacementRule { spawnOnTarget = coreTransform, placementMode = (PlacementMode)3 }; DirectorCore.GetMonsterSpawnDistance(val, ref val2.minDistance, ref val2.maxDistance); GameObject val3 = DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest(spawnCard, val2, RoR2Application.rng) { teamIndexOverride = (TeamIndex)2 }); val3.GetComponent<CharacterMaster>().isBoss = true; if (Object.op_Implicit((Object)(object)val3)) { NetworkServer.Spawn(val3); } } } internal static class RoO { public static bool Enabled => Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions"); [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] public static void AddOptions(string iconPath) { //IL_0000: 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_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Expected O, but got Unknown //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Expected O, but got Unknown //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Expected O, but got Unknown //IL_0099: 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) StepSliderConfig val = new StepSliderConfig { min = 0f, max = 100f, increment = 0.25f, FormatString = "{0}%" }; ModSettingsManager.AddOption((BaseOption)new StepSliderOption(MithrixSurprise.probability, val)); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(MithrixSurprise.probabilityFalse, val)); if (iconPath != "") { Texture2D val2 = new Texture2D(256, 256, (TextureFormat)5, 3, false); if (ImageConversion.LoadImage(val2, File.ReadAllBytes(iconPath))) { Sprite modIcon = Sprite.Create(val2, new Rect(0f, 0f, (float)((Texture)val2).width, (float)((Texture)val2).height), Vector2.zero); ModSettingsManager.SetModIcon(modIcon); } } ModSettingsManager.SetModDescription("Goodbye Moon Man"); } }