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 GuaranteedScrapper v0.1.0
GuaranteedScrapper.dll
Decompiled 2 years agousing System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security.Permissions; using BepInEx; using HarmonyLib; 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.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = "")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.1.0.0")] namespace Prototype; [BepInPlugin("prototype.stage5.scrapper", "GuaranteedScrapper", "0.1.0")] public class GuaranteedScrapper : BaseUnityPlugin { public const string version = "0.1.0"; public const string identifier = "prototype.stage5.scrapper"; private static AsyncOperationHandle<InteractableSpawnCard> handle; private static Harmony instance; private static uint counter; internal void Awake() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) handle = Addressables.LoadAssetAsync<InteractableSpawnCard>((object)"RoR2/Base/Scrapper/iscScrapper.asset"); SceneCatalog.onMostRecentSceneDefChanged += OnMostRecentSceneDefChanged; } private void OnMostRecentSceneDefChanged(SceneDef scene) { //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) Harmony obj = instance; if (obj != null) { obj.UnpatchSelf(); } if (NetworkServer.active) { counter = 0u; if (scene.stageOrder == 5) { instance = Harmony.CreateAndPatchAll(((object)this).GetType(), (string)null); } if (scene.cachedName == "skymeadow") { NetworkServer.Spawn(Object.Instantiate<GameObject>(((SpawnCard)handle.WaitForCompletion()).prefab, new Vector3(-102.33f, -87.75f, -123.75f), Quaternion.Euler(0f, 195f, 0f))); } } } [HarmonyPatch(typeof(SceneDirector), "SelectCard")] [HarmonyPostfix] private static void SelectCard(SceneDirector __instance, ref DirectorCard __result) { //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Expected O, but got Unknown //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Expected O, but got Unknown if (__result == null || (Object)(object)__result.spawnCard == (Object)null) { return; } DirectorCardCategorySelection val = null; if (Object.op_Implicit((Object)(object)ClassicStageInfo.instance)) { val = ClassicStageInfo.instance.interactableCategories; } DirectorCard[] source = (DirectorCard[])(object)new DirectorCard[0]; if (Object.op_Implicit((Object)(object)val)) { for (int i = 0; i < val.categories.Length; i++) { ref Category reference = ref val.categories[i]; if (reference.name == "Duplicator") { source = reference.cards; } } } InteractableSpawnCard val2 = handle.WaitForCompletion(); if (source.Contains(__result) && (Object)(object)__result.spawnCard != (Object)(object)val2) { if (counter % 2 != 0 && __result.IsAvailable()) { __instance.interactableCredit -= __result.spawnCard.directorCreditCost; __result = new DirectorCard(); __instance.rng.Next(); __instance.rng.Next(); } else if (counter == 0) { __result = new DirectorCard { spawnCard = (SpawnCard)(object)val2 }; } counter++; } } }