Decompiled source of Yoshika Miyako v0.2.3

Yoshika_Miyako.dll

Decompiled a month 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.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.StatusEffects;
using LBoL.Core.Units;
using LBoL.EntityLib.Cards.Character.Cirno;
using LBoL.EntityLib.Cards.Enemy;
using LBoL.EntityLib.Cards.Neutral.Black;
using LBoL.EntityLib.Cards.Neutral.NoColor;
using LBoL.EntityLib.Cards.Tool;
using LBoL.EntityLib.Exhibits;
using LBoL.EntityLib.Exhibits.Shining;
using LBoL.EntityLib.StatusEffects.Basic;
using LBoL.EntityLib.StatusEffects.Cirno;
using LBoL.EntityLib.StatusEffects.Enemy;
using LBoL.EntityLib.StatusEffects.Others;
using LBoL.Presentation;
using LBoLEntitySideloader;
using LBoLEntitySideloader.Attributes;
using LBoLEntitySideloader.Entities;
using LBoLEntitySideloader.Resource;
using LBoLEntitySideloader.Utils;
using UnityEngine;
using UnityEngine.Experimental.Rendering;
using Yoshika_Miyako.Source.Cards.Template;
using Yoshika_Miyako.Source.Config;
using Yoshika_Miyako.Source.GunName;
using Yoshika_Miyako.Source.ImageLoader;
using Yoshika_Miyako.Source.Loadouts;
using Yoshika_Miyako.Source.Localization;
using Yoshika_Miyako.Source.Player;
using Yoshika_Miyako.Source.StatusEffects;

[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("Yoshika_Miyako")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("Yoshika_Miyako")]
[assembly: AssemblyTitle("Yoshika_Miyako")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace Yoshika_Miyako
{
	[BepInPlugin("xeno.lbol.character.Yoshika_Miyako", "Yoshika_Miyako", "0.2.3")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInProcess("LBoL.exe")]
	public class BepinexPlugin : BaseUnityPlugin
	{
		public static string modUniqueID = "Yoshika_Miyako";

		public static string playerName = "Yoshika";

		public static bool useInGameModel = false;

		public static string model_name = "Youmu";

		public static bool model_is_flipped = true;

		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.Yoshika_Miyako", "");

		private void Awake()
		{
			log = ((BaseUnityPlugin)this).Logger;
			Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject);
			((Object)((Component)this).gameObject).hideFlags = (HideFlags)61;
			CardIndexGenerator.PromiseClearIndexSet();
			EntityManager.RegisterSelf();
			harmony.PatchAll();
			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.Yoshika_Miyako";

		public const string Name = "Yoshika_Miyako";

		public const string version = "0.2.3";

		public static readonly Harmony harmony = new Harmony("xeno.lbol.character.Yoshika_Miyako");
	}
	internal class WatermarkWrapper
	{
		[MethodImpl(MethodImplOptions.NoInlining)]
		internal static void ActivateWatermark()
		{
			API.ActivateWatermark();
		}
	}
}
namespace Yoshika_Miyako.Source.UltimateSkills
{
	public sealed class YoshikaUltADef : YoshikaUltTemplate
	{
		public override UltimateSkillConfig MakeConfig()
		{
			UltimateSkillConfig defaulUltConfig = GetDefaulUltConfig();
			defaulUltConfig.Damage = 15;
			defaulUltConfig.Value1 = 2;
			defaulUltConfig.RelativeEffects = new List<string> { "TempFirepower" };
			return defaulUltConfig;
		}
	}
	[EntityLogic(typeof(YoshikaUltADef))]
	public sealed class YoshikaUltA : UltimateSkill
	{
		public YoshikaUltA()
		{
			((UltimateSkill)this).TargetType = (TargetType)2;
			((UltimateSkill)this).GunName = GunNameID.GetGunFromId(4532);
		}

		protected override IEnumerable<BattleAction> Actions(UnitSelector selector)
		{
			List<Card> hand = ((UltimateSkill)this).Battle.HandZone.ToList();
			if (hand.Count > 0)
			{
				yield return (BattleAction)new ExileManyCardAction((IEnumerable<Card>)hand);
				yield return (BattleAction)(object)new ApplyStatusEffectAction<TempFirepower>((Unit)(object)((UltimateSkill)this).Owner, (int?)(((UltimateSkill)this).Value1 * hand.Count), (int?)0, (int?)0, (int?)0, 0.2f, false);
				yield return (BattleAction)new HealAction((Unit)(object)((UltimateSkill)this).Owner, (Unit)(object)((UltimateSkill)this).Owner, ((UltimateSkill)this).Value1 * hand.Count, (HealType)0, 0.2f);
			}
			EnemyUnit[] enemies = selector.GetEnemies(((UltimateSkill)this).Battle);
			yield return (BattleAction)new DamageAction((Unit)(object)((UltimateSkill)this).Owner, (IEnumerable<Unit>)(object)enemies, ((UltimateSkill)this).Damage, ((UltimateSkill)this).GunName, (GunType)0);
		}
	}
	public sealed class YoshikaUltBDef : YoshikaUltTemplate
	{
		public override UltimateSkillConfig MakeConfig()
		{
			UltimateSkillConfig defaulUltConfig = GetDefaulUltConfig();
			defaulUltConfig.Damage = 19;
			defaulUltConfig.Value1 = 8;
			defaulUltConfig.RelativeEffects = new List<string> { "Poison" };
			return defaulUltConfig;
		}
	}
	[EntityLogic(typeof(YoshikaUltBDef))]
	public sealed class YoshikaUltB : UltimateSkill
	{
		public YoshikaUltB()
		{
			((UltimateSkill)this).TargetType = (TargetType)1;
			((UltimateSkill)this).GunName = GunNameID.GetGunFromId(7191);
		}

		protected override IEnumerable<BattleAction> Actions(UnitSelector selector)
		{
			EnemyUnit enemy2 = selector.GetEnemy(((UltimateSkill)this).Battle);
			yield return (BattleAction)new DamageAction((Unit)(object)((UltimateSkill)this).Owner, (Unit)(object)enemy2, ((UltimateSkill)this).Damage, ((UltimateSkill)this).GunName, (GunType)0);
			if (((Unit)enemy2).IsAlive)
			{
				yield return (BattleAction)(object)new ApplyStatusEffectAction<Poison>((Unit)(object)enemy2, (int?)((UltimateSkill)this).Value1, (int?)0, (int?)0, (int?)0, 0.2f, true);
			}
			foreach (EnemyUnit enemyUnit in ((UltimateSkill)this).Battle.AllAliveEnemies.Where((EnemyUnit enemy) => ((Unit)enemy).HasStatusEffect<Poison>()))
			{
				if (((UltimateSkill)this).Battle.BattleShouldEnd)
				{
					yield break;
				}
				foreach (BattleAction item in ((Unit)enemyUnit).GetStatusEffect<Poison>().TakeEffect())
				{
					yield return item;
				}
			}
			foreach (EnemyUnit enemyUnit2 in ((UltimateSkill)this).Battle.AllAliveEnemies.Where((EnemyUnit enemy) => ((Unit)enemy).HasStatusEffect<PermaPoison>()))
			{
				if (((UltimateSkill)this).Battle.BattleShouldEnd)
				{
					yield break;
				}
				foreach (BattleAction item2 in ((Unit)enemyUnit2).GetStatusEffect<PermaPoison>().TakeEffect())
				{
					yield return item2;
				}
			}
		}
	}
	public class YoshikaUltTemplate : 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(YoshikaDefaultConfig.GetDefaultID((EntityDefinition)(object)this));
		}

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

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

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

		public UltimateSkillConfig GetDefaulUltConfig()
		{
			return YoshikaDefaultConfig.GetDefaultUltConfig();
		}
	}
}
namespace Yoshika_Miyako.Source.StatusEffects
{
	public sealed class IgnoreEnemyDebuffDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = false;
			defaultStatusEffectConfig.HasDuration = true;
			return defaultStatusEffectConfig;
		}

		public override Sprite LoadSprite()
		{
			return ResourceLoader.LoadSprite("IgnoreEnemyDebuff.png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
		}
	}
	[EntityLogic(typeof(IgnoreEnemyDebuffDef))]
	public sealed class IgnoreEnemyDebuff : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<StatusEffectApplyEventArgs>(((StatusEffect)this).Owner.StatusEffectAdding, (EventSequencedReactor<StatusEffectApplyEventArgs>)OnStatusEffectAdding);
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnTurnStarted);
		}

		private IEnumerable<BattleAction> OnStatusEffectAdding(StatusEffectApplyEventArgs args)
		{
			if ((int)((GameEventArgs)args).Cause == 17)
			{
				((StatusEffect)this).NotifyActivating();
				if (!((GameEventArgs)args).IsCanceled && !((StatusEffect)this).Owner.HasStatusEffect<Amulet>())
				{
					((GameEventArgs)args).CancelBy((GameEntity)(object)this);
				}
			}
			else if ((int)((GameEventArgs)args).Cause == 7 && (args.Effect is Vulnerable || args.Effect is Poison || args.Effect is LockedOn || args.Effect is TurnStartPurify))
			{
				((StatusEffect)this).NotifyActivating();
				if (!((GameEventArgs)args).IsCanceled && !((StatusEffect)this).Owner.HasStatusEffect<Amulet>())
				{
					((GameEventArgs)args).CancelBy((GameEntity)(object)this);
				}
			}
			yield break;
		}

		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);
			}
		}
	}
	public sealed class NextTurnLoseHpOwnerDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.Type = (StatusEffectType)1;
			return defaultStatusEffectConfig;
		}

		public override Sprite LoadSprite()
		{
			return ResourceLoader.LoadSprite("NextTurnLoseHpOwner.png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
		}
	}
	[EntityLogic(typeof(NextTurnLoseHpOwnerDef))]
	public sealed class NextTurnLoseHpOwner : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted);
		}

		private IEnumerable<BattleAction> OnPlayerTurnStarted(UnitEventArgs args)
		{
			if (!((StatusEffect)this).Battle.BattleShouldEnd)
			{
				<>n__0();
				yield return (BattleAction)new DamageAction(((StatusEffect)this).Owner, ((StatusEffect)this).Owner, DamageInfo.HpLose((float)((StatusEffect)this).Level, false), "Instant", (GunType)0);
				yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class PermaPoisonDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.Type = (StatusEffectType)2;
			defaultStatusEffectConfig.SFX = "Poison";
			return defaultStatusEffectConfig;
		}

		public override Sprite LoadSprite()
		{
			return ResourceLoader.LoadSprite("PermaPoison.png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
		}
	}
	[EntityLogic(typeof(PermaPoisonDef))]
	public sealed class PermaPoison : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			if (unit is EnemyUnit)
			{
				((StatusEffect)this).ReactOwnerEvent<GameEventArgs>(((StatusEffect)this).Battle.AllEnemyTurnStarted, (EventSequencedReactor<GameEventArgs>)OnAllEnemyTurnStarted);
				((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnEnemyTurnStarted);
			}
			else
			{
				((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted);
			}
		}

		private IEnumerable<BattleAction> OnAllEnemyTurnStarted(GameEventArgs args)
		{
			return TakeEffect();
		}

		private IEnumerable<BattleAction> OnEnemyTurnStarted(UnitEventArgs args)
		{
			Unit owner = ((StatusEffect)this).Owner;
			if (owner == null || !owner.IsExtraTurn)
			{
				yield break;
			}
			foreach (BattleAction item in TakeEffect())
			{
				yield return item;
			}
		}

		private IEnumerable<BattleAction> OnPlayerTurnStarted(UnitEventArgs args)
		{
			return TakeEffect();
		}

		public IEnumerable<BattleAction> TakeEffect()
		{
			if (((StatusEffect)this).Owner != null && !((StatusEffect)this).Battle.BattleShouldEnd)
			{
				<>n__0();
				yield return (BattleAction)(object)DamageAction.LoseLife(((StatusEffect)this).Owner, ((StatusEffect)this).Level, "Poison");
				int num = ((StatusEffect)this).Level - 1;
				((StatusEffect)this).Level = num;
				if (((StatusEffect)this).Level == 0)
				{
					yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
				}
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class RegenerationDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}

		public override Sprite LoadSprite()
		{
			return ResourceLoader.LoadSprite("Regeneration.png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
		}
	}
	[EntityLogic(typeof(RegenerationDef))]
	public sealed class Regeneration : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted);
		}

		private IEnumerable<BattleAction> OnPlayerTurnStarted(UnitEventArgs args)
		{
			yield return (BattleAction)new HealAction(((StatusEffect)this).Owner, ((StatusEffect)this).Owner, ((StatusEffect)this).Level, (HealType)0, 0.2f);
			int num = ((((StatusEffect)this).Level != 1) ? (((StatusEffect)this).Level / 2) : 0);
			((StatusEffect)this).Level = num;
			if (((StatusEffect)this).Level == 0)
			{
				yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
			}
		}
	}
	public sealed class StackDrowningDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.Type = (StatusEffectType)1;
			return defaultStatusEffectConfig;
		}

		public override Sprite LoadSprite()
		{
			return ResourceLoader.LoadSprite("StackDrowning.png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
		}
	}
	[EntityLogic(typeof(StackDrowningDef))]
	public sealed class StackDrowning : StatusEffect
	{
		public override string UnitEffectName => "DrowningLoop";

		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnEnded, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnEnded);
		}

		private IEnumerable<BattleAction> OnOwnerTurnEnded(UnitEventArgs args)
		{
			if (((StatusEffect)this).Owner != null && !((StatusEffect)this).Battle.BattleShouldEnd)
			{
				<>n__0();
				yield return (BattleAction)(object)DamageAction.Reaction(((StatusEffect)this).Owner, ((StatusEffect)this).Level, (((StatusEffect)this).Level >= 15) ? "溺水BuffB" : "溺水BuffA");
			}
		}

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

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

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

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

		public static StatusEffectConfig GetDefaultStatusEffectConfig()
		{
			return YoshikaDefaultConfig.GetDefaultStatusEffectConfig();
		}
	}
	public sealed class StinkyTofuDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.Type = (StatusEffectType)1;
			return defaultStatusEffectConfig;
		}

		public override Sprite LoadSprite()
		{
			return ResourceLoader.LoadSprite("StinkyTofu.png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
		}
	}
	[EntityLogic(typeof(StinkyTofuDef))]
	public sealed class StinkyTofu : 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 DamageAction((Unit)(object)((StatusEffect)this).Battle.Player, (Unit)(object)((StatusEffect)this).Battle.Player, DamageInfo.HpLose((float)((StatusEffect)this).Level, false), "Sacrifice", (GunType)0);
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class TextFengyinDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.Type = (StatusEffectType)1;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(TextFengyinDef))]
	public sealed class TextFengyin : StatusEffect
	{
	}
	public sealed class TextYuyukoDeathDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.Type = (StatusEffectType)2;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(TextYuyukoDeathDef))]
	public sealed class TextYuyukoDeath : StatusEffect
	{
	}
	public sealed class YoshikaDeathDamageSeDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(YoshikaDeathDamageSeDef))]
	public sealed class YoshikaDeathDamageSe : StatusEffect
	{
		public DamageInfo LilyDamage => new DamageInfo((float)((StatusEffect)this).Level, (DamageType)2, false, true, false);

		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted);
		}

		private IEnumerable<BattleAction> OnPlayerTurnStarted(UnitEventArgs args)
		{
			if (((StatusEffect)this).Battle.BattleShouldEnd)
			{
				yield break;
			}
			<>n__0();
			IEnumerable<EnemyUnit> enemyUnits = ((StatusEffect)this).Battle.AllAliveEnemies;
			foreach (EnemyUnit unit in enemyUnits)
			{
				yield return (BattleAction)new DamageAction(((StatusEffect)this).Owner, (Unit)(object)unit, LilyDamage, GunNameID.GetGunFromId(4531), (GunType)0);
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class YoshikaDeathFlawlessSeDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.Type = (StatusEffectType)2;
			defaultStatusEffectConfig.HasCount = true;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(YoshikaDeathFlawlessSeDef))]
	public sealed class YoshikaDeathFlawlessSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(((StatusEffect)this).Owner.DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnDamageReceived);
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted);
		}

		private IEnumerable<BattleAction> OnDamageReceived(DamageEventArgs args)
		{
			DamageInfo damageInfo = args.DamageInfo;
			int num;
			if ((int)((DamageInfo)(ref damageInfo)).DamageType != 0)
			{
				damageInfo = args.DamageInfo;
				num = ((((DamageInfo)(ref damageInfo)).Damage > 0f) ? 1 : 0);
			}
			else
			{
				num = 1;
			}
			if (num != 0 && ((StatusEffect)this).Count != 0)
			{
				((StatusEffect)this).Count = ((StatusEffect)this).Count - 1;
			}
			yield break;
		}

		private IEnumerable<BattleAction> OnPlayerTurnStarted(UnitEventArgs args)
		{
			if (((StatusEffect)this).Count != 0)
			{
				<>n__0();
				if (((StatusEffect)this).Owner.HasStatusEffect<InvincibleEternal>())
				{
					yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)((StatusEffect)this).Owner.GetStatusEffect<InvincibleEternal>(), true, 0.1f);
				}
				if (((StatusEffect)this).Owner.HasStatusEffect<Invincible>())
				{
					yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)((StatusEffect)this).Owner.GetStatusEffect<Invincible>(), true, 0.1f);
				}
				yield return (BattleAction)new DamageAction(((StatusEffect)this).Owner, ((StatusEffect)this).Owner, DamageInfo.Reaction(9999f, false), "Instant", (GunType)0);
				Unit owner = ((StatusEffect)this).Owner;
				if (owner != null && !owner.IsDead)
				{
					yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
				}
			}
			else
			{
				((StatusEffect)this).Count = ((StatusEffect)this).Level;
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class YoshikaFirepowerBleedSeDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(YoshikaFirepowerBleedSeDef))]
	public sealed class YoshikaFirepowerBleedSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(((Unit)((StatusEffect)this).Battle.Player).DamageDealt, (EventSequencedReactor<DamageEventArgs>)OnDamageDealt);
		}

		private IEnumerable<BattleAction> OnDamageDealt(DamageEventArgs args)
		{
			DamageInfo damageInfo = args.DamageInfo;
			int num;
			if ((int)((DamageInfo)(ref damageInfo)).DamageType != 0)
			{
				damageInfo = args.DamageInfo;
				num = ((((DamageInfo)(ref damageInfo)).Damage > 0f) ? 1 : 0);
			}
			else
			{
				num = 1;
			}
			if (num != 0 && !((StatusEffect)this).Battle.BattleShouldEnd && args.Target != ((StatusEffect)this).Battle.Player)
			{
				<>n__0();
				yield return (BattleAction)(object)new ApplyStatusEffectAction<TempFirepower>(((StatusEffect)this).Owner, (int?)((StatusEffect)this).Level, (int?)null, (int?)null, (int?)null, 0f, true);
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class YoshikaFirepowerDeathSeDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(YoshikaFirepowerDeathSeDef))]
	public sealed class YoshikaFirepowerDeathSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<DieEventArgs>(((StatusEffect)this).Battle.EnemyDied, (EventSequencedReactor<DieEventArgs>)OnEnemyDied);
		}

		private IEnumerable<BattleAction> OnEnemyDied(DieEventArgs arg)
		{
			if (!((StatusEffect)this).Battle.BattleShouldEnd)
			{
				<>n__0();
				yield return (BattleAction)(object)new ApplyStatusEffectAction<Firepower>(((StatusEffect)this).Owner, (int?)((StatusEffect)this).Level, (int?)null, (int?)null, (int?)null, 0f, true);
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class YoshikaFirepowerDrawSeDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(YoshikaFirepowerDrawSeDef))]
	public sealed class YoshikaFirepowerDrawSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed);
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnEnded, (EventSequencedReactor<UnitEventArgs>)OnTurnEnded);
		}

		public IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args)
		{
			if (!((StatusEffect)this).Battle.BattleShouldEnd && ((Unit)((StatusEffect)this).Battle.Player).IsInTurn && ((GameEntity)args.Card).Name != ((GameEntity)this).Name)
			{
				((StatusEffect)this).NotifyActivating();
				yield return (BattleAction)(object)new ApplyStatusEffectAction<Firepower>(((StatusEffect)this).Owner, (int?)((StatusEffect)this).Level, (int?)null, (int?)null, (int?)null, 0f, true);
			}
		}

		public IEnumerable<BattleAction> OnTurnEnded(UnitEventArgs args)
		{
			yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
		}
	}
	public sealed class YoshikaFlowerTriggerSeDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = false;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(YoshikaFlowerTriggerSeDef))]
	public sealed class YoshikaFlowerTriggerSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed);
		}

		private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args)
		{
			if (((StatusEffect)this).Battle.BattleShouldEnd || !(args.Card is SummerFlower))
			{
				yield break;
			}
			<>n__0();
			foreach (EnemyUnit enemyUnit in ((StatusEffect)this).Battle.AllAliveEnemies.Where((EnemyUnit enemy) => ((Unit)enemy).HasStatusEffect<Poison>()))
			{
				if (((StatusEffect)this).Battle.BattleShouldEnd)
				{
					yield break;
				}
				foreach (BattleAction item in ((Unit)enemyUnit).GetStatusEffect<Poison>().TakeEffect())
				{
					yield return item;
				}
			}
			foreach (EnemyUnit enemyUnit2 in ((StatusEffect)this).Battle.AllAliveEnemies.Where((EnemyUnit enemy) => ((Unit)enemy).HasStatusEffect<PermaPoison>()))
			{
				if (((StatusEffect)this).Battle.BattleShouldEnd)
				{
					yield break;
				}
				foreach (BattleAction item2 in ((Unit)enemyUnit2).GetStatusEffect<PermaPoison>().TakeEffect())
				{
					yield return item2;
				}
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class YoshikaHealBleedSeDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = false;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(YoshikaHealBleedSeDef))]
	public sealed class YoshikaHealBleedSe : StatusEffect
	{
		private readonly int _value3 = 1;

		public int Value3 => _value3;

		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;
			int num;
			if ((int)((DamageInfo)(ref damageInfo)).DamageType != 0)
			{
				damageInfo = args.DamageInfo;
				num = ((((DamageInfo)(ref damageInfo)).Damage > 0f) ? 1 : 0);
			}
			else
			{
				num = 1;
			}
			if (num != 0)
			{
				<>n__0();
				yield return (BattleAction)new HealAction(((StatusEffect)this).Owner, ((StatusEffect)this).Owner, 1, (HealType)0, 0.2f);
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class YoshikaHealSacrificeSeDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(YoshikaHealSacrificeSeDef))]
	public sealed class YoshikaHealSacrificeSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted);
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnEnding, (EventSequencedReactor<UnitEventArgs>)OnTurnEnding);
		}

		private IEnumerable<BattleAction> OnPlayerTurnStarted(UnitEventArgs args)
		{
			if (!((StatusEffect)this).Battle.BattleShouldEnd)
			{
				<>n__0();
				yield return (BattleAction)(object)DamageAction.LoseLife(((StatusEffect)this).Owner, ((StatusEffect)this).Level, "Poison");
			}
		}

		private IEnumerable<BattleAction> OnTurnEnding(GameEventArgs args)
		{
			if (!((StatusEffect)this).Battle.BattleShouldEnd)
			{
				<>n__0();
				yield return (BattleAction)new HealAction(((StatusEffect)this).Owner, ((StatusEffect)this).Owner, ((StatusEffect)this).Level, (HealType)0, 0.2f);
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class YoshikaManaBleedSeDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.Type = (StatusEffectType)1;
			defaultStatusEffectConfig.HasLevel = false;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(YoshikaManaBleedSeDef))]
	public sealed class YoshikaManaBleedSe : StatusEffect
	{
		public ManaGroup Mana
		{
			get
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				//IL_001b: Unknown result type (might be due to invalid IL or missing references)
				//IL_001c: Unknown result type (might be due to invalid IL or missing references)
				//IL_001f: Unknown result type (might be due to invalid IL or missing references)
				ManaGroup result = default(ManaGroup);
				((ManaGroup)(ref result)).Green = 1;
				((ManaGroup)(ref result)).Colorless = 1;
				return result;
			}
		}

		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(((StatusEffect)this).Owner.DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnDamageReceived);
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted);
		}

		private IEnumerable<BattleAction> OnDamageReceived(DamageEventArgs args)
		{
			DamageInfo damageInfo = args.DamageInfo;
			if (!((DamageInfo)(ref damageInfo)).IsGrazed)
			{
				<>n__0();
				yield return (BattleAction)new GainManaAction(Mana);
			}
		}

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

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class YoshikaPoisonManaGreenSeDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(YoshikaPoisonManaGreenSeDef))]
	public sealed class YoshikaPoisonManaGreenSe : 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 = 1;
				return result;
			}
		}

		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;
			int num;
			if ((int)((DamageInfo)(ref damageInfo)).DamageType != 0)
			{
				damageInfo = args.DamageInfo;
				num = ((((DamageInfo)(ref damageInfo)).Damage > 0f) ? 1 : 0);
			}
			else
			{
				num = 1;
			}
			if (num != 0)
			{
				<>n__0();
				ManaGroup val = default(ManaGroup);
				((ManaGroup)(ref val)).Green = ((StatusEffect)this).Level;
				yield return (BattleAction)new GainManaAction(val);
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class YoshikaPoisonManaPhiloSeDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(YoshikaPoisonManaPhiloSeDef))]
	public sealed class YoshikaPoisonManaPhiloSe : 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)
		{
			((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(((StatusEffect)this).Owner.DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnDamageReceived);
		}

		private IEnumerable<BattleAction> OnDamageReceived(DamageEventArgs args)
		{
			DamageInfo damageInfo = args.DamageInfo;
			int num;
			if ((int)((DamageInfo)(ref damageInfo)).DamageType != 0)
			{
				damageInfo = args.DamageInfo;
				num = ((((DamageInfo)(ref damageInfo)).Damage > 0f) ? 1 : 0);
			}
			else
			{
				num = 1;
			}
			if (num != 0)
			{
				<>n__0();
				ManaGroup val = default(ManaGroup);
				((ManaGroup)(ref val)).Philosophy = ((StatusEffect)this).Level;
				yield return (BattleAction)new GainManaAction(val);
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class YoshikaPoisonTriggerMasterSeDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(YoshikaPoisonTriggerMasterSeDef))]
	public sealed class YoshikaPoisonTriggerMasterSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Battle.EnemySpawned, (EventSequencedReactor<UnitEventArgs>)OnEnemySpawned);
			((StatusEffect)this).ReactOwnerEvent<DieEventArgs>(((StatusEffect)this).Battle.EnemyDied, (EventSequencedReactor<DieEventArgs>)OnEnemyDied);
		}

		private IEnumerable<BattleAction> OnEnemySpawned(UnitEventArgs args)
		{
			yield return (BattleAction)(object)new ApplyStatusEffectAction<YoshikaPoisonTriggerSe>(args.Unit, (int?)((StatusEffect)this).Level, (int?)null, (int?)null, (int?)null, 0.2f, true);
		}

		private IEnumerable<BattleAction> OnEnemyDied(DieEventArgs args)
		{
			if (((StatusEffect)this).Battle.BattleShouldEnd || (int)((GameEventArgs)args).Cause != 7)
			{
				yield break;
			}
			<>n__0();
			EnemyUnit target = ((StatusEffect)this).Battle.RandomAliveEnemy;
			if (target != null)
			{
				yield return (BattleAction)(object)new ApplyStatusEffectAction<Poison>((Unit)(object)target, (int?)((StatusEffect)this).Level, (int?)null, (int?)null, (int?)null, 0.2f, true);
				target = ((StatusEffect)this).Battle.RandomAliveEnemy;
				if (target != null)
				{
					yield return (BattleAction)(object)new ApplyStatusEffectAction<Poison>((Unit)(object)target, (int?)((StatusEffect)this).Level, (int?)null, (int?)null, (int?)null, 0.2f, true);
				}
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class YoshikaPoisonTriggerSeDef : YoshikaStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = YoshikaStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.Type = (StatusEffectType)2;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(YoshikaPoisonTriggerSeDef))]
	public sealed class YoshikaPoisonTriggerSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(((StatusEffect)this).Owner.DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnDamageReceived);
			((StatusEffect)this).ReactOwnerEvent<StatusEffectEventArgs>(((Unit)((StatusEffect)this).Battle.Player).StatusEffectRemoved, (EventSequencedReactor<StatusEffectEventArgs>)OnStatusEffectRemoved);
		}

		private IEnumerable<BattleAction> OnDamageReceived(DamageEventArgs args)
		{
			if ((int)((GameEventArgs)args).Cause != 7)
			{
				yield break;
			}
			DamageInfo damageInfo = args.DamageInfo;
			int num;
			if ((int)((DamageInfo)(ref damageInfo)).DamageType != 0)
			{
				damageInfo = args.DamageInfo;
				num = ((((DamageInfo)(ref damageInfo)).Damage > 0f) ? 1 : 0);
			}
			else
			{
				num = 1;
			}
			if (num == 0)
			{
				yield break;
			}
			<>n__0();
			EnemyUnit target = ((StatusEffect)this).Battle.RandomAliveEnemy;
			if (target != null)
			{
				yield return (BattleAction)(object)new ApplyStatusEffectAction<Poison>((Unit)(object)target, (int?)((StatusEffect)this).Level, (int?)null, (int?)null, (int?)null, 0.2f, true);
				target = ((StatusEffect)this).Battle.RandomAliveEnemy;
				if (target != null)
				{
					yield return (BattleAction)(object)new ApplyStatusEffectAction<Poison>((Unit)(object)target, (int?)((StatusEffect)this).Level, (int?)null, (int?)null, (int?)null, 0.2f, true);
				}
			}
		}

		private IEnumerable<BattleAction> OnStatusEffectRemoved(StatusEffectEventArgs args)
		{
			if (args.Effect is YoshikaPoisonTriggerMasterSe)
			{
				yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
}
namespace Yoshika_Miyako.Source.Player
{
	public sealed class YoshikaPlayerDef : PlayerUnitTemplate
	{
		[EntityLogic(typeof(YoshikaPlayerDef))]
		public sealed class Yoshika_Miyako : 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)YoshikaLocalization.PlayerUnitBatchLoc.AddEntity((EntityDefinition)(object)this);
		}

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

		public override PlayerUnitConfig MakeConfig()
		{
			return YoshikaLoadouts.playerUnitConfig;
		}
	}
}
namespace Yoshika_Miyako.Source.Model
{
	public sealed class Yoshika_MiyakoModel : UnitModelTemplate
	{
		public static bool useInGameModel = BepinexPlugin.useInGameModel;

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

		public static string model_name_zombie = "YoshikaZombieModel.png";

		public static string spellsprite_name = "YoshikaStand.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 YoshikaPlayerDef()).UniqueId;
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)YoshikaLocalization.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, 365, (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 Yoshika_Miyako.Source.Localization
{
	public sealed class YoshikaLocalization
	{
		public static string Cards = "Cards";

		public static string Exhibits = "Exhibits";

		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 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);
			PlayerUnitBatchLoc.DiscoverAndLoadLocFiles(PlayerUnit);
			UnitModelBatchLoc.DiscoverAndLoadLocFiles(UnitModel);
			UltimateSkillsBatchLoc.DiscoverAndLoadLocFiles(UltimateSkills);
			StatusEffectsBatchLoc.DiscoverAndLoadLocFiles(StatusEffects);
		}
	}
}
namespace Yoshika_Miyako.Source.Loadouts
{
	public class YoshikaLoadouts
	{
		public static string UltimateSkillA = "YoshikaUltA";

		public static string UltimateSkillB = "YoshikaUltB";

		public static string ExhibitA = "YoshikaExhibitA";

		public static string ExhibitB = "YoshikaExhibitB";

		public static List<string> DeckA = new List<string> { "Shoot", "Shoot", "Boundary", "Boundary", "YoshikaAttackR", "YoshikaAttackG", "YoshikaBlockB", "YoshikaBlockB", "YoshikaBlockB", "YoshikaStarterR" };

		public static List<string> DeckB = new List<string> { "Shoot", "Shoot", "Boundary", "Boundary", "YoshikaAttackR", "YoshikaAttackG", "YoshikaBlockB", "YoshikaBlockB", "YoshikaBlockB", "YoshikaStarterG" };

		public static PlayerUnitConfig playerUnitConfig;

		static YoshikaLoadouts()
		{
			//IL_0148: 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_01b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ba: Expected O, but got Unknown
			string modUniqueID = BepinexPlugin.modUniqueID;
			int? num = 0;
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).White = 0;
			((ManaGroup)(ref val)).Blue = 0;
			((ManaGroup)(ref val)).Black = 2;
			((ManaGroup)(ref val)).Red = 1;
			((ManaGroup)(ref val)).Green = 1;
			((ManaGroup)(ref val)).Colorless = 0;
			((ManaGroup)(ref val)).Philosophy = 0;
			playerUnitConfig = new PlayerUnitConfig(modUniqueID, 8, 0, num, "", "#7c66ff", true, 85, val, 2, 0, UltimateSkillA, UltimateSkillB, ExhibitA, ExhibitB, (IReadOnlyList<string>)DeckA, (IReadOnlyList<string>)DeckB, 2, 1);
		}
	}
}
namespace Yoshika_Miyako.Source.ImageLoader
{
	public sealed class YoshikaImageLoader
	{
		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 Yoshika_Miyako.Source.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 Yoshika_Miyako.Source.Exhibits
{
	public class YoshikaExhibitTemplate : 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(YoshikaDefaultConfig.GetDefaultID((EntityDefinition)(object)this));
		}

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

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

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

		public ExhibitConfig GetDefaultExhibitConfig()
		{
			return YoshikaDefaultConfig.GetDefaultExhibitConfig();
		}
	}
	public sealed class YoshikaExhibitBDef : YoshikaExhibitTemplate
	{
		public override ExhibitConfig MakeConfig()
		{
			//IL_0025: 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)
			ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig();
			defaultExhibitConfig.Value1 = 1;
			defaultExhibitConfig.Value2 = 1;
			ManaGroup value = default(ManaGroup);
			((ManaGroup)(ref value)).Green = 1;
			defaultExhibitConfig.Mana = value;
			defaultExhibitConfig.BaseManaColor = (ManaColor)5;
			defaultExhibitConfig.RelativeEffects = new List<string> { "Poison" };
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(YoshikaExhibitBDef))]
	public sealed class YoshikaExhibitB : ShiningExhibit
	{
		protected override void OnGain(PlayerUnit player)
		{
			((ShiningExhibit)this).OnGain(player);
			List<Card> list = new List<Card> { (Card)(object)Library.CreateCard<ToolAmulet>() };
			((GameEntity)this).GameRun.AddDeckCards((IEnumerable<Card>)list, false, (VisualSourceData)null);
		}

		protected override void OnEnterBattle()
		{
			foreach (EnemyUnit allAliveEnemy in ((Exhibit)this).Battle.AllAliveEnemies)
			{
				((Exhibit)this).ReactBattleEvent<StatusEffectApplyEventArgs>(((Unit)allAliveEnemy).StatusEffectAdding, (EventSequencedReactor<StatusEffectApplyEventArgs>)OnStatusEffectAdding);
			}
			((Exhibit)this).HandleBattleEvent<UnitEventArgs>(((Exhibit)this).Battle.EnemySpawned, (GameEventHandler<UnitEventArgs>)OnEnemySpawned);
		}

		private IEnumerable<BattleAction> OnStatusEffectAdding(StatusEffectApplyEventArgs args)
		{
			if (args.Effect is Poison)
			{
				((Exhibit)this).NotifyActivating();
				yield return (BattleAction)(object)new ApplyStatusEffectAction<PermaPoison>(args.Unit, args.Level, args.Duration, args.Count, (int?)0, 0.1f, true);
				if (!args.Unit.HasStatusEffect<Amulet>() && !((GameEventArgs)args).IsCanceled)
				{
					((GameEventArgs)args).CancelBy((GameEntity)(object)this);
				}
				else
				{
					yield return (BattleAction)(object)new ApplyStatusEffectAction<Amulet>(args.Unit, (int?)1, (int?)0, (int?)0, (int?)0, 0.1f, true);
				}
			}
		}

		private void OnEnemySpawned(UnitEventArgs args)
		{
			((Exhibit)this).ReactBattleEvent<StatusEffectApplyEventArgs>(args.Unit.StatusEffectAdding, (EventSequencedReactor<StatusEffectApplyEventArgs>)OnStatusEffectAdding);
		}
	}
	public sealed class YoshikaExhibitADef : YoshikaExhibitTemplate
	{
		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 = 5;
			ManaGroup value = default(ManaGroup);
			((ManaGroup)(ref value)).Red = 1;
			defaultExhibitConfig.Mana = value;
			defaultExhibitConfig.BaseManaColor = (ManaColor)4;
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(YoshikaExhibitADef))]
	public sealed class YoshikaExhibitA : ShiningExhibit
	{
		public ManaGroup HeartMana
		{
			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)).Red = 2;
				return result;
			}
		}

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

		private IEnumerable<BattleAction> OnPlayerTurnStarted(UnitEventArgs args)
		{
			if (((Unit)((Exhibit)this).Battle.Player).TurnCounter == 2)
			{
				((Exhibit)this).NotifyActivating();
				yield return (BattleAction)new HealAction((Unit)(object)((Exhibit)this).Owner, (Unit)(object)((Exhibit)this).Owner, ((Exhibit)this).Value1, (HealType)0, 0.2f);
				yield return (BattleAction)new GainManaAction(HeartMana);
			}
		}
	}
	public sealed class YoshikaHandOfGreedDef : YoshikaExhibitTemplate
	{
		public override ExhibitConfig MakeConfig()
		{
			ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig();
			defaultExhibitConfig.IsPooled = true;
			defaultExhibitConfig.Appearance = (AppearanceType)0;
			defaultExhibitConfig.Owner = "";
			defaultExhibitConfig.LosableType = (ExhibitLosableType)0;
			defaultExhibitConfig.Rarity = (Rarity)1;
			defaultExhibitConfig.BaseManaColor = null;
			defaultExhibitConfig.BaseManaAmount = 0;
			defaultExhibitConfig.Value1 = 25;
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(YoshikaHandOfGreedDef))]
	public sealed class YoshikaHandOfGreed : Exhibit
	{
		private class YoshikaHandOfGreedWeighter : IExhibitWeighter
		{
			public float WeightFor(Type type, GameRunController gameRun)
			{
				if (((GameEntity)gameRun.Player).Id != BepinexPlugin.modUniqueID)
				{
					return 0f;
				}
				return 1.15f;
			}
		}

		protected override void OnLeaveBattle()
		{
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Expected O, but got Unknown
			PlayerUnit owner = ((Exhibit)this).Owner;
			if (owner != null && ((Unit)owner).IsAlive && ((Unit)owner).Hp <= (((Unit)owner).MaxHp + 1) / 2)
			{
				((GameEntity)this).GameRun.GainMoney(((Exhibit)this).Value1, true, new VisualSourceData
				{
					SourceType = (VisualSourceType)7,
					Source = (GameEntity)(object)this
				});
				((Exhibit)this).NotifyActivating();
			}
		}
	}
	public sealed class YoshikaSpiritSnacksDef : YoshikaExhibitTemplate
	{
		public override ExhibitConfig MakeConfig()
		{
			ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig();
			defaultExhibitConfig.IsPooled = true;
			defaultExhibitConfig.Appearance = (AppearanceType)0;
			defaultExhibitConfig.Owner = "";
			defaultExhibitConfig.LosableType = (ExhibitLosableType)0;
			defaultExhibitConfig.Rarity = (Rarity)1;
			defaultExhibitConfig.BaseManaColor = null;
			defaultExhibitConfig.BaseManaAmount = 0;
			defaultExhibitConfig.Value1 = 7;
			defaultExhibitConfig.RelativeEffects = new List<string> { "Regeneration" };
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(YoshikaSpiritSnacksDef))]
	public sealed class YoshikaSpiritSnacks : Exhibit
	{
		private class YoshikaSpiritSnacksWeighter : IExhibitWeighter
		{
			public float WeightFor(Type type, GameRunController gameRun)
			{
				if (((GameEntity)gameRun.Player).Id != BepinexPlugin.modUniqueID)
				{
					return 0f;
				}
				return 1.15f;
			}
		}

		protected override void OnEnterBattle()
		{
			((Exhibit)this).Active = true;
			((Exhibit)this).ReactBattleEvent<DamageEventArgs>(((Unit)((Exhibit)this).Battle.Player).DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnPlayerDamageReceived);
		}

		private IEnumerable<BattleAction> OnPlayerDamageReceived(DamageEventArgs args)
		{
			int num;
			if (((Exhibit)this).Active)
			{
				DamageInfo damageInfo = args.DamageInfo;
				num = ((((DamageInfo)(ref damageInfo)).Damage > 0f) ? 1 : 0);
			}
			else
			{
				num = 0;
			}
			if (num != 0)
			{
				<>n__0();
				((Exhibit)this).Active = false;
				yield return (BattleAction)(object)new ApplyStatusEffectAction<Regeneration>((Unit)(object)((Exhibit)this).Owner, (int?)((Exhibit)this).Value1, (int?)null, (int?)null, (int?)null, 0.2f, true);
			}
		}

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

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((Exhibit)this).NotifyActivating();
		}
	}
}
namespace Yoshika_Miyako.Source.Config
{
	public sealed class YoshikaDefaultConfig
	{
		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_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_0160: Unknown result type (might be due to invalid IL or missing references)
			//IL_0167: Expected O, but got Unknown
			return new CardConfig(0, "", 10, true, new string[0][], "", "", 0, false, true, true, false, true, (Rarity)0, (CardType)0, (TargetType?)null, (IReadOnlyList<ManaColor>)new List<ManaColor>(), false, default(ManaGroup), (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_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: 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>(), "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 Yoshika_Miyako.Source.Cards.Uncommon
{
	public sealed class YoshikaAttackBleedDef : YoshikaCardTemplate
	{
		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_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.GunName = GunNameID.GetGunFromId(12090);
			cardDefaultConfig.GunNameBurst = GunNameID.GetGunFromId(12091);
			cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)4 };
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 4;
			((ManaGroup)(ref val)).Red = 1;
			cardDefaultConfig.Cost = val;
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)1;
			cardDefaultConfig.TargetType = (TargetType)1;
			cardDefaultConfig.Damage = 32;
			cardDefaultConfig.UpgradedDamage = 44;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 1;
			cardDefaultConfig.Mana = val;
			cardDefaultConfig.Keywords = (Keyword)2097408;
			cardDefaultConfig.UpgradedKeywords = (Keyword)2097408;
			cardDefaultConfig.RelativeKeyword = (Keyword)1099511627776L;
			cardDefaultConfig.UpgradedRelativeKeyword = (Keyword)1099511627776L;
			cardDefaultConfig.Illustrator = "";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(YoshikaAttackBleedDef))]
	public sealed class YoshikaAttackBleed : YoshikaCard
	{
		protected override void OnEnterBattle(BattleController battle)
		{
			((Card)this).ReactBattleEvent<DamageEventArgs>(((Unit)((Card)this).Battle.Player).DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnDamageReceived);
		}

		private IEnumerable<BattleAction> OnDamageReceived(DamageEventArgs args)
		{
			if ((int)((Card)this).Zone != 2)
			{
				yield break;
			}
			DamageInfo damageInfo = args.DamageInfo;
			if ((int)((DamageInfo)(ref damageInfo)).DamageType == 0)
			{
				((Card)this).DecreaseTurnCost(((Card)this).Mana);
				yield break;
			}
			damageInfo = args.DamageInfo;
			if (((DamageInfo)(ref damageInfo)).Damage > 0f)
			{
				((Card)this).DecreaseTurnCost(((Card)this).Mana);
			}
		}

		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)(object)PerformAction.Gun((Unit)(object)((Card)this).Battle.Player, (Unit)(object)selector.GetEnemy(((Card)this).Battle), ((Card)this).IsUpgraded ? GunNameID.GetGunFromId(12021) : GunNameID.GetGunFromId(12020), 0f);
			yield return ((Card)this).AttackAction(selector, ((Card)this).GunName);
		}
	}
	public sealed class YoshikaAttackPoisonDef : YoshikaCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_0030: 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)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.GunName = GunNameID.GetGunFromId(853);
			cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)3 };
			ManaGroup cost = default(ManaGroup);
			((ManaGroup)(ref cost)).Any = 2;
			((ManaGroup)(ref cost)).Black = 1;
			cardDefaultConfig.Cost = cost;
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)1;
			cardDefaultConfig.TargetType = (TargetType)1;
			cardDefaultConfig.Damage = 4;
			cardDefaultConfig.UpgradedDamage = 6;
			cardDefaultConfig.Value1 = 3;
			cardDefaultConfig.Value2 = 6;
			cardDefaultConfig.UpgradedValue2 = 9;
			cardDefaultConfig.RelativeEffects = new List<string> { "Poison", "TempFirepowerNegative" };
			cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "Poison", "TempFirepowerNegative" };
			cardDefaultConfig.Illustrator = "";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(YoshikaAttackPoisonDef))]
	public sealed class YoshikaAttackPoison : YoshikaCard
	{
		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)
			EnemyUnit target = selector.GetEnemy(((Card)this).Battle);
			bool Poisoned = ((Unit)target).HasStatusEffect<Poison>() || ((Unit)target).HasStatusEffect<PermaPoison>();
			if (Poisoned)
			{
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((Card)this).Battle.Player, (Unit)(object)selector.GetEnemy(((Card)this).Battle), GunNameID.GetGunFromId(4700), 0f);
			}
			yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((Card)this).Battle.Player, (Unit)(object)selector.GetEnemy(((Card)this).Battle), ((Card)this).IsUpgraded ? GunNameID.GetGunFromId(7202) : GunNameID.GetGunFromId(7200), 0f);
			yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((Card)this).Battle.Player, (Unit)(object)selector.GetEnemy(((Card)this).Battle), ((Card)this).IsUpgraded ? GunNameID.GetGunFromId(7203) : GunNameID.GetGunFromId(7201), 0f);
			for (int i = 0; i < ((Card)this).Value1; i++)
			{
				yield return ((Card)this).AttackAction((Unit)(object)target);
			}
			if (!Poisoned)
			{
				yield break;
			}
			foreach (BattleAction item in ((Card)this).DebuffAction<TempFirepowerNegative>((IEnumerable<Unit>)((Card)this).Battle.AllAliveEnemies, ((Card)this).Value2, 0, 0, 0, true, 0.1f))
			{
				yield return item;
			}
		}
	}
	public sealed class YoshikaAttackRandomDef : YoshikaCardTemplate
	{
		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)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.GunName = GunNameID.GetGunFromId(7100);
			cardDefaultConfig.GunNameBurst = GunNameID.GetGunFromId(7101);
			cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)4 };
			ManaGroup cost = default(ManaGroup);
			((ManaGroup)(ref cost)).Any = 3;
			((ManaGroup)(ref cost)).Red = 1;
			cardDefaultConfig.Cost = cost;
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)1;
			cardDefaultConfig.TargetType = (TargetType)2;
			cardDefaultConfig.Damage = 9;
			cardDefaultConfig.UpgradedDamage = 8;
			cardDefaultConfig.Value1 = 2;
			cardDefaultConfig.UpgradedValue1 = 3;
			cardDefaultConfig.Value2 = 12;
			cardDefaultConfig.UpgradedValue2 = 18;
			cardDefaultConfig.Illustrator = "";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(YoshikaAttackRandomDef))]
	public sealed class YoshikaAttackRandom : YoshikaCard
	{
		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)
			for (int i = 0; i < ((Card)this).Value1; i++)
			{
				yield return ((Card)this).AttackAction((Unit)(object)((Card)this).Battle.RandomAliveEnemy);
			}
			yield return (BattleAction)new DamageAction((Unit)(object)((Card)this).Battle.Player, (IEnumerable<Unit>)(object)selector.GetEnemies(((Card)this).Battle), new DamageInfo(0f, (DamageType)1, false, false, false), ((Card)this).IsUpgraded ? GunNameID.GetGunFromId(23011) : GunNameID.GetGunFromId(23010), (GunType)0);
			foreach (BattleAction item in ((Card)this).DebuffAction<NextTurnLoseHpOwner>((IEnumerable<Unit>)((Card)this).Battle.AllAliveEnemies, ((Card)this).Value2, 0, 0, 0, true, 0.1f))
			{
				yield return item;
			}
		}
	}
	public sealed class YoshikaBleedDamageDef : YoshikaCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.Colors = new List<ManaColor>
			{
				(ManaColor)3,
				(ManaColor)5
			};
			cardDefaultConfig.Cost = default(ManaGroup);
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)3;
			cardDefaultConfig.TargetType = (TargetType)4;
			cardDefaultConfig.Value1 = 3;
			cardDefaultConfig.Value2 = 2;
			cardDefaultConfig.Keywords = (Keyword)2162688;
			cardDefaultConfig.UpgradedKeywords = (Keyword)2162688;
			cardDefaultConfig.Illustrator = "";
			cardDefaultConfig.Index = CardIndexGenerator.Initial_offset + 280301;
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(YoshikaBleedDamageDef))]
	public sealed class YoshikaBleedDamage : YoshikaCard
	{
		protected override void OnEnterBattle(BattleController battle)
		{
			((Card)this).HandleBattleEvent<HealEventArgs>(((Unit)((Card)this).Battle.Player).HealingReceived, (GameEventHandler<HealEventArgs>)OnHealingReceived, (GameEventPriority)0);
			((Card)this).HandleBattleEvent<DamageEventArgs>(((Unit)((Card)this).Battle.Player).DamageReceived, (GameEventHandler<DamageEventArgs>)OnDamageReceived, (GameEventPriority)0);
			((Card)this).ReactBattleEvent<UnitEventArgs>(((Unit)((Card)this).Battle.Player).TurnEnding, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnEnding);
		}

		private void OnHealingReceived(HealEventArgs args)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Invalid comparison between Unknown and I4
			if ((int)((Card)this).Zone == 2)
			{
				((Card)this).DeltaValue1 = ((Card)this).DeltaValue1 + ((Card)this).Value2;
			}
		}

		private void OnDamageReceived(DamageEventArgs args)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Invalid comparison between Unknown and I4
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			if ((int)((Card)this).Zone == 2)
			{
				DamageInfo damageInfo = args.DamageInfo;
				if ((int)((DamageInfo)(ref damageInfo)).DamageType == 0 && ((Card)this).IsUpgraded)
				{
					((Card)this).DeltaValue1 = ((Card)this).DeltaValue1 + ((Card)this).Value2;
				}
			}
		}

		private IEnumerable<BattleAction> OnPlayerTurnEnding(UnitEventArgs args)
		{
			if (!((Card)this).Battle.BattleShouldEnd && (int)((Card)this).Zone == 2)
			{
				EnemyUnit randomEnemy = CollectionsExtensions.SampleOrDefault<EnemyUnit>(((Card)this).Battle.EnemyGroup.Alives, ((Card)this).Battle.GameRun.BattleRng);
				if (randomEnemy != null)
				{
					<>n__0();
					yield return (BattleAction)(object)PerformAction.Effect((Unit)(object)randomEnemy, "Changzhi", 0f, "ReimuBoundaryHit", 0f, (EffectBehavior)0, 0.3f);
					yield return (BattleAction)new DamageAction((Unit)(object)((Card)this).Battle.Player, (Unit)(object)randomEnemy, DamageInfo.Reaction((float)((Card)this).Value1, false), "Instant", (GunType)0);
				}
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((Card)this).NotifyActivating();
		}
	}
	public sealed class YoshikaBlockGrowthDef : YoshikaCardTemplate
	{
		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)
			//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_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)5 };
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 4;
			((ManaGroup)(ref val)).Green = 1;
			cardDefaultConfig.Cost = val;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 3;
			((ManaGroup)(ref val)).Green = 1;
			cardDefaultConfig.UpgradedCost = val;
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)2;
			cardDefaultConfig.TargetType = (TargetType)4;
			cardDefaultConfig.Block = 21;
			cardDefaultConfig.UpgradedBlock = 23;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 1;
			cardDefaultConfig.Mana = val;
			cardDefaultConfig.Value1 = 1;
			cardDefaultConfig.RelativeKeyword = (Keyword)4398046511616L;
			cardDefaultConfig.UpgradedRelativeKeyword = (Keyword)4398046511616L;
			cardDefaultConfig.RelativeEffects = new List<string> { "Graze" };
			cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "Graze" };
			cardDefaultConfig.Illustrator = "";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(YoshikaBlockGrowthDef))]
	public sealed class YoshikaBlockGrowth : YoshikaCard
	{
		protected override void OnEnterBattle(BattleController battle)
		{
			((Card)this).HandleBattleEvent<GameEventArgs>(((Card)this).Battle.BattleStarted, (GameEventHandler<GameEventArgs>)OnBattleStarted, (GameEventPriority)0);
		}

		private void OnBattleStarted(GameEventArgs args)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			if (((Card)this).Battle.CardExtraGrowAmount > 0)
			{
				((Card)this).DecreaseBaseCost(((Card)this).Mana * ((Card)this).Battle.CardExtraGrowAmount);
			}
		}

		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).DefenseAction(true);
			yield return ((Card)this).BuffAction<Graze>(((Card)this).Value1, 0, 0, 0, 0.2f);
		}

		public override IEnumerable<BattleAction> AfterUseAction()
		{
			//IL_0003: Unknown result type (might be due to invalid IL or missing references)
			((Card)this).DecreaseBaseCost(((Card)this).Mana);
			return ((Card)this).AfterUseAction();
		}
	}
	public sealed class YoshikaDrawExileDef : YoshikaCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_001f: 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)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)3 };
			ManaGroup cost = default(ManaGroup);
			((ManaGroup)(ref cost)).Black = 1;
			cardDefaultConfig.Cost = cost;
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)3;
			cardDefaultConfig.TargetType = (TargetType)4;
			cardDefaultConfig.Value1 = 2;
			cardDefaultConfig.UpgradedValue1 = 4;
			cardDefaultConfig.Value2 = 3;
			cardDefaultConfig.RelativeKeyword = (Keyword)65536;
			cardDefaultConfig.UpgradedRelativeKeyword = (Keyword)65536;
			cardDefaultConfig.Illustrator = "";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(YoshikaDrawExileDef))]
	public sealed class YoshikaDrawExile : YoshikaCard
	{
		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 DrawManyCardAction(((Card)this).Value1);
			yield return ((Card)this).HealAction(((Card)this).Value2);
		}

		public override IEnumerable<BattleAction> OnExile(CardZone srcZone)
		{
			//IL_000f: 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)
			yield return (BattleAction)new MoveCardAction((Card)(object)this, (CardZone)2);
		}
	}
	public sealed class YoshikaDrawFirepowerDef : YoshikaCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_001f: 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)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)4 };
			cardDefaultConfig.Cost = default(ManaGroup);
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)3;
			cardDefaultConfig.TargetType = (TargetType)4;
			cardDefaultConfig.Value1 = 1;
			cardDefaultConfig.UpgradedValue1 = 2;
			cardDefaultConfig.Value2 = 2;
			cardDefaultConfig.RelativeKeyword = (Keyword)65536;
			cardDefaultConfig.UpgradedRelativeKeyword = (Keyword)65536;
			cardDefaultConfig.RelativeEffects = new List<string> { "Firepower" };
			cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "Firepower" };
			cardDefaultConfig.Illustrator = "";
			cardDefaultConfig.Index = CardIndexGenerator.Initial_offset + 240311;
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(YoshikaDrawFirepowerDef))]
	public sealed class YoshikaDrawFirepower : YoshikaCard
	{
		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)
			DrawManyCardAction drawAction = new DrawManyCardAction(((Card)this).Value1);
			yield return (BattleAction)(object)drawAction;
			IReadOnlyList<Card> drawnCards = drawAction.DrawnCards;
			if (drawnCards == null || drawnCards.Count <= 0)
			{
				yield break;
			}
			foreach (Card card in drawnCards)
			{
				if ((int)card.CardType != 1)
				{
					yield return (BattleAction)new ExileCardAction(card);
					yield return ((Card)this).BuffAction<Firepower>(((Card)this).Value2, 0, 0, 0, 0.2f);
				}
			}
		}
	}
	public sealed class YoshikaExileStatusDef : YoshikaCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_001f: 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)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)3 };
			ManaGroup cost = default(ManaGroup);
			((ManaGroup)(ref cost)).Black = 1;
			cardDefaultConfig.Cost = cost;
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)3;
			cardDefaultConfig.TargetType = (TargetType)4;
			cardDefaultConfig.Value1 = 2;
			cardDefaultConfig.Value2 = 2;
			cardDefaultConfig.Keywords = (Keyword)65536;
			cardDefaultConfig.UpgradedKeywords = (Keyword)196608;
			cardDefaultConfig.RelativeCards = new List<string> { "Shadow" };
			cardDefaultConfig.UpgradedRelativeCards = new List<string> { "Shadow" };
			cardDefaultConfig.Illustrator = "";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(YoshikaExileStatusDef))]
	public sealed class YoshikaExileStatus : YoshikaCard
	{
		public override Interaction Precondition()
		{
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Expected O, but got Unknown
			List<Card> list = (from card in ((Card)this).Battle.DrawZoneToShow.Concat(((Card)this).Battle.DiscardZone)
				where card != this && (int)card.Config.Rarity == 0
				select card).ToList();
			if (!CollectionsExtensions.Empty<Card>((IReadOnlyCollection<Card>)list))
			{
				return (Interaction)new SelectCardInteraction(0, ((Card)this).Value1, (IEnumerable<Card>)list, (SelectedCardHandling)0);
			}
			return null;
		}

		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)
			if (precondition != null)
			{
				IReadOnlyList<Card> readOnlyList = ((SelectCardInteraction)precondition).SelectedCards;
				if (readOnlyList.Count > 0)
				{
					yield return (BattleAction)new ExileManyCardAction((IEnumerable<Card>)readOnlyList);
				}
			}
			yield return (BattleAction)new AddCardsToDrawZoneAction((IEnumerable<Card>)Library.CreateCards<Shadow>(((Card)this).Value2, false), (DrawZoneTarget)2, (AddCardsType)0);
		}
	}
	public sealed class YoshikaFirepowerAreaDef : YoshikaCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_001f: 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)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)4 };
			cardDefaultConfig.Cost = default(ManaGroup);
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)3;
			cardDefaultConfig.TargetType = (TargetType)4;
			cardDefaultConfig.Value1 = 8;
			cardDefaultConfig.UpgradedValue1 = 12;
			cardDefaultConfig.Value2 = 5;
			cardDefaultConfig.UpgradedValue2 = 8;
			cardDefaultConfig.Keywords = (Keyword)65536;
			cardDefaultConfig.UpgradedKeywords = (Keyword)65536;
			cardDefaultConfig.RelativeEffects = new List<string> { "TempFirepower" };
			cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "TempFirepower" };
			cardDefaultConfig.Illustrator = "";
			cardDefaultConfig.Index = CardIndexGenerator.Initial_offset + 240301;
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(YoshikaFirepowerAreaDef))]
	public sealed class YoshikaFirepowerArea : YoshikaCard
	{
		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).BuffAction<TempFirepower>(((Card)this).Value1, 0, 0, 0, 0.2f);
			IEnumerable<EnemyUnit> target = ((Card)this).Battle.AllAliveEnemies;
			if (target == null)
			{
				yield break;
			}
			foreach (EnemyUnit targetUnit in target)
			{
				yield return (BattleAction)(object)new ApplyStatusEffectAction<TempFirepower>((Unit)(object)targetUnit, (int?)((Card)this).Value2, (int?)null, (int?)null, (int?)null, 0.2f, true);
			}
		}
	}
	public sealed class YoshikaFirepowerDoubleDef : YoshikaCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_001f: 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)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)4 };
			ManaGroup cost = default(ManaGroup);
			((ManaGroup)(ref cost)).Red = 2;
			cardDefaultConfig.Cost = cost;
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)3;
			cardDefaultConfig.TargetType = (TargetType)4;
			cardDefaultConfig.Value1 = 3;
			cardDefaultConfig.Keywords = (Keyword)2097152;
			cardDefaultConfig.UpgradedKeywords = (Keyword)2097152;
			cardDefaultConfig.RelativeEffects = new List<string> { "TempFirepower" };
			cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "TempFirepower" };
			cardDefaultConfig.Illustrator = "";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(YoshikaFirepowerDoubleDef))]
	public sealed class YoshikaFirepowerDouble : YoshikaCard
	{
		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)
			if (((Card)this).IsUpgraded)
			{
				yield return ((Card)this).BuffAction<TempFirepower>(((Card)this).Value1, 0, 0, 0, 0.2f);
			}
			if (((Unit)((Card)this).Battle.Player).HasStatusEffect<TempFirepower>())
			{
				yield return ((Card)this).BuffAction<TempFirepower>(((StatusEffect)((Unit)((Card)this).Battle.Player).GetStatusEffect<TempFirepower>()).Level, 0, 0, 0, 0.2f);
			}
			else if (((Unit)((Card)this).Battle.Player).HasStatusEffect<TempFirepowerNegative>())
			{
				yield return ((Card)this).DebuffAction<TempFirepowerNegative>((Unit)(object)((Card)this).Battle.Player, ((StatusEffect)((Unit)((Card)this).Battle.Player).GetStatusEffect<TempFirepowerNegative>()).Level, 0, 0, 0, true, 0.2f);
			}
		}
	}
	public sealed class YoshikaFirepowerManaDef : YoshikaCardTemplate
	{
		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)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)5 };
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 1;
			((ManaGroup)(ref val)).Green = 1;
			cardDefaultConfig.Cost = val;
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)3;
			cardDefaultConfig.TargetType = (TargetType)4;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Black = 1;
			((ManaGroup)(ref val)).Green = 1;
			((ManaGroup)(ref val)).Colorless = 2;
			cardDefaultConfig.Mana = val;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Black = 1;
			((ManaGroup)(ref val)).Green = 1;
			((ManaGroup)(ref val)).Philosophy = 2;
			cardDefaultConfig.UpgradedMana = val;
			cardDefaultConfig.Value1 = 13;
			cardDefaultConfig.UpgradedRelativeKeyword = (Keyword)2048;
			cardDefaultConfig.RelativeEffects = new List<string> { "TempFirepowerNegative" };
			cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "TempFirepowerNegative" };
			cardDefaultConfig.Illustrator = "";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(YoshikaFirepowerManaDef))]
	public sealed class YoshikaFirepowerMana : YoshikaCard
	{
		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).DebuffAction<TempFirepowerNegative>((Unit)(object)((Card)this).Battle.Player, ((Card)this).Value1, 0, 0, 0, true, 0.2f);
			yield return (BattleAction)new GainManaAction(((Card)this).Mana);
		}
	}
	public sealed class YoshikaFirepowerStatusDef : YoshikaCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.IsPooled = false;
			cardDefaultConfig.FindInBattle = false;
			cardDefaultConfig.HideMesuem = true;
			cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)3 };
			ManaGroup cost = default(ManaGroup);
			((ManaGroup)(ref cost)).Any = 2;
			((ManaGroup)(ref cost)).Black = 1;
			cardDefaultConfig.Cost = cost;
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)4;
			cardDefaultConfig.TargetType = (TargetType)4;
			cardDefaultConfig.Value1 = 5;
			cardDefaultConfig.UpgradedValue1 = 8;
			cardDefaultConfig.Value2 = 2;
			cardDefaultConfig.RelativeEffects = new List<string> { "Firepower" };
			cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "Firepower" };
			cardDefaultConfig.RelativeCards = new List<string> { "BlackResidue" };
			cardDefaultConfig.UpgradedRelativeCards = new List<string> { "BlackResidue" };
			cardDefaultConfig.Illustrator = "";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(YoshikaFirepowerStatusDef))]
	public sealed class YoshikaFirepowerStatus : YoshikaCard
	{
		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).BuffAction<Firepower>(((Card)this).Value1, 0, 0, 0, 0.2f);
			yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)Library.CreateCards<BlackResidue>(((Card)this).Value2, false), (AddCardsType)0);
		}
	}
	public sealed class YoshikaFirepowerZombieDef : YoshikaCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.Colors = new List<ManaColor>
			{
				(ManaColor)3,
				(ManaColor)4
			};
			ManaGroup cost = default(ManaGroup);
			((ManaGroup)(ref cost)).Any = 2;
			cardDefaultConfig.Cost = cost;
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)3;
			cardDefaultConfig.TargetType = (TargetType)4;
			cardDefaultConfig.Value1 = 2;
			cardDefaultConfig.UpgradedValue1 = 3;
			cardDefaultConfig.Keywords = (Keyword)557056;
			cardDefaultConfig.UpgradedKeywords = (Keyword)557056;
			cardDefaultConfig.RelativeKeyword = (Keyword)65536;
			cardDefaultConfig.UpgradedRelativeKeyword = (Keyword)65536;
			cardDefaultConfig.RelativeEffects = new List<string> { "Firepower" };
			cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "Firepower" };
			cardDefaultConfig.Illustrator = "";
			cardDefaultConfig.Index = CardIndexGenerator.Initial_offset + 270301;
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(YoshikaFirepowerZombieDef))]
	public sealed class YoshikaFirepowerZombie : YoshikaCard
	{
		public bool Active => ((Card)this).Battle != null && ((Unit)((Card)this).Battle.Player).IsAlive && ((Unit)((Card)this).Battle.Player).Hp <= (((Unit)((Card)this).Battle.Player).MaxHp + 1) / 2;

		protected override void OnEnterBattle(BattleController battle)
		{
			((Card)this).ReactBattleEvent<GameEventArgs>(((Card)this).Battle.BattleStarted, (EventSequencedReactor<GameEventArgs>)OnBattleStarted);
		}

		private IEnumerable<BattleAction> OnBattleStarted(GameEventArgs args)
		{
			if (!Active || this != ((Card)this).Battle.EnumerateAllCards().First((Card card) => card is YoshikaFirepowerZombie))
			{
				yield break;
			}
			List<Card> list = ((Card)this).Battle.DrawZone.Where((Card card) => card is YoshikaFirepowerZombie).ToList();
			yield return (BattleAction)new ExileManyCardAction((IEnumerable<Card>)list);
			foreach (Card card2 in list)
			{
				yield return (BattleAction)new MoveCardToDrawZoneAction(card2, (DrawZoneTarget)2);
			}
			yield return (BattleAction)new ExileManyCardAction((IEnumerable<Card>)list);
		}

		public override IEnumerable<BattleAction> OnExile(CardZone srcZone)
		{
			//IL_000f: 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)
			yield return ((Card)this).BuffAction<Firepower>(((Card)this).Value1, 0, 0, 0, 0.2f);
			yield return ((Card)this).HealAction(((Card)this).Value1);
		}
	}
	public sealed class YoshikaFlowerDamageDef : YoshikaCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.GunName = GunNameID.GetGunFromId(6181);
			cardDefaultConfig.FindInBattle = false;
			cardDefaultConfig.IsPooled = false;
			cardDefaultConfig.HideMesuem = true;
			cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)5 };
			ManaGroup cost = default(ManaGroup);
			((ManaGroup)(ref cost)).Any = 2;
			((ManaGroup)(ref cost)).Green = 1;
			cardDefaultConfig.Cost = cost;
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)1;
			cardDefaultConfig.TargetType = (TargetType)1;
			cardDefaultConfig.Damage = 20;
			cardDefaultConfig.Value1 = 15;
			cardDefaultConfig.Value2 = 5;
			cardDefaultConfig.Keywords = (Keyword)256;
			cardDefaultConfig.UpgradedKeywords = (Keyword)256;
			cardDefaultConfig.RelativeKeyword = (Keyword)1099511627776L;
			cardDefaultConfig.UpgradedRelativeKeyword = (Keyword)1099511627776L;
			cardDefaultConfig.Illustrator = "";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(YoshikaFlowerDamageDef))]
	public sealed class YoshikaFlowerDamage : YoshikaCard
	{
		public DamageInfo FlowerDamage
		{
			get
			{
				//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_0044: 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_0061: Unknown result type (might be due to invalid IL or missing references)
				if (((Card)this).Battle != null && ((Unit)((Card)this).Battle.Player).HasStatusEffect<SummerFlowerSe>())
				{
					return DamageInfo.Attack((float)(((Card)this).Value1 + ((StatusEffect)((Unit)((Card)this).Battle.Player).GetStatusEffect<SummerFlowerSe>()).Level), ((Card)this).IsAccuracy);
				}
				return DamageInfo.Attack((float)((Card)this).Value1, ((Card)this).IsAccuracy);
			}
		}

		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)
			if (((Card)this).IsUpgraded)
			{
				yield return ((Card)this).AttackAction(selector, FlowerDamage, (GunPair)null);
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((Card)this).Battle.Player, (Unit)(object)selector.GetEnemy(((Card)this).Battle), GunNameID.GetGunFromId(14040), 0.1f);
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((Card)this).Battle.Player, (Unit)(object)selector.GetEnemy(((Card)this).Battle), GunNameID.GetGunFromId(14030), 0.2f);
			}
			else
			{
				yield return ((Card)this).AttackAction(selector, <>n__0(), (GunPair)null);
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((Card)this).Battle.Player, (Unit)(object)selector.GetEnemy(((Card)this).Battle), GunNameID.GetGunFromId(14041), 0.1f);
				yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((Card)this).Battle.Player, (Unit)(object)selector.GetEnemy(((Card)this).Battle), GunNameID.GetGunFromId(14031), 0.2f);
			}
			yield return ((Card)this).BuffAction<SummerFlowerSe>(((Card)this)