Decompiled source of ChaosPoppycarsCardsCharacters v1.0.1

ChaosPoppycarsCardsCharacters.dll

Decompiled 2 months ago
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 System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using CPCCharacters;
using CPCCharacters.MonoBehaviours;
using CPCCharacters.Shaders;
using CPCComplex.MonoBehaviours;
using CPCCore;
using CPCCore.Extensions;
using CPCCore.Utilities;
using CardChoiceSpawnUniqueCardPatch.CustomCategories;
using CardThemeLib;
using ClassesManagerReborn;
using ClassesManagerReborn.Util;
using HarmonyLib;
using Jotunn.Utils;
using Microsoft.CodeAnalysis;
using ModdingUtils.Extensions;
using ModdingUtils.MonoBehaviours;
using ModdingUtils.Utils;
using Photon.Pun;
using Photon.Realtime;
using RarityLib.Utils;
using TMPro;
using UnboundLib;
using UnboundLib.Cards;
using UnboundLib.GameModes;
using UnboundLib.Utils;
using UnboundLib.Utils.UI;
using UnityEngine;
using UnityEngine.Events;
using WillsWackyManagers.Utils;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETFramework,Version=v4.7.1", FrameworkDisplayName = ".NET Framework 4.7.1")]
[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;
		}
	}
}
public class ShroomCardObjectCode : MonoBehaviour
{
	[Header("Settings")]
	public float damage = 25f;

	public bool lethal = true;

	public Player owner;

	private void Start()
	{
	}

	public void Go()
	{
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0042: Unknown result type (might be due to invalid IL or missing references)
		//IL_005a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0065: Unknown result type (might be due to invalid IL or missing references)
		//IL_0085: Unknown result type (might be due to invalid IL or missing references)
		//IL_0364: Unknown result type (might be due to invalid IL or missing references)
		//IL_0369: Unknown result type (might be due to invalid IL or missing references)
		//IL_0386: Unknown result type (might be due to invalid IL or missing references)
		//IL_0396: Unknown result type (might be due to invalid IL or missing references)
		//IL_03b6: Unknown result type (might be due to invalid IL or missing references)
		//IL_023d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0242: Unknown result type (might be due to invalid IL or missing references)
		//IL_0247: Unknown result type (might be due to invalid IL or missing references)
		//IL_024c: Unknown result type (might be due to invalid IL or missing references)
		owner = ((Component)this).GetComponentInParent<SpawnedAttack>().spawner;
		foreach (Player otherPlayer in PlayerStatus.GetOtherPlayers(owner))
		{
			if (!PlayerManager.instance.CanSeePlayer(Vector2.op_Implicit(((Component)this).transform.position), otherPlayer).canSee || !(Vector3.Distance(((Component)this).transform.position, ((Component)otherPlayer).transform.position) < ((Component)this).GetComponentInParent<PlayerInRangeTrigger>().range * ((Component)this).transform.root.localScale.x) || otherPlayer.data.dead)
			{
				continue;
			}
			if ((Object)(object)otherPlayer != (Object)null && (Object)(object)owner != (Object)null && otherPlayer.teamID == owner.teamID)
			{
				otherPlayer.data.healthHandler.Heal(damage / 2f + (float)CharacterStatModifiersExtension.GetAdditionalData(owner.data.stats).shroomsAmt * 0.2f * damage);
				if (PhotonNetwork.OfflineMode || otherPlayer.data.view.IsMine)
				{
					PixelateEffect orAddComponent = ExtensionMethods.GetOrAddComponent<PixelateEffect>(((Component)Camera.main).gameObject, false);
					orAddComponent.player = otherPlayer;
					if ((otherPlayer.data.view.IsMine || PhotonNetwork.OfflineMode) && ChaosPoppycarsCardsCharacters.ShroomAccess.Value)
					{
						orAddComponent.Material = ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<Material>("ShaderTest 1");
					}
					else if (otherPlayer.data.view.IsMine || PhotonNetwork.OfflineMode)
					{
						orAddComponent.Material = ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<Material>("ShaderTest");
					}
					Object.Destroy((Object)(object)orAddComponent, 5f);
				}
			}
			else
			{
				if (!((Object)(object)otherPlayer != (Object)null))
				{
					continue;
				}
				((Damagable)otherPlayer.data.healthHandler).TakeDamage((damage + (float)CharacterStatModifiersExtension.GetAdditionalData(owner.data.stats).shroomsAmt * 0.2f * damage) * Vector2.up, Vector2.down, Color.magenta, (GameObject)null, owner, lethal, true);
				if (PhotonNetwork.OfflineMode || otherPlayer.data.view.IsMine)
				{
					PixelateEffect orAddComponent2 = ExtensionMethods.GetOrAddComponent<PixelateEffect>(((Component)Camera.main).gameObject, false);
					orAddComponent2.player = otherPlayer;
					if ((otherPlayer.data.view.IsMine || PhotonNetwork.OfflineMode) && ChaosPoppycarsCardsCharacters.ShroomAccess.Value)
					{
						orAddComponent2.Material = ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<Material>("ShaderTest 1");
					}
					else if (otherPlayer.data.view.IsMine || PhotonNetwork.OfflineMode)
					{
						orAddComponent2.Material = ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<Material>("ShaderTest");
					}
					Object.Destroy((Object)(object)orAddComponent2, 5f);
				}
			}
		}
		if (!((Object)(object)owner != (Object)null) || !PlayerManager.instance.CanSeePlayer(Vector2.op_Implicit(((Component)this).transform.position), owner).canSee || !(Vector3.Distance(((Component)this).transform.position, ((Component)owner).transform.position) < ((Component)this).GetComponentInParent<PlayerInRangeTrigger>().range * ((Component)this).transform.root.localScale.x) || owner.data.dead)
		{
			return;
		}
		owner.data.healthHandler.Heal(damage / 2f + (float)CharacterStatModifiersExtension.GetAdditionalData(owner.data.stats).shroomsAmt * 0.2f * damage);
		if (PhotonNetwork.OfflineMode || owner.data.view.IsMine)
		{
			PixelateEffect orAddComponent3 = ExtensionMethods.GetOrAddComponent<PixelateEffect>(((Component)Camera.main).gameObject, false);
			orAddComponent3.player = owner;
			if ((owner.data.view.IsMine || PhotonNetwork.OfflineMode) && ChaosPoppycarsCardsCharacters.ShroomAccess.Value)
			{
				orAddComponent3.Material = ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<Material>("ShaderTest 1");
			}
			else if (owner.data.view.IsMine || PhotonNetwork.OfflineMode)
			{
				orAddComponent3.Material = ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<Material>("ShaderTest");
			}
			Object.Destroy((Object)(object)orAddComponent3, 5f);
		}
	}
}
public class VampnackMono : MonoBehaviour
{
	[Header("Settings")]
	public bool lethal = true;

	public Player owner;

	private void Start()
	{
		owner = ((Component)this).gameObject.GetComponent<SpawnedAttack>().spawner;
		Object.Destroy((Object)(object)((Component)this).gameObject, 1.5f);
	}

	private void Update()
	{
		//IL_005c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0061: Unknown result type (might be due to invalid IL or missing references)
		//IL_0071: Unknown result type (might be due to invalid IL or missing references)
		//IL_0126: Unknown result type (might be due to invalid IL or missing references)
		//IL_0136: Unknown result type (might be due to invalid IL or missing references)
		//IL_013b: Unknown result type (might be due to invalid IL or missing references)
		owner = ((Component)this).gameObject.GetComponent<SpawnedAttack>().spawner;
		if (!((Object)(object)owner != (Object)null) || (!owner.data.view.IsMine && !PhotonNetwork.OfflineMode))
		{
			return;
		}
		Collider2D[] array = null;
		array = Physics2D.OverlapCircleAll(Vector2.op_Implicit(((Component)owner).transform.position), ((Component)owner).transform.localScale.z + 0.2f, LayerMask.GetMask(new string[1] { "Player" }));
		if (array == null)
		{
			return;
		}
		Collider2D[] array2 = array;
		foreach (Collider2D val in array2)
		{
			if ((Object)(object)((Component)val).gameObject.GetComponent<Player>() != (Object)null && ((Component)val).gameObject.GetComponent<Player>().playerID != owner.playerID)
			{
				Player component = ((Component)val).gameObject.GetComponent<Player>();
				((Damagable)((Component)component).GetComponent<HealthHandler>()).CallTakeDamage(new Vector2(0f, component.data.maxHealth * 0.15f), Vector2.op_Implicit(((Component)owner).transform.position), (GameObject)null, (Player)null, true);
				PhotonView component2 = ((Component)owner).GetComponent<PhotonView>();
				ExtensionMethods.GetOrAddComponent<VampnackRPCMono>(((Component)owner).gameObject, false);
				component2.RPC("RPCASyncHeal", (RpcTarget)0, new object[2]
				{
					owner.playerID,
					component.data.maxHealth * 0.15f
				});
				Object.Destroy((Object)(object)((Component)this).gameObject);
			}
		}
	}
}
namespace CPCComplex.MonoBehaviours
{
	public class VampnackRPCMono : MonoBehaviour
	{
		[PunRPC]
		public void RPCASyncHeal(int playerID, float heal)
		{
			Player playerWithID = PlayerManager.instance.GetPlayerWithID(playerID);
			((Component)playerWithID).GetComponent<HealthHandler>().Heal(heal);
		}
	}
}
namespace CPCCharacters
{
	[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.*/)]
	[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.Poppycars.CPCCharacters.Id", "ChaosPoppycarsCardsCharacters", "1.0.1")]
	[BepInProcess("Rounds.exe")]
	public class ChaosPoppycarsCardsCharacters : BaseUnityPlugin
	{
		public static class CPCCardCategories
		{
			public static CardCategory NeedsWhynackAdrenaline = CustomCardCategories.instance.CardCategory("NeedsWhynackAdrenaline");

			public static CardCategory NeedsWhynackArguing = CustomCardCategories.instance.CardCategory("NeedsWhynackArguing");
		}

		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static UnityAction <>9__12_0;

			public static UnityAction<bool> <>9__13_0;

			internal void <Start>b__12_0()
			{
			}

			internal void <NewGUI>b__13_0(bool value)
			{
				ShroomAccess.Value = value;
			}
		}

		[CompilerGenerated]
		private sealed class <GameStart>d__15 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public IGameModeHandler gm;

			public ChaosPoppycarsCardsCharacters <>4__this;

			private List<Player>.Enumerator <>s__1;

			private Player <player>5__2;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <GameStart>d__15(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<player>5__2 = null;
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				if (<>1__state != 0)
				{
					return false;
				}
				<>1__state = -1;
				<>s__1 = PlayerManager.instance.players.GetEnumerator();
				try
				{
					while (<>s__1.MoveNext())
					{
						<player>5__2 = <>s__1.Current;
						CharacterStatModifiersExtension.GetAdditionalData(<player>5__2.data.stats).blacklistedCategories.Add(CPCCardCategories.NeedsWhynackAdrenaline);
						CharacterStatModifiersExtension.GetAdditionalData(<player>5__2.data.stats).blacklistedCategories.Add(CPCCardCategories.NeedsWhynackArguing);
						<player>5__2 = null;
					}
				}
				finally
				{
					((IDisposable)<>s__1).Dispose();
				}
				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();
			}
		}

		private const string ModId = "com.Poppycars.CPCCharacters.Id";

		private const string ModName = "ChaosPoppycarsCardsCharacters";

		public const string Version = "1.0.1";

		public const string ModInitials = "CPCCharacters";

		internal static List<BaseUnityPlugin> plugins;

		public static ConfigEntry<bool> ShroomAccess;

		public static AssetBundle Bundle;

		public static ChaosPoppycarsCardsCharacters Instance { get; private set; }

		private void Awake()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Expected O, but got Unknown
			Bundle = AssetUtils.LoadAssetBundleFromResources("cpccharacters", typeof(ChaosPoppycarsCardsCharacters).Assembly);
			Harmony val = new Harmony("com.Poppycars.CPCCharacters.Id");
			val.PatchAll();
			GameObject val2 = Bundle.LoadAsset<GameObject>("ModCards");
			CardHolder component = val2.GetComponent<CardHolder>();
			component.RegisterCards();
			ShroomAccess = ((BaseUnityPlugin)this).Config.Bind<bool>("com.Poppycars.CPCCharacters.Id", "Shroom_Access", false, "Make Shrooms less throw up inducing");
		}

		private void Start()
		{
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Expected O, but got Unknown
			plugins = (List<BaseUnityPlugin>)typeof(Chainloader).GetField("_plugins", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null);
			Instance = this;
			ChaosPoppycarsCardsCore.RegisterCards(typeof(ChaosPoppycarsCardsCharacters).Assembly, Bundle);
			object obj = <>c.<>9__12_0;
			if (obj == null)
			{
				UnityAction val = delegate
				{
				};
				<>c.<>9__12_0 = val;
				obj = (object)val;
			}
			Unbound.RegisterMenu("ChaosPoppycarsCardsCharacters", (UnityAction)obj, (Action<GameObject>)NewGUI, (GameObject)null, false);
			GameModeManager.AddHook("GameStart", (Func<IGameModeHandler, IEnumerator>)GameStart);
			ExtensionMethods.ExecuteAfterFrames((MonoBehaviour)(object)this, 60, (Action)delegate
			{
				CardManager.cards.Values.ToList().ForEach(delegate(Card card)
				{
					AddMod(card);
				});
			});
		}

		private void NewGUI(GameObject menu)
		{
			TextMeshProUGUI val = default(TextMeshProUGUI);
			MenuHandler.CreateText("ChaosPoppycarsCardsCharacters", menu, ref val, 60, false, (Color?)null, (TMP_FontAsset)null, (Material)null, (TextAlignmentOptions?)null);
			MenuHandler.CreateToggle(ShroomAccess.Value, "Make shrooms use the accessibility shader", menu, (UnityAction<bool>)delegate(bool value)
			{
				ShroomAccess.Value = value;
			}, 60, true, (Color?)null, (TMP_FontAsset)null, (Material)null, (TextAlignmentOptions?)null);
			MenuHandler.CreateText("", menu, ref val, 60, true, (Color?)null, (TMP_FontAsset)null, (Material)null, (TextAlignmentOptions?)null);
		}

		private void AddMod(Card card)
		{
			string text = "__Rarity-" + ((object)(Rarity)(ref card.cardInfo.rarity)).ToString();
			CardCategory val = CustomCardCategories.instance.CardCategory(text);
			CardCategory[] categories = CollectionExtensions.AddToArray<CardCategory>(card.cardInfo.categories, val);
			card.cardInfo.categories = categories;
		}

		[IteratorStateMachine(typeof(<GameStart>d__15))]
		private IEnumerator GameStart(IGameModeHandler gm)
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <GameStart>d__15(0)
			{
				<>4__this = this,
				gm = gm
			};
		}
	}
	public class TopHat : MonoBehaviour
	{
	}
}
namespace CPCCharacters.Shaders
{
	[ExecuteInEditMode]
	[RequireComponent(typeof(Camera))]
	public class PixelateEffect : MonoBehaviour
	{
		public Material Material;

		public Player player;

		private void OnRenderImage(RenderTexture src, RenderTexture dest)
		{
			if ((Object)(object)Material == (Object)null)
			{
				Graphics.Blit((Texture)(object)src, dest);
				return;
			}
			Graphics.Blit((Texture)(object)src, dest, Material, 0);
			if ((Object)(object)player != (Object)null && player.data.dead)
			{
				Object.Destroy((Object)(object)this);
			}
		}
	}
}
namespace CPCCharacters.Patches
{
	[Serializable]
	[HarmonyPatch(typeof(Block), "TryBlock")]
	internal class TryBlockPatch
	{
		private static void Prefix(Block __instance)
		{
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
			CharacterData data = __instance.data;
			if (CharacterStatModifiersExtension.GetAdditionalData(data.stats).whynackBlockForce)
			{
				if (data.block.forceToAdd != 0f)
				{
					((Component)data.player).GetComponent<HealthHandler>().TakeForce(Vector2.op_Implicit(((Component)data.hand).transform.forward * data.block.forceToAdd * data.playerVel.mass * 10f), (ForceMode2D)1, false, false, 0f);
				}
				if (data.block.forceToAddUp != 0f)
				{
					((Component)data.player).GetComponent<HealthHandler>().TakeForce(Vector2.op_Implicit(Vector3.up * data.block.forceToAddUp * data.playerVel.mass * 10f), (ForceMode2D)1, false, false, 0f);
				}
			}
		}
	}
	[Serializable]
	[HarmonyPatch(typeof(Block), "Update")]
	internal class BlockPatch
	{
		private static void Postfix(Block __instance)
		{
			CharacterData data = __instance.data;
			if (!(__instance.counter < __instance.Cooldown()) && (Object)(object)data != (Object)null && (Object)(object)data.player != (Object)null && CharacterStatModifiersExtension.GetAdditionalData(data.stats).whynackAd && !CharacterStatModifiersExtension.GetAdditionalData(data.stats).whynackHarmony && PlayerStatus.PlayerAliveAndSimulated(data.player))
			{
				__instance.TryBlock();
			}
		}
	}
	[Serializable]
	[HarmonyPatch(typeof(PlayerCollision), "FixedUpdate")]
	internal class PlayerCollisionPatch
	{
		private static void Prefix(PlayerCollision __instance)
		{
			//IL_001e: 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_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: 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_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: 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_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01be: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
			CharacterData data = __instance.data;
			float num = __instance.cirCol.radius * ((Component)data).gameObject.transform.localScale.x;
			float num2 = __instance.cirCol.radius * ((Component)data).gameObject.transform.localScale.x * 0.75f;
			RaycastHit2D[] array = Physics2D.CircleCastAll(__instance.lastPos, num, Vector2.op_Implicit(((Component)data).gameObject.transform.position) - __instance.lastPos, Vector2.Distance(Vector2.op_Implicit(((Component)data).gameObject.transform.position), __instance.lastPos), LayerMask.op_Implicit(__instance.mask));
			for (int i = 0; i < array.Length; i++)
			{
				if (!((Object)(object)((RaycastHit2D)(ref array[i])).transform.root == (Object)(object)((Component)data).gameObject.transform.root))
				{
					NetworkPhysicsObject component = ((Component)((RaycastHit2D)(ref array[i])).transform).GetComponent<NetworkPhysicsObject>();
					Player componentInParent = ((Component)((RaycastHit2D)(ref array[i])).transform).GetComponentInParent<Player>();
					if ((Object)(object)componentInParent != (Object)null && ExtensionMethods.GetOrAddComponent<DamageCD>(((Component)((Component)data).transform).gameObject, false).duration <= 0f && CharacterStatModifiersExtension.GetAdditionalData(data.stats).whynackUpper && ((Component)data.player).GetComponent<PlayerVelocity>().velocity.y > 75f && (PhotonNetwork.IsMasterClient || PhotonNetwork.OfflineMode))
					{
						((Component)componentInParent).GetComponent<HealthHandler>().DoDamage(new Vector2(((Component)data.player).GetComponent<PlayerVelocity>().velocity.y * 0.85f, 0f), Vector2.op_Implicit(((Component)data).transform.position), Color.red, (GameObject)null, data.player, true, true, false);
						ExtensionMethods.GetOrAddComponent<DamageCD>(((Component)((Component)data).transform).gameObject, false).duration = 0.25f;
					}
				}
			}
		}
	}
	[Serializable]
	[HarmonyPatch(typeof(HealthHandler), "Heal")]
	internal class RegenerationPatch
	{
		private static void Prefix(HealthHandler __instance, ref float healAmount)
		{
			//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)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			CharacterData data = __instance.data;
			if ((data.input.direction == Vector3.zero || data.input.direction == Vector3.down) && PlayerStatus.PlayerAliveAndSimulated(data.player) && CharacterStatModifiersExtension.GetAdditionalData(data.stats).whynackMeditating)
			{
				healAmount *= 1.5f;
			}
		}
	}
	[Serializable]
	[HarmonyPatch(typeof(WeaponHandler), "Update")]
	internal class WeaponHandlerPatch
	{
		private static void Prefix(WeaponHandler __instance)
		{
			CharacterData data = __instance.data;
			if (PlayerStatus.PlayerAliveAndSimulated(data.player) && CharacterStatModifiersExtension.GetAdditionalData(data.stats).whynackAd && !CharacterStatModifiersExtension.GetAdditionalData(data.stats).whynackHarmony)
			{
				__instance.input.shootWasPressed = true;
				__instance.input.shootIsPressed = true;
			}
		}
	}
}
namespace CPCCharacters.MonoBehaviours
{
	[RequireComponent(typeof(PhotonView))]
	public class ChainLightning : MonoBehaviour, IPunInstantiateMagicCallback
	{
		[SerializeField]
		private UnityEvent onHit;

		[SerializeField]
		private float hitRange;

		[SerializeField]
		private float damage;

		private PhotonView view;

		private HashSet<Player> hitPlayers = new HashSet<Player>();

		private Player target;

		private Player owner;

		private bool active = true;

		private void Awake()
		{
			view = ((Component)this).GetComponent<PhotonView>();
		}

		private void FixedUpdate()
		{
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			if (view.IsMine && active && InRange())
			{
				hitPlayers.Add(target);
				TrySplit();
				view.RPC("RPCA_DealDamage", (RpcTarget)0, new object[3]
				{
					GetScaledDamage(),
					((Component)this).transform.position,
					owner.playerID
				});
				ExtensionMethods.ExecuteAfterFrames((MonoBehaviour)(object)Unbound.Instance, 1, (Action)delegate
				{
					PhotonNetwork.Destroy(((Component)this).gameObject);
				});
				active = false;
			}
		}

		private bool InRange()
		{
			//IL_0007: 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)
			return Vector3.Distance(((Component)this).transform.position, ((Component)target).transform.position) <= hitRange;
		}

		private float GetScaledDamage()
		{
			return damage * (Mathf.Abs(owner.data.block.forceToAdd) + 1f) * (Mathf.Abs(owner.data.block.forceToAddUp) + 1f);
		}

		[PunRPC]
		private void RPCA_DealDamage(float damage, Vector3 position, int ownerId)
		{
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			Player playerWithID = PlayerManager.instance.GetPlayerWithID(ownerId);
			((Damagable)target.data.healthHandler).TakeDamage(Vector2.up * damage, Vector2.op_Implicit(position), (GameObject)null, playerWithID, true, false);
			UnityEvent obj = onHit;
			if (obj != null)
			{
				obj.Invoke();
			}
		}

		private void TrySplit()
		{
			IEnumerable<Player> enumerable = from p in PlayerManager.instance.players.Except(hitPlayers)
				where PlayerStatus.PlayerAliveAndSimulated(p) && PlayerManager.instance.CanSeePlayer(Vector2.op_Implicit(((Component)this).transform.position), p).canSee
				select p;
			foreach (Player item in enumerable)
			{
				item.data.stats.health = 10000f;
			}
		}

		public void OnPhotonInstantiate(PhotonMessageInfo info)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			object[] instantiationData = info.photonView.InstantiationData;
			if (instantiationData.Length == 3)
			{
				int num = (int)instantiationData[0];
				int[] ignorePlayerIds = (int[])instantiationData[1];
				int num2 = (int)instantiationData[2];
				owner = PlayerManager.instance.GetPlayerWithID(num);
				IEnumerable<Player> other = PlayerManager.instance.players.Where((Player p) => Extensions.Contains(ignorePlayerIds, p.playerID));
				hitPlayers.UnionWith(other);
				target = PlayerManager.instance.GetPlayerWithID(num2);
			}
		}
	}
	public class DamageCD : MonoBehaviour
	{
		public float duration = 0f;

		private Player player;

		public void Awake()
		{
			player = ((Component)this).GetComponentInParent<Player>();
		}

		public void Update()
		{
			if (!(duration <= 0f))
			{
				duration -= TimeHandler.deltaTime;
			}
		}
	}
	internal class FlipGravEffect : ReversibleEffect
	{
		private float duration = 0f;

		public override void OnOnDestroy()
		{
			Block block = base.data.block;
			block.BlockAction = (Action<BlockTriggerType>)Delegate.Remove(block.BlockAction, new Action<BlockTriggerType>(OnBlock));
		}

		private void OnBlock(BlockTriggerType trigger)
		{
			if (duration <= 0f)
			{
				((ReversibleEffect)this).ApplyModifiers();
			}
			duration += 2f;
		}

		public override void OnStart()
		{
			base.gravityModifier.gravityForce_mult = -1f;
			base.characterStatModifiersModifier.sizeMultiplier_mult = -1f;
			base.characterStatModifiersModifier.jump_mult = -1f;
			Block block = base.data.block;
			block.BlockAction = (Action<BlockTriggerType>)Delegate.Combine(block.BlockAction, new Action<BlockTriggerType>(OnBlock));
			((ReversibleEffect)this).SetLivesToEffect(int.MaxValue);
		}

		public override void OnUpdate()
		{
			if (!(duration <= 0f))
			{
				duration -= TimeHandler.deltaTime;
			}
			else
			{
				((ReversibleEffect)this).ClearModifiers(true);
			}
		}

		public override void OnOnDisable()
		{
			duration = 0f;
			((ReversibleEffect)this).ClearModifiers(true);
		}
	}
	internal class WhynackBlockMono : MonoBehaviour
	{
		internal Player player;

		internal CharacterData data;

		private Vector2 lastPosition;

		private float timePass = 0f;

		private float secondCount = 0f;

		private void Start()
		{
			data = ((Component)this).GetComponentInParent<CharacterData>();
			HealthHandler healthHandler = data.healthHandler;
			healthHandler.reviveAction = (Action)Delegate.Combine(healthHandler.reviveAction, new Action(ResetStuff));
		}

		private void OnDestroy()
		{
			HealthHandler healthHandler = data.healthHandler;
			healthHandler.reviveAction = (Action)Delegate.Combine(healthHandler.reviveAction, new Action(ResetStuff));
		}

		public void Awake()
		{
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			player = ((Component)this).gameObject.GetComponent<Player>();
			data = ((Component)player).GetComponent<CharacterData>();
			lastPosition = data.playerVel.position;
		}

		private void Update()
		{
			//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)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: 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)
			if (data.input.direction == Vector3.zero || data.input.direction == Vector3.down || (data.input.direction == Vector3.up && PlayerStatus.PlayerAliveAndSimulated(player)))
			{
				timePass += TimeHandler.deltaTime;
				if (timePass > 0.1f)
				{
					Block block = data.block;
					block.counter += 0.075f;
					timePass = 0f;
				}
			}
			else
			{
				timePass = 0f;
			}
			if (data.health <= 0f)
			{
				timePass = 0f;
			}
		}

		private void ResetStuff()
		{
			timePass = 0f;
		}

		public void Destroy()
		{
			Object.Destroy((Object)(object)this);
		}
	}
}
namespace CPCCharacters.Cards
{
	internal class FWPhantom : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			gun.reflects = 3;
			gun.spread = 0.2f;
			block.cdAdd = 0.25f;
			gun.reloadTimeAdd = 0.25f;
			gun.numberOfProjectiles = 1;
			CPCDebug.Log((object)("[CPCCharacters][Card] " + ((CustomCard)this).GetTitle() + " has been setup."));
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "FWPhantom";
		}

		protected override string GetDescription()
		{
			return "<#A020F0><i><b>What goes here?</b></i></color> (not from Cards+)";
		}

		protected override GameObject GetCardArt()
		{
			return ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<GameObject>("C_Phantom");
		}

		protected override Rarity GetRarity()
		{
			//IL_0002: 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)
			return (Rarity)1;
		}

		protected override CardInfoStat[] GetStats()
		{
			//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_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: 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_0078: 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_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Expected O, but got Unknown
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: 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_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: 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_00b7: Expected O, but got Unknown
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[5]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Bounces",
					amount = "+3",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Projectiles",
					amount = "+1",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Reload Time",
					amount = "+0.25s",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Block Cooldown",
					amount = "+0.25s",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Spread",
					amount = "+20%",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			//IL_0002: 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)
			return (CardThemeColorType)4;
		}

		public override string GetModName()
		{
			return "CPC";
		}
	}
	internal class Peptide : CustomCard
	{
		public static CardCategory[] noLotteryCategories = (CardCategory[])(object)new CardCategory[2]
		{
			CustomCardCategories.instance.CardCategory("CardManipulation"),
			CustomCardCategories.instance.CardCategory("NoRandom")
		};

		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			CardInfoExtension.GetAdditionalData(cardInfo).canBeReassigned = false;
			cardInfo.categories = (CardCategory[])(object)new CardCategory[3]
			{
				CustomCardCategories.instance.CardCategory("CardManipulation"),
				CurseManager.instance.curseSpawnerCategory,
				RerollManager.instance.NoFlip
			};
			CPCDebug.Log((object)("[CPCCharacters][Card] " + ((CustomCard)this).GetTitle() + " has been setup."));
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			ExtensionMethods.ExecuteAfterFrames((MonoBehaviour)(object)ChaosPoppycarsCardsCharacters.Instance, 10, (Action)delegate
			{
				CardInfo randomCardWithCondition = Cards.instance.GetRandomCardWithCondition(player, gun, gunAmmo, data, health, gravity, block, characterStats, (Func<CardInfo, Player, Gun, GunAmmo, CharacterData, HealthHandler, Gravity, Block, CharacterStatModifiers, bool>)RareCondition, 1000);
				CardInfo randomCardWithCondition2 = Cards.instance.GetRandomCardWithCondition(player, gun, gunAmmo, data, health, gravity, block, characterStats, (Func<CardInfo, Player, Gun, GunAmmo, CharacterData, HealthHandler, Gravity, Block, CharacterStatModifiers, bool>)RareCondition, 1000);
				Cards.instance.AddCardToPlayer(player, randomCardWithCondition, false, "", 2f, 2f, true);
				CardBarUtils.instance.ShowImmediate(player, randomCardWithCondition, (float?)3f);
				Cards.instance.AddCardToPlayer(player, randomCardWithCondition2, false, "", 2f, 2f, true);
				CardBarUtils.instance.ShowImmediate(player, randomCardWithCondition2, (float?)3f);
				CurseManager.instance.CursePlayer(player, (Action<CardInfo>)delegate(CardInfo curse)
				{
					CardBarUtils.instance.ShowImmediate(player, curse, (float?)3f);
				});
				CurseManager.instance.CursePlayer(player, (Action<CardInfo>)delegate(CardInfo curse)
				{
					CardBarUtils.instance.ShowImmediate(player, curse, (float?)3f);
				});
			});
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Peptide";
		}

		protected override string GetDescription()
		{
			return "I'm a gambler at heart";
		}

		protected override GameObject GetCardArt()
		{
			return ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<GameObject>("C_Peptide");
		}

		protected override Rarity GetRarity()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: 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)
			return RarityUtils.GetRarity("Exotic");
		}

		protected override CardInfoStat[] GetStats()
		{
			//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_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Rares",
					amount = "+2",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Curses",
					amount = "+2",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			//IL_0002: 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)
			return (CardThemeColorType)4;
		}

		public override string GetModName()
		{
			return "CPC";
		}

		private bool RareCondition(CardInfo card, Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Invalid comparison between Unknown and I4
			return (int)card.rarity == 2 && card.cardName != "Purifying Light" && card.cardName != "Peptide" && card.cardName != "Distill" && !card.categories.Intersect(noLotteryCategories).Any();
		}
	}
	internal class Shroom : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			block.cdAdd = 0.5f;
			CPCDebug.Log((object)("[CPCCharacters][Card] " + ((CustomCard)this).GetTitle() + " has been setup."));
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CharacterStatModifiersAdditionalData additionalData = CharacterStatModifiersExtension.GetAdditionalData(characterStats);
			additionalData.shroomsAmt++;
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Shroom";
		}

		protected override string GetDescription()
		{
			return "<b><i>The Power of <color=#FF0000>S</color><color=#FFA500>h</color><color=#FFFF00>r</color><color=#008000>o</color><color=#0000FF>o</color><color=#800080>m</color><color=#FE019A>s</color></i></b>";
		}

		protected override GameObject GetCardArt()
		{
			return ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<GameObject>("C_Shroom");
		}

		protected override Rarity GetRarity()
		{
			//IL_0002: 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)
			return (Rarity)2;
		}

		protected override CardInfoStat[] GetStats()
		{
			//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_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = false,
					stat = "Block CD",
					amount = "+0.5s",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			//IL_0002: 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)
			return (CardThemeColorType)7;
		}

		public override string GetModName()
		{
			return "CPC";
		}
	}
	internal class Spoon : CustomCard
	{
		public static CardInfo Card;

		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.allowMultiple = false;
			CPCDebug.Log((object)("[CPCCharacters][Card] " + ((CustomCard)this).GetTitle() + " has been setup."));
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_0164: Unknown result type (might be due to invalid IL or missing references)
			//IL_0184: Unknown result type (might be due to invalid IL or missing references)
			if (gun.reflects > 0)
			{
				gun.reflects *= 2;
			}
			else
			{
				gun.reflects += 2;
			}
			gunAmmo.maxAmmo *= 2;
			gun.attackSpeed /= 2f;
			data.maxHealth /= 2f;
			gun.damage /= 2f;
			health.regeneration /= 2f;
			characterStats.movementSpeed *= 2f;
			if (!player.data.currentCards.Contains(Card))
			{
				GameObject val = Object.Instantiate<GameObject>(ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<GameObject>("TopHatObj"));
				val.transform.parent = ((Component)player).gameObject.transform;
				val.transform.localPosition = new Vector3(-0.1f, 0.85f, 0f);
				val.transform.localScale = new Vector3(0.25f, 0.25f, 0f);
				GameObject val2 = Object.Instantiate<GameObject>(ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<GameObject>("TopHatObj"));
				val2.transform.parent = ((Component)player).gameObject.transform;
				val2.transform.localPosition = new Vector3(-0.22f, 1.85f, 0f);
				val2.transform.localScale = new Vector3(0.25f, 0.25f, 0f);
			}
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			TopHat[] componentsInChildren = ((Component)player).GetComponentsInChildren<TopHat>();
			foreach (TopHat topHat in componentsInChildren)
			{
				Object.Destroy((Object)(object)((Component)topHat).gameObject);
			}
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Mira";
		}

		protected override string GetDescription()
		{
			return "awawa";
		}

		protected override GameObject GetCardArt()
		{
			return ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<GameObject>("C_Spoon");
		}

		protected override Rarity GetRarity()
		{
			//IL_0002: 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)
			return (Rarity)2;
		}

		protected override CardInfoStat[] GetStats()
		{
			//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_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: 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_0078: 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_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Expected O, but got Unknown
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: 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_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: 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_00b7: Expected O, but got Unknown
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Expected O, but got Unknown
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: Unknown result type (might be due to invalid IL or missing references)
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Expected O, but got Unknown
			//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_011d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: 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_0135: Unknown result type (might be due to invalid IL or missing references)
			//IL_013b: Expected O, but got Unknown
			//IL_013d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0142: Unknown result type (might be due to invalid IL or missing references)
			//IL_0149: 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_015f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0161: Unknown result type (might be due to invalid IL or missing references)
			//IL_0167: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[8]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Top Hats",
					amount = "2",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Bounces",
					amount = "Doubled",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Speed",
					amount = "Doubled",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Attack Speed",
					amount = "Doubled",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Ammo",
					amount = "Doubled",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Health",
					amount = "Halved",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Damage",
					amount = "Halved",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Regeneration",
					amount = "Halved",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			//IL_0002: 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)
			return (CardThemeColorType)4;
		}

		public override string GetModName()
		{
			return "CPC";
		}
	}
	public class Tricky : CustomCard
	{
		public static CardInfo Card;

		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			CPCDebug.Log((object)("[CPCCharacters][Card] " + ((CustomCard)this).GetTitle() + " has been setup."));
			statModifiers.movementSpeed = 16f;
			statModifiers.sizeMultiplier = 0.75f;
			cardInfo.allowMultiple = false;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		public override void Callback()
		{
			ExtensionMethods.GetOrAddComponent<ClassNameMono>(((Component)this).gameObject, false).className = "Speedster";
		}

		protected override string GetTitle()
		{
			return "Tricky";
		}

		protected override string GetDescription()
		{
			return "The speed god blessith, not all can contain his power";
		}

		protected override GameObject GetCardArt()
		{
			return ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<GameObject>("C_Tricky");
		}

		protected override Rarity GetRarity()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: 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)
			return RarityUtils.GetRarity("Mythical");
		}

		protected override CardInfoStat[] GetStats()
		{
			//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_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Movement Speed",
					amount = "+1500%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Size",
					amount = "-25%",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			//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)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			return CardThemeLib.instance.CreateOrGetType("Evergreen", (CardThemeColor)null);
		}

		public override string GetModName()
		{
			return "CPC";
		}
	}
	internal class Whynack : CustomCard
	{
		internal static CardInfo Card;

		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			block.healing = 40f;
			block.forceToAddUp = 10f;
			CPCDebug.Log((object)("[CPCCharacters][Card] " + ((CustomCard)this).GetTitle() + " has been setup."));
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			if (block.cooldown - 0.275f > 0.15f)
			{
				block.cdAdd -= 0.275f;
			}
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Whynack";
		}

		protected override string GetDescription()
		{
			return "Just one more bottle";
		}

		protected override GameObject GetCardArt()
		{
			return ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<GameObject>("C_Whynack");
		}

		protected override Rarity GetRarity()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: 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)
			return RarityUtils.GetRarity("Exotic");
		}

		protected override CardInfoStat[] GetStats()
		{
			//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_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: 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_0078: 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_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[3]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Heal on block",
					amount = "+40",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Upwards block force",
					amount = "+10",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Block Cooldown",
					amount = "-0.275s",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			//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)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			return CardThemeLib.instance.CreateOrGetType("Whynot Block Red", (CardThemeColor)null);
		}

		public override string GetModName()
		{
			return "CPC";
		}
	}
	internal class WhynackAdrenaline : CustomCard
	{
		internal static CardInfo Card;

		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			block.healing = 40f;
			block.forceToAddUp = -5f;
			CPCDebug.Log((object)("[CPCCharacters][Card] " + ((CustomCard)this).GetTitle() + " has been setup."));
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			if (block.cooldown - 0.375f > 0.15f)
			{
				block.cdAdd -= 0.375f;
			}
			CharacterStatModifiersExtension.GetAdditionalData(characterStats).whynackAd = true;
			CharacterStatModifiersExtension.GetAdditionalData(player.data.stats).blacklistedCategories.Remove(ChaosPoppycarsCardsCharacters.CPCCardCategories.NeedsWhynackAdrenaline);
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CharacterStatModifiersExtension.GetAdditionalData(player.data.stats).blacklistedCategories.Add(ChaosPoppycarsCardsCharacters.CPCCardCategories.NeedsWhynackAdrenaline);
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Whynack Adrenaline";
		}

		protected override string GetDescription()
		{
			return "I cant stop";
		}

		protected override GameObject GetCardArt()
		{
			return ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<GameObject>("C_Whynack");
		}

		protected override Rarity GetRarity()
		{
			//IL_0002: 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)
			return (Rarity)2;
		}

		protected override CardInfoStat[] GetStats()
		{
			//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_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: 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_0078: 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_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[3]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Heal on block",
					amount = "+40",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Upwards block force",
					amount = "-5",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Block Cooldown",
					amount = "-0.375s",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			//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)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			return CardThemeLib.instance.CreateOrGetType("Whynot Block Red", (CardThemeColor)null);
		}

		public override string GetModName()
		{
			return "CPC";
		}
	}
	internal class WhynackArguing : CustomCard
	{
		internal static CardInfo Card;

		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			block.healing = 80f;
			block.forceToAddUp = 5f;
			block.forceToAdd = 10f;
			CPCDebug.Log((object)("[CPCCharacters][Card] " + ((CustomCard)this).GetTitle() + " has been setup."));
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			if (block.cooldown - 0.675f > 0.15f)
			{
				block.cdAdd -= 0.675f;
			}
			if (!CharacterStatModifiersExtension.GetAdditionalData(characterStats).whynackHarmony)
			{
				player.data.movement.force = 0f;
				((Behaviour)((Component)player).GetComponent<PlayerJump>()).enabled = false;
			}
			CharacterStatModifiersExtension.GetAdditionalData(player.data.stats).blacklistedCategories.Remove(ChaosPoppycarsCardsCharacters.CPCCardCategories.NeedsWhynackArguing);
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			player.data.movement.force = 17000f;
			((Behaviour)((Component)player).GetComponent<PlayerJump>()).enabled = true;
			CharacterStatModifiersExtension.GetAdditionalData(player.data.stats).blacklistedCategories.Add(ChaosPoppycarsCardsCharacters.CPCCardCategories.NeedsWhynackArguing);
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Whynack Arguing";
		}

		protected override string GetDescription()
		{
			return "I dont like moving, you know?";
		}

		protected override GameObject GetCardArt()
		{
			return ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<GameObject>("C_Whynack");
		}

		protected override Rarity GetRarity()
		{
			//IL_0002: 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)
			return (Rarity)2;
		}

		protected override CardInfoStat[] GetStats()
		{
			//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_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: 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_0078: 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_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Expected O, but got Unknown
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: 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_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: 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_00b7: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[4]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Heal on block",
					amount = "+80",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Upwards block force",
					amount = "+5",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Block force",
					amount = "+10",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Block Cooldown",
					amount = "-0.675s",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			//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)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			return CardThemeLib.instance.CreateOrGetType("Whynot Block Red", (CardThemeColor)null);
		}

		public override string GetModName()
		{
			return "CPC";
		}
	}
	internal class WhynackBlockMeditating : CustomCard
	{
		internal static CardInfo Card;

		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			block.healing = 40f;
			block.forceToAddUp = 5f;
			CPCDebug.Log((object)("[CPCCharacters][Card] " + ((CustomCard)this).GetTitle() + " has been setup."));
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			if (block.cooldown - 0.375f > 0.15f)
			{
				block.cdAdd -= 0.375f;
			}
			((Component)player).gameObject.AddComponent<WhynackBlockMono>();
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			WhynackBlockMono whynackBlockMono = ((Component)player).gameObject.AddComponent<WhynackBlockMono>();
			Object.Destroy((Object)(object)whynackBlockMono);
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Whynacks Blocking Breeze";
		}

		protected override string GetDescription()
		{
			return "Let me block again [stand still to recharge your block faster]";
		}

		protected override GameObject GetCardArt()
		{
			return ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<GameObject>("C_Whynack");
		}

		protected override Rarity GetRarity()
		{
			//IL_0002: 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)
			return (Rarity)2;
		}

		protected override CardInfoStat[] GetStats()
		{
			//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_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: 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_0078: 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_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[3]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Heal on block",
					amount = "+40",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Upwards Block force",
					amount = "+5",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Block Cooldown",
					amount = "-0.375s",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			//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)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			return CardThemeLib.instance.CreateOrGetType("Whynot Block Red", (CardThemeColor)null);
		}

		public override string GetModName()
		{
			return "CPC";
		}
	}
	internal class WhynackCards : ClassHandler
	{
		[CompilerGenerated]
		private sealed class <Init>d__2 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public WhynackCards <>4__this;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <Init>d__2(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					Debug.Log((object)("Regestering: " + name));
					break;
				case 1:
					<>1__state = -1;
					break;
				}
				if (!Object.op_Implicit((Object)(object)Whynack.Card))
				{
					<>2__current = null;
					<>1__state = 1;
					return true;
				}
				ClassesRegistry.Register(Whynack.Card, (CardType)33, 0);
				ClassesRegistry.Register(WhynackForward.Card, (CardType)48, Whynack.Card, 0);
				ClassesRegistry.Register(WhynackGoku.Card, (CardType)48, Whynack.Card, 1);
				ClassesRegistry.Register(WhynackShamrock.Card, (CardType)48, Whynack.Card, 0);
				ClassesRegistry.Register(WhynackDoubleVision.Card, (CardType)48, Whynack.Card, 1);
				ClassesRegistry.Register(WhynackArguing.Card, (CardType)48, Whynack.Card, 1);
				ClassesRegistry.Register(WhynackAdrenaline.Card, (CardType)48, Whynack.Card, 1);
				ClassesRegistry.Register(WhynackHarmony.Card, (CardType)48, Whynack.Card, 1);
				ClassesRegistry.Register(WhynackMeditating.Card, (CardType)48, Whynack.Card, 1);
				ClassesRegistry.Register(WhynackBlockMeditating.Card, (CardType)48, Whynack.Card, 0);
				ClassesRegistry.Register(WhynackUppercut.Card, (CardType)48, Whynack.Card, 1);
				ClassesRegistry.Register(WhynackVampire.Card, (CardType)48, Whynack.Card, 3);
				ClassesRegistry.Register(WhynacksBlasting.Card, (CardType)48, Whynack.Card, 1);
				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 <PostInit>d__3 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public WhynackCards <>4__this;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <PostInit>d__3(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				if (<>1__state != 0)
				{
					return false;
				}
				<>1__state = -1;
				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();
			}
		}

		internal static string name = "Whynacks";

		internal static List<BaseUnityPlugin> plugins;

		[IteratorStateMachine(typeof(<Init>d__2))]
		public override IEnumerator Init()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <Init>d__2(0)
			{
				<>4__this = this
			};
		}

		[IteratorStateMachine(typeof(<PostInit>d__3))]
		public override IEnumerator PostInit()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <PostInit>d__3(0)
			{
				<>4__this = this
			};
		}
	}
	internal class WhynackDoubleVision : CustomCard
	{
		internal static CardInfo Card;

		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			block.healing = -120f;
			block.cdAdd = 1.75f;
			CPCDebug.Log((object)("[CPCCharacters][Card] " + ((CustomCard)this).GetTitle() + " has been setup."));
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			ExtensionMethods.ExecuteAfterFrames((MonoBehaviour)(object)ChaosPoppycarsCardsCharacters.Instance, 10, (Action)delegate
			{
				Cards.instance.AddCardToPlayer(player, Whynack.Card, false, "", 0f, 0f, true);
				CardBarUtils.instance.ShowAtEndOfPhase(player, Whynack.Card);
				Cards.instance.AddCardToPlayer(player, WhynackForward.Card, false, "", 0f, 0f, true);
				CardBarUtils.instance.ShowAtEndOfPhase(player, WhynackForward.Card);
				Cards.instance.AddCardToPlayer(player, WhynackGoku.Card, false, "", 0f, 0f, true);
				CardBarUtils.instance.ShowAtEndOfPhase(player, WhynackGoku.Card);
				Cards.instance.AddCardToPlayer(player, WhynackShamrock.Card, false, "", 0f, 0f, true);
				CardBarUtils.instance.ShowAtEndOfPhase(player, WhynackShamrock.Card);
				Cards.instance.AddCardToPlayer(player, WhynackArguing.Card, false, "", 0f, 0f, true);
				CardBarUtils.instance.ShowAtEndOfPhase(player, WhynackArguing.Card);
				Cards.instance.AddCardToPlayer(player, WhynackAdrenaline.Card, false, "", 0f, 0f, true);
				CardBarUtils.instance.ShowAtEndOfPhase(player, WhynackAdrenaline.Card);
				Cards.instance.AddCardToPlayer(player, WhynackHarmony.Card, false, "", 0f, 0f, true);
				CardBarUtils.instance.ShowAtEndOfPhase(player, WhynackHarmony.Card);
				Cards.instance.AddCardToPlayer(player, WhynackMeditating.Card, false, "", 0f, 0f, true);
				CardBarUtils.instance.ShowAtEndOfPhase(player, WhynackMeditating.Card);
				Cards.instance.AddCardToPlayer(player, WhynackBlockMeditating.Card, false, "", 0f, 0f, true);
				CardBarUtils.instance.ShowAtEndOfPhase(player, WhynackBlockMeditating.Card);
				Cards.instance.AddCardToPlayer(player, WhynackUppercut.Card, false, "", 0f, 0f, true);
				CardBarUtils.instance.ShowAtEndOfPhase(player, WhynackUppercut.Card);
				Cards.instance.AddCardToPlayer(player, WhynackVampire.Card, false, "", 0f, 0f, true);
				CardBarUtils.instance.ShowAtEndOfPhase(player, WhynackVampire.Card);
				Cards.instance.AddCardToPlayer(player, WhynacksBlasting.Card, false, "", 0f, 0f, true);
				CardBarUtils.instance.ShowAtEndOfPhase(player, WhynacksBlasting.Card);
				Block obj = block;
				obj.forceToAddUp /= 2f;
				Block obj2 = block;
				obj2.forceToAdd /= 2f;
			});
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Woah im so drunk I see so many Whynacks";
		}

		protected override string GetDescription()
		{
			return "1 whynack, 2 whynacks, 5 whynacks, 13?";
		}

		protected override GameObject GetCardArt()
		{
			return ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<GameObject>("C_Whynack");
		}

		protected override Rarity GetRarity()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: 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)
			return RarityUtils.GetRarity("Unique");
		}

		protected override CardInfoStat[] GetStats()
		{
			//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_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: 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_0078: 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_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Expected O, but got Unknown
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: 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_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: 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_00b7: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[4]
			{
				new CardInfoStat
				{
					positive = false,
					stat = "Heal on block",
					amount = "-120",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Upwards block force",
					amount = "halfed",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Block force",
					amount = "halfed",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Block Cooldown",
					amount = "+1.75s",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			//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)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			return CardThemeLib.instance.CreateOrGetType("Whynot Block Red", (CardThemeColor)null);
		}

		public override string GetModName()
		{
			return "CPC";
		}
	}
	internal class WhynackForward : CustomCard
	{
		internal static CardInfo Card;

		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			block.healing = 40f;
			block.forceToAdd = 10f;
			CPCDebug.Log((object)("[CPCCharacters][Card] " + ((CustomCard)this).GetTitle() + " has been setup."));
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			if (block.cooldown - 0.275f > 0.15f)
			{
				block.cdAdd -= 0.275f;
			}
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Whynack Rotated 90 degrees";
		}

		protected override string GetDescription()
		{
			return "Just one more bottle";
		}

		protected override GameObject GetCardArt()
		{
			return ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<GameObject>("C_Whynack");
		}

		protected override Rarity GetRarity()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: 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)
			return RarityUtils.GetRarity("Exotic");
		}

		protected override CardInfoStat[] GetStats()
		{
			//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_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: 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_0078: 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_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[3]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Heal on block",
					amount = "+40",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Block force",
					amount = "+10",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Block Cooldown",
					amount = "-0.375s",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			//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)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			return CardThemeLib.instance.CreateOrGetType("Whynot Block Red", (CardThemeColor)null);
		}

		public override string GetModName()
		{
			return "CPC";
		}
	}
	internal class WhynackGoku : CustomCard
	{
		internal static CardInfo Card;

		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			block.healing = 20f;
			CPCDebug.Log((object)("[CPCCharacters][Card] " + ((CustomCard)this).GetTitle() + " has been setup."));
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			if (block.cooldown - 0.175f > 0.15f)
			{
				block.cdAdd -= 0.175f;
			}
			CharacterStatModifiersExtension.GetAdditionalData(characterStats).whynackBlockForce = true;
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Whynack Goku";
		}

		protected override string GetDescription()
		{
			return "Its over 9000 (on the bac scale) [lets you activate block force even well block is on cooldown]";
		}

		protected override GameObject GetCardArt()
		{
			return ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<GameObject>("C_Whynack");
		}

		protected override Rarity GetRarity()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: 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)
			return RarityUtils.GetRarity("Mythical");
		}

		protected override CardInfoStat[] GetStats()
		{
			//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_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Heal on block",
					amount = "+20",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Block Cooldown",
					amount = "-0.175s",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			//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)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			return CardThemeLib.instance.CreateOrGetType("Whynot Block Red", (CardThemeColor)null);
		}

		public override string GetModName()
		{
			return "CPC";
		}
	}
	internal class WhynackHarmony : CustomCard
	{
		internal static CardInfo Card;

		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			block.healing = -20f;
			block.forceToAddUp = -10f;
			cardInfo.categories = (CardCategory[])(object)new CardCategory[2]
			{
				ChaosPoppycarsCardsCharacters.CPCCardCategories.NeedsWhynackAdrenaline,
				ChaosPoppycarsCardsCharacters.CPCCardCategories.NeedsWhynackArguing
			};
			CPCDebug.Log((object)("[CPCCharacters][Card] " + ((CustomCard)this).GetTitle() + " has been setup."));
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			if (block.cooldown - 0.375f > 0.15f)
			{
				block.cdAdd -= 0.375f;
			}
			player.data.movement.force = 17000f;
			((Behaviour)((Component)player).GetComponent<PlayerJump>()).enabled = true;
			CharacterStatModifiersExtension.GetAdditionalData(characterStats).whynackHarmony = true;
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CPCDebug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "CPCCharacters", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Whynack Harmony";
		}

		protected override string GetDescription()
		{
			return "Combine my adrenaline with my lack of movement and return to normal";
		}

		protected override GameObject GetCardArt()
		{
			return ChaosPoppycarsCardsCharacters.Bundle.LoadAsset<GameObject>("C_Whynack");
		}

		protected override Rarity GetRarity()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: 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)
			return RarityUtils.GetRarity("Mythical");
		}

		protected override CardInfoStat[] GetStats()
		{
			//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_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: 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