Decompiled source of CoolRoundsModLol v2.0.2

CoolRoundsModLol.dll

Decompiled a day ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Threading.Tasks;
using BepInEx;
using BepInEx.Configuration;
using CoolRoundsModLol.Cards;
using CoolRoundsModLol.MonoBehaviours;
using CoolRoundsModLol.RoundsEffects;
using HarmonyLib;
using Jotunn.Utils;
using ModdingUtils.MonoBehaviours;
using ModdingUtils.RoundsEffects;
using Sonigon;
using Sonigon.Internal;
using TMPro;
using UnboundLib;
using UnboundLib.Cards;
using UnboundLib.Utils.UI;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("CoolRoundsModLol")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+d484f2102f7e3925cf855c4f87da6689367a729b")]
[assembly: AssemblyProduct("CoolRoundsModLol")]
[assembly: AssemblyTitle("CoolRoundsModLol")]
[assembly: AssemblyVersion("1.0.0.0")]
public class TestBulletMono : RayHitEffect
{
	[Header("Sounds")]
	public SoundEvent soundEventDamageOverTime;

	[Header("Settings")]
	public float time = 0.1f;

	public float interval = 0.1f;

	public Color color = new Color(1f, 1f, 0f, 1f);

	public TestBulletMono crit;

	private void Start()
	{
		if ((Object)(object)((Component)this).GetComponentInParent<ProjectileHit>() != (Object)null)
		{
			((Component)this).GetComponentInParent<ProjectileHit>().bulletCanDealDeamage = false;
		}
	}

	public override HasToReturn DoHitEffect(HitInfo hit)
	{
		//IL_0064: Unknown result type (might be due to invalid IL or missing references)
		//IL_0069: Unknown result type (might be due to invalid IL or missing references)
		//IL_006e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0079: Unknown result type (might be due to invalid IL or missing references)
		//IL_007e: 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)
		if (Object.op_Implicit((Object)(object)hit.transform))
		{
			((Component)((Component)this).transform.root).GetComponentsInChildren<TestBulletMono>();
			ProjectileHit componentInParent = ((Component)this).GetComponentInParent<ProjectileHit>();
			DamageOverTime component = ((Component)hit.transform).GetComponent<DamageOverTime>();
			if (Object.op_Implicit((Object)(object)component))
			{
				crit = ((Component)hit.transform).gameObject.AddComponent<TestBulletMono>();
				component.TakeDamageOverTime(Vector2.op_Implicit(componentInParent.damage * 2f * ((Component)this).transform.forward), Vector2.op_Implicit(((Component)this).transform.position), time, interval, color, soundEventDamageOverTime, ((Component)this).GetComponentInParent<ProjectileHit>().ownWeapon, ((Component)this).GetComponentInParent<ProjectileHit>().ownPlayer, true);
			}
			return (HasToReturn)1;
		}
		return (HasToReturn)1;
	}

	public void Destroy()
	{
		Object.Destroy((Object)(object)this);
	}
}
namespace CoolRoundsModLol
{
	internal class Assets
	{
		private static readonly AssetBundle Bundle = AssetUtils.LoadAssetBundleFromResources("coolroundsartlol", typeof(CoolRoundsModLol).Assembly);

		public static GameObject BundleArt = Bundle.LoadAsset<GameObject>("C_BundleCard");

		public static GameObject GhostBulletArt = Bundle.LoadAsset<GameObject>("C_GhostBullet");

		public static GameObject UnoReverseArt = Bundle.LoadAsset<GameObject>("C_UnoReverse");

		public static GameObject FardBulletArt = Bundle.LoadAsset<GameObject>("C_Fard");

		public static GameObject KnockbackArt = Bundle.LoadAsset<GameObject>("C_Knockback");

		public static GameObject TPBulletsArt = Bundle.LoadAsset<GameObject>("C_TPBullets");

		public static GameObject PiercingArt = Bundle.LoadAsset<GameObject>("C_Piercing");

		public static GameObject RubberBandArt = Bundle.LoadAsset<GameObject>("C_Rubber");

		public static GameObject AbsorbArt = Bundle.LoadAsset<GameObject>("C_Absorb");

		public static GameObject TestArt = Bundle.LoadAsset<GameObject>("C_Test");

		public static GameObject PewArt = Bundle.LoadAsset<GameObject>("C_Pew");

		public static GameObject PeelsArt = Bundle.LoadAsset<GameObject>("C_Peels");

		public static AudioClip FardClip = Bundle.LoadAsset<AudioClip>("A_Fard");

		public static AudioClip RareFardClip = Bundle.LoadAsset<AudioClip>("A_Fard2");

		public static AudioClip PewClip = Bundle.LoadAsset<AudioClip>("A_Pew");
	}
	[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.Cool.Rounds.Mod.lol", "CoolRoundsModLol", "2.0.2")]
	[BepInProcess("Rounds.exe")]
	public class CoolRoundsModLol : BaseUnityPlugin
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static UnityAction <>9__12_0;

			internal void <Start>b__12_0()
			{
			}
		}

		private const string ModId = "com.Cool.Rounds.Mod.lol";

		private const string ModName = "CoolRoundsModLol";

		public const string Version = "2.0.2";

		public const string ModInitials = "CRML";

		public static ConfigEntry<float> globalVolMute;

		public static CoolRoundsModLol instance { get; private set; }

		private void Awake()
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			new Harmony("com.Cool.Rounds.Mod.lol").PatchAll();
			globalVolMute = ((BaseUnityPlugin)this).Config.Bind<float>("CRML", "CRML sounds volume", 100f, "CRML sounds volume");
		}

		private void GlobalVolAction(float val)
		{
			globalVolMute.Value = val;
		}

		private void NewGUI(GameObject menu)
		{
			Slider val = default(Slider);
			MenuHandler.CreateSlider("volume for CRML cards", menu, 50, 0f, 100f, globalVolMute.Value, (UnityAction<float>)GlobalVolAction, ref val, true, (Color?)null, (Direction)0, true, (Color?)null, (TMP_FontAsset)null, (Material)null, (TextAlignmentOptions?)null);
		}

		private void Start()
		{
			//IL_006b: 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_0076: Expected O, but got Unknown
			instance = this;
			Unbound.RegisterCredits("CoolRoundsModLol", new string[2] { "Orangenal Name - Developer", "GoldenGaming25 - Idea man" }, new string[2] { "GitHub", "Patreon" }, new string[2] { "https://github.com/Orangenal-name/CoolRoundsModLol", "https://www.patreon.com/orangenal" });
			object obj = <>c.<>9__12_0;
			if (obj == null)
			{
				UnityAction val = delegate
				{
				};
				<>c.<>9__12_0 = val;
				obj = (object)val;
			}
			Unbound.RegisterMenu("Cool rounds mod lol", (UnityAction)obj, (Action<GameObject>)NewGUI, (GameObject)null, true);
			CustomCard.BuildCard<Fard>();
			CustomCard.BuildCard<Bundle>();
			CustomCard.BuildCard<Piercing>();
			CustomCard.BuildCard<GhostBullet>();
			CustomCard.BuildCard<KnockBackStick>();
			CustomCard.BuildCard<UnoReverse>();
			CustomCard.BuildCard<TeleportBullets>();
			CustomCard.BuildCard<BlockLag>();
			CustomCard.BuildCard<Absorption>();
			CustomCard.BuildCard<PewPewCard>();
			CustomCard.BuildCard<BananaPeel>();
		}
	}
}
namespace CoolRoundsModLol.RoundsEffects
{
	internal class AbsorbEffect : WasHitEffect
	{
		private Player player;

		private Gun gun;

		private GunAmmo gunAmmo;

		public static ReversibleEffect reversibleEffect;

		public static int extraBullets;

		public override void WasDealtDamage(Vector2 damage, bool selfDamage)
		{
			player = ((Component)this).gameObject.GetComponent<Player>();
			if (player.data.health <= 0f)
			{
				GunAmmo obj = reversibleEffect.gunAmmo;
				obj.maxAmmo -= extraBullets;
				extraBullets = 0;
			}
			else if (!selfDamage && !((Object)(object)player.data.lastSourceOfDamage == (Object)null))
			{
				gun = ((Component)((Component)player).GetComponent<Holding>().holdable).GetComponent<Gun>();
				gunAmmo = ((Component)gun).GetComponentInChildren<GunAmmo>();
				reversibleEffect = ((Component)player).gameObject.AddComponent<ReversibleEffect>();
				GunAmmo obj2 = reversibleEffect.gunAmmo;
				obj2.maxAmmo++;
				extraBullets++;
			}
		}
	}
	internal class FardEffect : HitSurfaceEffect
	{
		private Player player;

		private SoundParameterIntensity soundParameterIntensity = new SoundParameterIntensity(0f, (UpdateMode)0);

		private Random random = new Random();

		public override void Hit(Vector2 position, Vector2 normal, Vector2 velocity)
		{
			player = ((Component)this).gameObject.GetComponent<Player>();
			soundParameterIntensity.intensity = 0.8f;
			foreach (CardInfo currentCard in player.data.currentCards)
			{
				if (currentCard.cardName.ToLower() == "toxic cloud")
				{
					soundParameterIntensity.intensity = 1f;
					break;
				}
			}
			SoundContainer val = ScriptableObject.CreateInstance<SoundContainer>();
			val.setting.volumeIntensityEnable = true;
			float num = 0.25f;
			if (Random.value <= num)
			{
				val.audioClip[0] = Assets.RareFardClip;
			}
			else
			{
				val.audioClip[0] = Assets.FardClip;
			}
			SoundEvent val2 = ScriptableObject.CreateInstance<SoundEvent>();
			val2.soundContainerArray[0] = val;
			SoundParameterIntensity obj = soundParameterIntensity;
			obj.intensity *= CoolRoundsModLol.globalVolMute.Value / 100f;
			SoundManager.Instance.Play(val2, ((Component)this).transform, (SoundParameterBase[])(object)new SoundParameterBase[1] { (SoundParameterBase)soundParameterIntensity });
		}
	}
	internal class LagEffect : MonoBehaviour
	{
		public Block block;

		public Player player;

		public CharacterData data;

		private Action<BlockTriggerType> rewindAction;

		private Vector3 playerPosition = new Vector3(0f, 0f, 0f);

		private bool teleportQueueing;

		private float remaining = 5f;

		private void Start()
		{
			if (Object.op_Implicit((Object)(object)block))
			{
				rewindAction = GetDoBlockAction(player, block, data).Invoke;
				block.BlockAction = (Action<BlockTriggerType>)Delegate.Combine(block.BlockAction, rewindAction);
			}
		}

		private void Update()
		{
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			if (remaining >= 0f)
			{
				if (!GameManager.instance.battleOngoing)
				{
					remaining = -1f;
					teleportQueueing = false;
					Debug.Log((object)"Cancel lag back");
				}
				else
				{
					remaining -= Time.deltaTime;
					teleportQueueing = true;
				}
			}
			else if (teleportQueueing)
			{
				teleportQueueing = false;
				((Component)player).GetComponentInParent<PlayerCollision>().IgnoreWallForFrames(2);
				((Component)player).transform.position = playerPosition;
			}
		}

		public Action<BlockTriggerType> GetDoBlockAction(Player player, Block block, CharacterData data)
		{
			return delegate
			{
				//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)
				playerPosition = ((Component)player).transform.position;
				remaining = 5f;
			};
		}

		private void OnDestroy()
		{
			block.BlockAction = (Action<BlockTriggerType>)Delegate.Remove(block.BlockAction, rewindAction);
		}

		public void Destroy()
		{
			Object.Destroy((Object)(object)this);
			block.BlockAction = (Action<BlockTriggerType>)Delegate.Remove(block.BlockAction, rewindAction);
		}
	}
	internal class SwapEffect : MonoBehaviour
	{
		public Block block;

		public Player player;

		public CharacterData data;

		private Action<BlockTriggerType> reverseAction;

		private void Start()
		{
			if (Object.op_Implicit((Object)(object)block))
			{
				reverseAction = GetDoBlockAction(player, block, data).Invoke;
				block.BlockAction = (Action<BlockTriggerType>)Delegate.Combine(block.BlockAction, reverseAction);
			}
		}

		public Action<BlockTriggerType> GetDoBlockAction(Player player, Block block, CharacterData data)
		{
			return delegate
			{
				//IL_0072: 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_0083: Unknown result type (might be due to invalid IL or missing references)
				//IL_0088: 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_008a: 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)
				//IL_008c: 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_00c0: Unknown result type (might be due to invalid IL or missing references)
				List<Player> players = PlayerManager.instance.players;
				List<Player> list = new List<Player>();
				for (int num = players.Count() - 1; num >= 0; num--)
				{
					if (players[num].teamID != player.teamID)
					{
						list.Add(players[num]);
					}
				}
				if (list.Count >= 1)
				{
					Player obj = list[Random.Range(0, list.Count)];
					Vector3 position = ((Component)obj).transform.position;
					Vector3 position2 = ((Component)player).transform.position;
					Vector3 val = position;
					position = position2;
					position2 = val;
					((Component)player).GetComponentInParent<PlayerCollision>().IgnoreWallForFrames(2);
					((Component)obj).GetComponentInParent<PlayerCollision>().IgnoreWallForFrames(2);
					((Component)obj).transform.position = position;
					((Component)player).transform.position = position2;
				}
			};
		}

		private void OnDestroy()
		{
			block.BlockAction = (Action<BlockTriggerType>)Delegate.Remove(block.BlockAction, reverseAction);
		}

		public void Destroy()
		{
			Object.Destroy((Object)(object)this);
			block.BlockAction = (Action<BlockTriggerType>)Delegate.Remove(block.BlockAction, reverseAction);
		}
	}
	internal class TeleportToBulletEffect : HitSurfaceEffect
	{
		private Player player;

		private Vector3 TpLoc;

		public override void Hit(Vector2 position, Vector2 normal, Vector2 velocity)
		{
			//IL_0011: 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)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: 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_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: 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_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			player = ((Component)this).gameObject.GetComponent<Player>();
			Vector3 val = Vector2.op_Implicit(new Vector2(normal.x * ((Component)player).transform.localScale.x, normal.y * ((Component)player).transform.localScale.y));
			TpLoc = new Vector3(position.x + val.x, position.y + val.y, ((Component)player).transform.position.z);
			((Component)player).GetComponentInParent<PlayerCollision>().IgnoreWallForFrames(2);
			((Component)player).transform.position = TpLoc;
		}
	}
	internal class TestBlockEffect : MonoBehaviour
	{
		public Block block;

		public Player player;

		public CharacterData data;

		private Action<BlockTriggerType> rewindAction;

		public void Start()
		{
			if (Object.op_Implicit((Object)(object)block))
			{
				rewindAction = GetDoBlockAction(player, block, data).Invoke;
				block.BlockAction = (Action<BlockTriggerType>)Delegate.Combine(block.BlockAction, rewindAction);
			}
		}

		public Action<BlockTriggerType> GetDoBlockAction(Player player, Block block, CharacterData data)
		{
			return async delegate
			{
				Vector3 playerPosition = ((Component)player).transform.position;
				await Task.Delay(5000);
				((Component)player).GetComponentInParent<PlayerCollision>().IgnoreWallForFrames(2);
				((Component)player).transform.position = playerPosition;
			};
		}

		public void OnDestroy()
		{
			block.BlockAction = (Action<BlockTriggerType>)Delegate.Remove(block.BlockAction, rewindAction);
		}

		public void Destroy()
		{
			Object.Destroy((Object)(object)this);
			block.BlockAction = (Action<BlockTriggerType>)Delegate.Remove(block.BlockAction, rewindAction);
		}
	}
	internal class TestHitSurfaceEffect : HitSurfaceEffect
	{
		private Player player;

		private Gun gun;

		public override void Hit(Vector2 position, Vector2 normal, Vector2 velocity)
		{
			player = ((Component)this).gameObject.GetComponent<Player>();
			gun = ((Component)((Component)player).GetComponent<Holding>().holdable).GetComponent<Gun>();
			gun.numberOfProjectiles = 10;
			gun.spread = 0f;
		}
	}
}
namespace CoolRoundsModLol.MonoBehaviours
{
	internal class AbsorbMono : MonoBehaviour
	{
		public void Start()
		{
			if (AbsorbEffect.extraBullets > 0)
			{
				GunAmmo gunAmmo = AbsorbEffect.reversibleEffect.gunAmmo;
				gunAmmo.maxAmmo--;
				AbsorbEffect.extraBullets--;
			}
		}
	}
	internal class PewMono : MonoBehaviour
	{
		private SoundParameterIntensity soundParameterIntensity = new SoundParameterIntensity(0f, (UpdateMode)0);

		public void Start()
		{
			soundParameterIntensity.intensity = 1f;
			SoundContainer val = ScriptableObject.CreateInstance<SoundContainer>();
			val.setting.volumeIntensityEnable = true;
			val.audioClip[0] = Assets.PewClip;
			SoundEvent val2 = ScriptableObject.CreateInstance<SoundEvent>();
			val2.soundContainerArray[0] = val;
			SoundParameterIntensity obj = soundParameterIntensity;
			obj.intensity *= CoolRoundsModLol.globalVolMute.Value / 100f;
			SoundManager.Instance.Play(val2, ((Component)this).transform, (SoundParameterBase[])(object)new SoundParameterBase[1] { (SoundParameterBase)soundParameterIntensity });
		}
	}
	internal class SlipMono : MonoBehaviour
	{
		private float remaining;

		private bool WillSlip;

		private float rand;

		private Player player;

		private ReversibleEffect reversibleEffect;

		private float percentChance = 0.005f;

		public void Start()
		{
			player = ((Component)this).gameObject.GetComponent<Player>();
			reversibleEffect = ((Component)player).gameObject.AddComponent<ReversibleEffect>();
			reversibleEffect.player = player;
			reversibleEffect.characterStatModifiersModifier.movementSpeed_mult = 10f;
		}

		public void FixedUpdate()
		{
			rand = Random.value;
			if (rand <= percentChance)
			{
				WillSlip = true;
			}
			if (remaining <= 0f && WillSlip)
			{
				reversibleEffect.ApplyModifiers();
				remaining = 0.05f;
				WillSlip = false;
			}
			if (remaining < 0f)
			{
				reversibleEffect.ClearModifiers(true);
			}
			else
			{
				remaining -= TimeHandler.deltaTime;
			}
		}
	}
	internal class TestPlayerMono : MonoBehaviour
	{
		private Player player;

		private Gun gun;

		private void Awake()
		{
			player = ((Component)this).GetComponent<Player>();
			gun = ((Component)((Component)player).GetComponent<Holding>().holdable).GetComponent<Gun>();
		}

		private void FixedUpdate()
		{
			gun.bulletDamageMultiplier = player.data.maxHealth - player.data.health;
		}
	}
	internal class testReversibleEffect : ReversibleEffect
	{
		private float duration = 5f;

		public override void OnStart()
		{
			base.gunStatModifier.damage_mult = 2f;
			((ReversibleEffect)this).ApplyModifiers();
		}

		public override void OnUpdate()
		{
			if (!(duration <= 0f))
			{
				duration -= TimeHandler.deltaTime;
			}
			else
			{
				((ReversibleEffect)this).ClearModifiers(true);
			}
		}
	}
}
namespace CoolRoundsModLol.Cards
{
	internal class Absorption : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.allowMultiple = false;
			gun.attackSpeed *= 2f;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Expected O, but got Unknown
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Expected O, but got Unknown
			ExtensionMethods.GetOrAddComponent<AbsorbEffect>(((Component)player).gameObject, false);
			List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList();
			ObjectsToSpawn val = new ObjectsToSpawn();
			val.AddToProjectile = new GameObject("AbsorptionRemoval", new Type[1] { typeof(AbsorbMono) });
			list.Add(val);
			gun.objectsToSpawn = list.ToArray();
		}

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

		protected override string GetDescription()
		{
			return "Steal the bullets that hit you!";
		}

		protected override GameObject GetCardArt()
		{
			return Assets.AbsorbArt;
		}

		protected override Rarity GetRarity()
		{
			return (Rarity)1;
		}

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: 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_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = false,
					stat = "Attack Speed",
					amount = "-50%",
					simepleAmount = (SimpleAmount)6
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			return (CardThemeColorType)7;
		}

		public override string GetModName()
		{
			return "CRML";
		}
	}
	internal class BananaPeel : 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)
		{
			((Component)player).gameObject.AddComponent<SlipMono>();
		}

		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 "Banana Peels";
		}

		protected override string GetDescription()
		{
			return "Randomly slip around";
		}

		protected override GameObject GetCardArt()
		{
			return Assets.PeelsArt;
		}

		protected override Rarity GetRarity()
		{
			return (Rarity)1;
		}

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: 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_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Speed when slipping",
					amount = "+20%",
					simepleAmount = (SimpleAmount)1
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			return (CardThemeColorType)7;
		}

		public override string GetModName()
		{
			return "CRML";
		}
	}
	internal class BlockLag : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.allowMultiple = false;
			block.cdAdd = 0.25f;
		}

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

		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 "Rubber Banding";
		}

		protected override string GetDescription()
		{
			return "When you block, 5 seconds later you lag back to where you were when you blocked!";
		}

		protected override GameObject GetCardArt()
		{
			return Assets.RubberBandArt;
		}

		protected override Rarity GetRarity()
		{
			return (Rarity)0;
		}

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: 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_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = false,
					stat = "Block Cooldown",
					amount = "+0.25s",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			return (CardThemeColorType)7;
		}

		public override string GetModName()
		{
			return "CRML";
		}
	}
	internal class Bundle : 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)
		{
			gun.damage *= (float)gunAmmo.maxAmmo;
			gun.numberOfProjectiles = 1;
			gunAmmo.maxAmmo = 1;
			gun.bursts = 0;
		}

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

		protected override string GetDescription()
		{
			return "Bundle all your bullets together for a super bullet!";
		}

		protected override GameObject GetCardArt()
		{
			return Assets.BundleArt;
		}

		protected override Rarity GetRarity()
		{
			return (Rarity)2;
		}

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: 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_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "",
					amount = "",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			return (CardThemeColorType)7;
		}

		public override string GetModName()
		{
			return "CRML";
		}
	}
	internal class Fard : 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)
		{
			//IL_0010: 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)
			gun.projectileColor = new Color(0f, 255f, 0f);
			ExtensionMethods.GetOrAddComponent<FardEffect>(((Component)player).gameObject, false);
		}

		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 "Fard Bullets";
		}

		protected override string GetDescription()
		{
			return "Bullet = Fard \n <color=#ff0000ff>WARNING: 2x louder with toxic clouds";
		}

		protected override GameObject GetCardArt()
		{
			return Assets.FardBulletArt;
		}

		protected override Rarity GetRarity()
		{
			return (Rarity)0;
		}

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: 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_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "",
					amount = "",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			return (CardThemeColorType)7;
		}

		public override string GetModName()
		{
			return "CRML";
		}
	}
	internal class GhostBullet : 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)
		{
			gun.ignoreWalls = true;
			gun.attackSpeedMultiplier = 0.8f;
			gun.damage *= 0.5f;
		}

		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 "Ghost Bullet";
		}

		protected override string GetDescription()
		{
			return "Shoot through walls!";
		}

		protected override GameObject GetCardArt()
		{
			return Assets.GhostBulletArt;
		}

		protected override Rarity GetRarity()
		{
			return (Rarity)2;
		}

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: 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_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Expected O, but got Unknown
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: 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_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					positive = false,
					stat = "ATKSPD",
					amount = "-20%",
					simepleAmount = (SimpleAmount)8
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Damage",
					amount = "-50%",
					simepleAmount = (SimpleAmount)6
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			return (CardThemeColorType)7;
		}

		public override string GetModName()
		{
			return "CRML";
		}
	}
	internal class KnockBackStick : 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)
		{
			gun.knockback += 20f;
			gun.damage *= 0.6f;
		}

		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 "Knockback stick";
		}

		protected override string GetDescription()
		{
			return "Gain loads of knockback at the cost of some damage!";
		}

		protected override GameObject GetCardArt()
		{
			return Assets.KnockbackArt;
		}

		protected override Rarity GetRarity()
		{
			return (Rarity)2;
		}

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: 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_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Expected O, but got Unknown
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: 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_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Knockback",
					amount = "+20",
					simepleAmount = (SimpleAmount)4
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Damage",
					amount = "-40%",
					simepleAmount = (SimpleAmount)6
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			return (CardThemeColorType)7;
		}

		public override string GetModName()
		{
			return "CRML";
		}
	}
	internal class PewPewCard : 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)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: Expected O, but got Unknown
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Expected O, but got Unknown
			List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList();
			ObjectsToSpawn val = new ObjectsToSpawn();
			val.AddToProjectile = new GameObject("A_Pew", new Type[1] { typeof(PewMono) });
			list.Add(val);
			gun.objectsToSpawn = list.ToArray();
		}

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

		protected override string GetDescription()
		{
			return "Make your bullets go pew pew";
		}

		protected override GameObject GetCardArt()
		{
			return Assets.PewArt;
		}

		protected override Rarity GetRarity()
		{
			return (Rarity)0;
		}

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: 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_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "",
					amount = "",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			return (CardThemeColorType)7;
		}

		public override string GetModName()
		{
			return "CRML";
		}
	}
	internal class Piercing : 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)
		{
			gun.unblockable = true;
			gunAmmo.maxAmmo -= 2;
			gun.damage /= 4f;
		}

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

		protected override string GetDescription()
		{
			return "Make people unable to block your shots!";
		}

		protected override GameObject GetCardArt()
		{
			return Assets.PiercingArt;
		}

		protected override Rarity GetRarity()
		{
			return (Rarity)2;
		}

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: 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_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Expected O, but got Unknown
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: 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_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					positive = false,
					stat = "Ammo",
					amount = "-2",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Damage",
					amount = "-75%",
					simepleAmount = (SimpleAmount)7
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			return (CardThemeColorType)7;
		}

		public override string GetModName()
		{
			return "CRML";
		}
	}
	internal class TeleportBullets : 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)
		{
			gun.reloadTime *= 0.7f;
			ExtensionMethods.GetOrAddComponent<TeleportToBulletEffect>(((Component)player).gameObject, false);
		}

		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 "Teleporting Bullets";
		}

		protected override string GetDescription()
		{
			return "Teleport to where your bullets land!";
		}

		protected override GameObject GetCardArt()
		{
			return Assets.TPBulletsArt;
		}

		protected override Rarity GetRarity()
		{
			return (Rarity)1;
		}

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: 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_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = false,
					stat = "Reload Time",
					amount = "+30%",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			return (CardThemeColorType)7;
		}

		public override string GetModName()
		{
			return "CRML";
		}
	}
	internal class Template : 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 "CardName";
		}

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

		protected override GameObject GetCardArt()
		{
			return null;
		}

		protected override Rarity GetRarity()
		{
			return (Rarity)0;
		}

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: 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_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: 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()
		{
			return (CardThemeColorType)7;
		}

		public override string GetModName()
		{
			return "CRML";
		}
	}
	internal class TestCard : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			block.forceToAdd = -10f;
			statModifiers.health = 2f;
			block.cdAdd = -9999f;
		}

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

		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 "Test card";
		}

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

		protected override GameObject GetCardArt()
		{
			return Assets.TestArt;
		}

		protected override Rarity GetRarity()
		{
			return (Rarity)2;
		}

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: 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_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Expected O, but got Unknown
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: 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_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Health",
					amount = "×2",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Block Cooldown",
					amount = "-0.5s",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

		protected override CardThemeColorType GetTheme()
		{
			return (CardThemeColorType)7;
		}

		public override string GetModName()
		{
			return "CRML";
		}
	}
	internal class CopyThrusters : ICloneable
	{
		public object Clone()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Expected O, but got Unknown
			return (object)(ObjectsToSpawn)MemberwiseClone();
		}
	}
	internal class UnoReverse : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.allowMultiple = false;
			block.cdMultiplier = 1.5f;
		}

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

		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 "Uno Reverse";
		}

		protected override string GetDescription()
		{
			return " Change directions! You swap positions with your enemies when you block!";
		}

		protected override GameObject GetCardArt()
		{
			return Assets.UnoReverseArt;
		}

		protected override Rarity GetRarity()
		{
			return (Rarity)2;
		}

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

		protected override CardThemeColorType GetTheme()
		{
			return (CardThemeColorType)4;
		}

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