Decompiled source of KijinSeija v0.2.1

KijinSeijaMod_windows.dll

Decompiled a month ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text.RegularExpressions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using Cysharp.Threading.Tasks;
using HarmonyLib;
using KijinSeijaMod.BattleActions;
using KijinSeijaMod.Cards;
using KijinSeijaMod.Cards.Template;
using KijinSeijaMod.Config;
using KijinSeijaMod.Enemies;
using KijinSeijaMod.Enemies.Template;
using KijinSeijaMod.GunName;
using KijinSeijaMod.ImageLoader;
using KijinSeijaMod.Localization;
using KijinSeijaMod.Patches;
using KijinSeijaMod.StatusEffects;
using LBoL.Base;
using LBoL.Base.Extensions;
using LBoL.ConfigData;
using LBoL.Core;
using LBoL.Core.Battle;
using LBoL.Core.Battle.BattleActions;
using LBoL.Core.Battle.Interactions;
using LBoL.Core.Cards;
using LBoL.Core.Dialogs;
using LBoL.Core.Intentions;
using LBoL.Core.Randoms;
using LBoL.Core.Stations;
using LBoL.Core.StatusEffects;
using LBoL.Core.Units;
using LBoL.EntityLib.Cards;
using LBoL.EntityLib.Exhibits;
using LBoL.EntityLib.StatusEffects.Basic;
using LBoL.EntityLib.StatusEffects.Cirno;
using LBoL.EntityLib.StatusEffects.Enemy;
using LBoL.EntityLib.StatusEffects.ExtraTurn;
using LBoL.EntityLib.StatusEffects.Koishi;
using LBoL.EntityLib.StatusEffects.Neutral.Black;
using LBoL.EntityLib.StatusEffects.Neutral.TwoColor;
using LBoL.EntityLib.StatusEffects.Others;
using LBoL.EntityLib.StatusEffects.Sakuya;
using LBoL.Presentation;
using LBoL.Presentation.UI.Panels;
using LBoL.Presentation.UI.Widgets;
using LBoL.Presentation.Units;
using LBoLEntitySideloader;
using LBoLEntitySideloader.Attributes;
using LBoLEntitySideloader.Entities;
using LBoLEntitySideloader.Resource;
using LBoLEntitySideloader.Utils;
using Microsoft.CodeAnalysis;
using TMPro;
using UnityEngine;
using UnityEngine.Experimental.Rendering;
using UnityEngine.UI;
using YamlDotNet.Serialization;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = "")]
[assembly: IgnoresAccessChecksTo("LBoL.Base")]
[assembly: IgnoresAccessChecksTo("LBoL.ConfigData")]
[assembly: IgnoresAccessChecksTo("LBoL.Core")]
[assembly: IgnoresAccessChecksTo("LBoL.EntityLib")]
[assembly: IgnoresAccessChecksTo("LBoL.Presentation")]
[assembly: IgnoresAccessChecksTo("Untitled.ConfigDataBuilder.Base")]
[assembly: AssemblyCompany("KijinSeijaMod_windows")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("KijinSeijaMod_windows")]
[assembly: AssemblyTitle("KijinSeijaMod_windows")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace KijinSeijaMod
{
	[BepInPlugin("author.game.typeofmod.KijinSeija", "KijinSeijaMod", "0.2.1")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInProcess("LBoL.exe")]
	public class BepinexPlugin : BaseUnityPlugin
	{
		public static string modUniqueID = "KijinSeijaMod";

		public static string playerName = "KijinSeija";

		public static bool useInGameModel = false;

		public static string modelName = "KijinSeija";

		public static bool modelIsFlipped = true;

		public static List<ManaColor> offColors = new List<ManaColor> { (ManaColor)6 };

		public static ConfigEntry<bool> enableAct1Boss;

		public static CustomConfigEntry<bool> enableAct1BossEntry = new CustomConfigEntry<bool>(value: false, "EnableAct1Boss", "EnableAct1Boss", "Toggle the Act 1 boss. Default: Off");

		private static readonly Harmony harmony = PInfo.harmony;

		internal static ManualLogSource log;

		internal static BatchLocalization unitModelLoc = new BatchLocalization((IResourceSource)(object)directorySource, typeof(UnitModelTemplate), false);

		internal static TemplateSequenceTable sequenceTable = new TemplateSequenceTable(0);

		internal static BatchLocalization exhibitLoc = new BatchLocalization((IResourceSource)(object)directorySource, typeof(ExhibitTemplate), false);

		internal static IResourceSource embeddedSource = (IResourceSource)new EmbeddedSource(Assembly.GetExecutingAssembly());

		internal static DirectorySource directorySource = new DirectorySource("author.game.typeofmod.KijinSeija", "");

		public static ConfigEntry<string> KijinSeijaRecords;

		private static object KijinSeija()
		{
			throw new NotImplementedException();
		}

		private void Awake()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Expected O, but got Unknown
			Harmony val = new Harmony(modUniqueID);
			val.PatchAll();
			log = ((BaseUnityPlugin)this).Logger;
			enableAct1Boss = ((BaseUnityPlugin)this).Config.Bind<bool>(enableAct1BossEntry.Section, enableAct1BossEntry.Key, enableAct1BossEntry.Value, enableAct1BossEntry.Description);
			Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject);
			((Object)((Component)this).gameObject).hideFlags = (HideFlags)61;
			CardIndexGenerator.PromiseClearIndexSet();
			EntityManager.RegisterSelf();
			KijinSeijaRecords = ((BaseUnityPlugin)this).Config.Bind<string>("Records", "Records", "", "May cause an error if edited manually.");
			Func<Sprite> func = () => ResourceLoader.LoadSprite("BossIcon.png", (IResourceSource)(object)directorySource, (Rect?)null, 1, (Vector2?)null);
			EnemyUnitTemplate.AddBossNodeIcon("KijinSeijaSagume", func, (Assembly)null);
		}

		private void OnDestroy()
		{
			if (harmony != null)
			{
				harmony.UnpatchSelf();
			}
		}
	}
	public static class PInfo
	{
		public const string GUID = "author.game.typeofmod.KijinSeija";

		public const string Name = "KijinSeijaMod";

		public const string version = "0.2.1";

		public static readonly Harmony harmony = new Harmony("author.game.typeofmod.KijinSeija");
	}
	public class KijinSeijaLoadouts
	{
		public static string UltimateSkillA = "KijinSeijaUltA";

		public static string UltimateSkillB = "KijinSeijaUltB";

		public static string ExhibitA = "KijinSeijaExhibitA";

		public static string ExhibitB = "KijinSeijaExhibitB";

		public static List<string> DeckA = new List<string>
		{
			"Shoot", "Shoot", "Boundary", "Boundary", "KijinSeijaAttackR", "KijinSeijaAttackR", "KijinSeijaBlockU", "KijinSeijaBlockU", "KijinSeijaAccurateAttack", "KijinSeijaEscape",
			"Zhukeling"
		};

		public static List<string> DeckB = new List<string>
		{
			"Shoot", "Shoot", "Boundary", "Boundary", "KijinSeijaAttackW", "KijinSeijaAttackW", "KijinSeijaBlockB", "KijinSeijaBlockB", "KijinSeijaGraze", "KijinSeijaEscape",
			"Zhukeling"
		};

		public static PlayerUnitConfig playerUnitConfig;

		static KijinSeijaLoadouts()
		{
			//IL_015b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e6: Expected O, but got Unknown
			string modUniqueID = BepinexPlugin.modUniqueID;
			int? num = 10;
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).White = 0;
			((ManaGroup)(ref val)).Blue = 0;
			((ManaGroup)(ref val)).Black = 1;
			((ManaGroup)(ref val)).Red = 1;
			((ManaGroup)(ref val)).Green = 0;
			((ManaGroup)(ref val)).Colorless = 2;
			((ManaGroup)(ref val)).Philosophy = 0;
			ManaGroup val2 = val;
			playerUnitConfig = new PlayerUnitConfig(modUniqueID, true, "", 0, 8, num, true, (int?)null, (ManaColor)7, (ManaColor)6, val2, "#ff0000ff", 24, 999, 99, UltimateSkillA, UltimateSkillB, ExhibitA, ExhibitB, (IReadOnlyList<string>)DeckA, (IReadOnlyList<string>)DeckB, 3, 2);
		}
	}
	public sealed class KijinSeijaModDef : PlayerUnitTemplate
	{
		[EntityLogic(typeof(KijinSeijaModDef))]
		public sealed class KijinSeijaMod : PlayerUnit
		{
			public class KijinSeijaTextForcer : MonoBehaviour
			{
				public string adventureId = "Debut";

				private bool _loaded = false;

				private List<(string target, string replacement)> _titleReps = new List<(string, string)>();

				private List<(string target, string replacement)> _npcReps = new List<(string, string)>();

				private void Update()
				{
					if (!SeijaRunTracker.IsSeijaRun)
					{
						return;
					}
					if (!CustomEventTextManager.IsLoaded)
					{
						CustomEventTextManager.LoadAllCustomYamls();
					}
					if (!_loaded && CustomEventTextManager.IsLoaded)
					{
						_titleReps.Clear();
						_npcReps.Clear();
						foreach (Dictionary<string, string> value5 in CustomEventTextManager.MasterTextDict.Values)
						{
							if (value5.TryGetValue("TargetTitle_" + adventureId, out var value) && value5.TryGetValue("Title_" + adventureId, out var value2))
							{
								_titleReps.Add((value.Trim(), value2.Trim()));
							}
							if (value5.TryGetValue("TargetNPC_" + adventureId, out var value3))
							{
								string value4 = null;
								if (!value5.TryGetValue("NPC_" + adventureId, out value4))
								{
									value5.TryGetValue("HostName_" + adventureId, out value4);
								}
								if (!string.IsNullOrEmpty(value4))
								{
									_npcReps.Add((value3.Trim(), value4.Trim()));
								}
							}
						}
						_loaded = true;
					}
					if (!_loaded || (_titleReps.Count == 0 && _npcReps.Count == 0))
					{
						return;
					}
					TextMeshProUGUI[] array = Object.FindObjectsOfType<TextMeshProUGUI>();
					foreach (TextMeshProUGUI val in array)
					{
						if (string.IsNullOrWhiteSpace(((TMP_Text)val).text))
						{
							continue;
						}
						string text = Regex.Replace(((TMP_Text)val).text, "<.*?>", string.Empty).Replace("\ufeff", "").Trim();
						foreach (var titleRep in _titleReps)
						{
							if (text == titleRep.target)
							{
								((TMP_Text)val).text = ((TMP_Text)val).text.Replace(titleRep.target, titleRep.replacement);
							}
						}
						foreach (var npcRep in _npcReps)
						{
							if (text == npcRep.target)
							{
								((TMP_Text)val).text = ((TMP_Text)val).text.Replace(npcRep.target, npcRep.replacement);
							}
						}
					}
				}
			}

			[HarmonyPatch(typeof(GameRunController), "EnterMapNode")]
			public class EnterMapNode_Patch
			{
				[Obsolete]
				private static void Prefix(GameRunController __instance, MapNode node)
				{
					//IL_0002: Unknown result type (might be due to invalid IL or missing references)
					//IL_0008: Invalid comparison between Unknown and I4
					//IL_0099: 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_00b2: Unknown result type (might be due to invalid IL or missing references)
					if ((int)node.StationType != 5)
					{
						return;
					}
					UnitView val = null;
					UnitView[] array = Object.FindObjectsOfType<UnitView>();
					UnitView[] array2 = array;
					foreach (UnitView val2 in array2)
					{
						if ((object)val2.Unit == __instance.Player)
						{
							val = val2;
							break;
						}
					}
					if ((Object)(object)val != (Object)null && __instance.Player is KijinSeijaMod mod)
					{
						GameObject val3 = Object.Instantiate<GameObject>(((Component)val).gameObject);
						val3.transform.position = ((Component)val).transform.position + new Vector3(6.6f, 0.6f, 0f);
						Renderer[] componentsInChildren = val3.GetComponentsInChildren<Renderer>();
						foreach (Renderer val4 in componentsInChildren)
						{
							val4.enabled = false;
						}
						UnitView component = val3.GetComponent<UnitView>();
						if ((Object)(object)component != (Object)null)
						{
							((MonoBehaviour)component).StartCoroutine(LoopShopDialogue(component, val, mod, __instance.CurrentStage.Level, node.X));
						}
						Object.Destroy((Object)(object)val3, 60f);
					}
				}

				private static IEnumerator LoopShopDialogue(UnitView boss, UnitView player, KijinSeijaMod mod, int currentLevel, int nodeX)
				{
					yield return (object)new WaitForSeconds(4.5f);
					bool isFinalAct = currentLevel == 4 && nodeX == 1;
					bool isFirstEncounter = currentLevel == 1 && nodeX == 1;
					if (isFinalAct)
					{
						boss.Chat(mod.shop6, 4f, (CloudType)2, 0f);
						yield return (object)new WaitForSeconds(4.5f);
						player.Chat(mod.shop7, 4f, (CloudType)2, 0f);
						yield return (object)new WaitForSeconds(4.5f);
						player.Chat(mod.shop8, 4f, (CloudType)2, 0f);
						yield return (object)new WaitForSeconds(4.5f);
						boss.Chat(mod.shop9, 4f, (CloudType)2, 0f);
						yield return (object)new WaitForSeconds(4.5f);
						boss.Chat(mod.shop10, 4f, (CloudType)2, 0f);
						yield return (object)new WaitForSeconds(4.5f);
					}
					else if (isFirstEncounter)
					{
						player.Chat(mod.shop1, 3f, (CloudType)2, 0f);
						yield return (object)new WaitForSeconds(3.5f);
						boss.Chat(mod.shop2, 4f, (CloudType)2, 0f);
						yield return (object)new WaitForSeconds(4.5f);
						player.Chat(mod.shop3, 4f, (CloudType)2, 0f);
						yield return (object)new WaitForSeconds(4.5f);
						boss.Chat(mod.shop4, 4f, (CloudType)2, 0f);
						yield return (object)new WaitForSeconds(4.5f);
						boss.Chat(mod.shop45, 4f, (CloudType)2, 0f);
						yield return (object)new WaitForSeconds(4.5f);
						player.Chat(mod.shop5, 4f, (CloudType)2, 0f);
						yield return (object)new WaitForSeconds(4.5f);
						boss.Chat(mod.shop52, 4f, (CloudType)2, 0f);
						yield return (object)new WaitForSeconds(4.5f);
					}
				}
			}

			public bool DialogueTriggered = false;

			private float Multiplier => 0.8f;

			public string shop1 => ((GameEntity)this).LocalizeProperty("shop1", false, true);

			public string shop2 => ((GameEntity)this).LocalizeProperty("shop2", false, true);

			public string shop3 => ((GameEntity)this).LocalizeProperty("shop3", false, true);

			public string shop4 => ((GameEntity)this).LocalizeProperty("shop4", false, true);

			public string shop45 => ((GameEntity)this).LocalizeProperty("shop45", false, true);

			public string shop5 => ((GameEntity)this).LocalizeProperty("shop5", false, true);

			public string shop52 => ((GameEntity)this).LocalizeProperty("shop52", false, true);

			public string shop6 => ((GameEntity)this).LocalizeProperty("shop6", false, true);

			public string shop7 => ((GameEntity)this).LocalizeProperty("shop7", false, true);

			public string shop8 => ((GameEntity)this).LocalizeProperty("shop8", false, true);

			public string shop9 => ((GameEntity)this).LocalizeProperty("shop9", false, true);

			public string shop10 => ((GameEntity)this).LocalizeProperty("shop10", false, true);

			public string FJ1 => ((GameEntity)this).LocalizeProperty("FJ1", false, true);

			public bool Blackout { get; private set; }

			public string LocShortcut(string key, bool decorated, bool required)
			{
				return ((GameEntity)this).LocalizeProperty(key, decorated, required);
			}

			protected override void OnEnterGameRun(GameRunController gameRun)
			{
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005f: Expected O, but got Unknown
				//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
				//IL_0106: Unknown result type (might be due to invalid IL or missing references)
				//IL_015b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0161: Expected O, but got Unknown
				GameRunController gameRun2 = ((GameEntity)this).GameRun;
				gameRun2.ShopPriceMultiplier *= Multiplier;
				((GameEntity)this).GameRun.TrueEndingProviders.Add((GameEntity)(object)this);
				bool flag = gameRun.CurrentMap == null;
				GameObject shinObj = new GameObject("Shinmyoumaru_Debut");
				Object.DontDestroyOnLoad((Object)(object)shinObj);
				if (flag)
				{
					SpriteRenderer val = shinObj.AddComponent<SpriteRenderer>();
					val.sprite = ResourceLoader.LoadSprite("KijinSeijaShinmyoumaru.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 84, (Vector2?)null);
					((Renderer)val).sortingLayerName = "Default";
					((Renderer)val).sortingOrder = 50;
					shinObj.transform.position = new Vector3(5.4f, 0f, 0f);
					shinObj.transform.localScale = new Vector3(-1f, 1f, 1f);
				}
				else
				{
					Debug.Log((object)"不是全新开局");
				}
				KijinSeijaTextForcer kijinSeijaTextForcer = shinObj.AddComponent<KijinSeijaTextForcer>();
				kijinSeijaTextForcer.adventureId = "Debut";
				((Unit)this).HandleGameRunEvent<StationEventArgs>(((GameEntity)this).GameRun.StationFinished, (GameEventHandler<StationEventArgs>)delegate
				{
					if ((Object)(object)shinObj != (Object)null)
					{
						Object.Destroy((Object)(object)shinObj);
					}
				});
				GameObject val2 = new GameObject("ShinDebutHandler");
				Object.DontDestroyOnLoad((Object)(object)val2);
				ShinmyoumaruDebutHandler shinmyoumaruDebutHandler = val2.AddComponent<ShinmyoumaruDebutHandler>();
				shinmyoumaruDebutHandler.gameRun = gameRun;
				((Unit)this).HandleGameRunEvent<StationEventArgs>(((GameEntity)this).GameRun.StationEntered, (GameEventHandler<StationEventArgs>)delegate(StationEventArgs args)
				{
					//IL_0007: Unknown result type (might be due to invalid IL or missing references)
					//IL_000d: Invalid comparison between Unknown and I4
					if ((int)args.Station.Type == 4)
					{
						((GameEntity)this).GameRun.LoseMoney(200);
					}
					if (gameRun.CurrentStage.Level == 1)
					{
						GameMap currentMap = gameRun.CurrentMap;
						if (currentMap != null)
						{
							int num = 1;
							for (int i = 0; i < currentMap.Width; i++)
							{
								MapNode val3 = currentMap.Nodes[num, i];
								if (val3 != null)
								{
									val3.StationType = (StationType)5;
								}
							}
						}
					}
				});
			}

			protected override void OnEnterBattle(BattleController battle)
			{
				DialogueTriggered = false;
			}
		}

		public UniTask<Sprite>? LoadSpellPortraitAsync { get; private set; }

		public override IdContainer GetId()
		{
			//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_000e: Unknown result type (might be due to invalid IL or missing references)
			return IdContainer.op_Implicit(BepinexPlugin.modUniqueID);
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)KijinSeijaLocalization.PlayerUnitBatchLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override PlayerImages LoadPlayerImages()
		{
			return KijinSeijaImageLoader.LoadPlayerImages(BepinexPlugin.playerName);
		}

		public override PlayerUnitConfig MakeConfig()
		{
			return KijinSeijaLoadouts.playerUnitConfig;
		}
	}
}
namespace KijinSeijaMod.KijinSeijaUlt
{
	public sealed class KijinSeijaUltADef : KijinSeijaUltTemplate
	{
		public override UltimateSkillConfig MakeConfig()
		{
			UltimateSkillConfig defaulUltConfig = GetDefaulUltConfig();
			defaulUltConfig.Damage = 30;
			defaulUltConfig.PowerCost = 100;
			return defaulUltConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaUltADef))]
	public sealed class KijinSeijaUltA : UltimateSkill
	{
		private string LastType { get; set; }

		public KijinSeijaUltA()
		{
			((UltimateSkill)this).TargetType = (TargetType)1;
		}

		private string GetGunName(int gunIndex)
		{
			string text = LastType + gunIndex;
			if (GunConfig.FromName(text) != null)
			{
				return text;
			}
			return "SingleJiandaoSe" + gunIndex;
		}

		protected override IEnumerable<BattleAction> Actions(UnitSelector selector)
		{
			EnemyUnit enemy = selector.GetEnemy(((UltimateSkill)this).Battle);
			PlayerUnit player = ((UltimateSkill)this).Battle.Player;
			yield return (BattleAction)(object)PerformAction.Spell((Unit)(object)((UltimateSkill)this).Battle.Player, "天壤梦弓的诏敕");
			yield return (BattleAction)(object)PerformAction.Animation((Unit)(object)((UltimateSkill)this).Battle.Player, "spell", 1f, (string)null, 0f, -1);
			yield return (BattleAction)new DamageAction((Unit)(object)((UltimateSkill)this).Battle.Player, (Unit)(object)enemy, DamageInfo.Reaction((float)player.Us.MaxPowerLevel * 30f, false), GetGunName(1), (GunType)0);
		}
	}
	public sealed class KijinSeijaUltBDef : KijinSeijaUltTemplate
	{
		public override UltimateSkillConfig MakeConfig()
		{
			UltimateSkillConfig defaulUltConfig = GetDefaulUltConfig();
			defaulUltConfig.Damage = 18;
			return defaulUltConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaUltBDef))]
	public sealed class KijinSeijaUltB : UltimateSkill
	{
		private string LastType { get; set; }

		public KijinSeijaUltB()
		{
			((UltimateSkill)this).TargetType = (TargetType)2;
		}

		protected override IEnumerable<BattleAction> Actions(UnitSelector selector)
		{
			int Value18 = ((Unit)((UltimateSkill)this).Battle.Player).StatusEffects.Where((StatusEffect se) => (int)se.Type == 1).Count();
			yield return (BattleAction)(object)PerformAction.Spell((Unit)(object)((UltimateSkill)this).Battle.Player, "天下翻覆");
			yield return (BattleAction)(object)PerformAction.Animation((Unit)(object)((UltimateSkill)this).Battle.Player, "spell", 1f, (string)null, 0f, -1);
			foreach (EnemyUnit enemy in ((UltimateSkill)this).Battle.AllAliveEnemies)
			{
				if (((Unit)enemy).IsAlive && !((UltimateSkill)this).Battle.BattleShouldEnd)
				{
					for (int Value19 = 0; Value19 < Value18 + 1; Value19++)
					{
						yield return (BattleAction)new DamageAction((Unit)(object)((UltimateSkill)this).Owner, (IEnumerable<Unit>)((UltimateSkill)this).Battle.AllAliveEnemies, ((UltimateSkill)this).Damage, "Guiren1", (GunType)0);
					}
					yield return (BattleAction)new RemoveAllNegativeStatusEffectAction((Unit)(object)((UltimateSkill)this).Battle.Player, 0.2f);
					yield break;
				}
			}
		}
	}
	public class KijinSeijaUltTemplate : UltimateSkillTemplate
	{
		public override IdContainer GetId()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			return IdContainer.op_Implicit(KijinSeijaDefaultConfig.DefaultID((EntityDefinition)(object)this));
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)KijinSeijaLocalization.UltimateSkillsBatchLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override Sprite LoadSprite()
		{
			return KijinSeijaImageLoader.LoadUltLoader((UltimateSkillTemplate)(object)this);
		}

		public override UltimateSkillConfig MakeConfig()
		{
			throw new NotImplementedException();
		}

		public UltimateSkillConfig GetDefaulUltConfig()
		{
			return KijinSeijaDefaultConfig.DefaultUltConfig();
		}
	}
}
namespace KijinSeijaMod.StatusEffects
{
	public sealed class AccuracyModule1Def : KijinSeijaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = KijinSeijaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "Spirit" };
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(AccuracyModule1Def))]
	public sealed class AccuracyModule1 : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).HandleOwnerEvent<DamageDealingEventArgs>(((StatusEffect)this).Owner.DamageDealing, (GameEventHandler<DamageDealingEventArgs>)OnDamageDealing);
		}

		private void OnDamageDealing(DamageDealingEventArgs args)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			DamageInfo damageInfo = args.DamageInfo;
			((DamageInfo)(ref damageInfo)).IsAccuracy = true;
			args.DamageInfo = damageInfo;
			((GameEventArgs)args).AddModifier((GameEntity)(object)this);
		}
	}
	public sealed class KijinSeijaEnhanceSeDef : KijinSeijaStatusEffectTemplate
	{
		public override Sprite LoadSprite()
		{
			return null;
		}
	}
	[EntityLogic(typeof(KijinSeijaEnhanceSeDef))]
	public sealed class KijinSeijaEnhanceSe : StatusEffect
	{
	}
	public sealed class KijinSeijaBoomSeDef : KijinSeijaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = KijinSeijaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "Spirit" };
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaBoomSeDef))]
	public sealed class KijinSeijaBoomSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnStarted);
		}

		private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args)
		{
			yield return (BattleAction)new DamageAction(((StatusEffect)this).Owner, (IEnumerable<Unit>)((StatusEffect)this).Battle.EnemyGroup.Alives, DamageInfo.Reaction(40f, false), "ExhTNT", (GunType)0);
			yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
		}
	}
	public sealed class KijinSeijaBorrowedBlade1Def : KijinSeijaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = KijinSeijaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "Spirit" };
			defaultStatusEffectConfig.Type = (StatusEffectType)0;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaBorrowedBlade1Def))]
	public sealed class KijinSeijaBorrowedBlade1 : StatusEffect
	{
		private Queue<ReflectDamage> ReflectDamages { get; set; } = new Queue<ReflectDamage>();

		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).HandleOwnerEvent<DamageEventArgs>(((Unit)((StatusEffect)this).Battle.Player).DamageTaking, (GameEventHandler<DamageEventArgs>)OnPlayerDamageTaking);
			((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(((Unit)((StatusEffect)this).Battle.Player).DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnPlayerDamageReceived);
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnStarted);
		}

		private void OnPlayerDamageTaking(DamageEventArgs args)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Expected O, but got Unknown
			DamageInfo damageInfo = args.DamageInfo;
			int num = MathExtensions.RoundToInt(((DamageInfo)(ref damageInfo)).Damage);
			if (num >= 1)
			{
				((StatusEffect)this).NotifyActivating();
				args.DamageInfo = ((DamageInfo)(ref damageInfo)).ReduceActualDamageBy(num);
				((GameEventArgs)args).AddModifier((GameEntity)(object)this);
				Unit source = args.Source;
				if (source is EnemyUnit && source.IsAlive)
				{
					ReflectDamages.Enqueue(new ReflectDamage(args.Source, num));
				}
			}
		}

		private IEnumerable<BattleAction> OnPlayerDamageReceived(DamageEventArgs args)
		{
			while (ReflectDamages.Count > 0)
			{
				ReflectDamage reflectDamage = ReflectDamages.Dequeue();
				EnemyUnit target = ((StatusEffect)this).Battle.RandomAliveEnemy;
				if (reflectDamage.Target.IsAlive)
				{
					yield return (BattleAction)new DamageAction((Unit)(object)((StatusEffect)this).Battle.Player, (Unit)(object)target, DamageInfo.Reaction((float)reflectDamage.Damage, false), "ESakuyaSE1", (GunType)0);
				}
			}
		}

		private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args)
		{
			yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
		}
	}
	public sealed class KijinSeijaFastAttackDef : KijinSeijaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = KijinSeijaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "Spirit" };
			defaultStatusEffectConfig.HasCount = true;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaFastAttackDef))]
	public sealed class KijinSeijaFastAttack : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<GameEventArgs>(((StatusEffect)this).Battle.AllEnemyTurnStarted, (EventSequencedReactor<GameEventArgs>)OnAllEnemyTurnStarted);
			((StatusEffect)this).Highlight = true;
		}

		private IEnumerable<BattleAction> OnAllEnemyTurnStarted(GameEventArgs args)
		{
			if (((StatusEffect)this).Owner != null && !((StatusEffect)this).Battle.BattleShouldEnd)
			{
				yield return (BattleAction)new DamageAction((Unit)(object)((StatusEffect)this).Battle.Player, (Unit)(object)((StatusEffect)this).Battle.FirstAliveEnemy, DamageInfo.Attack((float)((StatusEffect)this).Level, false), "鸦天狗触发B", (GunType)0);
				((StatusEffect)this).Highlight = false;
			}
		}
	}
	public sealed class KijinSeijaFriendS1Def : KijinSeijaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = KijinSeijaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "Spirit" };
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaFriendS1Def))]
	public sealed class KijinSeijaFriendS1 : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Expected O, but got Unknown
			foreach (EnemyUnit allAliveEnemy in ((StatusEffect)this).Battle.AllAliveEnemies)
			{
				((GameEntity)this).GameRun.SetEnemyHpAndMaxHp(((Unit)((StatusEffect)this).Battle.Player).Hp, ((Unit)((StatusEffect)this).Battle.Player).Hp, allAliveEnemy, false);
			}
			((StatusEffect)this).HandleOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnStarted, (GameEventHandler<UnitEventArgs>)OnOwnerTurnStarted);
		}

		protected void OnOwnerTurnStarted(UnitEventArgs args)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Expected O, but got Unknown
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Expected O, but got Unknown
			((GameEntity)this).React(Reactor.op_Implicit((BattleAction)(object)new ApplyStatusEffectAction<Invincible>((Unit)((StatusEffect)this).Battle.AllAliveEnemies, (int?)16, (int?)16, (int?)0, (int?)0, 0.2f, true)));
			((GameEntity)this).React(Reactor.op_Implicit((BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f)));
		}
	}
	public sealed class KijinSeijaFriendS2Def : KijinSeijaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = KijinSeijaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "Spirit" };
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaFriendS2Def))]
	public sealed class KijinSeijaFriendS2 : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((GameEntity)this).GameRun.SetHpAndMaxHp(((Unit)((StatusEffect)this).Battle.Player).Hp, ((Unit)((StatusEffect)this).Battle.Player).MaxHp * 11 / 10, false);
			((StatusEffect)this).HandleOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnStarted, (GameEventHandler<UnitEventArgs>)OnOwnerTurnEnded);
		}

		protected void OnOwnerTurnEnded(UnitEventArgs args)
		{
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Expected O, but got Unknown
			((GameEntity)this).GameRun.SetHpAndMaxHp(((Unit)((StatusEffect)this).Battle.Player).Hp, ((Unit)((StatusEffect)this).Battle.Player).MaxHp * 9 / 10, false);
			((GameEntity)this).React(Reactor.op_Implicit(((StatusEffect)this).DebuffAction<Poison>((Unit)(object)((StatusEffect)this).Battle.Player, ((Unit)((StatusEffect)this).Battle.Player).Hp, 0, 0, 0, true, 0.2f)));
			((GameEntity)this).React(Reactor.op_Implicit((BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f)));
		}
	}
	public sealed class KijinSeijaFriedS3Def : KijinSeijaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = KijinSeijaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "Spirit" };
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaFriedS3Def))]
	public sealed class KijinSeijaFriedS3 : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<DieEventArgs>(((StatusEffect)this).Battle.EnemyDied, (EventSequencedReactor<DieEventArgs>)OnEnemyDied);
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnturnStarted);
		}

		private IEnumerable<BattleAction> OnEnemyDied(DieEventArgs args)
		{
			EnemyUnit unit2 = CollectionsExtensions.MinBy<EnemyUnit, int>((IEnumerable<EnemyUnit>)((StatusEffect)this).Battle.EnemyGroup, (Func<EnemyUnit, int>)((EnemyUnit val) => ((Unit)val).Hp));
			<>n__0();
			((GameEntity)this).GameRun.GainMaxHp((int)((float)((Unit)unit2).MaxHp / 10f), true, true);
			yield break;
		}

		private IEnumerable<BattleAction> OnturnStarted(GameEventArgs args)
		{
			yield return (BattleAction)(object)new ApplyStatusEffectAction<NextTurnLoseGame>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)0, (int?)0, (int?)0, (int?)0, 0.2f, true);
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class KijinSeijaHeal1Def : KijinSeijaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = KijinSeijaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "Spirit" };
			defaultStatusEffectConfig.HasCount = true;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaHeal1Def))]
	public sealed class KijinSeijaHeal1 : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).HandleOwnerEvent<DieEventArgs>(((StatusEffect)this).Owner.Dying, (GameEventHandler<DieEventArgs>)OnDying);
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnStarted);
		}

		private void OnDying(DieEventArgs args)
		{
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Expected O, but got Unknown
			((GameEventArgs)args).CancelBy((GameEntity)(object)this);
			((StatusEffect)this).NotifyActivating();
			if (((Unit)((StatusEffect)this).Battle.Player).MaxHp <= 30)
			{
				((GameEntity)this).GameRun.SetHpAndMaxHp(((Unit)((StatusEffect)this).Battle.Player).MaxHp, ((Unit)((StatusEffect)this).Battle.Player).MaxHp, false);
			}
			else
			{
				((GameEntity)this).GameRun.SetHpAndMaxHp(30, ((Unit)((StatusEffect)this).Battle.Player).MaxHp, false);
			}
			((GameEntity)this).React(Reactor.op_Implicit((BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f)));
		}

		private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args)
		{
			yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
		}
	}
	public sealed class KijinSeijaInvertedWorld1Def : KijinSeijaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = KijinSeijaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "Spirit" };
			defaultStatusEffectConfig.Type = (StatusEffectType)0;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaInvertedWorld1Def))]
	public sealed class KijinSeijaInvertedWorld1 : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			foreach (EnemyUnit allAliveEnemy in ((StatusEffect)this).Battle.AllAliveEnemies)
			{
				((StatusEffect)this).ReactOwnerEvent<BlockShieldEventArgs>(((Unit)allAliveEnemy).BlockShieldGained, (EventSequencedReactor<BlockShieldEventArgs>)OnBlockShieldGained);
			}
		}

		private IEnumerable<BattleAction> OnBlockShieldGained(BlockShieldEventArgs args)
		{
			using IEnumerator<EnemyUnit> enumerator = ((StatusEffect)this).Battle.AllAliveEnemies.GetEnumerator();
			if (enumerator.MoveNext())
			{
				EnemyUnit enemyUnit = enumerator.Current;
				if (args.Block > 0f)
				{
					yield return (BattleAction)new DamageAction((Unit)(object)((StatusEffect)this).Battle.Player, (Unit)(object)enemyUnit, DamageInfo.Reaction(args.Block * 2f, false), "假面", (GunType)0);
				}
				if (args.Shield > 0f)
				{
					yield return (BattleAction)new DamageAction((Unit)(object)((StatusEffect)this).Battle.Player, (Unit)(object)enemyUnit, DamageInfo.Reaction(args.Shield * 2f, false), "假面", (GunType)0);
				}
				yield break;
			}
		}
	}
	public sealed class KijinSeijaMaoYuSeDef : KijinSeijaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = KijinSeijaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "Spirit" };
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaMaoYuSeDef))]
	public sealed class KijinSeijaMaoYuSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<StatisticalDamageEventArgs>(((StatusEffect)this).Owner.StatisticalTotalDamageReceived, (EventSequencedReactor<StatisticalDamageEventArgs>)OnOwnerStatisticalTotalDamageReceived);
		}

		private IEnumerable<BattleAction> OnOwnerStatisticalTotalDamageReceived(StatisticalDamageEventArgs totalArgs)
		{
			<>n__0();
			yield return (BattleAction)new CastBlockShieldAction(((StatusEffect)this).Owner, new ShieldInfo(((Unit)((StatusEffect)this).Battle.Player).MaxHp / 2, (BlockShieldType)2), false);
			yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class KijinSeijaMoney1Def : KijinSeijaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = KijinSeijaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "Spirit" };
			defaultStatusEffectConfig.HasCount = true;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaMoney1Def))]
	public sealed class KijinSeijaMoney1 : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<GameEventArgs>(((StatusEffect)this).Battle.BattleEnding, (EventSequencedReactor<GameEventArgs>)OnBattleEnding);
		}

		private IEnumerable<BattleAction> OnBattleEnding(GameEventArgs args)
		{
			int Value1 = ((Unit)((StatusEffect)this).Battle.Player).Hp;
			int Value2 = ((Unit)((StatusEffect)this).Battle.Player).MaxHp;
			if (Value1 < 4)
			{
				<>n__0();
				yield return (BattleAction)new GainMoneyAction(999, (SpecialSourceType)0);
			}
			else if (Value1 == Value2)
			{
				<>n__0();
				yield return (BattleAction)new GainMoneyAction(99, (SpecialSourceType)0);
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class KijinSeijaTiaoZhan1Def : KijinSeijaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = KijinSeijaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "Spirit" };
			defaultStatusEffectConfig.Type = (StatusEffectType)2;
			defaultStatusEffectConfig.HasCount = true;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaTiaoZhan1Def))]
	public sealed class KijinSeijaTiaoZhan1 : StatusEffect
	{
		public int value44 = 0;

		public int value45 = 0;

		protected override void OnAdded(Unit unit)
		{
			SetCount();
			((StatusEffect)this).HandleOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (GameEventHandler<UnitEventArgs>)delegate
			{
				SetCount();
			});
			((StatusEffect)this).HandleOwnerEvent<DamageEventArgs>(unit.DamageReceived, (GameEventHandler<DamageEventArgs>)OnDamageReceived);
			((StatusEffect)this).ReactOwnerEvent<GameEventArgs>(((StatusEffect)this).Battle.BattleEnded, (EventSequencedReactor<GameEventArgs>)OnBattleEnded);
		}

		private void SetCount()
		{
			if (value44 >= 25)
			{
				value45++;
				value44 = 0;
			}
			else
			{
				value44 = 0;
			}
			((StatusEffect)this).Count = value45;
		}

		private void OnDamageReceived(DamageEventArgs args)
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			int num = value44;
			DamageInfo damageInfo = args.DamageInfo;
			value44 = num + (int)((DamageInfo)(ref damageInfo)).Damage;
		}

		private IEnumerable<BattleAction> OnBattleEnded(GameEventArgs args)
		{
			new List<Exhibit>();
			if (value45 <= 2)
			{
				yield return (BattleAction)new GainMoneyAction(50, (SpecialSourceType)0);
			}
			else if (value45 > 2 && value45 <= 4)
			{
				yield return (BattleAction)new GainMoneyAction(150, (SpecialSourceType)0);
				((GameEntity)this).GameRun.GainMaxHp(10, true, true);
			}
			else if (value45 > 4 && value45 <= 6)
			{
				yield return (BattleAction)new GainMoneyAction(400, (SpecialSourceType)0);
				((GameEntity)this).GameRun.GainMaxHp(20 + ((Unit)((StatusEffect)this).Battle.Player).MaxHp / 10, true, true);
			}
			else if (value45 > 6)
			{
				yield return (BattleAction)new GainMoneyAction(700, (SpecialSourceType)0);
				((GameEntity)this).GameRun.GainMaxHp(30 + ((Unit)((StatusEffect)this).Battle.Player).MaxHp / 5, true, true);
			}
		}
	}
	public sealed class KijinSeijaTSGDef : KijinSeijaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = KijinSeijaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "Spirit" };
			defaultStatusEffectConfig.Type = (StatusEffectType)1;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaTSGDef))]
	public sealed class KijinSeijaTSG : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).HandleOwnerEvent<DieEventArgs>(((Unit)((StatusEffect)this).Battle.Player).Dying, (GameEventHandler<DieEventArgs>)OnPlayerDying);
		}

		private void OnPlayerDying(DieEventArgs args)
		{
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Expected O, but got Unknown
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bc: Expected O, but got Unknown
			((GameEventArgs)args).CancelBy((GameEntity)(object)this);
			if (((StatusEffect)this).Owner.Hp <= ((Unit)((StatusEffect)this).Battle.Player).MaxHp)
			{
				((GameEntity)this).GameRun.SetHpAndMaxHp(((StatusEffect)this).Owner.Hp, ((Unit)((StatusEffect)this).Battle.Player).MaxHp, false);
			}
			else
			{
				((GameEntity)this).GameRun.SetHpAndMaxHp(((Unit)((StatusEffect)this).Battle.Player).MaxHp, ((Unit)((StatusEffect)this).Battle.Player).MaxHp, false);
			}
			((GameEntity)this).React(Reactor.op_Implicit((BattleAction)new ForceKillAction((Unit)(object)((StatusEffect)this).Battle.Player, ((StatusEffect)this).Owner)));
			((GameEntity)this).React(Reactor.op_Implicit((BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f)));
		}
	}
	public sealed class KijinSeijaTurnGainSpiritSeDef : KijinSeijaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = KijinSeijaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "Spirit" };
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaTurnGainSpiritSeDef))]
	public sealed class KijinSeijaTurnGainSpiritSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsing, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsing);
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnEnded, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnEnded);
		}

		private IEnumerable<BattleAction> OnCardUsing(CardUsingEventArgs args)
		{
			<>n__0();
			args.PlayTwice = true;
			((GameEventArgs)args).AddModifier((GameEntity)(object)this);
			yield break;
		}

		private IEnumerable<BattleAction> OnOwnerTurnEnded(UnitEventArgs args)
		{
			yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class KijinSeijaYinyangyuSeDef : KijinSeijaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = KijinSeijaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "Spirit" };
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaYinyangyuSeDef))]
	public sealed class KijinSeijaYinyangyuSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnturnStarted);
		}

		private IEnumerable<BattleAction> OnturnStarted(GameEventArgs args)
		{
			<>n__0();
			yield return (BattleAction)(object)new ApplyStatusEffectAction<Firepower>(((StatusEffect)this).Owner, (int?)1, (int?)null, (int?)null, (int?)null, 0f, true);
			yield return (BattleAction)(object)new ApplyStatusEffectAction<Spirit>(((StatusEffect)this).Owner, (int?)1, (int?)null, (int?)null, (int?)null, 0f, true);
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public class KijinSeijaStatusEffectTemplate : StatusEffectTemplate
	{
		public override IdContainer GetId()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			return IdContainer.op_Implicit(KijinSeijaDefaultConfig.DefaultID((EntityDefinition)(object)this));
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)KijinSeijaLocalization.StatusEffectsBatchLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override Sprite LoadSprite()
		{
			return KijinSeijaImageLoader.LoadStatusEffectLoader((StatusEffectTemplate)(object)this);
		}

		public override StatusEffectConfig MakeConfig()
		{
			return GetDefaultStatusEffectConfig();
		}

		public static StatusEffectConfig GetDefaultStatusEffectConfig()
		{
			return KijinSeijaDefaultConfig.DefaultStatusEffectConfig();
		}
	}
}
namespace KijinSeijaMod.model
{
	public sealed class KijinSeijaModel : UnitModelTemplate
	{
		public static bool useInGameModel = BepinexPlugin.useInGameModel;

		public static string model_name = (useInGameModel ? BepinexPlugin.modelName : "KijinSeijaModel.png");

		public static string spellsprite_name = "KijinSeijaStand.png";

		public override IdContainer GetId()
		{
			//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_000e: Unknown result type (might be due to invalid IL or missing references)
			return IdContainer.op_Implicit(BepinexPlugin.modUniqueID);
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)KijinSeijaLocalization.UnitModelBatchLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ModelOption LoadModelOptions()
		{
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Expected O, but got Unknown
			//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_001b: Expected O, but got Unknown
			if (useInGameModel)
			{
				return new ModelOption(ResourcesHelper.LoadSpineUnitAsync(model_name));
			}
			return new ModelOption(ResourceLoader.LoadSpriteAsync(model_name, BepinexPlugin.directorySource, 565, (GraphicsFormat)4, 1, (FilterMode)1, (SpriteMeshType)1, (Rect?)null, (Vector2?)null, "file://"));
		}

		public override UniTask<Sprite> LoadSpellSprite()
		{
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0048: Unknown result type (might be due to invalid IL or missing references)
			if (useInGameModel)
			{
				return ResourcesHelper.LoadSpellPortraitAsync(model_name);
			}
			return ResourceLoader.LoadSpriteAsync(spellsprite_name, BepinexPlugin.directorySource, 100, (GraphicsFormat)4, 1, (FilterMode)1, (SpriteMeshType)1, (Rect?)null, (Vector2?)null, "file://");
		}

		public override UnitModelConfig MakeConfig()
		{
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			if (useInGameModel)
			{
				UnitModelConfig val = ObjectExtensions.Copy<UnitModelConfig>(UnitModelConfig.FromName(model_name));
				val.Flip = BepinexPlugin.modelIsFlipped;
				return val;
			}
			UnitModelConfig val2 = ObjectExtensions.Copy<UnitModelConfig>(((UnitModelTemplate)this).DefaultConfig());
			val2.Flip = BepinexPlugin.modelIsFlipped;
			val2.Type = 0;
			val2.Offset = new Vector2(0f, -0.1f);
			val2.HasSpellPortrait = true;
			return val2;
		}
	}
}
namespace KijinSeijaMod.Models
{
	public sealed class KijinSeijaShinmyoumaruModel : UnitModelTemplate
	{
		public override IdContainer GetId()
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return IdContainer.op_Implicit("KijinSeijaShinmyoumaru");
		}

		public override UnitModelConfig MakeConfig()
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			UnitModelConfig val = ObjectExtensions.Copy<UnitModelConfig>(UnitModelConfig.FromName("Reimu"));
			val.Name = "KijinSeijaShinmyoumaru";
			val.Type = 0;
			val.Flip = false;
			val.Offset = new Vector2(0f, 0.04f);
			return val;
		}

		public override ModelOption LoadModelOptions()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Expected O, but got Unknown
			return new ModelOption(UniTask.FromResult<Sprite>(ResourceLoader.LoadSprite("KijinSeijaShinmyoumaru.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 100, (Vector2?)null)));
		}

		public override UniTask<Sprite> LoadSpellSprite()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			return UniTask.FromResult<Sprite>((Sprite)null);
		}

		public override LocalizationOption LoadLocalization()
		{
			return null;
		}
	}
}
namespace KijinSeijaMod.Localization
{
	public sealed class KijinSeijaLocalization
	{
		public static string Cards = "Cards";

		public static string Exhibits = "Exhibits";

		public static string PlayerUnit = "PlayerUnit";

		public static string EnemiesUnit = "EnemyUnit";

		public static string UnitModel = "UnitModel";

		public static string UltimateSkills = "UltimateSkills";

		public static string StatusEffects = "StatusEffects";

		public static BatchLocalization CardsBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(CardTemplate), Cards, (Locale)0, false);

		public static BatchLocalization ExhibitsBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(ExhibitTemplate), Exhibits, (Locale)0, false);

		public static BatchLocalization PlayerUnitBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(PlayerUnitTemplate), PlayerUnit, (Locale)0, false);

		public static BatchLocalization EnemiesUnitBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(EnemyUnitTemplate), EnemiesUnit, (Locale)0, false);

		public static BatchLocalization UnitModelBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(UnitModelTemplate), UnitModel, (Locale)0, false);

		public static BatchLocalization UltimateSkillsBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(UltimateSkillTemplate), UltimateSkills, (Locale)0, false);

		public static BatchLocalization StatusEffectsBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(StatusEffectTemplate), StatusEffects, (Locale)0, false);

		public static void Init()
		{
			CardsBatchLoc.DiscoverAndLoadLocFiles(Cards);
			ExhibitsBatchLoc.DiscoverAndLoadLocFiles(Exhibits);
			PlayerUnitBatchLoc.DiscoverAndLoadLocFiles(PlayerUnit);
			EnemiesUnitBatchLoc.DiscoverAndLoadLocFiles(EnemiesUnit);
			UnitModelBatchLoc.DiscoverAndLoadLocFiles(UnitModel);
			UltimateSkillsBatchLoc.DiscoverAndLoadLocFiles(UltimateSkills);
			StatusEffectsBatchLoc.DiscoverAndLoadLocFiles(StatusEffects);
		}
	}
}
namespace KijinSeijaMod.ImageLoader
{
	public sealed class KijinSeijaImageLoader
	{
		public static string file_extension = ".png";

		public static PlayerImages LoadPlayerImages(string name)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			PlayerImages val = new PlayerImages();
			val.AutoLoad(name, (Func<string, Sprite>)((string s) => ResourceLoader.LoadSprite(s, (IResourceSource)(object)BepinexPlugin.directorySource, 100, 1, (FilterMode)1, true, (Rect?)null, (Vector2?)null)), (Func<string, UniTask<Sprite>>)((string s) => ResourceLoader.LoadSpriteAsync(s, BepinexPlugin.directorySource, 100, (GraphicsFormat)4, 1, (FilterMode)1, (SpriteMeshType)1, (Rect?)null, (Vector2?)null, "file://")), (UseSame)2, ".png", "");
			return val;
		}

		public static CardImages LoadCardImages(CardTemplate cardTemplate)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Expected O, but got Unknown
			CardImages val = new CardImages(BepinexPlugin.embeddedSource);
			val.AutoLoad(cardTemplate, file_extension, "", !BasicTypeExtensions.IsNullOrEmpty(cardTemplate.MakeConfig().UpgradeImageId));
			return val;
		}

		public static ExhibitSprites LoadExhibitSprite(ExhibitTemplate exhibit)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			ExhibitSprites val = new ExhibitSprites();
			val.main = ResourceLoader.LoadSprite(IdContainer.op_Implicit(((EntityDefinition)exhibit).GetId()) + file_extension, BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			return val;
		}

		public static Sprite LoadUltLoader(UltimateSkillTemplate ult)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			return LoadSprite(((EntityDefinition)ult).GetId());
		}

		public static Sprite LoadStatusEffectLoader(StatusEffectTemplate status)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			return LoadSprite(((EntityDefinition)status).GetId());
		}

		public static Sprite LoadSprite(IdContainer ID)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			return ResourceLoader.LoadSprite(IdContainer.op_Implicit(ID) + file_extension, BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
		}
	}
}
namespace KijinSeijaMod.GunName
{
	public static class GunNameID
	{
		private static IReadOnlyList<GunConfig> gunConfig = GunConfig.AllConfig();

		public static string GetGunFromId(int id)
		{
			string text = "";
			try
			{
				return (from config in gunConfig
					where config.Id == id
					select config.Name).ToList()[0];
			}
			catch
			{
				Debug.Log((object)("id: " + id + " doesn't exist. Check whether the ID is correct."));
				return "Instant";
			}
		}
	}
}
namespace KijinSeijaMod.Exhibits
{
	public sealed class KijinSeijaExhibitADef : KijinSeijaExhibitTemplate
	{
		public override ExhibitConfig MakeConfig()
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig();
			defaultExhibitConfig.HasCounter = true;
			defaultExhibitConfig.InitialCounter = 0;
			ManaGroup value = default(ManaGroup);
			((ManaGroup)(ref value)).Philosophy = 1;
			defaultExhibitConfig.Mana = value;
			defaultExhibitConfig.BaseManaColor = (ManaColor)7;
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaExhibitADef))]
	public sealed class KijinSeijaExhibitA : ShiningExhibit
	{
		public int count;

		private bool Blackout;

		protected override void OnEnterBattle()
		{
			((Exhibit)this).HandleBattleEvent<CardEventArgs>(((Exhibit)this).Battle.CardRemoved, (GameEventHandler<CardEventArgs>)OnCardWasFuckingDelected);
			count = 0;
			Blackout = true;
			if (((Exhibit)this).Owner.Us != null)
			{
				((Exhibit)this).Owner.Us.MaxPowerLevel = 2 + ((Exhibit)this).Counter;
			}
		}

		private void OnCardWasFuckingDelected(CardEventArgs args)
		{
			((GameEntity)this).GameRun.GainMaxHp(2, true, true);
			count++;
			if (count >= 4 && Blackout)
			{
				((Exhibit)this).Counter = ((Exhibit)this).Counter + 1;
				if (((Exhibit)this).Owner.Us != null)
				{
					((Exhibit)this).Owner.Us.MaxPowerLevel = 2 + ((Exhibit)this).Counter;
				}
				Blackout = false;
			}
		}
	}
	public sealed class KijinSeijaExhibitBDef : KijinSeijaExhibitTemplate
	{
		public override ExhibitConfig MakeConfig()
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig();
			ManaGroup value = default(ManaGroup);
			((ManaGroup)(ref value)).Colorless = 1;
			defaultExhibitConfig.Mana = value;
			defaultExhibitConfig.BaseManaColor = (ManaColor)6;
			defaultExhibitConfig.IsPooled = false;
			defaultExhibitConfig.RelativeEffects = new List<string>();
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaExhibitBDef))]
	public sealed class KijinSeijaExhibitB : ShiningExhibit
	{
		protected override void OnEnterBattle()
		{
			((Exhibit)this).HandleBattleEvent<CardUsingEventArgs>(((Exhibit)this).Battle.CardUsed, (GameEventHandler<CardUsingEventArgs>)OnCardUsed);
		}

		private void OnCardUsed(CardUsingEventArgs args)
		{
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Expected O, but got Unknown
			((GameEntity)this).React(Reactor.op_Implicit((BattleAction)new HealAction((Unit)(object)((Exhibit)this).Battle.Player, (Unit)(object)((Exhibit)this).Battle.Player, 1, (HealType)0, 0.2f)));
		}
	}
	public class KijinSeijaExhibitTemplate : ExhibitTemplate
	{
		public override IdContainer GetId()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			return IdContainer.op_Implicit(KijinSeijaDefaultConfig.DefaultID((EntityDefinition)(object)this));
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)KijinSeijaLocalization.ExhibitsBatchLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			return KijinSeijaImageLoader.LoadExhibitSprite((ExhibitTemplate)(object)this);
		}

		public override ExhibitConfig MakeConfig()
		{
			return GetDefaultExhibitConfig();
		}

		public ExhibitConfig GetDefaultExhibitConfig()
		{
			return KijinSeijaDefaultConfig.DefaultExhibitConfig();
		}
	}
}
namespace KijinSeijaMod.Exhibits.Common
{
	public sealed class KijinSeijaDragonBallSeDef : KijinSeijaExhibitTemplate
	{
		public override ExhibitConfig MakeConfig()
		{
			ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig();
			defaultExhibitConfig.Rarity = (Rarity)1;
			defaultExhibitConfig.Owner = null;
			defaultExhibitConfig.BaseManaColor = null;
			defaultExhibitConfig.HasCounter = true;
			defaultExhibitConfig.InitialCounter = 0;
			defaultExhibitConfig.LosableType = (ExhibitLosableType)0;
			defaultExhibitConfig.RelativeCards = new List<string> { "KijinSeijaToken" };
			defaultExhibitConfig.IsPooled = true;
			defaultExhibitConfig.Appearance = (AppearanceType)0;
			defaultExhibitConfig.RelativeEffects = new List<string>();
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaDragonBallSeDef))]
	public sealed class KijinSeijaDragonBallSe : Exhibit
	{
		protected override void OnEnterBattle()
		{
			((Exhibit)this).Counter = 0;
			((Exhibit)this).ReactBattleEvent<UnitEventArgs>(((Unit)((Exhibit)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarteded);
			((Exhibit)this).HandleBattleEvent<UnitEventArgs>(((Unit)((Exhibit)this).Battle.Player).TurnEnded, (GameEventHandler<UnitEventArgs>)delegate
			{
				if (((Exhibit)this).Counter % 2 != 0 || ((Exhibit)this).Counter < 2)
				{
					((Exhibit)this).Blackout = true;
				}
				else
				{
					((Exhibit)this).Blackout = false;
				}
			});
		}

		private IEnumerable<BattleAction> OnPlayerTurnStarteded(GameEventArgs arg)
		{
			if (!((Exhibit)this).Battle.BattleShouldEnd)
			{
				((Exhibit)this).Counter = ((Exhibit)this).Counter + 1;
				if (((Exhibit)this).Counter >= 3 && ((Exhibit)this).Counter % 2 != 0)
				{
					<>n__0();
					yield return (BattleAction)new AddCardsToDrawZoneAction((IEnumerable<Card>)Library.CreateCards<KijinSeijaToken>(1, false), (DrawZoneTarget)2, (AddCardsType)0);
				}
			}
		}

		protected override void OnLeaveBattle()
		{
			((Exhibit)this).Active = false;
			((Exhibit)this).Blackout = false;
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((Exhibit)this).NotifyActivating();
		}
	}
	public sealed class KijinSeijaHolyGrailSeDef : KijinSeijaExhibitTemplate
	{
		public override ExhibitConfig MakeConfig()
		{
			ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig();
			defaultExhibitConfig.Rarity = (Rarity)1;
			defaultExhibitConfig.Owner = null;
			defaultExhibitConfig.BaseManaColor = null;
			defaultExhibitConfig.LosableType = (ExhibitLosableType)0;
			defaultExhibitConfig.HasCounter = true;
			defaultExhibitConfig.InitialCounter = 0;
			defaultExhibitConfig.IsPooled = true;
			defaultExhibitConfig.Appearance = (AppearanceType)0;
			defaultExhibitConfig.RelativeEffects = new List<string>();
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaHolyGrailSeDef))]
	public sealed class KijinSeijaHolyGrailSe : Exhibit
	{
		protected override void OnEnterBattle()
		{
			((Exhibit)this).Counter = 0;
			((Exhibit)this).ReactBattleEvent<UnitEventArgs>(((Unit)((Exhibit)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted);
			((Exhibit)this).HandleBattleEvent<UnitEventArgs>(((Unit)((Exhibit)this).Battle.Player).TurnEnded, (GameEventHandler<UnitEventArgs>)delegate
			{
				if (((Exhibit)this).Counter == 0)
				{
					((Exhibit)this).Blackout = true;
				}
			});
		}

		private IEnumerable<BattleAction> OnPlayerTurnStarted(GameEventArgs args)
		{
			if (((Exhibit)this).Battle.BattleShouldEnd)
			{
				yield break;
			}
			if (((Exhibit)this).Counter < 6)
			{
				int counter = ((Exhibit)this).Counter + 1;
				((Exhibit)this).Counter = counter;
				if (((Exhibit)this).Counter == 5)
				{
					((Exhibit)this).Active = true;
				}
				yield break;
			}
			<>n__0();
			foreach (EnemyUnit enemy in ((Exhibit)this).Battle.AllAliveEnemies)
			{
				foreach (StatusEffect item in ((Unit)enemy).StatusEffects.Where((StatusEffect se) => (int)se.Type == 0).ToList())
				{
					yield return (BattleAction)new RemoveStatusEffectAction(item, true, 0.1f);
				}
			}
			((Exhibit)this).Active = false;
		}

		protected override void OnLeaveBattle()
		{
			((Exhibit)this).Active = false;
			((Exhibit)this).Blackout = false;
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((Exhibit)this).NotifyActivating();
		}
	}
	public sealed class KijinSeijaMadokaBowSeDef : KijinSeijaExhibitTemplate
	{
		public override ExhibitConfig MakeConfig()
		{
			//IL_0033: 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)
			ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig();
			defaultExhibitConfig.Rarity = (Rarity)1;
			defaultExhibitConfig.Owner = null;
			defaultExhibitConfig.BaseManaColor = null;
			defaultExhibitConfig.LosableType = (ExhibitLosableType)0;
			ManaGroup value = default(ManaGroup);
			((ManaGroup)(ref value)).Colorless = 3;
			defaultExhibitConfig.Mana = value;
			defaultExhibitConfig.HasCounter = true;
			defaultExhibitConfig.InitialCounter = 0;
			defaultExhibitConfig.IsPooled = true;
			defaultExhibitConfig.Appearance = (AppearanceType)0;
			defaultExhibitConfig.RelativeEffects = new List<string>();
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaMadokaBowSeDef))]
	public sealed class KijinSeijaMadokaBowSe : Exhibit
	{
		protected override void OnAdded(PlayerUnit player)
		{
			GameRunController gameRun = ((GameEntity)this).GameRun;
			int removeBadCardForbidden = gameRun.RemoveBadCardForbidden + 1;
			gameRun.RemoveBadCardForbidden = removeBadCardForbidden;
		}

		protected override void OnRemoved(PlayerUnit player)
		{
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Invalid comparison between Unknown and I4
			//IL_006c: 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_007a: Invalid comparison between Unknown and I8
			GameRunController gameRun = ((GameEntity)this).GameRun;
			int removeBadCardForbidden = gameRun.RemoveBadCardForbidden - 1;
			gameRun.RemoveBadCardForbidden = removeBadCardForbidden;
			if (((Exhibit)this).Battle == null || ((GameEntity)this).GameRun.RemoveBadCardForbidden > 0)
			{
				return;
			}
			foreach (Card item in ((Exhibit)this).Battle.EnumerateAllCards())
			{
				CardType cardType = item.CardType;
				if ((int)cardType == 8 && (long)(item.Config.Keywords & 0x8000) > 0L)
				{
					item.IsForbidden = true;
				}
			}
		}

		protected override void OnEnterBattle()
		{
			((Exhibit)this).HandleBattleEvent<CardUsingEventArgs>(((Exhibit)this).Battle.CardUsing, (GameEventHandler<CardUsingEventArgs>)OnCardUsing);
		}

		private void OnCardUsing(CardUsingEventArgs args)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Invalid comparison between Unknown and I4
			//IL_001d: 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_002c: Expected O, but got Unknown
			if ((int)args.Card.CardType == 8)
			{
				((Exhibit)this).NotifyActivating();
				((GameEntity)this).React(Reactor.op_Implicit((BattleAction)new GainManaAction(((Exhibit)this).Mana)));
			}
		}
	}
	public sealed class KijinSeijaQiannianShenqiSeDef : KijinSeijaExhibitTemplate
	{
		public override ExhibitConfig MakeConfig()
		{
			ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig();
			defaultExhibitConfig.Rarity = (Rarity)1;
			defaultExhibitConfig.Owner = null;
			defaultExhibitConfig.BaseManaColor = null;
			defaultExhibitConfig.LosableType = (ExhibitLosableType)0;
			defaultExhibitConfig.HasCounter = true;
			defaultExhibitConfig.InitialCounter = 0;
			defaultExhibitConfig.IsPooled = true;
			defaultExhibitConfig.Appearance = (AppearanceType)0;
			defaultExhibitConfig.RelativeEffects = new List<string>();
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaQiannianShenqiSeDef))]
	public sealed class KijinSeijaQiannianShenqiSe : Exhibit
	{
		protected override void OnEnterBattle()
		{
			((Exhibit)this).ReactBattleEvent<UnitEventArgs>(((Unit)((Exhibit)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarteded);
		}

		private IEnumerable<BattleAction> OnPlayerTurnStarteded(GameEventArgs arg)
		{
			EnemyUnit[] enemies = UnitSelector.AllEnemies.GetEnemies(((Exhibit)this).Battle);
			int attackCount = enemies.Count((EnemyUnit enemy) => enemy.Intentions.Any((Intention i) => true));
			if (attackCount > 1)
			{
				yield return (BattleAction)(object)new ApplyStatusEffectAction<Firepower>((Unit)(object)((Exhibit)this).Battle.Player, (int?)(attackCount - 1), (int?)null, (int?)null, (int?)null, 0f, true);
				yield return (BattleAction)(object)new ApplyStatusEffectAction<Spirit>((Unit)(object)((Exhibit)this).Battle.Player, (int?)(attackCount - 1), (int?)null, (int?)null, (int?)null, 0f, true);
			}
		}
	}
	public sealed class KijinSeijaSakuraWandSeDef : KijinSeijaExhibitTemplate
	{
		public override ExhibitConfig MakeConfig()
		{
			ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig();
			defaultExhibitConfig.Rarity = (Rarity)2;
			defaultExhibitConfig.Owner = null;
			defaultExhibitConfig.BaseManaColor = null;
			defaultExhibitConfig.LosableType = (ExhibitLosableType)0;
			defaultExhibitConfig.HasCounter = true;
			defaultExhibitConfig.InitialCounter = 0;
			defaultExhibitConfig.IsPooled = true;
			defaultExhibitConfig.Appearance = (AppearanceType)0;
			defaultExhibitConfig.RelativeEffects = new List<string>();
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaSakuraWandSeDef))]
	public sealed class KijinSeijaSakuraWandSe : Exhibit
	{
		protected override void OnEnterBattle()
		{
			((Exhibit)this).HandleBattleEvent<CardUsingEventArgs>(((Exhibit)this).Battle.CardUsing, (GameEventHandler<CardUsingEventArgs>)OnCardUsing);
		}

		private void OnCardUsing(CardUsingEventArgs args)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Invalid comparison between Unknown and I4
			if ((int)args.Card.CardType == 1)
			{
				args.PlayTwice = true;
			}
		}
	}
	public sealed class KijinSeijaShenDengSeDef : KijinSeijaExhibitTemplate
	{
		public override ExhibitConfig MakeConfig()
		{
			ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig();
			defaultExhibitConfig.Rarity = (Rarity)2;
			defaultExhibitConfig.Owner = null;
			defaultExhibitConfig.BaseManaColor = null;
			defaultExhibitConfig.LosableType = (ExhibitLosableType)0;
			defaultExhibitConfig.HasCounter = true;
			defaultExhibitConfig.InitialCounter = 0;
			defaultExhibitConfig.IsPooled = true;
			defaultExhibitConfig.Appearance = (AppearanceType)0;
			defaultExhibitConfig.RelativeEffects = new List<string>();
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaShenDengSeDef))]
	public sealed class KijinSeijaShenDengSe : Exhibit
	{
		private List<Type> Types { get; set; }

		private int Counter { get; set; }

		protected override void OnEnterBattle()
		{
			Counter = 0;
			Types = new List<Type>
			{
				typeof(Weak),
				typeof(Fragil),
				typeof(Vulnerable)
			};
			((Exhibit)this).ReactBattleEvent<UnitEventArgs>(((Unit)((Exhibit)this).Battle.Player).TurnEnding, (EventSequencedReactor<UnitEventArgs>)OnTurnEnding);
		}

		private IEnumerable<BattleAction> OnTurnEnding(UnitEventArgs args)
		{
			if (Counter % 3 == 0)
			{
				CollectionsExtensions.Shuffle<Type>((IList<Type>)Types, ((GameEntity)this).GameRun.EnemyBattleRng);
			}
			<>n__0();
			Type type = Types[Counter % 3];
			EnemyUnit target = ((Exhibit)this).Battle.RandomAliveEnemy;
			int? duration = 3;
			yield return (BattleAction)new ApplyStatusEffectAction(type, (Unit)(object)target, (int?)null, duration, (int?)null, (int?)null, 0f, false);
			int counter = Counter + 1;
			Counter = counter;
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((Exhibit)this).NotifyActivating();
		}
	}
	public sealed class KijinSeijaSihunYuSeDef : KijinSeijaExhibitTemplate
	{
		public override ExhibitConfig MakeConfig()
		{
			ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig();
			defaultExhibitConfig.Rarity = (Rarity)1;
			defaultExhibitConfig.Owner = null;
			defaultExhibitConfig.BaseManaColor = null;
			defaultExhibitConfig.LosableType = (ExhibitLosableType)0;
			defaultExhibitConfig.HasCounter = true;
			defaultExhibitConfig.InitialCounter = 0;
			defaultExhibitConfig.IsPooled = true;
			defaultExhibitConfig.Appearance = (AppearanceType)0;
			defaultExhibitConfig.RelativeEffects = new List<string>();
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaSihunYuSeDef))]
	public sealed class KijinSeijaSihunYuSe : Exhibit
	{
		protected override void OnEnterBattle()
		{
			((Exhibit)this).ReactBattleEvent<UnitEventArgs>(((Unit)((Exhibit)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarteded);
		}

		private IEnumerable<BattleAction> OnPlayerTurnStarteded(UnitEventArgs arg)
		{
			if (((Exhibit)this).Battle.BattleShouldEnd)
			{
				yield break;
			}
			List<Card> list = ((Exhibit)this).Battle.RollCards(new CardWeightTable(RarityWeightTable.BattleCard, OwnerWeightTable.AllOnes, CardTypeWeightTable.OnlyFriend, false), 1, (Predicate<CardConfig>)delegate(CardConfig config)
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0006: Unknown result type (might be due to invalid IL or missing references)
				ManaGroup cost = config.Cost;
				return ((ManaGroup)(ref cost)).Amount < 5;
			}).ToList();
			if (list.Count <= 0)
			{
				yield break;
			}
			<>n__0();
			foreach (Card card in list)
			{
				card.Summon();
			}
			yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)list, (AddCardsType)0, false);
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((Exhibit)this).NotifyActivating();
		}
	}
}
namespace KijinSeijaMod.Enemies
{
	public sealed class KijinSeijaEnemyGroupDef : KijinSeijaEnemyGroupTemplate
	{
		public override IdContainer GetId()
		{
			//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_000e: Unknown result type (might be due to invalid IL or missing references)
			return IdContainer.op_Implicit("KijinSeijaSagume");
		}

		public override EnemyGroupConfig MakeConfig()
		{
			EnemyGroupConfig defaultEnemyGroupConfig = GetDefaultEnemyGroupConfig();
			defaultEnemyGroupConfig.Name = "KijinSeijaSagume";
			defaultEnemyGroupConfig.FormationName = "Single";
			defaultEnemyGroupConfig.Enemies = new List<string> { "KijinSeijaSagume" };
			defaultEnemyGroupConfig.EnemyType = (EnemyType)3;
			defaultEnemyGroupConfig.RollBossExhibit = false;
			return defaultEnemyGroupConfig;
		}
	}
	public sealed class KijinSeijaEnemyUnitDef : KijinSeijaEnemyUnitTemplate
	{
		public override IdContainer GetId()
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return IdContainer.op_Implicit("KijinSeijaSagume");
		}

		public override EnemyUnitConfig MakeConfig()
		{
			//IL_014d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0163: Unknown result type (might be due to invalid IL or missing references)
			EnemyUnitConfig defaultEnemyUnitConfig = GetDefaultEnemyUnitConfig();
			defaultEnemyUnitConfig.IsPreludeOpponent = false;
			defaultEnemyUnitConfig.ModleName = "KijinSeijaSagume";
			defaultEnemyUnitConfig.BaseManaColor = new List<ManaColor>
			{
				(ManaColor)4,
				(ManaColor)3
			};
			defaultEnemyUnitConfig.Type = (EnemyType)3;
			defaultEnemyUnitConfig.MaxHp = 1688;
			defaultEnemyUnitConfig.MaxHpHard = 1789;
			defaultEnemyUnitConfig.MaxHpLunatic = 1917;
			defaultEnemyUnitConfig.Damage1 = 8;
			defaultEnemyUnitConfig.Damage1Hard = 11;
			defaultEnemyUnitConfig.Damage1Lunatic = 14;
			defaultEnemyUnitConfig.Damage2 = 45;
			defaultEnemyUnitConfig.Damage2Hard = 70;
			defaultEnemyUnitConfig.Damage2Lunatic = 100;
			defaultEnemyUnitConfig.Defend = 100;
			defaultEnemyUnitConfig.DefendHard = 200;
			defaultEnemyUnitConfig.DefendLunatic = 350;
			defaultEnemyUnitConfig.Count1 = 10;
			defaultEnemyUnitConfig.Count1Hard = 12;
			defaultEnemyUnitConfig.Count1Lunatic = 15;
			defaultEnemyUnitConfig.Count2 = 1;
			defaultEnemyUnitConfig.Count2Hard = 2;
			defaultEnemyUnitConfig.Count2Lunatic = 3;
			defaultEnemyUnitConfig.PowerLoot = new MinMax(500, 500);
			defaultEnemyUnitConfig.BluePointLoot = new MinMax(1000, 1000);
			defaultEnemyUnitConfig.Gun1 = new List<string> { "Simple1" };
			defaultEnemyUnitConfig.Gun2 = new List<string> { "Simple1" };
			defaultEnemyUnitConfig.Gun3 = new List<string> { "Simple1" };
			defaultEnemyUnitConfig.Gun4 = new List<string> { "Simple1" };
			return defaultEnemyUnitConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaEnemyUnitDef))]
	public sealed class KijinSeijaSagume : EnemyUnit
	{
		private enum MoveType
		{
			move1,
			move2,
			move3,
			move4
		}

		private bool _nextDevil;

		private MoveType Last { get; set; }

		public RandomGen SeijaRng { get; set; }

		private MoveType Next { get; set; }

		public string move1 => ((EnemyUnit)this).GetSpellCardName((int?)0, 1);

		public string move2 => ((EnemyUnit)this).GetSpellCardName((int?)2, 3);

		public string move3 => ((EnemyUnit)this).GetSpellCardName((int?)4, 5);

		public string move4 => ((EnemyUnit)this).GetSpellCardName((int?)6, 7);

		public string Sagume1 => ((GameEntity)this).LocalizeProperty("Sagume1", false, true);

		public string Sagume2 => ((GameEntity)this).LocalizeProperty("Sagume2", false, true);

		public string Sagume3 => ((GameEntity)this).LocalizeProperty("Sagume3", false, true);

		public string Sagume4 => ((GameEntity)this).LocalizeProperty("Sagume4", false, true);

		public string Sagume5 => ((GameEntity)this).LocalizeProperty("Sagume5", false, true);

		public string Sagume55 => ((GameEntity)this).LocalizeProperty("Sagume55", false, true);

		public string Sagume6 => ((GameEntity)this).LocalizeProperty("Sagume6", false, true);

		public string Sagume7 => ((GameEntity)this).LocalizeProperty("Sagume7", false, true);

		public string Sagume8 => ((GameEntity)this).LocalizeProperty("Sagume8", false, true);

		public string Sagume9 => ((GameEntity)this).LocalizeProperty("Sagume9", false, true);

		public string Sagume10 => ((GameEntity)this).LocalizeProperty("Sagume10", false, true);

		public string Sagume11 => ((GameEntity)this).LocalizeProperty("Sagume11", false, true);

		public string Sagume12 => ((GameEntity)this).LocalizeProperty("Sagume12", false, true);

		public string Sagume13 => ((GameEntity)this).LocalizeProperty("Sagume13", false, true);

		protected override void OnEnterBattle(BattleController battle)
		{
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Expected O, but got Unknown
			Last = MoveType.move2;
			Next = MoveType.move1;
			SeijaRng = new RandomGen(((GameEntity)this).GameRun.FinalBossSeed);
			((Unit)this).ReactBattleEvent<GameEventArgs>(((Unit)this).Battle.BattleStarted, (Func<GameEventArgs, IEnumerable<BattleAction>>)OnBattleStarted);
			((Unit)this).HandleBattleEvent<DamageEventArgs>(((Unit)this).DamageReceived, (GameEventHandler<DamageEventArgs>)OnDamageReceived);
			((Unit)this).HandleBattleEvent<DieEventArgs>(((Unit)this).Dying, (GameEventHandler<DieEventArgs>)OnDying);
		}

		private IEnumerable<BattleAction> OnBattleStarted(GameEventArgs arg)
		{
			yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)((Unit)this).Battle.Player, Sagume1, 3f, 0f, 3.2f, true);
			yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, Sagume2, 7f, 0f, 7.2f, true);
			yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)((Unit)this).Battle.Player, Sagume3, 5f, 0f, 5.2f, true);
			yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, Sagume4, 5f, 0f, 5.2f, true);
			yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, Sagume5, 5f, 0f, 5.2f, true);
			yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, Sagume55, 5f, 0f, 5.2f, true);
			yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)((Unit)this).Battle.Player, Sagume6, 5f, 0f, 5.2f, true);
			yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, Sagume7, 5f, 0f, 5.2f, true);
			yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, Sagume8, 5f, 0f, 5.2f, true);
			yield return (BattleAction)(object)new ApplyStatusEffectAction<ScarletDestiny>((Unit)(object)this, (int?)null, (int?)null, (int?)null, (int?)(21 - 3 * ((EnemyUnit)this).Count2), 0f, true);
			yield return (BattleAction)(object)new ApplyStatusEffectAction<FlatPeach>((Unit)(object)this, (int?)(1 + 2 * ((EnemyUnit)this).Count2), (int?)null, (int?)null, (int?)null, 0f, true);
			yield return (BattleAction)(object)new ApplyStatusEffectAction<Curiosity>((Unit)(object)this, (int?)(((int)((EnemyUnit)this).Difficulty != 3) ? 1 : 2), (int?)null, (int?)null, (int?)null, 0f, true);
			yield return (BattleAction)(object)new ApplyStatusEffectAction<JunkoPurify>((Unit)(object)this, (int?)((EnemyUnit)this).Count2, (int?)null, (int?)null, (int?)null, 0f, true);
			yield return (BattleAction)(object)new ApplyStatusEffectAction<LongLight>((Unit)(object)this, (int?)((EnemyUnit)this).Count2, (int?)null, (int?)null, (int?)null, 0f, true);
			yield return (BattleAction)(object)new ApplyStatusEffectAction<WindGirl>((Unit)(object)this, (int?)((EnemyUnit)this).Count2, (int?)null, (int?)null, (int?)null, 0f, true);
		}

		private void OnDying(DieEventArgs args)
		{
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Expected O, but got Unknown
			//IL_0132: Unknown result type (might be due to invalid IL or missing references)
			//IL_013c: Expected O, but got Unknown
			((GameEventArgs)args).CancelBy((GameEntity)(object)this);
			((GameEntity)this).React(Reactor.op_Implicit((BattleAction)new RemoveAllNegativeStatusEffectAction((Unit)(object)this, 0.2f)));
			((GameEntity)this).React(Reactor.op_Implicit((BattleAction)(object)new ApplyStatusEffectAction<Invincible>((Unit)(object)this, (int?)999, (int?)0, (int?)0, (int?)0, 0f, true)));
			((GameEntity)this).React(Reactor.op_Implicit((BattleAction)(object)PerformAction.Chat((Unit)(object)((Unit)this).Battle.Player, Sagume9, 5f, 0f, 5.2f, true)));
			((GameEntity)this).React(Reactor.op_Implicit((BattleAction)(object)PerformAction.Chat((Unit)(object)this, Sagume10, 5f, 0f, 5.2f, true)));
			((GameEntity)this).React(Reactor.op_Implicit((BattleAction)(object)PerformAction.Chat((Unit)(object)((Unit)this).Battle.Player, Sagume11, 5f, 0f, 5.2f, true)));
			((GameEntity)this).React(Reactor.op_Implicit((BattleAction)(object)PerformAction.Chat((Unit)(object)this, Sagume12, 5f, 0f, 5.2f, true)));
			((GameEntity)this).React(Reactor.op_Implicit((BattleAction)(object)PerformAction.Chat((Unit)(object)this, Sagume13, 5f, 0f, 5.2f, true)));
			((GameEntity)this).React(Reactor.op_Implicit((BattleAction)new EscapeAction((Unit)(object)this)));
		}

		private void OnDamageReceived(DamageEventArgs args)
		{
			if (((Unit)this).Hp <= 300)
			{
				if (((Unit)this).IsInTurn)
				{
					_nextDevil = true;
					return;
				}
				Next = MoveType.move4;
				((EnemyUnit)this).UpdateTurnMoves();
			}
		}

		private IEnumerable<BattleAction> BuffAndClear()
		{
			yield return (BattleAction)(object)PerformAction.Animation((Unit)(object)this, "spell", 1f, (string)null, 0f, -1);
			yield return (BattleAction)(object)new ApplyStatusEffectAction<Invincible>((Unit)(object)this, (int?)null, (int?)((EnemyUnit)this).Count2, (int?)null, (int?)null, 0f, true);
			yield return (BattleAction)(object)new ApplyStatusEffectAction<YuyukoDeath>((Unit)(object)((Unit)this).Battle.Player, (int?)((EnemyUnit)this).Count2, (int?)null, (int?)null, (int?)null, 0.2f, true);
			yield return (BattleAction)(object)new ApplyStatusEffectAction<Vulnerable>((Unit)(object)((Unit)this).Battle.Player, (int?)null, (int?)((EnemyUnit)this).Count2, (int?)null, (int?)null, 0f, false);
			yield return (BattleAction)(object)new ApplyStatusEffectAction<LockedOn>((Unit)(object)((Unit)this).Battle.Player, (int?)((EnemyUnit)this).Count1, (int?)null, (int?)null, (int?)null, 0f, false);
		}

		private IEnumerable<BattleAction> SetMaxHp()
		{
			yield return (BattleAction)(object)PerformAction.Animation((Unit)(object)this, "skill1", 0.8f, (string)null, 0f, -1);
			if (((Unit)this).MaxHp >= 1453)
			{
				yield return (BattleAction)new HealAction((Unit)(object)this, (Unit)(object)this, ((Unit)this).MaxHp - ((Unit)this).Hp * 2, (HealType)0, 0.2f);
			}
			else
			{
				((GameEntity)this).GameRun.SetEnemyHpAndMaxHp(1969, 1970, (EnemyUnit)(object)this, false);
			}
		}

		protected override IEnumerable<IEnemyMove> GetTurnMoves()
		{
			switch (Next)
			{
			case MoveType.move1:
				yield return ((EnemyUnit)this).AttackMove(move1, "ERinShoot1", ((EnemyUnit)this).Damage1, ((EnemyUnit)this).Count1, false, "Instant", true);
				break;
			case MoveType.move2:
				yield return ((EnemyUnit)this).AttackMove(move2, "CSweet020", ((EnemyUnit)this).Damage2, 2, true, "Instant", true);
				yield return (IEnemyMove)new SimpleEnemyMove(Intention.Defend(), BasicDefendAction());
				break;
			case MoveType.move3:
				yield return (IEnemyMove)new SimpleEnemyMove(Intention.SpellCard(move3, (int?)null, (int?)null, false), BuffAndClear());
				yield return ((EnemyUnit)this).ClearMove(0f);
				break;
			case MoveType.move4:
				yield return (IEnemyMove)new SimpleEnemyMove(Intention.SpellCard(move4, (int?)null, (int?)null, false), SetMaxHp());
				yield return ((EnemyUnit)this).ClearMove(0f);
				break;
			default:
				throw new ArgumentOutOfRangeException();
			}
		}

		private IEnumerable<BattleAction> BasicDefendAction()
		{
			yield return (BattleAction)new CastBlockShieldAction((Unit)(object)this, ((EnemyUnit)this).Defend, 0, (BlockShieldType)1, true);
		}

		protected override void UpdateMoveCounters()
		{
			if (_nextDevil)
			{
				Next = MoveType.move4;
				_nextDevil = false;
				return;
			}
			MoveType next = Next;
			if (1 == 0)
			{
			}
			MoveType next2 = next switch
			{
				MoveType.move1 => MoveType.move2, 
				MoveType.move2 => MoveType.move3, 
				MoveType.move3 => MoveType.move1, 
				MoveType.move4 => MoveType.move1, 
				_ => MoveType.move1, 
			};
			if (1 == 0)
			{
			}
			Next = next2;
		}
	}
	public sealed class KijinSeijaSagumeModel : UnitModelTemplate
	{
		public override IdContainer GetId()
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return IdContainer.op_Implicit("KijinSeijaSagume");
		}

		public override LocalizationOption LoadLocalization()
		{
			return null;
		}

		public override ModelOption LoadModelOptions()
		{
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Expected O, but got Unknown
			return new ModelOption(UniTask.FromResult<Sprite>(ResourceLoader.LoadSprite("KijinSeijaSagume.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 200, (Vector2?)null)));
		}

		public override UnitModelConfig MakeConfig()
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: 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_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_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			UnitModelConfig val = ObjectExtensions.Copy<UnitModelConfig>(UnitModelConfig.FromName("Sakuya"));
			val.Name = "KijinSeijaSagume";
			val.Flip = true;
			val.Type = 0;
			val.Offset = new Vector2(0f, 0.04f);
			val.SpellColor = (IReadOnlyList<Color32>)(object)new Color32[4]
			{
				new Color32((byte)104, (byte)15, (byte)5, byte.MaxValue),
				new Color32(byte.MaxValue, (byte)46, (byte)72, byte.MaxValue),
				new Color32((byte)74, (byte)0, (byte)1, (byte)150),
				new Color32(byte.MaxValue, (byte)46, (byte)72, byte.MaxValue)
			};
			return val;
		}

		public override UniTask<Sprite> LoadSpellSprite()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			return UniTask.FromResult<Sprite>((Sprite)null);
		}
	}
}
namespace KijinSeijaMod.Enemies.Template
{
	public abstract class KijinSeijaEnemyGroupTemplate : EnemyGroupTemplate
	{
		public override IdContainer GetId()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			return IdContainer.op_Implicit(KijinSeijaDefaultConfig.DefaultID((EntityDefinition)(object)this));
		}

		public override EnemyGroupConfig MakeConfig()
		{
			return KijinSeijaDefaultConfig.DefaultEnemyGroupConfig();
		}

		public EnemyGroupConfig GetDefaultEnemyGroupConfig()
		{
			return KijinSeijaDefaultConfig.DefaultEnemyGroupConfig();
		}
	}
	public class KijinSeijaEnemyUnitTemplate : EnemyUnitTemplate
	{
		public override IdContainer GetId()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			return IdContainer.op_Implicit(KijinSeijaDefaultConfig.DefaultID((EntityDefinition)(object)this));
		}

		public override EnemyUnitConfig MakeConfig()
		{
			return KijinSeijaDefaultConfig.DefaultEnemyUnitConfig();
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)KijinSeijaLocalization.EnemiesUnitBatchLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override Type TemplateType()
		{
			return typeof(EnemyUnitTemplate);
		}

		public EnemyUnitConfig GetDefaultEnemyUnitConfig()
		{
			return KijinSeijaDefaultConfig.DefaultEnemyUnitConfig();
		}
	}
}
namespace KijinSeijaMod.Config
{
	public struct CustomConfigEntry<T>
	{
		public T Value { get; set; }

		public string Section { get; set; }

		public string Key { get; set; }

		public string Description { get; set; }

		public CustomConfigEntry(T value, string section, string key, string description)
		{
			Value = value;
			Section = section;
			Key = key;
			Description = description;
		}
	}
	public sealed class KijinSeijaDefaultConfig
	{
		private static readonly string OwnerName = BepinexPlugin.modUniqueID;

		public static string DefaultID(EntityDefinition entity)
		{
			string name = ((object)entity).GetType().Name;
			return name.Remove(name.Length - 3);
		}

		public static CardConfig DefaultCardConfig()
		{
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0192: Unknown result type (might be due to invalid IL or missing references)
			//IL_0199: Expected O, but got Unknown
			return new CardConfig(0, "", 10, true, new string[0][], "", "", 0, false, true, false, true, true, (Rarity)0, (CardType)0, (TargetType?)null, (IReadOnlyList<ManaColor>)new List<ManaColor>(), false, default(ManaGroup), (ManaGroup?)null, (ManaGroup?)null, (ManaGroup?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (ManaGroup?)null, (ManaGroup?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (Keyword)0, (Keyword)0, false, (Keyword)0, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>(), OwnerName, "", "", "", false, (string)null, (IReadOnlyList<string>)new List<string>());
		}

		public static ExhibitConfig DefaultExhibitConfig()
		{
			//IL_0032: 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_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			return new ExhibitConfig(0, "", 10, false, false, false, false, (AppearanceType)3, OwnerName, (ExhibitLosableType)1, (Rarity)3, (int?)null, (int?)null, (int?)null, (ManaGroup?)default(ManaGroup), (ManaColor?)null, (ManaColor?)(ManaColor)1, 1, false, (int?)null, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}

		public static StatusEffectConfig DefaultStatusEffectConfig()
		{
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Expected O, but got Unknown
			return new StatusEffectConfig(0, "", 10, (StatusEffectType)0, false, true, (int?)null, true, (StackType?)(StackType)0, false, (StackType?)(StackType)0, (DurationDecreaseTiming)0, false, (StackType?)(StackType)3, (StackType?)(StackType)3, false, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (string)null, "Default", "Default", "Default");
		}

		public static UltimateSkillConfig DefaultUltConfig()
		{
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Expected O, but got Unknown
			return new UltimateSkillConfig("", 10, 100, 100, 2, (UsRepeatableType)1, 1, 0, 0, (Keyword)256, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}

		public static EnemyUnitConfig DefaultEnemyUnitConfig()
		{
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0157: Unknown result type (might be due to invalid IL or missing references)
			//IL_015d: Expected O, but got Unknown
			return new EnemyUnitConfig("", false, false, (IReadOnlyList<ManaColor>)new List<ManaColor> { (ManaColor)6 }, 10, "", "#ffff", (EnemyType)3, false, (float?)null, (int?)null, 250, (int?)10, (int?)10, (int?)10, (int?)10, (int?)1, (int?)15, (int?)1, (int?)2, (int?)250, (int?)10, (int?)10, (int?)10, (int?)10, (int?)1, (int?)15, (int?)1, (int?)2, (int?)250, (int?)10, (int?)10, (int?)10, (int?)10, (int?)1, (int?)15, (int?)1, (int?)2, new MinMax(100, 100), new MinMax(100, 100), (IReadOnlyList<string>)new List<string> { GunNameID.GetGunFromId(800) }, (IReadOnlyList<string>)new List<string> { GunNameID.GetGunFromId(800) }, (IReadOnlyList<string>)new List<string> { GunNameID.GetGunFromId(800) }, (IReadOnlyList<string>)new List<string> { GunNameID.GetGunFromId(800) });
		}

		public static EnemyGroupConfig DefaultEnemyGroupConfig()
		{
			//IL_002d: 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_0043: Expected O, but got Unknown
			return new EnemyGroupConfig("", false, (IReadOnlyList<string>)new List<string>(), "", "Single", (IReadOnlyList<string>)new List<string>(), (EnemyType)3, false, 1f, true, new Vector2(-4f, 0.5f), "", "", (string)null);
		}
	}
}
namespace KijinSeijaMod.Cards
{
	public sealed class KijinSeijaDynamicCostDef : KijinSeijaCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			CardConfig defaultCardConfig = GetDefaultCardConfig();
			defaultCardConfig.GunName = GunNameID.GetGunFromId(400);
			defaultCardConfig.Colors = new List<ManaColor> { (ManaColor)6 };
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 10;
			defaultCardConfig.Cost = val;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 10;
			defaultCardConfig.UpgradedCost = val;
			defaultCardConfig.Rarity = (Rarity)0;
			defaultCardConfig.Type = (CardType)3;
			defaultCardConfig.TargetType = (TargetType)0;
			defaultCardConfig.Value1 = 2;
			defaultCardConfig.UpgradedValue1 = 3;
			defaultCardConfig.ToolPlayableTimes = 3;
			defaultCardConfig.Keywords = (Keyword)65536;
			defaultCardConfig.UpgradedKeywords = (Keyword)65536;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 1;
			defaultCardConfig.Mana = val;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 2;
			defaultCardConfig.UpgradedMana = val;
			defaultCardConfig.Illustrator = "";
			defaultCardConfig.Index = CardIndexGenerator.GetUniqueIndex(defaultCardConfig);
			return defaultCardConfig;
		}
	}
	[EntityLogic(typeof(KijinSeijaDynamicCostDef))]
	public sealed class KijinSeijaDynamicCost : KijinSeijaCard
	{
		protected override ManaGroup AdditionalCost
		{
			get
			{
				//IL_0026: 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_0041: Unknown result type (might be due to invalid IL or missing references)
				//IL_008a: Unknown resul