using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Bootstrap;
using CardChoiceSpawnUniqueCardPatch;
using CardChoiceSpawnUniqueCardPatch.CustomCategories;
using GameSaver.Util;
using HarmonyLib;
using Jotunn.Utils;
using Microsoft.CodeAnalysis;
using ModdingUtils.Utils;
using Photon.Pun;
using RarityLib.Utils;
using TMPro;
using TabInfo.Utils;
using UnboundLib;
using UnboundLib.GameModes;
using UnboundLib.Utils;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(/*Could not decode attribute arguments.*/)]
[assembly: TargetFramework(".NETFramework,Version=v4.7.1", FrameworkDisplayName = ".NET Framework 4.7.1")]
[assembly: AssemblyVersion("0.0.0.0")]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Embedded]
[AttributeUsage(/*Could not decode attribute arguments.*/)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace Nullmanager
{
[HarmonyPatch]
internal class AddNullToPlayerPatch : Object
{
[CompilerGenerated]
private sealed class <>c__DisplayClass0_0 : Object
{
public CardInfo card;
public Player player;
internal void <Add>b__0(Action<NullCardInfo, Player> c)
{
try
{
c.Invoke((NullCardInfo)(object)card, player);
}
catch (Object)
{
}
}
}
[CompilerGenerated]
private sealed class <>c__DisplayClass1_0 : Object
{
public NullCardInfo card;
public Player playerToUpgrade;
internal void <RPC>b__0(Action<NullCardInfo, Player> c)
{
try
{
c.Invoke(card, playerToUpgrade);
}
catch (Object)
{
}
}
}
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
[HarmonyPrefix]
public static bool Add(Player player, CardInfo card, bool reassign, string twoLetterCode, float forceDisplay, float forceDisplayDelay, bool addToCardBar)
{
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
<>c__DisplayClass0_0 CS$<>8__locals0 = new <>c__DisplayClass0_0();
CS$<>8__locals0.card = card;
CS$<>8__locals0.player = player;
NullCardInfo nullCardInfo = CS$<>8__locals0.card as NullCardInfo;
if (nullCardInfo != null)
{
if (nullCardInfo.randomCard)
{
nullCardInfo = NullManager.instance.GetRandomNullWithRarity(CS$<>8__locals0.player, ((CardInfo)nullCardInfo).rarity);
}
if (PhotonNetwork.OfflineMode)
{
CS$<>8__locals0.card = (CardInfo)(object)NullManager.instance.GetNullCardInfo(((Object)nullCardInfo.NulledSorce).name, CS$<>8__locals0.player);
CS$<>8__locals0.player.data.currentCards.Add(CS$<>8__locals0.card);
NullManager.instance.callbacks.ForEach((Action<Action<NullCardInfo, Player>>)delegate(Action<NullCardInfo, Player> c)
{
try
{
c.Invoke((NullCardInfo)(object)CS$<>8__locals0.card, CS$<>8__locals0.player);
}
catch (Object)
{
}
});
if (addToCardBar)
{
Cards.SilentAddToCardBar(CS$<>8__locals0.player.playerID, CS$<>8__locals0.card, twoLetterCode, forceDisplay, forceDisplayDelay);
}
}
else if (PhotonNetwork.IsMasterClient)
{
if (addToCardBar)
{
NetworkingManager.RPC(typeof(Cards), "RPCA_AssignCard", (object[])(object)new Object[6]
{
(Object)String.Concat("___NULL___", ((Object)nullCardInfo.NulledSorce).name),
(object)CS$<>8__locals0.player.playerID,
(object)reassign,
(Object)twoLetterCode,
(object)forceDisplay,
(object)forceDisplayDelay
});
}
else
{
NetworkingManager.RPC(typeof(Cards), "RPCA_AssignCardWithoutCardBar", (object[])(object)new Object[6]
{
(Object)String.Concat("___NULL___", ((Object)nullCardInfo.NulledSorce).name),
(object)CS$<>8__locals0.player.playerID,
(object)reassign,
(Object)twoLetterCode,
(object)forceDisplay,
(object)forceDisplayDelay
});
}
}
return false;
}
return true;
}
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
[HarmonyPrefix]
public static bool RPC(string cardObjectName, int playerID, bool reassign, string twoLetterCode, float forceDisplay, float forceDisplayDelay, bool addToCardBar)
{
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Expected O, but got Unknown
if (cardObjectName.StartsWith("___NULL___"))
{
<>c__DisplayClass1_0 CS$<>8__locals0 = new <>c__DisplayClass1_0();
CS$<>8__locals0.playerToUpgrade = (Player)ExtensionMethods.InvokeMethod((object)PlayerManager.instance, "GetPlayerWithID", (object[])(object)new Object[1] { (object)playerID });
CS$<>8__locals0.card = NullManager.instance.GetNullCardInfo(cardObjectName.Substring(10), CS$<>8__locals0.playerToUpgrade);
CS$<>8__locals0.playerToUpgrade.data.currentCards.Add((CardInfo)(object)CS$<>8__locals0.card);
NullManager.instance.callbacks.ForEach((Action<Action<NullCardInfo, Player>>)delegate(Action<NullCardInfo, Player> c)
{
try
{
c.Invoke(CS$<>8__locals0.card, CS$<>8__locals0.playerToUpgrade);
}
catch (Object)
{
}
});
if (addToCardBar)
{
Cards.SilentAddToCardBar(CS$<>8__locals0.playerToUpgrade.playerID, (CardInfo)(object)CS$<>8__locals0.card, twoLetterCode, forceDisplay, forceDisplayDelay);
}
return false;
}
return true;
}
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
[HarmonyPostfix]
public static void GetCardInfoWithName(string cardName, ref CardInfo __result)
{
if ((Object)(object)__result == (Object)null && cardName.StartsWith("___NULL___"))
{
__result = (CardInfo)(object)NullManager.instance.GetNullCardInfo(cardName.Substring(10), -1);
}
}
}
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
internal class ApplyCardStatsPatch : Object
{
[CompilerGenerated]
private sealed class <>c__DisplayClass0_0 : Object
{
public NullCardInfo nullCard;
public Player ___playerToUpgrade;
public NullCardInfo nullCard2;
internal void <Postfix>b__0(Action<NullCardInfo, Player> c)
{
try
{
c.Invoke(nullCard, ___playerToUpgrade);
}
catch (Object)
{
}
}
internal void <Postfix>b__1(Action<NullCardInfo, Player> c)
{
try
{
c.Invoke(nullCard2, ___playerToUpgrade);
}
catch (Object)
{
}
}
}
private static void Postfix(ApplyCardStats __instance, Player ___playerToUpgrade)
{
//IL_0043: 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)
<>c__DisplayClass0_0 CS$<>8__locals0 = new <>c__DisplayClass0_0();
CS$<>8__locals0.___playerToUpgrade = ___playerToUpgrade;
CardInfo component = ((Component)__instance).GetComponent<CardInfo>();
CS$<>8__locals0.nullCard = component as NullCardInfo;
if (CS$<>8__locals0.nullCard != null)
{
CS$<>8__locals0.___playerToUpgrade.data.stats.AjustNulls(-NullManager.instance.GetNullValue(((CardInfo)CS$<>8__locals0.nullCard).rarity));
NullManager.instance.callbacks.ForEach((Action<Action<NullCardInfo, Player>>)delegate(Action<NullCardInfo, Player> c)
{
try
{
c.Invoke(CS$<>8__locals0.nullCard, CS$<>8__locals0.___playerToUpgrade);
}
catch (Object)
{
}
});
}
component = ((Component)__instance).GetComponent<CardInfo>().sourceCard;
CS$<>8__locals0.nullCard2 = component as NullCardInfo;
if (CS$<>8__locals0.nullCard2 == null)
{
return;
}
CS$<>8__locals0.___playerToUpgrade.data.stats.AjustNulls(-NullManager.instance.GetNullValue(((CardInfo)CS$<>8__locals0.nullCard2).rarity));
NullManager.instance.callbacks.ForEach((Action<Action<NullCardInfo, Player>>)delegate(Action<NullCardInfo, Player> c)
{
try
{
c.Invoke(CS$<>8__locals0.nullCard2, CS$<>8__locals0.___playerToUpgrade);
}
catch (Object)
{
}
});
}
}
public class GameSaverPatch : Object
{
public static void Patch()
{
//IL_008a: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: Expected O, but got Unknown
Main.harmony.Patch((MethodBase)(object)typeof(PlayerData).GetConstructor((Type[])(object)new Type[7]
{
typeof(String),
typeof(Int32),
typeof(List<CardInfo>),
typeof(Int32),
typeof(Int32),
typeof(Boolean),
typeof(UInt64)
}), (HarmonyMethod)null, new HarmonyMethod(typeof(GameSaverPatch).GetMethod("Constructor")), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
}
public static void Constructor(List<CardInfo> cards, PlayerData __instance)
{
for (int i = 0; i < cards.Count; i++)
{
if (cards[i] is NullCardInfo nullCardInfo)
{
__instance.serializedCards[i] = String.Concat("___NULL___", ((Object)nullCardInfo.NulledSorce).name);
}
}
}
}
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInPlugin("com.Root.Null", "NullManager", "1.2.1")]
[BepInProcess("Rounds.exe")]
public class Main : BaseUnityPlugin
{
private const string ModId = "com.Root.Null";
private const string ModName = "NullManager";
public const string Version = "1.2.1";
internal static AssetBundle Assets;
internal static Harmony harmony;
[field: CompilerGenerated]
public static Main instance
{
[CompilerGenerated]
get;
[CompilerGenerated]
private set;
}
private void Awake()
{
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: Expected O, but got Unknown
harmony = new Harmony("com.Root.Null");
harmony.PatchAll();
instance = this;
Assets = AssetUtils.LoadAssetBundleFromResources("nullassets", typeof(Main).Assembly);
NullManager.instance = Assets.LoadAsset<GameObject>("NullManger").GetComponent<NullManager>();
PhotonNetwork.PrefabPool.RegisterPrefab(((Object)NullManager.instance.NullCard).name, NullManager.instance.NullCard);
}
private void Start()
{
List<BaseUnityPlugin> obj = (List<BaseUnityPlugin>)typeof(Chainloader).GetField("_plugins", (BindingFlags)40).GetValue((object)null);
if (obj.Exists((Predicate<BaseUnityPlugin>)((BaseUnityPlugin plugin) => plugin.Info.Metadata.GUID == "com.willuwontu.rounds.tabinfo")))
{
TabinfoInterface.Setup();
}
if (obj.Exists((Predicate<BaseUnityPlugin>)((BaseUnityPlugin plugin) => plugin.Info.Metadata.GUID == "ot.dan.rounds.gamesaver")))
{
GameSaverPatch.Patch();
}
NullManager.instance.SetUp();
GameModeManager.AddHook("GameStart", (Func<IGameModeHandler, IEnumerator>)RestNulls);
}
[IteratorStateMachine(/*Could not decode attribute arguments.*/)]
internal IEnumerator RestNulls(object _)
{
PlayerManager.instance.players.ForEach((Action<Player>)delegate(Player p)
{
p.data.stats.GetNullData().nulls = 0;
});
yield break;
}
}
public class NullCard : MonoBehaviour, IPunInstantiateMagicCallback
{
[CompilerGenerated]
private sealed class <>c__DisplayClass0_0 : Object
{
public object[] data;
public NullCard <>4__this;
public Action<TextMeshProUGUI> <>9__4;
internal bool <OnPhotonInstantiate>b__0(Player p)
{
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0013: Invalid comparison between I4 and Unknown
return p.playerID == (int)(Int32)data[2];
}
internal void <OnPhotonInstantiate>b__1()
{
//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
//IL_00d5: Expected O, but got Unknown
<>c__DisplayClass0_1 CS$<>8__locals0 = new <>c__DisplayClass0_1
{
CS$<>8__locals1 = this
};
Object.DestroyImmediate((Object)(object)((Component)((Component)<>4__this).gameObject.transform.GetChild(0)).gameObject);
((Component)<>4__this).gameObject.SetActive(false);
CS$<>8__locals0.temp = Object.Instantiate<GameObject>(((Component)((NullCardInfo)(object)((Component)<>4__this).GetComponent<CardInfo>().sourceCard).NulledSorce).gameObject, ((Component)<>4__this).transform);
CS$<>8__locals0.temp.GetComponent<CardInfo>().cardDestription = "";
CS$<>8__locals0.temp.GetComponent<CardInfo>().cardStats = ((Component)<>4__this).GetComponent<CardInfo>().sourceCard.cardStats;
((Component)<>4__this).gameObject.SetActive(true);
ExtensionMethods.ExecuteAfterFrames((MonoBehaviour)(object)Main.instance, 4, (Action)delegate
{
for (int i = 0; i < CS$<>8__locals0.temp.transform.childCount; i++)
{
CS$<>8__locals0.temp.transform.GetChild(i).SetParent(((Component)CS$<>8__locals0.CS$<>8__locals1.<>4__this).transform, false);
}
Object.DestroyImmediate((Object)(object)CS$<>8__locals0.temp);
Enumerable.ToList<Image>((IEnumerable<Image>)(object)((Component)CS$<>8__locals0.CS$<>8__locals1.<>4__this).GetComponentsInChildren<Image>()).ForEach((Action<Image>)delegate(Image image)
{
image.sprite = Main.Assets.LoadAsset<Sprite>("missing_texture");
image.type = (Type)2;
});
Enumerable.ToList<TextMeshProUGUI>((IEnumerable<TextMeshProUGUI>)(object)((Component)CS$<>8__locals0.CS$<>8__locals1.<>4__this).GetComponentsInChildren<TextMeshProUGUI>()).ForEach((Action<TextMeshProUGUI>)delegate(TextMeshProUGUI text)
{
if (((TMP_Text)text).text == ((NullCardInfo)(object)((Component)CS$<>8__locals0.CS$<>8__locals1.<>4__this).GetComponent<CardInfo>().sourceCard).NulledSorce.cardName.ToUpper())
{
((TMP_Text)text).font = Main.Assets.LoadAsset<TMP_FontAsset>("Nightmare");
}
});
});
}
internal void <OnPhotonInstantiate>b__4(TextMeshProUGUI text)
{
if (((TMP_Text)text).text == ((NullCardInfo)(object)((Component)<>4__this).GetComponent<CardInfo>().sourceCard).NulledSorce.cardName.ToUpper())
{
((TMP_Text)text).font = Main.Assets.LoadAsset<TMP_FontAsset>("Nightmare");
}
}
}
[CompilerGenerated]
private sealed class <>c__DisplayClass0_1 : Object
{
public GameObject temp;
public <>c__DisplayClass0_0 CS$<>8__locals1;
internal void <OnPhotonInstantiate>b__2()
{
for (int i = 0; i < temp.transform.childCount; i++)
{
temp.transform.GetChild(i).SetParent(((Component)CS$<>8__locals1.<>4__this).transform, false);
}
Object.DestroyImmediate((Object)(object)temp);
Enumerable.ToList<Image>((IEnumerable<Image>)(object)((Component)CS$<>8__locals1.<>4__this).GetComponentsInChildren<Image>()).ForEach((Action<Image>)delegate(Image image)
{
image.sprite = Main.Assets.LoadAsset<Sprite>("missing_texture");
image.type = (Type)2;
});
Enumerable.ToList<TextMeshProUGUI>((IEnumerable<TextMeshProUGUI>)(object)((Component)CS$<>8__locals1.<>4__this).GetComponentsInChildren<TextMeshProUGUI>()).ForEach((Action<TextMeshProUGUI>)delegate(TextMeshProUGUI text)
{
if (((TMP_Text)text).text == ((NullCardInfo)(object)((Component)CS$<>8__locals1.<>4__this).GetComponent<CardInfo>().sourceCard).NulledSorce.cardName.ToUpper())
{
((TMP_Text)text).font = Main.Assets.LoadAsset<TMP_FontAsset>("Nightmare");
}
});
}
}
public void OnPhotonInstantiate(PhotonMessageInfo info)
{
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Expected O, but got Unknown
//IL_009f: 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_00b6: Unknown result type (might be due to invalid IL or missing references)
//IL_00c0: Expected O, but got Unknown
<>c__DisplayClass0_0 CS$<>8__locals0 = new <>c__DisplayClass0_0();
CS$<>8__locals0.<>4__this = this;
CS$<>8__locals0.data = info.photonView.InstantiationData;
((Component)this).transform.localScale = (Vector3)CS$<>8__locals0.data[0];
((Component)this).GetComponent<CardInfo>().sourceCard = (CardInfo)(object)NullManager.instance.GetNullCardInfo((string)(String)CS$<>8__locals0.data[1], PlayerManager.instance.players.Find((Predicate<Player>)((Player p) => p.playerID == (int)(Int32)CS$<>8__locals0.data[2])));
((Component)this).GetComponent<CardInfo>().cardBase = ((Component)this).GetComponent<CardInfo>().sourceCard.cardBase;
((Component)this).GetComponent<CardInfo>().rarity = ((Component)this).GetComponent<CardInfo>().sourceCard.rarity;
ExtensionMethods.ExecuteAfterFrames((MonoBehaviour)(object)Main.instance, 2, (Action)delegate
{
//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
//IL_00d5: Expected O, but got Unknown
<>c__DisplayClass0_1 CS$<>8__locals1 = new <>c__DisplayClass0_1
{
CS$<>8__locals1 = CS$<>8__locals0
};
Object.DestroyImmediate((Object)(object)((Component)((Component)CS$<>8__locals0.<>4__this).gameObject.transform.GetChild(0)).gameObject);
((Component)CS$<>8__locals0.<>4__this).gameObject.SetActive(false);
CS$<>8__locals1.temp = Object.Instantiate<GameObject>(((Component)((NullCardInfo)(object)((Component)CS$<>8__locals0.<>4__this).GetComponent<CardInfo>().sourceCard).NulledSorce).gameObject, ((Component)CS$<>8__locals0.<>4__this).transform);
CS$<>8__locals1.temp.GetComponent<CardInfo>().cardDestription = "";
CS$<>8__locals1.temp.GetComponent<CardInfo>().cardStats = ((Component)CS$<>8__locals0.<>4__this).GetComponent<CardInfo>().sourceCard.cardStats;
((Component)CS$<>8__locals0.<>4__this).gameObject.SetActive(true);
ExtensionMethods.ExecuteAfterFrames((MonoBehaviour)(object)Main.instance, 4, (Action)delegate
{
for (int i = 0; i < CS$<>8__locals1.temp.transform.childCount; i++)
{
CS$<>8__locals1.temp.transform.GetChild(i).SetParent(((Component)CS$<>8__locals1.CS$<>8__locals1.<>4__this).transform, false);
}
Object.DestroyImmediate((Object)(object)CS$<>8__locals1.temp);
Enumerable.ToList<Image>((IEnumerable<Image>)(object)((Component)CS$<>8__locals1.CS$<>8__locals1.<>4__this).GetComponentsInChildren<Image>()).ForEach((Action<Image>)delegate(Image image)
{
image.sprite = Main.Assets.LoadAsset<Sprite>("missing_texture");
image.type = (Type)2;
});
Enumerable.ToList<TextMeshProUGUI>((IEnumerable<TextMeshProUGUI>)(object)((Component)CS$<>8__locals1.CS$<>8__locals1.<>4__this).GetComponentsInChildren<TextMeshProUGUI>()).ForEach((Action<TextMeshProUGUI>)delegate(TextMeshProUGUI text)
{
if (((TMP_Text)text).text == ((NullCardInfo)(object)((Component)CS$<>8__locals1.CS$<>8__locals1.<>4__this).GetComponent<CardInfo>().sourceCard).NulledSorce.cardName.ToUpper())
{
((TMP_Text)text).font = Main.Assets.LoadAsset<TMP_FontAsset>("Nightmare");
}
});
});
});
}
}
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
internal class NullCardBar : Object
{
[CompilerGenerated]
private sealed class <>c__DisplayClass0_0 : Object
{
public CardInfo card;
public Action<TextMeshProUGUI> <>9__2;
internal void <Prefix>b__0()
{
if ((Object)(object)card != (Object)null)
{
Enumerable.ToList<Image>((IEnumerable<Image>)(object)((Component)card).GetComponentsInChildren<Image>()).ForEach((Action<Image>)delegate(Image image)
{
image.sprite = Main.Assets.LoadAsset<Sprite>("missing_texture");
image.type = (Type)2;
});
}
Enumerable.ToList<TextMeshProUGUI>((IEnumerable<TextMeshProUGUI>)(object)((Component)card).GetComponentsInChildren<TextMeshProUGUI>()).ForEach((Action<TextMeshProUGUI>)delegate(TextMeshProUGUI text)
{
if (((TMP_Text)text).text == card.cardName.ToUpper())
{
((TMP_Text)text).font = Main.Assets.LoadAsset<TMP_FontAsset>("Nightmare");
}
});
((TMP_Text)((Component)card).GetComponentInChildren<CardVisuals>().nameText).text = ((TMP_Text)((Component)card).GetComponentInChildren<CardVisuals>().nameText).text.Substring(2);
}
internal void <Prefix>b__2(TextMeshProUGUI text)
{
if (((TMP_Text)text).text == card.cardName.ToUpper())
{
((TMP_Text)text).font = Main.Assets.LoadAsset<TMP_FontAsset>("Nightmare");
}
}
}
private static bool Prefix(CardInfo cardToSpawn, Vector3 pos, ref GameObject __result)
{
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
//IL_0019: Expected O, but got Unknown
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: 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_00b2: Unknown result type (might be due to invalid IL or missing references)
//IL_00bc: Expected O, but got Unknown
if (cardToSpawn is NullCardInfo nullCardInfo)
{
<>c__DisplayClass0_0 CS$<>8__locals0 = new <>c__DisplayClass0_0();
GameObject val = new GameObject();
NullCardInfo nullCardInfo2 = NullManager.instance.GetNullCardInfo(((Object)nullCardInfo.NulledSorce).name, nullCardInfo.PlayerId);
val.SetActive(false);
Debug.Log((object)".Instantiate");
__result = Object.Instantiate<GameObject>(((Component)(CardInfo)typeof(CardChoiceSpawnUniqueCardPatch).GetField("NullCard", (BindingFlags)40).GetValue((object)null)).gameObject, pos, Quaternion.identity, val.transform);
CS$<>8__locals0.card = __result.GetComponent<CardInfo>();
Object.DestroyImmediate((Object)(object)CS$<>8__locals0.card);
CS$<>8__locals0.card = CopyComponent<CardInfo>((CardInfo)(object)nullCardInfo2, __result);
ExtensionMethods.ExecuteAfterFrames((MonoBehaviour)(object)Main.instance, 2, (Action)delegate
{
if ((Object)(object)CS$<>8__locals0.card != (Object)null)
{
Enumerable.ToList<Image>((IEnumerable<Image>)(object)((Component)CS$<>8__locals0.card).GetComponentsInChildren<Image>()).ForEach((Action<Image>)delegate(Image image)
{
image.sprite = Main.Assets.LoadAsset<Sprite>("missing_texture");
image.type = (Type)2;
});
}
Enumerable.ToList<TextMeshProUGUI>((IEnumerable<TextMeshProUGUI>)(object)((Component)CS$<>8__locals0.card).GetComponentsInChildren<TextMeshProUGUI>()).ForEach((Action<TextMeshProUGUI>)delegate(TextMeshProUGUI text)
{
if (((TMP_Text)text).text == CS$<>8__locals0.card.cardName.ToUpper())
{
((TMP_Text)text).font = Main.Assets.LoadAsset<TMP_FontAsset>("Nightmare");
}
});
((TMP_Text)((Component)CS$<>8__locals0.card).GetComponentInChildren<CardVisuals>().nameText).text = ((TMP_Text)((Component)CS$<>8__locals0.card).GetComponentInChildren<CardVisuals>().nameText).text.Substring(2);
});
Debug.Log((object)"sanity check");
__result.transform.SetParent((Transform)null, true);
Object.Destroy((Object)(object)val);
__result.GetComponentInChildren<CardVisuals>().firstValueToSet = true;
return false;
}
return true;
}
private static T CopyComponent<T>(T original, GameObject destination) where T : Component
{
Type type = ((Object)original).GetType();
Component val = destination.AddComponent(type);
FieldInfo[] fields = type.GetFields();
foreach (FieldInfo val2 in fields)
{
val2.SetValue((object)val, val2.GetValue((object)original));
}
return (T)(object)((val is T) ? val : null);
}
}
public class NullCardInfo : CardInfo
{
public CardInfo NulledSorce;
public int PlayerId;
internal bool randomCard;
}
[Serializable]
public class CharacterStatModifiersnullData : Object
{
public int nulls;
public CharacterStatModifiersnullData()
{
nulls = 0;
}
public void Reset()
{
}
}
public static class CharacterStatModifiersExtension : Object
{
public static readonly ConditionalWeakTable<CharacterStatModifiers, CharacterStatModifiersnullData> data = new ConditionalWeakTable<CharacterStatModifiers, CharacterStatModifiersnullData>();
internal static CharacterStatModifiersnullData GetNullData(this CharacterStatModifiers characterstats)
{
return data.GetOrCreateValue(characterstats);
}
public static void AjustNulls(this CharacterStatModifiers characterstats, int value)
{
characterstats.GetNullData().nulls = Mathf.Clamp(characterstats.GetNullData().nulls + value, 0, 1000000);
}
public static int GetNulls(this CharacterStatModifiers characterstats)
{
return characterstats.GetNullData().nulls;
}
internal static void AddData(this CharacterStatModifiers characterstats, CharacterStatModifiersnullData value)
{
try
{
data.Add(characterstats, value);
}
catch (Exception)
{
}
}
}
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
internal class CharacterStatModifiersPatchResetStats : Object
{
private static void Prefix(CharacterStatModifiers __instance)
{
__instance.GetNullData().Reset();
}
}
[Serializable]
public class CardInfoAdditionalData : Object
{
public bool isAntiCard;
public bool nullAble;
public bool needsNull;
public CardInfoAdditionalData()
{
isAntiCard = false;
nullAble = true;
needsNull = false;
}
}
public static class CardInfoExtension : Object
{
public static readonly ConditionalWeakTable<CardInfo, CardInfoAdditionalData> data = new ConditionalWeakTable<CardInfo, CardInfoAdditionalData>();
internal static CardInfoAdditionalData GetNullData(this CardInfo cardInfo)
{
return data.GetOrCreateValue(cardInfo);
}
public static CardInfo SetAntiCard(this CardInfo cardInfo)
{
cardInfo.GetNullData().isAntiCard = true;
return cardInfo;
}
public static bool IsAntiCard(this CardInfo cardInfo)
{
return cardInfo.GetNullData().isAntiCard;
}
public static CardInfo MarkUnNullable(this CardInfo cardInfo)
{
cardInfo.GetNullData().nullAble = false;
return cardInfo;
}
public static bool IsNullable(this CardInfo cardInfo)
{
return cardInfo.GetNullData().nullAble;
}
public static CardInfo NeedsNull(this CardInfo cardInfo)
{
cardInfo.GetNullData().needsNull = true;
return cardInfo;
}
public static void AddData(this CardInfo cardInfo, CardInfoAdditionalData value)
{
try
{
data.Add(cardInfo, value);
}
catch (Exception)
{
}
}
}
public static class PlayerExtensions : Object
{
[CompilerGenerated]
private sealed class <>c__DisplayClass0_0 : Object
{
public Rarity rarity;
internal bool <GetNullCount>b__1(CardInfo c)
{
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
if (c is NullCardInfo nullCardInfo)
{
return nullCardInfo.NulledSorce.rarity == rarity;
}
return false;
}
}
[CompilerGenerated]
private sealed class <>c__DisplayClass1_0 : Object
{
public Rarity rarity;
internal bool <GetNullValue>b__2(CardInfo c)
{
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
if (c is NullCardInfo nullCardInfo)
{
return nullCardInfo.NulledSorce.rarity == rarity;
}
return false;
}
}
public static int GetNullCount(this Player player, Rarity rarity = -1)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: 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_0014: Invalid comparison between Unknown and I4
<>c__DisplayClass0_0 CS$<>8__locals0 = new <>c__DisplayClass0_0();
CS$<>8__locals0.rarity = rarity;
if ((int)CS$<>8__locals0.rarity == -1)
{
return Enumerable.Count<CardInfo>(Enumerable.Where<CardInfo>((IEnumerable<CardInfo>)(object)player.data.currentCards, (Func<CardInfo, bool>)((CardInfo c) => c is NullCardInfo)));
}
return Enumerable.Count<CardInfo>(Enumerable.Where<CardInfo>((IEnumerable<CardInfo>)(object)player.data.currentCards, (Func<CardInfo, bool>)((CardInfo c) => c is NullCardInfo nullCardInfo && nullCardInfo.NulledSorce.rarity == CS$<>8__locals0.rarity)));
}
public static int GetNullValue(this Player player, Rarity rarity = -1)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: 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_0014: Invalid comparison between Unknown and I4
<>c__DisplayClass1_0 CS$<>8__locals0 = new <>c__DisplayClass1_0();
CS$<>8__locals0.rarity = rarity;
if ((int)CS$<>8__locals0.rarity == -1)
{
return Enumerable.Sum(Enumerable.Select<CardInfo, int>(Enumerable.Where<CardInfo>((IEnumerable<CardInfo>)(object)player.data.currentCards, (Func<CardInfo, bool>)((CardInfo c) => c is NullCardInfo)), (Func<CardInfo, int>)((CardInfo c) => NullManager.instance.GetNullValue(c.rarity))));
}
return Enumerable.Sum(Enumerable.Select<CardInfo, int>(Enumerable.Where<CardInfo>((IEnumerable<CardInfo>)(object)player.data.currentCards, (Func<CardInfo, bool>)((CardInfo c) => c is NullCardInfo nullCardInfo && nullCardInfo.NulledSorce.rarity == CS$<>8__locals0.rarity)), (Func<CardInfo, int>)((CardInfo c) => NullManager.instance.GetNullValue(c.rarity))));
}
}
public class NullManager : MonoBehaviour
{
[CompilerGenerated]
private sealed class <>c__DisplayClass11_0 : Object
{
public Rarity rarity;
public Player player;
internal bool <GetRandomNullWithRarity>b__0(Card cardData)
{
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
if (cardData.enabled && cardData.cardInfo.rarity == rarity)
{
return Cards.instance.PlayerIsAllowedCard(player, cardData.cardInfo);
}
return false;
}
}
[CompilerGenerated]
private sealed class <>c__DisplayClass9_0 : Object
{
public List<CardInfoStat> list;
public Action<CardInfoStat> <>9__2;
public Action<CardInfoStat> <>9__3;
internal void <GetNullCardInfo>b__0(CardInfoStat[] stats)
{
Enumerable.ToList<CardInfoStat>((IEnumerable<CardInfoStat>)(object)stats).ForEach((Action<CardInfoStat>)delegate(CardInfoStat stat)
{
list.Add(stat);
});
}
internal void <GetNullCardInfo>b__2(CardInfoStat stat)
{
list.Add(stat);
}
internal void <GetNullCardInfo>b__1(CardInfoStat[] stats)
{
Enumerable.ToList<CardInfoStat>((IEnumerable<CardInfoStat>)(object)stats).ForEach((Action<CardInfoStat>)delegate(CardInfoStat stat)
{
list.Add(stat);
});
}
internal void <GetNullCardInfo>b__3(CardInfoStat stat)
{
list.Add(stat);
}
}
public static NullManager instance;
public GameObject AntiCardBase;
public GameObject NullCard;
private Dictionary<int, Dictionary<string, NullCardInfo>> nullDic = new Dictionary<int, Dictionary<string, NullCardInfo>>();
private Dictionary<int, Dictionary<string, CardInfoStat[]>> NullStats = new Dictionary<int, Dictionary<string, CardInfoStat[]>>();
private Dictionary<int, Dictionary<Rarity, Dictionary<string, CardInfoStat[]>>> NullRarityStats = new Dictionary<int, Dictionary<Rarity, Dictionary<string, CardInfoStat[]>>>();
internal List<Action<NullCardInfo, Player>> callbacks = new List<Action<NullCardInfo, Player>>();
internal void SetUp()
{
Enumerable.ToList<Rarity>(RarityUtils.Rarities.Values).ForEach((Action<Rarity>)([CompilerGenerated] (Rarity rarity) =>
{
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
NullCardInfo nullCardInfo = ((Component)this).gameObject.AddComponent<NullCardInfo>();
((CardInfo)nullCardInfo).rarity = rarity.value;
((Object)nullCardInfo).name = "[]";
((CardInfo)nullCardInfo).cardDestription = "Adds a random nulled card of this rarity to a player";
nullCardInfo.randomCard = true;
((CardInfo)nullCardInfo).categories = (CardCategory[])(object)new CardCategory[1] { CustomCardCategories.instance.CardCategory("nullCard") };
((CardInfo)nullCardInfo).blacklistedCategories = (CardCategory[])(object)new CardCategory[0];
Cards.instance.AddHiddenCard((CardInfo)(object)nullCardInfo);
}));
}
public int GetNullValue(Rarity rarity)
{
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (int)(1f / RarityUtils.GetRarityData(rarity).relativeRarity);
}
public NullCardInfo GetNullCardInfo(string card, int player)
{
//IL_0122: 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_0143: Unknown result type (might be due to invalid IL or missing references)
//IL_014a: 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_0093: Unknown result type (might be due to invalid IL or missing references)
//IL_0098: Unknown result type (might be due to invalid IL or missing references)
//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
//IL_016a: Unknown result type (might be due to invalid IL or missing references)
//IL_0185: Expected O, but got Unknown
//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
//IL_0204: Unknown result type (might be due to invalid IL or missing references)
<>c__DisplayClass9_0 CS$<>8__locals0 = new <>c__DisplayClass9_0();
if (!nullDic.ContainsKey(player))
{
nullDic[player] = new Dictionary<string, NullCardInfo>();
}
Dictionary<string, NullCardInfo> val = nullDic[player];
if (!val.ContainsKey(card))
{
NullCardInfo nullCardInfo = ((Component)this).gameObject.AddComponent<NullCardInfo>();
nullCardInfo.NulledSorce = ((DefaultPool)PhotonNetwork.PrefabPool).ResourceCache[card].GetComponent<CardInfo>();
nullCardInfo.PlayerId = player;
((CardInfo)nullCardInfo).cardName = String.Concat("[]", nullCardInfo.NulledSorce.cardName);
((CardInfo)nullCardInfo).rarity = nullCardInfo.NulledSorce.rarity;
((CardInfo)nullCardInfo).blacklistedCategories = (CardCategory[])(object)new CardCategory[0];
((CardInfo)(object)nullCardInfo).GetNullData().isAntiCard = false;
((CardInfo)nullCardInfo).sourceCard = (CardInfo)(object)nullCardInfo;
((CardInfo)nullCardInfo).categories = (CardCategory[])(object)new CardCategory[1] { CustomCardCategories.instance.CardCategory("nullCard") };
((CardInfo)nullCardInfo).cardBase = nullCardInfo.NulledSorce.cardBase;
((CardInfo)nullCardInfo).colorTheme = nullCardInfo.NulledSorce.colorTheme;
((CardInfo)nullCardInfo).cardArt = nullCardInfo.NulledSorce.cardArt;
val[card] = nullCardInfo;
}
int nullValue = GetNullValue(val[card].NulledSorce.rarity);
CS$<>8__locals0.list = new List<CardInfoStat>();
CS$<>8__locals0.list.Add(new CardInfoStat
{
positive = true,
stat = String.Concat("null", (nullValue == 1) ? "" : "s"),
amount = String.Format("- <b>{0}</b> ", (object)nullValue)
});
if (NullStats.ContainsKey(player))
{
Enumerable.ToList<CardInfoStat[]>((IEnumerable<CardInfoStat[]>)(object)NullStats[player].Values).ForEach((Action<CardInfoStat[]>)delegate(CardInfoStat[] stats)
{
Enumerable.ToList<CardInfoStat>((IEnumerable<CardInfoStat>)(object)stats).ForEach((Action<CardInfoStat>)delegate(CardInfoStat stat)
{
CS$<>8__locals0.list.Add(stat);
});
});
}
if (NullRarityStats.ContainsKey(player) && NullRarityStats[player].ContainsKey(val[card].NulledSorce.rarity))
{
Enumerable.ToList<CardInfoStat[]>((IEnumerable<CardInfoStat[]>)(object)NullRarityStats[player][val[card].NulledSorce.rarity].Values).ForEach((Action<CardInfoStat[]>)delegate(CardInfoStat[] stats)
{
Enumerable.ToList<CardInfoStat>((IEnumerable<CardInfoStat>)(object)stats).ForEach((Action<CardInfoStat>)delegate(CardInfoStat stat)
{
CS$<>8__locals0.list.Add(stat);
});
});
}
((CardInfo)val[card]).cardStats = CS$<>8__locals0.list.ToArray();
return val[card];
}
public NullCardInfo GetNullCardInfo(string card, Player player)
{
return GetNullCardInfo(card, player.playerID);
}
public NullCardInfo GetRandomNullWithRarity(Player player, Rarity rarity)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
<>c__DisplayClass11_0 CS$<>8__locals0 = new <>c__DisplayClass11_0();
CS$<>8__locals0.rarity = rarity;
CS$<>8__locals0.player = player;
List<string> val = Enumerable.ToList<string>(Enumerable.Select<Card, string>(Enumerable.Where<Card>((IEnumerable<Card>)(object)Enumerable.ToArray<Card>((IEnumerable<Card>)(object)CardManager.cards.Values), (Func<Card, bool>)((Card cardData) => cardData.enabled && cardData.cardInfo.rarity == CS$<>8__locals0.rarity && Cards.instance.PlayerIsAllowedCard(CS$<>8__locals0.player, cardData.cardInfo))), (Func<Card, string>)((Card card) => ((Object)card.cardInfo).name)));
if (val.Count == 0)
{
val.Add("__NULL__ ");
}
ExtensionMethods.Shuffle<string>((IList<string>)(object)val);
return GetNullCardInfo(val[0], CS$<>8__locals0.player);
}
public void RegesterOnAddCallback(Action<NullCardInfo, Player> action)
{
callbacks.Add(action);
}
public void SetAdditionalNullStats(Player player, string key, CardInfoStat[] stats)
{
if (!NullStats.ContainsKey(player.playerID))
{
NullStats[player.playerID] = new Dictionary<string, CardInfoStat[]>();
}
NullStats[player.playerID][key] = stats;
}
public void SetRarityNullStats(Player player, Rarity rarity, string key, CardInfoStat[] stats)
{
//IL_003a: 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_0053: Unknown result type (might be due to invalid IL or missing references)
if (!NullRarityStats.ContainsKey(player.playerID))
{
NullRarityStats[player.playerID] = new Dictionary<Rarity, Dictionary<string, CardInfoStat[]>>();
}
if (!NullRarityStats[player.playerID].ContainsKey(rarity))
{
NullRarityStats[player.playerID][rarity] = new Dictionary<string, CardInfoStat[]>();
}
NullRarityStats[player.playerID][rarity][key] = stats;
}
}
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
internal class SpawnNulls : Object
{
[CompilerGenerated]
private sealed class <>c__DisplayClass0_0 : Object
{
public GameObject old;
internal void <Postfix>b__0()
{
PhotonNetwork.Destroy(old);
}
}
[HarmonyPriority(0)]
private static void Postfix(List<GameObject> ___spawnedCards, int ___pickrID, ref GameObject __result)
{
//IL_0084: Unknown result type (might be due to invalid IL or missing references)
//IL_008e: Expected O, but got Unknown
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: 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)
Player playerWithID = GetPlayerWithID(___pickrID);
if ((Object)(object)playerWithID != (Object)null && !__result.GetComponent<CardInfo>().sourceCard.GetNullData().isAntiCard && __result.GetComponent<CardInfo>().sourceCard.GetNullData().nullAble && nullTotal(___spawnedCards) < playerWithID.data.stats.GetNullData().nulls)
{
<>c__DisplayClass0_0 CS$<>8__locals0 = new <>c__DisplayClass0_0();
CS$<>8__locals0.old = __result;
ExtensionMethods.ExecuteAfterFrames((MonoBehaviour)(object)Main.instance, 3, (Action)delegate
{
PhotonNetwork.Destroy(CS$<>8__locals0.old);
});
__result = PhotonNetwork.Instantiate(((Object)NullManager.instance.NullCard).name, __result.transform.position, __result.transform.rotation, (byte)0, (object[])(object)new Object[3]
{
(object)__result.transform.localScale,
(Object)((Object)__result.GetComponent<CardInfo>().sourceCard).name,
(object)___pickrID
});
((Object)__result).name = ((Object)CS$<>8__locals0.old).name;
}
}
private static int nullTotal(List<GameObject> spawnedCards)
{
//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_0037: Unknown result type (might be due to invalid IL or missing references)
if (spawnedCards == null)
{
return 0;
}
try
{
int num = 0;
Enumerator<GameObject> enumerator = spawnedCards.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
if (enumerator.Current.GetComponent<CardInfo>().sourceCard is NullCardInfo nullCardInfo)
{
num += NullManager.instance.GetNullValue(nullCardInfo.NulledSorce.rarity);
}
}
}
finally
{
((IDisposable)enumerator).Dispose();
}
return num;
}
catch (Object)
{
return 0;
}
}
internal static Player GetPlayerWithID(int playerID)
{
for (int i = 0; i < PlayerManager.instance.players.Count; i++)
{
if (PlayerManager.instance.players[i].playerID == playerID)
{
return PlayerManager.instance.players[i];
}
}
return null;
}
[HarmonyPatch(/*Could not decode attribute arguments.*/)]
[HarmonyPostfix]
private static void PatchAllowed(Player player, CardInfo card, ref bool __result)
{
if ((Object)(object)player == (Object)null || (Object)(object)card == (Object)null)
{
return;
}
if (__result && card.GetNullData().isAntiCard)
{
if (CardChoice.instance.IsPicking && player.playerID == CardChoice.instance.pickrID && nullTotal((List<GameObject>)ExtensionMethods.GetFieldValue((object)CardChoice.instance, "spawnedCards")) < player.data.stats.GetNullData().nulls)
{
__result = true;
return;
}
__result = false;
}
if (__result && card.GetNullData().needsNull)
{
if (player.data.stats.GetNullData().nulls > 0 || player.GetNullCount((Rarity)(-1)) > 0)
{
__result = true;
}
else
{
__result = false;
}
}
}
}
public class TabinfoInterface : Object
{
[CompilerGenerated]
private sealed class <>c__DisplayClass1_0 : Object
{
public GameObject cardObj;
public CardInfo card;
public Action<TextMeshProUGUI> <>9__3;
internal void <Prefix>b__0()
{
//IL_000b: 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)
cardObj.transform.localScale = Vector3.one * 25f;
}
internal void <Prefix>b__1()
{
if ((Object)(object)card != (Object)null)
{
Enumerable.ToList<Image>((IEnumerable<Image>)(object)((Component)card).GetComponentsInChildren<Image>()).ForEach((Action<Image>)delegate(Image image)
{
image.sprite = Main.Assets.LoadAsset<Sprite>("missing_texture");
image.type = (Type)2;
});
}
Enumerable.ToList<TextMeshProUGUI>((IEnumerable<TextMeshProUGUI>)(object)((Component)card).GetComponentsInChildren<TextMeshProUGUI>()).ForEach((Action<TextMeshProUGUI>)delegate(TextMeshProUGUI text)
{
if (((TMP_Text)text).text == card.cardName.ToUpper())
{
((TMP_Text)text).font = Main.Assets.LoadAsset<TMP_FontAsset>("Nightmare");
}
});
}
internal void <Prefix>b__3(TextMeshProUGUI text)
{
if (((TMP_Text)text).text == card.cardName.ToUpper())
{
((TMP_Text)text).font = Main.Assets.LoadAsset<TMP_FontAsset>("Nightmare");
}
}
}
public static void Setup()
{
//IL_0081: Unknown result type (might be due to invalid IL or missing references)
//IL_008f: Expected O, but got Unknown
TabInfoManager.RegisterStat(TabInfoManager.RegisterCategory("null", 7), "Nulls", (Func<Player, bool>)((Player p) => p.data.stats.GetNullData().nulls > 0), (Func<Player, string>)((Player p) => String.Format("{0}", (object)p.data.stats.GetNullData().nulls)));
Main.harmony.Patch((MethodBase)(object)typeof(PlayerCardButton).GetMethod("OnPointerEnter"), new HarmonyMethod(typeof(TabinfoInterface).GetMethod("Prefix")), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
}
public static bool Prefix(PlayerCardButton __instance, PointerEventData eventData)
{
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Expected O, but got Unknown
//IL_0054: Unknown result type (might be due to invalid IL or missing references)
//IL_0075: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: Expected O, but got Unknown
//IL_0096: Unknown result type (might be due to invalid IL or missing references)
//IL_0114: 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_0192: Unknown result type (might be due to invalid IL or missing references)
//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
//IL_01af: Expected O, but got Unknown
//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
//IL_01c2: Expected O, but got Unknown
if (__instance.card is NullCardInfo nullCardInfo)
{
<>c__DisplayClass1_0 CS$<>8__locals0 = new <>c__DisplayClass1_0();
GameObject val = (GameObject)ExtensionMethods.GetFieldValue((object)__instance, "displayedCard");
if ((Object)(object)val != (Object)null)
{
Object.Destroy((Object)(object)val);
}
val = Object.Instantiate<GameObject>((GameObject)typeof(TabInfoManager).GetField("cardHolderTemplate", (BindingFlags)40).GetValue((object)null), ((GameObject)typeof(TabInfoManager).GetField("canvas", (BindingFlags)40).GetValue((object)null)).transform);
val.transform.position = ((Component)__instance).gameObject.transform.position;
val.SetActive(false);
CS$<>8__locals0.cardObj = Object.Instantiate<GameObject>(((Component)nullCardInfo.NulledSorce).gameObject, val.transform);
CS$<>8__locals0.card = CS$<>8__locals0.cardObj.GetComponent<CardInfo>();
Object.DestroyImmediate((Object)(object)CS$<>8__locals0.card);
CS$<>8__locals0.card = CopyComponent<CardInfo>((CardInfo)(object)nullCardInfo, CS$<>8__locals0.cardObj);
val.SetActive(true);
CS$<>8__locals0.cardObj.GetComponentInChildren<CardVisuals>().firstValueToSet = true;
CS$<>8__locals0.cardObj.transform.localPosition = Vector3.zero;
Collider2D[] componentsInChildren = val.GetComponentsInChildren<Collider2D>();
for (int i = 0; i < componentsInChildren.Length; i++)
{
((Behaviour)componentsInChildren[i]).enabled = false;
}
CS$<>8__locals0.cardObj.GetComponentInChildren<Canvas>().sortingLayerName = "MostFront";
((Behaviour)CS$<>8__locals0.cardObj.GetComponentInChildren<GraphicRaycaster>()).enabled = false;
((Behaviour)CS$<>8__locals0.cardObj.GetComponentInChildren<SetScaleToZero>()).enabled = false;
((Component)CS$<>8__locals0.cardObj.GetComponentInChildren<SetScaleToZero>()).transform.localScale = Vector3.one * 1.15f;
ExtensionMethods.ExecuteAfterFrames((MonoBehaviour)(object)__instance, 1, (Action)delegate
{
//IL_000b: 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)
CS$<>8__locals0.cardObj.transform.localScale = Vector3.one * 25f;
});
ExtensionMethods.ExecuteAfterFrames((MonoBehaviour)(object)__instance, 2, (Action)delegate
{
if ((Object)(object)CS$<>8__locals0.card != (Object)null)
{
Enumerable.ToList<Image>((IEnumerable<Image>)(object)((Component)CS$<>8__locals0.card).GetComponentsInChildren<Image>()).ForEach((Action<Image>)delegate(Image image)
{
image.sprite = Main.Assets.LoadAsset<Sprite>("missing_texture");
image.type = (Type)2;
});
}
Enumerable.ToList<TextMeshProUGUI>((IEnumerable<TextMeshProUGUI>)(object)((Component)CS$<>8__locals0.card).GetComponentsInChildren<TextMeshProUGUI>()).ForEach((Action<TextMeshProUGUI>)delegate(TextMeshProUGUI text)
{
if (((TMP_Text)text).text == CS$<>8__locals0.card.cardName.ToUpper())
{
((TMP_Text)text).font = Main.Assets.LoadAsset<TMP_FontAsset>("Nightmare");
}
});
});
ExtensionMethods.SetFieldValue((object)__instance, "displayedCard", (object)val);
return false;
}
return true;
}
private static GameObject Instantiate(GameObject cardHolderTemplate, Transform transform)
{
//IL_0000: Unknown result type (might be due to invalid IL or missing references)
throw new NotImplementedException();
}
private static T CopyComponent<T>(T original, GameObject destination) where T : Component
{
Type type = ((Object)original).GetType();
Component val = destination.AddComponent(type);
FieldInfo[] fields = type.GetFields();
foreach (FieldInfo val2 in fields)
{
val2.SetValue((object)val, val2.GetValue((object)original));
}
return (T)(object)((val is T) ? val : null);
}
}
}