Decompiled source of Himothy Cards v1.8.0

PedoCards-main.dll

Decompiled a day ago
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
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.MonoBehaviours;
using PSA.Extensions;
using PedoCards_main.Cards;
using PedoCards_main.MonoBehaviors;
using PedoCards_main.MonoBehaviours;
using Sonigon;
using Sonigon.Internal;
using SoundImplementation;
using UnboundLib;
using UnboundLib.Cards;
using UnboundLib.Utils;
using UnityEngine;
using UnityEngine.Events;

[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("PedoCards-main")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+e1ba9a1df0324f4f7a70205a6531ad0e38e66a84")]
[assembly: AssemblyProduct("PedoCards-main")]
[assembly: AssemblyTitle("PedoCards-main")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

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

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

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
}
public class chasehornytest : MonoBehaviour
{
	public UnityEvent turnOnEvent;

	public UnityEvent turnOffEvent;

	public UnityEvent switchTargetEvent;

	private Player player;

	private LineEffect lineEffect;

	private bool isOn;

	private Player currentTarget;

	private void Start()
	{
		lineEffect = ((Component)this).GetComponentInChildren<LineEffect>(true);
		player = ((Component)this).GetComponentInParent<Player>();
	}

	private void Update()
	{
		//IL_000c: Unknown result type (might be due to invalid IL or missing references)
		//IL_003b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0046: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0050: Unknown result type (might be due to invalid IL or missing references)
		//IL_0065: Unknown result type (might be due to invalid IL or missing references)
		//IL_006a: Unknown result type (might be due to invalid IL or missing references)
		//IL_008b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0090: Unknown result type (might be due to invalid IL or missing references)
		Player val = PlayerManager.instance.GetClosestPlayerInTeam(((Component)this).transform.position, PlayerManager.instance.GetOtherTeam(player.teamID), true);
		if (Object.op_Implicit((Object)(object)val) && (Vector2.Angle(Vector2.op_Implicit(((Component)val).transform.position - ((Component)this).transform.position), Vector2.op_Implicit(player.data.input.direction)) > 70f || player.data.input.direction == Vector3.zero))
		{
			val = null;
		}
		if (Object.op_Implicit((Object)(object)val))
		{
			if ((Object)(object)currentTarget != (Object)(object)player)
			{
				currentTarget = player;
				switchTargetEvent.Invoke();
				lineEffect.Play(((Component)this).transform, ((Component)val).transform, 0f);
			}
			if (!isOn)
			{
				isOn = true;
				turnOnEvent.Invoke();
			}
		}
		else
		{
			if (isOn)
			{
				isOn = false;
				turnOffEvent.Invoke();
			}
			if (lineEffect.isPlaying)
			{
				lineEffect.Stop();
				((Component)lineEffect).gameObject.SetActive(false);
			}
			currentTarget = null;
		}
	}
}
namespace PedoCards_main
{
	internal static class Terms
	{
		public static string charHealth = "Max Health";

		public static string charSpeed = "Movement Speed";

		public static string charJump = "Jump Count";

		public static string charSize = "Character Size";

		public static string charRegen = "Health Regeneration";

		public static string charProtection = "Damage Reduction";

		public static string charThorns = "Thorns";

		public static string charAntiThorns = "Thorns Pierce";

		public static string charPierce = "Damage Reduction Pierce";

		public static string gunReload = "Reload Time";

		public static string gunDamage = "Gun Damage";

		public static string gunProjectile = "Bullet Count";

		public static string gunSpread = "Bullet Spread";

		public static string gunBurst = "Burst Count";

		public static string gunAmmo = "Max Ammo";

		public static string gunAttackSpeed = "Attack Delay";

		public static string gunDrag = "Bullet Drag";

		public static string gunBounces = "Bullet Bounces";

		public static string gunKnockback = "Bullet Knockback";

		public static string gunDamageGrowth = "Bullet Damage Growth";

		public static string gunSpeedGrowth = "Bullet Speed Growth";

		public static string blockCount = "Blocks";

		public static string blockCooldown = "Block Cooldown";

		public static string blockForceV = "Vertical Block Force";

		public static string blockForceH = "Horizontal Block Force";

		public static string extraLifesteal = "Lifesteal";

		public static string extraDecay = "Decay";

		public static CardInfoStat LesserCurse = new CardInfoStat
		{
			positive = false,
			stat = "Curse Card",
			amount = "Lesser",
			simepleAmount = (SimpleAmount)0
		};

		public static CardInfoStat GreaterCurse = new CardInfoStat
		{
			positive = false,
			stat = "Curse Card",
			amount = "Greater",
			simepleAmount = (SimpleAmount)0
		};

		public static CardInfoStat LesserCurseRemoval = new CardInfoStat
		{
			positive = false,
			stat = "Curse Removal",
			amount = "Lesser",
			simepleAmount = (SimpleAmount)0
		};

		public static CardInfoStat GreaterCurseRemoval = new CardInfoStat
		{
			positive = false,
			stat = "Curse Removal",
			amount = "Greater",
			simepleAmount = (SimpleAmount)0
		};
	}
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("com.harmlessheep.rounds.PedoCards", "Pedo Cards", "1.1.1")]
	[BepInProcess("Rounds.exe")]
	public class PedoCards : BaseUnityPlugin
	{
		private const string ModId = "com.harmlessheep.rounds.PedoCards";

		private const string ModName = "Pedo Cards";

		public const string Version = "1.1.1";

		public const string ModInitials = "PeCa";

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

		private void Start()
		{
			instance = this;
			CustomCard.BuildCard<EvasiveManeuvers>();
			CustomCard.BuildCard<Firework>();
			CustomCard.BuildCard<Bullseye>();
			CustomCard.BuildCard<Frostbite>();
			CustomCard.BuildCard<Jetpack>();
			CustomCard.BuildCard<DropShot>();
			CustomCard.BuildCard<SpringLoaded>();
			CustomCard.BuildCard<Hyperball>();
			CustomCard.BuildCard<Cloud>();
			CustomCard.BuildCard<Unicellular>();
			CustomCard.BuildCard<EyeForAnEye>();
			CustomCard.BuildCard<Vampire>();
			CustomCard.BuildCard<SawedOffBarrelPeCa>();
			CustomCard.BuildCard<Springboots>();
			CustomCard.BuildCard<Obese>();
			CustomCard.BuildCard<Flutter>();
			CustomCard.BuildCard<Acid>();
			CustomCard.BuildCard<Bravery>();
			CustomCard.BuildCard<Moonboot>();
			CustomCard.BuildCard<Float>();
			CustomCard.BuildCard<Thorny>();
			CustomCard.BuildCard<DoubleEdgedBullets>();
			CustomCard.BuildCard<RocketJump>();
			CustomCard.BuildCard<Absorb>();
			CustomCard.BuildCard<SlowMo>();
			CustomCard.BuildCard<RapidFire>();
			CustomCard.BuildCard<Bite>();
			CustomCard.BuildCard<WildAim>();
			CustomCard.BuildCard<ExorcismV2>();
		}
	}
}
namespace PedoCards_main.MonoTemplates
{
	internal class WhenInLineOfSightTemplate
	{
	}
}
namespace PedoCards_main.MonoBehaviours
{
	public class AcidMono : RayHitPoison
	{
		[Header("Sounds")]
		public SoundEvent? soundEventDamageOverTime;

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

		public float interval = 0.4f;

		public Color color = Color.green;

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

		public override HasToReturn DoHitEffect(HitInfo hit)
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0078: 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_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)hit.transform))
			{
				return (HasToReturn)1;
			}
			RayHitPoison[] componentsInChildren = ((Component)((Component)this).transform.root).GetComponentsInChildren<RayHitPoison>();
			ProjectileHit componentInParent = ((Component)this).GetComponentInParent<ProjectileHit>();
			DamageOverTime component = ((Component)hit.transform).GetComponent<DamageOverTime>();
			if (Object.op_Implicit((Object)(object)component))
			{
				component.TakeDamageOverTime(Vector2.op_Implicit(componentInParent.damage * ((Component)this).transform.forward / (float)componentsInChildren.Length), Vector2.op_Implicit(((Component)this).transform.position), time, interval, color, soundEventDamageOverTime, ((Component)this).GetComponentInParent<ProjectileHit>().ownWeapon, ((Component)this).GetComponentInParent<ProjectileHit>().ownPlayer, true);
			}
			return (HasToReturn)1;
		}

		public void Destroy()
		{
			Object.Destroy((Object)(object)this);
		}
	}
	internal class AdrenalineMono : MonoBehaviour
	{
		public static readonly float AppliedStatBonus1 = 100f;

		private float StatBonusPercentage;

		private float TimeInLineOfSight;

		private Player player;

		private Gun gun;

		private Gun gunAmmo;

		private CharacterStatModifiers statModifiers;

		private bool isActive;

		private LineEffect lineEffect;

		private LineRenderer lineRenderer;

		private LineRenderer lr;

		private Vector3 target;

		private Vector3 myPosition;

		private Vector3 myOffset;

		private bool drawLine;

		private float baseplayerspeed;

		private static FieldInfo playerVelocityField = typeof(PlayerVelocity).GetField("velocity", BindingFlags.Instance | BindingFlags.NonPublic);

		private void Start()
		{
			baseplayerspeed = player.data.stats.movementSpeed;
			player = ((Component)this).GetComponentInParent<Player>();
		}

		private void FixedUpdate()
		{
			player.data.stats.movementSpeed = baseplayerspeed * 1f + (1f - player.data.health / player.data.maxHealth) * 0.5f;
		}
	}
	public class EyeForAnEyeMono : MonoBehaviour
	{
		private Gun gun;

		public Player player;

		private void Start()
		{
			player = ((Component)this).GetComponent<Player>();
			gun = player.data.weaponHandler.gun;
			Gun obj = gun;
			obj.ShootPojectileAction = (Action<GameObject>)Delegate.Combine(obj.ShootPojectileAction, new Action<GameObject>(ShootAction));
		}

		private void ShootAction(GameObject projectile)
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: 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_0035: 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_0051: Unknown result type (might be due to invalid IL or missing references)
			((Damagable)player.data.healthHandler).TakeDamage(Vector2.one * gun.damage * 55f * 0.1f / (float)(1 + (gun.numberOfProjectiles - 1) / 6), Vector2.zero, (GameObject)null, (Player)null, false, false);
		}

		private void OnDestroy()
		{
			Gun obj = gun;
			obj.ShootPojectileAction = (Action<GameObject>)Delegate.Remove(obj.ShootPojectileAction, new Action<GameObject>(ShootAction));
		}
	}
	public class DoubleEdgedBulletsMono : MonoBehaviour
	{
		private Gun gun;

		public Player player;

		private void Start()
		{
			player = ((Component)this).GetComponent<Player>();
			gun = player.data.weaponHandler.gun;
			Gun obj = gun;
			obj.ShootPojectileAction = (Action<GameObject>)Delegate.Combine(obj.ShootPojectileAction, new Action<GameObject>(ShootAction));
		}

		private void ShootAction(GameObject projectile)
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: 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_0044: 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_0060: Unknown result type (might be due to invalid IL or missing references)
			((Damagable)player.data.healthHandler).TakeDamage(Vector2.one * player.data.weaponHandler.gun.damage * 55f * 0.2f / (float)(1 + (gun.numberOfProjectiles - 1) / 6), Vector2.zero, (GameObject)null, (Player)null, false, false);
		}

		private void OnDestroy()
		{
			Gun obj = gun;
			obj.ShootPojectileAction = (Action<GameObject>)Delegate.Remove(obj.ShootPojectileAction, new Action<GameObject>(ShootAction));
		}
	}
	internal class ExorcismMono : MonoBehaviour
	{
		public static readonly float AppliedStatBonus1 = 100f;

		public static readonly float AppliedStatBonus2 = 2f;

		public static readonly float AppliedStatBonus3 = 80f;

		public static readonly float AppliedStatBonus4 = 500f;

		private float StatBonusPercentage;

		private float TimeInLineOfSight;

		private Player player;

		private Gun gun;

		private Gun gunAmmo;

		private CharacterStatModifiers statModifiers;

		private bool isActive;

		private LineEffect lineEffect;

		private LineRenderer lineRenderer;

		private LineRenderer lr;

		private Vector3 target;

		private Vector3 myPosition;

		private Vector3 myOffset;

		private bool drawLine;

		private float prevBonus1;

		private float newBonus1;

		private static FieldInfo playerVelocityField = typeof(PlayerVelocity).GetField("velocity", BindingFlags.Instance | BindingFlags.NonPublic);

		private void Start()
		{
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Expected O, but got Unknown
			prevBonus1 = 1f;
			newBonus1 = 1f;
			player = ((Component)this).GetComponentInParent<Player>();
			myPosition = ((Component)player).transform.position;
			lineRenderer = ((Component)this).gameObject.AddComponent<LineRenderer>();
			lineRenderer.startWidth = 0.15f;
			lineRenderer.endWidth = lineRenderer.startWidth;
			lineRenderer.positionCount = 2;
			((Renderer)lineRenderer).material = new Material(Shader.Find("Sprites/Default"));
		}

		private void OnDisable()
		{
			turnOff();
		}

		private void FixedUpdate()
		{
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_00cb: 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_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0264: Unknown result type (might be due to invalid IL or missing references)
			//IL_0298: Unknown result type (might be due to invalid IL or missing references)
			bool flag = false;
			drawLine = false;
			foreach (Player player in PlayerManager.instance.players)
			{
				if (player.teamID != this.player.teamID && PlayerManager.instance.CanSeePlayer(Vector2.op_Implicit(((Component)this.player).transform.position), player).canSee)
				{
					flag = true;
					drawLine = true;
					break;
				}
			}
			foreach (Player player2 in PlayerManager.instance.players)
			{
				target = ((Component)this.player).transform.position;
				myOffset = ((Component)player2).transform.position;
				if (drawLine)
				{
					((Renderer)lineRenderer).enabled = true;
					lineRenderer.SetPosition(0, target);
					lineRenderer.SetPosition(1, myOffset);
				}
				else
				{
					((Renderer)lineRenderer).enabled = false;
				}
			}
			newBonus1 = 1f + AppliedStatBonus1 * 0.01f * StatBonusPercentage;
			CharacterStatModifiers stats = this.player.data.stats;
			stats.movementSpeed /= prevBonus1;
			CharacterStatModifiers stats2 = this.player.data.stats;
			stats2.movementSpeed *= newBonus1;
			prevBonus1 = newBonus1;
			if (drawLine)
			{
				TimeInLineOfSight += 2f;
			}
			else
			{
				TimeInLineOfSight -= 6f;
			}
			if (TimeInLineOfSight > 1000f)
			{
				TimeInLineOfSight = 1000f;
			}
			if (TimeInLineOfSight < 0f)
			{
				TimeInLineOfSight = 0f;
			}
			StatBonusPercentage = TimeInLineOfSight / 1000f;
			lineRenderer.startColor = new Color(255f, 0f, (float)Math.Round(255f * (1f - StatBonusPercentage)));
			lineRenderer.endColor = new Color(255f, 0f, (float)Math.Round(255f * (1f - StatBonusPercentage)));
			if (drawLine)
			{
				turnOn();
			}
			else
			{
				turnOff();
			}
		}

		private void turnOn()
		{
			if (!isActive)
			{
				isActive = true;
			}
		}

		private void turnOff()
		{
			if (isActive)
			{
				isActive = false;
				CharacterStatModifiers stats = player.data.stats;
				stats.movementSpeed /= 1f + AppliedStatBonus1 * 0.01f * StatBonusPercentage;
			}
		}
	}
	public class FrostbiteMono : RayHitPoison
	{
		[Header("Sounds")]
		public SoundEvent soundEventDamageOverTime;

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

		public float interval = 0.5f;

		public Color color = Color.cyan;

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

		public override HasToReturn DoHitEffect(HitInfo hit)
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0078: 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_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)hit.transform))
			{
				return (HasToReturn)1;
			}
			RayHitPoison[] componentsInChildren = ((Component)((Component)this).transform.root).GetComponentsInChildren<RayHitPoison>();
			ProjectileHit componentInParent = ((Component)this).GetComponentInParent<ProjectileHit>();
			DamageOverTime component = ((Component)hit.transform).GetComponent<DamageOverTime>();
			if (Object.op_Implicit((Object)(object)component))
			{
				component.TakeDamageOverTime(Vector2.op_Implicit(componentInParent.damage * ((Component)this).transform.forward / (float)componentsInChildren.Length), Vector2.op_Implicit(((Component)this).transform.position), time, interval, color, soundEventDamageOverTime, ((Component)this).GetComponentInParent<ProjectileHit>().ownWeapon, ((Component)this).GetComponentInParent<ProjectileHit>().ownPlayer, true);
			}
			return (HasToReturn)1;
		}

		public void Destroy()
		{
			Object.Destroy((Object)(object)this);
		}
	}
	internal class HornyMonoChase : MonoBehaviour
	{
		public static readonly float speedPercentBonus = 100f;

		private Player player;

		private bool isActive;

		private LineEffect lineEffect;

		private LineRenderer lineRenderer;

		private Vector3 target;

		private Vector3 myPosition;

		private Vector3 myOffset;

		private bool drawLine;

		private static FieldInfo playerVelocityField = typeof(PlayerVelocity).GetField("velocity", BindingFlags.Instance | BindingFlags.NonPublic);

		private void Start()
		{
			//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_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Expected O, but got Unknown
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			player = ((Component)this).GetComponentInParent<Player>();
			myPosition = ((Component)player).transform.position;
			lineRenderer = ((Component)this).gameObject.AddComponent<LineRenderer>();
			lineRenderer.startWidth = 0.15f;
			lineRenderer.endWidth = lineRenderer.startWidth;
			lineRenderer.positionCount = 2;
			((Renderer)lineRenderer).material = new Material(Shader.Find("Sprites/Default"));
			lineRenderer.startColor = new Color(255f, 0f, 255f);
			lineRenderer.endColor = new Color(255f, 0f, 255f);
		}

		private void OnDisable()
		{
			turnOff();
		}

		private void FixedUpdate()
		{
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0134: Unknown result type (might be due to invalid IL or missing references)
			//IL_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Unknown result type (might be due to invalid IL or missing references)
			//IL_014b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0172: Unknown result type (might be due to invalid IL or missing references)
			//IL_0185: 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_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			bool flag = false;
			drawLine = false;
			if (player.data.input.direction != Vector3.zero)
			{
				foreach (Player player in PlayerManager.instance.players)
				{
					if (player.teamID != this.player.teamID && Vector2.Angle(Vector2.op_Implicit(((Component)player).transform.position - ((Component)this.player).transform.position), Vector2.op_Implicit(this.player.data.input.direction)) <= 70f && PlayerManager.instance.CanSeePlayer(Vector2.op_Implicit(((Component)this.player).transform.position), player).canSee)
					{
						flag = true;
						drawLine = true;
						break;
					}
				}
			}
			foreach (Player player2 in PlayerManager.instance.players)
			{
				target = ((Component)this.player).transform.position;
				myOffset = ((Component)player2).transform.position;
				if (drawLine)
				{
					((Renderer)lineRenderer).enabled = true;
					lineRenderer.SetPosition(0, target);
					lineRenderer.SetPosition(1, myOffset);
				}
				else
				{
					((Renderer)lineRenderer).enabled = false;
				}
			}
			if (flag)
			{
				turnOn();
			}
			else
			{
				turnOff();
			}
		}

		private void turnOn()
		{
			if (!isActive)
			{
				isActive = true;
				CharacterStatModifiers stats = player.data.stats;
				stats.movementSpeed *= 1f + speedPercentBonus * 0.01f;
			}
		}

		private void turnOff()
		{
			if (isActive)
			{
				isActive = false;
				CharacterStatModifiers stats = player.data.stats;
				stats.movementSpeed /= 1f + speedPercentBonus * 0.01f;
			}
		}
	}
	internal class HornyMonoFlee : MonoBehaviour
	{
		public static readonly float speedPercentBonus = 100f;

		private Player player;

		private bool isActive;

		private LineEffect lineEffect;

		private LineRenderer lineRenderer;

		private Vector3 target;

		private Vector3 myPosition;

		private Vector3 myOffset;

		private bool drawLine;

		private static FieldInfo playerVelocityField = typeof(PlayerVelocity).GetField("velocity", BindingFlags.Instance | BindingFlags.NonPublic);

		private void Start()
		{
			//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_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Expected O, but got Unknown
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			player = ((Component)this).GetComponentInParent<Player>();
			myPosition = ((Component)player).transform.position;
			lineRenderer = ((Component)this).gameObject.AddComponent<LineRenderer>();
			lineRenderer.startWidth = 0.15f;
			lineRenderer.endWidth = lineRenderer.startWidth;
			lineRenderer.positionCount = 2;
			((Renderer)lineRenderer).material = new Material(Shader.Find("Sprites/Default"));
			lineRenderer.startColor = new Color(255f, 16f, 240f);
			lineRenderer.endColor = new Color(255f, 16f, 240f);
		}

		private void OnDisable()
		{
			turnOff();
		}

		private void FixedUpdate()
		{
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0134: Unknown result type (might be due to invalid IL or missing references)
			//IL_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Unknown result type (might be due to invalid IL or missing references)
			//IL_014b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0172: Unknown result type (might be due to invalid IL or missing references)
			//IL_0185: 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_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			bool flag = false;
			drawLine = false;
			if (player.data.input.direction != Vector3.zero)
			{
				foreach (Player player in PlayerManager.instance.players)
				{
					if (player.teamID != this.player.teamID && Vector2.Angle(Vector2.op_Implicit(((Component)player).transform.position - ((Component)this.player).transform.position), Vector2.op_Implicit(this.player.data.input.direction)) <= 70f && PlayerManager.instance.CanSeePlayer(Vector2.op_Implicit(((Component)this.player).transform.position), player).canSee)
					{
						flag = true;
						drawLine = true;
						break;
					}
				}
			}
			foreach (Player player2 in PlayerManager.instance.players)
			{
				target = ((Component)this.player).transform.position;
				myOffset = ((Component)player2).transform.position;
				if (drawLine)
				{
					((Renderer)lineRenderer).enabled = true;
					lineRenderer.SetPosition(0, target);
					lineRenderer.SetPosition(1, myOffset);
				}
				else
				{
					((Renderer)lineRenderer).enabled = false;
				}
			}
			if (flag)
			{
				turnOn();
			}
			else
			{
				turnOff();
			}
		}

		private void turnOn()
		{
			if (!isActive)
			{
				isActive = true;
				CharacterStatModifiers stats = player.data.stats;
				stats.movementSpeed *= 1f + speedPercentBonus * 0.01f;
			}
		}

		private void turnOff()
		{
			if (isActive)
			{
				isActive = false;
				CharacterStatModifiers stats = player.data.stats;
				stats.movementSpeed /= 1f + speedPercentBonus * 0.01f;
			}
		}
	}
	public class NanobotsMono : RayHitPoison
	{
		[Header("Sounds")]
		public SoundEvent soundEventDamageOverTime;

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

		public float interval = 0.2f;

		public Color color = Color.gray;

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

		public override HasToReturn DoHitEffect(HitInfo hit)
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0078: 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_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)hit.transform))
			{
				return (HasToReturn)1;
			}
			RayHitPoison[] componentsInChildren = ((Component)((Component)this).transform.root).GetComponentsInChildren<RayHitPoison>();
			ProjectileHit componentInParent = ((Component)this).GetComponentInParent<ProjectileHit>();
			DamageOverTime component = ((Component)hit.transform).GetComponent<DamageOverTime>();
			if (Object.op_Implicit((Object)(object)component))
			{
				component.TakeDamageOverTime(Vector2.op_Implicit(componentInParent.damage * ((Component)this).transform.forward / (float)componentsInChildren.Length), Vector2.op_Implicit(((Component)this).transform.position), time, interval, color, soundEventDamageOverTime, ((Component)this).GetComponentInParent<ProjectileHit>().ownWeapon, ((Component)this).GetComponentInParent<ProjectileHit>().ownPlayer, true);
			}
			return (HasToReturn)1;
		}

		public void Destroy()
		{
			Object.Destroy((Object)(object)this);
		}
	}
	public class PeaceTreatyMono : MonoBehaviour
	{
		private Gun gun;

		public Player player;

		private void Start()
		{
			player = ((Component)this).GetComponent<Player>();
			gun = player.data.weaponHandler.gun;
			Gun obj = gun;
			obj.ShootPojectileAction = (Action<GameObject>)Delegate.Combine(obj.ShootPojectileAction, new Action<GameObject>(ShootAction));
		}

		private void ShootAction(GameObject projectile)
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: 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_0030: Unknown result type (might be due to invalid IL or missing references)
			((Damagable)player.data.healthHandler).TakeDamage(Vector2.right * 18.75f * gun.damage, Vector2.zero, (GameObject)null, (Player)null, false, false);
		}

		private void OnDestroy()
		{
			Gun obj = gun;
			obj.ShootPojectileAction = (Action<GameObject>)Delegate.Remove(obj.ShootPojectileAction, new Action<GameObject>(ShootAction));
		}
	}
	public class ForcedReloadMono : MonoBehaviour
	{
		private Gun gun;

		public Player player;

		private void Start()
		{
			player = ((Component)this).GetComponent<Player>();
			gun = player.data.weaponHandler.gun;
			Gun obj = gun;
			obj.ShootPojectileAction = (Action<GameObject>)Delegate.Combine(obj.ShootPojectileAction, new Action<GameObject>(ShootAction));
			bool flag = false;
		}

		public void Update()
		{
			Gun obj = gun;
			obj.currentCharge += 20f;
		}

		private void ShootAction(GameObject projectile)
		{
			bool flag = false;
		}

		private void BlockAction(Player player)
		{
			bool flag = true;
		}

		private void OnDestroy()
		{
			Gun obj = gun;
			obj.ShootPojectileAction = (Action<GameObject>)Delegate.Remove(obj.ShootPojectileAction, new Action<GameObject>(ShootAction));
		}
	}
	public class VampireMono : MonoBehaviour
	{
		internal Player player;

		internal Gun gun;

		internal GunAmmo gunAmmo;

		internal Gravity gravity;

		internal HealthHandler healthHandler;

		internal CharacterData data;

		internal Block block;

		private readonly float updateDelay = 0.1f;

		private float startTime;

		public int numcheck;

		public bool active;

		private void Start()
		{
			data = ((Component)this).GetComponentInParent<CharacterData>();
			HealthHandler val = data.healthHandler;
			val.reviveAction = (Action)Delegate.Combine(val.reviveAction, new Action(ResetTimer));
		}

		private void OnDestroy()
		{
			HealthHandler val = data.healthHandler;
			val.reviveAction = (Action)Delegate.Combine(val.reviveAction, new Action(ResetTimer));
		}

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

		public void Awake()
		{
			player = ((Component)this).gameObject.GetComponent<Player>();
			gun = ((Component)((Component)player).GetComponent<Holding>().holdable).GetComponent<Gun>();
			data = ((Component)player).GetComponent<CharacterData>();
			healthHandler = ((Component)player).GetComponent<HealthHandler>();
			gravity = ((Component)player).GetComponent<Gravity>();
			block = ((Component)player).GetComponent<Block>();
			gunAmmo = ((Component)gun).GetComponentInChildren<GunAmmo>();
			numcheck = 0;
		}

		private void Update()
		{
			if (!(Time.time >= startTime + updateDelay))
			{
				return;
			}
			ResetTimer();
			for (int i = 0; i <= player.data.currentCards.Count - 1; i++)
			{
				if (player.data.currentCards[i].cardName == "Vampire")
				{
					numcheck++;
				}
			}
			if (numcheck > 0)
			{
				ResetTimer();
				if (player.data.health < player.data.maxHealth && !active)
				{
					active = true;
					((Component)((Component)player).transform).gameObject.AddComponent<VampireRegenMono>();
				}
			}
		}

		private void ResetTimer()
		{
			startTime = Time.time;
			numcheck = 0;
		}
	}
	public class VampireMonoV2 : MonoBehaviour
	{
		public Player player;

		private readonly float updateDelay = 0.1f;

		private readonly float effectCooldown = 0.5f;

		private float startTime;

		private float timeOfLastEffect;

		public int numcheck;

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

		private void Start()
		{
			ResetEffectTimer();
			ResetTimer();
		}

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

		private void Update()
		{
			//IL_00d3: 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_00f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
			if (!(Time.time >= startTime + updateDelay))
			{
				return;
			}
			ResetTimer();
			if (!(Time.time >= timeOfLastEffect + effectCooldown))
			{
				return;
			}
			for (int i = 0; i <= player.data.currentCards.Count - 1; i++)
			{
				if (player.data.currentCards[i].cardName == "Vampire")
				{
					numcheck++;
				}
			}
			if (numcheck > 0)
			{
				ResetEffectTimer();
				((Damagable)player.data.healthHandler).TakeDamage(Vector2.right * 0.018f * player.data.maxHealth, Vector2.zero, (GameObject)null, (Player)null, true, true);
			}
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}

		private void ResetEffectTimer()
		{
			timeOfLastEffect = Time.time;
			numcheck = 0;
		}
	}
	public class VampireRegenMono : ReversibleEffect
	{
		private readonly Color color = Color.magenta;

		private ReversibleColorEffect colorEffect;

		private VampireMono effect;

		private readonly float updateDelay = 0.1f;

		private float startTime;

		public override void OnOnEnable()
		{
		}

		public override void OnStart()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: 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)
			((Damagable)base.player.data.healthHandler).TakeDamage(Vector2.right * 10f, Vector2.zero, (GameObject)null, (Player)null, true, false);
			effect = ((Component)base.player).GetComponent<VampireMono>();
			ResetTimer();
		}

		public override void OnUpdate()
		{
			if (Time.time >= startTime + updateDelay)
			{
				ResetTimer();
				if (base.player.data.health >= base.player.data.maxHealth)
				{
					((ReversibleEffect)this).Destroy();
				}
				if (((Component)this).GetComponent<Player>().data.dead || ((Component)this).GetComponent<Player>().data.health <= 0f || !((Component)((Component)this).GetComponent<Player>()).gameObject.activeInHierarchy)
				{
					ResetTimer();
					((ReversibleEffect)this).Destroy();
				}
			}
		}

		public override void OnOnDisable()
		{
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}
	}
	public class DamageOverTimeTemplate : RayHitPoison
	{
		[Header("Sounds")]
		public SoundEvent soundEventDamageOverTime;

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

		public float interval = 0.5f;

		public Color color = Color.green;

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

		public override HasToReturn DoHitEffect(HitInfo hit)
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0078: 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_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)hit.transform))
			{
				return (HasToReturn)1;
			}
			RayHitPoison[] componentsInChildren = ((Component)((Component)this).transform.root).GetComponentsInChildren<RayHitPoison>();
			ProjectileHit componentInParent = ((Component)this).GetComponentInParent<ProjectileHit>();
			DamageOverTime component = ((Component)hit.transform).GetComponent<DamageOverTime>();
			if (Object.op_Implicit((Object)(object)component))
			{
				component.TakeDamageOverTime(Vector2.op_Implicit(componentInParent.damage * ((Component)this).transform.forward / (float)componentsInChildren.Length), Vector2.op_Implicit(((Component)this).transform.position), time, interval, color, soundEventDamageOverTime, ((Component)this).GetComponentInParent<ProjectileHit>().ownWeapon, ((Component)this).GetComponentInParent<ProjectileHit>().ownPlayer, true);
			}
			return (HasToReturn)1;
		}

		public void Destroy()
		{
			Object.Destroy((Object)(object)this);
		}
	}
	internal class Flee_ChaseTemplate : MonoBehaviour
	{
		public static readonly float AppliedStatBonus1 = 60f;

		private Player player;

		private bool isActive;

		private LineEffect lineEffect;

		private LineRenderer lineRenderer;

		private Vector3 target;

		private Vector3 myPosition;

		private Vector3 myOffset;

		private bool drawLine;

		private static FieldInfo playerVelocityField = typeof(PlayerVelocity).GetField("velocity", BindingFlags.Instance | BindingFlags.NonPublic);

		private void Start()
		{
			//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_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Expected O, but got Unknown
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			player = ((Component)this).GetComponentInParent<Player>();
			myPosition = ((Component)player).transform.position;
			lineRenderer = ((Component)this).gameObject.AddComponent<LineRenderer>();
			lineRenderer.startWidth = 0.15f;
			lineRenderer.endWidth = lineRenderer.startWidth;
			lineRenderer.positionCount = 2;
			((Renderer)lineRenderer).material = new Material(Shader.Find("Sprites/Default"));
			lineRenderer.startColor = new Color(127f, 255f, 255f);
			lineRenderer.endColor = new Color(127f, 255f, 255f);
		}

		private void OnDisable()
		{
			turnOff();
		}

		private void FixedUpdate()
		{
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0134: Unknown result type (might be due to invalid IL or missing references)
			//IL_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Unknown result type (might be due to invalid IL or missing references)
			//IL_014b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0172: Unknown result type (might be due to invalid IL or missing references)
			//IL_0185: 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_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			bool flag = false;
			drawLine = false;
			if (player.data.input.direction != Vector3.zero)
			{
				foreach (Player player in PlayerManager.instance.players)
				{
					if (player.teamID != this.player.teamID && Vector2.Angle(Vector2.op_Implicit(((Component)player).transform.position - ((Component)this.player).transform.position), Vector2.op_Implicit(this.player.data.input.direction)) <= 70f && PlayerManager.instance.CanSeePlayer(Vector2.op_Implicit(((Component)this.player).transform.position), player).canSee)
					{
						flag = true;
						drawLine = true;
						break;
					}
				}
			}
			foreach (Player player2 in PlayerManager.instance.players)
			{
				target = ((Component)this.player).transform.position;
				myOffset = ((Component)player2).transform.position;
				if (drawLine)
				{
					((Renderer)lineRenderer).enabled = true;
					lineRenderer.SetPosition(0, target);
					lineRenderer.SetPosition(1, myOffset);
				}
				else
				{
					((Renderer)lineRenderer).enabled = false;
				}
			}
			if (flag)
			{
				turnOn();
			}
			else
			{
				turnOff();
			}
		}

		private void turnOn()
		{
			if (!isActive)
			{
				isActive = true;
				CharacterStatModifiers stats = player.data.stats;
				stats.movementSpeed *= 1f + AppliedStatBonus1 * 0.01f;
			}
		}

		private void turnOff()
		{
			if (isActive)
			{
				isActive = false;
				CharacterStatModifiers stats = player.data.stats;
				stats.movementSpeed /= 1f + AppliedStatBonus1 * 0.01f;
			}
		}
	}
	internal class InLineOfSightTemplate : MonoBehaviour
	{
		public static readonly float AppliedStatBonus1 = 60f;

		private Player player;

		private bool isActive;

		private LineEffect lineEffect;

		private LineRenderer lineRenderer;

		private Vector3 target;

		private Vector3 myPosition;

		private Vector3 myOffset;

		private bool drawLine;

		private static FieldInfo playerVelocityField = typeof(PlayerVelocity).GetField("velocity", BindingFlags.Instance | BindingFlags.NonPublic);

		private void Start()
		{
			//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_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Expected O, but got Unknown
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			player = ((Component)this).GetComponentInParent<Player>();
			myPosition = ((Component)player).transform.position;
			lineRenderer = ((Component)this).gameObject.AddComponent<LineRenderer>();
			lineRenderer.startWidth = 0.15f;
			lineRenderer.endWidth = lineRenderer.startWidth;
			lineRenderer.positionCount = 2;
			((Renderer)lineRenderer).material = new Material(Shader.Find("Sprites/Default"));
			lineRenderer.startColor = new Color(127f, 255f, 255f);
			lineRenderer.endColor = new Color(127f, 255f, 255f);
		}

		private void OnDisable()
		{
			turnOff();
		}

		private void FixedUpdate()
		{
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_00cb: 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_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			bool flag = false;
			drawLine = false;
			foreach (Player player in PlayerManager.instance.players)
			{
				if (player.teamID != this.player.teamID && PlayerManager.instance.CanSeePlayer(Vector2.op_Implicit(((Component)this.player).transform.position), player).canSee)
				{
					flag = true;
					drawLine = true;
					break;
				}
			}
			foreach (Player player2 in PlayerManager.instance.players)
			{
				target = ((Component)this.player).transform.position;
				myOffset = ((Component)player2).transform.position;
				if (drawLine)
				{
					((Renderer)lineRenderer).enabled = true;
					lineRenderer.SetPosition(0, target);
					lineRenderer.SetPosition(1, myOffset);
				}
				else
				{
					((Renderer)lineRenderer).enabled = false;
				}
			}
			if (flag)
			{
				turnOn();
			}
			else
			{
				turnOff();
			}
		}

		private void turnOn()
		{
			if (!isActive)
			{
				isActive = true;
				CharacterStatModifiers stats = player.data.stats;
				stats.movementSpeed *= 1f + AppliedStatBonus1 * 0.01f;
			}
		}

		private void turnOff()
		{
			if (isActive)
			{
				isActive = false;
				CharacterStatModifiers stats = player.data.stats;
				stats.movementSpeed /= 1f + AppliedStatBonus1 * 0.01f;
			}
		}
	}
	public class ShootingDealsSelfDamageTemplate : MonoBehaviour
	{
		private Gun gun;

		public Player player;

		private void Start()
		{
			player = ((Component)this).GetComponent<Player>();
			gun = player.data.weaponHandler.gun;
			Gun obj = gun;
			obj.ShootPojectileAction = (Action<GameObject>)Delegate.Combine(obj.ShootPojectileAction, new Action<GameObject>(ShootAction));
		}

		private void ShootAction(GameObject projectile)
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: 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_0030: Unknown result type (might be due to invalid IL or missing references)
			((Damagable)player.data.healthHandler).TakeDamage(Vector2.right * 18.75f * gun.damage, Vector2.zero, (GameObject)null, (Player)null, false, false);
		}

		private void OnDestroy()
		{
			Gun obj = gun;
			obj.ShootPojectileAction = (Action<GameObject>)Delegate.Remove(obj.ShootPojectileAction, new Action<GameObject>(ShootAction));
		}
	}
	public class TakeDamageOverTimeTemplate_Bad : MonoBehaviour
	{
		public Player player;

		private readonly float updateDelay = 0.1f;

		private readonly float effectCooldown = 0.5f;

		private float startTime;

		private float timeOfLastEffect;

		public int numcheck;

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

		private void Start()
		{
			ResetEffectTimer();
			ResetTimer();
		}

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

		private void Update()
		{
			//IL_00d3: 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_00e7: 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)
			if (!(Time.time >= startTime + updateDelay))
			{
				return;
			}
			ResetTimer();
			if (!(Time.time >= timeOfLastEffect + effectCooldown))
			{
				return;
			}
			for (int i = 0; i <= player.data.currentCards.Count - 1; i++)
			{
				if (player.data.currentCards[i].cardName == "Vampire")
				{
					numcheck++;
				}
			}
			if (numcheck > 0)
			{
				ResetEffectTimer();
				((Damagable)player.data.healthHandler).TakeDamage(Vector2.right * 10f / 2f, Vector2.zero, (GameObject)null, (Player)null, true, false);
			}
		}

		private void ResetTimer()
		{
			startTime = Time.time;
		}

		private void ResetEffectTimer()
		{
			timeOfLastEffect = Time.time;
			numcheck = 0;
		}
	}
}
namespace PedoCards_main.MonoBehaviors
{
	public class AbsorbMono : MonoBehaviour
	{
		private class AbsorbSpawner : MonoBehaviour
		{
			private void Start()
			{
				//IL_001b: Unknown result type (might be due to invalid IL or missing references)
				((Component)this).gameObject.transform.localScale = new Vector3(1f, 1f, 1f);
				((Component)this).gameObject.AddComponent<RemoveAfterSeconds>().seconds = 2f;
				ExtensionMethods.SetFieldValue((object)((Component)((Component)this).gameObject.transform.GetChild(1)).GetComponent<LineEffect>(), "inited", (object)false);
				typeof(LineEffect).InvokeMember("Init", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.InvokeMethod, null, ((Component)((Component)this).gameObject.transform.GetChild(1)).GetComponent<LineEffect>(), new object[0]);
				((Component)((Component)this).gameObject.transform.GetChild(1)).GetComponent<LineEffect>().radius = 4.3f;
				ExtensionMethods.SetFieldValue((object)((Component)((Component)this).gameObject.transform.GetChild(1)).GetComponent<LineEffect>(), "startWidth", (object)1f);
				((Component)((Component)this).gameObject.transform.GetChild(1)).GetComponent<LineEffect>().Play();
			}
		}

		private readonly float maxDistance = 8f;

		public Block block;

		public Player player;

		public CharacterData data;

		public Gun gun;

		private Action<BlockTriggerType> gravy;

		private Action<BlockTriggerType> basic;

		private static GameObject Absorbvisu;

		private readonly float updateDelay = 0.1f;

		private readonly float effectCooldown;

		private float startTime;

		private float timeOfLastEffect;

		private bool canTrigger;

		private bool hasTriggered;

		public int numcheck;

		public static SoundEvent fieldsound;

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

		[Obsolete]
		public static GameObject AbsorbVisual
		{
			get
			{
				//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
				//IL_0107: Unknown result type (might be due to invalid IL or missing references)
				//IL_0149: Unknown result type (might be due to invalid IL or missing references)
				//IL_0153: Unknown result type (might be due to invalid IL or missing references)
				//IL_0158: Unknown result type (might be due to invalid IL or missing references)
				if ((Object)(object)Absorbvisu != (Object)null)
				{
					return Absorbvisu;
				}
				IEnumerable<CardInfo> first = ((ObservableCollection<CardInfo>)typeof(CardManager).GetField("activeCards", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null)).ToList();
				List<CardInfo> second = (List<CardInfo>)typeof(CardManager).GetField("inactiveCards", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null);
				Absorbvisu = Object.Instantiate<GameObject>(((Component)(from card in first.Concat(second).ToList()
					where card.cardName.ToLower() == "overpower"
					select card).First()).GetComponent<CharacterStatModifiers>().AddObjectToPlayer.GetComponent<SpawnObjects>().objectToSpawn[0], new Vector3(0f, 100000f, 0f), Quaternion.identity);
				((Object)Absorbvisu).name = "E_Absorb";
				Object.DontDestroyOnLoad((Object)(object)Absorbvisu);
				ParticleSystem[] componentsInChildren = Absorbvisu.GetComponentsInChildren<ParticleSystem>();
				for (int i = 0; i < componentsInChildren.Length; i++)
				{
					componentsInChildren[i].startColor = Color.magenta;
				}
				((Component)Absorbvisu.transform.GetChild(1)).GetComponent<LineEffect>().colorOverTime.colorKeys = (GradientColorKey[])(object)new GradientColorKey[1]
				{
					new GradientColorKey(Color.magenta, 0f)
				};
				Object.Destroy((Object)(object)((Component)Absorbvisu.transform.GetChild(2)).gameObject);
				((Component)Absorbvisu.transform.GetChild(1)).GetComponent<LineEffect>().offsetMultiplier = 0f;
				((Component)Absorbvisu.transform.GetChild(1)).GetComponent<LineEffect>().playOnAwake = true;
				Object.Destroy((Object)(object)Absorbvisu.GetComponent<FollowPlayer>());
				Absorbvisu.GetComponent<DelayEvent>().time = 0f;
				Object.Destroy((Object)(object)Absorbvisu.GetComponent<SoundUnityEventPlayer>());
				Object.Destroy((Object)(object)Absorbvisu.GetComponent<Explosion>());
				Object.Destroy((Object)(object)Absorbvisu.GetComponent<RemoveAfterSeconds>());
				Absorbvisu.AddComponent<AbsorbSpawner>();
				return Absorbvisu;
			}
			set
			{
			}
		}

		private void Start()
		{
			player = ((Component)this).GetComponent<Player>();
			block = ((Component)this).GetComponent<Block>();
			data = ((Component)this).GetComponent<CharacterData>();
			gun = ((Component)this).GetComponent<Gun>();
			ResetEffectTimer();
			ResetTimer();
			canTrigger = true;
			hasTriggered = false;
			basic = block.BlockAction;
			if (Object.op_Implicit((Object)(object)block))
			{
				gravy = GetDoBlockAction(player, block).Invoke;
				block.BlockAction = (Action<BlockTriggerType>)Delegate.Combine(block.BlockAction, gravy);
			}
		}

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

		public void OnDestroy()
		{
			block.BlockAction = basic;
		}

		private void Update()
		{
			if (!(Time.time >= startTime + updateDelay))
			{
				return;
			}
			for (int i = 0; i <= player.data.currentCards.Count - 1; i++)
			{
				if (player.data.currentCards[i].cardName == "Absorb")
				{
					numcheck++;
				}
			}
			if (numcheck > 0)
			{
				ResetTimer();
				if (Time.time >= timeOfLastEffect)
				{
					canTrigger = true;
				}
				else
				{
					canTrigger = false;
				}
			}
			else
			{
				Object.Destroy((Object)(object)this);
			}
		}

		public Action<BlockTriggerType> GetDoBlockAction(Player player, Block block)
		{
			Block block2 = block;
			Player player2 = player;
			return delegate(BlockTriggerType trigger)
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0003: Invalid comparison between Unknown and I4
				//IL_0039: Unknown result type (might be due to invalid IL or missing references)
				//IL_009f: 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_00ba: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
				//IL_0103: Unknown result type (might be due to invalid IL or missing references)
				//IL_012a: Unknown result type (might be due to invalid IL or missing references)
				//IL_012f: Unknown result type (might be due to invalid IL or missing references)
				//IL_018b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0190: Unknown result type (might be due to invalid IL or missing references)
				//IL_019e: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
				if ((int)trigger != 1)
				{
					if (!Object.op_Implicit((Object)(object)fieldsound))
					{
					}
					soundParameterIntensity.intensity = ((Component)this).transform.localScale.x * Optionshandler.vol_Master * Optionshandler.vol_Sfx / 1.3f;
					SoundManager.Instance.Play(fieldsound, ((Component)this).transform, (SoundParameterBase[])(object)new SoundParameterBase[1] { (SoundParameterBase)soundParameterIntensity });
					Object.Instantiate<GameObject>(AbsorbVisual, ((Component)this.player).transform.position, Quaternion.identity);
					Vector2 val = Vector2.op_Implicit(((Component)block2).transform.position);
					Player[] array = PlayerManager.instance.players.ToArray();
					for (int i = 0; i < array.Length; i++)
					{
						if (array[i].teamID != player2.teamID && Vector2.Distance(val, Vector2.op_Implicit(((Component)array[i]).transform.position)) < maxDistance && PlayerManager.instance.CanSeePlayer(Vector2.op_Implicit(((Component)player2).transform.position), array[i]).canSee)
						{
							((Damagable)((Component)((Component)array[i]).transform).GetComponent<HealthHandler>()).TakeDamage(this.player.data.weaponHandler.gun.damage * 55f * 0.5f * Vector2.down, Vector2.op_Implicit(((Component)array[i]).transform.position), ((Component)this.player.data.weaponHandler).gameObject, this.player, true, false);
							CharacterData obj = this.player.data;
							obj.health += this.player.data.weaponHandler.gun.damage * 55f * 0.5f;
							if (this.player.data.health > this.player.data.maxHealth)
							{
								this.player.data.health = this.player.data.maxHealth;
							}
							hasTriggered = true;
						}
					}
					if (hasTriggered)
					{
						hasTriggered = false;
						canTrigger = false;
						ResetEffectTimer();
					}
				}
			};
		}

		private void ResetTimer()
		{
			startTime = Time.time;
			numcheck = 0;
		}

		private void ResetEffectTimer()
		{
			timeOfLastEffect = Time.time;
		}
	}
	public class BiteMono : MonoBehaviour
	{
		private class BiteSpawner : MonoBehaviour
		{
			private void Start()
			{
				//IL_001b: Unknown result type (might be due to invalid IL or missing references)
				((Component)this).gameObject.transform.localScale = new Vector3(1f, 1f, 1f);
				((Component)this).gameObject.AddComponent<RemoveAfterSeconds>().seconds = 2f;
				ExtensionMethods.SetFieldValue((object)((Component)((Component)this).gameObject.transform.GetChild(1)).GetComponent<LineEffect>(), "inited", (object)false);
				typeof(LineEffect).InvokeMember("Init", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.InvokeMethod, null, ((Component)((Component)this).gameObject.transform.GetChild(1)).GetComponent<LineEffect>(), new object[0]);
				((Component)((Component)this).gameObject.transform.GetChild(1)).GetComponent<LineEffect>().radius = 4.3f;
				ExtensionMethods.SetFieldValue((object)((Component)((Component)this).gameObject.transform.GetChild(1)).GetComponent<LineEffect>(), "startWidth", (object)1f);
				((Component)((Component)this).gameObject.transform.GetChild(1)).GetComponent<LineEffect>().Play();
			}
		}

		private readonly float maxDistance = 8f;

		public Block block;

		public Player player;

		public CharacterData data;

		public Gun gun;

		private Action<BlockTriggerType> gravy;

		private Action<BlockTriggerType> basic;

		private static GameObject Bitevisu;

		private readonly float updateDelay = 0.1f;

		private readonly float effectCooldown;

		private float startTime;

		private float timeOfLastEffect;

		private bool canTrigger;

		private bool hasTriggered;

		public int numcheck;

		public static SoundEvent fieldsound;

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

		[Obsolete]
		public static GameObject BiteVisual
		{
			get
			{
				//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
				//IL_0107: Unknown result type (might be due to invalid IL or missing references)
				//IL_0149: Unknown result type (might be due to invalid IL or missing references)
				//IL_0153: Unknown result type (might be due to invalid IL or missing references)
				//IL_0158: Unknown result type (might be due to invalid IL or missing references)
				if ((Object)(object)Bitevisu != (Object)null)
				{
					return Bitevisu;
				}
				IEnumerable<CardInfo> first = ((ObservableCollection<CardInfo>)typeof(CardManager).GetField("activeCards", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null)).ToList();
				List<CardInfo> second = (List<CardInfo>)typeof(CardManager).GetField("inactiveCards", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null);
				Bitevisu = Object.Instantiate<GameObject>(((Component)(from card in first.Concat(second).ToList()
					where card.cardName.ToLower() == "overpower"
					select card).First()).GetComponent<CharacterStatModifiers>().AddObjectToPlayer.GetComponent<SpawnObjects>().objectToSpawn[0], new Vector3(0f, 100000f, 0f), Quaternion.identity);
				((Object)Bitevisu).name = "E_Bite";
				Object.DontDestroyOnLoad((Object)(object)Bitevisu);
				ParticleSystem[] componentsInChildren = Bitevisu.GetComponentsInChildren<ParticleSystem>();
				for (int i = 0; i < componentsInChildren.Length; i++)
				{
					componentsInChildren[i].startColor = Color.red;
				}
				((Component)Bitevisu.transform.GetChild(1)).GetComponent<LineEffect>().colorOverTime.colorKeys = (GradientColorKey[])(object)new GradientColorKey[1]
				{
					new GradientColorKey(Color.magenta, 0f)
				};
				Object.Destroy((Object)(object)((Component)Bitevisu.transform.GetChild(2)).gameObject);
				((Component)Bitevisu.transform.GetChild(1)).GetComponent<LineEffect>().offsetMultiplier = 0f;
				((Component)Bitevisu.transform.GetChild(1)).GetComponent<LineEffect>().playOnAwake = true;
				Object.Destroy((Object)(object)Bitevisu.GetComponent<FollowPlayer>());
				Bitevisu.GetComponent<DelayEvent>().time = 0f;
				Object.Destroy((Object)(object)Bitevisu.GetComponent<SoundUnityEventPlayer>());
				Object.Destroy((Object)(object)Bitevisu.GetComponent<Explosion>());
				Object.Destroy((Object)(object)Bitevisu.GetComponent<RemoveAfterSeconds>());
				Bitevisu.AddComponent<BiteSpawner>();
				return Bitevisu;
			}
			set
			{
			}
		}

		private void Start()
		{
			player = ((Component)this).GetComponent<Player>();
			block = ((Component)this).GetComponent<Block>();
			data = ((Component)this).GetComponent<CharacterData>();
			gun = ((Component)this).GetComponent<Gun>();
			ResetEffectTimer();
			ResetTimer();
			canTrigger = true;
			hasTriggered = false;
			basic = block.BlockAction;
			if (Object.op_Implicit((Object)(object)block))
			{
				gravy = GetDoBlockAction(player, block).Invoke;
				block.BlockAction = (Action<BlockTriggerType>)Delegate.Combine(block.BlockAction, gravy);
			}
		}

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

		public void OnDestroy()
		{
			block.BlockAction = basic;
		}

		private void Update()
		{
			if (!(Time.time >= startTime + updateDelay))
			{
				return;
			}
			for (int i = 0; i <= player.data.currentCards.Count - 1; i++)
			{
				if (player.data.currentCards[i].cardName == "Bite")
				{
					numcheck++;
				}
			}
			if (numcheck > 0)
			{
				ResetTimer();
				if (Time.time >= timeOfLastEffect)
				{
					canTrigger = true;
				}
				else
				{
					canTrigger = false;
				}
			}
			else
			{
				Object.Destroy((Object)(object)this);
			}
		}

		public Action<BlockTriggerType> GetDoBlockAction(Player player, Block block)
		{
			Block block2 = block;
			Player player2 = player;
			return delegate(BlockTriggerType trigger)
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0003: Invalid comparison between Unknown and I4
				//IL_0039: Unknown result type (might be due to invalid IL or missing references)
				//IL_009f: 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_00ba: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
				//IL_0103: Unknown result type (might be due to invalid IL or missing references)
				//IL_012a: Unknown result type (might be due to invalid IL or missing references)
				//IL_012f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0186: Unknown result type (might be due to invalid IL or missing references)
				//IL_018b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0199: Unknown result type (might be due to invalid IL or missing references)
				//IL_019e: Unknown result type (might be due to invalid IL or missing references)
				if ((int)trigger != 1)
				{
					if (!Object.op_Implicit((Object)(object)fieldsound))
					{
					}
					soundParameterIntensity.intensity = ((Component)this).transform.localScale.x * Optionshandler.vol_Master * Optionshandler.vol_Sfx / 1.3f;
					SoundManager.Instance.Play(fieldsound, ((Component)this).transform, (SoundParameterBase[])(object)new SoundParameterBase[1] { (SoundParameterBase)soundParameterIntensity });
					Object.Instantiate<GameObject>(BiteVisual, ((Component)this.player).transform.position, Quaternion.identity);
					Vector2 val = Vector2.op_Implicit(((Component)block2).transform.position);
					Player[] array = PlayerManager.instance.players.ToArray();
					for (int i = 0; i < array.Length; i++)
					{
						if (array[i].teamID != player2.teamID && Vector2.Distance(val, Vector2.op_Implicit(((Component)array[i]).transform.position)) < maxDistance && PlayerManager.instance.CanSeePlayer(Vector2.op_Implicit(((Component)player2).transform.position), array[i]).canSee)
						{
							((Damagable)((Component)((Component)array[i]).transform).GetComponent<HealthHandler>()).TakeDamage(this.player.data.stats.lifeSteal * 55f * 0.5f * Vector2.down, Vector2.op_Implicit(((Component)array[i]).transform.position), ((Component)this.player.data.weaponHandler).gameObject, this.player, true, false);
							hasTriggered = true;
						}
					}
					if (hasTriggered)
					{
						hasTriggered = false;
						canTrigger = false;
						ResetEffectTimer();
					}
				}
			};
		}

		private void ResetTimer()
		{
			startTime = Time.time;
			numcheck = 0;
		}

		private void ResetEffectTimer()
		{
			timeOfLastEffect = Time.time;
		}
	}
	public class ThornyMono : MonoBehaviour
	{
		private class ThornySpawner : MonoBehaviour
		{
			private void Start()
			{
				//IL_001b: Unknown result type (might be due to invalid IL or missing references)
				((Component)this).gameObject.transform.localScale = new Vector3(1f, 1f, 1f);
				((Component)this).gameObject.AddComponent<RemoveAfterSeconds>().seconds = 2f;
				ExtensionMethods.SetFieldValue((object)((Component)((Component)this).gameObject.transform.GetChild(1)).GetComponent<LineEffect>(), "inited", (object)false);
				typeof(LineEffect).InvokeMember("Init", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.InvokeMethod, null, ((Component)((Component)this).gameObject.transform.GetChild(1)).GetComponent<LineEffect>(), new object[0]);
				((Component)((Component)this).gameObject.transform.GetChild(1)).GetComponent<LineEffect>().radius = 4.3f;
				ExtensionMethods.SetFieldValue((object)((Component)((Component)this).gameObject.transform.GetChild(1)).GetComponent<LineEffect>(), "startWidth", (object)1f);
				((Component)((Component)this).gameObject.transform.GetChild(1)).GetComponent<LineEffect>().Play();
			}
		}

		private readonly float maxDistance = 8f;

		public Block block;

		public Player player;

		public CharacterData data;

		public Gun gun;

		private Action<BlockTriggerType> gravy;

		private Action<BlockTriggerType> basic;

		private static GameObject Thornyvisu;

		private readonly float updateDelay = 0.1f;

		private readonly float effectCooldown;

		private float startTime;

		private float timeOfLastEffect;

		private bool canTrigger;

		private bool hasTriggered;

		public int numcheck;

		public static SoundEvent fieldsound;

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

		[Obsolete]
		public static GameObject ThornyVisual
		{
			get
			{
				//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
				//IL_0116: Unknown result type (might be due to invalid IL or missing references)
				//IL_0167: Unknown result type (might be due to invalid IL or missing references)
				//IL_0171: Unknown result type (might be due to invalid IL or missing references)
				//IL_0176: Unknown result type (might be due to invalid IL or missing references)
				if ((Object)(object)Thornyvisu != (Object)null)
				{
					return Thornyvisu;
				}
				IEnumerable<CardInfo> first = ((ObservableCollection<CardInfo>)typeof(CardManager).GetField("activeCards", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null)).ToList();
				List<CardInfo> second = (List<CardInfo>)typeof(CardManager).GetField("inactiveCards", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null);
				Thornyvisu = Object.Instantiate<GameObject>(((Component)(from card in first.Concat(second).ToList()
					where card.cardName.ToLower() == "overpower"
					select card).First()).GetComponent<CharacterStatModifiers>().AddObjectToPlayer.GetComponent<SpawnObjects>().objectToSpawn[0], new Vector3(0f, 100000f, 0f), Quaternion.identity);
				((Object)Thornyvisu).name = "E_Thorny";
				Object.DontDestroyOnLoad((Object)(object)Thornyvisu);
				ParticleSystem[] componentsInChildren = Thornyvisu.GetComponentsInChildren<ParticleSystem>();
				for (int i = 0; i < componentsInChildren.Length; i++)
				{
					componentsInChildren[i].startColor = new Color(88f, 57f, 39f);
				}
				((Component)Thornyvisu.transform.GetChild(1)).GetComponent<LineEffect>().colorOverTime.colorKeys = (GradientColorKey[])(object)new GradientColorKey[1]
				{
					new GradientColorKey(new Color(88f, 57f, 39f), 0f)
				};
				Object.Destroy((Object)(object)((Component)Thornyvisu.transform.GetChild(2)).gameObject);
				((Component)Thornyvisu.transform.GetChild(1)).GetComponent<LineEffect>().offsetMultiplier = 0f;
				((Component)Thornyvisu.transform.GetChild(1)).GetComponent<LineEffect>().playOnAwake = true;
				Object.Destroy((Object)(object)Thornyvisu.GetComponent<FollowPlayer>());
				Thornyvisu.GetComponent<DelayEvent>().time = 0f;
				Object.Destroy((Object)(object)Thornyvisu.GetComponent<SoundUnityEventPlayer>());
				Object.Destroy((Object)(object)Thornyvisu.GetComponent<Explosion>());
				Thornyvisu.AddComponent<ThornySpawner>();
				return Thornyvisu;
			}
			set
			{
			}
		}

		private void Start()
		{
			player = ((Component)this).GetComponent<Player>();
			block = ((Component)this).GetComponent<Block>();
			data = ((Component)this).GetComponent<CharacterData>();
			gun = ((Component)this).GetComponent<Gun>();
			ResetEffectTimer();
			ResetTimer();
			canTrigger = true;
			hasTriggered = false;
			basic = block.BlockAction;
			if (Object.op_Implicit((Object)(object)block))
			{
				gravy = GetDoBlockAction(player, block).Invoke;
				block.BlockAction = (Action<BlockTriggerType>)Delegate.Combine(block.BlockAction, gravy);
			}
		}

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

		public void OnDestroy()
		{
			block.BlockAction = basic;
		}

		private void Update()
		{
			if (!(Time.time >= startTime + updateDelay))
			{
				return;
			}
			for (int i = 0; i <= player.data.currentCards.Count - 1; i++)
			{
				if (player.data.currentCards[i].cardName == "Thorny")
				{
					numcheck++;
				}
			}
			if (numcheck > 0)
			{
				ResetTimer();
				if (Time.time >= timeOfLastEffect)
				{
					canTrigger = true;
				}
				else
				{
					canTrigger = false;
				}
			}
			else
			{
				Object.Destroy((Object)(object)this);
			}
		}

		public Action<BlockTriggerType> GetDoBlockAction(Player player, Block block)
		{
			Block block2 = block;
			Player player2 = player;
			return delegate(BlockTriggerType trigger)
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0003: Invalid comparison between Unknown and I4
				//IL_0039: Unknown result type (might be due to invalid IL or missing references)
				//IL_009f: 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_00ba: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
				//IL_0103: Unknown result type (might be due to invalid IL or missing references)
				//IL_012a: Unknown result type (might be due to invalid IL or missing references)
				//IL_012f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0197: Unknown result type (might be due to invalid IL or missing references)
				//IL_019c: Unknown result type (might be due to invalid IL or missing references)
				//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
				//IL_01af: Unknown result type (might be due to invalid IL or missing references)
				if ((int)trigger != 1)
				{
					if (!Object.op_Implicit((Object)(object)fieldsound))
					{
					}
					soundParameterIntensity.intensity = ((Component)this).transform.localScale.x * Optionshandler.vol_Master * Optionshandler.vol_Sfx / 1.3f;
					SoundManager.Instance.Play(fieldsound, ((Component)this).transform, (SoundParameterBase[])(object)new SoundParameterBase[1] { (SoundParameterBase)soundParameterIntensity });
					Object.Instantiate<GameObject>(ThornyVisual, ((Component)this.player).transform.position, Quaternion.identity);
					Vector2 val = Vector2.op_Implicit(((Component)block2).transform.position);
					Player[] array = PlayerManager.instance.players.ToArray();
					for (int i = 0; i < array.Length; i++)
					{
						if (array[i].teamID != player2.teamID && Vector2.Distance(val, Vector2.op_Implicit(((Component)array[i]).transform.position)) < maxDistance && PlayerManager.instance.CanSeePlayer(Vector2.op_Implicit(((Component)player2).transform.position), array[i]).canSee)
						{
							((Damagable)((Component)((Component)array[i]).transform).GetComponent<HealthHandler>()).TakeDamage((1f - this.player.data.health / this.player.data.maxHealth) * 120f * Vector2.down, Vector2.op_Implicit(((Component)array[i]).transform.position), ((Component)this.player.data.weaponHandler).gameObject, this.player, true, false);
							hasTriggered = true;
						}
					}
					if (hasTriggered)
					{
						hasTriggered = false;
						canTrigger = false;
						ResetEffectTimer();
					}
				}
			};
		}

		private void ResetTimer()
		{
			startTime = Time.time;
			numcheck = 0;
		}

		private void ResetEffectTimer()
		{
			timeOfLastEffect = Time.time;
		}
	}
}
namespace PedoCards_main.Cards
{
	internal class Absorb : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			block.cdAdd = 0.5f;
			statModifiers.health = 1.25f;
			cardInfo.allowMultiple = false;
		}

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

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

		protected override string GetDescription()
		{
			return "Blocking does damage to nearby enemies, equal to 50% of your gun damage. You regenerate the damage you deal.";
		}

		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 = "Health",
					amount = "+25%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Block cooldown",
					amount = "+0.5s",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

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

		public override string GetModName()
		{
			return "PeCa";
		}
	}
	internal class Acid : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.allowMultiple = false;
			gun.unblockable = true;
			gun.attackSpeed = 0.8f;
			gun.reloadTimeAdd = 0.5f;
			statModifiers.health = 1.3f;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Expected O, but got Unknown
			gun.projectileColor = Color.green;
			List<ObjectsToSpawn> list = gun.objectsToSpawn.ToList();
			ObjectsToSpawn val = new ObjectsToSpawn();
			val.AddToProjectile = new GameObject("Acid-blob", new Type[1] { typeof(AcidMono) });
			list.Add(val);
			gun.objectsToSpawn = list.ToArray();
		}

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

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

		protected override string GetDescription()
		{
			return "Bullets penetrate blocking. Bullets deals damage over 4 seconds.";
		}

		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 = "Health",
					amount = "+30%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = true,
					stat = "ATKSPD",
					amount = "-20%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Reload time",
					amount = "+0.5s",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

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

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

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

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

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

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

		public override string GetModName()
		{
			return "PeCa";
		}
	}
	internal class BiggerThanYou : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.allowMultiple = false;
			statModifiers.sizeMultiplier = 1.5f;
			statModifiers.movementSpeed = 0.6f;
		}

		public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
		{
			CharacterStatModifiersExtension.GetAdditionalData(characterStats).damageReduction = 2f;
			CharacterStatModifiersExtension.GetAdditionalData(characterStats).damageReductionFlat = 0f;
		}

		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 "Bigger Than You";
		}

		protected override string GetDescription()
		{
			return "+50% size";
		}

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

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

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

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

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

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

		protected override string GetDescription()
		{
			return "Blocking does damage to nearby enemies, proportional to your lifesteal.";
		}

		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 = "Lifesteal",
					amount = "+50%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Block cooldown",
					amount = "+0.5s",
					simepleAmount = (SimpleAmount)0
				}
			};
		}

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

		public override string GetModName()
		{
			return "PeCa";
		}
	}
	internal class Bravery : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			cardInfo.allowMultiple = false;
			gun.reloadTimeAdd = 0.5f;
			statModifiers.health = 0.625f;
			block.cdMultiplier = 0.4f;
		}

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

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

		protected override GameObject GetCardArt()
		{
			return null;
		}

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

		protected override CardInfoStat[] GetStats()
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Expected O, but got Unknown
			return (CardInfoStat[])(object)new CardInfoStat[3]
			{
				new CardInfoStat
				{
					positive = true,
					stat = "Block cooldown",
					amount = "-60%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "HP",
					amount = "-75%",
					simepleAmount = (SimpleAmount)0
				},
				new CardInfoStat
				{
					positive = false,
					stat = "Reload time",
					amount = "+0.5s",
					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 "PeCa";
		}
	}
	internal class BulletEject : CustomCard
	{
		public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
		{
			gun.useCharge = true;
			gun.chargeNumberOfProjectilesTo = 6f;
			gun.chargeSpreadTo = 0.2f;
			gun.chargeEvenSpreadTo = 1f;
			gun.chargeSpeedTo = 1f;
			gun.chargeDamageMultiplier = 1f;
			gun.reloadTimeAdd = 0.5f;
			gun.ammo = 3;
		}

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

		protecte