Decompiled source of Sanae Kochiya v0.7.5

Sanae_Kochiya.dll

Decompiled 6 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using AddWatermark;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using Cysharp.Threading.Tasks;
using HarmonyLib;
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.Randoms;
using LBoL.Core.StatusEffects;
using LBoL.Core.Units;
using LBoL.EntityLib.Cards;
using LBoL.EntityLib.Cards.Adventure;
using LBoL.EntityLib.Cards.Character.Reimu;
using LBoL.EntityLib.Cards.Enemy;
using LBoL.EntityLib.Cards.Neutral.NoColor;
using LBoL.EntityLib.Cards.Neutral.TwoColor;
using LBoL.EntityLib.Cards.Tool;
using LBoL.EntityLib.EnemyUnits.Character;
using LBoL.EntityLib.Exhibits;
using LBoL.EntityLib.StatusEffects.Basic;
using LBoL.EntityLib.StatusEffects.Enemy;
using LBoL.EntityLib.StatusEffects.ExtraTurn;
using LBoL.EntityLib.StatusEffects.Neutral.TwoColor;
using LBoL.EntityLib.StatusEffects.Others;
using LBoL.Presentation;
using LBoLEntitySideloader;
using LBoLEntitySideloader.Attributes;
using LBoLEntitySideloader.Entities;
using LBoLEntitySideloader.Resource;
using LBoLEntitySideloader.Utils;
using Sanae_Kochiya.Cards.Template;
using Sanae_Kochiya.Exhibits;
using Sanae_Kochiya.GunName;
using Sanae_Kochiya.ImageLoader;
using Sanae_Kochiya.Source.Boss;
using Sanae_Kochiya.Source.Cards.Offcolor;
using Sanae_Kochiya.Source.Cards.Starter;
using Sanae_Kochiya.Source.Config;
using Sanae_Kochiya.Source.Loadouts;
using Sanae_Kochiya.Source.Localization;
using Sanae_Kochiya.Source.StatusEffects;
using UnityEngine;
using UnityEngine.Experimental.Rendering;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: 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("Sanae_Kochiya")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("Sanae_Kochiya")]
[assembly: AssemblyTitle("Sanae_Kochiya")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[HarmonyPatch(typeof(Siji))]
internal class Siji_OnBattleStarted_Patch
{
	[HarmonyPatch("OnBattleStarted", new Type[] { typeof(GameEventArgs) })]
	private static bool Prefix(Siji __instance, ref IEnumerable<BattleAction> __result, GameEventArgs arg)
	{
		//IL_0151: Unknown result type (might be due to invalid IL or missing references)
		//IL_015b: Expected O, but got Unknown
		string id = ((GameEntity)((GameEntity)__instance).GameRun.Player).Id;
		if (id == "Sanae_Kochiya")
		{
			string text = "净颇梨审判";
			text += " -博丽灵梦-";
			Type typeFromHandle = typeof(Sanae_KochiyaBossDef.Sanae_Kochiya);
			string text2 = LocalizationExtensions.LocalizeFormat("Chat.Siji2", new object[1] { ((Unit)((Unit)__instance).Battle.Player).GetName() });
			int count = ((Unit)__instance).Battle.Player.Exhibits.Count;
			int value = 1;
			if (count >= 20)
			{
				value = 3;
			}
			else if (count >= 10)
			{
				value = 2;
			}
			__result = new List<BattleAction>
			{
				(BattleAction)(object)PerformAction.Chat((Unit)(object)__instance, LocalizationExtensions.Localize("Chat.Siji1", true), 3f, 0f, 3.2f, true),
				(BattleAction)(object)PerformAction.Animation((Unit)(object)__instance, "shoot2", 0f, (string)null, 0f, -1),
				(BattleAction)(object)PerformAction.Chat((Unit)(object)__instance, text2, 3f, 0f, 3.2f, true),
				(BattleAction)(object)PerformAction.Animation((Unit)(object)__instance, "spell", 0f, (string)null, 0f, -1),
				(BattleAction)(object)PerformAction.Spell((Unit)(object)__instance, text),
				(BattleAction)new SpawnEnemyAction((EnemyUnit)(object)__instance, typeFromHandle, 2, 0f, 0.3f, false),
				(BattleAction)(object)new ApplyStatusEffectAction<SijiZui>((Unit)(object)__instance, (int?)value, (int?)null, (int?)null, (int?)null, 0f, true)
			};
			return false;
		}
		return true;
	}
}
namespace Sanae_Kochiya
{
	[BepInPlugin("xeno.lbol.character.Sanae_Kochiya", "Sanae_Kochiya", "0.7.5")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInProcess("LBoL.exe")]
	public class BepinexPlugin : BaseUnityPlugin
	{
		public static string modUniqueID = "Sanae_Kochiya";

		public static string playerName = "Sanae";

		public static bool useInGameModel = true;

		public static string model_name = "Sanae";

		public static bool model_is_flipped = false;

		private static readonly Harmony harmony = PInfo.harmony;

		internal static ManualLogSource log;

		internal static TemplateSequenceTable sequenceTable = new TemplateSequenceTable(0);

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

		internal static DirectorySource directorySource = new DirectorySource("xeno.lbol.character.Sanae_Kochiya", "");

		public static ConfigEntry<bool> modExclusiveConfig;

		private void Awake()
		{
			log = ((BaseUnityPlugin)this).Logger;
			modExclusiveConfig = ((BaseUnityPlugin)this).Config.Bind<bool>("Act1Boss", "Act1Boss", true, "Enables the Act 1 Sanae boss and Sanae common Exhibits, for non-Sanae characters.");
			Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject);
			((Object)((Component)this).gameObject).hideFlags = (HideFlags)61;
			CardIndexGenerator.PromiseClearIndexSet();
			EntityManager.RegisterSelf();
			harmony.PatchAll();
			Func<Sprite> func = () => ResourceLoader.LoadSprite("BossIconSanae.png", (IResourceSource)(object)directorySource, (Rect?)null, 1, (Vector2?)null);
			EnemyUnitTemplate.AddBossNodeIcon("Sanae_Kochiya", func, (Assembly)null);
			if (Chainloader.PluginInfos.ContainsKey("neo.lbol.tools.watermark"))
			{
				WatermarkWrapper.ActivateWatermark();
			}
		}

		private void OnDestroy()
		{
			if (harmony != null)
			{
				harmony.UnpatchSelf();
			}
		}
	}
	public static class PInfo
	{
		public const string GUID = "xeno.lbol.character.Sanae_Kochiya";

		public const string Name = "Sanae_Kochiya";

		public const string version = "0.7.5";

		public static readonly Harmony harmony = new Harmony("xeno.lbol.character.Sanae_Kochiya");
	}
	public sealed class SampleCharacterPlayerDef : PlayerUnitTemplate
	{
		[EntityLogic(typeof(SampleCharacterPlayerDef))]
		public sealed class Sanae_Kochiya : PlayerUnit
		{
		}

		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)SampleCharacterLocalization.PlayerUnitBatchLoc.AddEntity((EntityDefinition)(object)this);
		}

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

		public override PlayerUnitConfig MakeConfig()
		{
			return SampleCharacterLoadouts.playerUnitConfig;
		}
	}
	internal class WatermarkWrapper
	{
		[MethodImpl(MethodImplOptions.NoInlining)]
		internal static void ActivateWatermark()
		{
			API.ActivateWatermark();
		}
	}
}
namespace Sanae_Kochiya.SampleCharacterUlt
{
	public sealed class SanaeUltUDef : SampleCharacterUltTemplate
	{
		public override UltimateSkillConfig MakeConfig()
		{
			UltimateSkillConfig defaulUltConfig = GetDefaulUltConfig();
			defaulUltConfig.PowerCost = 50;
			defaulUltConfig.PowerPerLevel = 100;
			defaulUltConfig.MaxPowerLevel = 2;
			defaulUltConfig.RepeatableType = (UsRepeatableType)0;
			defaulUltConfig.Damage = 12;
			defaulUltConfig.Value1 = 1;
			defaulUltConfig.RelativeEffects = new List<string> { "Amulet", "AmuletForCard" };
			return defaulUltConfig;
		}
	}
	[EntityLogic(typeof(SanaeUltUDef))]
	public sealed class SanaeUltU : UltimateSkill
	{
		public override DamageInfo Damage => CalculateDamage();

		public SanaeUltU()
		{
			((UltimateSkill)this).TargetType = (TargetType)2;
			((UltimateSkill)this).GunName = GunNameID.GetGunFromId(39050);
		}

		private DamageInfo CalculateDamage()
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			DamageInfo damage;
			if (((UltimateSkill)this).Battle == null || !((Unit)((UltimateSkill)this).Owner).HasStatusEffect<OmikujiBonusSe>())
			{
				damage = ((UltimateSkill)this).Damage;
				return DamageInfo.Attack(((DamageInfo)(ref damage)).Amount, true);
			}
			damage = ((UltimateSkill)this).Damage;
			return DamageInfo.Attack(((DamageInfo)(ref damage)).Amount + (float)((StatusEffect)((Unit)((UltimateSkill)this).Owner).GetStatusEffect<OmikujiBonusSe>()).Level, true);
		}

		protected override IEnumerable<BattleAction> Actions(UnitSelector selector)
		{
			Unit[] targets = selector.GetUnits(((UltimateSkill)this).Battle);
			yield return (BattleAction)new DamageAction((Unit)(object)((UltimateSkill)this).Owner, (IEnumerable<Unit>)targets, ((UltimateSkill)this).Damage, ((UltimateSkill)this).GunName, (GunType)0);
			if (!((UltimateSkill)this).Battle.BattleShouldEnd)
			{
				yield return (BattleAction)(object)new ApplyStatusEffectAction<AmuletForCard>((Unit)(object)((UltimateSkill)this).Owner, (int?)((UltimateSkill)this).Value1, (int?)0, (int?)0, (int?)0, 0.2f, true);
				yield return (BattleAction)(object)new ApplyStatusEffectAction<Amulet>((Unit)(object)((UltimateSkill)this).Owner, (int?)((UltimateSkill)this).Value1, (int?)0, (int?)0, (int?)0, 0.2f, true);
			}
		}
	}
	public sealed class SanaeUltRDef : SampleCharacterUltTemplate
	{
		public override UltimateSkillConfig MakeConfig()
		{
			UltimateSkillConfig defaulUltConfig = GetDefaulUltConfig();
			defaulUltConfig.PowerCost = 60;
			defaulUltConfig.PowerPerLevel = 120;
			defaulUltConfig.MaxPowerLevel = 2;
			defaulUltConfig.RepeatableType = (UsRepeatableType)0;
			defaulUltConfig.Damage = 20;
			defaulUltConfig.Value1 = 2;
			return defaulUltConfig;
		}
	}
	[EntityLogic(typeof(SanaeUltRDef))]
	public sealed class SanaeUltR : UltimateSkill
	{
		public int GrowthCount => ((GameEntity)this).GameRun.UltimateUseCount;

		public override DamageInfo Damage => CalculateDamage();

		public SanaeUltR()
		{
			((UltimateSkill)this).TargetType = (TargetType)1;
			((UltimateSkill)this).GunName = GunNameID.GetGunFromId(13000);
		}

		private DamageInfo CalculateDamage()
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			DamageInfo damage;
			if (((UltimateSkill)this).Battle == null || !((Unit)((UltimateSkill)this).Owner).HasStatusEffect<OmikujiBonusSe>())
			{
				damage = ((UltimateSkill)this).Damage;
				return DamageInfo.Attack(((DamageInfo)(ref damage)).Amount, true);
			}
			damage = ((UltimateSkill)this).Damage;
			return DamageInfo.Attack(((DamageInfo)(ref damage)).Amount + (float)((StatusEffect)((Unit)((UltimateSkill)this).Owner).GetStatusEffect<OmikujiBonusSe>()).Level, true);
		}

		protected override IEnumerable<BattleAction> Actions(UnitSelector selector)
		{
			ManaGroup manaA = ManaGroup.Single(CollectionsExtensions.Sample<ManaColor>((IEnumerable<ManaColor>)ManaColors.Colors, ((GameEntity)this).GameRun.BattleRng));
			ManaGroup manaB = ManaGroup.Single(CollectionsExtensions.Sample<ManaColor>((IEnumerable<ManaColor>)ManaColors.Colors, ((GameEntity)this).GameRun.BattleRng));
			Unit enemy = (Unit)(object)selector.GetEnemy(((UltimateSkill)this).Battle);
			if (((ManaGroup)(ref manaA)).HasColor((ManaColor)1))
			{
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(801), 0.05f);
			}
			else if (((ManaGroup)(ref manaA)).HasColor((ManaColor)2))
			{
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(802), 0.05f);
			}
			else if (((ManaGroup)(ref manaA)).HasColor((ManaColor)3))
			{
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(804), 0.05f);
			}
			else if (((ManaGroup)(ref manaA)).HasColor((ManaColor)4))
			{
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(803), 0.05f);
			}
			else if (((ManaGroup)(ref manaA)).HasColor((ManaColor)5))
			{
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(805), 0.05f);
			}
			else if (((ManaGroup)(ref manaA)).HasColor((ManaColor)6))
			{
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(806), 0.05f);
			}
			else
			{
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(807), 0.05f);
			}
			if (((ManaGroup)(ref manaB)).HasColor((ManaColor)1))
			{
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(801), 0.1f);
			}
			else if (((ManaGroup)(ref manaB)).HasColor((ManaColor)2))
			{
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(802), 0.1f);
			}
			else if (((ManaGroup)(ref manaB)).HasColor((ManaColor)3))
			{
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(804), 0.1f);
			}
			else if (((ManaGroup)(ref manaB)).HasColor((ManaColor)4))
			{
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(803), 0.1f);
			}
			else if (((ManaGroup)(ref manaB)).HasColor((ManaColor)5))
			{
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(805), 0.1f);
			}
			else if (((ManaGroup)(ref manaB)).HasColor((ManaColor)6))
			{
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(806), 0.1f);
			}
			else
			{
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(807), 0.1f);
			}
			yield return (BattleAction)new DamageAction((Unit)(object)((UltimateSkill)this).Owner, enemy, ((UltimateSkill)this).Damage, GunNameID.GetGunFromId(13180), (GunType)0);
			if (!((UltimateSkill)this).Battle.BattleShouldEnd)
			{
				yield return (BattleAction)new GainManaAction(manaA);
				yield return (BattleAction)new GainManaAction(manaB);
			}
		}
	}
	public class SampleCharacterUltTemplate : 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(SampleCharacterDefaultConfig.GetDefaultID((EntityDefinition)(object)this));
		}

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

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

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

		public UltimateSkillConfig GetDefaulUltConfig()
		{
			return SampleCharacterDefaultConfig.GetDefaultUltConfig();
		}
	}
}
namespace Sanae_Kochiya.model
{
	public sealed class SampleCharacterModel : UnitModelTemplate
	{
		public static bool useInGameModel = BepinexPlugin.useInGameModel;

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

		public static string spellsprite_name = "SampleCharacterStand.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 ((EntityDefinition)new SampleCharacterPlayerDef()).UniqueId;
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)SampleCharacterLocalization.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.model_is_flipped;
				return val;
			}
			UnitModelConfig val2 = ObjectExtensions.Copy<UnitModelConfig>(((UnitModelTemplate)this).DefaultConfig());
			val2.Flip = BepinexPlugin.model_is_flipped;
			val2.Type = 0;
			val2.Offset = new Vector2(0f, -0.1f);
			val2.HasSpellPortrait = true;
			return val2;
		}
	}
}
namespace Sanae_Kochiya.ImageLoader
{
	public sealed class SampleCharacterImageLoader
	{
		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, "", false);
			return val;
		}

		public static ExhibitSprites LoadExhibitSprite(ExhibitTemplate exhibit)
		{
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Expected O, but got Unknown
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(IdContainer.op_Implicit(((EntityDefinition)exhibit).GetId()) + s + file_extension, BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			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 Sanae_Kochiya.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 Sanae_Kochiya.Exhibits
{
	public class SampleCharacterExhibitTemplate : 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(SampleCharacterDefaultConfig.GetDefaultID((EntityDefinition)(object)this));
		}

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

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

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

		public ExhibitConfig GetDefaultExhibitConfig()
		{
			return SampleCharacterDefaultConfig.GetDefaultExhibitConfig();
		}
	}
}
namespace Sanae_Kochiya.Cards.Template
{
	public class SampleCharacterCard : Card
	{
	}
	public static class CardIndexGenerator
	{
		private static int? initial_offset = null;

		private static HashSet<int> uniqueIds = new HashSet<int>();

		public const int milx1 = 1000000;

		public static HashSet<int> UniqueIds
		{
			get
			{
				if (uniqueIds == null)
				{
					uniqueIds = new HashSet<int>();
				}
				return uniqueIds;
			}
		}

		public static int Initial_offset
		{
			get
			{
				if (!initial_offset.HasValue)
				{
					int num = 0;
					if (UniqueTracker.Instance.configIndexes.TryGetValue(typeof(CardConfig), out var value))
					{
						num = value.Where((int i) => i >= 1000000).DefaultIfEmpty().Max() / 1000000;
					}
					num++;
					initial_offset = num * 1000000;
				}
				return initial_offset.Value;
			}
		}

		internal static void PromiseClearIndexSet()
		{
			EntityManager.AddPostLoadAction((Action)delegate
			{
				uniqueIds = null;
			}, (Assembly)null);
		}

		public static int GetUniqueIndex(CardConfig config)
		{
			//IL_0009: 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_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Expected I4, but got Unknown
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			int num = Initial_offset;
			num += ((!((Enum)config.Keywords).HasFlag((Enum)(object)(Keyword)1)) ? ((config.Rarity + 1) * 100000) : 0);
			int num2 = ((config.Colors.Count > 1) ? 9 : ((int)config.Colors[0]));
			num += num2 * 10000;
			int num3;
			if (!config.IsXCost && !((Enum)config.Keywords).HasFlag((Enum)(object)(Keyword)32768))
			{
				ManaGroup cost = config.Cost;
				if (((ManaGroup)(ref cost)).Total <= 9)
				{
					cost = config.Cost;
					num3 = ((ManaGroup)(ref cost)).Total;
					goto IL_00a8;
				}
			}
			num3 = 9;
			goto IL_00a8;
			IL_00a8:
			int num4 = num3;
			num += num4 * 1000;
			num += config.Type * 100;
			if (UniqueTracker.Instance.configIndexes.TryGetValue(typeof(CardConfig), out var value))
			{
				for (; value.Contains(num); num++)
				{
				}
			}
			return num;
		}
	}
	public abstract class SampleCharacterCardTemplate : CardTemplate
	{
		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(SampleCharacterDefaultConfig.GetDefaultID((EntityDefinition)(object)this));
		}

		public override CardImages LoadCardImages()
		{
			return SampleCharacterImageLoader.LoadCardImages((CardTemplate)(object)this);
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)SampleCharacterLocalization.CardsBatchLoc.AddEntity((EntityDefinition)(object)this);
		}

		public CardConfig GetCardDefaultConfig()
		{
			return SampleCharacterDefaultConfig.GetCardDefaultConfig();
		}
	}
}
namespace Sanae_Kochiya.Source.StatusEffects
{
	public sealed class AmuletForEnemyDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}

		public override Sprite LoadSprite()
		{
			return ResourceLoader.LoadSprite("Bulwark.png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
		}
	}
	[EntityLogic(typeof(AmuletForEnemyDef))]
	public sealed class AmuletForEnemy : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).Highlight = true;
			((StatusEffect)this).HandleOwnerEvent<StatusEffectEventArgs>(((StatusEffect)this).Owner.StatusEffectChanged, (GameEventHandler<StatusEffectEventArgs>)OnChangeStatus);
			((StatusEffect)this).ReactOwnerEvent<CardsEventArgs>(((StatusEffect)this).Battle.CardsAddedToDiscard, (EventSequencedReactor<CardsEventArgs>)OnAddCard);
			((StatusEffect)this).ReactOwnerEvent<CardsEventArgs>(((StatusEffect)this).Battle.CardsAddedToHand, (EventSequencedReactor<CardsEventArgs>)OnAddCard);
			((StatusEffect)this).ReactOwnerEvent<CardsEventArgs>(((StatusEffect)this).Battle.CardsAddedToExile, (EventSequencedReactor<CardsEventArgs>)OnAddCard);
			((StatusEffect)this).ReactOwnerEvent<CardsAddingToDrawZoneEventArgs>(((StatusEffect)this).Battle.CardsAddedToDrawZone, (EventSequencedReactor<CardsAddingToDrawZoneEventArgs>)OnCardsAddedToDrawZone);
		}

		private void OnChangeStatus(StatusEffectEventArgs args)
		{
			if (args.Effect is AmuletForEnemy && ((StatusEffect)this).Level != 0)
			{
				((StatusEffect)this).Highlight = true;
			}
		}

		private IEnumerable<BattleAction> OnAddCard(CardsEventArgs args)
		{
			return ExileCard(args.Cards);
		}

		private IEnumerable<BattleAction> OnCardsAddedToDrawZone(CardsAddingToDrawZoneEventArgs args)
		{
			return ExileCard(args.Cards);
		}

		private IEnumerable<BattleAction> ExileCard(IEnumerable<Card> cards)
		{
			if (((StatusEffect)this).Level == 0)
			{
				yield break;
			}
			List<Card> candidate = cards.Where((Card card) => (int)card.CardType != 7 && (int)card.Zone != 4).ToList();
			if (candidate.Count == 0)
			{
				yield break;
			}
			if (((StatusEffect)this).Level < candidate.Count)
			{
				candidate.RemoveRange(((StatusEffect)this).Level, candidate.Count - ((StatusEffect)this).Level);
			}
			<>n__0();
			if (((Unit)((StatusEffect)this).Battle.Player).HasStatusEffect<RainbowMarketSe>())
			{
				foreach (Card card2 in candidate)
				{
					yield return (BattleAction)new MoveCardAction(card2, (CardZone)4);
				}
			}
			else
			{
				yield return (BattleAction)new ExileManyCardAction((IEnumerable<Card>)candidate);
			}
			((StatusEffect)this).Level = ((StatusEffect)this).Level - candidate.Count;
			if (((StatusEffect)this).Level <= 0)
			{
				((StatusEffect)this).Highlight = false;
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class GraceSetupDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(GraceSetupDef))]
	public sealed class GraceSetup : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed);
			((StatusEffect)this).ReactOwnerEvent<UsUsingEventArgs>(((StatusEffect)this).Battle.UsUsed, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsed);
		}

		private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args)
		{
			if (!((StatusEffect)this).Battle.BattleShouldEnd)
			{
				yield return ((StatusEffect)this).BuffAction<Grace>(((StatusEffect)this).Level, 0, 0, 0, 0.1f);
				yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
			}
		}

		private IEnumerable<BattleAction> OnUsUsed(UsUsingEventArgs args)
		{
			if (!((StatusEffect)this).Battle.BattleShouldEnd)
			{
				yield return ((StatusEffect)this).BuffAction<Grace>(((StatusEffect)this).Level, 0, 0, 0, 0.1f);
				yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
			}
		}
	}
	public sealed class NextTurnLoseFireDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.Type = (StatusEffectType)1;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(NextTurnLoseFireDef))]
	public sealed class NextTurnLoseFire : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnTurnStarted);
		}

		private IEnumerable<BattleAction> OnTurnStarted(UnitEventArgs args)
		{
			if (!((StatusEffect)this).Battle.BattleShouldEnd)
			{
				<>n__0();
				yield return ((StatusEffect)this).DebuffAction<FirepowerNegative>(((StatusEffect)this).Owner, ((StatusEffect)this).Level, 0, 0, 0, true, 0.1f);
				yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class NextTurnLosePowerDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.Type = (StatusEffectType)2;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(NextTurnLosePowerDef))]
	public sealed class NextTurnLosePower : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnTurnStarted);
		}

		private IEnumerable<BattleAction> OnTurnStarted(UnitEventArgs args)
		{
			if (!((StatusEffect)this).Battle.BattleShouldEnd)
			{
				<>n__0();
				yield return (BattleAction)new LosePowerAction(((StatusEffect)this).Level);
				yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class OmikujiBonusSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(OmikujiBonusSeDef))]
	public sealed class OmikujiBonusSe : StatusEffect
	{
	}
	public sealed class SanaeAbilityManaSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = false;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(SanaeAbilityManaSeDef))]
	public sealed class SanaeAbilityManaSe : StatusEffect
	{
		public ManaGroup Mana
		{
			get
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				//IL_0012: Unknown result type (might be due to invalid IL or missing references)
				//IL_0013: Unknown result type (might be due to invalid IL or missing references)
				//IL_0016: Unknown result type (might be due to invalid IL or missing references)
				ManaGroup result = default(ManaGroup);
				((ManaGroup)(ref result)).Any = 1;
				return result;
			}
		}

		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed);
		}

		private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args)
		{
			if (args.Card is SanaeAbilityMana || (int)args.Card.CardType != 4)
			{
				yield break;
			}
			Card card = args.Card.Clone(false);
			card.IsCopy = false;
			card.IsEthereal = true;
			ManaGroup cost = args.Card.Cost;
			int argsCost = ((ManaGroup)(ref cost)).Any;
			cost = card.Cost;
			int cardCost = ((ManaGroup)(ref cost)).Any;
			card.IncreaseBaseCost(Mana);
			if (argsCost != cardCost)
			{
				if (argsCost != 9)
				{
					for (int j = 0; j < argsCost - cardCost; j++)
					{
						card.IncreaseBaseCost(Mana);
					}
				}
				else
				{
					for (int i = 1; i < argsCost - cardCost; i++)
					{
						card.IncreaseBaseCost(Mana);
					}
				}
			}
			yield return (BattleAction)new AddCardsToHandAction((Card[])(object)new Card[1] { card });
		}
	}
	public sealed class SanaeAbilityShuffleSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = false;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(SanaeAbilityShuffleSeDef))]
	public sealed class SanaeAbilityShuffleSe : StatusEffect
	{
		public ManaGroup Mana
		{
			get
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				//IL_0012: Unknown result type (might be due to invalid IL or missing references)
				//IL_0013: Unknown result type (might be due to invalid IL or missing references)
				//IL_0016: Unknown result type (might be due to invalid IL or missing references)
				ManaGroup result = default(ManaGroup);
				((ManaGroup)(ref result)).Philosophy = 1;
				return result;
			}
		}

		protected override void OnAdded(Unit unit)
		{
			GameRunController gameRun = ((GameEntity)this).GameRun;
			int canViewDrawZoneActualOrder = gameRun.CanViewDrawZoneActualOrder + 1;
			gameRun.CanViewDrawZoneActualOrder = canViewDrawZoneActualOrder;
			((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed);
			((StatusEffect)this).ReactOwnerEvent<GameEventArgs>(((StatusEffect)this).Battle.BattleEnding, (EventSequencedReactor<GameEventArgs>)OnBattleEnding);
		}

		private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args)
		{
			if (!((StatusEffect)this).Battle.BattleShouldEnd && (int)args.Card.CardType != 3 && args.Card != Library.CreateCard(typeof(SanaeAbilityShuffle)))
			{
				yield return (BattleAction)new ReshuffleAction();
				if ((int)args.Card.CardType == 4)
				{
					yield return (BattleAction)new GainManaAction(Mana);
					yield return (BattleAction)new DrawCardAction();
				}
			}
		}

		private IEnumerable<BattleAction> OnBattleEnding(GameEventArgs args)
		{
			if (((Unit)((StatusEffect)this).Battle.Player).IsAlive)
			{
				GameRunController gameRun = ((GameEntity)this).GameRun;
				int num = gameRun.CanViewDrawZoneActualOrder - 1;
				gameRun.CanViewDrawZoneActualOrder = num;
			}
			yield break;
		}
	}
	public sealed class SanaeAttackBlockSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.Type = (StatusEffectType)1;
			defaultStatusEffectConfig.HasLevel = false;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(SanaeAttackBlockSeDef))]
	public sealed class SanaeAttackBlockSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<BlockShieldEventArgs>(((Unit)((StatusEffect)this).Battle.Player).BlockShieldCasted, (EventSequencedReactor<BlockShieldEventArgs>)OnBlockShieldCasted);
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnTurnStarted);
		}

		private IEnumerable<BattleAction> OnBlockShieldCasted(BlockShieldEventArgs args)
		{
			if (args.HasShield && args.Shield > 0f && ((StatusEffect)this).Owner.IsAlive)
			{
				yield return (BattleAction)new DamageAction(((StatusEffect)this).Owner, ((StatusEffect)this).Owner, new DamageInfo(args.Shield, (DamageType)1, false, false, false), (args.Shield > 30f) ? GunNameID.GetGunFromId(401) : GunNameID.GetGunFromId(400), (GunType)0);
			}
		}

		private IEnumerable<BattleAction> OnTurnStarted(UnitEventArgs args)
		{
			if (!((StatusEffect)this).Battle.BattleShouldEnd && ((StatusEffect)this).Owner.IsAlive)
			{
				yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
			}
		}
	}
	public sealed class SanaeAttackPowerSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.Type = (StatusEffectType)1;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(SanaeAttackPowerSeDef))]
	public sealed class SanaeAttackPowerSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(((StatusEffect)this).Owner.DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnDamageReceived);
		}

		private IEnumerable<BattleAction> OnDamageReceived(DamageEventArgs args)
		{
			DamageInfo damageInfo = args.DamageInfo;
			if ((int)((DamageInfo)(ref damageInfo)).DamageType == 2 && ((DamageInfo)(ref damageInfo)).Amount > 0f)
			{
				yield return (BattleAction)new GainPowerAction(((StatusEffect)this).Level);
			}
		}
	}
	public sealed class SanaeBlockSynergySeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasCount = true;
			defaultStatusEffectConfig.CountStackType = (StackType)0;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(SanaeBlockSynergySeDef))]
	public sealed class SanaeBlockSynergySe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted);
		}

		private IEnumerable<BattleAction> OnPlayerTurnStarted(GameEventArgs args)
		{
			if (!((StatusEffect)this).Battle.BattleShouldEnd)
			{
				<>n__0();
				yield return (BattleAction)new CastBlockShieldAction(((StatusEffect)this).Owner, ((StatusEffect)this).Count, ((StatusEffect)this).Level, (BlockShieldType)2, true);
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class SanaeChooseAttackSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(SanaeChooseAttackSeDef))]
	public sealed class SanaeChooseAttackSe : StatusEffect
	{
		public bool Grace = false;

		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).HandleOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsing, (GameEventHandler<CardUsingEventArgs>)OnCardUsing);
			((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed);
		}

		private void OnCardUsing(CardUsingEventArgs args)
		{
			if (((Unit)((StatusEffect)this).Battle.Player).HasStatusEffect<Grace>())
			{
				Grace = true;
			}
			else
			{
				Grace = false;
			}
		}

		private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args)
		{
			if (!((StatusEffect)this).Battle.BattleShouldEnd && ((int)args.Card.CardType == 1 || (int)args.Card.CardType == 2) && !Grace)
			{
				<>n__0();
				yield return ((StatusEffect)this).BuffAction<Grace>(((StatusEffect)this).Level, 0, 0, 0, 0.2f);
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class SanaeDrawDiscardSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(SanaeDrawDiscardSeDef))]
	public sealed class SanaeDrawDiscardSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnTurnStarted);
		}

		private IEnumerable<BattleAction> OnTurnStarted(UnitEventArgs args)
		{
			yield return (BattleAction)new DrawManyCardAction(((StatusEffect)this).Level);
			IReadOnlyList<Card> hand = ((StatusEffect)this).Battle.HandZone;
			if (hand != null && hand.Count > ((StatusEffect)this).Level && !((StatusEffect)this).Battle.BattleShouldEnd)
			{
				SelectCardInteraction interaction = new SelectCardInteraction(((StatusEffect)this).Level, ((StatusEffect)this).Level, (IEnumerable<Card>)hand, (SelectedCardHandling)0);
				yield return (BattleAction)new InteractionAction((Interaction)(object)interaction, false);
				IReadOnlyList<Card> discard = interaction.SelectedCards;
				yield return (BattleAction)new DiscardManyAction((IEnumerable<Card>)discard);
			}
			else if (hand != null && hand.Count > 0 && !((StatusEffect)this).Battle.BattleShouldEnd)
			{
				yield return (BattleAction)new DiscardManyAction((IEnumerable<Card>)hand);
			}
		}
	}
	public sealed class SanaeDrawDiscardZeroSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(SanaeDrawDiscardZeroSeDef))]
	public sealed class SanaeDrawDiscardZeroSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnTurnStarted);
		}

		private IEnumerable<BattleAction> OnTurnStarted(UnitEventArgs args)
		{
			yield return (BattleAction)new DrawManyCardAction(((StatusEffect)this).Level);
			IReadOnlyList<Card> hand = ((StatusEffect)this).Battle.HandZone;
			if (hand != null && hand.Count > 0 && !((StatusEffect)this).Battle.BattleShouldEnd)
			{
				SelectCardInteraction interaction = new SelectCardInteraction(0, ((StatusEffect)this).Level, (IEnumerable<Card>)hand, (SelectedCardHandling)0);
				yield return (BattleAction)new InteractionAction((Interaction)(object)interaction, false);
				IReadOnlyList<Card> discard = interaction.SelectedCards;
				if (discard.Count > 0)
				{
					yield return (BattleAction)new DiscardManyAction((IEnumerable<Card>)discard);
				}
			}
		}
	}
	public sealed class SanaeFavorFireSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = false;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(SanaeFavorFireSeDef))]
	public sealed class SanaeFavorFireSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<StatusEffectApplyEventArgs>(((StatusEffect)this).Owner.StatusEffectAdded, (EventSequencedReactor<StatusEffectApplyEventArgs>)OnStatusEffectAdded);
		}

		private IEnumerable<BattleAction> OnStatusEffectAdded(StatusEffectApplyEventArgs args)
		{
			if (args.Effect is Grace)
			{
				<>n__0();
				yield return ((StatusEffect)this).BuffAction<TempFirepower>(args.Effect.Level, 0, 0, 0, 0.2f);
				yield return ((StatusEffect)this).BuffAction<TempSpirit>(args.Effect.Level, 0, 0, 0, 0.2f);
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class SanaeKanakoFriendSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(SanaeKanakoFriendSeDef))]
	public sealed class SanaeKanakoFriendSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UsUsingEventArgs>(((StatusEffect)this).Battle.UsUsed, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsed);
		}

		private IEnumerable<BattleAction> OnUsUsed(UsUsingEventArgs args)
		{
			yield return (BattleAction)new ApplyStatusEffectAction(typeof(Firepower), (Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true);
			yield return (BattleAction)new ApplyStatusEffectAction(typeof(Graze), (Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true);
		}
	}
	public sealed class SanaeManaSpiritSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.IsStackable = false;
			defaultStatusEffectConfig.HasCount = true;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(SanaeManaSpiritSeDef))]
	public sealed class SanaeManaSpiritSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			if (((StatusEffect)this).Count == 1)
			{
				((StatusEffect)this).Highlight = true;
			}
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted);
		}

		private IEnumerable<BattleAction> OnPlayerTurnStarted(UnitEventArgs args)
		{
			if (!((StatusEffect)this).Battle.BattleShouldEnd)
			{
				int num = ((StatusEffect)this).Count - 1;
				((StatusEffect)this).Count = num;
				if (((StatusEffect)this).Count == 1)
				{
					((StatusEffect)this).Highlight = true;
				}
				if (((StatusEffect)this).Count <= 0)
				{
					<>n__0();
					yield return (BattleAction)(object)new ApplyStatusEffectAction<Spirit>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)null, (int?)null, (int?)null, 0f, true);
					yield return (BattleAction)new AddCardsToHandAction((Card[])(object)new Card[1] { (Card)Library.CreateCard<WManaCard>() });
					yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
				}
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class SanaePowerLifeSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasCount = true;
			defaultStatusEffectConfig.CountStackType = (StackType)0;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(SanaePowerLifeSeDef))]
	public sealed class SanaePowerLifeSe : StatusEffect
	{
		private readonly int _value3 = 5;

		public int Value3 => _value3;

		protected override void OnAdded(Unit unit)
		{
			if (((Unit)((StatusEffect)this).Battle.Player).TurnCounter % 2 == 1)
			{
				((StatusEffect)this).Highlight = true;
			}
			else
			{
				((StatusEffect)this).Highlight = false;
			}
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted);
		}

		private IEnumerable<BattleAction> OnPlayerTurnStarted(GameEventArgs args)
		{
			if (!((StatusEffect)this).Battle.BattleShouldEnd)
			{
				<>n__0();
				if (((Unit)((StatusEffect)this).Battle.Player).TurnCounter % 2 == 1)
				{
					yield return (BattleAction)new GainPowerAction(((StatusEffect)this).Count);
					((StatusEffect)this).Highlight = true;
				}
				else
				{
					yield return (BattleAction)new DamageAction(((StatusEffect)this).Owner, ((StatusEffect)this).Owner, DamageInfo.HpLose((float)Value3, false), "Instant", (GunType)0);
					yield return (BattleAction)new LosePowerAction(((StatusEffect)this).Level);
					((StatusEffect)this).Highlight = false;
				}
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class SanaePowerPotatoSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(SanaePowerPotatoSeDef))]
	public sealed class SanaePowerPotatoSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<GameEventArgs>(((StatusEffect)this).Battle.BattleEnding, (EventSequencedReactor<GameEventArgs>)OnBattleEnding);
		}

		private IEnumerable<BattleAction> OnBattleEnding(GameEventArgs args)
		{
			if (((Unit)((StatusEffect)this).Battle.Player).IsAlive)
			{
				<>n__0();
				yield return (BattleAction)new GainPowerAction(((StatusEffect)this).Level);
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class SanaeSpellAttackSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(SanaeSpellAttackSeDef))]
	public sealed class SanaeSpellAttackSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UsUsingEventArgs>(((StatusEffect)this).Battle.UsUsed, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsed);
		}

		private IEnumerable<BattleAction> OnUsUsed(UsUsingEventArgs args)
		{
			for (int i = 0; i < ((StatusEffect)this).Level; i++)
			{
				yield return (BattleAction)new DamageAction(((StatusEffect)this).Owner, (Unit)(object)((StatusEffect)this).Battle.RandomAliveEnemy, DamageInfo.Attack(8f, false), GunNameID.GetGunFromId(12150), (GunType)0);
			}
		}
	}
	public sealed class SanaeSpellManaGreenSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(SanaeSpellManaGreenSeDef))]
	public sealed class SanaeSpellManaGreenSe : StatusEffect
	{
		public ManaGroup Mana
		{
			get
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				//IL_0012: Unknown result type (might be due to invalid IL or missing references)
				//IL_0013: Unknown result type (might be due to invalid IL or missing references)
				//IL_0016: Unknown result type (might be due to invalid IL or missing references)
				ManaGroup result = default(ManaGroup);
				((ManaGroup)(ref result)).Green = 2;
				return result;
			}
		}

		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UsUsingEventArgs>(((StatusEffect)this).Battle.UsUsed, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsed);
		}

		private IEnumerable<BattleAction> OnUsUsed(UsUsingEventArgs args)
		{
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).Green = 2 * ((StatusEffect)this).Level;
			yield return (BattleAction)new GainManaAction(val);
		}
	}
	public sealed class SanaeSpellManaPhiloSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(SanaeSpellManaPhiloSeDef))]
	public sealed class SanaeSpellManaPhiloSe : StatusEffect
	{
		public ManaGroup Mana
		{
			get
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				//IL_0012: Unknown result type (might be due to invalid IL or missing references)
				//IL_0013: Unknown result type (might be due to invalid IL or missing references)
				//IL_0016: Unknown result type (might be due to invalid IL or missing references)
				ManaGroup result = default(ManaGroup);
				((ManaGroup)(ref result)).Philosophy = 2;
				return result;
			}
		}

		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UsUsingEventArgs>(((StatusEffect)this).Battle.UsUsed, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsed);
		}

		private IEnumerable<BattleAction> OnUsUsed(UsUsingEventArgs args)
		{
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).Philosophy = 2 * ((StatusEffect)this).Level;
			yield return (BattleAction)new GainManaAction(val);
		}
	}
	public sealed class SanaeStatusTalismanSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(SanaeStatusTalismanSeDef))]
	public sealed class SanaeStatusTalismanSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted);
		}

		private IEnumerable<BattleAction> OnPlayerTurnStarted(GameEventArgs args)
		{
			if (!((StatusEffect)this).Battle.BattleShouldEnd)
			{
				<>n__0();
				yield return (BattleAction)new AddCardsToDrawZoneAction((IEnumerable<Card>)Library.CreateCards<SanaeStatus>(((StatusEffect)this).Level, false), (DrawZoneTarget)2, (AddCardsType)0);
				yield return (BattleAction)new AddCardsToDiscardAction((IEnumerable<Card>)Library.CreateCards<SanaeStatus>(((StatusEffect)this).Level, false), (AddCardsType)0);
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class SanaeSuwakoFriendOneSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(SanaeSuwakoFriendOneSeDef))]
	public sealed class SanaeSuwakoFriendOneSe : StatusEffect
	{
		public ManaGroup Mana
		{
			get
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				//IL_0012: Unknown result type (might be due to invalid IL or missing references)
				//IL_0013: Unknown result type (might be due to invalid IL or missing references)
				//IL_0016: Unknown result type (might be due to invalid IL or missing references)
				ManaGroup result = default(ManaGroup);
				((ManaGroup)(ref result)).Any = 1;
				return result;
			}
		}

		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UsUsingEventArgs>(((StatusEffect)this).Battle.UsUsed, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsed);
		}

		private IEnumerable<BattleAction> OnUsUsed(UsUsingEventArgs args)
		{
			Card[] Ability = ((StatusEffect)this).Battle.RollCards(new CardWeightTable(RarityWeightTable.AllOnes, OwnerWeightTable.Valid, CardTypeWeightTable.OnlyAbility, false), ((StatusEffect)this).Level, (Predicate<CardConfig>)null);
			Card[] array = Ability;
			foreach (Card card in array)
			{
				card.SetTurnCost(Mana);
				card.IsEthereal = true;
			}
			yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)Ability, (AddCardsType)0);
		}
	}
	public sealed class SanaeSuwakoFriendTwoSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(SanaeSuwakoFriendTwoSeDef))]
	public sealed class SanaeSuwakoFriendTwoSe : StatusEffect
	{
		public ManaGroup Mana
		{
			get
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				//IL_0012: Unknown result type (might be due to invalid IL or missing references)
				//IL_0013: Unknown result type (might be due to invalid IL or missing references)
				//IL_0016: Unknown result type (might be due to invalid IL or missing references)
				ManaGroup result = default(ManaGroup);
				((ManaGroup)(ref result)).Any = 2;
				return result;
			}
		}

		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UsUsingEventArgs>(((StatusEffect)this).Battle.UsUsed, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsed);
		}

		private IEnumerable<BattleAction> OnUsUsed(UsUsingEventArgs args)
		{
			Card[] Ability = ((StatusEffect)this).Battle.RollCards(new CardWeightTable(RarityWeightTable.AllOnes, OwnerWeightTable.Valid, CardTypeWeightTable.OnlyAbility, false), ((StatusEffect)this).Level, (Predicate<CardConfig>)null);
			Card[] array = Ability;
			foreach (Card card in array)
			{
				card.SetTurnCost(Mana);
				card.IsEthereal = true;
			}
			yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)Ability, (AddCardsType)0);
		}
	}
	public sealed class SanaeWardSpellSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(SanaeWardSpellSeDef))]
	public sealed class SanaeWardSpellSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<StatusEffectApplyEventArgs>(((StatusEffect)this).Owner.StatusEffectAdded, (EventSequencedReactor<StatusEffectApplyEventArgs>)OnStatusEffectAdded);
			((StatusEffect)this).ReactOwnerEvent<UsUsingEventArgs>(((StatusEffect)this).Battle.UsUsed, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsed);
		}

		private IEnumerable<BattleAction> OnStatusEffectAdded(StatusEffectApplyEventArgs args)
		{
			if (args.Effect is AmuletForCard)
			{
				yield return (BattleAction)new GainPowerAction(args.Effect.Level);
			}
		}

		private IEnumerable<BattleAction> OnUsUsed(UsUsingEventArgs args)
		{
			yield return (BattleAction)new AddCardsToDiscardAction((IEnumerable<Card>)Library.CreateCards<SanaeStatus>(((StatusEffect)this).Level, false), (AddCardsType)0);
		}
	}
	public sealed class SanaeWardTalismanSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(SanaeWardTalismanSeDef))]
	public sealed class SanaeWardTalismanSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<CardsEventArgs>(((StatusEffect)this).Battle.CardsAddedToDiscard, (EventSequencedReactor<CardsEventArgs>)OnAddCard);
			((StatusEffect)this).ReactOwnerEvent<CardsEventArgs>(((StatusEffect)this).Battle.CardsAddedToHand, (EventSequencedReactor<CardsEventArgs>)OnAddCard);
			((StatusEffect)this).ReactOwnerEvent<CardsEventArgs>(((StatusEffect)this).Battle.CardsAddedToExile, (EventSequencedReactor<CardsEventArgs>)OnAddCard);
			((StatusEffect)this).ReactOwnerEvent<CardsAddingToDrawZoneEventArgs>(((StatusEffect)this).Battle.CardsAddedToDrawZone, (EventSequencedReactor<CardsAddingToDrawZoneEventArgs>)OnCardsAddedToDrawZone);
		}

		private IEnumerable<BattleAction> OnAddCard(CardsEventArgs args)
		{
			if ((int)((GameEventArgs)args).Cause == 17)
			{
				yield break;
			}
			<>n__0();
			List<Card> list = (from card in ((StatusEffect)this).Battle.HandZone.Concat(((StatusEffect)this).Battle.DrawZone).Concat(((StatusEffect)this).Battle.DiscardZone)
				where card.CanUpgradeAndPositive
				select card).ToList();
			if (list.Count == 0)
			{
				yield return ((StatusEffect)this).BuffAction<AmuletForCard>(((StatusEffect)this).Level, 0, 0, 0, 0.2f);
				yield break;
			}
			Card[] cards = args.Cards;
			for (int i = 0; i < cards.Length; i++)
			{
				_ = cards[i];
				List<Card> chosen = CollectionsExtensions.SampleManyOrAll<Card>((IEnumerable<Card>)list, 1, ((GameEntity)this).GameRun.BattleRng).ToList();
				yield return (BattleAction)new UpgradeCardsAction((IEnumerable<Card>)chosen);
				foreach (Card card2 in chosen)
				{
					list.Remove(card2);
				}
			}
		}

		private IEnumerable<BattleAction> OnCardsAddedToDrawZone(CardsAddingToDrawZoneEventArgs args)
		{
			if ((int)((GameEventArgs)args).Cause == 17)
			{
				yield break;
			}
			<>n__0();
			List<Card> list = (from card in ((StatusEffect)this).Battle.HandZone.Concat(((StatusEffect)this).Battle.DrawZone).Concat(((StatusEffect)this).Battle.DiscardZone)
				where card.CanUpgradeAndPositive
				select card).ToList();
			if (list.Count == 0)
			{
				yield return ((StatusEffect)this).BuffAction<AmuletForCard>(((StatusEffect)this).Level, 0, 0, 0, 0.2f);
				yield break;
			}
			Card[] cards = args.Cards;
			for (int i = 0; i < cards.Length; i++)
			{
				_ = cards[i];
				List<Card> chosen = CollectionsExtensions.SampleManyOrAll<Card>((IEnumerable<Card>)list, 1, ((GameEntity)this).GameRun.BattleRng).ToList();
				yield return (BattleAction)new UpgradeCardsAction((IEnumerable<Card>)chosen);
				foreach (Card card2 in chosen)
				{
					list.Remove(card2);
				}
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public class SampleCharacterStatusEffectTemplate : 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(SampleCharacterDefaultConfig.GetDefaultID((EntityDefinition)(object)this));
		}

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

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

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

		public static StatusEffectConfig GetDefaultStatusEffectConfig()
		{
			return SampleCharacterDefaultConfig.GetDefaultStatusEffectConfig();
		}
	}
	public sealed class TurnStartDontLoseManaDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = false;
			defaultStatusEffectConfig.HasDuration = true;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(TurnStartDontLoseManaDef))]
	public sealed class TurnStartDontLoseMana : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).HandleOwnerEvent<ManaEventArgs>(((StatusEffect)this).Battle.ManaLosing, (GameEventHandler<ManaEventArgs>)OnManaLosing);
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnTurnStarted);
		}

		private void OnManaLosing(ManaEventArgs args)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Invalid comparison between Unknown and I4
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			if ((int)((GameEventArgs)args).Cause == 13)
			{
				ManaGroup value = args.Value;
				if (!((ManaGroup)(ref value)).IsEmpty)
				{
					((StatusEffect)this).NotifyActivating();
					((GameEventArgs)args).CancelBy((GameEntity)(object)this);
				}
			}
		}

		private IEnumerable<BattleAction> OnTurnStarted(UnitEventArgs args)
		{
			((StatusEffect)this).Duration = ((StatusEffect)this).Duration - 1;
			if (((StatusEffect)this).Duration == 0)
			{
				yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
			}
		}
	}
}
namespace Sanae_Kochiya.Source.Localization
{
	public sealed class SampleCharacterLocalization
	{
		public static string Cards = "Cards";

		public static string Exhibits = "Exhibits";

		public static string EnemyUnit = "EnemyUnit";

		public static string PlayerUnit = "PlayerUnit";

		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 EnemyUnitBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(EnemyUnitTemplate), EnemyUnit, (Locale)0, false);

		public static BatchLocalization PlayerUnitBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(PlayerUnitTemplate), PlayerUnit, (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);
			EnemyUnitBatchLoc.DiscoverAndLoadLocFiles(EnemyUnit);
			PlayerUnitBatchLoc.DiscoverAndLoadLocFiles(PlayerUnit);
			UnitModelBatchLoc.DiscoverAndLoadLocFiles(UnitModel);
			UltimateSkillsBatchLoc.DiscoverAndLoadLocFiles(UltimateSkills);
			StatusEffectsBatchLoc.DiscoverAndLoadLocFiles(StatusEffects);
		}
	}
}
namespace Sanae_Kochiya.Source.Loadouts
{
	public class SampleCharacterLoadouts
	{
		public static string UltimateSkillA = "SanaeUltU";

		public static string UltimateSkillB = "SanaeUltR";

		public static string ExhibitA = "SanaeExhibitU";

		public static string ExhibitB = "SanaeExhibitR";

		public static List<string> DeckA = new List<string> { "Shoot", "Shoot", "Boundary", "Boundary", "SanaeAttackW", "SanaeAttackW", "SanaeBlockG", "SanaeBlockG", "SanaeBlockG", "SanaeStarterU" };

		public static List<string> DeckB = new List<string> { "Shoot", "Shoot", "Boundary", "Boundary", "SanaeAttackG", "SanaeAttackG", "SanaeBlockW", "SanaeBlockW", "SanaeBlockW", "SanaeStarterR" };

		public static PlayerUnitConfig playerUnitConfig;

		static SampleCharacterLoadouts()
		{
			//IL_0142: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Unknown result type (might be due to invalid IL or missing references)
			//IL_0188: Unknown result type (might be due to invalid IL or missing references)
			//IL_0194: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c9: Expected O, but got Unknown
			string modUniqueID = BepinexPlugin.modUniqueID;
			int? num = 0;
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).White = 2;
			((ManaGroup)(ref val)).Blue = 0;
			((ManaGroup)(ref val)).Black = 0;
			((ManaGroup)(ref val)).Red = 0;
			((ManaGroup)(ref val)).Green = 2;
			((ManaGroup)(ref val)).Colorless = 0;
			((ManaGroup)(ref val)).Philosophy = 0;
			ManaGroup val2 = val;
			playerUnitConfig = new PlayerUnitConfig(modUniqueID, true, "", 0, 8, num, true, (int?)null, (ManaColor)2, (ManaColor)4, val2, "#28e25a", 80, 60, 0, UltimateSkillA, UltimateSkillB, ExhibitA, ExhibitB, (IReadOnlyList<string>)DeckA, (IReadOnlyList<string>)DeckB, 3, 2);
		}
	}
}
namespace Sanae_Kochiya.Source.Exhibits
{
	public sealed class SanaeClayVolcanoDef : SampleCharacterExhibitTemplate
	{
		public override ExhibitConfig MakeConfig()
		{
			ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig();
			defaultExhibitConfig.IsPooled = true;
			defaultExhibitConfig.Appearance = (AppearanceType)0;
			defaultExhibitConfig.Owner = "";
			defaultExhibitConfig.LosableType = (ExhibitLosableType)0;
			defaultExhibitConfig.Rarity = (Rarity)0;
			defaultExhibitConfig.BaseManaColor = null;
			defaultExhibitConfig.BaseManaAmount = 0;
			defaultExhibitConfig.Keywords = (Keyword)16384;
			defaultExhibitConfig.RelativeEffects = new List<string> { "Firepower" };
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(SanaeClayVolcanoDef))]
	public sealed class SanaeClayVolcano : Exhibit
	{
		private class SanaeClayVolcanoWeighter : IExhibitWeighter
		{
			public float WeightFor(Type type, GameRunController gameRun)
			{
				if (!BepinexPlugin.modExclusiveConfig.Value)
				{
					return 0f;
				}
				return 1.15f;
			}
		}

		protected override void OnEnterBattle()
		{
			((Exhibit)this).ReactBattleEvent<StatusEffectApplyEventArgs>(((Unit)((Exhibit)this).Battle.Player).StatusEffectAdded, (EventSequencedReactor<StatusEffectApplyEventArgs>)OnStatusEffectAdded);
		}

		private IEnumerable<BattleAction> OnStatusEffectAdded(StatusEffectApplyEventArgs args)
		{
			if (args.Effect is Firepower)
			{
				<>n__0();
				yield return (BattleAction)new GainPowerAction(args.Effect.Level);
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((Exhibit)this).NotifyActivating();
		}
	}
	public sealed class SanaeExhibitRDef : SampleCharacterExhibitTemplate
	{
		public override ExhibitConfig MakeConfig()
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig();
			defaultExhibitConfig.Value1 = 6;
			ManaGroup value = default(ManaGroup);
			((ManaGroup)(ref value)).Red = 1;
			defaultExhibitConfig.Mana = value;
			defaultExhibitConfig.BaseManaColor = (ManaColor)4;
			defaultExhibitConfig.Keywords = (Keyword)1536;
			defaultExhibitConfig.RelativeEffects = new List<string> { "Grace" };
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(SanaeExhibitRDef))]
	public sealed class SanaeExhibitR : ShiningExhibit
	{
		protected override void OnEnterBattle()
		{
			((Exhibit)this).ReactBattleEvent<UsUsingEventArgs>(((Exhibit)this).Battle.UsUsing, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsing);
			((Exhibit)this).ReactBattleEvent<UsUsingEventArgs>(((Exhibit)this).Battle.UsUsed, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsed);
		}

		private IEnumerable<BattleAction> OnUsUsing(UsUsingEventArgs args)
		{
			if (((Unit)((Exhibit)this).Battle.Player).HasStatusEffect<Grace>())
			{
				yield return (BattleAction)(object)new ApplyStatusEffectAction<GraceSetup>((Unit)(object)((Exhibit)this).Owner, (int?)((StatusEffect)((Unit)((Exhibit)this).Battle.Player).GetStatusEffect<Grace>()).Level, (int?)null, (int?)null, (int?)null, 0f, true);
			}
		}

		private IEnumerable<BattleAction> OnUsUsed(UsUsingEventArgs args)
		{
			((Exhibit)this).NotifyActivating();
			yield return (BattleAction)new CastBlockShieldAction((Unit)(object)((Exhibit)this).Owner, (Unit)(object)((Exhibit)this).Owner, ((Exhibit)this).Value1, ((Exhibit)this).Value1, (BlockShieldType)1, true);
		}
	}
	public sealed class SanaeExhibitUDef : SampleCharacterExhibitTemplate
	{
		public override ExhibitConfig MakeConfig()
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig();
			defaultExhibitConfig.Value1 = 2;
			ManaGroup value = default(ManaGroup);
			((ManaGroup)(ref value)).Blue = 1;
			defaultExhibitConfig.Mana = value;
			defaultExhibitConfig.BaseManaColor = (ManaColor)2;
			defaultExhibitConfig.Keywords = (Keyword)512;
			defaultExhibitConfig.RelativeEffects = new List<string> { "AmuletForCard" };
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(SanaeExhibitUDef))]
	public sealed class SanaeExhibitU : ShiningExhibit
	{
		protected override void OnEnterBattle()
		{
			((Exhibit)this).ReactBattleEvent<UnitEventArgs>(((Unit)((Exhibit)this).Battle.Player).TurnEnded, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnEnded);
			((Exhibit)this).ReactBattleEvent<UnitEventArgs>(((Unit)((Exhibit)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted);
		}

		private IEnumerable<BattleAction> OnPlayerTurnEnded(UnitEventArgs args)
		{
			if (((Unit)((Exhibit)this).Battle.Player).Block != 0 && !((Exhibit)this).Battle.BattleShouldEnd)
			{
				((Exhibit)this).NotifyActivating();
				yield return (BattleAction)new DamageAction((Unit)(object)((Exhibit)this).Owner, (Unit)(object)((Exhibit)this).Battle.LowestHpEnemy, new DamageInfo((float)(((Unit)((Exhibit)this).Battle.Player).Block / 3), (DamageType)1, false, false, false), GunNameID.GetGunFromId(39070), (GunType)0);
			}
		}

		private IEnumerable<BattleAction> OnPlayerTurnStarted(UnitEventArgs args)
		{
			if (((Unit)((Exhibit)this).Battle.Player).TurnCounter == 1)
			{
				((Exhibit)this).NotifyActivating();
				yield return (BattleAction)(object)new ApplyStatusEffectAction<AmuletForCard>((Unit)(object)((Exhibit)this).Owner, (int?)((Exhibit)this).Value1, (int?)0, (int?)0, (int?)0, 0.2f, false);
			}
		}
	}
	public sealed class SanaeExpiredCouponDef : SampleCharacterExhibitTemplate
	{
		public override ExhibitConfig MakeConfig()
		{
			ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig();
			defaultExhibitConfig.IsPooled = true;
			defaultExhibitConfig.Appearance = (AppearanceType)0;
			defaultExhibitConfig.Owner = "";
			defaultExhibitConfig.LosableType = (ExhibitLosableType)0;
			defaultExhibitConfig.Rarity = (Rarity)0;
			defaultExhibitConfig.BaseManaColor = null;
			defaultExhibitConfig.BaseManaAmount = 0;
			defaultExhibitConfig.Value1 = 20;
			defaultExhibitConfig.Keywords = (Keyword)16384;
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(SanaeExpiredCouponDef))]
	public sealed class SanaeExpiredCoupon : Exhibit
	{
		private class SanaeExpiredCouponWeighter : IExhibitWeighter
		{
			public float WeightFor(Type type, GameRunController gameRun)
			{
				if (!BepinexPlugin.modExclusiveConfig.Value)
				{
					return 0f;
				}
				return 1.15f;
			}
		}

		protected override void OnEnterBattle()
		{
			((Exhibit)this).Active = true;
			((Exhibit)this).ReactBattleEvent<UsUsingEventArgs>(((Exhibit)this).Battle.UsUsed, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsed);
		}

		private IEnumerable<BattleAction> OnUsUsed(UsUsingEventArgs args)
		{
			if (((Exhibit)this).Active)
			{
				<>n__0();
				((Exhibit)this).Active = false;
				yield return (BattleAction)new GainPowerAction(((Exhibit)this).Value1);
			}
		}

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

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((Exhibit)this).NotifyActivating();
		}
	}
	public sealed class SanaeFizzyBottleDef : SampleCharacterExhibitTemplate
	{
		public override ExhibitConfig MakeConfig()
		{
			ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig();
			defaultExhibitConfig.IsPooled = true;
			defaultExhibitConfig.Appearance = (AppearanceType)0;
			defaultExhibitConfig.Owner = "";
			defaultExhibitConfig.LosableType = (ExhibitLosableType)0;
			defaultExhibitConfig.Rarity = (Rarity)0;
			defaultExhibitConfig.BaseManaColor = null;
			defaultExhibitConfig.BaseManaAmount = 0;
			defaultExhibitConfig.Value1 = 2;
			defaultExhibitConfig.RelativeEffects = new List<string> { "TempSpirit" };
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(SanaeFizzyBottleDef))]
	public sealed class SanaeFizzyBottle : Exhibit
	{
		private class SanaeFizzyBottleWeighter : IExhibitWeighter
		{
			public float WeightFor(Type type, GameRunController gameRun)
			{
				if (!BepinexPlugin.modExclusiveConfig.Value)
				{
					return 0f;
				}
				return 1.15f;
			}
		}

		protected override void OnEnterBattle()
		{
			((Exhibit)this).ReactBattleEvent<GameEventArgs>(((Exhibit)this).Battle.Reshuffled, (EventSequencedReactor<GameEventArgs>)OnReshuffled);
		}

		private IEnumerable<BattleAction> OnReshuffled(GameEventArgs args)
		{
			<>n__0();
			yield return (BattleAction)(object)new ApplyStatusEffectAction<TempSpirit>((Unit)(object)((Exhibit)this).Owner, (int?)((Exhibit)this).Value1, (int?)0, (int?)0, (int?)0, 0.2f, true);
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((Exhibit)this).NotifyActivating();
		}
	}
	public sealed class SanaeLibraryCardDef : SampleCharacterExhibitTemplate
	{
		public override ExhibitConfig MakeConfig()
		{
			ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig();
			defaultExhibitConfig.IsPooled = true;
			defaultExhibitConfig.Appearance = (AppearanceType)0;
			defaultExhibitConfig.Owner = "";
			defaultExhibitConfig.LosableType = (ExhibitLosableType)0;
			defaultExhibitConfig.Rarity = (Rarity)0;
			defaultExhibitConfig.BaseManaColor = null;
			defaultExhibitConfig.BaseManaAmount = 0;
			defaultExhibitConfig.Value1 = 3;
			defaultExhibitConfig.RelativeEffects = new List<string> { "AmuletForCard" };
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(SanaeLibraryCardDef))]
	public sealed class SanaeLibraryCard : Exhibit
	{
		private class SanaeLibraryCardWeighter : IExhibitWeighter
		{
			public float WeightFor(Type type, GameRunController gameRun)
			{
				if (!BepinexPlugin.modExclusiveConfig.Value)
				{
					return 0f;
				}
				return 1.15f;
			}
		}

		protected override void OnEnterBattle()
		{
			((Exhibit)this).ReactBattleEvent<UnitEventArgs>(((Unit)((Exhibit)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted);
			((Exhibit)this).HandleBattleEvent<CardUsingEventArgs>(((Exhibit)this).Battle.CardUsed, (GameEventHandler<CardUsingEventArgs>)OnCardUsed);
		}

		private void OnCardUsed(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)
			{
				((Exhibit)this).Active = false;
			}
		}

		private IEnumerable<BattleAction> OnPlayerTurnStarted(UnitEventArgs args)
		{
			if (((Exhibit)this).Active && !((Exhibit)this).Battle.BattleShouldEnd)
			{
				<>n__0();
				yield return (BattleAction)(object)new ApplyStatusEffectAction<AmuletForCard>((Unit)(object)((Exhibit)this).Owner, (int?)((Exhibit)this).Value1, (int?)0, (int?)0, (int?)0, 0.2f, true);
			}
			((Exhibit)this).Active = true;
		}

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

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((Exhibit)this).NotifyActivating();
		}
	}
}
namespace Sanae_Kochiya.Source.Config
{
	public sealed class SampleCharacterDefaultConfig
	{
		private static readonly string OwnerName = BepinexPlugin.modUniqueID;

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

		public static CardConfig GetCardDefaultConfig()
		{
			//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_018d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0194: 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 GetDefaultExhibitConfig()
		{
			//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 GetDefaultStatusEffectConfig()
		{
			//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 GetDefaultUltConfig()
		{
			//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>());
		}
	}
}
namespace Sanae_Kochiya.Source.Cards.Uncommon
{
	public sealed class SanaeAbilityTalismanDef : SampleCharacterCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)5 };
			ManaGroup cost = default(ManaGroup);
			((ManaGroup)(ref cost)).Any = 1;
			((ManaGroup)(ref cost)).Green = 1;
			cardDefaultConfig.Cost = cost;
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)3;
			cardDefaultConfig.TargetType = (TargetType)4;
			cardDefaultConfig.Value1 = 3;
			cardDefaultConfig.UpgradedValue1 = 4;
			cardDefaultConfig.Value2 = 3;
			cardDefaultConfig.UpgradedValue2 = 4;
			cardDefaultConfig.Keywords = (Keyword)268435456;
			cardDefaultConfig.UpgradedKeywords = (Keyword)268435456;
			cardDefaultConfig.RelativeKeyword = (Keyword)4;
			cardDefaultConfig.UpgradedRelativeKeyword = (Keyword)4;
			cardDefaultConfig.RelativeCards = new List<string> { "SanaeStatus" };
			cardDefaultConfig.UpgradedRelativeCards = new List<string> { "SanaeStatus" };
			cardDefaultConfig.Illustrator = "";
			cardDefaultConfig.Index = CardIndexGenerator.Initial_offset + 212302;
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(SanaeAbilityTalismanDef))]
	public sealed class SanaeAbilityTalisman : SampleCharacterCard
	{
		private string ExtraDescription1
		{
			get
			{
				if (((Card)this).IsUpgraded)
				{
					return ((GameEntity)this).LocalizeProperty("UpgradedExtraDescription1", true, true);
				}
				return ((GameEntity)this).LocalizeProperty("ExtraDescription1", true, true);
			}
		}

		protected override string GetBaseDescription()
		{
			if (!((Card)this).DebutActive)
			{
				return ExtraDescription1;
			}
			return ((Card)this).GetBaseDescription();
		}

		protected override IEnumerable<BattleAction> Actions(UnitSelector selector, ManaGroup consumingMana, Interaction precondition)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)Library.CreateCards<SanaeStatus>(((Card)this).Value1, false), (AddCardsType)0);
			if (!((Card)this).Battle.BattleShouldEnd && ((Card)this).PlayInTriggered)
			{
				List<Card> list = new List<Card>();
				list.AddRange(((Card)this).Battle.RollCards(new CardWeightTable(RarityWeightTable.NoneRare, OwnerWeightTable.Valid, CardTypeWeightTable.OnlyAbility, false), ((Card)this).Value2, (Predicate<CardConfig>)null));
				if (list.Count > 0)
				{
					SelectCardInteraction interaction = new SelectCardInteraction(1, 1, (IEnumerable<Card>)list, (SelectedCardHandling)0)
					{
						Source = (GameEntity)(object)this
					};
					yield return (BattleAction)new InteractionAction((Interaction)(object)interaction, false);
					Card selectedCard = interaction.SelectedCards.FirstOrDefault();
					yield return (BattleAction)new AddCardsToDrawZoneAction((IEnumerable<Card>)(object)new Card[1] { selectedCard }, (DrawZoneTarget)0, (AddCardsType)0);
				}
				if (!((Card)this).IsUpgraded)
				{
					yield return ((Card)this).BuffAction<CantDrawThisTurn>(0, 0, 0, 0, 0.2f);
				}
			}
		}
	}
	public sealed class SanaeAmuletTalismanDef : SampleCharacterCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.Colors = new List<ManaColor>
			{
				(ManaColor)1,
				(ManaColor)5
			};
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 4;
			((ManaGroup)(ref val)).White = 1;
			((ManaGroup)(ref val)).Green = 1;
			cardDefaultConfig.Cost = val;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 4;
			((ManaGroup)(ref val)).Hybrid = 1;
			((ManaGroup)(ref val)).HybridColor = 3;
			cardDefaultConfig.UpgradedCost = val;
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)3;
			cardDefaultConfig.TargetType = (TargetType)4;
			cardDefaultConfig.Value1 = 25;
			cardDefaultConfig.UpgradedValue1 = 30;
			cardDefaultConfig.Value2 = 4;
			cardDefaultConfig.UpgradedValue2 = 6;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 2;
			cardDefaultConfig.Mana = val;
			cardDefaultConfig.RelativeKeyword = (Keyword)1099511644160L;
			cardDefaultConfig.UpgradedRelativeKeyword = (Keyword)1099511644160L;
			cardDefaultConfig.RelativeEffects = new List<string> { "Amulet" };
			cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "Amulet" };
			cardDefaultConfig.RelativeCards = new List<string> { "SanaeStatus" };
			cardDefaultConfig.UpgradedRelativeCards = new List<string> { "SanaeStatus" };
			cardDefaultConfig.Illustrator = "";
			cardDefaultConfig.Index = CardIndexGenerator.Initial_offset + 246301;
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(SanaeAmuletTalismanDef))]
	public sealed class SanaeAmuletTalisman : SampleCharacterCard
	{
		protected override ManaGroup AdditionalCost
		{
			get
			{
				//IL_0025: Unknown result type (might be due to invalid IL or missing references)
				//IL_002b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0030: Unknown result type (might be due to invalid IL or missing references)
				//IL_0010: Unknown result type (might be due to invalid IL or missing references)
				//IL_001c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0021: Unknown result type (might be due to invalid IL or missing references)
				//IL_0033: Unknown result type (might be due to invalid IL or missing references)
				if (((Card)this).Battle != null)
				{
					return ((Card)this).Mana * -AmuletCount;
				}
				return ((Card)this).Mana * 0;
			}
		}

		private int AmuletCount
		{
			get
			{
				if (((Card)this).Battle != null && ((Unit)((Card)this).Battle.Player).HasStatusEffect<Amulet>())
				{
					return ((StatusEffect)((Unit)((Card)this).Battle.Player).GetStatusEffect<Amulet>()).Level;
				}
				return 0;
			}
		}

		protected override IEnumerable<BattleAction> Actions(UnitSelector selector, ManaGroup consumingMana, Interaction precondition)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			yield return (BattleAction)new GainPowerAction(((Card)this).Value1);
			yield return (BattleAction)new AddCardsToDrawZoneAction((IEnumerable<Card>)Library.CreateCards<SanaeStatus>(((Card)this).Value2, false), (DrawZoneTarget)2, (AddCardsType)0);
		}
	}
	public sealed class SanaeAttackBlockDef : SampleCharacterCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.GunName = GunNameID.GetGunFromId(6003);
			cardDefaultConfig.GunNameBurst = GunNameID.GetGunFromId(6001);
			cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)2 };
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 1;
			((ManaGroup)(ref val)).Blue = 1;
			cardDefaultConfig.Cost = val;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 1;
			cardDefaultConfig.UpgradedCost = val;
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)1;
			cardDefaultConfig.TargetType = (TargetType)1;
			cardDefaultConfig.Damage = 12;
			cardDefaultConfig.UpgradedDamage = 8;
			cardDefaultConfig.UpgradedKeywords = (Keyword)8388608;
			cardDefaultConfig.RelativeKeyword = (Keyword)1024;
			cardDefaultConfig.UpgradedRelativeKeyword = (Keyword)1024;
			cardDefaultConfig.Illustrator = "";
			cardDefaultConfig.Index = CardIndexGenerator.Initial_offset + 222101;
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(SanaeAttackBlockDef))]
	public sealed class SanaeAttackBlock : SampleCharacterCard
	{
		protected override IEnumerable<BattleAction> Actions(UnitSelector selector, ManaGroup consumingMana, Interaction precondition)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			yield return ((Card)this).AttackAction(selector, (GunPair)null);
			if (((Unit)selector.GetEnemy(((Card)this).Battle)).IsAlive)
			{
				yield return ((Card)this).DebuffAction<SanaeAttackBlockSe>((Unit)(object)selector.GetEnemy(((Card)this).Battle), 0, 0, 0, 0, true, 0.2f);
			}
		}
	}
	public sealed class SanaeAttackFavorDef : SampleCharacterCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.GunName = GunNameID.GetGunFromId(851);
			cardDefaultConfig.Colors = new List<ManaColor>
			{
				(ManaColor)1,
				(ManaColor)4
			};
			ManaGroup cost = default(ManaGroup);
			((ManaGroup)(ref cost)).Any = 1;
			((ManaGroup)(ref cost)).White = 1;
			((ManaGroup)(ref cost)).Red = 1;
			cardDefaultConfig.Cost = cost;
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)1;
			cardDefaultConfig.TargetType = (TargetType)1;
			cardDefaultConfig.Damage = 13;
			cardDefaultConfig.UpgradedDamage = 8;
			cardDefaultConfig.Value1 = 2;
			cardDefaultConfig.Value2 = 3;
			cardDefaultConfig.UpgradedKeywords = (Keyword)256;
			cardDefaultConfig.RelativeEffects = new List<string> { "Grace", "Spirit" };
			cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "Grace", "Spirit" };
			cardDefaultConfig.Illustrator = "";
			cardDefaultConfig.Index = CardIndexGenerator.Initial_offset + 273101;
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(SanaeAttackFavorDef))]
	public sealed class SanaeAttackFavor : SampleCharacterCard
	{
		protected override int AdditionalDamage
		{
			get
			{
				if (((Card)this).Battle != null)
				{
					return PlayerSpiritPositive;
				}
				return 0;
			}
		}

		protected override int AdditionalValue2
		{
			get
			{
				if (((Card)this).Battle != null)
				{
					return PlayerSpiritPositive;
				}
				return 0;
			}
		}

		private int PlayerSpiritPositive => Math.Max(0, ((Unit)((Card)this).Battle.Player).TotalSpirit);

		protected override IEnumerable<BattleAction> Actions(UnitSelector selector, ManaGroup consumingMana, Interaction precondition)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			yield return ((Card)this).AttackAction(selector, (GunPair)null);
			PlayerUnit player = ((Card)this).Battle.Player;
			EnemyUnit enemy = selector.GetEnemy(((Card)this).Battle);
			DamageInfo damage = ((Card)this).Damage;
			yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)player, (Unit)(object)enemy, GunNameID.GetGunFromId((((DamageInfo)(ref damage)).Amount > 25f) ? 7311 : 7310), 0.1f);
			PlayerUnit player2 = ((Card)this).Battle.Player;
			EnemyUnit enemy2 = selector.GetEnemy(((Card)this).Battle);
			damage = ((Card)this).Damage;
			yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)player2, (Unit)(object)enemy2, GunNameID.GetGunFromId((((DamageInfo)(ref damage)).Amount > 25f) ? 7311 : 7310), 0.1f);
			PlayerUnit player3 = ((Card)this).Battle.Player;
			EnemyUnit enemy3 = selector.GetEnemy(((Card)this).Battle);
			damage = ((Card)this).Damage;
			yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)player3, (Unit)(object)enemy3, GunNameID.GetGunFromId((((DamageInfo)(ref damage)).Amount > 25f) ? 7311 : 7310), 0.3f);
			if (((Card)this).IsUpgraded)
			{
				yield return ((Card)this).AttackAction(selector, (GunPair)null);
				PlayerUnit player4 = ((Card)this).Battle.Player;
				EnemyUnit enemy4 = selector.GetEnemy(((Card)this).Battle);
				damage = ((Card)this).Damage;
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)player4, (Unit)(object)enemy4, GunNameID.GetGunFromId((((DamageInfo)(ref damage)).Amount > 25f) ? 7311 : 7310), 0.1f);
				PlayerUnit player5 = ((Card)this).Battle.Player;
				EnemyUnit enemy5 = selector.GetEnemy(((Card)this).Battle);
				damage = ((Card)this).Damage;
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)player5, (Unit)(object)enemy5, GunNameID.GetGunFromId((((DamageInfo)(ref damage)).Amount > 25f) ? 7311 : 7310), 0.1f);
				PlayerUnit player6 = ((Card)this).Battle.Player;
				EnemyUnit enemy6 = selector.GetEnemy(((Card)this).Battle);
				damage = ((Card)this).Damage;
				yield return (Bat