using System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using BepInEx; using HarmonyLib; using Microsoft.CodeAnalysis; using ModdingUtils.Utils; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.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 CardDraftFreezeFix { [BepInPlugin("com.lennox.rounds.carddraftfreezefix", "Card Draft Freeze Fix", "1.0.1")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class CardDraftFreezeFixPlugin : BaseUnityPlugin { public const string ModId = "com.lennox.rounds.carddraftfreezefix"; public const string ModName = "Card Draft Freeze Fix"; public const string Version = "1.0.1"; private void Awake() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) new Harmony("com.lennox.rounds.carddraftfreezefix").PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Card Draft Freeze Fix initialized successfully!"); } } [HarmonyPatch(typeof(Cards), "GetRandomCardWithCondition")] public class GetRandomCardWithConditionPatch { [HarmonyPostfix] private static void Postfix(ref CardInfo __result) { if (!((Object)(object)__result == (Object)null)) { return; } Debug.LogWarning((object)"[CardDraftFreezeFix] Empty card pool detected for player! Yielding a fallback card to prevent UI freeze."); if (!((Object)(object)CardChoice.instance != (Object)null) || CardChoice.instance.cards == null || CardChoice.instance.cards.Length == 0) { return; } CardInfo val = null; CardInfo[] cards = CardChoice.instance.cards; foreach (CardInfo val2 in cards) { if (!((Object)(object)val2 == (Object)null) && (val2.categories == null || val2.categories.Length == 0)) { val = val2; string text = val2.cardName.ToLower(); if (text.Contains("health") || text.Contains("block") || text.Contains("shield")) { break; } } } if ((Object)(object)val == (Object)null) { cards = CardChoice.instance.cards; foreach (CardInfo val3 in cards) { if ((Object)(object)val3 != (Object)null) { val = val3; break; } } } if ((Object)(object)val != (Object)null) { __result = val; Debug.LogWarning((object)("[CardDraftFreezeFix] Successfully resolved freeze by selecting fallback card: " + val.cardName)); } } } }