Decompiled source of Gamblers Choice v1.3.4

plugins/GamblersChoice.dll

Decompiled a day ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using CardChoiceSpawnUniqueCardPatch.CustomCategories;
using GamblersChoice.Cards;
using GamblersChoice.Effects;
using HarmonyLib;
using ModdingUtils.Extensions;
using UnboundLib;
using UnboundLib.Cards;
using UnboundLib.GameModes;
using UnityEngine;

[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: AssemblyVersion("0.0.0.0")]
namespace GamblersChoice.Cards
{
	public class AllIn : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

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

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			AllInEffect component = ((Component)player).gameObject.GetComponent<AllInEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

		protected override string GetTitle()
		{
			return "All In";
		}

		protected override string GetDescription()
		{
			return "Every point is a new deal. Your power is random — and so is your life.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[3];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Damage";
			val.amount = "Random [0.3x - 2.5x]";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "HP";
			val.amount = "Random [0.5x - 1.5x]";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Max Ammo";
			val.amount = "-1";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class AnteUp : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			gun.damage *= 1.35f;
			gun.knockback *= 1.2f;
			data.maxHealth *= 0.75f;
		}

		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 "Ante Up";
		}

		protected override string GetDescription()
		{
			return "Bet your body on your bullets.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[3];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Damage";
			val.amount = "+35%";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "Knockback";
			val.amount = "+20%";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Max HP";
			val.amount = "-25%";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class Bailout : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			data.maxHealth *= 0.8f;
			characterStats.movementSpeed *= 0.9f;
			BailoutEffect orAddComponent = ExtensionMethods.GetOrAddComponent<BailoutEffect>(((Component)player).gameObject, false);
			orAddComponent.stacks++;
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			BailoutEffect component = ((Component)player).gameObject.GetComponent<BailoutEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

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

		protected override string GetDescription()
		{
			return "Too big to fail.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: 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_0098: Expected O, but got Unknown
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[4];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Cheat Death";
			val.amount = "35% chance";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "On Bailout";
			val.amount = "25% HP + 2s invuln";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Max HP";
			val.amount = "-20%";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Move Speed";
			val.amount = "-10%";
			val.simepleAmount = (SimpleAmount)0;
			array[3] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class Bankroll : CustomCard
	{
		private static GameObject bulletPrefab;

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

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Expected O, but got Unknown
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Expected O, but got Unknown
			gunAmmo.reloadTime += 0.5f;
			BankrollReloadEffect orAddComponent = ExtensionMethods.GetOrAddComponent<BankrollReloadEffect>(((Component)player).gameObject, false);
			orAddComponent.stacks++;
			player.GetGamblerData().bankrollStacks++;
			if (bulletPrefab == null)
			{
				bulletPrefab = new GameObject("BankrollBullet", new Type[1] { typeof(BankrollEffect) });
				Object.DontDestroyOnLoad((Object)(object)bulletPrefab);
			}
			if (player.GetGamblerData().bankrollStacks == 1)
			{
				List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList();
				ObjectsToSpawn val = new ObjectsToSpawn();
				val.AddToProjectile = bulletPrefab;
				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)
		{
			player.GetGamblerData().bankrollStacks--;
			BankrollReloadEffect component = ((Component)player).gameObject.GetComponent<BankrollReloadEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
			if (player.GetGamblerData().bankrollStacks <= 0)
			{
				List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList();
				list.RemoveAll((ObjectsToSpawn s) => s.AddToProjectile == bulletPrefab);
				gun.objectsToSpawn = list.ToArray();
			}
		}

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

		protected override string GetDescription()
		{
			return "Skim a little off the top — it pays out on reload.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[2];
			CardInfoStat val = new CardInfoStat();
			val.positive = false;
			val.stat = "Damage";
			val.amount = "-20% (banked)";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Reload Time";
			val.amount = "+0.5s";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class Blackjack : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[2]
			{
				GamblerCategory.Get(),
				GamblerCategory.GetBlackjackUnique()
			};
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			block.additionalBlocks++;
			data.maxHealth *= 0.8f;
			BlackjackEffect orAddComponent = ExtensionMethods.GetOrAddComponent<BlackjackEffect>(((Component)player).gameObject, false);
			orAddComponent.stacks++;
			List<CardCategory> blacklistedCategories = CharacterStatModifiersExtension.GetAdditionalData(characterStats).blacklistedCategories;
			CardCategory blackjackUnique = GamblerCategory.GetBlackjackUnique();
			if (!blacklistedCategories.Contains(blackjackUnique))
			{
				blacklistedCategories.Add(blackjackUnique);
			}
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			BlackjackEffect component = ((Component)player).gameObject.GetComponent<BlackjackEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

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

		protected override string GetDescription()
		{
			return "Hit me.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: 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_0098: Expected O, but got Unknown
			//IL_00b7: 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)
			//IL_00c6: Expected O, but got Unknown
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[5];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "On Block";
			val.amount = "Draw 3 cards";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "17-21";
			val.amount = "Reflect + CD buff";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "Additional Blocks";
			val.amount = "+1";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Bust (>21)";
			val.amount = "1.8x CD penalty";
			val.simepleAmount = (SimpleAmount)0;
			array[3] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Max HP";
			val.amount = "-20%";
			val.simepleAmount = (SimpleAmount)0;
			array[4] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class Bluff : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[2]
			{
				GamblerCategory.Get(),
				GamblerCategory.GetBluffUnique()
			};
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			block.additionalBlocks++;
			BluffEffect orAddComponent = ExtensionMethods.GetOrAddComponent<BluffEffect>(((Component)player).gameObject, false);
			orAddComponent.stacks++;
			List<CardCategory> blacklistedCategories = CharacterStatModifiersExtension.GetAdditionalData(characterStats).blacklistedCategories;
			CardCategory bluffUnique = GamblerCategory.GetBluffUnique();
			if (!blacklistedCategories.Contains(bluffUnique))
			{
				blacklistedCategories.Add(bluffUnique);
			}
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			BluffEffect component = ((Component)player).gameObject.GetComponent<BluffEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

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

		protected override string GetDescription()
		{
			return "Your block cooldown is a gamble — sometimes instant, sometimes glacial.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[2];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Blocks";
			val.amount = "+1";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Block CD";
			val.amount = "Random [0.2x - 2.5x]";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class CardCounter : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

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

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CardCounterEffect component = ((Component)player).gameObject.GetComponent<CardCounterEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

		protected override string GetTitle()
		{
			return "Card Counter";
		}

		protected override string GetDescription()
		{
			return "Count your shots. Every seventh is a guaranteed jackpot hit.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[2];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Crit";
			val.amount = "Every 7th shot: 2.5x (5th/3rd at higher stacks)";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Damage";
			val.amount = "-10%";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class CardShark : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

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

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CardSharkEffect component = ((Component)player).gameObject.GetComponent<CardSharkEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

		protected override string GetTitle()
		{
			return "Card Shark";
		}

		protected override string GetDescription()
		{
			return "What's yours is mine — and it always was.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[3];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Luck Stolen";
			val.amount = "0.10 per opponent";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "Steal Timing";
			val.amount = "Each point start";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Max HP";
			val.amount = "-20%";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class ChipStack : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

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

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			ChipStackEffect component = ((Component)player).gameObject.GetComponent<ChipStackEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

		protected override string GetTitle()
		{
			return "Chip Stack";
		}

		protected override string GetDescription()
		{
			return "Put your health where your mouth is.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[3];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "HP Bet";
			val.amount = "20% per point";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "Win Payout";
			val.amount = "250% of bet";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "Movement Speed";
			val.amount = "+10%";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class CoinFlip : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

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

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CoinFlipEffect component = ((Component)player).gameObject.GetComponent<CoinFlipEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

		protected override string GetTitle()
		{
			return "Coin Flip";
		}

		protected override string GetDescription()
		{
			return "Heads you're fast, tails you're slow. Flip each point.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[1];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Attack Speed";
			val.amount = "±30% per point (±50% / ±70% at higher stacks)";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class CompdDrinks : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

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

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CompdDrinksEffect component = ((Component)player).gameObject.GetComponent<CompdDrinksEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

		protected override string GetTitle()
		{
			return "Comp'd Drinks";
		}

		protected override string GetDescription()
		{
			return "The house keeps your glass full — until it doesn't.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[3];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Passive Regen";
			val.amount = "5 HP/s";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Regen Cutout";
			val.amount = "25% every 4s";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Damage";
			val.amount = "-10%";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class DeadMansHand : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

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

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			DeadMansHandEffect component = ((Component)player).gameObject.GetComponent<DeadMansHandEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

		protected override string GetTitle()
		{
			return "Dead Man's Hand";
		}

		protected override string GetDescription()
		{
			return "Aces and eights. If you're going down, take them with you.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[2];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Revenge Damage";
			val.amount = "40% of Max HP";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "Max HP";
			val.amount = "+20%";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class DealersHand : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[2]
			{
				GamblerCategory.Get(),
				GamblerCategory.GetDealersHandUnique()
			};
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			gun.damage *= 0.85f;
			gunAmmo.maxAmmo = Mathf.Max(gunAmmo.maxAmmo - 1, 1);
			DealersHandEffect orAddComponent = ExtensionMethods.GetOrAddComponent<DealersHandEffect>(((Component)player).gameObject, false);
			orAddComponent.stacks++;
			List<CardCategory> blacklistedCategories = CharacterStatModifiersExtension.GetAdditionalData(characterStats).blacklistedCategories;
			CardCategory dealersHandUnique = GamblerCategory.GetDealersHandUnique();
			if (!blacklistedCategories.Contains(dealersHandUnique))
			{
				blacklistedCategories.Add(dealersHandUnique);
			}
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			DealersHandEffect component = ((Component)player).gameObject.GetComponent<DealersHandEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

		protected override string GetTitle()
		{
			return "Dealer's Hand";
		}

		protected override string GetDescription()
		{
			return "Every reload deals you a new hand — pray for a royal flush.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[3];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "On Reload";
			val.amount = "Random damage buff";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Damage";
			val.amount = "-15%";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Ammo";
			val.amount = "-1";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class DoubleOrNothing : CustomCard
	{
		private static GameObject bulletPrefab;

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

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Expected O, but got Unknown
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Expected O, but got Unknown
			gun.attackSpeed *= 1.1f;
			player.GetGamblerData().doubleOrNothingStacks++;
			if (bulletPrefab == null)
			{
				bulletPrefab = new GameObject("DoubleOrNothingBullet", new Type[1] { typeof(DoubleOrNothingEffect) });
				Object.DontDestroyOnLoad((Object)(object)bulletPrefab);
			}
			if (player.GetGamblerData().doubleOrNothingStacks == 1)
			{
				List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList();
				ObjectsToSpawn val = new ObjectsToSpawn();
				val.AddToProjectile = bulletPrefab;
				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)
		{
			player.GetGamblerData().doubleOrNothingStacks--;
			if (player.GetGamblerData().doubleOrNothingStacks <= 0)
			{
				List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList();
				list.RemoveAll((ObjectsToSpawn s) => s.AddToProjectile == bulletPrefab);
				gun.objectsToSpawn = list.ToArray();
			}
		}

		protected override string GetTitle()
		{
			return "Double or Nothing";
		}

		protected override string GetDescription()
		{
			return "Every shot's a bet. Might hit twice as hard. Might not hit at all.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[3];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Double Chance";
			val.amount = "35%";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Nothing Chance";
			val.amount = "15%";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Attack Speed";
			val.amount = "-10%";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class Fold : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

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

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			FoldEffect component = ((Component)player).gameObject.GetComponent<FoldEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

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

		protected override string GetDescription()
		{
			return "Know when to walk away.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[3];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Dodge Chance";
			val.amount = "20%";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "Speed on Dodge";
			val.amount = "+40% (1.5s)";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Max HP";
			val.amount = "-15%";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class GravityRoulette : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[2]
			{
				GamblerCategory.Get(),
				GamblerCategory.GetGravityRouletteUnique()
			};
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			gun.damage *= 1.15f;
			gun.numberOfProjectiles++;
			gun.attackSpeed *= 1.15f;
			GravityRouletteEffect orAddComponent = ExtensionMethods.GetOrAddComponent<GravityRouletteEffect>(((Component)player).gameObject, false);
			orAddComponent.stacks++;
			List<CardCategory> blacklistedCategories = CharacterStatModifiersExtension.GetAdditionalData(characterStats).blacklistedCategories;
			CardCategory gravityRouletteUnique = GamblerCategory.GetGravityRouletteUnique();
			if (!blacklistedCategories.Contains(gravityRouletteUnique))
			{
				blacklistedCategories.Add(gravityRouletteUnique);
			}
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			GravityRouletteEffect component = ((Component)player).gameObject.GetComponent<GravityRouletteEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

		protected override string GetTitle()
		{
			return "Gravity Roulette";
		}

		protected override string GetDescription()
		{
			return "Every bullet takes a different flight path — hope for the best.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[3];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Damage";
			val.amount = "+15%";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "Projectiles";
			val.amount = "+1";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Attack Speed";
			val.amount = "-15%";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class HailMary : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

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

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			HailMaryEffect component = ((Component)player).gameObject.GetComponent<HailMaryEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

		protected override string GetTitle()
		{
			return "Hail Mary";
		}

		protected override string GetDescription()
		{
			return "The further behind you fall, the harder you hit. Desperation is fuel.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[3];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Behind by 1";
			val.amount = "+25% dmg, +15% AS";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "Behind by 3+";
			val.amount = "+80% dmg, +45% AS";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Tied/Ahead";
			val.amount = "-10% dmg, -10% AS";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class HotHand : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

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

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			HotHandEffect component = ((Component)player).gameObject.GetComponent<HotHandEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

		protected override string GetTitle()
		{
			return "Hot Hand";
		}

		protected override string GetDescription()
		{
			return "Ride the streak. Every hit builds your fire — but a fumble burns you.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[3];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Streak Damage";
			val.amount = "+20% per hit (+5% per extra stack)";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Fumble Chance";
			val.amount = "15%";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Max HP";
			val.amount = "-15%";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class HouseEdge : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			block.cdMultiplier *= 0.85f;
			gun.damage *= 0.85f;
			data.maxHealth *= 0.8f;
			HouseEdgeEffect orAddComponent = ExtensionMethods.GetOrAddComponent<HouseEdgeEffect>(((Component)player).gameObject, false);
			orAddComponent.stacks++;
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			HouseEdgeEffect component = ((Component)player).gameObject.GetComponent<HouseEdgeEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

		protected override string GetTitle()
		{
			return "House Edge";
		}

		protected override string GetDescription()
		{
			return "Block at the right moment and send their damage right back. Stacks add interest.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: 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_0098: Expected O, but got Unknown
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[4];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Reflect on Block";
			val.amount = "30% chance";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "Block CD";
			val.amount = "-15%";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Damage";
			val.amount = "-15%";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Max HP";
			val.amount = "-20%";
			val.simepleAmount = (SimpleAmount)0;
			array[3] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class InsurancePolicy : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			data.maxHealth *= 1.2f;
			gun.damage *= 0.9f;
			InsurancePolicyEffect orAddComponent = ExtensionMethods.GetOrAddComponent<InsurancePolicyEffect>(((Component)player).gameObject, false);
			orAddComponent.stacks++;
			orAddComponent.UpdateDampener();
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			InsurancePolicyEffect component = ((Component)player).gameObject.GetComponent<InsurancePolicyEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
				else
				{
					component.UpdateDampener();
				}
			}
		}

		protected override string GetTitle()
		{
			return "Insurance Policy";
		}

		protected override string GetDescription()
		{
			return "The house always hedges.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[3];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Less RNG Swing";
			val.amount = "35% per stack";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "Max HP";
			val.amount = "+20%";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Damage";
			val.amount = "-10%";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class Jackpot : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			gun.attackSpeed *= 1.15f;
			data.maxHealth *= 0.85f;
			JackpotEffect orAddComponent = ExtensionMethods.GetOrAddComponent<JackpotEffect>(((Component)player).gameObject, false);
			orAddComponent.stacks++;
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			JackpotEffect component = ((Component)player).gameObject.GetComponent<JackpotEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

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

		protected override string GetDescription()
		{
			return "Kill an enemy and pray for the big payout — a full heal.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[3];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Full Heal on Kill";
			val.amount = "25% chance";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Attack Speed";
			val.amount = "-15%";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Max HP";
			val.amount = "-15%";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class LoadedDice : CustomCard
	{
		private static GameObject bulletPrefab;

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

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Expected O, but got Unknown
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Expected O, but got Unknown
			player.GetGamblerData().loadedDiceStacks++;
			if (bulletPrefab == null)
			{
				bulletPrefab = new GameObject("LoadedDiceBullet", new Type[1] { typeof(LoadedDiceEffect) });
				Object.DontDestroyOnLoad((Object)(object)bulletPrefab);
			}
			if (player.GetGamblerData().loadedDiceStacks == 1)
			{
				List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList();
				ObjectsToSpawn val = new ObjectsToSpawn();
				val.AddToProjectile = bulletPrefab;
				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)
		{
			player.GetGamblerData().loadedDiceStacks--;
			if (player.GetGamblerData().loadedDiceStacks <= 0)
			{
				List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList();
				list.RemoveAll((ObjectsToSpawn s) => s.AddToProjectile == bulletPrefab);
				gun.objectsToSpawn = list.ToArray();
			}
		}

		protected override string GetTitle()
		{
			return "Loaded Dice";
		}

		protected override string GetDescription()
		{
			return "Each bullet deals random damage — sometimes pitiful, sometimes devastating.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[1];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Damage";
			val.amount = "Random [0.5x - 1.5x]";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class LoadedGame : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			data.maxHealth *= 0.9f;
			characterStats.movementSpeed *= 0.95f;
			LoadedGameEffect orAddComponent = ExtensionMethods.GetOrAddComponent<LoadedGameEffect>(((Component)player).gameObject, false);
			orAddComponent.stacks++;
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			LoadedGameEffect component = ((Component)player).gameObject.GetComponent<LoadedGameEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

		protected override string GetTitle()
		{
			return "Loaded Game";
		}

		protected override string GetDescription()
		{
			return "First few hands are on the house. After that, you're on your own. (Affects pre-shot rolls only.)";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: 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_0098: Expected O, but got Unknown
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[4];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "First 5 Shots";
			val.amount = "+0.20 luck";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "After Shot 5";
			val.amount = "-0.10 luck";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "HP";
			val.amount = "-10%";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Movement Speed";
			val.amount = "-5%";
			val.simepleAmount = (SimpleAmount)0;
			array[3] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class LuckyPenny : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			player.GetGamblerData().luck += 0.15f;
			data.maxHealth *= 1.15f;
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			player.GetGamblerData().luck -= 0.15f;
			data.maxHealth /= 1.15f;
		}

		protected override string GetTitle()
		{
			return "Lucky Penny";
		}

		protected override string GetDescription()
		{
			return "A small charm that tips the odds in your favor.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[2];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Max HP";
			val.amount = "+15%";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "Luck";
			val.amount = "+0.15";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class MartingalePoint : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			gun.damage *= 0.85f;
			gun.attackSpeed *= 1.1f;
			MartingalePointEffect orAddComponent = ExtensionMethods.GetOrAddComponent<MartingalePointEffect>(((Component)player).gameObject, false);
			orAddComponent.stacks++;
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			MartingalePointEffect component = ((Component)player).gameObject.GetComponent<MartingalePointEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

		protected override string GetTitle()
		{
			return "Martingale (Point)";
		}

		protected override string GetDescription()
		{
			return "Double the bet after every loss. It has to work eventually.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: 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_0098: Expected O, but got Unknown
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[4];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Per Loss";
			val.amount = "+25% dmg, +12% aspd";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "Max Loss Stacks";
			val.amount = "3";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Base Damage";
			val.amount = "-15%";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Attack Speed";
			val.amount = "-10%";
			val.simepleAmount = (SimpleAmount)0;
			array[3] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class MartingaleShot : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			gun.damage *= 0.75f;
			gunAmmo.maxAmmo = Mathf.Max(gunAmmo.maxAmmo - 1, 1);
			data.maxHealth *= 0.85f;
			MartingaleShotEffect orAddComponent = ExtensionMethods.GetOrAddComponent<MartingaleShotEffect>(((Component)player).gameObject, false);
			orAddComponent.stacks++;
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			MartingaleShotEffect component = ((Component)player).gameObject.GetComponent<MartingaleShotEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

		protected override string GetTitle()
		{
			return "Martingale (Shot)";
		}

		protected override string GetDescription()
		{
			return "Keep doubling the bet until you score — the payout has to come eventually, right?";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: 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_0098: Expected O, but got Unknown
			//IL_00b7: 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)
			//IL_00c6: Expected O, but got Unknown
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[5];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Bet Multiplier";
			val.amount = "2x per shot until kill (cap 16x)";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "On Kill";
			val.amount = "Payout for 2 more shots";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Base Damage";
			val.amount = "-25%";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Ammo";
			val.amount = "-1";
			val.simepleAmount = (SimpleAmount)0;
			array[3] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "HP";
			val.amount = "-15%";
			val.simepleAmount = (SimpleAmount)0;
			array[4] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class Parlay : CustomCard
	{
		private static GameObject bulletPrefab;

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

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Expected O, but got Unknown
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Expected O, but got Unknown
			gun.damage *= 0.8f;
			gun.attackSpeed *= 1.1f;
			data.maxHealth *= 0.9f;
			player.GetGamblerData().parlayStacks++;
			if (bulletPrefab == null)
			{
				bulletPrefab = new GameObject("ParlayBullet", new Type[1] { typeof(ParlayEffect) });
				Object.DontDestroyOnLoad((Object)(object)bulletPrefab);
			}
			if (player.GetGamblerData().parlayStacks == 1)
			{
				List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList();
				ObjectsToSpawn val = new ObjectsToSpawn();
				val.AddToProjectile = bulletPrefab;
				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)
		{
			player.GetGamblerData().parlayStacks--;
			if (player.GetGamblerData().parlayStacks <= 0)
			{
				List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList();
				list.RemoveAll((ObjectsToSpawn s) => s.AddToProjectile == bulletPrefab);
				gun.objectsToSpawn = list.ToArray();
			}
		}

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

		protected override string GetDescription()
		{
			return "Let it ride — every hit rolls for another.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: 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_0098: Expected O, but got Unknown
			//IL_00b7: 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)
			//IL_00c6: Expected O, but got Unknown
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[5];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Chain Chance";
			val.amount = "40%";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "Chain Damage";
			val.amount = "75% per link";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Base Damage";
			val.amount = "-20%";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Attack Speed";
			val.amount = "-10%";
			val.simepleAmount = (SimpleAmount)0;
			array[3] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Max HP";
			val.amount = "-10%";
			val.simepleAmount = (SimpleAmount)0;
			array[4] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class PokerFace : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

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

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			PokerFaceEffect component = ((Component)player).gameObject.GetComponent<PokerFaceEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

		protected override string GetTitle()
		{
			return "Poker Face";
		}

		protected override string GetDescription()
		{
			return "Never let them see you sweat.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[3];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Shield on Block";
			val.amount = "15-45 HP";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "Shield Duration";
			val.amount = "3s decay";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Attack Speed";
			val.amount = "-10%";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class PotCommitted : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

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

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			PotCommittedEffect component = ((Component)player).gameObject.GetComponent<PotCommittedEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					component.RevertAll();
					Object.Destroy((Object)(object)component);
				}
				else
				{
					component.Recalculate();
				}
			}
		}

		protected override string GetTitle()
		{
			return "Pot Committed";
		}

		protected override string GetDescription()
		{
			return "Too deep to fold now.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[3];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Per Gambler Card";
			val.amount = "+7% damage";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "Per Gambler Card";
			val.amount = "+5% move speed";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Per Gambler Card";
			val.amount = "-4% max HP";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class RicochetRoulette : CustomCard
	{
		private static GameObject bulletPrefab;

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

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Expected O, but got Unknown
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Expected O, but got Unknown
			gun.projectileSpeed *= 1.15f;
			GamblerData gamblerData = player.GetGamblerData();
			gamblerData.ricochetStacks++;
			if (bulletPrefab == null)
			{
				bulletPrefab = new GameObject("RicochetRouletteBullet", new Type[1] { typeof(RicochetRouletteEffect) });
				Object.DontDestroyOnLoad((Object)(object)bulletPrefab);
			}
			if (gamblerData.ricochetStacks == 1)
			{
				List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList();
				ObjectsToSpawn val = new ObjectsToSpawn();
				val.AddToProjectile = bulletPrefab;
				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)
		{
			GamblerData gamblerData = player.GetGamblerData();
			gamblerData.ricochetStacks--;
			if (gamblerData.ricochetStacks <= 0)
			{
				List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList();
				list.RemoveAll((ObjectsToSpawn s) => s.AddToProjectile == bulletPrefab);
				gun.objectsToSpawn = list.ToArray();
			}
		}

		protected override string GetTitle()
		{
			return "Ricochet Roulette";
		}

		protected override string GetDescription()
		{
			return "Your bullets bounce off walls — sometimes once, sometimes a dozen times.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[2];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Bounces";
			val.amount = "Random [0-4]";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "Bullet Speed";
			val.amount = "+15%";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class ShellGame : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

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

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			ShellGameEffect component = ((Component)player).gameObject.GetComponent<ShellGameEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

		protected override string GetTitle()
		{
			return "Shell Game";
		}

		protected override string GetDescription()
		{
			return "Block and spin the wheel — every block triggers a random bonus.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[2];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "On Block";
			val.amount = "Random effect";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Max HP";
			val.amount = "-10%";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class SideBet : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.categories = (CardCategory[])(object)new CardCategory[1] { GamblerCategory.Get() };
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			data.maxHealth += 10f;
			characterStats.movementSpeed *= 0.9f;
			SideBetEffect orAddComponent = ExtensionMethods.GetOrAddComponent<SideBetEffect>(((Component)player).gameObject, false);
			orAddComponent.stacks++;
		}

		public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			SideBetEffect component = ((Component)player).gameObject.GetComponent<SideBetEffect>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
		}

		protected override string GetTitle()
		{
			return "Side Bet";
		}

		protected override string GetDescription()
		{
			return "Winner takes all — loser pays double.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: 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_0098: Expected O, but got Unknown
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[4];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Heal on Kill";
			val.amount = "40 HP";
			val.simepleAmount = (SimpleAmount)0;
			array[0] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Debt on Death";
			val.amount = "20% max HP";
			val.simepleAmount = (SimpleAmount)0;
			array[1] = val;
			val = new CardInfoStat();
			val.positive = true;
			val.stat = "Max HP";
			val.amount = "+10";
			val.simepleAmount = (SimpleAmount)0;
			array[2] = val;
			val = new CardInfoStat();
			val.positive = false;
			val.stat = "Movement Speed";
			val.amount = "-10%";
			val.simepleAmount = (SimpleAmount)0;
			array[3] = val;
			return (CardInfoStat[])(object)array;
		}
	}
	public class SidePot : CustomCard
	{
		private static GameObject bulletPrefab;

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

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Expected O, but got Unknown
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ad: Expected O, but got Unknown
			gun.attackSpeed *= 1.1f;
			data.maxHealth *= 0.9f;
			SidePotManager orAddComponent = ExtensionMethods.GetOrAddComponent<SidePotManager>(((Component)player).gameObject, false);
			orAddComponent.stacks++;
			player.GetGamblerData().sidePotStacks++;
			if (bulletPrefab == null)
			{
				bulletPrefab = new GameObject("SidePotBullet", new Type[1] { typeof(SidePotEffect) });
				Object.DontDestroyOnLoad((Object)(object)bulletPrefab);
			}
			if (player.GetGamblerData().sidePotStacks == 1)
			{
				List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList();
				ObjectsToSpawn val = new ObjectsToSpawn();
				val.AddToProjectile = bulletPrefab;
				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)
		{
			player.GetGamblerData().sidePotStacks--;
			SidePotManager component = ((Component)player).gameObject.GetComponent<SidePotManager>();
			if (component != null)
			{
				component.stacks--;
				if (component.stacks <= 0)
				{
					Object.Destroy((Object)(object)component);
				}
			}
			if (player.GetGamblerData().sidePotStacks <= 0)
			{
				List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList();
				list.RemoveAll((ObjectsToSpawn s) => s.AddToProjectile == bulletPrefab);
				gun.objectsToSpawn = list.ToArray();
			}
		}

		protected override string GetTitle()
		{
			return "Side Pot";
		}

		protected override string GetDescription()
		{
			return "Part of every hit is riding on the next roll.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			CardInfoStat[] array = new CardInfoStat[3];
			CardInfoStat val = new CardInfoStat();
			val.positive = true;
			val.stat = "Delayed Damage";
			val.amount = "30% held [0.5x-