Decompiled source of NQV4PRO v0.0.2

NQV4Pro.dll

Decompiled 11 months ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using CardChoiceSpawnUniqueCardPatch.CustomCategories;
using HarmonyLib;
using Jotunn.Utils;
using Microsoft.CodeAnalysis;
using ModsPlus;
using NQV4Pro;
using Photon.Pun;
using UnboundLib;
using UnboundLib.Cards;
using UnboundLib.GameModes;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("NQV4Pro")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("NQV4Pro")]
[assembly: AssemblyTitle("NQV4Pro")]
[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 AbyssCard : CustomEffectCard<AbyssCardEffect>
{
	public override CardDetails<AbyssCardEffect> Details
	{
		get
		{
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0079: Expected O, but got Unknown
			CardDetails<AbyssCardEffect> val = new CardDetails<AbyssCardEffect>();
			val.Title = "ナラク";
			val.Description = "敵を奈落へ";
			val.ModName = "NQV4PRO";
			val.Rarity = (Rarity)1;
			val.Theme = (CardThemeColorType)4;
			val.Art = Assets.AbyssCard_Art;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					amount = "+10000",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "弾丸ヒット時の重力"
				}
			};
			return val;
		}
	}
}
public class AbyssCardEffect : CardEffect
{
	public override void OnBulletHit(GameObject projectile, HitInfo hit)
	{
		((CardEffect)this).OnBulletHit(projectile, hit);
		if (!((Component)hit.collider).CompareTag("Player"))
		{
			return;
		}
		GameObject gameObject = ((Component)hit.collider).gameObject;
		Player val = gameObject.GetComponent<Player>() ?? gameObject.GetComponentInParent<Player>();
		if ((Object)(object)val != (Object)null)
		{
			AbyssGravity abyssGravity = gameObject.GetComponent<AbyssGravity>();
			if ((Object)(object)abyssGravity == (Object)null)
			{
				abyssGravity = gameObject.AddComponent<AbyssGravity>();
			}
			abyssGravity.ApplyAbyssGravity(val);
		}
	}
}
public class AbyssGravity : MonoBehaviour
{
	private Gravity gravity;

	private float originalGravity;

	private Renderer renderer;

	private Player player;

	public void ApplyAbyssGravity(Player player)
	{
		//IL_0084: Unknown result type (might be due to invalid IL or missing references)
		this.player = player;
		gravity = ((Component)player).GetComponent<Gravity>() ?? ((Component)player).GetComponentInParent<Gravity>();
		if ((Object)(object)gravity != (Object)null)
		{
			originalGravity = gravity.gravityForce;
			gravity.gravityForce = 10000f;
			Debug.Log("[AbyssEffect] プレイヤーの重力を10000に設定しました");
		}
		Renderer componentInChildren = ((Component)player).GetComponentInChildren<Renderer>();
		if ((Object)(object)componentInChildren != (Object)null)
		{
			componentInChildren.material.color = new Color(0.5f, 0f, 0.5f);
		}
	}

	private void OnDestroy()
	{
		RestoreGravity();
	}

	public void RestoreGravity()
	{
		if ((Object)(object)gravity != (Object)null)
		{
			gravity.gravityForce = originalGravity;
			Debug.Log("[AbyssEffect] プレイヤーの重力を元に戻しました");
		}
	}
}
public class ChaosShoot : SimpleCard
{
	public override CardDetails Details
	{
		get
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Expected O, but got Unknown
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0079: Expected O, but got Unknown
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: 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_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Expected O, but got Unknown
			CardDetails val = new CardDetails();
			val.Title = "Chaos Shoot";
			val.Description = "アインシュタインも涙を流す";
			val.ModName = "NQV4PRO";
			val.Rarity = (Rarity)0;
			val.Theme = (CardThemeColorType)6;
			val.Art = Assets.ChaosShoot_Art;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					amount = "弾の重力",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "反転"
				},
				new CardInfoStat
				{
					amount = "+25%",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "damage"
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
		gun.gravity = -1f;
		gun.damage *= 1.25f;
	}

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

	protected override void Removed(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
	}
}
public class CloneConfusion : SimpleCard
{
	public override CardDetails Details
	{
		get
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Expected O, but got Unknown
			CardDetails val = new CardDetails();
			val.Title = "分身バカ";
			val.Description = "撃つたびに自分の幻影を出す。\nカオス注意。";
			val.ModName = "NQV4PRO";
			val.Rarity = (Rarity)1;
			val.Theme = (CardThemeColorType)8;
			val.Art = null;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[0];
			return val;
		}
	}

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

	protected override void Removed(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		CloneConfusionEffect component = ((Component)player).gameObject.GetComponent<CloneConfusionEffect>();
		if ((Object)(object)component != (Object)null)
		{
			Object.Destroy((Object)(object)component);
		}
	}
}
public class Contract_of_Blood : SimpleCard
{
	public override CardDetails Details
	{
		get
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Expected O, but got Unknown
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0079: Expected O, but got Unknown
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: 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_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Expected O, but got Unknown
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: 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_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Expected O, but got Unknown
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: Expected O, but got Unknown
			CardDetails val = new CardDetails();
			val.Title = "Contract of Blood";
			val.Description = "毎秒10ダメージを受けるが膨大なライフスティールを入手。";
			val.ModName = "NQV4PRO";
			val.Rarity = (Rarity)1;
			val.Theme = (CardThemeColorType)8;
			val.Art = Assets.Contract_of_Blood_Art;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[4]
			{
				new CardInfoStat
				{
					amount = "+250%",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "Life Steal"
				},
				new CardInfoStat
				{
					amount = "+150%",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "movement speed"
				},
				new CardInfoStat
				{
					amount = "+150%",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "damage"
				},
				new CardInfoStat
				{
					amount = "10",
					positive = false,
					simepleAmount = (SimpleAmount)0,
					stat = "d/s"
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
		statModifiers.lifeSteal = 2.5f;
	}

	protected override void Added(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		characterStats.movementSpeed *= 1.5f;
		gun.damage *= 1.5f;
		((Component)player).gameObject.AddComponent<Contract_of_Blood_Effect>();
	}

	protected override void Removed(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		Contract_of_Blood_Effect[] components = ((Component)player).gameObject.GetComponents<Contract_of_Blood_Effect>();
		Contract_of_Blood_Effect[] array = components;
		foreach (Contract_of_Blood_Effect contract_of_Blood_Effect in array)
		{
			Object.Destroy((Object)(object)contract_of_Blood_Effect);
		}
	}
}
public class CursorShoot : CustomEffectCard<CursorShootB>
{
	public override CardDetails<CursorShootB> Details => new CardDetails<CursorShootB>
	{
		Title = "現実は私の意のままに",
		Description = "カーソルから弾を発射します",
		ModName = "NQV4",
		Rarity = (Rarity)2,
		Theme = (CardThemeColorType)8
	};

	protected override void Added(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		((Component)player).gameObject.GetComponentInChildren<CursorShootB>();
	}

	protected override void Removed(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		if ((Object)(object)((Component)player).gameObject.GetComponentInChildren<CursorShootB>() != (Object)null)
		{
			((Component)player).gameObject.GetComponentInChildren<CursorShootB>();
		}
	}
}
public class FinalBullet : CustomEffectCard<FinalBulletBuff>
{
	public override CardDetails<FinalBulletBuff> Details
	{
		get
		{
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0079: Expected O, but got Unknown
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: 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_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Expected O, but got Unknown
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: 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_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Expected O, but got Unknown
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: Expected O, but got Unknown
			//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0104: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: 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_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_011d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Expected O, but got Unknown
			CardDetails<FinalBulletBuff> val = new CardDetails<FinalBulletBuff>();
			val.Title = "ファイナル バレット";
			val.Description = "一発あれば十分だ。";
			val.ModName = "NQV4PRO";
			val.Rarity = (Rarity)1;
			val.Theme = (CardThemeColorType)1;
			val.Art = Assets.FinalBullet_Art;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[5]
			{
				new CardInfoStat
				{
					amount = "遅い",
					positive = false,
					simepleAmount = (SimpleAmount)0,
					stat = "reload time"
				},
				new CardInfoStat
				{
					amount = "1",
					positive = false,
					simepleAmount = (SimpleAmount)0,
					stat = "max ammo"
				},
				new CardInfoStat
				{
					amount = "直進",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "ammo"
				},
				new CardInfoStat
				{
					amount = "+100%",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "弾速"
				},
				new CardInfoStat
				{
					amount = "触れた敵の最大体力",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "damage"
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
		//IL_0016: 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)
		gun.projectileColor = new Color(0.15f, 0.15f, 0.15f, 1f);
		gun.reloadTime *= 2f;
	}

	protected override void Added(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		gun.gravity = 0f;
		gun.projectileSpeed *= 2f;
		gunAmmo.maxAmmo = 1;
	}

	protected override void Removed(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		Debug.Log("[MySimpleCard] カードがプレイヤーから削除されました");
	}
}
public class FinalBulletBuff : CardEffect
{
	public override void OnBulletHit(GameObject projectile, HitInfo hit)
	{
		//IL_0041: Unknown result type (might be due to invalid IL or missing references)
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		((CardEffect)this).OnBulletHit(projectile, hit);
		if (Object.op_Implicit((Object)(object)hit.transform))
		{
			HealthHandler component = ((Component)hit.transform).GetComponent<HealthHandler>();
			if (component != null)
			{
				Vector2 val = default(Vector2);
				((Vector2)(ref val))..ctor(1E+09f, 0f);
				((Damagable)component).TakeDamage(val, hit.point, (GameObject)null, ((CardEffect)this).player, true, false);
			}
		}
	}
}
public class Gambling : CustomEffectCard<GamblingEffect>
{
	public override CardDetails<GamblingEffect> Details
	{
		get
		{
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0079: Expected O, but got Unknown
			CardDetails<GamblingEffect> val = new CardDetails<GamblingEffect>();
			val.Title = "Gambling";
			val.Description = "ブロック時以下の超エキサイティングなランダムな効果を受ける(後悔しても遅いぞ)";
			val.ModName = "NQV4PRO";
			val.Art = Assets.Gambling_Art;
			val.Rarity = (Rarity)1;
			val.Theme = (CardThemeColorType)3;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					amount = "Somethings",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "Somethings"
				}
			};
			return val;
		}
	}
}
public class GamblingEffect : CardEffect
{
	public override void OnBlock(BlockTriggerType trigger)
	{
		//IL_0002: 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_00a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
		//IL_0126: Unknown result type (might be due to invalid IL or missing references)
		//IL_0130: Unknown result type (might be due to invalid IL or missing references)
		((CardEffect)this).OnBlock(trigger);
		HealthHandler component = ((Component)((CardEffect)this).player).GetComponent<HealthHandler>();
		if ((Object)(object)component == (Object)null)
		{
			Debug.LogError("GamblingEffect: Player '" + ((Object)((CardEffect)this).player).name + "' のHealthHandlerが見つかりませんでした。");
			return;
		}
		int num = Random.Range(0, 101);
		if (num < 10)
		{
			Debug.Log("GamblingEffect: アクション1発動");
			component.Heal(100f);
		}
		else if (num < 20)
		{
			Debug.Log("GamblingEffect: アクション2発動");
			component.DoDamage(new Vector2(30f, 0f), Vector2.op_Implicit(((Component)this).transform.position), Color.black, (GameObject)null, ((CardEffect)this).player, false, true, true);
		}
		else if (num < 30)
		{
			Renderer[] componentsInChildren = ((Component)((CardEffect)this).player).gameObject.GetComponentsInChildren<Renderer>();
			Renderer[] array = componentsInChildren;
			foreach (Renderer val in array)
			{
				Material[] materials = val.materials;
				foreach (Material val2 in materials)
				{
					val2.EnableKeyword("_EMISSION");
					val2.SetColor("_EmissionColor", Color.black * 4f);
				}
			}
		}
		else if (num < 40)
		{
			CharacterStatModifiers characterStats = ((CardEffect)this).characterStats;
			characterStats.movementSpeed *= 1.5f;
		}
		else if (num < 50)
		{
			CharacterStatModifiers characterStats2 = ((CardEffect)this).characterStats;
			characterStats2.movementSpeed *= 0.8f;
		}
		else if (num < 60)
		{
			((CardEffect)this).gravity.gravityForce = -0.1f;
		}
		else if (num < 70)
		{
			((CardEffect)this).gun.gravity = -100f;
		}
		else if (num < 80)
		{
			CharacterStatModifiers characterStats3 = ((CardEffect)this).characterStats;
			characterStats3.jump *= 1.4f;
		}
		else if (num < 90)
		{
			CharacterStatModifiers characterStats4 = ((CardEffect)this).characterStats;
			characterStats4.sizeMultiplier *= 1.8f;
		}
		else
		{
			CharacterStatModifiers characterStats5 = ((CardEffect)this).characterStats;
			characterStats5.sizeMultiplier *= 0.3f;
		}
	}
}
public class HeavyBullet : SimpleCard
{
	public override CardDetails Details
	{
		get
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Expected O, but got Unknown
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0079: Expected O, but got Unknown
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: 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_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Expected O, but got Unknown
			CardDetails val = new CardDetails();
			val.Title = "Super Heavy Bullet";
			val.Description = "当てればいいじゃん";
			val.ModName = "NQV4PRO";
			val.Rarity = (Rarity)1;
			val.Theme = (CardThemeColorType)6;
			val.Art = Assets.HeavyBullet_Art;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					amount = "+400%",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "damage"
				},
				new CardInfoStat
				{
					amount = "+1000%",
					positive = false,
					simepleAmount = (SimpleAmount)0,
					stat = "弾に加わる重力"
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: Unknown result type (might be due to invalid IL or missing references)
		gun.gravity = 10f;
		gun.projectileColor = new Color(0.3f, 0.3f, 0.3f, 1f);
	}

	protected override void Added(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		gun.damage *= 4f;
	}

	protected override void Removed(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		Debug.Log("[MySimpleCard] カードがプレイヤーから削除されました");
	}
}
public class Kirby : SimpleCard
{
	public override CardDetails Details
	{
		get
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Expected O, but got Unknown
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0079: Expected O, but got Unknown
			CardDetails val = new CardDetails();
			val.Title = "Demon of Pink";
			val.Description = "カーb...";
			val.ModName = "NQV4PRO";
			val.Rarity = (Rarity)0;
			val.Theme = (CardThemeColorType)8;
			val.Art = Assets.Kirby_Art;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					amount = "+999",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "jump"
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
		statModifiers.numberOfJumps = 999;
	}

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

	protected override void Removed(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		Debug.Log("[MySimpleCard] カードがプレイヤーから削除されました");
	}
}
public class PhantomReload : CustomEffectCard<PhantomReloadEffect>
{
	public override CardDetails<PhantomReloadEffect> Details
	{
		get
		{
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0079: Expected O, but got Unknown
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: 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_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Expected O, but got Unknown
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: 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_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Expected O, but got Unknown
			CardDetails<PhantomReloadEffect> val = new CardDetails<PhantomReloadEffect>();
			val.Title = "Phantom Reload";
			val.Description = "リロード時以下を入手";
			val.ModName = "NQV4PRO";
			val.Rarity = (Rarity)1;
			val.Theme = (CardThemeColorType)2;
			val.Art = Assets.PhantomReload_Art;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[3]
			{
				new CardInfoStat
				{
					amount = "1/0.2s",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "自動回復"
				},
				new CardInfoStat
				{
					amount = "+100%",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "移動速度"
				},
				new CardInfoStat
				{
					amount = "部分",
					positive = false,
					simepleAmount = (SimpleAmount)0,
					stat = "透明化"
				}
			};
			return val;
		}
	}
}
public class PhantomReloadEffect : CardEffect
{
	private Renderer[] renderers;

	private HealthHandler healthHandler;

	public override void OnOutOfAmmo(int bulletsReloaded)
	{
		renderers = ((Component)((CardEffect)this).player).gameObject.GetComponentsInChildren<Renderer>();
		Renderer[] array = renderers;
		foreach (Renderer val in array)
		{
			val.enabled = false;
		}
		((Component)((CardEffect)this).player).gameObject.AddComponent<PhantomReloadMono>();
		ExtensionMethods.ExecuteAfterSeconds((MonoBehaviour)(object)((CardEffect)this).player, ((CardEffect)this).gun.reloadTime * (float)((CardEffect)this).gunAmmo.maxAmmo, (Action)delegate
		{
			renderers = ((Component)((CardEffect)this).player).gameObject.GetComponentsInChildren<Renderer>();
			Renderer[] array2 = renderers;
			foreach (Renderer val2 in array2)
			{
				val2.enabled = true;
			}
			PhantomReloadMono component = ((Component)((CardEffect)this).player).gameObject.GetComponent<PhantomReloadMono>();
			if ((Object)(object)component != (Object)null)
			{
				Object.Destroy((Object)(object)component);
			}
		});
	}

	public override void OnRevive()
	{
		renderers = ((Component)((CardEffect)this).player).gameObject.GetComponentsInChildren<Renderer>();
		Renderer[] array = renderers;
		foreach (Renderer val in array)
		{
			val.enabled = true;
		}
		PhantomReloadMono component = ((Component)((CardEffect)this).player).gameObject.GetComponent<PhantomReloadMono>();
		if ((Object)(object)component != (Object)null)
		{
			Object.Destroy((Object)(object)component);
		}
	}
}
public class PhantomReloadMono : MonoBehaviour
{
	private Renderer[] renderers;

	private float originalMovementSpeed;

	private HealthHandler healthHandler;

	private CharacterStatModifiers characterStats;

	public float healAmountPerSecond = 1f;

	public float healInterval = 0.2f;

	private Player player;

	private void Start()
	{
		player = ((Component)this).GetComponent<Player>();
		healthHandler = ((Component)this).GetComponent<HealthHandler>();
		characterStats = ((Component)this).GetComponent<CharacterStatModifiers>();
		if ((Object)(object)characterStats != (Object)null)
		{
			originalMovementSpeed = characterStats.movementSpeed;
			CharacterStatModifiers obj = characterStats;
			obj.movementSpeed *= 2f;
		}
		((MonoBehaviour)this).InvokeRepeating("HealOverTime", 0f, healInterval);
	}

	private void HealOverTime()
	{
		if ((Object)(object)healthHandler != (Object)null)
		{
			healthHandler.Heal(healAmountPerSecond);
		}
	}

	private void OnDestroy()
	{
		if ((Object)(object)characterStats != (Object)null)
		{
			characterStats.movementSpeed = originalMovementSpeed;
		}
		renderers = ((Component)player).gameObject.GetComponentsInChildren<Renderer>();
		Renderer[] array = renderers;
		foreach (Renderer val in array)
		{
			val.enabled = true;
		}
		((MonoBehaviour)this).CancelInvoke("HealOverTime");
		PhantomReloadMono component = ((Component)player).gameObject.GetComponent<PhantomReloadMono>();
		if ((Object)(object)component != (Object)null)
		{
			Object.Destroy((Object)(object)component);
		}
	}
}
public class Sample_Effect : CustomEffectCard<MyEffect>
{
	public override CardDetails<MyEffect> Details
	{
		get
		{
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: 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_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Expected O, but got Unknown
			CardDetails<MyEffect> val = new CardDetails<MyEffect>();
			val.Title = "MyEffectCard";
			val.Description = "特定の行動で効果を発動";
			val.ModName = "NQV4PRO";
			val.Rarity = (Rarity)2;
			val.Theme = (CardThemeColorType)3;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					amount = "+100%",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "movement speed"
				}
			};
			return val;
		}
	}
}
public class MyEffect : CardEffect
{
	public override void OnBlock(BlockTriggerType trigger)
	{
		Debug.Log("[MyEffect] プレイヤーがブロックしました!");
	}

	public override void OnShoot(GameObject projectile)
	{
		Debug.Log("[MyEffect] プレイヤーが発射しました!");
	}
}
public class Sample_normal : SimpleCard
{
	public override CardDetails Details
	{
		get
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Expected O, but got Unknown
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: 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_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Expected O, but got Unknown
			CardDetails val = new CardDetails();
			val.Title = "MySimpleCard";
			val.Description = "example";
			val.ModName = "NQV4PRO";
			val.Rarity = (Rarity)0;
			val.Theme = (CardThemeColorType)3;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					amount = "+100%",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "movement speed"
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
	}

	protected override void Added(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		Debug.Log("[MySimpleCard] カードがプレイヤーに追加されました");
	}

	protected override void Removed(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		Debug.Log("[MySimpleCard] カードがプレイヤーから削除されました");
	}
}
public class ShadowMan : CustomEffectCard<ShadowBuff>
{
	public override CardDetails<ShadowBuff> Details
	{
		get
		{
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0079: Expected O, but got Unknown
			CardDetails<ShadowBuff> val = new CardDetails<ShadowBuff>();
			val.Title = "Shadow Man";
			val.Description = "ブロック発動時、マウスカーソルの方向に高速移動します。";
			val.ModName = "NQV4PRO";
			val.Rarity = (Rarity)1;
			val.Theme = (CardThemeColorType)8;
			val.Art = Assets.ShadowMan_Art;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					amount = "+2s",
					positive = false,
					simepleAmount = (SimpleAmount)0,
					stat = "防御クールダウン"
				}
			};
			return val;
		}
	}

	protected override void Added(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		block.cooldown += 2f;
	}
}
public class ShadowBuff : CardEffect
{
	public override void OnBlock(BlockTriggerType trigger)
	{
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_000b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0010: Unknown result type (might be due to invalid IL or missing references)
		//IL_001c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		Vector3 val = Camera.main.ScreenToWorldPoint(Input.mousePosition);
		((Component)((CardEffect)this).player).transform.position = val;
		Debug.Log($"Teleported to mouse position: {val}");
	}
}
public class ShieldMaster : SimpleCard
{
	public override CardDetails Details
	{
		get
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Expected O, but got Unknown
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0079: Expected O, but got Unknown
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: 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_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Expected O, but got Unknown
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: 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_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Expected O, but got Unknown
			CardDetails val = new CardDetails();
			val.Title = "Epic Shield Master";
			val.Description = "もう銃なんて必要ないね!";
			val.ModName = "NQV4PRO";
			val.Rarity = (Rarity)1;
			val.Theme = (CardThemeColorType)2;
			val.Art = Assets.ShieldMaster_Art;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[3]
			{
				new CardInfoStat
				{
					amount = "-90%",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "防御クールダウン"
				},
				new CardInfoStat
				{
					amount = "+20%",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "移動速度"
				},
				new CardInfoStat
				{
					amount = "没収",
					positive = false,
					simepleAmount = (SimpleAmount)0,
					stat = "銃"
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
	}

	protected override void Added(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		block.cooldown *= 0.1f;
		characterStats.movementSpeed *= 1.2f;
		gun.ammoReg = 0f;
		((Behaviour)gun).enabled = false;
	}

	protected override void Removed(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		Debug.Log("[MySimpleCard] カードがプレイヤーから削除されました");
	}
}
public class Shining : SimpleCard
{
	public override CardDetails Details
	{
		get
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Expected O, but got Unknown
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0079: Expected O, but got Unknown
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: 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_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Expected O, but got Unknown
			CardDetails val = new CardDetails();
			val.Title = "You Are Shining";
			val.Description = "まぶしすぎる!だけだと弱すぎたので体力と攻撃力を1.2345倍にしました。目に優しい明るさになったし色もかっこいい赤にしたぞ!";
			val.ModName = "NQV4PRO";
			val.Rarity = (Rarity)1;
			val.Theme = (CardThemeColorType)4;
			val.Art = Assets.Shining_Art;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[2]
			{
				new CardInfoStat
				{
					amount = "1.2345倍",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "輝き"
				},
				new CardInfoStat
				{
					amount = "1.2345倍",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "ダメージとか体力"
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
	}

	protected override void Added(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		//IL_006c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0076: Unknown result type (might be due to invalid IL or missing references)
		CharacterData data2 = player.data;
		data2.maxHealth *= 1.2345f;
		gun.damage *= 1.2345f;
		Renderer[] componentsInChildren = ((Component)player).gameObject.GetComponentsInChildren<Renderer>();
		Renderer[] array = componentsInChildren;
		foreach (Renderer val in array)
		{
			Material[] materials = val.materials;
			foreach (Material val2 in materials)
			{
				val2.EnableKeyword("_EMISSION");
				val2.SetColor("_EmissionColor", Color.red * 4f);
			}
		}
	}

	protected override void Removed(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
	}
}
public class Sonic : SimpleCard
{
	public override CardDetails Details
	{
		get
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Expected O, but got Unknown
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0079: Expected O, but got Unknown
			CardDetails val = new CardDetails();
			val.Title = "blue hedgehog";
			val.Description = "fast and fast";
			val.ModName = "NQV4PRO";
			val.Rarity = (Rarity)0;
			val.Theme = (CardThemeColorType)2;
			val.Art = Assets.Sonic_Art;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					amount = "+100%",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "movement speed"
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
	}

	protected override void Added(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		characterStats.movementSpeed *= 2f;
	}

	protected override void Removed(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
	}
}
public class TimeConductor : CustomEffectCard<TimeEffect>
{
	public override CardDetails<TimeEffect> Details
	{
		get
		{
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0079: Expected O, but got Unknown
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: 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_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Expected O, but got Unknown
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: 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_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Expected O, but got Unknown
			CardDetails<TimeEffect> val = new CardDetails<TimeEffect>();
			val.Title = "Time Conductor";
			val.Description = "ブロックすると、体力と位置を5秒前に戻す";
			val.ModName = "NQV4PRO";
			val.Rarity = (Rarity)1;
			val.Theme = (CardThemeColorType)3;
			val.Art = Assets.TimeConductor_Art;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[3]
			{
				new CardInfoStat
				{
					amount = "+100%",
					positive = false,
					simepleAmount = (SimpleAmount)0,
					stat = "Block クールダウン"
				},
				new CardInfoStat
				{
					amount = "-25%",
					positive = false,
					simepleAmount = (SimpleAmount)0,
					stat = "体力"
				},
				new CardInfoStat
				{
					amount = "+50%",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "移動速度"
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
	}

	protected override void Added(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		CharacterData data2 = player.data;
		data2.maxHealth *= 0.75f;
		block.cooldown *= 2f;
		CharacterStatModifiers statModifiers = ((CustomCard)this).statModifiers;
		statModifiers.movementSpeed *= 1.5f;
		TimeRewindTracker component = ((Component)player).gameObject.GetComponent<TimeRewindTracker>();
		if ((Object)(object)component == (Object)null)
		{
			component = ((Component)player).gameObject.AddComponent<TimeRewindTracker>();
		}
	}

	protected override void Removed(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
	}
}
public class TimeEffect : CardEffect
{
	public override void OnBlock(BlockTriggerType blockTriggerType)
	{
		TimeRewindTracker component = ((Component)((CardEffect)this).player).GetComponent<TimeRewindTracker>();
		component.Rewind();
	}
}
public class TimeRewindTracker : MonoBehaviour
{
	public struct Snapshot
	{
		public Vector3 position;

		public float health;

		public float timestamp;
	}

	[CompilerGenerated]
	private sealed class <RewindCoroutine>d__11 : IEnumerator<object>, IEnumerator, IDisposable
	{
		private int <>1__state;

		private object <>2__current;

		public TimeRewindTracker <>4__this;

		private List<Snapshot> <rewindHistory>5__1;

		private int <rewindFrames>5__2;

		private float <currentHealth>5__3;

		private int <i>5__4;

		private Snapshot <snap>5__5;

		object IEnumerator<object>.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		object IEnumerator.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		[DebuggerHidden]
		public <RewindCoroutine>d__11(int <>1__state)
		{
			this.<>1__state = <>1__state;
		}

		[DebuggerHidden]
		void IDisposable.Dispose()
		{
			<rewindHistory>5__1 = null;
			<>1__state = -2;
		}

		private bool MoveNext()
		{
			//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
			switch (<>1__state)
			{
			default:
				return false;
			case 0:
				<>1__state = -1;
				<>4__this.isRewinding = true;
				<rewindHistory>5__1 = new List<Snapshot>(<>4__this.history);
				<rewindFrames>5__2 = Mathf.Min(50, <rewindHistory>5__1.Count);
				Debug.Log($"[TimeConductor] {<rewindFrames>5__2} フレーム巻き戻し開始");
				<i>5__4 = <rewindFrames>5__2 - 1;
				break;
			case 1:
				<>1__state = -1;
				<i>5__4--;
				break;
			}
			if (<i>5__4 >= 0)
			{
				<snap>5__5 = <rewindHistory>5__1[<i>5__4];
				((Component)<>4__this).transform.position = <snap>5__5.position;
				<>2__current = null;
				<>1__state = 1;
				return true;
			}
			<currentHealth>5__3 = <>4__this.player.data.health;
			<>4__this.healthHandler.Heal(<rewindHistory>5__1[0].health - <currentHealth>5__3);
			Debug.Log("[TimeConductor] プレイヤーを巻き戻しました(コピー履歴使用)!");
			<>4__this.isRewinding = false;
			return false;
		}

		bool IEnumerator.MoveNext()
		{
			//ILSpy generated this explicit interface implementation from .override directive in MoveNext
			return this.MoveNext();
		}

		[DebuggerHidden]
		void IEnumerator.Reset()
		{
			throw new NotSupportedException();
		}
	}

	private List<Snapshot> history = new List<Snapshot>();

	private HealthHandler healthHandler;

	private CharacterStatModifiers characterStatModifiers;

	private Player player;

	private float recordInterval = 0.1f;

	private float recordTimer = 0f;

	private bool isRewinding = false;

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

	private void Update()
	{
		//IL_003f: 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)
		recordTimer += Time.deltaTime;
		if (recordTimer >= recordInterval)
		{
			history.Add(new Snapshot
			{
				position = ((Component)this).transform.position,
				health = player.data.health,
				timestamp = Time.time
			});
			recordTimer = 0f;
		}
		if (history.Count > 60)
		{
			history.RemoveAt(0);
		}
	}

	public void Rewind()
	{
		if (!isRewinding && history.Count >= 5)
		{
			((MonoBehaviour)this).StartCoroutine(RewindCoroutine());
		}
	}

	[IteratorStateMachine(typeof(<RewindCoroutine>d__11))]
	private IEnumerator RewindCoroutine()
	{
		//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
		return new <RewindCoroutine>d__11(0)
		{
			<>4__this = this
		};
	}
}
public class Uniformrectilinearmotion : SimpleCard
{
	public override CardDetails Details
	{
		get
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Expected O, but got Unknown
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0079: Expected O, but got Unknown
			CardDetails val = new CardDetails();
			val.Title = "Uniform rectilinear motion";
			val.Description = "弾は直進します";
			val.ModName = "NQV4PRO";
			val.Rarity = (Rarity)0;
			val.Theme = (CardThemeColorType)6;
			val.Art = Assets.Uniformrectilinearmotion_Art;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					amount = "+50%",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "damage"
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
		gun.gravity = 0f;
		gun.damage *= 1.5f;
	}

	protected override void Added(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		Debug.Log("[MySimpleCard] カードがプレイヤーに追加されました");
	}

	protected override void Removed(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		Debug.Log("[MySimpleCard] カードがプレイヤーから削除されました");
	}
}
public class ZeroGravity : SimpleCard
{
	public override CardDetails Details
	{
		get
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Expected O, but got Unknown
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0079: Expected O, but got Unknown
			CardDetails val = new CardDetails();
			val.Title = "0 グラビティ";
			val.Description = "あなたにかかる重力はとても低いです";
			val.ModName = "NQV4PRO";
			val.Rarity = (Rarity)0;
			val.Theme = (CardThemeColorType)3;
			val.Art = Assets.ZeroGravity_Art;
			val.Stats = (CardInfoStat[])(object)new CardInfoStat[1]
			{
				new CardInfoStat
				{
					amount = "0.1",
					positive = true,
					simepleAmount = (SimpleAmount)0,
					stat = "Gravity"
				}
			};
			return val;
		}
	}

	public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block)
	{
		statModifiers.gravity = -1f;
	}

	protected override void Added(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		gravity.gravityForce = -0.1f;
	}

	protected override void Removed(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats)
	{
		Debug.Log("[MySimpleCard] カードがプレイヤーから削除されました");
	}
}
public class CursorShootB : CardEffect
{
	public override void OnShoot(GameObject projectile)
	{
		//IL_000b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0010: Unknown result type (might be due to invalid IL or missing references)
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		Vector3 position = MainCam.instance.cam.ScreenToWorldPoint(Input.mousePosition);
		position.z = 0f;
		projectile.transform.position = position;
	}
}
public class MouseShooting : MonoBehaviour
{
	public GameObject bulletPrefab;

	public float bulletSpeed = 10f;

	private const string ShootEvent = "MouseShooting_ShootBullet";

	private Player player;

	private void Start()
	{
		//IL_0019: Unknown result type (might be due to invalid IL or missing references)
		//IL_0023: Expected O, but got Unknown
		player = ((Component)this).GetComponent<Player>();
		NetworkingManager.RegisterEvent("MouseShooting_ShootBullet", (PhotonEvent)delegate(object[] data)
		{
			//IL_0004: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: 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)
			Vector3 spawnPosition = (Vector3)data[0];
			Vector2 direction = (Vector2)data[1];
			float speed = (float)data[2];
			SpawnBullet(spawnPosition, direction, speed);
		});
	}

	private void Update()
	{
		//IL_0041: 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_004c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0052: Unknown result type (might be due to invalid IL or missing references)
		//IL_0063: Unknown result type (might be due to invalid IL or missing references)
		//IL_0068: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0077: Unknown result type (might be due to invalid IL or missing references)
		//IL_007c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0083: Unknown result type (might be due to invalid IL or missing references)
		//IL_0088: Unknown result type (might be due to invalid IL or missing references)
		//IL_0089: Unknown result type (might be due to invalid IL or missing references)
		//IL_008e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0092: Unknown result type (might be due to invalid IL or missing references)
		//IL_0097: Unknown result type (might be due to invalid IL or missing references)
		//IL_009c: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
		if (!((Object)(object)player == (Object)null) && player.data.view.IsMine && Input.GetMouseButtonDown(0))
		{
			Vector3 mousePosition = Input.mousePosition;
			Vector3 val = Camera.main.ScreenToWorldPoint(new Vector3(mousePosition.x, mousePosition.y, Camera.main.WorldToScreenPoint(((Component)this).transform.position).z));
			Vector3 val2 = ((Component)this).transform.position - val;
			Vector2 val3 = Vector2.op_Implicit(((Vector3)(ref val2)).normalized);
			NetworkingManager.RaiseEvent("MouseShooting_ShootBullet", new object[3] { val, val3, bulletSpeed });
		}
	}

	private void SpawnBullet(Vector3 spawnPosition, Vector2 direction, float speed)
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_0008: Unknown result type (might be due to invalid IL or missing references)
		//IL_0013: 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_003c: 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_005d: Unknown result type (might be due to invalid IL or missing references)
		GameObject val = Object.Instantiate<GameObject>(bulletPrefab, spawnPosition, Quaternion.identity);
		float num = Mathf.Atan2(direction.y, direction.x) * 57.29578f;
		val.transform.rotation = Quaternion.Euler(0f, 0f, num);
		Rigidbody2D component = val.GetComponent<Rigidbody2D>();
		if ((Object)(object)component != (Object)null)
		{
			component.velocity = direction * speed;
		}
	}
}
public class AbyssRoundHandler : MonoBehaviour
{
	[CompilerGenerated]
	private sealed class <PointEnd>d__1 : IEnumerator<object>, IEnumerator, IDisposable
	{
		private int <>1__state;

		private object <>2__current;

		public IGameModeHandler gm;

		public AbyssRoundHandler <>4__this;

		object IEnumerator<object>.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		object IEnumerator.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		[DebuggerHidden]
		public <PointEnd>d__1(int <>1__state)
		{
			this.<>1__state = <>1__state;
		}

		[DebuggerHidden]
		void IDisposable.Dispose()
		{
			<>1__state = -2;
		}

		private bool MoveNext()
		{
			if (<>1__state != 0)
			{
				return false;
			}
			<>1__state = -1;
			Debug.Log("[AbyssRoundHandler] PointEnd 発火しました");
			<>4__this.CleanAbyssEffects();
			return false;
		}

		bool IEnumerator.MoveNext()
		{
			//ILSpy generated this explicit interface implementation from .override directive in MoveNext
			return this.MoveNext();
		}

		[DebuggerHidden]
		void IEnumerator.Reset()
		{
			throw new NotSupportedException();
		}
	}

	[CompilerGenerated]
	private sealed class <RoundEnd>d__2 : IEnumerator<object>, IEnumerator, IDisposable
	{
		private int <>1__state;

		private object <>2__current;

		public IGameModeHandler gm;

		public AbyssRoundHandler <>4__this;

		object IEnumerator<object>.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		object IEnumerator.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		[DebuggerHidden]
		public <RoundEnd>d__2(int <>1__state)
		{
			this.<>1__state = <>1__state;
		}

		[DebuggerHidden]
		void IDisposable.Dispose()
		{
			<>1__state = -2;
		}

		private bool MoveNext()
		{
			if (<>1__state != 0)
			{
				return false;
			}
			<>1__state = -1;
			Debug.Log("[AbyssRoundHandler] RoundEnd 発火しました");
			<>4__this.CleanAbyssEffects();
			return false;
		}

		bool IEnumerator.MoveNext()
		{
			//ILSpy generated this explicit interface implementation from .override directive in MoveNext
			return this.MoveNext();
		}

		[DebuggerHidden]
		void IEnumerator.Reset()
		{
			throw new NotSupportedException();
		}
	}

	private void Awake()
	{
		GameModeManager.AddHook("RoundEnd", (Func<IGameModeHandler, IEnumerator>)RoundEnd);
		GameModeManager.AddHook("PointEnd", (Func<IGameModeHandler, IEnumerator>)PointEnd);
	}

	[IteratorStateMachine(typeof(<PointEnd>d__1))]
	private IEnumerator PointEnd(IGameModeHandler gm)
	{
		//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
		return new <PointEnd>d__1(0)
		{
			<>4__this = this,
			gm = gm
		};
	}

	[IteratorStateMachine(typeof(<RoundEnd>d__2))]
	private IEnumerator RoundEnd(IGameModeHandler gm)
	{
		//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
		return new <RoundEnd>d__2(0)
		{
			<>4__this = this,
			gm = gm
		};
	}

	private void CleanAbyssEffects()
	{
		foreach (Player player in PlayerManager.instance.players)
		{
			AbyssGravity component = ((Component)player).GetComponent<AbyssGravity>();
			if ((Object)(object)component != (Object)null)
			{
				component.RestoreGravity();
				Object.Destroy((Object)(object)component);
				Debug.Log($"[AbyssRoundHandler] {player.playerID} の AbyssGravity を削除しました");
			}
		}
	}
}
namespace NQV4Pro
{
	public class ActiveSkillManager : MonoBehaviour
	{
		[CompilerGenerated]
		private sealed class <ActivateSkill>d__21 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public ActiveSkillManager <>4__this;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <ActivateSkill>d__21(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					Debug.Log($"[Skill] Player {<>4__this.player.playerID} activated skill!");
					<>4__this.skillCharges--;
					<>4__this.IsSkillActive = true;
					<>2__current = ((MonoBehaviour)<>4__this).StartCoroutine(<>4__this.SkillEffect());
					<>1__state = 1;
					return true;
				case 1:
					<>1__state = -1;
					<>4__this.IsSkillActive = false;
					Debug.Log($"[Skill] Skill finished. Charges remaining: {<>4__this.skillCharges}");
					return false;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <DoHeal>d__24 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public ActiveSkillManager <>4__this;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <DoHeal>d__24(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				if (<>1__state != 0)
				{
					return false;
				}
				<>1__state = -1;
				<>4__this.health.Heal(1000f);
				return false;
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <OnPointEnd>d__20 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public IGameModeHandler gm;

			public ActiveSkillManager <>4__this;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <OnPointEnd>d__20(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				if (<>1__state != 0)
				{
					return false;
				}
				<>1__state = -1;
				return false;
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <OnPointStart>d__19 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public IGameModeHandler gm;

			public ActiveSkillManager <>4__this;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <OnPointStart>d__19(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				if (<>1__state != 0)
				{
					return false;
				}
				<>1__state = -1;
				<>4__this.skillCharges = 1;
				Debug.Log($"[Skill] Player {<>4__this.player.playerID} skill charge restored!");
				return false;
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <SpeedBurstEffect>d__22 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public ActiveSkillManager <>4__this;

			private float <duration>5__1;

			private float <speedMultiplier>5__2;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <SpeedBurstEffect>d__22(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_0065: Unknown result type (might be due to invalid IL or missing references)
				//IL_006f: Expected O, but got Unknown
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
				{
					<>1__state = -1;
					<duration>5__1 = 3f;
					<speedMultiplier>5__2 = 3f;
					CharacterStatModifiers stats2 = <>4__this.stats;
					stats2.movementSpeed *= <speedMultiplier>5__2;
					Debug.Log("[Skill] Speed Burst active! Speed x3.");
					<>2__current = (object)new WaitForSeconds(<duration>5__1);
					<>1__state = 1;
					return true;
				}
				case 1:
				{
					<>1__state = -1;
					CharacterStatModifiers stats = <>4__this.stats;
					stats.movementSpeed /= <speedMultiplier>5__2;
					Debug.Log("[Skill] Speed Burst ended. Speed back to normal.");
					return false;
				}
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <StoneEffect>d__23 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public ActiveSkillManager <>4__this;

			private float <duration>5__1;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <StoneEffect>d__23(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0074: Expected O, but got Unknown
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
				{
					<>1__state = -1;
					<duration>5__1 = 2f;
					CharacterStatModifiers stats2 = <>4__this.stats;
					stats2.movementSpeed *= 0.1f;
					Gun gun2 = <>4__this.gun;
					gun2.damage *= 3f;
					<>2__current = (object)new WaitForSeconds(<duration>5__1);
					<>1__state = 1;
					return true;
				}
				case 1:
				{
					<>1__state = -1;
					CharacterStatModifiers stats = <>4__this.stats;
					stats.movementSpeed *= 10f;
					Gun gun = <>4__this.gun;
					gun.damage /= 3f;
					Debug.Log("[Skill] Speed Burst ended. Speed back to normal.");
					return false;
				}
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		private int skillCharges = 1;

		private KeyCode[] skillKeys;

		private Player player;

		private CharacterStatModifiers stats;

		private Gun gun;

		private HealthHandler health;

		public Func<IEnumerator> SkillEffect { get; set; } = null;


		public bool IsSkillActive { get; private set; } = false;


		public int SkillCharges => skillCharges;

		private void Awake()
		{
			player = ((Component)this).GetComponent<Player>();
			stats = ((Component)player).GetComponent<CharacterStatModifiers>();
			health = ((Component)player).GetComponent<HealthHandler>();
			GameModeManager.AddHook("PointStart", (Func<IGameModeHandler, IEnumerator>)OnPointStart);
			GameModeManager.AddHook("PointEnd", (Func<IGameModeHandler, IEnumerator>)OnPointEnd);
		}

		private void OnDestroy()
		{
			GameModeManager.RemoveHook("PointStart", (Func<IGameModeHandler, IEnumerator>)OnPointStart);
			GameModeManager.RemoveHook("PointEnd", (Func<IGameModeHandler, IEnumerator>)OnPointEnd);
		}

		private void Update()
		{
			//IL_0032: 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)
			if (SkillEffect == null || skillCharges <= 0 || IsSkillActive)
			{
				return;
			}
			KeyCode[] array = skillKeys;
			foreach (KeyCode val in array)
			{
				if (Input.GetKeyDown(val))
				{
					((MonoBehaviour)this).StartCoroutine(ActivateSkill());
					break;
				}
			}
		}

		[IteratorStateMachine(typeof(<OnPointStart>d__19))]
		private IEnumerator OnPointStart(IGameModeHandler gm)
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <OnPointStart>d__19(0)
			{
				<>4__this = this,
				gm = gm
			};
		}

		[IteratorStateMachine(typeof(<OnPointEnd>d__20))]
		private IEnumerator OnPointEnd(IGameModeHandler gm)
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <OnPointEnd>d__20(0)
			{
				<>4__this = this,
				gm = gm
			};
		}

		[IteratorStateMachine(typeof(<ActivateSkill>d__21))]
		private IEnumerator ActivateSkill()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <ActivateSkill>d__21(0)
			{
				<>4__this = this
			};
		}

		[IteratorStateMachine(typeof(<SpeedBurstEffect>d__22))]
		public IEnumerator SpeedBurstEffect()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <SpeedBurstEffect>d__22(0)
			{
				<>4__this = this
			};
		}

		[IteratorStateMachine(typeof(<StoneEffect>d__23))]
		public IEnumerator StoneEffect()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <StoneEffect>d__23(0)
			{
				<>4__this = this
			};
		}

		[IteratorStateMachine(typeof(<DoHeal>d__24))]
		public IEnumerator DoHeal()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <DoHeal>d__24(0)
			{
				<>4__this = this
			};
		}

		public ActiveSkillManager()
		{
			KeyCode[] array = new KeyCode[4];
			RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
			skillKeys = (KeyCode[])(object)array;
			((MonoBehaviour)this)..ctor();
		}
	}
	internal class Assets
	{
		private static readonly AssetBundle Bundle = AssetUtils.LoadAssetBundleFromResources("nqv4pro", typeof(NQV4Pro).Assembly);

		public static GameObject AbyssCard_Art = Bundle.LoadAsset<GameObject>("C_AbyssCard");

		public static GameObject ChaosShoot_Art = Bundle.LoadAsset<GameObject>("C_ChaosShoot");

		public static GameObject Contract_of_Blood_Art = Bundle.LoadAsset<GameObject>("C_Contract_of_Blood");

		public static GameObject FinalBullet_Art = Bundle.LoadAsset<GameObject>("C_FinalBullet");

		public static GameObject Gambling_Art = Bundle.LoadAsset<GameObject>("C_Gambling");

		public static GameObject HeavyBullet_Art = Bundle.LoadAsset<GameObject>("C_HeavyBullet");

		public static GameObject Kirby_Art = Bundle.LoadAsset<GameObject>("C_Kirby");

		public static GameObject PhantomReload_Art = Bundle.LoadAsset<GameObject>("C_PhantomReload");

		public static GameObject ShadowMan_Art = Bundle.LoadAsset<GameObject>("C_ShieldMaster");

		public static GameObject ShieldMaster_Art = Bundle.LoadAsset<GameObject>("C_ShadowMan");

		public static GameObject Shining_Art = Bundle.LoadAsset<GameObject>("C_Shining");

		public static GameObject Sonic_Art = Bundle.LoadAsset<GameObject>("C_Sonic");

		public static GameObject TimeConductor_Art = Bundle.LoadAsset<GameObject>("C_TimeConductor");

		public static GameObject Uniformrectilinearmotion_Art = Bundle.LoadAsset<GameObject>("C_Uniformrectilinearmotion");

		public static GameObject ZeroGravity_Art = Bundle.LoadAsset<GameObject>("C_ZeroGravity");
	}
	public class CloneConfusionEffect : MonoBehaviour
	{
		private Player player;

		private Gun gun;

		private void Start()
		{
			player = ((Component)this).GetComponent<Player>();
			gun = ((Component)((Component)player).GetComponent<Holding>().holdable).GetComponent<Gun>();
			if ((Object)(object)gun != (Object)null)
			{
				Gun obj = gun;
				obj.ShootPojectileAction = (Action<GameObject>)Delegate.Combine(obj.ShootPojectileAction, new Action<GameObject>(OnShoot));
			}
		}

		private void OnDestroy()
		{
			if ((Object)(object)gun != (Object)null)
			{
				Gun obj = gun;
				obj.ShootPojectileAction = (Action<GameObject>)Delegate.Remove(obj.ShootPojectileAction, new Action<GameObject>(OnShoot));
			}
		}

		private void OnShoot(GameObject projectile)
		{
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			if (PhotonNetwork.IsMasterClient)
			{
				Vector3 val = ((Component)player).transform.position + new Vector3(Random.Range(-2f, 2f), 0f, 0f);
				GameObject val2 = PhotonNetwork.Instantiate("CloneDummy", val, Quaternion.identity, (byte)0, (object[])null);
				CopyAppearance(player, val2);
				CloneDummyMover cloneDummyMover = val2.AddComponent<CloneDummyMover>();
				cloneDummyMover.Init();
			}
		}

		private void CopyAppearance(Player player, GameObject clone)
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			Renderer[] componentsInChildren = ((Component)player).GetComponentsInChildren<Renderer>();
			Renderer[] componentsInChildren2 = clone.GetComponentsInChildren<Renderer>();
			for (int i = 0; i < Mathf.Min(componentsInChildren.Length, componentsInChildren2.Length); i++)
			{
				componentsInChildren2[i].material.color = componentsInChildren[i].material.color;
			}
		}
	}
	public class CloneDummyMover : MonoBehaviour
	{
		[CompilerGenerated]
		private sealed class <LifeCycle>d__6 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public CloneDummyMover <>4__this;

			private float <t>5__1;

			private float <alpha>5__2;

			private Renderer[] <>s__3;

			private int <>s__4;

			private Renderer <r>5__5;

			private Color <c>5__6;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <LifeCycle>d__6(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>s__3 = null;
				<r>5__5 = null;
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_0046: Unknown result type (might be due to invalid IL or missing references)
				//IL_0050: Expected O, but got Unknown
				//IL_0113: Unknown result type (might be due to invalid IL or missing references)
				//IL_0118: Unknown result type (might be due to invalid IL or missing references)
				//IL_013a: Unknown result type (might be due to invalid IL or missing references)
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					<>2__current = (object)new WaitForSeconds(<>4__this.lifetime - <>4__this.fadeTime);
					<>1__state = 1;
					return true;
				case 1:
					<>1__state = -1;
					<t>5__1 = 0f;
					break;
				case 2:
					<>1__state = -1;
					break;
				}
				if (<t>5__1 < <>4__this.fadeTime)
				{
					<t>5__1 += Time.deltaTime;
					<alpha>5__2 = Mathf.Lerp(1f, 0f, <t>5__1 / <>4__this.fadeTime);
					<>s__3 = <>4__this.renderers;
					for (<>s__4 = 0; <>s__4 < <>s__3.Length; <>s__4++)
					{
						<r>5__5 = <>s__3[<>s__4];
						if ((Object)(object)<r>5__5 != (Object)null && <r>5__5.material.HasProperty("_Color"))
						{
							<c>5__6 = <r>5__5.material.color;
							<c>5__6.a = <alpha>5__2;
							<r>5__5.material.color = <c>5__6;
						}
						<r>5__5 = null;
					}
					<>s__3 = null;
					<>2__current = null;
					<>1__state = 2;
					return true;
				}
				if (PhotonNetwork.IsMasterClient)
				{
					PhotonNetwork.Destroy(((Component)<>4__this).gameObject);
				}
				return false;
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		private Vector3 moveDir;

		private float lifetime = 2.5f;

		private float fadeTime = 0.8f;

		private Renderer[] renderers;

		public void Init()
		{
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			moveDir = new Vector3(Random.Range(-1f, 1f), Random.Range(-0.5f, 0.5f), 0f);
			renderers = ((Component)this).GetComponentsInChildren<Renderer>();
			((MonoBehaviour)this).StartCoroutine(LifeCycle());
		}

		private void Update()
		{
			//IL_0008: 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_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			Transform transform = ((Component)this).transform;
			transform.position += moveDir * Time.deltaTime * 2f;
		}

		[IteratorStateMachine(typeof(<LifeCycle>d__6))]
		private IEnumerator LifeCycle()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <LifeCycle>d__6(0)
			{
				<>4__this = this
			};
		}
	}
	public class Contract_of_Blood_Effect : MonoBehaviour
	{
		public float damageAmount = 10f;

		public float damageInterval = 1f;

		private HealthHandler healthHandler;

		private void Start()
		{
			healthHandler = ((Component)this).GetComponent<HealthHandler>();
			if ((Object)(object)healthHandler != (Object)null)
			{
				((MonoBehaviour)this).InvokeRepeating("ApplySelfDamage", damageInterval, damageInterval);
			}
			else
			{
				Debug.LogError("HealthHandler not found on " + ((Object)((Component)this).gameObject).name);
			}
		}

		private void ApplySelfDamage()
		{
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: 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)
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)healthHandler != (Object)null)
			{
				Vector2 val = default(Vector2);
				((Vector2)(ref val))..ctor(damageAmount, 0f);
				Vector2 val2 = default(Vector2);
				((Vector2)(ref val2))..ctor(((Component)this).transform.position.x, ((Component)this).transform.position.y);
				healthHandler.DoDamage(val, val2, Color.black, ((Component)this).gameObject, ((Component)this).GetComponent<Player>(), false, true, true);
				Debug.Log("Self-damage applied to: " + ((Object)((Component)this).gameObject).name);
			}
		}
	}
	public class FirstPickRoleHandler : MonoBehaviour
	{
		private Player player;

		public RoleType CurrentRole { get; private set; } = RoleType.None;


		public bool HasRole => CurrentRole != RoleType.None;

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

		public bool SetRole(RoleType role)
		{
			if (HasRole)
			{
				Debug.LogWarning($"[Role] Player {player.playerID} already has role: {CurrentRole}");
				return false;
			}
			CurrentRole = role;
			Debug.Log($"[Role] Player {player.playerID} selected role: {role}");
			return true;
		}

		public string GetRoleName()
		{
			return CurrentRole switch
			{
				RoleType.Tank => "タンク", 
				RoleType.Berserker => "バーサーカー", 
				RoleType.Support => "サポート", 
				RoleType.Sniper => "スナイパー", 
				RoleType.Assassin => "アサシン", 
				_ => "なし", 
			};
		}

		public string GetRoleDescription()
		{
			return CurrentRole switch
			{
				RoleType.Tank => "高HP・高防御の前衛職", 
				RoleType.Berserker => "高火力・低防御の攻撃特化職", 
				RoleType.Support => "味方を強化するサポート職", 
				RoleType.Sniper => "遠距離攻撃特化職", 
				RoleType.Assassin => "高機動・高クリティカル職", 
				_ => "ロール未選択", 
			};
		}
	}
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("com.NQV4.rounds.nqv4mod", "NQV4Pro", "0.0.0")]
	[BepInProcess("Rounds.exe")]
	public class NQV4Pro : BaseUnityPlugin
	{
		private const string ModId = "com.NQV4.rounds.nqv4mod";

		private const string ModName = "NQV4Pro";

		public const string Version = "0.0.0";

		private void Awake()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Expected O, but got Unknown
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Expected O, but got Unknown
			Harmony val = new Harmony("com.NQV4.rounds.nqv4mod");
			val.PatchAll();
			GameObject val2 = new GameObject("RolePickerManager");
			val2.AddComponent<RolePickerManager>();
			Object.DontDestroyOnLoad((Object)(object)val2);
		}

		private void Start()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Expected O, but got Unknown
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Expected O, but got Unknown
			GameObject val = new GameObject("FirstPickRoleHandler");
			Object.DontDestroyOnLoad((Object)(object)val);
			val.AddComponent<FirstPickRoleHandler>();
			GameObject val2 = new GameObject("AbyssRoundHandler");
			Object.DontDestroyOnLoad((Object)(object)val2);
			val2.AddComponent<AbyssRoundHandler>();
			CustomCard.BuildCard<Sonic>((Action<CardInfo>)delegate(CardInfo c)
			{
				ExtensionMethods.SetAbbreviation(c, "S");
			});
			CustomCard.BuildCard<Kirby>((Action<CardInfo>)delegate(CardInfo c)
			{
				ExtensionMethods.SetAbbreviation(c, "K");
			});
			CustomCard.BuildCard<Contract_of_Blood>((Action<CardInfo>)delegate(CardInfo c)
			{
				ExtensionMethods.SetAbbreviation(c, "CB");
			});
			CustomCard.BuildCard<ShieldMaster>((Action<CardInfo>)delegate(CardInfo c)
			{
				ExtensionMethods.SetAbbreviation(c, "SM");
			});
			CustomCard.BuildCard<ShadowMan>((Action<CardInfo>)delegate(CardInfo c)
			{
				ExtensionMethods.SetAbbreviation(c, "SM");
			});
			CustomCard.BuildCard<PhantomReload>((Action<CardInfo>)delegate(CardInfo c)
			{
				ExtensionMethods.SetAbbreviation(c, "PR");
			});
			CustomCard.BuildCard<Uniformrectilinearmotion>((Action<CardInfo>)delegate(CardInfo c)
			{
				ExtensionMethods.SetAbbreviation(c, "U");
			});
			CustomCard.BuildCard<HeavyBullet>((Action<CardInfo>)delegate(CardInfo c)
			{
				ExtensionMethods.SetAbbreviation(c, "HB");
			});
			CustomCard.BuildCard<ChaosShoot>((Action<CardInfo>)delegate(CardInfo c)
			{
				ExtensionMethods.SetAbbreviation(c, "CS");
			});
			CustomCard.BuildCard<Gambling>((Action<CardInfo>)delegate(CardInfo c)
			{
				ExtensionMethods.SetAbbreviation(c, "G");
			});
			CustomCard.BuildCard<AbyssCard>((Action<CardInfo>)delegate(CardInfo c)
			{
				ExtensionMethods.SetAbbreviation(c, "AC");
			});
			CustomCard.BuildCard<Shining>((Action<CardInfo>)delegate(CardInfo c)
			{
				ExtensionMethods.SetAbbreviation(c, "S");
			});
			CustomCard.BuildCard<TimeConductor>((Action<CardInfo>)delegate(CardInfo c)
			{
				ExtensionMethods.SetAbbreviation(c, "S");
			});
			CustomCard.BuildCard<FinalBullet>((Action<CardInfo>)delegate(CardInfo c)
			{
				ExtensionMethods.SetAbbreviation(c, "FB");
			});
			CustomCard.BuildCard<ZeroGravity>((Action<CardInfo>)delegate(CardInfo c)
			{
				ExtensionMethods.SetAbbreviation(c, "ZG");
			});
		}
	}
	public enum RoleType
	{
		None,
		Tank,
		Berserker,
		Support,
		Sniper,
		Assassin
	}
	public class RoleManager : MonoBehaviour
	{
		private Player player;

		public RoleType CurrentRole { get; private set; } = RoleType.None;


		public bool HasRole => CurrentRole != RoleType.None;

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

		public bool SetRole(RoleType role)
		{
			if (HasRole)
			{
				Debug.LogWarning($"[Role] Player {player.playerID} already has role: {CurrentRole}");
				return false;
			}
			CurrentRole = role;
			Debug.Log($"[Role] Player {player.playerID} selected role: {role}");
			return true;
		}

		public string GetRoleName()
		{
			return CurrentRole switch
			{
				RoleType.Tank => "タンク", 
				RoleType.Berserker => "バーサーカー", 
				RoleType.Support => "サポート", 
				RoleType.Sniper => "スナイパー", 
				RoleType.Assassin => "アサシン", 
				_ => "なし", 
			};
		}

		public string GetRoleDescription()
		{
			return CurrentRole switch
			{
				RoleType.Tank => "高HP・高防御の前衛職", 
				RoleType.Berserker => "高火力・低防御の攻撃特化職", 
				RoleType.Support => "味方を強化するサポート職", 
				RoleType.Sniper => "遠距離攻撃特化職", 
				RoleType.Assassin => "高機動・高クリティカル職", 
				_ => "ロール未選択", 
			};
		}
	}
	public class RolePickerManager : MonoBehaviour
	{
		[CompilerGenerated]
		private sealed class <OnGameStart>d__7 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public IGameModeHandler gm;

			public RolePickerManager <>4__this;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <OnGameStart>d__7(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				if (<>1__state != 0)
				{
					return false;
				}
				<>1__state = -1;
				RoleSelectionComplete = false;
				Debug.Log("[Role Picker] Game started. Role selection reset.");
				return false;
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <OnPickStart>d__8 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public IGameModeHandler gm;

			public RolePickerManager <>4__this;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <OnPickStart>d__8(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_003e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0048: Expected O, but got Unknown
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					if (!RoleSelectionComplete)
					{
						Debug.Log("[Role Picker] First pick phase - Role selection required!");
						<>2__current = (object)new WaitForSeconds(0.5f);
						<>1__state = 1;
						return true;
					}
					break;
				case 1:
					<>1__state = -1;
					break;
				}
				return false;
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		private static RolePickerManager instance;

		public static bool RoleSelectionComplete { get; private set; }

		private void Awake()
		{
			if ((Object)(object)instance == (Object)null)
			{
				instance = this;
				Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject);
				GameModeManager.AddHook("GameStart", (Func<IGameModeHandler, IEnumerator>)OnGameStart);
				GameModeManager.AddHook("PickStart", (Func<IGameModeHandler, IEnumerator>)OnPickStart);
			}
			else
			{
				Object.Destroy((Object)(object)((Component)this).gameObject);
			}
		}

		private void OnDestroy()
		{
			GameModeManager.RemoveHook("GameStart", (Func<IGameModeHandler, IEnumerator>)OnGameStart);
			GameModeManager.RemoveHook("PickStart", (Func<IGameModeHandler, IEnumerator>)OnPickStart);
		}

		[IteratorStateMachine(typeof(<OnGameStart>d__7))]
		private IEnumerator OnGameStart(IGameModeHandler gm)
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <OnGameStart>d__7(0)
			{
				<>4__this = this,
				gm = gm
			};
		}

		[IteratorStateMachine(typeof(<OnPickStart>d__8))]
		private IEnumerator OnPickStart(IGameModeHandler gm)
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <OnPickStart>d__8(0)
			{
				<>4__this = this,
				gm = gm
			};
		}

		public static bool AllPlayersHaveRoles()
		{
			List<Player> players = PlayerManager.instance.players;
			foreach (Player item in players)
			{
				RoleManager component = ((Component)item).GetComponent<RoleManager>();
				if ((Object)(object)component == (Object)null || !component.HasRole)
				{
					return false;
				}
			}
			return true;
		}

		public static void CompleteRoleSelection()
		{
			RoleSelectionComplete = true;
			Debug.Log("[Role Picker] All players have selected roles. Normal card selection begins.");
		}

		public static bool CanSelectRoleCard(Player player)
		{
			if (RoleSelectionComplete)
			{
				return false;
			}
			RoleManager component = ((Component)player).GetComponent<RoleManager>();
			if ((Object)(object)component != (Object)null && component.HasRole)
			{
				return false;
			}
			return true;
		}
	}
}
namespace NQV4Pro.Cards
{
	public class Active_Heal : SimpleCard
	{
		public override CardDetails Details
		{
			get
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				//IL_0006: Expected O, but got Unknown
				//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_005b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0062: Unknown result type (might be due to invalid IL or missing references)
				//IL_006e: Expected O, but got Unknown
				//IL_0070: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_0080: Unknown result type (might be due to invalid IL or missing references)
				//IL_0087: Unknown result type (might be due to invalid IL or missing references)
				//IL_0093: Expected O, but got Unknown
				CardDetails val = new CardDetails();
				val.Title = "A-即時回復";
				val.Description = "回復薬(大)";
				val.ModName = "NQV4-Active";
				val.Rarity = (Rarity)2;
				val.Theme = (CardThemeColorType)3;
				val.Art = null;
				val.Stats = (CardInfoStat[])(object)new CardInfoStat[2]
				{
					new CardInfoStat
					{
						amount = "ア