Redo.dll

Decompiled 3 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using ModdingUtils.Extensions;
using ModdingUtils.GameModes;
using ModdingUtils.Utils;
using Photon.Pun;
using Redo.MonoBehaviors;
using Redo.MonoBehaviours;
using RedoNameSpace.Cards;
using UnboundLib;
using UnboundLib.Cards;
using UnboundLib.Networking;
using UnboundLib.Utils;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("Redo")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("Redo")]
[assembly: AssemblyTitle("Redo")]
[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;
		}
	}
}
namespace Redo.Patches
{
	[Serializable]
	[HarmonyPatch(typeof(HealthHandler), "DoDamage")]
	internal class HealtHandlerPatchDoDamage
	{
		private static void killPlayer(Player player, Vector2 damage)
		{
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			if (player.data.stats.remainingRespawns > 0)
			{
				player.data.view.RPC("RPCA_Die_Phoenix", (RpcTarget)0, new object[1] { damage * player.data.maxHealth * 1000f });
			}
			else
			{
				player.data.view.RPC("RPCA_Die", (RpcTarget)0, new object[1] { damage * player.data.maxHealth * 1000f });
			}
		}

		private static void Prefix(HealthHandler __instance, Vector2 damage, Vector2 position, Color blinkColor, GameObject damagingWeapon, Player damagingPlayer, bool healthRemoval, ref bool lethal, bool ignoreBlock)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			//IL_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			//IL_0266: Unknown result type (might be due to invalid IL or missing references)
			CharacterData val = (CharacterData)Traverse.Create((object)__instance).Field("data").GetValue();
			Player player = val.player;
			if (!val.isPlaying || val.dead || __instance.isRespawning)
			{
				return;
			}
			if ((Object)(object)player != (Object)null && (Object)(object)player == (Object)(object)damagingPlayer && (Object)(object)((Component)player.data).GetComponent<RedemptiveMasochistEffect>() != (Object)null)
			{
				player.data.health = Math.Min(player.data.health + 2f * ((Vector2)(ref damage)).magnitude, player.data.maxHealth * 2f + ((Vector2)(ref damage)).magnitude);
			}
			if (lethal && val.health < ((Vector2)(ref damage)).magnitude)
			{
				if ((Object)(object)damagingPlayer != (Object)null && (Object)(object)((Component)player.data).GetComponent<DestinyBondEffect>() != (Object)null)
				{
					killPlayer(player, damage);
					killPlayer(damagingPlayer, damage);
				}
				if ((Object)(object)damagingPlayer != (Object)null && (Object)(object)((Component)damagingPlayer.data).GetComponent<MortalBountyEffect>() != (Object)null)
				{
					Gun gun = damagingPlayer.data.weaponHandler.gun;
					gun.bulletDamageMultiplier += 0.45454547f;
				}
				if ((Object)(object)damagingPlayer != (Object)null && (Object)(object)((Component)damagingPlayer.data).GetComponent<VictorsVitalityEffect>() != (Object)null)
				{
					CharacterData data = damagingPlayer.data;
					data.maxHealth += 25f;
				}
				if ((Object)(object)damagingPlayer != (Object)null && (Object)(object)((Component)damagingPlayer.data).GetComponent<GrimReaperEffect>() != (Object)null)
				{
					CharacterStatModifiers stats = damagingPlayer.data.stats;
					stats.remainingRespawns++;
				}
				if ((Object)(object)damagingPlayer != (Object)null && (Object)(object)player != (Object)null && (Object)(object)((Component)player.data).GetComponent<BountyEffect>() != (Object)null)
				{
					CardInfo cardWithObjectName = Cards.instance.GetCardWithObjectName("__REDO__Bounty");
					Cards.instance.RemoveCardFromPlayer(player, player.data.currentCards.IndexOf(cardWithObjectName));
					Cards.instance.AddCardToPlayer(damagingPlayer, cardWithObjectName, false, "", 0f, 0f);
					killPlayer(player, damage);
				}
			}
		}
	}
}
namespace Redo.MonoBehaviours
{
	public class BackupPlanEffect : MonoBehaviour
	{
		public static ObjectsToSpawn Explosion;

		private Player player;

		private readonly float range = 1.75f;

		static BackupPlanEffect()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: 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_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: 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_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Expected O, but got Unknown
			(GameObject AddToProjectile, GameObject effect, Explosion explosion) tuple = LoadExplosion("MADExplosion");
			GameObject item = tuple.AddToProjectile;
			GameObject item2 = tuple.effect;
			Explosion = new ObjectsToSpawn
			{
				AddToProjectile = item,
				direction = (Direction)0,
				effect = item2,
				normalOffset = 0.1f,
				scaleFromDamage = 0.5f,
				scaleStackM = 0.7f,
				scaleStacks = true,
				spawnAsChild = false,
				spawnOn = (SpawnOn)0,
				stacks = 0,
				stickToAllTargets = false,
				stickToBigTargets = false,
				zeroZ = false
			};
		}

		private void Awake()
		{
		}

		public void Explode()
		{
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			Player component = ((Component)this).gameObject.GetComponent<Player>();
			if (PhotonNetwork.OfflineMode)
			{
				Explosion.effect.GetComponent<Explosion>().damage = 1000f;
				GameObject val = Object.Instantiate<GameObject>(Explosion.effect, ((Component)component.data).transform.position, Quaternion.identity);
				Transform transform = val.transform;
				transform.localScale *= 5f;
				Object.Destroy((Object)(object)val, 2f);
			}
			else if (((Component)player).GetComponent<PhotonView>().IsMine)
			{
				Explosion.effect.GetComponent<Explosion>().damage = 1000f;
				GameObject val2 = Object.Instantiate<GameObject>(Explosion.effect, ((Component)component.data).transform.position, Quaternion.identity);
				Transform transform2 = val2.transform;
				transform2.localScale *= 5f;
				Object.Destroy((Object)(object)val2, 2f);
				ExtensionMethods.ExecuteAfterSeconds((MonoBehaviour)(object)Unbound.Instance, 0.1f, (Action)delegate
				{
					NetworkingManager.RPC(typeof(BackupPlanEffect), "RPCA_Explode", new object[1] { player.data.view.ControllerActorNr });
				});
			}
		}

		public void OnDestroy()
		{
		}

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

		[UnboundRPC]
		private static void RPCA_Explode(int actorID)
		{
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: Expected O, but got Unknown
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			Player val = (Player)typeof(PlayerManager).InvokeMember("GetPlayerWithActorID", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.InvokeMethod, null, PlayerManager.instance, new object[1] { actorID });
			Explosion.effect.GetComponent<Explosion>().damage = 1000f;
			GameObject val2 = Object.Instantiate<GameObject>(Explosion.effect, ((Component)val.data).transform.position, Quaternion.identity);
			Transform transform = val2.transform;
			transform.localScale *= 5f;
			Object.Destroy((Object)(object)val2, 2f);
		}

		public static (GameObject AddToProjectile, GameObject effect, Explosion explosion) LoadExplosion(string name, Gun? gun = null)
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Expected O, but got Unknown
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = (GameObject)Resources.Load("0 cards/Explosive bullet");
			Gun component = val.GetComponent<Gun>();
			if ((Object)(object)gun != (Object)null)
			{
				gun.soundGun.AddSoundImpactModifier(component.soundImpactModifier);
			}
			GameObject addToProjectile = component.objectsToSpawn[0].AddToProjectile;
			GameObject val2 = Object.Instantiate<GameObject>(component.objectsToSpawn[0].effect);
			val2.transform.position = new Vector3(1000f, 0f, 0f);
			((Object)val2).hideFlags = (HideFlags)61;
			((Object)val2).name = name;
			Object.DestroyImmediate((Object)(object)val2.GetComponent<RemoveAfterSeconds>());
			Explosion component2 = val2.GetComponent<Explosion>();
			return (addToProjectile, val2, component2);
		}
	}
	public class BountyEffect : MonoBehaviour
	{
		static BountyEffect()
		{
		}

		private void Awake()
		{
		}

		public void Explode()
		{
		}

		public void OnDestroy()
		{
		}

		public void Destroy()
		{
			Object.Destroy((Object)(object)this);
		}
	}
	public class CatchMeIfYouCanEffect : MonoBehaviour
	{
		private Player player;

		private int added_revives = 0;

		private readonly float range = 1.75f;

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

		private void Start()
		{
		}

		private void Update()
		{
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: 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_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0101: Unknown result type (might be due to invalid IL or missing references)
			//IL_0106: Unknown result type (might be due to invalid IL or missing references)
			if (!PlayerStatus.PlayerAliveAndSimulated(player))
			{
				return;
			}
			List<Player> list = PlayerManager.instance.players.Where((Player player) => PlayerStatus.PlayerAliveAndSimulated(player) && player.playerID != this.player.playerID).ToList();
			foreach (Player item in list)
			{
				Vector2 val = Vector2.op_Implicit(((Component)item).transform.position - ((Component)player).transform.position);
				if (((Vector2)(ref val)).magnitude <= range)
				{
					CharacterStatModifiers component = ((Component)player).GetComponent<CharacterStatModifiers>();
					component.respawns++;
					added_revives++;
					((Damagable)player.data.healthHandler).CallTakeDamage(new Vector2(player.data.health * 100f, player.data.health * 100f), Vector2.op_Implicit(((Component)player).transform.position), (GameObject)null, (Player)null, true);
				}
			}
		}

		public void OnDestroy()
		{
		}

		public void Destroy()
		{
			Object.Destroy((Object)(object)this);
		}
	}
	public class DestinyBondEffect : MonoBehaviour
	{
		static DestinyBondEffect()
		{
		}

		private void Awake()
		{
		}

		public void Explode()
		{
		}

		public void OnDestroy()
		{
		}

		public void Destroy()
		{
			Object.Destroy((Object)(object)this);
		}
	}
	public class DivineGlockEffect : MonoBehaviour, IGameStartHookHandler, IPointStartHookHandler
	{
		private CharacterStatModifiers characterStatModifiers;

		private Player player;

		public void Start()
		{
			InterfaceGameModeHooksManager.instance.RegisterHooks((object)this);
			player = ((Component)this).GetComponentInParent<Player>();
			characterStatModifiers = ((Component)this).GetComponentInParent<CharacterStatModifiers>();
		}

		public void OnPointStart()
		{
			CharacterData data = player.data;
			data.maxHealth += 25f;
			CharacterData data2 = player.data;
			data2.health += 25f;
		}

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

		public void OnDestroy()
		{
			InterfaceGameModeHooksManager.instance.RemoveHooks((object)this);
		}
	}
	public class GrimReaperEffect : MonoBehaviour
	{
		static GrimReaperEffect()
		{
		}

		private void Awake()
		{
		}

		public void Explode()
		{
		}

		public void OnDestroy()
		{
		}

		public void Destroy()
		{
			Object.Destroy((Object)(object)this);
		}
	}
	public class MortalBountyEffect : MonoBehaviour
	{
		static MortalBountyEffect()
		{
		}

		private void Awake()
		{
		}

		public void Explode()
		{
		}

		public void OnDestroy()
		{
		}

		public void Destroy()
		{
			Object.Destroy((Object)(object)this);
		}
	}
	public class MutuallyAssuredDestructionEffect : MonoBehaviour
	{
		public static ObjectsToSpawn Explosion;

		private Player player;

		private readonly float range = 1.75f;

		static MutuallyAssuredDestructionEffect()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: 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_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: 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_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Expected O, but got Unknown
			(GameObject AddToProjectile, GameObject effect, Explosion explosion) tuple = LoadExplosion("MADExplosion");
			GameObject item = tuple.AddToProjectile;
			GameObject item2 = tuple.effect;
			Explosion = new ObjectsToSpawn
			{
				AddToProjectile = item,
				direction = (Direction)0,
				effect = item2,
				normalOffset = 0.1f,
				scaleFromDamage = 0.5f,
				scaleStackM = 0.7f,
				scaleStacks = true,
				spawnAsChild = false,
				spawnOn = (SpawnOn)0,
				stacks = 0,
				stickToAllTargets = false,
				stickToBigTargets = false,
				zeroZ = false
			};
		}

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

		private void Start()
		{
		}

		private void Update()
		{
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: 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_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00de: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01da: Unknown result type (might be due to invalid IL or missing references)
			if (!PlayerStatus.PlayerAliveAndSimulated(player))
			{
				return;
			}
			List<Player> list = PlayerManager.instance.players.Where((Player player) => PlayerStatus.PlayerAliveAndSimulated(player) && player.playerID != this.player.playerID).ToList();
			foreach (Player item in list)
			{
				Vector2 val = Vector2.op_Implicit(((Component)item).transform.position - ((Component)player).transform.position);
				if (!(((Vector2)(ref val)).magnitude <= range))
				{
					continue;
				}
				if (PhotonNetwork.OfflineMode)
				{
					killPlayer(item);
					Explosion.effect.GetComponent<Explosion>().damage = 1000f;
					GameObject val2 = Object.Instantiate<GameObject>(Explosion.effect, ((Component)player.data).transform.position, Quaternion.identity);
					Transform transform = val2.transform;
					transform.localScale *= 5f;
					Object.Destroy((Object)(object)val2, 2f);
					ExtensionMethods.ExecuteAfterSeconds((MonoBehaviour)(object)Unbound.Instance, 0.1f, (Action)delegate
					{
						killPlayer(player);
					});
				}
				else if (((Component)player).GetComponent<PhotonView>().IsMine)
				{
					NetworkingManager.RPC(typeof(MutuallyAssuredDestructionEffect), "RPCA_Explode", new object[1] { item.data.view.ControllerActorNr });
					Explosion.effect.GetComponent<Explosion>().damage = 1000f;
					GameObject val3 = Object.Instantiate<GameObject>(Explosion.effect, ((Component)player.data).transform.position, Quaternion.identity);
					Transform transform2 = val3.transform;
					transform2.localScale *= 5f;
					Object.Destroy((Object)(object)val3, 2f);
					ExtensionMethods.ExecuteAfterSeconds((MonoBehaviour)(object)Unbound.Instance, 0.1f, (Action)delegate
					{
						NetworkingManager.RPC(typeof(MutuallyAssuredDestructionEffect), "RPCA_Explode", new object[1] { player.data.view.ControllerActorNr });
					});
				}
			}
		}

		public void OnDestroy()
		{
		}

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

		[UnboundRPC]
		private static void RPCA_Explode(int actorID)
		{
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: Expected O, but got Unknown
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			Player val = (Player)typeof(PlayerManager).InvokeMember("GetPlayerWithActorID", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.InvokeMethod, null, PlayerManager.instance, new object[1] { actorID });
			Explosion.effect.GetComponent<Explosion>().damage = 1000f;
			GameObject val2 = Object.Instantiate<GameObject>(Explosion.effect, ((Component)val.data).transform.position, Quaternion.identity);
			Transform transform = val2.transform;
			transform.localScale *= 5f;
			Object.Destroy((Object)(object)val2, 2f);
			killPlayer(val);
		}

		private static void killPlayer(Player player)
		{
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)player != (Object)null)
			{
				typeof(HealthHandler).InvokeMember("RPCA_Die", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.InvokeMethod, null, player.data.healthHandler, new object[1] { (object)new Vector2(0f, 1f) });
			}
		}

		public static (GameObject AddToProjectile, GameObject effect, Explosion explosion) LoadExplosion(string name, Gun? gun = null)
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Expected O, but got Unknown
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = (GameObject)Resources.Load("0 cards/Explosive bullet");
			Gun component = val.GetComponent<Gun>();
			if ((Object)(object)gun != (Object)null)
			{
				gun.soundGun.AddSoundImpactModifier(component.soundImpactModifier);
			}
			GameObject addToProjectile = component.objectsToSpawn[0].AddToProjectile;
			GameObject val2 = Object.Instantiate<GameObject>(component.objectsToSpawn[0].effect);
			val2.transform.position = new Vector3(1000f, 0f, 0f);
			((Object)val2).hideFlags = (HideFlags)61;
			((Object)val2).name = name;
			Object.DestroyImmediate((Object)(object)val2.GetComponent<RemoveAfterSeconds>());
			Explosion component2 = val2.GetComponent<Explosion>();
			return (addToProjectile, val2, component2);
		}
	}
	public class RedemptiveMasochistEffect : MonoBehaviour
	{
		static RedemptiveMasochistEffect()
		{
		}

		private void Awake()
		{
		}

		public void Explode()
		{
		}

		public void OnDestroy()
		{
		}

		public void Destroy()
		{
			Object.Destroy((Object)(object)this);
		}
	}
	internal class SpatialSwapEffect : MonoBehaviour
	{
		public Block block;

		public Player player;

		public CharacterData data;

		private Action<BlockTriggerType> spatialSwapAction;

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

		public Action<BlockTriggerType> GetDoBlockAction(Player player, Block block, CharacterData data)
		{
			Player player2 = player;
			return delegate
			{
				//IL_002d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0032: Unknown result type (might be due to invalid IL or missing references)
				//IL_006c: 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_0073: Unknown result type (might be due to invalid IL or missing references)
				//IL_007d: 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_009c: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
				List<Player> list = PlayerManager.instance.players.Where((Player p) => p.teamID != player2.teamID && !p.data.dead).ToList();
				Vector3 position = ((Component)player2).transform.position;
				if (list.Count >= 1)
				{
					Random random = new Random();
					int index = random.Next(0, list.Count);
					Player val = list[index];
					Vector3 position2 = ((Component)val).transform.position;
					float y = position.y;
					position.y = position2.y;
					position2.y = y;
					float x = position.x;
					position.x = position2.x;
					position2.x = x;
					((Component)player2).GetComponentInParent<PlayerCollision>().IgnoreWallForFrames(2);
					((Component)player2).transform.position = position;
					((Component)val).GetComponentInParent<PlayerCollision>().IgnoreWallForFrames(2);
					((Component)val).transform.position = position2;
				}
			};
		}

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

		public void Destroy()
		{
			Object.Destroy((Object)(object)this);
			block.BlockAction = (Action<BlockTriggerType>)Delegate.Remove(block.BlockAction, spatialSwapAction);
		}
	}
	public class VictorsVitalityEffect : MonoBehaviour
	{
		static VictorsVitalityEffect()
		{
		}

		private void Awake()
		{
		}

		public void Explode()
		{
		}

		public void OnDestroy()
		{
		}

		public void Destroy()
		{
			Object.Destroy((Object)(object)this);
		}
	}
}
namespace Redo.MonoBehaviors
{
	public class EvilHeistEffect : MonoBehaviour
	{
		public void Update()
		{
			Player component = ((Component)this).GetComponent<Player>();
			List<Player> enemyPlayers = PlayerStatus.GetEnemyPlayers(component);
			if (!Input.GetMouseButtonDown(0) || !PlayerStatus.PlayerAliveAndSimulated(component))
			{
				return;
			}
			for (int i = 0; i < enemyPlayers.Count; i++)
			{
				try
				{
					if (PhotonNetwork.OfflineMode)
					{
						EvilHeistLogic(component, enemyPlayers[i]);
					}
					else if (((Component)component).gameObject.GetComponent<PhotonView>().IsMine)
					{
						NetworkingManager.RPC(typeof(EvilHeistEffect), "RPCA_EvilHeist", new object[2]
						{
							component.data.view.ControllerActorNr,
							enemyPlayers[i].data.view.ControllerActorNr
						});
					}
				}
				catch
				{
				}
			}
		}

		private void EvilHeistLogic(Player player, Player victim)
		{
			CardBar val = CardBarUtils.instance.PlayersCardBar(victim.playerID);
			string text = ExtensionMethods.GetFieldValue((object)val, "currentCard").ToString();
			if (text != null)
			{
				string text2 = text.Substring(0, text.IndexOf('('));
				CardInfo cardInfoWithName = CardManager.GetCardInfoWithName(text2);
				CardInfo cardWithObjectName = Cards.instance.GetCardWithObjectName("__REDO__Evil Heist");
				if (!((Object)(object)cardInfoWithName == (Object)(object)cardWithObjectName))
				{
					Cards.instance.RemoveCardFromPlayer(victim, victim.data.currentCards.IndexOf(cardInfoWithName));
					Cards.instance.RemoveCardFromPlayer(player, player.data.currentCards.IndexOf(cardWithObjectName));
					Cards.instance.AddCardToPlayer(player, cardInfoWithName, false, "", 0f, 0f);
				}
			}
		}

		[UnboundRPC]
		private static void RPCA_EvilHeist(int playerActorID, int victimActorID)
		{
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: Expected O, but got Unknown
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Expected O, but got Unknown
			Player val = (Player)typeof(PlayerManager).InvokeMember("GetPlayerWithActorID", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.InvokeMethod, null, PlayerManager.instance, new object[1] { playerActorID });
			Player val2 = (Player)typeof(PlayerManager).InvokeMember("GetPlayerWithActorID", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.InvokeMethod, null, PlayerManager.instance, new object[1] { victimActorID });
			CardBar val3 = CardBarUtils.instance.PlayersCardBar(val2.playerID);
			string text = ExtensionMethods.GetFieldValue((object)val3, "currentCard").ToString();
			if (text != null)
			{
				string text2 = text.Substring(0, text.IndexOf('('));
				CardInfo cardInfoWithName = CardManager.GetCardInfoWithName(text2);
				CardInfo cardWithObjectName = Cards.instance.GetCardWithObjectName("__REDO__Evil Heist");
				if (!((Object)(object)cardInfoWithName == (Object)(object)cardWithObjectName))
				{
					Cards.instance.RemoveCardFromPlayer(val2, val2.data.currentCards.IndexOf(cardInfoWithName));
					Cards.instance.RemoveCardFromPlayer(val, val.data.currentCards.IndexOf(cardWithObjectName));
					Cards.instance.AddCardToPlayer(val, cardInfoWithName, false, "", 0f, 0f);
				}
			}
		}
	}
	public class RobinHoodEffect : MonoBehaviour
	{
		public void Update()
		{
			Player component = ((Component)this).GetComponent<Player>();
			if (!Input.GetMouseButtonDown(0))
			{
				return;
			}
			try
			{
				if (PhotonNetwork.OfflineMode)
				{
					RobinHoodLogic(component);
				}
				else if (((Component)component).gameObject.GetComponent<PhotonView>().IsMine)
				{
					NetworkingManager.RPC(typeof(RobinHoodEffect), "RPCA_RobinHood", new object[1] { component.data.view.ControllerActorNr });
				}
			}
			catch
			{
			}
		}

		private void RobinHoodLogic(Player player)
		{
			CardBar val = CardBarUtils.instance.PlayersCardBar(player.playerID);
			string text = ExtensionMethods.GetFieldValue((object)val, "currentCard").ToString();
			if (text != null && ((Component)player).gameObject.GetComponent<PhotonView>().IsMine)
			{
				string text2 = text.Substring(0, text.IndexOf('('));
				CardInfo cardInfoWithName = CardManager.GetCardInfoWithName(text2);
				CardInfo cardWithObjectName = Cards.instance.GetCardWithObjectName("__REDO__Robin Hood");
				if (!((Object)(object)cardInfoWithName == (Object)(object)cardWithObjectName))
				{
					Cards.instance.RemoveCardsFromPlayer(player, new int[2]
					{
						player.data.currentCards.IndexOf(cardWithObjectName),
						player.data.currentCards.IndexOf(cardInfoWithName)
					});
					Cards.instance.AddCardToPlayer(PlayerStatus.GetRandomEnemyPlayer(player), cardInfoWithName, false, "", 0f, 0f);
				}
			}
		}

		[UnboundRPC]
		private static void RPCA_RobinHood(int actorID)
		{
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: Expected O, but got Unknown
			Player val = (Player)typeof(PlayerManager).InvokeMember("GetPlayerWithActorID", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.InvokeMethod, null, PlayerManager.instance, new object[1] { actorID });
			CardBar val2 = CardBarUtils.instance.PlayersCardBar(val.playerID);
			string text = ExtensionMethods.GetFieldValue((object)val2, "currentCard").ToString();
			if (text != null && ((Component)val).gameObject.GetComponent<PhotonView>().IsMine)
			{
				string text2 = text.Substring(0, text.IndexOf('('));
				CardInfo cardInfoWithName = CardManager.GetCardInfoWithName(text2);
				CardInfo cardWithObjectName = Cards.instance.GetCardWithObjectName("__REDO__Robin Hood");
				if (!((Object)(object)cardInfoWithName == (Object)(object)cardWithObjectName))
				{
					Cards.instance.RemoveCardsFromPlayer(val, new int[2]
					{
						val.data.currentCards.IndexOf(cardWithObjectName),
						val.data.currentCards.IndexOf(cardInfoWithName)
					});
					Cards.instance.AddCardToPlayer(PlayerStatus.GetRandomEnemyPlayer(val), cardInfoWithName, false, "", 0f, 0f);
				}
			}
		}
	}
}
namespace Redo.Cards
{
	internal class DivineGlock : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.allowMultiple = true;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			gun.bulletDamageMultiplier += 0.45454547f;
		}

		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 "Divine Glock";
		}

		protected override string GetDescription()
		{
			return "Gain 25 damage every point";
		}

		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()
		{
			return (CardInfoStat[])(object)new CardInfoStat[0];
		}

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

		public override string GetModName()
		{
			return "REDO";
		}
	}
}
namespace RedoNameSpace
{
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("com.devmung.rounds.Redo", "Redo", "1.0.1")]
	[BepInProcess("Rounds.exe")]
	public class Redo : BaseUnityPlugin
	{
		private const string ModId = "com.devmung.rounds.Redo";

		private const string ModName = "Redo";

		public const string Version = "1.0.1";

		public const string ModInitials = "REDO";

		public static Redo 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.devmung.rounds.Redo");
			val.PatchAll();
		}

		private void Start()
		{
			instance = this;
			CustomCard.BuildCard<FraternalTwins>();
			CustomCard.BuildCard<HeavyWeaponsGuy>();
			CustomCard.BuildCard<SomeoneElsesProblem>();
			CustomCard.BuildCard<MutuallyAssuredDestruction>();
			CustomCard.BuildCard<DestinyBond>();
			CustomCard.BuildCard<ALittleExtraDamage>();
			CustomCard.BuildCard<ModerateExtraDamage>();
			CustomCard.BuildCard<ALotOfDamage>();
			CustomCard.BuildCard<ALittleExtraHealth>();
			CustomCard.BuildCard<ModerateExtraHealth>();
			CustomCard.BuildCard<ALotOfHealth>();
			CustomCard.BuildCard<BoysGamble>();
			CustomCard.BuildCard<MansGamble>();
			CustomCard.BuildCard<KingsGamble>();
			CustomCard.BuildCard<GirlsGamble>();
			CustomCard.BuildCard<WomansGamble>();
			CustomCard.BuildCard<QueensGamble>();
			CustomCard.BuildCard<WellRounded>();
			CustomCard.BuildCard<SharingIsCaring>();
			CustomCard.BuildCard<MortalBounty>();
			CustomCard.BuildCard<VictorsVitality>();
			CustomCard.BuildCard<GrimReaper>();
			CustomCard.BuildCard<RedemptiveMasochist>();
			CustomCard.BuildCard<SpatialSwap>();
			CustomCard.BuildCard<RobinHood>();
			CustomCard.BuildCard<EvilHeist>();
			CustomCard.BuildCard<Bounty>();
		}
	}
}
namespace RedoNameSpace.Cards
{
	internal class ALittleExtraDamage : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			gun.bulletDamageMultiplier += 0.45454547f;
		}

		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 "A Little Extra Damage";
		}

		protected override string GetDescription()
		{
			return "Sprinkle some damage on your gun.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Gun Damage",
					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)7;
		}

		public override string GetModName()
		{
			return "REDO";
		}
	}
	internal class ALittleExtraHealth : 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)
		{
			CharacterData data2 = player.data;
			data2.maxHealth += 50f;
		}

		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 "A Little Extra Health";
		}

		protected override string GetDescription()
		{
			return "Sprinkle some health on your body.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Health Points",
					amount = "+50",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

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

		public override string GetModName()
		{
			return "REDO";
		}
	}
	internal class ALotOfDamage : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			gun.bulletDamageMultiplier += 2.7272727f;
		}

		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 "A Lot Of Damage";
		}

		protected override string GetDescription()
		{
			return "Weak? Just shoot stronger bullets.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Gun Damage",
					amount = "+150",
					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 "REDO";
		}
	}
	internal class ALotOfHealth : 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)
		{
			CharacterData data2 = player.data;
			data2.maxHealth += 250f;
		}

		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 "A Lot Of Health";
		}

		protected override string GetDescription()
		{
			return "Weak? Don't be.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Health Points",
					amount = "+250",
					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 "REDO";
		}
	}
	internal class BackToBasics : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			CardInfoExtension.GetAdditionalData(cardInfo).canBeReassigned = false;
		}

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

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

		protected override string GetDescription()
		{
			return "Removes all of your cards and gives you a fresh slate.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		public override string GetModName()
		{
			return "REDO";
		}
	}
	internal class BackupPlan : 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)
		{
			ExtensionMethods.GetOrAddComponent<BackupPlanEffect>(((Component)player).gameObject, false);
		}

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

		protected override string GetTitle()
		{
			return "Backup Plan";
		}

		protected override string GetDescription()
		{
			return "On death, explode.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			return (CardInfoStat[])(object)new CardInfoStat[0];
		}

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

		public override string GetModName()
		{
			return "REDO";
		}
	}
	internal class BalancedPower : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			gun.damage += 10f;
		}

		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 "Heavy Weapons Guy";
		}

		protected override string GetDescription()
		{
			return "Become Heavy Weapons Guy.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Expected O, but got Unknown
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Expected O, but got Unknown
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Expected O, but got Unknown
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: Unknown result type (might be due to invalid IL or missing references)
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[6]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Health",
					amount = "+300%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Attack Speed",
					amount = "+500%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Ammo",
					amount = "+100",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Damage",
					amount = "-90%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Movement Speed",
					amount = "-30%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Spread",
					amount = "+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)0;
		}

		public override string GetModName()
		{
			return "REDO";
		}
	}
	internal class Bounty : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			statModifiers.health = 5f;
			gun.bulletDamageMultiplier = 5f;
		}

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

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

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

		protected override string GetDescription()
		{
			return "Your crimes have earned you strength, but a bounty has been placed on your head. Whomever kills you will take this card with them.";
		}

		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
			return (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Damage",
					amount = "+500%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Health",
					amount = "+500%",
					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 "REDO";
		}
	}
	internal class BoysGamble : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			float num = Random.Range(0f, 1f);
			if (num < 0.5f)
			{
				gun.bulletDamageMultiplier = 0.5f;
			}
			else
			{
				gun.bulletDamageMultiplier = 2f;
			}
		}

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

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

		protected override string GetTitle()
		{
			return "Boy's Gamble";
		}

		protected override string GetDescription()
		{
			return "Gamble the damage of your gun, between halving it and doubling it.";
		}

		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()
		{
			return (CardInfoStat[])(object)new CardInfoStat[0];
		}

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

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

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

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

		protected override string GetTitle()
		{
			return "Catch Me If You Can";
		}

		protected override string GetDescription()
		{
			return "Become incredibly athletic at the cost of suffering from lethal haphephobia.";
		}

		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
			return (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Speed",
					amount = "+500%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Jumps",
					amount = "+15",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

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

		public override string GetModName()
		{
			return "REDO";
		}
	}
	internal class DestinyBond : 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)
		{
			ExtensionMethods.GetOrAddComponent<DestinyBondEffect>(((Component)player).gameObject, false);
		}

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

		protected override string GetTitle()
		{
			return "Destiny Bond";
		}

		protected override string GetDescription()
		{
			return "On death, invite your killer to come with you.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			return (CardInfoStat[])(object)new CardInfoStat[0];
		}

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

		public override string GetModName()
		{
			return "REDO";
		}
	}
	internal class DoubleDamage : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			gun.damage = 2f;
		}

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

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

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

		protected override string GetDescription()
		{
			return "Double Your damage.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Gun Damage",
					amount = "+100%",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

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

		public override string GetModName()
		{
			return "REDO";
		}
	}
	public class EvilHeist : 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)
		{
			ExtensionMethods.GetOrAddComponent<EvilHeistEffect>(((Component)player).gameObject, false);
		}

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

		protected override string GetTitle()
		{
			return "Evil Heist";
		}

		protected override string GetDescription()
		{
			return "Steal any card you want from any enemy. Click on their card from the card bar to yoink it.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			return (CardInfoStat[])(object)new CardInfoStat[0];
		}

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

		public override string GetModName()
		{
			return "REDO";
		}
	}
	internal class FraternalTwins : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			CardInfoExtension.GetAdditionalData(cardInfo).canBeReassigned = false;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			List<Player> list = new List<Player>(PlayerManager.instance.players);
			list.Remove(player);
			Player val = list[Random.Range(0, list.Count)];
			CardInfo[] array = val.data.currentCards.Where((CardInfo card) => CardInfoExtension.GetAdditionalData(card).canBeReassigned).ToArray();
			Cards.instance.RemoveAllCardsFromPlayer(player, true);
			Cards.instance.AddCardsToPlayer(player, array, false, (string[])null, (float[])null, (float[])null, true);
		}

		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 "Fraternal Twins";
		}

		protected override string GetDescription()
		{
			return "Replace all your cards with a copy of a random player's cards.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		public override string GetModName()
		{
			return "REDO";
		}
	}
	internal class GirlsGamble : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			float num = Random.Range(0f, 1f);
			if (num < 0.5f)
			{
				statModifiers.health = 0.5f;
			}
			else
			{
				statModifiers.health = 2f;
			}
		}

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

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

		protected override string GetTitle()
		{
			return "Girl's Gamble";
		}

		protected override string GetDescription()
		{
			return "Gamble your health, between halving and doubling.";
		}

		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()
		{
			return (CardInfoStat[])(object)new CardInfoStat[0];
		}

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

		public override string GetModName()
		{
			return "REDO";
		}
	}
	internal class GrimReaper : 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)
		{
			ExtensionMethods.GetOrAddComponent<GrimReaperEffect>(((Component)player).gameObject, false);
		}

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

		protected override string GetTitle()
		{
			return "Grim Reaper";
		}

		protected override string GetDescription()
		{
			return "Harvest the lives of those you slay in a round.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Per Kill",
					amount = "+1 Temporary Revive",
					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 "REDO";
		}
	}
	internal class HeavyWeaponsGuy : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			statModifiers.health = 3f;
			statModifiers.movementSpeed = 0.7f;
			gun.attackSpeed = 0.2f;
			gun.ammo = 100;
			gun.bulletDamageMultiplier = 0.1f;
			gun.spread = 0.05f;
		}

		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 "Heavy Weapons Guy";
		}

		protected override string GetDescription()
		{
			return "Become Heavy Weapons Guy.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Expected O, but got Unknown
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Expected O, but got Unknown
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Expected O, but got Unknown
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: Unknown result type (might be due to invalid IL or missing references)
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[6]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Health",
					amount = "+300%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Attack Speed",
					amount = "+500%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Ammo",
					amount = "+100",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Damage",
					amount = "-90%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Movement Speed",
					amount = "-30%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Spread",
					amount = "+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)0;
		}

		public override string GetModName()
		{
			return "REDO";
		}
	}
	internal class KingsGamble : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			float num = Random.Range(0f, 1f);
			if (num < 0.5f)
			{
				gun.bulletDamageMultiplier = 0.01f;
			}
			else
			{
				gun.bulletDamageMultiplier = 100f;
			}
		}

		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 "King's Gamble";
		}

		protected override string GetDescription()
		{
			return "Gamble the damage of your gun, anywhere between absolute power and water gun.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			return (CardInfoStat[])(object)new CardInfoStat[0];
		}

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

		public override string GetModName()
		{
			return "REDO";
		}
	}
	internal class MansGamble : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			float num = Random.Range(0f, 1f);
			if (num < 0.5f)
			{
				gun.bulletDamageMultiplier = 0.1f;
			}
			else
			{
				gun.bulletDamageMultiplier = 10f;
			}
		}

		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 "Man's Gamble";
		}

		protected override string GetDescription()
		{
			return "Gamble the damage of your gun, anywhere between dominance and pity.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			return (CardInfoStat[])(object)new CardInfoStat[0];
		}

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

		public override string GetModName()
		{
			return "REDO";
		}
	}
	internal class ModerateExtraDamage : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			gun.bulletDamageMultiplier += 0.90909094f;
		}

		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 "Moderate Extra Damage";
		}

		protected override string GetDescription()
		{
			return "Up the caliber of your bullets.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Gun Damage",
					amount = "+50",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

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

		public override string GetModName()
		{
			return "REDO";
		}
	}
	internal class ModerateExtraHealth : 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)
		{
			CharacterData data2 = player.data;
			data2.maxHealth += 150f;
		}

		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 "Moderate Extra Health";
		}

		protected override string GetDescription()
		{
			return "Time to hit the gym.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Health Points",
					amount = "+150",
					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 "REDO";
		}
	}
	internal class MortalBounty : 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)
		{
			ExtensionMethods.GetOrAddComponent<MortalBountyEffect>(((Component)player).gameObject, false);
		}

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

		protected override string GetTitle()
		{
			return "Mortal Bounty";
		}

		protected override string GetDescription()
		{
			return "Gain 25 damage for each foe you kill";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Per Kill",
					amount = "+25 Damage",
					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 "REDO";
		}
	}
	internal class MutuallyAssuredDestruction : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			statModifiers.movementSpeed = 2f;
			statModifiers.health = 0.4f;
			cardInfo.allowMultiple = false;
		}

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

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

		protected override string GetTitle()
		{
			return "Mutually Assured Destruction";
		}

		protected override string GetDescription()
		{
			return "Touching another player will permanently kill you both.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Speed",
					amount = "+100%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Health",
					amount = "-60%",
					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 "REDO";
		}
	}
	internal class QueensGamble : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			float num = Random.Range(0f, 1f);
			if (num < 0.5f)
			{
				statModifiers.health = 0.02f;
			}
			else
			{
				statModifiers.health = 50f;
			}
		}

		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 "Queen's Gamble";
		}

		protected override string GetDescription()
		{
			return "Gamble your health, anywhere between a BMI of 100 and stick man.";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			return (CardInfoStat[])(object)new CardInfoStat[0];
		}

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

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

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

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

		protected override string GetTitle()
		{
			return "Redemptive Masochist";
		}

		protected override string GetDescription()
		{
			return "My pain will only make me stronger.";
		}

		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 = "Self-damage",
					amount = "Gain Health",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "Overheal",
					amount = "+100%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Bounces",
					amount = "-100",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

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

		public override string GetModName()
		{
			return "REDO";
		}
	}
	public class RobinHood : 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)
		{
			ExtensionMethods.GetOrAddComponent<RobinHoodEffect>(((Component)player).gameObject, false);
		}

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

		protected override string GetTitle()
		{
			return "Robin Hood";
		}

		protected override string GetDescription()
		{
			return "Gift one of your cards to a random player! Click on your card on the card bar to gift it.";
		}

		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()
		{
			return (CardInfoStat[])(object)new CardInfoStat[0];
		}

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

		public override string Ge