Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of BazaarExpansion v1.0.0
BazaarExpansion-Release.dll
Decompiled 8 months agousing System; using System.Collections; using 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 Microsoft.CodeAnalysis; using On.RoR2; using RoR2; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.ResourceManagement.AsyncOperations; [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.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: AssemblyCompany("BazaarExpansion-Release")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+3b7603e16e8fe61559c0af926133d9160f7b75c7")] [assembly: AssemblyProduct("BazaarExpansion-Release")] [assembly: AssemblyTitle("BazaarExpansion-Release")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace BazaarExpand { [BepInPlugin("com.Susciety.BazaarExpand", "BazaarExpand", "1.0.0")] public class BazaarExpand : BaseUnityPlugin { internal class PrinterInfo { public Vector3 position; public Vector3 rotation; } [CompilerGenerated] private sealed class <>c__DisplayClass15_0 { public List<AsyncOperationHandle> handles; internal bool <PreloadAssetsParallel>b__0() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < handles.Count; i++) { AsyncOperationHandle val = handles[i]; if (!((AsyncOperationHandle)(ref val)).IsDone) { return false; } } return true; } } [CompilerGenerated] private sealed class <PreloadAssetsParallel>d__15 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public BazaarExpand <>4__this; private <>c__DisplayClass15_0 <>8__1; private AsyncOperationHandle<SpawnCard> <hGold>5__2; private AsyncOperationHandle<SpawnCard> <hCleanse>5__3; private AsyncOperationHandle<SpawnCard> <hScrapper>5__4; private AsyncOperationHandle<GameObject> <hCauldron>5__5; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <PreloadAssetsParallel>d__15(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0025: 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) <>8__1 = null; <hGold>5__2 = default(AsyncOperationHandle<SpawnCard>); <hCleanse>5__3 = default(AsyncOperationHandle<SpawnCard>); <hScrapper>5__4 = default(AsyncOperationHandle<SpawnCard>); <hCauldron>5__5 = default(AsyncOperationHandle<GameObject>); <>1__state = -2; } private bool MoveNext() { //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //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) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00da: 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_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Invalid comparison between Unknown and I4 //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Expected O, but got Unknown //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Invalid comparison between Unknown and I4 //IL_0204: Unknown result type (might be due to invalid IL or missing references) //IL_020a: Invalid comparison between Unknown and I4 //IL_0237: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Invalid comparison between Unknown and I4 switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>8__1 = new <>c__DisplayClass15_0(); <>8__1.handles = new List<AsyncOperationHandle>(); <hGold>5__2 = default(AsyncOperationHandle<SpawnCard>); <hCleanse>5__3 = default(AsyncOperationHandle<SpawnCard>); <hScrapper>5__4 = default(AsyncOperationHandle<SpawnCard>); <hCauldron>5__5 = default(AsyncOperationHandle<GameObject>); if (cfgChest.Value) { <hGold>5__2 = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/GoldChest/iscGoldChest.asset"); <>8__1.handles.Add(AsyncOperationHandle<SpawnCard>.op_Implicit(<hGold>5__2)); } if (cfgPot.Value) { <hCleanse>5__3 = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/ShrineCleanse/iscShrineCleanse.asset"); <>8__1.handles.Add(AsyncOperationHandle<SpawnCard>.op_Implicit(<hCleanse>5__3)); } if (cfgScrapper.Value) { <hScrapper>5__4 = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/Scrapper/iscScrapper.asset"); <>8__1.handles.Add(AsyncOperationHandle<SpawnCard>.op_Implicit(<hScrapper>5__4)); } if (cfgEnableCadulron.Value) { <hCauldron>5__5 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarCauldron/LunarCauldron, RedToWhite Variant.prefab"); <>8__1.handles.Add(AsyncOperationHandle<GameObject>.op_Implicit(<hCauldron>5__5)); } <>2__current = (object)new WaitUntil((Func<bool>)delegate { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < <>8__1.handles.Count; i++) { AsyncOperationHandle val = <>8__1.handles[i]; if (!((AsyncOperationHandle)(ref val)).IsDone) { return false; } } return true; }); <>1__state = 1; return true; case 1: <>1__state = -1; if (cfgChest.Value && (int)<hGold>5__2.Status == 1) { goldChestCard = <hGold>5__2.Result; } if (cfgPot.Value && (int)<hCleanse>5__3.Status == 1) { shrineCleanseCard = <hCleanse>5__3.Result; } if (cfgScrapper.Value && (int)<hScrapper>5__4.Status == 1) { scrapperCard = <hScrapper>5__4.Result; } if (cfgEnableCadulron.Value && (int)<hCauldron>5__5.Status == 1) { lunarCauldronPrefab = <hCauldron>5__5.Result; } assetsLoaded = true; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <SpawnWhenReady>d__16 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public BazaarExpand <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <SpawnWhenReady>d__16(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitUntil((Func<bool>)(() => assetsLoaded)); <>1__state = 1; return true; case 1: <>1__state = -1; <>4__this.TrySpawnOnce(); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public static ConfigEntry<bool> cfgPot; public static ConfigEntry<bool> cfgScrapper; public static ConfigEntry<bool> cfgChest; public static ConfigEntry<bool> cfgEnableCadulron; public static ConfigEntry<bool> cfgGtoW; public static ConfigEntry<int> cfgAmountTraded; private static SpawnCard goldChestCard; private static SpawnCard shrineCleanseCard; private static SpawnCard scrapperCard; private static GameObject lunarCauldronPrefab; private static bool assetsLoadingStarted; private static bool assetsLoaded; private static bool spawnedOnce; public void Awake() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Expected O, but got Unknown ConfigFile val = new ConfigFile(Paths.ConfigPath + "\\BazaarExpand.cfg", true); cfgChest = val.Bind<bool>("General", "Enable Golden Chest", true, "If enabled, spawn a Golden Chest in the bazaar."); cfgPot = val.Bind<bool>("General", "Enable CleanPot", true, "If enabled, spawn a Cleansing Pool in the bazaar."); cfgScrapper = val.Bind<bool>("General", "Enable Scrapper", true, "If enabled, spawn a Scrapper in the bazaar."); cfgEnableCadulron = val.Bind<bool>("Lunar Cauldron", "Enable Reforge Cauldron", true, "If enabled, spawn a Special Cauldron in the bazaar."); cfgGtoW = val.Bind<bool>("Lunar Cauldron", "GreenToWhite", true, "If enabled, Green Items reforge into 3 White Items instead of a red item."); cfgAmountTraded = val.Bind<int>("Lunar Cauldron", "Items Amount Needed", 2, "Set the number of items needed to reforge."); if (!assetsLoadingStarted) { assetsLoadingStarted = true; ((MonoBehaviour)this).StartCoroutine(PreloadAssetsParallel()); } BazaarController.Start += new hook_Start(BazaarController_Start); } private void BazaarController_Start(orig_Start orig, BazaarController self) { orig.Invoke(self); if (assetsLoaded) { TrySpawnOnce(); } else { ((MonoBehaviour)this).StartCoroutine(SpawnWhenReady()); } } [IteratorStateMachine(typeof(<PreloadAssetsParallel>d__15))] private IEnumerator PreloadAssetsParallel() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <PreloadAssetsParallel>d__15(0) { <>4__this = this }; } [IteratorStateMachine(typeof(<SpawnWhenReady>d__16))] private IEnumerator SpawnWhenReady() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <SpawnWhenReady>d__16(0) { <>4__this = this }; } private void TrySpawnOnce() { if (!spawnedOnce && !((Object)(object)Run.instance == (Object)null) && NetworkServer.active) { SpawnExpand(); } } private void SpawnExpand() { //IL_0016: 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_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0050: 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_006a: 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_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_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: 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_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Expected O, but got Unknown //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Expected O, but got Unknown //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_0265: Unknown result type (might be due to invalid IL or missing references) //IL_026c: Expected O, but got Unknown //IL_0272: Unknown result type (might be due to invalid IL or missing references) //IL_0277: Unknown result type (might be due to invalid IL or missing references) //IL_027e: Unknown result type (might be due to invalid IL or missing references) //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_02a0: Unknown result type (might be due to invalid IL or missing references) //IL_02e7: Unknown result type (might be due to invalid IL or missing references) //IL_02ee: Expected O, but got Unknown //IL_02f4: Unknown result type (might be due to invalid IL or missing references) //IL_02f9: 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_0322: Unknown result type (might be due to invalid IL or missing references) //IL_035e: Unknown result type (might be due to invalid IL or missing references) //IL_0363: Unknown result type (might be due to invalid IL or missing references) //IL_03b9: Unknown result type (might be due to invalid IL or missing references) //IL_0399: Unknown result type (might be due to invalid IL or missing references) PrinterInfo printerInfo = new PrinterInfo { position = new Vector3(-87.1f, -24f, -7.2f), rotation = new Vector3(0f, 72.6f, 0f) }; PrinterInfo printerInfo2 = new PrinterInfo { position = new Vector3(-65.7f, -23.5f, -18.9f), rotation = new Vector3(0f, 72.6f, 0f) }; PrinterInfo printerInfo3 = new PrinterInfo { position = new Vector3(-82.1f, -23.7f, -5.2f), rotation = new Vector3(0f, 72.6f, 0f) }; PrinterInfo printerInfo4 = new PrinterInfo { position = new Vector3(-132f, -25f, -29.7f), rotation = new Vector3(0f, 72.6f, 0f) }; ArtifactDef val = ArtifactCatalog.FindArtifactDef("Sacrifice"); bool flag = false; if (Object.op_Implicit((Object)(object)RunArtifactManager.instance) && RunArtifactManager.instance.IsArtifactEnabled(val)) { RunArtifactManager.instance.SetArtifactEnabledServer(val, false); flag = true; } DirectorPlacementRule val2 = new DirectorPlacementRule { placementMode = (PlacementMode)0 }; if (cfgChest.Value && (Object)(object)goldChestCard != (Object)null) { DirectorSpawnRequest val3 = new DirectorSpawnRequest(goldChestCard, val2, Run.instance.runRNG); GameObject spawnedInstance = goldChestCard.DoSpawn(printerInfo.position, Quaternion.identity, val3).spawnedInstance; if (Object.op_Implicit((Object)(object)spawnedInstance)) { PurchaseInteraction component = spawnedInstance.GetComponent<PurchaseInteraction>(); if (Object.op_Implicit((Object)(object)component)) { component.Networkcost = 1; component.costType = (CostTypeIndex)8; } ChestBehavior component2 = spawnedInstance.GetComponent<ChestBehavior>(); if (Object.op_Implicit((Object)(object)component2)) { component2.tier1Chance = 0f; component2.tier2Chance = 0f; component2.tier3Chance = 1f; component2.lunarChance = 0f; } spawnedInstance.transform.eulerAngles = printerInfo.rotation; NetworkServer.Spawn(spawnedInstance); } } if (cfgPot.Value && (Object)(object)shrineCleanseCard != (Object)null) { DirectorSpawnRequest val4 = new DirectorSpawnRequest(shrineCleanseCard, val2, Run.instance.runRNG); GameObject spawnedInstance2 = shrineCleanseCard.DoSpawn(printerInfo2.position, Quaternion.identity, val4).spawnedInstance; if (Object.op_Implicit((Object)(object)spawnedInstance2)) { spawnedInstance2.transform.eulerAngles = printerInfo2.rotation; NetworkServer.Spawn(spawnedInstance2); } } if (cfgScrapper.Value && (Object)(object)scrapperCard != (Object)null) { DirectorSpawnRequest val5 = new DirectorSpawnRequest(scrapperCard, val2, Run.instance.runRNG); GameObject spawnedInstance3 = scrapperCard.DoSpawn(printerInfo3.position, Quaternion.identity, val5).spawnedInstance; if (Object.op_Implicit((Object)(object)spawnedInstance3)) { spawnedInstance3.transform.eulerAngles = printerInfo3.rotation; NetworkServer.Spawn(spawnedInstance3); } } if (cfgEnableCadulron.Value && (Object)(object)lunarCauldronPrefab != (Object)null) { GameObject val6 = Object.Instantiate<GameObject>(lunarCauldronPrefab, printerInfo4.position, Quaternion.identity); PurchaseInteraction component3 = val6.GetComponent<PurchaseInteraction>(); if (Object.op_Implicit((Object)(object)component3)) { if (cfgGtoW.Value) { component3.costType = (CostTypeIndex)5; } component3.Networkcost = cfgAmountTraded.Value; } val6.transform.eulerAngles = printerInfo4.rotation; NetworkServer.Spawn(val6); } if (flag && Object.op_Implicit((Object)(object)RunArtifactManager.instance)) { RunArtifactManager.instance.SetArtifactEnabledServer(val, true); } } } }