Decompiled source of Potatos Obtuse Oddity Pack v0.2.2

Potatos Obtuse Oddity Pack.dll

Decompiled 2 months ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using CardChoiceSpawnUniqueCardPatch.CustomCategories;
using HarmonyLib;
using ModdingUtils.Extensions;
using ModdingUtils.MonoBehaviours;
using ModdingUtils.Utils;
using PotatosObtuseOddityPack.Cards;
using PotatosObtuseOddityPack.Extensions;
using PotatosObtuseOddityPack.MonoBehaviours;
using RarityLib.Utils;
using UnboundLib;
using UnboundLib.Cards;
using UnboundLib.GameModes;
using UnboundLib.Utils;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("Potatos Obtuse Oddity Pack")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+6d52eda07410c098d74d3f490ae5a8e030f3640f")]
[assembly: AssemblyProduct("Potatos Obtuse Oddity Pack")]
[assembly: AssemblyTitle("Potatos Obtuse Oddity Pack")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace PotatosObtuseOddityPack
{
	[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.potato.rounds.poop", "PotatosObtuseOddityPack", "0.2.0")]
	[BepInProcess("Rounds.exe")]
	public class PotatosObtuseOddityPack : BaseUnityPlugin
	{
		private const string ModId = "com.potato.rounds.poop";

		private const string ModName = "PotatosObtuseOddityPack";

		public const string Version = "0.2.0";

		public const string ModInitials = "POOP";

		internal static CardCategory Resets;

		public static PotatosObtuseOddityPack instance { get; private set; }

		private void Awake()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Expected O, but got Unknown
			//IL_002c: 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_0064: 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_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			Harmony val = new Harmony("com.potato.rounds.poop");
			val.PatchAll();
			RarityUtils.AddRarity("Stone Age", 1E-06f, new Color(255f, 3f, 3f), new Color(0.7f, 0.7f, 0f));
			RarityUtils.AddRarity("Back To Basics", 1E-06f, new Color(255f, 3f, 3f), new Color(0.7f, 0.7f, 0f));
			RarityUtils.AddRarity("Legendary", 0.025f, new Color(1f, 1f, 0f), new Color(0.7f, 0.7f, 0f));
		}

		private IEnumerator GameStart(IGameModeHandler gm)
		{
			foreach (Player player in PlayerManager.instance.players)
			{
				if (!CharacterStatModifiersExtension.GetAdditionalData(player.data.stats).blacklistedCategories.Contains(StoneAge.componentCategory))
				{
					CharacterStatModifiersExtension.GetAdditionalData(player.data.stats).blacklistedCategories.Add(StoneAge.componentCategory);
				}
			}
			yield break;
		}

		private void Start()
		{
			instance = this;
			CustomCard.BuildCard<BrittleNuke>();
			CustomCard.BuildCard<RaveBoss>();
			CustomCard.BuildCard<ShadowBullets>();
			CustomCard.BuildCard<LSS>();
			CustomCard.BuildCard<Disfunction>();
			CustomCard.BuildCard<SlowStart>();
			CustomCard.BuildCard<Laser>();
			CustomCard.BuildCard<MiniBoss>();
			CustomCard.BuildCard<BackToBasic>();
			CustomCard.BuildCard<Goblin1>();
			CustomCard.BuildCard<LegendaryGamble>();
			CustomCard.BuildCard<StoneAge>();
			CustomCard.BuildCard<AllForOne>();
			CustomCard.BuildCard<Goblin2>();
			CustomCard.BuildCard<Human>();
			CustomCard.BuildCard<Invisibility>();
			instance = this;
		}

		private IEnumerator ResetEffects(IGameModeHandler gm)
		{
			DestroyAll<Rave>();
			DestroyAll<OrangeMono>();
			DestroyAll<PurpleMono>();
			DestroyAll<GreenMono>();
			DestroyAll<CyanMono>();
			DestroyAll<BlueMono>();
			DestroyAll<PinkMono>();
			DestroyAll<YellowMono>();
			DestroyAll<RedMono>();
			DestroyAll<StoneAgeMono>();
			DestroyAll<BackToBasicsMono>();
			DestroyAll<OnFlipEffect>();
			DestroyAll<InvisibilityMono>();
			yield break;
		}

		private void DestroyAll<T>() where T : Object
		{
			T[] array = Object.FindObjectsOfType<T>();
			for (int num = array.Length - 1; num >= 0; num--)
			{
				Debug.Log((object)$"Attempting to Destroy {((object)array[num]).GetType().Name} number {num}");
				Object.Destroy((Object)(object)array[num]);
			}
		}
	}
}
namespace PotatosObtuseOddityPack.MonoBehaviours
{
	public class BackToBasicsMono : MonoBehaviour
	{
		private Player player;

		public void Start()
		{
			player = ((Component)this).GetComponent<Player>();
			int count = player.data.currentCards.Count;
			Dictionary<Player, List<CardInfo>> dictionary = new Dictionary<Player, List<CardInfo>>();
			foreach (Player player in PlayerManager.instance.players)
			{
				dictionary.Add(player, player.data.currentCards.ToList());
				try
				{
					Cards.instance.RemoveAllCardsFromPlayer(player, true);
				}
				catch (NullReferenceException)
				{
				}
			}
		}
	}
	public class BackToBasicsMonoTesting : MonoBehaviour
	{
		private Player player;

		public void start()
		{
			ExtensionMethods.ExecuteAfterSeconds((MonoBehaviour)(object)Unbound.Instance, 2f, (Action)delegate
			{
				player = ((Component)this).GetComponent<Player>();
				int count = player.data.currentCards.Count;
				Dictionary<Player, List<CardInfo>> dictionary = new Dictionary<Player, List<CardInfo>>();
				foreach (Player player in PlayerManager.instance.players)
				{
					dictionary.Add(player, player.data.currentCards.ToList());
					try
					{
						Cards.instance.RemoveAllCardsFromPlayer(player, true);
					}
					catch (NullReferenceException)
					{
					}
				}
			});
		}
	}
	internal class InvisibilityMono : ReversibleColorEffect
	{
		public void OnStart(Player player)
		{
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			ColorEffect val = ((Component)player).gameObject.AddComponent<ColorEffect>();
			((ColorEffect)this).SetColor(Color.clear);
		}
	}
	public abstract class OnFlipEffect : MonoBehaviour
	{
		public static CardCategory onFlipEffectCategory = CustomCardCategories.instance.CardCategory("__OnFlipEffect__");

		public abstract void Selected();

		public abstract void Unselected();
	}
	public class RedMono : ReversibleEffect
	{
		private readonly Color color = new Color(1f, 0f, 0f, 1f);

		private ReversibleColorEffect colorEffect = null;

		private readonly float updateDelay = 0.1f;

		private float startTime;

		private Rave effect;

		public override void OnOnEnable()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		public override void OnStart()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: 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_005e: Unknown result type (might be due to invalid IL or missing references)
			GunStatModifier gunStatModifier = base.gunStatModifier;
			gunStatModifier.projectileColor += new Color(1f, 0f, 0f, 1f);
			effect = ((Component)base.player).GetComponent<Rave>();
			colorEffect = ((Component)base.player).gameObject.AddComponent<ReversibleColorEffect>();
			((ColorEffect)colorEffect).SetColor(color);
			colorEffect.SetLivesToEffect(1);
			ResetTimer();
		}

		public override void OnUpdate()
		{
			if (Time.time >= startTime + updateDelay)
			{
				ResetTimer();
				if (effect.mode != 0)
				{
					((ReversibleEffect)this).Destroy();
				}
				if (((Component)this).GetComponent<Player>().data.dead | (((Component)this).GetComponent<Player>().data.health <= 0f))
				{
					ResetTimer();
					((ReversibleEffect)this).Destroy();
				}
			}
		}

		public override void OnOnDisable()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		public override void OnOnDestroy()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}
	}
	public class OrangeMono : ReversibleEffect
	{
		private readonly Color color = new Color(1f, 0.5f, 0f, 1f);

		private ReversibleColorEffect colorEffect = null;

		private readonly float updateDelay = 0.1f;

		private float startTime;

		private Rave effect;

		public override void OnOnEnable()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		public override void OnStart()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: 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_005e: Unknown result type (might be due to invalid IL or missing references)
			GunStatModifier gunStatModifier = base.gunStatModifier;
			gunStatModifier.projectileColor += new Color(1f, 0.5f, 0f, 1f);
			effect = ((Component)base.player).GetComponent<Rave>();
			colorEffect = ((Component)base.player).gameObject.AddComponent<ReversibleColorEffect>();
			((ColorEffect)colorEffect).SetColor(color);
			colorEffect.SetLivesToEffect(1);
			ResetTimer();
		}

		public override void OnUpdate()
		{
			if (Time.time >= startTime + updateDelay)
			{
				ResetTimer();
				if (effect.mode != 1)
				{
					((ReversibleEffect)this).Destroy();
				}
				if (((Component)this).GetComponent<Player>().data.dead | (((Component)this).GetComponent<Player>().data.health <= 0f))
				{
					ResetTimer();
					((ReversibleEffect)this).Destroy();
				}
			}
		}

		public override void OnOnDisable()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		public override void OnOnDestroy()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}
	}
	public class YellowMono : ReversibleEffect
	{
		private readonly Color color = new Color(1f, 1f, 0f, 1f);

		private ReversibleColorEffect colorEffect = null;

		private readonly float updateDelay = 0.1f;

		private float startTime;

		private Rave effect;

		public override void OnOnEnable()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		public override void OnStart()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: 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_005e: Unknown result type (might be due to invalid IL or missing references)
			GunStatModifier gunStatModifier = base.gunStatModifier;
			gunStatModifier.projectileColor += new Color(1f, 1f, 0f, 1f);
			effect = ((Component)base.player).GetComponent<Rave>();
			colorEffect = ((Component)base.player).gameObject.AddComponent<ReversibleColorEffect>();
			((ColorEffect)colorEffect).SetColor(color);
			colorEffect.SetLivesToEffect(1);
			ResetTimer();
		}

		public override void OnUpdate()
		{
			if (Time.time >= startTime + updateDelay)
			{
				ResetTimer();
				if (effect.mode != 2)
				{
					((ReversibleEffect)this).Destroy();
				}
				if (((Component)this).GetComponent<Player>().data.dead | (((Component)this).GetComponent<Player>().data.health <= 0f))
				{
					ResetTimer();
					((ReversibleEffect)this).Destroy();
				}
			}
		}

		public override void OnOnDisable()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		public override void OnOnDestroy()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}
	}
	public class GreenMono : ReversibleEffect
	{
		private readonly Color color = new Color(0f, 1f, 0f, 1f);

		private ReversibleColorEffect colorEffect = null;

		private readonly float updateDelay = 0.1f;

		private float startTime;

		private Rave effect;

		public override void OnOnEnable()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		public override void OnStart()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: 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_005e: Unknown result type (might be due to invalid IL or missing references)
			GunStatModifier gunStatModifier = base.gunStatModifier;
			gunStatModifier.projectileColor += new Color(0f, 1f, 0f, 1f);
			effect = ((Component)base.player).GetComponent<Rave>();
			colorEffect = ((Component)base.player).gameObject.AddComponent<ReversibleColorEffect>();
			((ColorEffect)colorEffect).SetColor(color);
			colorEffect.SetLivesToEffect(1);
			ResetTimer();
		}

		public override void OnUpdate()
		{
			if (Time.time >= startTime + updateDelay)
			{
				ResetTimer();
				if (effect.mode != 3)
				{
					((ReversibleEffect)this).Destroy();
				}
				if (((Component)this).GetComponent<Player>().data.dead | (((Component)this).GetComponent<Player>().data.health <= 0f))
				{
					ResetTimer();
					((ReversibleEffect)this).Destroy();
				}
			}
		}

		public override void OnOnDisable()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		public override void OnOnDestroy()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}
	}
	public class CyanMono : ReversibleEffect
	{
		private readonly Color color = new Color(0f, 1f, 1f, 1f);

		private ReversibleColorEffect colorEffect = null;

		private readonly float updateDelay = 0.1f;

		private float startTime;

		private Rave effect;

		public override void OnOnEnable()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		public override void OnStart()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: 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_005e: Unknown result type (might be due to invalid IL or missing references)
			GunStatModifier gunStatModifier = base.gunStatModifier;
			gunStatModifier.projectileColor += new Color(0f, 1f, 1f, 1f);
			effect = ((Component)base.player).GetComponent<Rave>();
			colorEffect = ((Component)base.player).gameObject.AddComponent<ReversibleColorEffect>();
			((ColorEffect)colorEffect).SetColor(color);
			colorEffect.SetLivesToEffect(1);
			ResetTimer();
		}

		public override void OnUpdate()
		{
			if (Time.time >= startTime + updateDelay)
			{
				ResetTimer();
				if (effect.mode != 4)
				{
					((ReversibleEffect)this).Destroy();
				}
				if (((Component)this).GetComponent<Player>().data.dead | (((Component)this).GetComponent<Player>().data.health <= 0f))
				{
					ResetTimer();
					((ReversibleEffect)this).Destroy();
				}
			}
		}

		public override void OnOnDisable()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		public override void OnOnDestroy()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}
	}
	public class BlueMono : ReversibleEffect
	{
		private readonly Color color = new Color(0f, 0f, 1f, 1f);

		private ReversibleColorEffect colorEffect = null;

		private readonly float updateDelay = 0.1f;

		private float startTime;

		private Rave effect;

		public override void OnOnEnable()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		public override void OnStart()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: 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_005e: Unknown result type (might be due to invalid IL or missing references)
			GunStatModifier gunStatModifier = base.gunStatModifier;
			gunStatModifier.projectileColor += new Color(0f, 0f, 1f, 1f);
			effect = ((Component)base.player).GetComponent<Rave>();
			colorEffect = ((Component)base.player).gameObject.AddComponent<ReversibleColorEffect>();
			((ColorEffect)colorEffect).SetColor(color);
			colorEffect.SetLivesToEffect(1);
			ResetTimer();
		}

		public override void OnUpdate()
		{
			if (Time.time >= startTime + updateDelay)
			{
				ResetTimer();
				if (effect.mode != 5)
				{
					((ReversibleEffect)this).Destroy();
				}
				if (((Component)this).GetComponent<Player>().data.dead | (((Component)this).GetComponent<Player>().data.health <= 0f))
				{
					ResetTimer();
					((ReversibleEffect)this).Destroy();
				}
			}
		}

		public override void OnOnDisable()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		public override void OnOnDestroy()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}
	}
	public class PurpleMono : ReversibleEffect
	{
		private readonly Color color = new Color(1f, 0f, 1f, 1f);

		private ReversibleColorEffect colorEffect = null;

		private readonly float updateDelay = 0.1f;

		private float startTime;

		private Rave effect;

		public override void OnOnEnable()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		public override void OnStart()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: 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_005e: Unknown result type (might be due to invalid IL or missing references)
			GunStatModifier gunStatModifier = base.gunStatModifier;
			gunStatModifier.projectileColor += new Color(1f, 0f, 1f, 1f);
			effect = ((Component)base.player).GetComponent<Rave>();
			colorEffect = ((Component)base.player).gameObject.AddComponent<ReversibleColorEffect>();
			((ColorEffect)colorEffect).SetColor(color);
			colorEffect.SetLivesToEffect(1);
			ResetTimer();
		}

		public override void OnUpdate()
		{
			if (Time.time >= startTime + updateDelay)
			{
				ResetTimer();
				if (effect.mode != 6)
				{
					((ReversibleEffect)this).Destroy();
				}
				if (((Component)this).GetComponent<Player>().data.dead | (((Component)this).GetComponent<Player>().data.health <= 0f))
				{
					ResetTimer();
					((ReversibleEffect)this).Destroy();
				}
			}
		}

		public override void OnOnDisable()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		public override void OnOnDestroy()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}
	}
	public class PinkMono : ReversibleEffect
	{
		private readonly Color color = new Color(1f, 0.7f, 1f, 1f);

		private ReversibleColorEffect colorEffect = null;

		private readonly float updateDelay = 0.1f;

		private float startTime;

		private Rave effect;

		public override void OnOnEnable()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		public override void OnStart()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: 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_005e: Unknown result type (might be due to invalid IL or missing references)
			GunStatModifier gunStatModifier = base.gunStatModifier;
			gunStatModifier.projectileColor += new Color(1f, 0.7f, 1f, 1f);
			effect = ((Component)base.player).GetComponent<Rave>();
			colorEffect = ((Component)base.player).gameObject.AddComponent<ReversibleColorEffect>();
			((ColorEffect)colorEffect).SetColor(color);
			colorEffect.SetLivesToEffect(1);
			ResetTimer();
		}

		public override void OnUpdate()
		{
			if (Time.time >= startTime + updateDelay)
			{
				ResetTimer();
				if (effect.mode != 7)
				{
					((ReversibleEffect)this).Destroy();
				}
				if (((Component)this).GetComponent<Player>().data.dead | (((Component)this).GetComponent<Player>().data.health <= 0f))
				{
					ResetTimer();
					((ReversibleEffect)this).Destroy();
				}
			}
		}

		public override void OnOnDisable()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		public override void OnOnDestroy()
		{
			if ((Object)(object)colorEffect != (Object)null)
			{
				((ColorEffect)colorEffect).Destroy();
			}
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}
	}
	public class Rave : MonoBehaviour
	{
		private readonly float updateDelay = 0.25f;

		private float startTime;

		public int mode;

		public int realmode;

		internal Player player;

		private void Start()
		{
			player = ((Component)this).gameObject.GetComponent<Player>();
			mode = 0;
			realmode = 0;
		}

		public void Destroy()
		{
			Object.Destroy((Object)(object)this);
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}

		private void Update()
		{
			if (Time.time >= startTime + updateDelay)
			{
				ResetTimer();
				if (realmode == 0)
				{
					((Component)player).gameObject.AddComponent<RedMono>();
					mode = 0;
					realmode++;
				}
				else if (realmode == 1)
				{
					((Component)player).gameObject.AddComponent<OrangeMono>();
					mode++;
					realmode++;
				}
				else if (realmode == 2)
				{
					((Component)player).gameObject.AddComponent<YellowMono>();
					mode++;
					realmode++;
				}
				else if (realmode == 3)
				{
					((Component)player).gameObject.AddComponent<GreenMono>();
					mode++;
					realmode++;
				}
				else if (realmode == 4)
				{
					((Component)player).gameObject.AddComponent<CyanMono>();
					mode++;
					realmode++;
				}
				else if (realmode == 5)
				{
					((Component)player).gameObject.AddComponent<BlueMono>();
					mode++;
					realmode++;
				}
				else if (realmode == 6)
				{
					((Component)player).gameObject.AddComponent<PurpleMono>();
					mode++;
					realmode++;
				}
				else if (realmode == 7)
				{
					((Component)player).gameObject.AddComponent<PinkMono>();
					mode++;
					realmode = 0;
				}
			}
		}
	}
	public class StoneAgeMono : MonoBehaviour
	{
		private Player player;

		public void Start()
		{
			player = ((Component)this).GetComponent<Player>();
			int count = player.data.currentCards.Count;
			Dictionary<Player, List<CardInfo>> dictionary = new Dictionary<Player, List<CardInfo>>();
			foreach (Player player in PlayerManager.instance.players)
			{
				dictionary.Add(player, player.data.currentCards.ToList());
				try
				{
					Cards.instance.RemoveAllCardsFromPlayer(this.player, true);
				}
				catch (NullReferenceException)
				{
				}
			}
		}
	}
}
namespace PotatosObtuseOddityPack.Extensions
{
	public static class PlayerManagerExtension
	{
		public static Player GetRandomEnemy(this PlayerManager playerManager, Player player)
		{
			if (playerManager.players.Count == 1)
			{
				return null;
			}
			List<Player> list = new List<Player>(playerManager.players);
			Player[] playersInTeam = playerManager.GetPlayersInTeam(player.teamID);
			foreach (Player item in playersInTeam)
			{
				list.Remove(item);
			}
			return list[Random.Range(0, list.Count)];
		}

		public static Player GetPlayerWithID(this PlayerManager playerManager, int playerID)
		{
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Expected O, but got Unknown
			return (Player)typeof(PlayerManager).InvokeMember("GetPlayerWithID", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.InvokeMethod, null, playerManager, new object[1] { playerID });
		}
	}
}
namespace PotatosObtuseOddityPack.Cards
{
	internal class AllForOne : CustomCard
	{
		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[1] { CustomCardCategories.instance.CardCategory("CardManipulation") };
			cardInfo.allowMultiple = true;
			Debug.Log((object)("[POOP][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)
		{
			AFO(player);
			Debug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "POOP", ((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)
		{
			Debug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "POOP", ((CustomCard)this).GetTitle(), player.playerID));
		}

		private static void AFO(Player player)
		{
			Player randomEnemy = PlayerManager.instance.GetRandomEnemy(player);
			int num = 0;
			while (randomEnemy.data.currentCards.Count == 0 && num < 5)
			{
				num++;
				randomEnemy = PlayerManager.instance.GetRandomEnemy(player);
			}
			if ((Object)(object)randomEnemy == (Object)null || randomEnemy.data.currentCards.Count == 0)
			{
				return;
			}
			int num2 = randomEnemy.data.currentCards.Count - 1;
			int num3 = 0;
			while (num3 <= 50 && randomEnemy.data.currentCards.Count > -1 && num2 > -4)
			{
				num3++;
				CardInfo val = randomEnemy.data.currentCards[num2];
				if (!Cards.instance.CardIsNotBlacklisted(val, (CardCategory[])(object)new CardCategory[2]
				{
					CustomCardCategories.instance.CardCategory("CardManipulation"),
					CustomCardCategories.instance.CardCategory("NoRemove")
				}))
				{
					num2--;
					continue;
				}
				if (!Cards.instance.PlayerIsAllowedCard(player, val))
				{
					num2--;
					continue;
				}
				Cards.instance.AddCardToPlayer(player, val, false, "", 0f, 0f, true);
				CardBarUtils.instance.ShowAtEndOfPhase(player, val);
				Cards.instance.RemoveCardFromPlayer(randomEnemy, val, (SelectionType)2);
				break;
			}
		}

		protected override string GetTitle()
		{
			return "One For One";
		}

		protected override string GetDescription()
		{
			return "Take The Most Recent Card From <b><color=#fff000>A</b></color> Players (Breaks with null)";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

		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()
		{
			return null;
		}

		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)3;
		}

		public override string GetModName()
		{
			return "POOP";
		}
	}
	internal class BackToBasic : CustomCard
	{
		internal static CardCategory componentCategory = CustomCardCategories.instance.CardCategory("Resets");

		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { CustomCardCategories.instance.CardCategory("Resets") };
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			((Component)player).gameObject.AddComponent<BackToBasicsMono>();
			Debug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "POOP", ((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)
		{
			Debug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "POOP", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Back to the Basics";
		}

		protected override string GetDescription()
		{
			return "<color=#ff0000>Remove all cards from all Players</color>";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

		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("Back To Basics");
		}

		protected override CardInfoStat[] GetStats()
		{
			return null;
		}

		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 "POOP";
		}
	}
	internal class BrittleNuke : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.allowMultiple = false;
			Debug.Log((object)("[POOP][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)
		{
			CharacterStatModifiers statModifiers = base.statModifiers;
			statModifiers.health /= 4f;
			gun.damage *= 4f;
			Debug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "POOP", ((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)
		{
			Debug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "POOP", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Papier-mâché Trebuchet";
		}

		protected override string GetDescription()
		{
			return "(no down sides)";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

		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
			return (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Damage",
					amount = "200%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Health",
					amount = "-200%",
					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)1;
		}

		public override string GetModName()
		{
			return "POOP";
		}
	}
	internal class Disfunction : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			Debug.Log((object)("[POOP][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)
		{
			gun.gravity *= 10f;
			gun.damage *= 3f;
			Debug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "POOP", ((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)
		{
			Debug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "POOP", ((CustomCard)this).GetTitle(), player.playerID));
		}

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

		protected override string GetDescription()
		{
			return "You Should Probably See A Doctor About That";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

		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
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "",
					amount = "",
					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 "POOP";
		}
	}
	internal class Goblin1 : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.allowMultiple = false;
			Debug.Log((object)("[POOP][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)
		{
			CharacterStatModifiers statModifiers = base.statModifiers;
			statModifiers.health /= 2f;
			characterStats.movementSpeed *= 1.5f;
			characterStats.jump += 1f;
			characterStats.gravity *= 0.5f;
			Debug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "POOP", ((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)
		{
			Debug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "POOP", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Lvl 1 Goblin";
		}

		protected override string GetDescription()
		{
			return "Im a Little Goblin. You Wouldnt Hurt a Little Goblin";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

		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
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "",
					amount = "",
					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 "POOP";
		}
	}
	internal class Goblin2 : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.allowMultiple = false;
			Debug.Log((object)("[POOP][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)
		{
			characterStats.sizeMultiplier /= 2f;
			characterStats.movementSpeed *= 2f;
			characterStats.gravity *= 0.5f;
			Debug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "POOP", ((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)
		{
			Debug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "POOP", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Lvl 2 Goblin";
		}

		protected override string GetDescription()
		{
			return "Im a Lvl 2 Goblin. You Wouldnt Hurt a Lvl 2 Goblin";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

		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("Legendary");
		}

		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 = true,
					stat = "",
					amount = "",
					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 "POOP";
		}
	}
	public class Human : CustomCard
	{
		internal class WidePlayerEffect : MonoBehaviour
		{
			private const float updateDelay = 0.5f;

			private float startTime = -1f;

			internal float ratio = 1f;

			private const float flatScale = 1f;

			internal float yOffset;

			internal Vector3 orig_scale = Vector3.zero;

			private void Start()
			{
				//IL_000d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0012: Unknown result type (might be due to invalid IL or missing references)
				//IL_003f: 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_0045: 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_005f: Unknown result type (might be due to invalid IL or missing references)
				orig_scale = ((Component)this).gameObject.transform.localScale;
				foreach (object item in ((Component)this).gameObject.transform.parent.GetChild(4))
				{
					Transform val = (Transform)item;
					val.localPosition += new Vector3(0f, yOffset, 0f);
				}
				Widen();
				ResetTimer();
			}

			private void Update()
			{
				//IL_002e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0043: 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_0065: Unknown result type (might be due to invalid IL or missing references)
				if (Time.time >= startTime + 0.5f)
				{
					ResetTimer();
					if (((Component)this).gameObject.transform.localScale.x == ((Component)this).gameObject.transform.localScale.y)
					{
						orig_scale = ((Component)this).gameObject.transform.localScale;
						Widen();
					}
				}
			}

			internal void Widen()
			{
				//IL_000c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0021: 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_007a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0096: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
				if (Mathf.Abs(((Component)this).gameObject.transform.localScale.y / ((Component)this).gameObject.transform.localScale.x - ratio) >= 0.0001f)
				{
					((Component)this).gameObject.transform.localScale = 0.75f * new Vector3(((Component)this).gameObject.transform.localScale.x, ((Component)this).gameObject.transform.localScale.x * ratio, ((Component)this).gameObject.transform.localScale.z);
					((Component)this).gameObject.transform.localPosition = new Vector3(0f, yOffset, 0f);
				}
			}

			internal void ResetScale()
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0007: Unknown result type (might be due to invalid IL or missing references)
				//IL_0022: Unknown result type (might be due to invalid IL or missing references)
				if (orig_scale != Vector3.zero)
				{
					((Component)this).gameObject.transform.localScale = orig_scale;
				}
			}

			private void ResetTimer()
			{
				startTime = Time.time;
			}

			private void OnDestroy()
			{
				//IL_0022: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005a: Unknown result type (might be due to invalid IL or missing references)
				//IL_005b: 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_0075: Unknown result type (might be due to invalid IL or missing references)
				ResetScale();
				((Component)this).gameObject.transform.localPosition = new Vector3(0f, 0f, 0f);
				foreach (object item in ((Component)this).gameObject.transform.parent.GetChild(4))
				{
					Transform val = (Transform)item;
					val.localPosition -= new Vector3(0f, yOffset, 0f);
				}
			}
		}

		internal class WideVisualEffect : OnFlipEffect
		{
			private bool wide;

			private Vector3 orig_scale;

			private const float xmult = 1f;

			private const float ymult = 1f;

			private const float dy = 0.02f;

			private const float maxDeltaY = 0.1f;

			private float signy = 1f;

			private void Start()
			{
			}

			public override void Selected()
			{
				//IL_0021: Unknown result type (might be due to invalid IL or missing references)
				//IL_0026: 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_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0077: Unknown result type (might be due to invalid IL or missing references)
				//IL_0081: Unknown result type (might be due to invalid IL or missing references)
				if (!wide)
				{
					wide = true;
					orig_scale = ((Component)this).gameObject.transform.localScale;
					((Component)this).gameObject.transform.localScale = new Vector3(((Component)this).gameObject.transform.localScale.x * 1f, ((Component)this).gameObject.transform.localScale.y * 1f, ((Component)this).gameObject.transform.localScale.z);
				}
			}

			public override void Unselected()
			{
				//IL_0014: Unknown result type (might be due to invalid IL or missing references)
				wide = false;
				((Component)this).gameObject.transform.localScale = orig_scale;
			}

			private void Update()
			{
				//IL_002b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0073: Unknown result type (might be due to invalid IL or missing references)
				//IL_008e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0093: Unknown result type (might be due to invalid IL or missing references)
				if (wide)
				{
					if (Mathf.Abs(orig_scale.y * 1f - ((Component)this).gameObject.transform.localScale.y) >= 0.1f)
					{
						signy *= -1f;
					}
					((Component)this).gameObject.transform.localScale = ((Component)this).gameObject.transform.localScale + new Vector3(0f, signy * 0.02f, 0f);
				}
			}

			private void OnDisable()
			{
				wide = false;
			}

			private void OnDestroy()
			{
				wide = false;
			}
		}

		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { OnFlipEffect.onFlipEffectCategory };
			cardInfo.allowMultiple = false;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			data.maxHealth *= 2f;
			WidePlayerEffect orAddComponent = ExtensionMethods.GetOrAddComponent<WidePlayerEffect>(((Component)((Component)player).gameObject.transform.GetChild(0)).gameObject, false);
			orAddComponent.ratio *= 0.5f;
			orAddComponent.yOffset += 0.5f;
			orAddComponent.ResetScale();
			orAddComponent.Widen();
		}

		public override void OnRemoveCard()
		{
		}

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

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

		protected override GameObject GetCardArt()
		{
			return null;
		}

		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
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Human",
					amount = "+100%",
					simepleAmount = (SimpleAmount)4
				}
			};
		}

		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)2;
		}

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

		public override void Callback()
		{
			ExtensionMethods.GetOrAddComponent<WideVisualEffect>(((Component)this).gameObject, false);
		}
	}
	public class Invisibility : CustomCard
	{
		internal class WidePlayerEffect : MonoBehaviour
		{
			private const float updateDelay = 0.5f;

			private float startTime = -1f;

			internal float ratio = 1f;

			private const float flatScale = 1f;

			internal float yOffset;

			internal Vector3 orig_scale = Vector3.zero;

			private void Start()
			{
				//IL_000d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0012: Unknown result type (might be due to invalid IL or missing references)
				//IL_003f: 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_0045: 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_005f: Unknown result type (might be due to invalid IL or missing references)
				orig_scale = ((Component)this).gameObject.transform.localScale;
				foreach (object item in ((Component)this).gameObject.transform.parent.GetChild(4))
				{
					Transform val = (Transform)item;
					val.localPosition += new Vector3(0f, yOffset, 0f);
				}
				Widen();
				ResetTimer();
			}

			private void Update()
			{
				//IL_002e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0043: 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_0065: Unknown result type (might be due to invalid IL or missing references)
				if (Time.time >= startTime + 0.5f)
				{
					ResetTimer();
					if (((Component)this).gameObject.transform.localScale.x == ((Component)this).gameObject.transform.localScale.y)
					{
						orig_scale = ((Component)this).gameObject.transform.localScale;
						Widen();
					}
				}
			}

			internal void Widen()
			{
				//IL_000c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0021: 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_007a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0096: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
				if (Mathf.Abs(((Component)this).gameObject.transform.localScale.y / ((Component)this).gameObject.transform.localScale.x - ratio) >= 0.0001f)
				{
					((Component)this).gameObject.transform.localScale = 0f * new Vector3(((Component)this).gameObject.transform.localScale.x, ((Component)this).gameObject.transform.localScale.x * ratio, ((Component)this).gameObject.transform.localScale.z);
					((Component)this).gameObject.transform.localPosition = new Vector3(0f, yOffset, 0f);
				}
			}

			internal void ResetScale()
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0007: Unknown result type (might be due to invalid IL or missing references)
				//IL_0022: Unknown result type (might be due to invalid IL or missing references)
				if (orig_scale != Vector3.zero)
				{
					((Component)this).gameObject.transform.localScale = orig_scale;
				}
			}

			private void ResetTimer()
			{
				startTime = Time.time;
			}

			private void OnDestroy()
			{
				//IL_0022: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005a: Unknown result type (might be due to invalid IL or missing references)
				//IL_005b: 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_0075: Unknown result type (might be due to invalid IL or missing references)
				ResetScale();
				((Component)this).gameObject.transform.localPosition = new Vector3(0f, 0f, 0f);
				foreach (object item in ((Component)this).gameObject.transform.parent.GetChild(4))
				{
					Transform val = (Transform)item;
					val.localPosition -= new Vector3(0f, yOffset, 0f);
				}
			}
		}

		internal class WideVisualEffect : OnFlipEffect
		{
			private bool wide;

			private Vector3 orig_scale;

			private const float xmult = 1f;

			private const float ymult = 1f;

			private const float dy = 0.02f;

			private const float maxDeltaY = 0.1f;

			private float signy = 1f;

			private void Start()
			{
			}

			public override void Selected()
			{
				//IL_0021: Unknown result type (might be due to invalid IL or missing references)
				//IL_0026: 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_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0077: Unknown result type (might be due to invalid IL or missing references)
				//IL_0081: Unknown result type (might be due to invalid IL or missing references)
				if (!wide)
				{
					wide = true;
					orig_scale = ((Component)this).gameObject.transform.localScale;
					((Component)this).gameObject.transform.localScale = new Vector3(((Component)this).gameObject.transform.localScale.x * 1f, ((Component)this).gameObject.transform.localScale.y * 1f, ((Component)this).gameObject.transform.localScale.z);
				}
			}

			public override void Unselected()
			{
				//IL_0014: Unknown result type (might be due to invalid IL or missing references)
				wide = false;
				((Component)this).gameObject.transform.localScale = orig_scale;
			}

			private void Update()
			{
				//IL_002b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0073: Unknown result type (might be due to invalid IL or missing references)
				//IL_008e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0093: Unknown result type (might be due to invalid IL or missing references)
				if (wide)
				{
					if (Mathf.Abs(orig_scale.y * 1f - ((Component)this).gameObject.transform.localScale.y) >= 0.1f)
					{
						signy *= -1f;
					}
					((Component)this).gameObject.transform.localScale = ((Component)this).gameObject.transform.localScale + new Vector3(0f, signy * 0.02f, 0f);
				}
			}

			private void OnDisable()
			{
				wide = false;
			}

			private void OnDestroy()
			{
				wide = false;
			}
		}

		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { OnFlipEffect.onFlipEffectCategory };
			cardInfo.allowMultiple = false;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			((Component)player).gameObject.AddComponent<InvisibilityMono>();
			characterStats.movementSpeed *= 1.25f;
			Human.WidePlayerEffect orAddComponent = ExtensionMethods.GetOrAddComponent<Human.WidePlayerEffect>(((Component)((Component)player).gameObject.transform.GetChild(0)).gameObject, false);
			orAddComponent.ratio *= 0f;
			orAddComponent.yOffset += 0f;
			orAddComponent.ResetScale();
			orAddComponent.Widen();
		}

		public override void OnRemoveCard()
		{
		}

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

		protected override string GetDescription()
		{
			return "You Become Invisible";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

		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 = true,
					stat = "Invisibility",
					amount = "+100%",
					simepleAmount = (SimpleAmount)4
				}
			};
		}

		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)3;
		}

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

		public override void Callback()
		{
			ExtensionMethods.GetOrAddComponent<Human.WideVisualEffect>(((Component)this).gameObject, false);
		}
	}
	internal class Laser : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			gun.ammo = 100;
			gun.projectileSpeed = 10f;
			Debug.Log((object)("[POOP][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_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			gun.reflects += 5;
			gun.damage *= 0.25f;
			gun.projectileColor = Color.red;
			gun.gravity *= 0f;
			gun.attackSpeed *= 0f;
			Debug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "POOP", ((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)
		{
			Debug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "POOP", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Laser?";
		}

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

		protected override GameObject GetCardArt()
		{
			return null;
		}

		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("Legendary");
		}

		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 = "",
					amount = "Pew?",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "",
					amount = "Pew?",
					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)0;
		}

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

		internal static List<string> cardDescriptions = new List<string> { "3/4 Chance To Get A <color=#ffff00>Legendary</color> Card, 1/4 Chance of Getting <color=#ff0000>Stone Age</color>" };

		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers)
		{
			CardInfoExtension.GetAdditionalData(cardInfo).canBeReassigned = false;
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { CustomCardCategories.instance.CardCategory("CardManipulation") };
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CardInfo val = Cards.instance.NORARITY_GetRandomCardWithCondition(player, gun, gunAmmo, data, health, gravity, block, characterStats, (Func<CardInfo, Player, Gun, GunAmmo, CharacterData, HealthHandler, Gravity, Block, CharacterStatModifiers, bool>)condition, 1000);
			if ((Object)(object)val == (Object)null)
			{
				CardInfo[] array = ((ObservableCollection<CardInfo>)typeof(CardManager).GetField("activeCards", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null)).ToList().Concat((List<CardInfo>)typeof(CardManager).GetField("inactiveCards", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null)).ToArray();
				val = Cards.instance.DrawRandomCardWithCondition(array, player, (Gun)null, (GunAmmo)null, (CharacterData)null, (HealthHandler)null, (Gravity)null, (Block)null, (CharacterStatModifiers)null, (Func<CardInfo, Player, Gun, GunAmmo, CharacterData, HealthHandler, Gravity, Block, CharacterStatModifiers, bool>)condition, 1000);
			}
			Cards.instance.AddCardToPlayer(player, val, false, "", 0f, 0f, true);
			CardBarUtils.instance.ShowAtEndOfPhase(player, val);
		}

		public override void OnRemoveCard()
		{
		}

		protected override string GetTitle()
		{
			return "Legendary Gamble";
		}

		protected override string GetDescription()
		{
			return cardDescriptions[0];
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

		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()
		{
			return null;
		}

		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)3;
		}

		public bool condition(CardInfo card, Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			//IL_001f: 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)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: 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)
			Random random = new Random();
			int num = random.Next(1, 100);
			if (num <= 75)
			{
				return card.rarity == RarityUtils.GetRarity("Legendary") && !card.categories.Intersect(noLotteryCategories).Any();
			}
			if (num > 76)
			{
				return card.rarity == RarityUtils.GetRarity("Stone Age") && !card.categories.Intersect(noLotteryCategories).Any();
			}
			return card.rarity == RarityUtils.GetRarity("Back To Basics") && !card.categories.Intersect(noLotteryCategories).Any();
		}

		public override string GetModName()
		{
			return "POOP";
		}
	}
	internal class LSS : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			statModifiers.numberOfJumps = 1;
			Debug.Log((object)("[POOP][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_0217: Unknown result type (might be due to invalid IL or missing references)
			data.maxHealth *= 1.15f;
			block.cooldown *= 0.85f;
			block.additionalBlocks++;
			gunAmmo.reloadTime *= 0.85f;
			characterStats.movementSpeed *= 1.15f;
			gun.gravity *= 0.85f;
			gun.projectileSpeed *= 1.15f;
			gun.projectielSimulatonSpeed *= 1.15f;
			if (gun.size <= 0f)
			{
				gun.size += 0.15f;
			}
			else
			{
				gun.size *= 1.15f;
			}
			gun.numberOfProjectiles++;
			gunAmmo.maxAmmo++;
			gun.spread *= 0.9f;
			gun.evenSpread *= 0.9f;
			gun.damage *= 1.15f;
			gun.damageAfterDistanceMultiplier *= 1.15f;
			gun.dmgMOnBounce *= 1.15f;
			if (gun.slow <= 0f)
			{
				gun.slow += 0.1f;
			}
			else
			{
				gun.slow *= 1.15f;
			}
			gun.attackSpeed *= 0.85f;
			gun.knockback *= 1.15f;
			gun.destroyBulletAfter *= 1.1f;
			gravity.gravityForce *= 0.9f;
			if (characterStats.lifeSteal == 0f)
			{
				characterStats.lifeSteal += 0.15f;
			}
			else
			{
				characterStats.lifeSteal *= 1.15f;
			}
			ObjectsToSpawn item = ((GameObject)Resources.Load("0 cards/Mayhem")).GetComponent<Gun>().objectsToSpawn[0];
			List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList();
			list.Add(item);
			gun.objectsToSpawn = list.ToArray();
			Debug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "POOP", ((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)
		{
			Debug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "POOP", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Lil Something Special";
		}

		protected override string GetDescription()
		{
			return "All Without Bounce";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

		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 = true,
					stat = "",
					amount = "",
					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 "POOP";
		}
	}
	internal class MiniBoss : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			statModifiers.movementSpeed = 0.75f;
			statModifiers.health = 2.5f;
			gun.projectielSimulatonSpeed = 0.85f;
			gun.attackSpeed = 1.5f;
			Debug.Log((object)("[POOP][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)
		{
			Debug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "POOP", ((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)
		{
			Debug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "POOP", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Mini Boss";
		}

		protected override string GetDescription()
		{
			return "Raid Boss But Good";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

		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
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "",
					amount = "",
					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 "POOP";
		}
	}
	internal class RatsMagicMissles : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			Debug.Log((object)("[POOP][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)
		{
			gun.damage *= 500f;
			gun.projectileSpeed = 0.01f;
			Debug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "POOP", ((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)
		{
			Debug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "POOP", ((CustomCard)this).GetTitle(), player.playerID));
		}

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

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

		protected override GameObject GetCardArt()
		{
			return null;
		}

		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("Legendary");
		}

		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 = true,
					stat = "Effect",
					amount = "No",
					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)8;
		}

		public override string GetModName()
		{
			return "POOP";
		}
	}
	internal class RaveBoss : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			statModifiers.health = 4f;
			cardInfo.allowMultiple = false;
			Debug.Log((object)("[POOP][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)
		{
			((Component)player).gameObject.AddComponent<Rave>();
			Debug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "POOP", ((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)
		{
			Debug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "POOP", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Rave Boss";
		}

		protected override string GetDescription()
		{
			return "You Are The Party";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

		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 = true,
					stat = "",
					amount = "",
					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 "POOP";
		}
	}
	internal class ShadowBullets : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			gun.projectileColor = Color.clear;
			Debug.Log((object)("[POOP][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)
		{
			CharacterStatModifiers statModifiers = base.statModifiers;
			statModifiers.health *= 0.75f;
			gun.projectileSpeed *= 1000f;
			CharacterStatModifiers statModifiers2 = base.statModifiers;
			statModifiers2.movementSpeed *= 1.25f;
			Debug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "POOP", ((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)
		{
			Debug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "POOP", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Shadow Bullets";
		}

		protected override string GetDescription()
		{
			return "Your Bullets Become One With The Shadow";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

		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("Legendary");
		}

		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 = "Speed",
					amount = "+25%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Health",
					amount = "-25%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Bullets",
					amount = "Invisble",
					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)3;
		}

		public override string GetModName()
		{
			return "POOP";
		}
	}
	internal class SlowStart : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			gun.projectileSpeed = 0.5f;
			gun.reflects = 20;
			Debug.Log((object)("[POOP][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_004f: Unknown result type (might be due to invalid IL or missing references)
			gun.ammo += 3;
			gun.speedMOnBounce *= 1.5f;
			gun.dmgMOnBounce *= 0.8f;
			gun.gravity *= 0f;
			ObjectsToSpawn item = ((GameObject)Resources.Load("0 cards/Mayhem")).GetComponent<Gun>().objectsToSpawn[0];
			List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList();
			list.Add(item);
			Debug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "POOP", ((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)
		{
			Debug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "POOP", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Slow Start";
		}

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

		protected override GameObject GetCardArt()
		{
			return null;
		}

		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
			return (CardInfoStat[])(object)new CardInfoStat[5]
			{
				new CardInfoStat
				{
					positive = false,
					stat = "Projectile Speed",
					amount = "-50%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Damage On Bounce",
					amount = "-5%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Speed On Bounce",
					amount = "+50%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Bounces",
					amount = "+20",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Bullet Gravity",
					amount = "-100%",
					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)0;
		}

		public override string GetModName()
		{
			return "POOP";
		}
	}
	internal class StoneAge : CustomCard
	{
		internal static CardCategory componentCategory = CustomCardCategories.instance.CardCategory("Resets");

		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { CustomCardCategories.instance.CardCategory("Resets") };
			Debug.Log((object)("[POOP][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)
		{
			((Component)player).gameObject.AddComponent<StoneAgeMono>();
			Debug.Log((object)string.Format("[{0}][Card] {1} has been added to player {2}.", "POOP", ((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)
		{
			Debug.Log((object)string.Format("[{0}][Card] {1} has been removed from player {2}.", "POOP", ((CustomCard)this).GetTitle(), player.playerID));
		}

		protected override string GetTitle()
		{
			return "Stone Age";
		}

		protected override string GetDescription()
		{
			return "<color=#ff0000>Remove All Cards From Your Self</color>";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

		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("Stone Age");
		}

		protected override CardInfoStat[] GetStats()
		{
			return null;
		}

		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 "POOP";
		}
	}
}