Decompiled source of SashimiCards v1.3.0

SushiCards.dll

Decompiled 5 months ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using ModdingUtils.MonoBehaviours;
using ModsPlus;
using SushiCards;
using SushiCards.Cards;
using UnboundLib.Cards;
using UnboundLib.GameModes;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("SushiCards")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("SushiCards")]
[assembly: AssemblyTitle("SushiCards")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
}
public class AngelBlessingCard : CustomEffectCard<AngelBlessingEffect>
{
	public override CardDetails<AngelBlessingEffect> Details
	{
		get
		{
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Expected O, but got Unknown
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Expected O, but got Unknown
			CardDetails<AngelBlessingEffect> val = new CardDetails<AngelBlessingEffect>();
			val.Title = "Angel Blessing";
			val.Description = "Heals <color=#6CB06C>20 + 1%</color> HP when shooting.";
			val.ModName = "SC";
			val.Art = null;
			val.Rarity = (Rarity)1;
			val.Theme = (CardThemeColorType)3;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					positive = false,
					stat = "ATK Speed",
					amount = "-100%",
					simepleAmount = (SimpleAmount)5
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Ammo",
					amount = "-5",
					simepleAmount = (SimpleAmount)5
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
		cardInfo.allowMultiple = false;
		gun.attackSpeed = 2f;
		gun.ammo = -5;
	}
}
public class AngelBlessingEffect : CardEffect
{
	public override void OnShoot(GameObject projectile)
	{
		((CardEffect)this).player.data.healthHandler.Heal(20f + ((CardEffect)this).player.data.maxHealth * 0.01f);
	}
}
public class DemonicShieldPactCard : CustomEffectCard<DemonicShieldPactEffect>
{
	public override CardDetails<DemonicShieldPactEffect> Details
	{
		get
		{
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Expected O, but got Unknown
			CardDetails<DemonicShieldPactEffect> val = new CardDetails<DemonicShieldPactEffect>();
			val.Title = "Demonic Shield Pact";
			val.Description = "Block cost: HP <color=#FF5E5E>15 + 10%</color>\nIf the cost is paid, <color=#6CB06C>Reset</color> block CD.";
			val.ModName = "SC";
			val.Art = null;
			val.Rarity = (Rarity)2;
			val.Theme = (CardThemeColorType)4;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = false,
					stat = "Block cooldown",
					amount = "+2s"
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
		cardInfo.allowMultiple = false;
		block.cdAdd = 2f;
	}
}
public class DemonicShieldPactEffect : CardEffect
{
	public override IEnumerator OnBlockCoroutine(BlockTriggerType blockTriggerType)
	{
		//IL_000e: Unknown result type (might be due to invalid IL or missing references)
		//IL_000f: Unknown result type (might be due to invalid IL or missing references)
		if (((CardEffect)this).player.data.health > ((CardEffect)this).player.data.maxHealth * 0.1f + 15f)
		{
			yield return null;
			((Damagable)((CardEffect)this).player.data.healthHandler).TakeDamage(Vector2.up * (((CardEffect)this).player.data.maxHealth * 0.1f + 15f), Vector2.zero, (GameObject)null, (Player)null, true, true);
			((CardEffect)this).player.data.block.ResetCD(true);
		}
	}
}
public class DrunkenBullet : CustomEffectCard<DrunkenBulletEffect>
{
	public override CardDetails<DrunkenBulletEffect> Details
	{
		get
		{
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Expected O, but got Unknown
			CardDetails<DrunkenBulletEffect> val = new CardDetails<DrunkenBulletEffect>();
			val.Title = "Drunken Bullet";
			val.Description = "Reflecting a bullet, for <color=#FBEE21>0.5</color> seconds:\nDamage <color=#6CB06C>+100%</color> and Block CD <color=#6CB06C>reset</color>.";
			val.ModName = "SC";
			val.Art = null;
			val.Rarity = (Rarity)2;
			val.Theme = (CardThemeColorType)4;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = false,
					stat = "Block cooldown",
					amount = "+2s"
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
		cardInfo.allowMultiple = false;
	}
}
public class DrunkenBulletEffect : CardEffect
{
	public override void OnShoot(GameObject projectile)
	{
		if ((Object)(object)((Component)((CardEffect)this).player).gameObject.GetComponent<DrunkenBulletMono>() != (Object)null)
		{
			Object.Destroy((Object)(object)((Component)((Component)((CardEffect)this).player).transform).gameObject.GetComponent<DrunkenBulletMono>());
		}
		((Component)((CardEffect)this).player).gameObject.AddComponent<DrunkenBulletMono>();
	}

	public override IEnumerator OnBattleStart(IGameModeHandler gameModeHandler)
	{
		if ((Object)(object)((Component)((CardEffect)this).player).gameObject.GetComponent<DrunkenBulletMono>() != (Object)null)
		{
			Object.Destroy((Object)(object)((Component)((Component)((CardEffect)this).player).transform).gameObject.GetComponent<DrunkenBulletMono>());
		}
		return ((CardEffect)this).OnBattleStart(gameModeHandler);
	}
}
public class ImmunityCard : CustomEffectCard<ImmunityEffect>
{
	public override CardDetails<ImmunityEffect> Details
	{
		get
		{
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Expected O, but got Unknown
			CardDetails<ImmunityEffect> val = new CardDetails<ImmunityEffect>();
			val.Title = "Immunity";
			val.Description = "<color=#FBEE21>1</color> second after taking damage:";
			val.ModName = "SC";
			val.Art = null;
			val.Rarity = (Rarity)1;
			val.Theme = (CardThemeColorType)5;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "HP",
					amount = "+200%"
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
		cardInfo.allowMultiple = false;
	}
}
public class ImmunityEffect : CardEffect
{
	private float DestroyTime;

	public override void OnTakeDamage(Vector2 damage, bool selfDamage)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		((CardEffect)this).OnTakeDamage(damage, selfDamage);
		ResetTimer();
		if ((Object)(object)((Component)((CardEffect)this).player).gameObject.GetComponent<ImmunityBuffMono>() == (Object)null)
		{
			((Component)((CardEffect)this).player).gameObject.AddComponent<ImmunityBuffMono>();
		}
	}

	public void Update()
	{
		if ((Object)(object)((Component)((CardEffect)this).player).gameObject.GetComponent<ImmunityBuffMono>() != (Object)null && Time.time >= DestroyTime)
		{
			Object.Destroy((Object)(object)((Component)((Component)((CardEffect)this).player).transform).gameObject.GetComponent<ImmunityBuffMono>());
		}
	}

	private void ResetTimer()
	{
		DestroyTime = Time.time + 1f;
	}
}
public class PanicNecklaceCard : CustomEffectCard<PanicNecklaceEffect>
{
	public override CardDetails<PanicNecklaceEffect> Details
	{
		get
		{
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Expected O, but got Unknown
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Expected O, but got Unknown
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Expected O, but got Unknown
			CardDetails<PanicNecklaceEffect> val = new CardDetails<PanicNecklaceEffect>();
			val.Title = "Panic Necklace";
			val.Description = "<color=#FBEE21>3</color> second after taking damage:";
			val.ModName = "SC";
			val.Art = null;
			val.Rarity = (Rarity)1;
			val.Theme = (CardThemeColorType)0;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[3]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Movement Speed",
					amount = "+75%"
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Block Cooldown",
					amount = "-50%"
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Spread",
					amount = "+20%"
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
		cardInfo.allowMultiple = false;
	}
}
public class PanicNecklaceEffect : CardEffect
{
	private float DestroyTime;

	public override void OnTakeDamage(Vector2 damage, bool selfDamage)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		((CardEffect)this).OnTakeDamage(damage, selfDamage);
		ResetTimer();
		if ((Object)(object)((Component)((CardEffect)this).player).gameObject.GetComponent<PanicNecklaceBuffMono>() == (Object)null)
		{
			((Component)((CardEffect)this).player).gameObject.AddComponent<PanicNecklaceBuffMono>();
		}
	}

	public void Update()
	{
		if ((Object)(object)((Component)((CardEffect)this).player).gameObject.GetComponent<PanicNecklaceBuffMono>() != (Object)null && Time.time >= DestroyTime)
		{
			Object.Destroy((Object)(object)((Component)((Component)((CardEffect)this).player).transform).gameObject.GetComponent<PanicNecklaceBuffMono>());
		}
	}

	private void ResetTimer()
	{
		DestroyTime = Time.time + 3f;
	}
}
public class ParryCard : CustomEffectCard<ParryEffect>
{
	public override CardDetails<ParryEffect> Details
	{
		get
		{
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Expected O, but got Unknown
			CardDetails<ParryEffect> val = new CardDetails<ParryEffect>();
			val.Title = "Parry!";
			val.Description = "Reflecting a bullet, for <color=#FBEE21>0.5</color> seconds:\nDamage <color=#6CB06C>+100%</color> and Block CD <color=#6CB06C>reset</color>.";
			val.ModName = "SC";
			val.Art = null;
			val.Rarity = (Rarity)1;
			val.Theme = (CardThemeColorType)2;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = false,
					stat = "Block cooldown",
					amount = "+2s"
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
		cardInfo.allowMultiple = false;
		block.cdAdd = 2f;
	}
}
public class ParryEffect : CardEffect
{
	public override void OnBlockProjectile(GameObject projectile, Vector3 forward, Vector3 hitPosition)
	{
		//IL_0082: Unknown result type (might be due to invalid IL or missing references)
		//IL_0083: Unknown result type (might be due to invalid IL or missing references)
		if ((Object)(object)((Component)((CardEffect)this).player).gameObject.GetComponent<ParryMono>() != (Object)null)
		{
			Object.Destroy((Object)(object)((Component)((Component)((CardEffect)this).player).transform).gameObject.GetComponent<ParryMono>());
		}
		((Component)((CardEffect)this).player).gameObject.AddComponent<ParryMono>();
		((CardEffect)this).player.data.block.ResetCD(true);
		Object.Destroy((Object)(object)((Component)((Component)((CardEffect)this).player).transform).gameObject.GetComponent<ParryMono>(), 0.5f);
		((CardEffect)this).OnBlockProjectile(projectile, forward, hitPosition);
	}
}
public class SeppukuCard : CustomEffectCard<SeppukuEffect>
{
	public override CardDetails<SeppukuEffect> Details
	{
		get
		{
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Expected O, but got Unknown
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Expected O, but got Unknown
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Expected O, but got Unknown
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Expected O, but got Unknown
			CardDetails<SeppukuEffect> val = new CardDetails<SeppukuEffect>();
			val.Title = "Seppuku";
			val.Description = "<color=#FBEE21>1</color> second after blocking, <color=#FF5E5E>Seppuku</color> (Lose <color=#FF5E5E>75%</color> of your current HP. Can only Seppuku 1 per battle.)\nAfter performing seppuku <color=#FBEE21>5</color> times, permanent gain:";
			val.ModName = "SC";
			val.Art = null;
			val.Rarity = (Rarity)2;
			val.Theme = (CardThemeColorType)0;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[4]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Percentage Damage",
					amount = "+25%"
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Life steal",
					amount = "+150%"
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Decay",
					amount = "+2s"
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Regen",
					amount = "+10/s"
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
		cardInfo.allowMultiple = false;
	}
}
public class SeppukuEffect : CardEffect
{
	private bool SeppukuFlag;

	private int SeppukuCount = 0;

	public override IEnumerator OnBattleStart(IGameModeHandler gameModeHandler)
	{
		SeppukuFlag = true;
		if ((Object)(object)((Component)((CardEffect)this).player).gameObject.GetComponent<SeppukuBuffMono>() != (Object)null)
		{
			Object.Destroy((Object)(object)((Component)((Component)((CardEffect)this).player).transform).gameObject.GetComponent<SeppukuBuffMono>());
		}
		if (SeppukuCount >= 5)
		{
			Object.Destroy((Object)(object)((Component)((Component)((CardEffect)this).player).transform).gameObject.GetComponent<SeppukuAwakeMono>());
			((Component)((CardEffect)this).player).gameObject.AddComponent<SeppukuAwakeMono>();
		}
		return ((CardEffect)this).OnBattleStart(gameModeHandler);
	}

	public override IEnumerator OnBlockCoroutine(BlockTriggerType blockTriggerType)
	{
		//IL_000e: Unknown result type (might be due to invalid IL or missing references)
		//IL_000f: Unknown result type (might be due to invalid IL or missing references)
		yield return null;
		if (!SeppukuFlag || SeppukuCount >= 5)
		{
			yield break;
		}
		((Component)((CardEffect)this).player).gameObject.AddComponent<SeppukuBuffMono>();
		Object.Destroy((Object)(object)((Component)((Component)((CardEffect)this).player).transform).gameObject.GetComponent<SeppukuBuffMono>(), 1f);
		yield return (object)new WaitForSeconds(1f);
		if (((CardEffect)this).player.data.isPlaying && !((CardEffect)this).player.data.dead)
		{
			SeppukuFlag = false;
			SeppukuCount++;
			((Damagable)((CardEffect)this).player.data.healthHandler).TakeDamage(Vector2.up * (((CardEffect)this).player.data.health * 0.75f), Vector2.zero, (GameObject)null, (Player)null, true, true);
			((CardEffect)this).player.data.block.ResetCD(true);
			if (SeppukuCount >= 5)
			{
				((Component)((CardEffect)this).player).gameObject.AddComponent<SeppukuAwakeMono>();
				((Component)((CardEffect)this).player).gameObject.AddComponent<SeppukuAwakeRedMono>();
				Object.Destroy((Object)(object)((Component)((Component)((CardEffect)this).player).transform).gameObject.GetComponent<SeppukuAwakeRedMono>(), 3f);
			}
		}
	}
}
public class SilverBulletCard : CustomEffectCard<SilverBulletEffect>
{
	public override CardDetails<SilverBulletEffect> Details
	{
		get
		{
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Expected O, but got Unknown
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Expected O, but got Unknown
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Expected O, but got Unknown
			CardDetails<SilverBulletEffect> val = new CardDetails<SilverBulletEffect>();
			val.Title = "Silver Bullet";
			val.Description = "The first <color=#FBEE21>6</color> Bullets:";
			val.ModName = "SC";
			val.Art = null;
			val.Rarity = (Rarity)0;
			val.Theme = (CardThemeColorType)3;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[3]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Percentage Damage",
					amount = "+40%"
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Knockback",
					amount = "+100%"
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Bullet gravity",
					amount = "+50%"
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
		cardInfo.allowMultiple = true;
	}
}
public class SilverBulletEffect : CardEffect
{
	private int BulletCount = 6;

	public override IEnumerator OnBattleStart(IGameModeHandler gameModeHandler)
	{
		BulletCount = 6;
		if (CardCheck.Amount(((CardEffect)this).player, "Silver Bullet") >= 2)
		{
			BulletCount += 6 * (CardCheck.Amount(((CardEffect)this).player, "Silver Bullet") - 1);
		}
		if ((Object)(object)((Component)((CardEffect)this).player).gameObject.GetComponent<SilverBulletBuffMono>() == (Object)null)
		{
			((Component)((CardEffect)this).player).gameObject.AddComponent<SilverBulletBuffMono>();
		}
		return ((CardEffect)this).OnBattleStart(gameModeHandler);
	}

	public override IEnumerator OnShootCoroutine(GameObject projectile)
	{
		yield return null;
		if (!((Object)(object)((Component)((CardEffect)this).player).gameObject.GetComponent<SilverBulletBuffMono>() != (Object)null) || !((CardEffect)this).player.data.isPlaying)
		{
			yield break;
		}
		if (BulletCount > 1)
		{
			BulletCount--;
			if ((Object)(object)((Component)((CardEffect)this).player).gameObject.GetComponent<SilverBulletBuffMono>() == (Object)null)
			{
				((Component)((CardEffect)this).player).gameObject.AddComponent<SilverBulletBuffMono>();
			}
		}
		else
		{
			Object.Destroy((Object)(object)((Component)((Component)((CardEffect)this).player).transform).gameObject.GetComponent<SilverBulletBuffMono>());
		}
	}
}
public class SuddenDeathInsuranceCard : CustomEffectCard<SuddenDeathInsuranceEffect>
{
	public override CardDetails<SuddenDeathInsuranceEffect> Details
	{
		get
		{
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Expected O, but got Unknown
			CardDetails<SuddenDeathInsuranceEffect> val = new CardDetails<SuddenDeathInsuranceEffect>();
			val.Title = "Sudden Death Insurance";
			val.Description = "First <color=#FBEE21>5</color> seconds of battle:";
			val.ModName = "SC";
			val.Art = null;
			val.Rarity = (Rarity)0;
			val.Theme = (CardThemeColorType)2;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "HP",
					amount = "+400%"
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
		cardInfo.allowMultiple = false;
	}
}
public class SuddenDeathInsuranceEffect : CardEffect
{
	public override IEnumerator OnBattleStart(IGameModeHandler gameModeHandler)
	{
		if ((Object)(object)((Component)((CardEffect)this).player).gameObject.GetComponent<SuDIBuffMono>() != (Object)null)
		{
			Object.Destroy((Object)(object)((Component)((Component)((CardEffect)this).player).transform).gameObject.GetComponent<SuDIBuffMono>());
		}
		((Component)((CardEffect)this).player).gameObject.AddComponent<SuDIBuffMono>();
		Object.Destroy((Object)(object)((Component)((Component)((CardEffect)this).player).transform).gameObject.GetComponent<SuDIBuffMono>(), 5f);
		return ((CardEffect)this).OnBattleStart(gameModeHandler);
	}
}
public class YDWWTPCard : CustomEffectCard<ExampleEffect>
{
	public override CardDetails<ExampleEffect> Details
	{
		get
		{
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Expected O, but got Unknown
			CardDetails<ExampleEffect> val = new CardDetails<ExampleEffect>();
			val.Title = "Y.D.W.W.T.P.";
			val.Description = "The sword of kings!";
			val.ModName = "SC";
			val.Art = null;
			val.Rarity = (Rarity)1;
			val.Theme = (CardThemeColorType)4;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = false,
					stat = "Block cooldown",
					amount = "+25%",
					simepleAmount = (SimpleAmount)5
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
		cardInfo.allowMultiple = false;
	}
}
public class ExampleEffect : CardEffect
{
	public override void OnBlock(BlockTriggerType trigger)
	{
		((CardEffect)this).player.data.healthHandler.Heal(((CardEffect)this).player.data.maxHealth * 0.002f);
	}

	public override void OnShoot(GameObject projectile)
	{
		((CardEffect)this).player.data.healthHandler.Heal(((CardEffect)this).player.data.maxHealth * 0.002f);
	}

	public override IEnumerator OnRoundStart(IGameModeHandler gameModeHandler)
	{
		return ((CardEffect)this).OnRoundStart(gameModeHandler);
	}

	public override IEnumerator OnBattleStart(IGameModeHandler gameModeHandler)
	{
		if ((Object)(object)((Component)((CardEffect)this).player).gameObject.GetComponent<YDWWTPMono>() != (Object)null)
		{
			Object.Destroy((Object)(object)((Component)((Component)((CardEffect)this).player).transform).gameObject.GetComponent<YDWWTPMono>());
		}
		if ((Object)(object)((Component)((CardEffect)this).player).gameObject.GetComponent<YDWWTPBuffMono>() != (Object)null)
		{
			Object.Destroy((Object)(object)((Component)((Component)((CardEffect)this).player).transform).gameObject.GetComponent<YDWWTPBuffMono>());
		}
		((Component)((CardEffect)this).player).gameObject.AddComponent<YDWWTPMono>();
		Object.Destroy((Object)(object)((Component)((Component)((CardEffect)this).player).transform).gameObject.GetComponent<YDWWTPMono>(), 5f);
		return ((CardEffect)this).OnBattleStart(gameModeHandler);
	}

	public override void OnBlockProjectile(GameObject projectile, Vector3 forward, Vector3 hitPosition)
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_000c: Unknown result type (might be due to invalid IL or missing references)
		//IL_001c: Expected O, but got Unknown
		StatManager.Apply(((CardEffect)this).player, new StatChanges
		{
			Damage = 1.5f
		});
	}
}
namespace SushiCardsSpace
{
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("com.Sashimi.Rounds.SushiCards", "SushiCards", "1.2.1")]
	[BepInProcess("Rounds.exe")]
	public class SushiCards : BaseUnityPlugin
	{
		private const string ModId = "com.Sashimi.Rounds.SushiCards";

		private const string ModName = "SushiCards";

		public const string Version = "1.2.1";

		public const string ModInitials = "SC";

		public static SushiCards instance { get; private set; }

		private void Awake()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Expected O, but got Unknown
			Harmony val = new Harmony("com.Sashimi.Rounds.SushiCards");
			val.PatchAll();
		}

		private void Start()
		{
			CustomCard.BuildCard<Jiangshi>();
			CustomCard.BuildCard<Bandage>();
			CustomCard.BuildCard<LittleMac>();
			CustomCard.BuildCard<BLOODLUST>();
			CustomCard.BuildCard<Speedster>();
			CustomCard.BuildCard<ChargeroundsRed>();
			CustomCard.BuildCard<ChargeroundsYellow>();
			CustomCard.BuildCard<ChargeroundsGreen>();
			CustomCard.BuildCard<ChargeroundsPink>();
			CustomCard.BuildCard<ChargeroundsBlue>();
			CustomCard.BuildCard<ChargeroundsWhite>();
			CustomCard.BuildCard<ChargeroundsPurple>();
			CustomCard.BuildCard<RegenAmmo>();
			CustomCard.BuildCard<Tenacity>();
			CustomCard.BuildCard<Omosa>();
			CustomCard.BuildCard<RITUALSWORD>();
			CustomCard.BuildCard<HugeMagazine>();
			CustomCard.BuildCard<AngelBlessingCard>();
			CustomCard.BuildCard<ParryCard>();
			CustomCard.BuildCard<Machinegunner>();
			CustomCard.BuildCard<DemonicShieldPactCard>();
			CustomCard.BuildCard<SilverBulletCard>();
			CustomCard.BuildCard<ImmunityCard>();
			CustomCard.BuildCard<PanicNecklaceCard>();
			CustomCard.BuildCard<SuddenDeathInsuranceCard>();
			CustomCard.BuildCard<SeppukuCard>();
			instance = this;
		}
	}
}
namespace SushiCards
{
	internal class CardCheck : MonoBehaviour
	{
		public static int Amount(Player player, string cardName)
		{
			List<CardInfo> currentCards = player.data.currentCards;
			int num = 0;
			for (int num2 = currentCards.Count - 1; num2 >= 0; num2--)
			{
				if (currentCards[num2].cardName == cardName)
				{
					num++;
				}
			}
			return num;
		}
	}
}
namespace SushiCards.Cards
{
	internal class Bandage : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			block.healing = 30f;
			block.cdMultiplier = 0.9f;
		}

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

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

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

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

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Block Healing",
					amount = "+30",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Block Cooldown",
					amount = "-10%",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

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

		public override string GetModName()
		{
			return "SC";
		}
	}
	internal class BLOODLUST : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			statModifiers.lifeSteal = 2.5f;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			gun.percentageDamage += 0.1f;
			if ((Object)(object)((Component)player).gameObject.GetComponent<BLOODLUSTMono>() == (Object)null)
			{
				((Component)player).gameObject.AddComponent<BLOODLUSTMono>();
			}
		}

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

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

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

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Expected O, but got Unknown
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[3]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Life steal",
					amount = "+250%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Percentage Damage",
					amount = "+10%"
				},
				new CardInfoStat
				{
					positive = false,
					stat = "HP loss/s",
					amount = "-7.5%",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

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

		public override string GetModName()
		{
			return "SC";
		}
	}
	public class BLOODLUSTMono : MonoBehaviour
	{
		private Player player;

		private readonly float updateDelay = 0.1f;

		public float startTime = Time.time;

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

		public void Update()
		{
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			if (Time.time >= startTime + updateDelay)
			{
				ResetTimer();
				((Damagable)player.data.healthHandler).TakeDamage(Vector2.up * player.data.maxHealth * (0.0075f * (float)CardCheck.Amount(player, "BLOODLUST")), Vector2.zero, (GameObject)null, (Player)null, true, false);
			}
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}
	}
	internal class ChargeroundsBlue : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			if (!gun.useCharge)
			{
				gun.chargeDamageMultiplier = 1f;
				gun.chargeEvenSpreadTo = 1f;
				gun.chargeRecoilTo = 1f;
				gun.chargeSpeedTo = 1f;
				gun.chargeSpreadTo = 1f;
				gun.chargeNumberOfProjectilesTo = 0f;
			}
			gun.useCharge = true;
			gun.chargeDamageMultiplier *= 1.1f;
			if ((Object)(object)((Component)player).gameObject.GetComponent<ChargeroundsBlueMono>() == (Object)null)
			{
				((Component)player).gameObject.AddComponent<ChargeroundsBlueMono>();
			}
			if ((Object)(object)((Component)player).gameObject.GetComponent<ChargeroundsIndicator>() == (Object)null)
			{
				((Component)player).gameObject.AddComponent<ChargeroundsIndicator>();
			}
		}

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

		protected override string GetTitle()
		{
			return "Charge rounds[Blue]";
		}

		protected override string GetDescription()
		{
			return "Enable charge attack!\nWhile charging max:";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		public override string GetModName()
		{
			return "SC";
		}
	}
	public class ChargeroundsBlueBuffMono : ReversibleEffect
	{
		public override void OnStart()
		{
			float currentCharge = base.player.data.weaponHandler.gun.currentCharge;
			if (currentCharge > 0.1f)
			{
				base.characterDataModifier.maxHealth_mult = currentCharge * (float)CardCheck.Amount(base.player, "Charge rounds[Blue]") + 1f;
				base.blockModifier.cdMultiplier_mult = 1f - currentCharge * 0.5f;
			}
			if (currentCharge > 0.8f)
			{
				base.blockModifier.additionalBlocks_add = CardCheck.Amount(base.player, "Chargerounds[Blue]");
			}
		}

		public override void OnOnDisable()
		{
			((ReversibleEffect)this).Destroy();
		}
	}
	public class ChargeroundsBlueMono : MonoBehaviour
	{
		private Player player;

		private readonly float updateDelay = 0.1f;

		public float startTime = Time.time;

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

		public void Update()
		{
			if (Time.time >= startTime + updateDelay)
			{
				ResetTimer();
				if ((Object)(object)((Component)((Component)this).GetComponent<Player>()).GetComponent<ChargeroundsBlueBuffMono>() != (Object)null)
				{
					((ReversibleEffect)((Component)((Component)this).GetComponent<Player>()).GetComponent<ChargeroundsBlueBuffMono>()).Destroy();
				}
				((Component)((Component)((Component)this).GetComponent<Player>()).transform).gameObject.AddComponent<ChargeroundsBlueBuffMono>();
			}
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}
	}
	internal class ChargeroundsGreen : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			gun.ammo = 3;
			gun.spread = 0.05f;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			if (!gun.useCharge)
			{
				gun.chargeDamageMultiplier = 1f;
				gun.chargeEvenSpreadTo = 1f;
				gun.chargeRecoilTo = 1f;
				gun.chargeSpeedTo = 1f;
				gun.chargeSpreadTo = 1f;
				gun.chargeNumberOfProjectilesTo = 0f;
			}
			gun.useCharge = true;
			gun.chargeNumberOfProjectilesTo += 2f;
			gun.chargeDamageMultiplier *= 1.1f;
			if ((Object)(object)((Component)player).gameObject.GetComponent<ChargeroundsIndicator>() == (Object)null)
			{
				((Component)player).gameObject.AddComponent<ChargeroundsIndicator>();
			}
		}

		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 "Charge rounds[Green]";
		}

		protected override string GetDescription()
		{
			return "Enable charge attack!";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[3]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Max Charge Bullet",
					amount = "+2",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Max Charge Damage",
					amount = "+10%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Ammo",
					amount = "+3",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

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

		public override string GetModName()
		{
			return "SC";
		}
	}
	public class ChargeroundsIndicator : MonoBehaviour
	{
		private Player player;

		private readonly float updateDelay = 0.1f;

		public float startTime = Time.time;

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

		public void Update()
		{
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			if (Time.time >= startTime + updateDelay)
			{
				ResetTimer();
				float currentCharge = player.data.weaponHandler.gun.currentCharge;
				if (currentCharge > 0.99f)
				{
					ColorEffect val = ((Component)player).gameObject.AddComponent<ColorEffect>();
					val.SetColor(Color.yellow);
				}
				else
				{
					((Component)((Component)this).GetComponent<Player>()).GetComponent<ColorEffect>().Destroy();
				}
			}
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}
	}
	internal class ChargeroundsPink : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			gun.damage = 0.7f;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			if (!gun.useCharge)
			{
				gun.chargeDamageMultiplier = 1f;
				gun.chargeEvenSpreadTo = 1f;
				gun.chargeRecoilTo = 1f;
				gun.chargeSpeedTo = 1f;
				gun.chargeSpreadTo = 1f;
				gun.chargeNumberOfProjectilesTo = 0f;
			}
			gun.useCharge = true;
			gun.dmgMOnBounce *= 1.15f;
			if ((Object)(object)((Component)player).gameObject.GetComponent<ChargeroundsPinkMono>() == (Object)null)
			{
				((Component)player).gameObject.AddComponent<ChargeroundsPinkMono>();
			}
			if ((Object)(object)((Component)player).gameObject.GetComponent<ChargeroundsIndicator>() == (Object)null)
			{
				((Component)player).gameObject.AddComponent<ChargeroundsIndicator>();
			}
		}

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

		protected override string GetTitle()
		{
			return "Charge rounds[Pink]";
		}

		protected override string GetDescription()
		{
			return "Enable charge attack!";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[3]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Max Charge Bounces",
					amount = "+10",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Damage per bounce",
					amount = "+15%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Damage",
					amount = "-30%",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

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

		public override string GetModName()
		{
			return "SC";
		}
	}
	public class ChargeroundsPinkBuffMono : ReversibleEffect
	{
		public override void OnStart()
		{
			float currentCharge = base.player.data.weaponHandler.gun.currentCharge;
			if (currentCharge > 0.1f)
			{
				base.gunStatModifier.reflects_add = (int)(currentCharge * 100f) / 10 * CardCheck.Amount(base.player, "Charge rounds[Pink]");
			}
		}

		public override void OnOnDisable()
		{
			((ReversibleEffect)this).Destroy();
		}
	}
	public class ChargeroundsPinkMono : MonoBehaviour
	{
		private Player player;

		private readonly float updateDelay = 0.1f;

		public float startTime = Time.time;

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

		public void Update()
		{
			if (Time.time >= startTime + updateDelay)
			{
				ResetTimer();
				if ((Object)(object)((Component)((Component)this).GetComponent<Player>()).GetComponent<ChargeroundsPinkBuffMono>() != (Object)null)
				{
					((ReversibleEffect)((Component)((Component)this).GetComponent<Player>()).GetComponent<ChargeroundsPinkBuffMono>()).Destroy();
				}
				((Component)((Component)((Component)this).GetComponent<Player>()).transform).gameObject.AddComponent<ChargeroundsPinkBuffMono>();
			}
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}
	}
	internal class ChargeroundsPurple : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			statModifiers.lifeSteal = 0.75f;
			base.gun.unblockable = true;
			cardInfo.allowMultiple = false;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			if (!gun.useCharge)
			{
				gun.chargeDamageMultiplier = 1f;
				gun.chargeEvenSpreadTo = 1f;
				gun.chargeRecoilTo = 1f;
				gun.chargeSpeedTo = 1f;
				gun.chargeSpreadTo = 1f;
				gun.chargeNumberOfProjectilesTo = 0f;
			}
			gun.useCharge = true;
			gun.chargeDamageMultiplier *= 1.5f;
			if ((Object)(object)((Component)player).gameObject.GetComponent<ChargeroundsPurpleMono>() == (Object)null)
			{
				((Component)player).gameObject.AddComponent<ChargeroundsPurpleMono>();
			}
			if ((Object)(object)((Component)player).gameObject.GetComponent<ChargeroundsIndicator>() == (Object)null)
			{
				((Component)player).gameObject.AddComponent<ChargeroundsIndicator>();
			}
		}

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

		protected override string GetTitle()
		{
			return "Charge rounds[Purple]";
		}

		protected override string GetDescription()
		{
			return "<color=#FF5E5E>Cannot move</color> while charging\nFull charge penetrates the block.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[3]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Max Charge Damage",
					amount = "+50%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Max Charge Knockback",
					amount = "+200%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Life steal",
					amount = "+75%",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

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

		public override string GetModName()
		{
			return "SC";
		}
	}
	public class ChargeroundsPurpleBuffMono : ReversibleEffect
	{
		public override void OnStart()
		{
			float currentCharge = base.player.data.weaponHandler.gun.currentCharge;
			if (currentCharge > 0.1f)
			{
				base.characterStatModifiersModifier.movementSpeed_mult = 1f - currentCharge;
				base.characterStatModifiersModifier.jump_mult = 1f - currentCharge;
				base.gunStatModifier.knockback_mult = 1f + currentCharge * 2f;
			}
		}

		public override void OnOnDisable()
		{
			((ReversibleEffect)this).Destroy();
		}
	}
	public class ChargeroundsPurpleMono : MonoBehaviour
	{
		private Player player;

		private readonly float updateDelay = 0.1f;

		public float startTime = Time.time;

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

		public void Update()
		{
			if (Time.time >= startTime + updateDelay)
			{
				ResetTimer();
				if ((Object)(object)((Component)((Component)this).GetComponent<Player>()).GetComponent<ChargeroundsPurpleBuffMono>() != (Object)null)
				{
					((ReversibleEffect)((Component)((Component)this).GetComponent<Player>()).GetComponent<ChargeroundsPurpleBuffMono>()).Destroy();
				}
				((Component)((Component)((Component)this).GetComponent<Player>()).transform).gameObject.AddComponent<ChargeroundsPurpleBuffMono>();
			}
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}
	}
	internal class ChargeroundsRed : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			if (!gun.useCharge)
			{
				gun.chargeDamageMultiplier = 1f;
				gun.chargeEvenSpreadTo = 1f;
				gun.chargeRecoilTo = 1f;
				gun.chargeSpeedTo = 1f;
				gun.chargeSpreadTo = 1f;
				gun.chargeNumberOfProjectilesTo = 0f;
			}
			gun.useCharge = true;
			gun.chargeDamageMultiplier *= 1.75f;
			gun.damageAfterDistanceMultiplier += 0.25f;
			if ((Object)(object)((Component)player).gameObject.GetComponent<ChargeroundsIndicator>() == (Object)null)
			{
				((Component)player).gameObject.AddComponent<ChargeroundsIndicator>();
			}
		}

		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 "Charge rounds[Red]";
		}

		protected override string GetDescription()
		{
			return "Enable charge attack!";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Max Charge Damage",
					amount = "+75%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Damage Growth",
					amount = "+25%",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

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

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

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			if (!gun.useCharge)
			{
				gun.chargeDamageMultiplier = 1f;
				gun.chargeEvenSpreadTo = 1f;
				gun.chargeRecoilTo = 1f;
				gun.chargeSpeedTo = 1f;
				gun.chargeSpreadTo = 1f;
				gun.chargeNumberOfProjectilesTo = 0f;
			}
			gun.useCharge = true;
			gun.projectielSimulatonSpeed *= 0.75f;
			gun.chargeDamageMultiplier *= 1.1f;
			if (gunAmmo.maxAmmo > 2)
			{
				gunAmmo.maxAmmo -= 2;
			}
			else
			{
				gunAmmo.maxAmmo = 1;
			}
			if ((Object)(object)((Component)player).gameObject.GetComponent<ChargeroundsWhiteMono>() == (Object)null)
			{
				((Component)player).gameObject.AddComponent<ChargeroundsWhiteMono>();
			}
			if ((Object)(object)((Component)player).gameObject.GetComponent<ChargeroundsIndicator>() == (Object)null)
			{
				((Component)player).gameObject.AddComponent<ChargeroundsIndicator>();
			}
		}

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

		protected override string GetTitle()
		{
			return "Charge rounds[White]";
		}

		protected override string GetDescription()
		{
			return "Enable charge attack!\nPenetrates through walls when fully charged";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[3]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Max Charge Damage",
					amount = "+10%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Projectile Speed",
					amount = "-25%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Ammo",
					amount = "-2"
				}
			};
		}

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

		public override string GetModName()
		{
			return "SC";
		}
	}
	public class ChargeroundsWhiteBuffMono : ReversibleEffect
	{
		public override void OnStart()
		{
			float currentCharge = base.player.data.weaponHandler.gun.currentCharge;
			if (currentCharge > 0.8f)
			{
				base.gun.ignoreWalls = true;
			}
			else
			{
				base.gun.ignoreWalls = false;
			}
		}

		public override void OnOnDisable()
		{
			((ReversibleEffect)this).Destroy();
		}
	}
	public class ChargeroundsWhiteMono : MonoBehaviour
	{
		private Player player;

		private readonly float updateDelay = 0.1f;

		public float startTime = Time.time;

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

		public void Update()
		{
			if (Time.time >= startTime + updateDelay)
			{
				ResetTimer();
				if ((Object)(object)((Component)((Component)this).GetComponent<Player>()).GetComponent<ChargeroundsWhiteBuffMono>() != (Object)null)
				{
					((ReversibleEffect)((Component)((Component)this).GetComponent<Player>()).GetComponent<ChargeroundsWhiteBuffMono>()).Destroy();
				}
				((Component)((Component)((Component)this).GetComponent<Player>()).transform).gameObject.AddComponent<ChargeroundsWhiteBuffMono>();
			}
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}
	}
	internal class ChargeroundsYellow : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			if (!gun.useCharge)
			{
				gun.chargeDamageMultiplier = 1f;
				gun.chargeEvenSpreadTo = 1f;
				gun.chargeRecoilTo = 1f;
				gun.chargeSpeedTo = 1f;
				gun.chargeSpreadTo = 1f;
				gun.chargeNumberOfProjectilesTo = 0f;
			}
			gun.useCharge = true;
			gun.chargeSpeedTo *= 2f;
			gun.chargeDamageMultiplier *= 1.1f;
			if ((Object)(object)((Component)player).gameObject.GetComponent<ChargeroundsIndicator>() == (Object)null)
			{
				((Component)player).gameObject.AddComponent<ChargeroundsIndicator>();
			}
		}

		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 "Charge rounds[Yellow]";
		}

		protected override string GetDescription()
		{
			return "Enable charge attack!";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Max Charge Ballet Speed",
					amount = "+100%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Max Charge Damage",
					amount = "+10%",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

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

		public override string GetModName()
		{
			return "SC";
		}
	}
	public class DrunkenBulletMono : ReversibleEffect
	{
		public override void OnStart()
		{
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			base.gunStatModifier.damage_mult = Random.Range(0.1f, 2f);
			base.gunStatModifier.projectileSpeed_mult = Random.Range(0.25f, 1.5f);
			base.gunStatModifier.projectielSimulatonSpeed_mult = Random.Range(0.25f, 1.5f);
			base.gunStatModifier.gravity_mult = Random.Range(-1f, 1.5f);
			base.gunStatModifier.knockback_mult = Random.Range(-2f, 2f);
			while (Random.Range(1, 5) == 1)
			{
				base.gunStatModifier.projectileColor = Color.magenta;
				base.gunStatModifier.damage_mult = Random.Range(0.1f, 3f);
				base.gunStatModifier.projectileSpeed_mult = Random.Range(0.1f, 2f);
				base.gunStatModifier.projectielSimulatonSpeed_mult = Random.Range(0.1f, 2f);
				base.gunStatModifier.gravity_mult = Random.Range(-2f, 2f);
				base.gunStatModifier.knockback_mult = Random.Range(-4f, 4f);
			}
		}

		public override void OnOnDisable()
		{
			((ReversibleEffect)this).Destroy();
		}
	}
	internal class HugeMagazine : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CharacterStatModifiers statModifiers = base.statModifiers;
			statModifiers.health *= 1.5f;
			gunAmmo.maxAmmo += (int)(base.statModifiers.health * 5f);
			gun.attackSpeedMultiplier *= 1.35f;
			gun.reloadTime *= 1.35f;
		}

		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 "Huge Magazine";
		}

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

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		public override string GetModName()
		{
			return "SC";
		}
	}
	public class ImmunityBuffMono : ReversibleEffect
	{
		public override void OnStart()
		{
			base.characterDataModifier.maxHealth_mult = 3f;
		}

		public override void OnOnDisable()
		{
			((ReversibleEffect)this).Destroy();
		}
	}
	internal class Jiangshi : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			statModifiers.secondsToTakeDamageOver = 8f;
			statModifiers.health = 1.8f;
			statModifiers.jump = 0.5f;
			cardInfo.allowMultiple = false;
		}

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

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

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

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

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Expected O, but got Unknown
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Expected O, but got Unknown
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Expected O, but got Unknown
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[4]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Health",
					amount = "+80%"
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Decay",
					amount = "+8s"
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Ground Movement Speed",
					amount = "-95%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					amount = "-50%",
					positive = false,
					simepleAmount = (SimpleAmount)0,
					stat = "Jump height"
				}
			};
		}

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

		public override string GetModName()
		{
			return "SC";
		}
	}
	public class JiangshiBuffMono : ReversibleEffect
	{
		public override void OnStart()
		{
			base.characterStatModifiersModifier.movementSpeed_mult = 0.05f;
		}

		public void Update()
		{
			if (!base.player.data.isGrounded)
			{
				((ReversibleEffect)this).Destroy();
			}
		}

		public override void OnOnDisable()
		{
			((ReversibleEffect)this).Destroy();
		}
	}
	public class JiangshiMono : MonoBehaviour
	{
		private float cooldown = 0.1f;

		private float startTime;

		private Player player;

		private Block block;

		private Gun gun;

		private void Start()
		{
			startTime = Time.time - cooldown;
			CharacterData componentInParent = ((Component)this).GetComponentInParent<CharacterData>();
			player = componentInParent.player;
			block = componentInParent.block;
			gun = componentInParent.weaponHandler.gun;
			Block val = block;
		}

		public void Update()
		{
			if (Time.time >= startTime + cooldown)
			{
				ResetTimer();
				if ((Object)(object)((Component)((Component)this).GetComponent<Player>()).GetComponent<JiangshiBuffMono>() != (Object)null)
				{
					((ReversibleEffect)((Component)((Component)this).GetComponent<Player>()).GetComponent<JiangshiBuffMono>()).Destroy();
				}
				((Component)((Component)((Component)this).GetComponent<Player>()).transform).gameObject.AddComponent<JiangshiBuffMono>();
			}
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}
	}
	internal class LittleMac : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			statModifiers.jump = 0.7f;
			gun.damage = 2f;
			statModifiers.movementSpeed = 1.6f;
			cardInfo.allowMultiple = false;
		}

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

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

		protected override string GetTitle()
		{
			return "Little Mac";
		}

		protected override string GetDescription()
		{
			return "Damage <color=#FF5E5E>-80%</color>, Movement speed <color=#FF5E5E>-50%</color>, Bullet speed <color=#FF5E5E>-50%</color> while in the air.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[3]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Damage",
					amount = "+100%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Movement speed",
					amount = "+60%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Jump height",
					amount = "-30%",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

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

		public override string GetModName()
		{
			return "SC";
		}
	}
	public class LittleMacBuffMono : ReversibleEffect
	{
		public override void OnStart()
		{
			base.characterStatModifiersModifier.movementSpeed_mult = 0.5f;
			base.gunStatModifier.damage_mult = 0.2f;
			base.gunStatModifier.projectileSpeed_mult = 0.5f;
		}

		public void Update()
		{
			if (base.player.data.isGrounded)
			{
				((ReversibleEffect)this).Destroy();
			}
		}

		public override void OnOnDisable()
		{
			((ReversibleEffect)this).Destroy();
		}
	}
	public class LittleMacMono : MonoBehaviour
	{
		private float cooldown = 0.1f;

		private float startTime;

		private Player player;

		private Block block;

		private Gun gun;

		private void Start()
		{
			startTime = Time.time - cooldown;
			CharacterData componentInParent = ((Component)this).GetComponentInParent<CharacterData>();
			player = componentInParent.player;
			block = componentInParent.block;
			gun = componentInParent.weaponHandler.gun;
			Block val = block;
		}

		public void Update()
		{
			if (Time.time >= startTime + cooldown)
			{
				ResetTimer();
				if ((Object)(object)((Component)((Component)this).GetComponent<Player>()).GetComponent<LittleMacBuffMono>() != (Object)null)
				{
					((ReversibleEffect)((Component)((Component)this).GetComponent<Player>()).GetComponent<LittleMacBuffMono>()).Destroy();
				}
				((Component)((Component)((Component)this).GetComponent<Player>()).transform).gameObject.AddComponent<LittleMacBuffMono>();
			}
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}
	}
	internal class Machinegunner : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.allowMultiple = false;
			gun.reloadTimeAdd = 7f;
			gun.spread = 0.1f;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			if ((Object)(object)((Component)player).gameObject.GetComponent<MachinegunnerMono>() == (Object)null)
			{
				((Component)player).gameObject.AddComponent<MachinegunnerMono>();
			}
			gun.damage *= 0.34f;
		}

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

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

		protected override string GetDescription()
		{
			return "Reload time status 1 second per gain:\nAmmo <color=#6CB06C>+3</color>/ATK Speed <color=#6CB06C>+75%</color>.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					positive = false,
					stat = "Damage",
					amount = "-66%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Reload time",
					amount = "+7s",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

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

		public override string GetModName()
		{
			return "SC";
		}
	}
	public class MachinegunnerBuffMono : ReversibleEffect
	{
		public override void OnStart()
		{
			float num = (base.gunAmmo.reloadTime + base.gunAmmo.reloadTimeAdd) * base.gunAmmo.reloadTimeMultiplier;
			base.gunAmmoStatModifier.maxAmmo_add = (int)num * 3;
			if (num > 2f)
			{
				base.gunStatModifier.attackSpeed_mult = 1f / (1f + num * 0.75f);
			}
		}

		public override void OnOnDisable()
		{
			((ReversibleEffect)this).Destroy();
		}
	}
	public class MachinegunnerMono : MonoBehaviour
	{
		private float cooldown = 0.1f;

		private float startTime;

		private void Start()
		{
			startTime = Time.time - cooldown;
			CharacterData componentInParent = ((Component)this).GetComponentInParent<CharacterData>();
		}

		public void Update()
		{
			if (Time.time >= startTime + cooldown)
			{
				ResetTimer();
				if ((Object)(object)((Component)((Component)this).GetComponent<Player>()).GetComponent<MachinegunnerBuffMono>() != (Object)null)
				{
					((ReversibleEffect)((Component)((Component)this).GetComponent<Player>()).GetComponent<MachinegunnerBuffMono>()).Destroy();
				}
				((Component)((Component)((Component)this).GetComponent<Player>()).transform).gameObject.AddComponent<MachinegunnerBuffMono>();
			}
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}
	}
	internal class Omosa2 : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			gun.damage = 1.3f;
			statModifiers.health = 1.4f;
			statModifiers.movementSpeed = 0.8f;
			statModifiers.gravity = 1.3f;
		}

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

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

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

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

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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