Decompiled source of TECards v1.0.0

TECards.dll

Decompiled 4 days ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using CardChoiceSpawnUniqueCardPatch.CustomCategories;
using HarmonyLib;
using Jotunn.Utils;
using Microsoft.CodeAnalysis;
using ModdingUtils.Extensions;
using ModdingUtils.MonoBehaviours;
using ModdingUtils.RoundsEffects;
using ModdingUtils.Utils;
using TECards.Cards;
using TECards.MonoBehaviours;
using TECards.RoundsEffects;
using UnboundLib;
using UnboundLib.Cards;
using UnboundLib.GameModes;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(/*Could not decode attribute arguments.*/)]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("0.0.0.0")]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Embedded]
	[AttributeUsage(/*Could not decode attribute arguments.*/)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace TECards
{
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("com.thirdeye.tecards", "TECards", "1.0.0")]
	[BepInProcess("Rounds.exe")]
	public class TECards : BaseUnityPlugin
	{
		internal static AssetBundle assets;

		public static GameObject MozemDownArt;

		public static GameObject PolyphemusArt;

		public static GameObject SteroidsArt;

		public static GameObject AntiColaArt;

		public static GameObject SCP035Art;

		public static GameObject SCP207Art;

		public static GameObject SCP999Art;

		public static GameObject SCP682Art;

		public static GameObject GreenCandyArt;

		public static GameObject BlueCandyArt;

		public static GameObject RedCandyArt;

		public static GameObject RainbowCandyArt;

		public static GameObject YellowCandyArt;

		public static GameObject SCP330Art;

		private const string ModId = "com.thirdeye.tecards";

		private const string ModName = "TECards";

		private const string Version = "1.0.0";

		public const string ModInitials = "TE";

		public static CardCategory Candy;

		private void Awake()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			new Harmony("com.thirdeye.tecards").PatchAll();
		}

		private void Start()
		{
			assets = AssetUtils.LoadAssetBundleFromResources("assets", typeof(TECards).Assembly);
			MozemDownArt = assets.LoadAsset<GameObject>("C_Mozemdown");
			PolyphemusArt = assets.LoadAsset<GameObject>("C_Polyphemus");
			SteroidsArt = assets.LoadAsset<GameObject>("C_Steroids");
			AntiColaArt = assets.LoadAsset<GameObject>("C_Anti-Cola");
			SCP035Art = assets.LoadAsset<GameObject>("C_SCP035");
			SCP207Art = assets.LoadAsset<GameObject>("C_SCP207");
			SCP999Art = assets.LoadAsset<GameObject>("C_SCP999");
			SCP682Art = assets.LoadAsset<GameObject>("C_SCP682");
			GreenCandyArt = assets.LoadAsset<GameObject>("C_GreenCandy");
			BlueCandyArt = assets.LoadAsset<GameObject>("C_BlueCandy");
			RedCandyArt = assets.LoadAsset<GameObject>("C_RedCandy");
			RainbowCandyArt = assets.LoadAsset<GameObject>("C_RainbowCandy");
			YellowCandyArt = assets.LoadAsset<GameObject>("C_YellowCandy");
			SCP330Art = assets.LoadAsset<GameObject>("C_SCP330");
			Candy = CustomCardCategories.instance.CardCategory("Candy");
			CustomCard.BuildCard<MozemDown>();
			CustomCard.BuildCard<Polyphemus>();
			CustomCard.BuildCard<SCP1853>();
			CustomCard.BuildCard<AntiCola>();
			CustomCard.BuildCard<SCP035>();
			CustomCard.BuildCard<SCP682>();
			CustomCard.BuildCard<SCP999>();
			CustomCard.BuildCard<SCP207>();
			CustomCard.BuildCard<BlueCandy>();
			CustomCard.BuildCard<GreenCandy>();
			CustomCard.BuildCard<RedCandy>();
			CustomCard.BuildCard<YellowCandy>();
			CustomCard.BuildCard<RainbowCandy>();
			CustomCard.BuildCard<SCP330>();
			GameModeManager.AddHook("GameStart", (Func<IGameModeHandler, IEnumerator>)GameStart);
			[IteratorStateMachine(/*Could not decode attribute arguments.*/)]
			[CompilerGenerated]
			static IEnumerator GameStart(IGameModeHandler gameModeHandler)
			{
				Enumerator<Player> enumerator = PlayerManager.instance.players.GetEnumerator();
				try
				{
					while (enumerator.MoveNext())
					{
						Player player = enumerator.Current;
						if (!CharacterStatModifiersExtension.GetAdditionalData(player.data.stats).blacklistedCategories.Contains(Candy))
						{
							CharacterStatModifiersExtension.GetAdditionalData(player.data.stats).blacklistedCategories.Add(Candy);
						}
					}
				}
				finally
				{
					((IDisposable)enumerator).Dispose();
				}
				yield break;
			}
		}
	}
}
namespace TECards.RoundsEffects
{
	public class SCP035WasDealtDamageEffect : WasDealtDamageEffect
	{
		public override void WasDealtDamage(Vector2 damage, bool selfDamage)
		{
			Player lastSourceOfDamage = ((Component)this).gameObject.GetComponent<Player>().data.lastSourceOfDamage;
			if (!selfDamage && (Object)(object)lastSourceOfDamage != (Object)null && ((Component)this).gameObject.GetComponent<Player>().data.health <= 0f)
			{
				if ((Object)(object)((Component)lastSourceOfDamage).gameObject.GetComponent<SCP035Effect>() == (Object)null)
				{
					SCP035EffectProxy orAddComponent = ExtensionMethods.GetOrAddComponent<SCP035EffectProxy>(((Component)lastSourceOfDamage).gameObject, false);
				}
				if ((Object)(object)((Component)lastSourceOfDamage).gameObject.GetComponent<SCP035WasDealtDamageEffect>() == (Object)null)
				{
					SCP035WasDealtDamageEffectProxy orAddComponent2 = ExtensionMethods.GetOrAddComponent<SCP035WasDealtDamageEffectProxy>(((Component)lastSourceOfDamage).gameObject, false);
				}
			}
		}
	}
	public class SCP035WasDealtDamageEffectProxy : WasDealtDamageEffect
	{
		public override void WasDealtDamage(Vector2 damage, bool selfDamage)
		{
			Player lastSourceOfDamage = ((Component)this).gameObject.GetComponent<Player>().data.lastSourceOfDamage;
			if (!selfDamage && (Object)(object)lastSourceOfDamage != (Object)null && ((Component)this).gameObject.GetComponent<Player>().data.health <= 0f)
			{
				if ((Object)(object)((Component)lastSourceOfDamage).gameObject.GetComponent<SCP035Effect>() == (Object)null)
				{
					SCP035EffectProxy orAddComponent = ExtensionMethods.GetOrAddComponent<SCP035EffectProxy>(((Component)lastSourceOfDamage).gameObject, false);
				}
				if ((Object)(object)((Component)lastSourceOfDamage).gameObject.GetComponent<SCP035WasDealtDamageEffect>() == (Object)null)
				{
					SCP035WasDealtDamageEffectProxy orAddComponent2 = ExtensionMethods.GetOrAddComponent<SCP035WasDealtDamageEffectProxy>(((Component)lastSourceOfDamage).gameObject, false);
				}
			}
		}
	}
	public class SCP999DealtDamageEffect : HitEffect
	{
		public override void DealtDamage(Vector2 damage, bool selfDamage, Player damagedPlayer = null)
		{
			if ((Object)(object)damagedPlayer != (Object)null)
			{
				SCP999Effect component = ((Component)damagedPlayer).gameObject.GetComponent<SCP999Effect>();
				if ((Object)(object)component != (Object)null)
				{
					component.ResetTimer();
				}
				else
				{
					component = ExtensionMethods.GetOrAddComponent<SCP999Effect>(((Component)damagedPlayer).gameObject, false);
				}
			}
		}
	}
}
namespace TECards.MonoBehaviours
{
	public class AntiColaEffect : CounterReversibleEffect
	{
		private Vector2 prevLoc;

		private Vector2 currLoc;

		private float regenBonus;

		private float elapsedTime = 0f;

		private float interval = 1f;

		public override void OnApply()
		{
		}

		public override void Reset()
		{
		}

		public override CounterStatus UpdateCounter()
		{
			//IL_0003: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			prevLoc = currLoc;
			currLoc = Vector2.op_Implicit(((Component)((ReversibleEffect)this).player).transform.position);
			elapsedTime += TimeHandler.deltaTime;
			if (IsPlayerMoving(currLoc, prevLoc))
			{
				regenBonus = 0f;
				elapsedTime = 0f;
			}
			else if (elapsedTime >= interval)
			{
				regenBonus = 12f;
			}
			return (CounterStatus)0;
		}

		public override void UpdateEffects()
		{
			((ReversibleEffect)this).healthHandlerModifier.regen_add = regenBonus;
		}

		private bool IsPlayerMoving(Vector2 curr, Vector2 prev)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			return (double)Vector2.Distance(curr, prev) > 0.01;
		}
	}
	public class GreenCandyEffect : CounterReversibleEffect
	{
		private float regenAmount;

		public override void OnApply()
		{
		}

		public override void Reset()
		{
		}

		public override CounterStatus UpdateCounter()
		{
			//IL_0037: 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)
			if (((ReversibleEffect)this).player.data.block.IsOnCD())
			{
				regenAmount = 5f;
			}
			else
			{
				regenAmount = 0f;
			}
			return (CounterStatus)0;
		}

		public override void UpdateEffects()
		{
			((ReversibleEffect)this).healthHandlerModifier.regen_add = regenAmount;
		}
	}
	public class LaggyBoiEffect : ReversibleEffect
	{
		private Gun gunToModify;

		private int ping;

		private int id;

		public override void OnAwake()
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			((ReversibleEffect)this).OnAwake();
			Enumerator<int, bool> enumerator = PingMonitor.instance.ConnectedPlayers.Keys.GetEnumerator();
			try
			{
				while (enumerator.MoveNext())
				{
					int current = enumerator.Current;
					Player[] playersByOwnerActorNumber = PingMonitor.instance.GetPlayersByOwnerActorNumber(current);
					for (int i = 0; i < playersByOwnerActorNumber.Length; i++)
					{
						if (((Object)playersByOwnerActorNumber[i]).Equals((object)base.player))
						{
							Debug.Log((object)String.Concat("player is ", ((Object)playersByOwnerActorNumber[i].data).name));
							id = current;
							ping = PingMonitor.instance.PlayerPings[current];
						}
					}
				}
			}
			finally
			{
				((IDisposable)enumerator).Dispose();
			}
			Debug.Log((object)String.Format("ping is {0}", (object)ping));
			GunStatModifier gunStatModifier = base.gunStatModifier;
			gunStatModifier.damage_mult *= 0.5f;
			Debug.Log((object)String.Format("damage is {0}", (object)base.gun.damage));
		}

		public override void OnStart()
		{
			((ReversibleEffect)this).OnStart();
		}

		public override void OnUpdate()
		{
			((ReversibleEffect)this).OnUpdate();
		}
	}
	public class MozemEffect : CounterReversibleEffect
	{
		private int totalAmmoCount;

		private int currentAmmoCount;

		private float attackSpdMultiplier;

		private float spreadMultiplier;

		public override void OnStart()
		{
			totalAmmoCount = ((Component)((ReversibleEffect)this).gun).GetComponentInChildren<GunAmmo>().maxAmmo;
			currentAmmoCount = totalAmmoCount;
		}

		public override CounterStatus UpdateCounter()
		{
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Expected I4, but got Unknown
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
			GunAmmo componentInChildren = ((Component)((ReversibleEffect)this).gun).GetComponentInChildren<GunAmmo>();
			attackSpdMultiplier = 1f;
			spreadMultiplier = 1f;
			totalAmmoCount = componentInChildren.maxAmmo;
			currentAmmoCount = (int)(Int32)ExtensionMethods.GetFieldValue((object)componentInChildren, "currentAmmo");
			if (currentAmmoCount > 0)
			{
				attackSpdMultiplier = Mathf.Lerp(0.1f, 1f, (float)currentAmmoCount / (float)totalAmmoCount * 0.5f);
				spreadMultiplier = Mathf.Lerp(0f, 1f, (float)currentAmmoCount / (float)totalAmmoCount * 0.75f);
				if (totalAmmoCount == 1)
				{
					attackSpdMultiplier = 1f;
					spreadMultiplier = 0f;
				}
			}
			return (CounterStatus)0;
		}

		public override void UpdateEffects()
		{
			((ReversibleEffect)this).gunStatModifier.attackSpeed_mult = attackSpdMultiplier;
			((ReversibleEffect)this).gunStatModifier.spread_mult = spreadMultiplier;
		}

		public override void OnApply()
		{
		}

		public override void Reset()
		{
		}
	}
	public class PolyphemusEffect : CounterReversibleEffect
	{
		private int totalAmmoCount;

		private int currentAmmoCount;

		private float sizeIncrease;

		public override void OnStart()
		{
			totalAmmoCount = ((Component)((ReversibleEffect)this).gun).GetComponentInChildren<GunAmmo>().maxAmmo;
			currentAmmoCount = totalAmmoCount;
		}

		public override CounterStatus UpdateCounter()
		{
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Expected I4, but got Unknown
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			GunAmmo componentInChildren = ((Component)((ReversibleEffect)this).gun).GetComponentInChildren<GunAmmo>();
			sizeIncrease = 0f;
			totalAmmoCount = componentInChildren.maxAmmo;
			currentAmmoCount = (int)(Int32)ExtensionMethods.GetFieldValue((object)componentInChildren, "currentAmmo");
			if (currentAmmoCount > 0)
			{
				sizeIncrease = Mathf.Lerp(10f, 0f, (float)currentAmmoCount / (float)totalAmmoCount);
				if (totalAmmoCount == 1)
				{
					sizeIncrease = 10f;
				}
			}
			return (CounterStatus)0;
		}

		public override void UpdateEffects()
		{
			((ReversibleEffect)this).gunStatModifier.projectileSize_add = sizeIncrease;
		}

		public override void OnApply()
		{
		}

		public override void Reset()
		{
		}
	}
	public class RedCandyEffect : CounterReversibleEffect
	{
		private float duration;

		private float regenAmount;

		public override void OnStart()
		{
			((CounterReversibleEffect)this).OnStart();
			ResetTimer();
		}

		public override void OnApply()
		{
		}

		public override void Reset()
		{
			ResetTimer();
		}

		public override CounterStatus UpdateCounter()
		{
			//IL_0041: 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)
			duration -= TimeHandler.deltaTime;
			if (duration > 0f)
			{
				regenAmount = 10f;
			}
			else
			{
				regenAmount = 0f;
			}
			return (CounterStatus)0;
		}

		public override void UpdateEffects()
		{
			((ReversibleEffect)this).health.regeneration = regenAmount;
		}

		public void ResetTimer()
		{
			duration = 30f;
		}
	}
	public class SCP035Effect : CounterReversibleEffect
	{
		private bool applyDamageBuff;

		private float elapsedTime;

		private float interval = 8f;

		public override void OnStart()
		{
			((CounterReversibleEffect)this).OnStart();
			applyDamageBuff = true;
			elapsedTime = 0f;
		}

		public override void Reset()
		{
			applyDamageBuff = true;
			elapsedTime = 0f;
		}

		public override CounterStatus UpdateCounter()
		{
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			elapsedTime += TimeHandler.deltaTime;
			if (elapsedTime >= interval)
			{
				applyDamageBuff = !applyDamageBuff;
				elapsedTime %= interval;
			}
			return (CounterStatus)0;
		}

		public override void UpdateEffects()
		{
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: 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)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			if (applyDamageBuff)
			{
				((ReversibleEffect)this).gunStatModifier.damage_add = 1f;
				((ReversibleEffect)this).gunStatModifier.attackSpeed_mult = 1f;
				((ReversibleEffect)this).gunAmmoStatModifier.reloadTimeMultiplier_mult = 1f;
				((ReversibleEffect)this).characterStatModifiersModifier.movementSpeed_mult = 1f;
				((ReversibleEffect)this).characterDataModifier.numberOfJumps_add = 0;
				((ReversibleEffect)this).gunStatModifier.projectileColor = Color.red;
			}
			else
			{
				((ReversibleEffect)this).gunStatModifier.damage_add = 0f;
				((ReversibleEffect)this).gunStatModifier.attackSpeed_mult = 0.4f;
				((ReversibleEffect)this).gunAmmoStatModifier.reloadTimeMultiplier_mult = 0.25f;
				((ReversibleEffect)this).characterStatModifiersModifier.movementSpeed_mult = 1.75f;
				((ReversibleEffect)this).characterDataModifier.numberOfJumps_add = 1;
				((ReversibleEffect)this).gunStatModifier.projectileColor = Color.cyan;
			}
		}

		public override void OnApply()
		{
		}

		[IteratorStateMachine(/*Could not decode attribute arguments.*/)]
		public static IEnumerator RemoveProxies(IGameModeHandler gameModeHandler)
		{
			Enumerator<Player> enumerator = PlayerManager.instance.players.GetEnumerator();
			try
			{
				while (enumerator.MoveNext())
				{
					Player player = enumerator.Current;
					SCP035EffectProxy effect1 = ((Component)player).gameObject.GetComponent<SCP035EffectProxy>();
					SCP035WasDealtDamageEffectProxy effect2 = ((Component)player).gameObject.GetComponent<SCP035WasDealtDamageEffectProxy>();
					if ((Object)(object)effect1 != (Object)null)
					{
						Object.Destroy((Object)(object)effect1);
					}
					if ((Object)(object)effect2 != (Object)null)
					{
						Object.Destroy((Object)(object)effect2);
					}
					player.data.stats.WasUpdated();
				}
			}
			finally
			{
				((IDisposable)enumerator).Dispose();
			}
			yield break;
		}
	}
	public class SCP035EffectProxy : CounterReversibleEffect
	{
		private bool applyDamageBuff;

		private float elapsedTime;

		private float interval = 8f;

		public override void OnStart()
		{
			((CounterReversibleEffect)this).OnStart();
			applyDamageBuff = true;
			elapsedTime = 0f;
		}

		public override void Reset()
		{
			applyDamageBuff = true;
			elapsedTime = 0f;
		}

		public override CounterStatus UpdateCounter()
		{
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			elapsedTime += TimeHandler.deltaTime;
			if (elapsedTime >= interval)
			{
				applyDamageBuff = !applyDamageBuff;
				elapsedTime %= interval;
			}
			return (CounterStatus)0;
		}

		public override void UpdateEffects()
		{
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: 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)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			if (applyDamageBuff)
			{
				((ReversibleEffect)this).gunStatModifier.damage_add = 1f;
				((ReversibleEffect)this).gunStatModifier.attackSpeed_mult = 1f;
				((ReversibleEffect)this).gunAmmoStatModifier.reloadTimeMultiplier_mult = 1f;
				((ReversibleEffect)this).characterStatModifiersModifier.movementSpeed_mult = 1f;
				((ReversibleEffect)this).characterDataModifier.numberOfJumps_add = 0;
				((ReversibleEffect)this).gunStatModifier.projectileColor = Color.red;
			}
			else
			{
				((ReversibleEffect)this).gunStatModifier.damage_add = 0f;
				((ReversibleEffect)this).gunStatModifier.attackSpeed_mult = 0.4f;
				((ReversibleEffect)this).gunAmmoStatModifier.reloadTimeMultiplier_mult = 0.25f;
				((ReversibleEffect)this).characterStatModifiersModifier.movementSpeed_mult = 1.75f;
				((ReversibleEffect)this).characterDataModifier.numberOfJumps_add = 1;
				((ReversibleEffect)this).gunStatModifier.projectileColor = Color.cyan;
			}
		}

		public override void OnApply()
		{
		}
	}
	public class SCP1853Effect : CounterReversibleEffect
	{
		private int stacks;

		public override void OnStart()
		{
			((CounterReversibleEffect)this).OnStart();
			stacks = 0;
			CharacterStatModifiers stats = ((ReversibleEffect)this).player.data.stats;
			stats.WasDealtDamageAction = (Action<Vector2, bool>)(object)Delegate.Combine((Delegate)(object)stats.WasDealtDamageAction, (Delegate)(object)new Action<Vector2, bool>(OnDamage));
		}

		public override void OnApply()
		{
		}

		public override void Reset()
		{
			stacks = 0;
		}

		public override CounterStatus UpdateCounter()
		{
			//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 (CounterStatus)0;
		}

		public override void UpdateEffects()
		{
			((ReversibleEffect)this).gunStatModifier.attackSpeed_mult = 1f - (float)stacks * 0.15f;
			((ReversibleEffect)this).gunAmmoStatModifier.reloadTimeMultiplier_mult = 1f - (float)stacks * 0.15f;
			((ReversibleEffect)this).characterStatModifiersModifier.movementSpeed_mult = 1f + (float)stacks * 0.15f;
		}

		public override void OnOnDestroy()
		{
			((ReversibleEffect)this).OnOnDestroy();
			CharacterStatModifiers stats = ((ReversibleEffect)this).player.data.stats;
			stats.WasDealtDamageAction = (Action<Vector2, bool>)(object)Delegate.Remove((Delegate)(object)stats.WasDealtDamageAction, (Delegate)(object)new Action<Vector2, bool>(OnDamage));
		}

		private void OnDamage(Vector2 damage, bool selfDamage)
		{
			if (!selfDamage && stacks < 4)
			{
				stacks++;
			}
		}
	}
	public class SCP207Effect : ReversibleEffect
	{
		private Vector2 prevLoc;

		private Vector2 currLoc;

		private float elapsedTime = 0f;

		private float interval = 0.1f;

		public override void OnStart()
		{
			((ReversibleEffect)this).OnStart();
			elapsedTime = 0f;
			((ReversibleEffect)this).SetLivesToEffect(2147483647);
		}

		public override void OnUpdate()
		{
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: 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_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: 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_009e: Unknown result type (might be due to invalid IL or missing references)
			((ReversibleEffect)this).OnUpdate();
			prevLoc = currLoc;
			currLoc = Vector2.op_Implicit(((Component)base.player).transform.position);
			if (IsPlayerMoving(currLoc, prevLoc))
			{
				elapsedTime += TimeHandler.deltaTime;
				if (elapsedTime >= interval)
				{
					((Damagable)base.health).TakeDamage(Vector2.up * elapsedTime * 10f, Vector2.op_Implicit(((Component)base.player).transform.position), (GameObject)null, (Player)null, false, true);
					elapsedTime %= interval;
				}
			}
		}

		private bool IsPlayerMoving(Vector2 curr, Vector2 prev)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			return (double)Vector2.Distance(curr, prev) > 0.01;
		}
	}
	public class SCP682Effect : MonoBehaviour
	{
		private Player player;

		public void Start()
		{
			player = ((Component)this).gameObject.GetComponentInParent<Player>();
			CharacterStatModifiers stats = player.data.stats;
			stats.WasDealtDamageAction = (Action<Vector2, bool>)(object)Delegate.Combine((Delegate)(object)stats.WasDealtDamageAction, (Delegate)(object)new Action<Vector2, bool>(OnDamage));
		}

		public void Destroy()
		{
			CharacterStatModifiers stats = player.data.stats;
			stats.WasDealtDamageAction = (Action<Vector2, bool>)(object)Delegate.Remove((Delegate)(object)stats.WasDealtDamageAction, (Delegate)(object)new Action<Vector2, bool>(OnDamage));
		}

		private void OnDamage(Vector2 damage, bool selfDamage)
		{
			if (selfDamage)
			{
				CharacterData data = player.data;
				data.health += ((Vector2)(ref damage)).magnitude;
			}
		}
	}
	public class SCP999Effect : TimedReversibleEffect
	{
		private ReversibleColorEffect colorEffect;

		public override void OnStart()
		{
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			((ReversibleEffect)this).OnStart();
			base.duration = 5f;
			((ReversibleEffect)this).characterStatModifiersModifier.movementSpeed_mult = 0.8f;
			((ReversibleEffect)this).gunAmmoStatModifier.reloadTimeMultiplier_mult = 0.5f;
			colorEffect = ExtensionMethods.GetOrAddComponent<ReversibleColorEffect>(((Component)((ReversibleEffect)this).player).gameObject, false);
			((ColorEffect)colorEffect).SetColor(new Color(1f, 0.65f, 0f));
			CharacterStatModifiers stats = ((ReversibleEffect)this).player.data.stats;
			stats.WasDealtDamageAction = (Action<Vector2, bool>)(object)Delegate.Combine((Delegate)(object)stats.WasDealtDamageAction, (Delegate)(object)new Action<Vector2, bool>(OnDamage));
		}

		public override void OnUpdate()
		{
			((TimedReversibleEffect)this).OnUpdate();
			((ReversibleEffect)this).ApplyModifiers();
		}

		public override void OnOnDestroy()
		{
			((ReversibleEffect)this).OnOnDestroy();
			Object.Destroy((Object)(object)colorEffect);
			CharacterStatModifiers stats = ((ReversibleEffect)this).player.data.stats;
			stats.WasDealtDamageAction = (Action<Vector2, bool>)(object)Delegate.Remove((Delegate)(object)stats.WasDealtDamageAction, (Delegate)(object)new Action<Vector2, bool>(OnDamage));
		}

		public void ResetTimer()
		{
			base.duration = 4f;
		}

		private void OnDamage(Vector2 damage, bool selfDamage)
		{
			Player lastSourceOfDamage = ((ReversibleEffect)this).player.data.lastSourceOfDamage;
			if (!selfDamage && (Object)(object)lastSourceOfDamage != (Object)null)
			{
				lastSourceOfDamage.data.healthHandler.Heal(((Vector2)(ref damage)).magnitude * 0.5f);
			}
		}
	}
	public class YellowCandyEffect : CounterReversibleEffect
	{
		private float duration;

		private float multiplier;

		public override void OnStart()
		{
			((CounterReversibleEffect)this).OnStart();
			ResetTimer();
		}

		public override void OnApply()
		{
		}

		public override void Reset()
		{
			ResetTimer();
		}

		public override CounterStatus UpdateCounter()
		{
			//IL_0041: 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)
			duration -= TimeHandler.deltaTime;
			if (duration > 0f)
			{
				multiplier = 1.5f;
			}
			else
			{
				multiplier = 1f;
			}
			return (CounterStatus)0;
		}

		public override void UpdateEffects()
		{
			((ReversibleEffect)this).characterStatModifiersModifier.movementSpeed_mult = multiplier;
		}

		public void ResetTimer()
		{
			duration = 30f;
		}
	}
}
namespace TECards.Cards
{
	internal class AntiCola : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			statModifiers.movementSpeed = 0.7f;
			statModifiers.regen = 12f;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			AntiColaEffect antiColaEffect = ((Component)player).gameObject.AddComponent<AntiColaEffect>();
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			Object.Destroy((Object)(object)((Component)player).gameObject.GetComponent<AntiColaEffect>());
		}

		protected override string GetTitle()
		{
			return "Anti-Cola";
		}

		protected override string GetDescription()
		{
			return "Grants constant health regeneration. Regeneration is increased if you stand still.";
		}

		protected override GameObject GetCardArt()
		{
			return TECards.AntiColaArt;
		}

		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 = "Life Regen",
					amount = "+12",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Movement Speed",
					amount = "-30%",
					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 "TE";
		}
	}
	internal class BlueCandy : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			statModifiers.health = 1.5f;
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { TECards.Candy };
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
		}

		protected override string GetTitle()
		{
			return "Blue Candy";
		}

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

		protected override GameObject GetCardArt()
		{
			return TECards.BlueCandyArt;
		}

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

		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 = "Health",
					amount = "+50%",
					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)2;
		}

		public override string GetModName()
		{
			return "TE";
		}
	}
	internal class Card : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			gun.cos = 2f;
			gun.projectielSimulatonSpeed = 0.7f;
			gun.damage = 1.5f;
			gun.attackSpeed = 1.2f;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
		}

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

		protected override string GetDescription()
		{
			return "Your bullets become much more lively";
		}

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

		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 = "+50%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Projectile Speed",
					amount = "-30%",
					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 "TE";
		}
	}
	internal class GreenCandy : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			block.cdMultiplier = 1.1f;
			statModifiers.health = 1.2f;
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { TECards.Candy };
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			GreenCandyEffect greenCandyEffect = ((Component)player).gameObject.AddComponent<GreenCandyEffect>();
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			Object.Destroy((Object)(object)((Component)player).gameObject.GetComponent<GreenCandyEffect>());
		}

		protected override string GetTitle()
		{
			return "Green Candy";
		}

		protected override string GetDescription()
		{
			return "Grants health regeneration while your block is on cooldown.";
		}

		protected override GameObject GetCardArt()
		{
			return TECards.GreenCandyArt;
		}

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

		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 = "Life Regen",
					amount = "+5",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Health",
					amount = "+20%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Block Cooldown",
					amount = "+10%",
					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)5;
		}

		public override string GetModName()
		{
			return "TE";
		}
	}
	internal class LaggyBoi : CustomCard
	{
		private float damageToAdd;

		private float attackSpeedToAdd;

		private int ping;

		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			Enumerator<int, bool> enumerator = PingMonitor.instance.ConnectedPlayers.Keys.GetEnumerator();
			try
			{
				while (enumerator.MoveNext())
				{
					int current = enumerator.Current;
					Player[] playersByOwnerActorNumber = PingMonitor.instance.GetPlayersByOwnerActorNumber(current);
					for (int i = 0; i < playersByOwnerActorNumber.Length; i++)
					{
						if (((Object)playersByOwnerActorNumber[i]).Equals((object)player))
						{
							Debug.Log((object)String.Format("playerid is {0}", (object)current));
							int num = current;
							ping = PingMonitor.instance.PlayerPings[current];
							Debug.Log((object)String.Format("ping is {0}", (object)ping));
							ping = 88;
						}
					}
				}
			}
			finally
			{
				((IDisposable)enumerator).Dispose();
			}
			attackSpeedToAdd = gun.attackSpeed * (float)ping * 0.01f * 0.333f;
			damageToAdd = gun.damage * (float)ping * 0.01f * 0.333f;
			Debug.Log((object)String.Format("attackspd{0}, dmg{1}", (object)attackSpeedToAdd, (object)damageToAdd));
			gun.attackSpeed -= attackSpeedToAdd;
			gun.damage += damageToAdd;
			Debug.Log((object)String.Format("damage is {0}", (object)gun.damage));
			Debug.Log((object)String.Format("atkspd is {0}", (object)gun.attackSpeed));
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			gun.attackSpeed += attackSpeedToAdd;
			gun.damage -= damageToAdd;
		}

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

		protected override string GetDescription()
		{
			return "Gain power based on ping";
		}

		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_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Expected O, but got Unknown
			//IL_003b: 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_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: 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_006b: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "damage",
					amount = ((Int32)(ref ping)).ToString(),
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "attackSpeed",
					amount = ((Int32)(ref ping)).ToString(),
					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)2;
		}

		public override string GetModName()
		{
			return "TE";
		}
	}
	internal class MozemDown : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			gun.damage = 0.1f;
			gun.reloadTimeAdd = 1f;
			gun.ammo = 40;
			gun.attackSpeed = 0.85f;
			gun.spread = 0.3f;
			statModifiers.movementSpeed = 0.8f;
			cardInfo.allowMultiple = false;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			MozemEffect orAddComponent = ExtensionMethods.GetOrAddComponent<MozemEffect>(((Component)player).gameObject, false);
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			Object.Destroy((Object)(object)((Component)player).gameObject.GetComponent<MozemEffect>());
		}

		protected override string GetTitle()
		{
			return "Mozem Down";
		}

		protected override string GetDescription()
		{
			return "Attack speed and accuracy increase as the amount of ammo remaining decreases.";
		}

		protected override GameObject GetCardArt()
		{
			return TECards.MozemDownArt;
		}

		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 = true,
					stat = "Ammo",
					amount = "+40",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Attack Speed",
					amount = "+15%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Damage",
					amount = "-90%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Reload Time",
					amount = "+1.0s",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Movement Speed",
					amount = "-20%",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return (CardThemeColorType)6;
		}

		public override string GetModName()
		{
			return "TE";
		}
	}
	internal class Polyphemus : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.allowMultiple = false;
			gun.reloadTimeAdd = 0.25f;
			gun.damage = 1.5f;
			gun.attackSpeed = 1.5f;
			gun.projectielSimulatonSpeed = 0.5f;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			PolyphemusEffect orAddComponent = ExtensionMethods.GetOrAddComponent<PolyphemusEffect>(((Component)player).gameObject, false);
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			Object.Destroy((Object)(object)((Component)player).gameObject.GetComponent<PolyphemusEffect>());
		}

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

		protected override string GetDescription()
		{
			return "Bullet size increases as the amount of ammo remaining decreases.";
		}

		protected override GameObject GetCardArt()
		{
			return TECards.PolyphemusArt;
		}

		protected override Rarity GetRarity()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return (Rarity)1;
		}

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Expected O, but got Unknown
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[4]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Damage",
					amount = "+50%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Reload Time",
					amount = "+0.25s",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Projectile Speed",
					amount = "-50%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Attack Speed",
					amount = "-50%",
					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 "TE";
		}
	}
	internal class RainbowCandy : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			statModifiers.health = 1.2f;
			statModifiers.movementSpeed = 1.1f;
			gun.attackSpeed = 0.9f;
			block.cdMultiplier = 0.8f;
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { TECards.Candy };
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
		}

		protected override string GetTitle()
		{
			return "Rainbow Candy";
		}

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

		protected override GameObject GetCardArt()
		{
			return TECards.RainbowCandyArt;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Expected O, but got Unknown
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[4]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Health",
					amount = "+20%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Movement Speed",
					amount = "+10%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Attack Speed",
					amount = "+10%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Block Cooldown",
					amount = "-20%",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return (CardThemeColorType)4;
		}

		public override string GetModName()
		{
			return "TE";
		}
	}
	internal class RedCandy : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			statModifiers.regen = 3f;
			statModifiers.health = 1.3f;
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { TECards.Candy };
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			RedCandyEffect redCandyEffect = ((Component)player).gameObject.AddComponent<RedCandyEffect>();
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			Object.Destroy((Object)(object)((Component)player).gameObject.GetComponent<RedCandyEffect>());
		}

		protected override string GetTitle()
		{
			return "Red Candy";
		}

		protected override string GetDescription()
		{
			return "Grants health regeneration for the first 30 seconds of each round.";
		}

		protected override GameObject GetCardArt()
		{
			return TECards.RedCandyArt;
		}

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

		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 = "Life Regen",
					amount = "+10",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Health",
					amount = "+30%",
					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 "TE";
		}
	}
	internal class SCP035 : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.allowMultiple = false;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			SCP035Effect sCP035Effect = ((Component)player).gameObject.AddComponent<SCP035Effect>();
			SCP035WasDealtDamageEffect orAddComponent = ExtensionMethods.GetOrAddComponent<SCP035WasDealtDamageEffect>(((Component)player).gameObject, false);
			GameModeManager.AddHook("PointEnd", (Func<IGameModeHandler, IEnumerator>)SCP035Effect.RemoveProxies);
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			Object.Destroy((Object)(object)((Component)player).gameObject.GetComponent<SCP035Effect>());
			GameModeManager.RemoveHook("PointEnd", (Func<IGameModeHandler, IEnumerator>)SCP035Effect.RemoveProxies);
		}

		protected override string GetTitle()
		{
			return "SCP-035";
		}

		protected override string GetDescription()
		{
			return "Alternates between two powerful buffs. This card's power is temporarily transferred to players who kill someone in possesion of SCP-035.";
		}

		protected override GameObject GetCardArt()
		{
			return TECards.SCP035Art;
		}

		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 (CardInfoStat[])(object)new CardInfoStat[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 "TE";
		}
	}
	internal class SCP096 : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
		}

		protected override string GetTitle()
		{
			return "SCP-096";
		}

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

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

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

		public override string GetModName()
		{
			return "TE";
		}
	}
	internal class SCP1853 : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			gun.reloadTime = 0.85f;
			gun.attackSpeed = 0.85f;
			statModifiers.movementSpeed = 1.15f;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			SCP1853Effect sCP1853Effect = ((Component)player).gameObject.AddComponent<SCP1853Effect>();
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			Object.Destroy((Object)(object)((Component)player).gameObject.GetComponent<SCP1853Effect>());
		}

		protected override string GetTitle()
		{
			return "SCP-1853";
		}

		protected override string GetDescription()
		{
			return "Taking damage grants additional bonus stats. This effect may stack up to four times.";
		}

		protected override GameObject GetCardArt()
		{
			return TECards.SteroidsArt;
		}

		protected override Rarity GetRarity()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return (Rarity)1;
		}

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[3]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Movement Speed",
					amount = "+15%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Attack Speed",
					amount = "+15%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Reload Time",
					amount = "-15%",
					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)5;
		}

		public override string GetModName()
		{
			return "TE";
		}
	}
	internal class SCP207 : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			block.cdMultiplier = 0.5f;
			statModifiers.movementSpeed = 1.75f;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			SCP207Effect sCP207Effect = ((Component)player).gameObject.AddComponent<SCP207Effect>();
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			Object.Destroy((Object)(object)((Component)player).gameObject.GetComponent<SCP207Effect>());
		}

		protected override string GetTitle()
		{
			return "SCP-207";
		}

		protected override string GetDescription()
		{
			return "Drains health while moving.";
		}

		protected override GameObject GetCardArt()
		{
			return TECards.SCP207Art;
		}

		protected override Rarity GetRarity()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return (Rarity)1;
		}

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Movement Speed",
					amount = "+75%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Block Cooldown",
					amount = "-50%",
					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 "TE";
		}
	}
	internal class SCP330 : CustomCard
	{
		public static CardCategory[] CandyCategory = (CardCategory[])(object)new CardCategory[1] { CustomCardCategories.instance.CardCategory("Candy") };

		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.allowMultiple = false;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CardInfo candyCard = GetCandyCard();
			Cards.instance.AddCardToPlayer(player, candyCard, false, "", 0f, 0f, true);
			CardBarUtils.instance.ShowAtEndOfPhase(player, candyCard);
			CardInfo candyCard2 = GetCandyCard();
			Cards.instance.AddCardToPlayer(player, candyCard2, false, "", 0f, 0f, true);
			CardBarUtils.instance.ShowAtEndOfPhase(player, candyCard2);
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
		}

		protected override string GetTitle()
		{
			return "SCP-330";
		}

		protected override string GetDescription()
		{
			return "Get two random candies.";
		}

		protected override GameObject GetCardArt()
		{
			return TECards.SCP330Art;
		}

		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 (CardInfoStat[])(object)new CardInfoStat[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 "TE";
		}

		public static CardInfo GetCandyCard()
		{
			return (CardInfo)(Random.Range(0, 5) switch
			{
				0 => Cards.instance.GetCardWithName("Blue Candy"), 
				1 => Cards.instance.GetCardWithName("Yellow Candy"), 
				2 => Cards.instance.GetCardWithName("Green Candy"), 
				3 => Cards.instance.GetCardWithName("Rainbow Candy"), 
				4 => Cards.instance.GetCardWithName("Red Candy"), 
				_ => null, 
			});
		}
	}
	internal class SCP682 : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			statModifiers.health = 1.5f;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			SCP682Effect orAddComponent = ExtensionMethods.GetOrAddComponent<SCP682Effect>(((Component)player).gameObject, false);
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			Object.Destroy((Object)(object)((Component)player).gameObject.GetComponent<SCP682Effect>());
		}

		protected override string GetTitle()
		{
			return "SCP-682";
		}

		protected override string GetDescription()
		{
			return "Become immune to self-damage.";
		}

		protected override GameObject GetCardArt()
		{
			return TECards.SCP682Art;
		}

		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 = "Health",
					amount = "+50%",
					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 "TE";
		}
	}
	internal class SCP914 : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
		}

		protected override string GetTitle()
		{
			return "SCP-914";
		}

		protected override string GetDescription()
		{
			return "Upgrade a random card you own to a card of a higher rarity. Repeats 3 times.";
		}

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

		public override string GetModName()
		{
			return "TE";
		}
	}
	internal class SCP999 : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			gun.reloadTime = 0.5f;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			SCP999DealtDamageEffect orAddComponent = ExtensionMethods.GetOrAddComponent<SCP999DealtDamageEffect>(((Component)player).gameObject, false);
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			Object.Destroy((Object)(object)ExtensionMethods.GetOrAddComponent<SCP999DealtDamageEffect>(((Component)player).gameObject, false));
		}

		protected override string GetTitle()
		{
			return "SCP-999";
		}

		protected override string GetDescription()
		{
			return "Bullets coat players in SCP-999, slowing them. Players coated in SCP-999 have decreased reload time. Players who damage someone effected by SCP-999 are healed";
		}

		protected override GameObject GetCardArt()
		{
			return TECards.SCP999Art;
		}

		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 = "Reload Time",
					amount = "-50%",
					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 "TE";
		}
	}
	internal class Template : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			Debug.Log((object)String.Concat("[TE][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}.", (object)"TE", (object)((CustomCard)this).GetTitle(), (object)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}.", (object)"TE", (object)((CustomCard)this).GetTitle(), (object)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_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)0;
		}

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

		public override string GetModName()
		{
			return "TE";
		}
	}
	internal class YellowCandy : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			gun.attackSpeed = 0.8f;
			gun.reloadTime = 0.8f;
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { TECards.Candy };
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			YellowCandyEffect yellowCandyEffect = ((Component)player).gameObject.AddComponent<YellowCandyEffect>();
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			Object.Destroy((Object)(object)((Component)player).gameObject.GetComponent<YellowCandyEffect>());
		}

		protected override string GetTitle()
		{
			return "Yellow Candy";
		}

		protected override string GetDescription()
		{
			return "Grants bonus movement speed for the first 30 seconds of each round.";
		}

		protected override GameObject GetCardArt()
		{
			return TECards.YellowCandyArt;
		}

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

		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 = "Movement Speed",
					amount = "+50%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Attack Speed",
					amount = "+20%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Reload Time",
					amount = "-20%",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return (CardThemeColorType)1;
		}

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