Decompiled source of ShouMod v0.4.0

ShouMod.dll

Decompiled 3 weeks ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using AddWatermark;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using Cysharp.Threading.Tasks;
using HarmonyLib;
using LBoL.Base;
using LBoL.Base.Extensions;
using LBoL.ConfigData;
using LBoL.Core;
using LBoL.Core.Battle;
using LBoL.Core.Battle.BattleActions;
using LBoL.Core.Battle.Interactions;
using LBoL.Core.Cards;
using LBoL.Core.Randoms;
using LBoL.Core.Stations;
using LBoL.Core.StatusEffects;
using LBoL.Core.Units;
using LBoL.EntityLib.Cards;
using LBoL.EntityLib.Cards.Enemy;
using LBoL.EntityLib.Exhibits;
using LBoL.EntityLib.StatusEffects.Basic;
using LBoL.EntityLib.StatusEffects.Cirno;
using LBoL.EntityLib.StatusEffects.ExtraTurn;
using LBoL.Presentation;
using LBoLEntitySideloader;
using LBoLEntitySideloader.Attributes;
using LBoLEntitySideloader.CustomKeywords;
using LBoLEntitySideloader.Entities;
using LBoLEntitySideloader.Resource;
using LBoLEntitySideloader.Utils;
using SampleCharacterMod.Config;
using ShouMod.BattleActions;
using ShouMod.Cards;
using ShouMod.Cards.Template;
using ShouMod.Config;
using ShouMod.Enemies.Template;
using ShouMod.GunName;
using ShouMod.ImageLoader;
using ShouMod.Localization;
using ShouMod.Patches;
using ShouMod.StatusEffects;
using UnityEngine;
using UnityEngine.Experimental.Rendering;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: IgnoresAccessChecksTo("LBoL.Base")]
[assembly: IgnoresAccessChecksTo("LBoL.ConfigData")]
[assembly: IgnoresAccessChecksTo("LBoL.Core")]
[assembly: IgnoresAccessChecksTo("LBoL.EntityLib")]
[assembly: IgnoresAccessChecksTo("LBoL.Presentation")]
[assembly: IgnoresAccessChecksTo("Untitled.ConfigDataBuilder.Base")]
[assembly: AssemblyCompany("ShouMod")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+22ab2539b8811a0b12ad06570ad44b2aa11bd9fe")]
[assembly: AssemblyProduct("ShouMod")]
[assembly: AssemblyTitle("ShouMod")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace SampleCharacterMod.Config
{
	public struct CustomConfigEntry<T>
	{
		public T Value { get; set; }

		public string Section { get; set; }

		public string Key { get; set; }

		public string Description { get; set; }

		public CustomConfigEntry(T value, string section, string key, string description)
		{
			Value = value;
			Section = section;
			Key = key;
			Description = description;
		}
	}
}
namespace ShouMod
{
	[BepInPlugin("Worldsoul15.LBoL.Character.ShouMod", "ShouMod", "0.4.0")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInProcess("LBoL.exe")]
	public class BepinexPlugin : BaseUnityPlugin
	{
		public static string modUniqueID = "ShouMod";

		public static string playerName = "Shou";

		public static bool useInGameModel = false;

		public static string modelName = "Youmu";

		public static bool modelIsFlipped = true;

		public static List<ManaColor> offColors = new List<ManaColor>
		{
			(ManaColor)1,
			(ManaColor)4,
			(ManaColor)3,
			(ManaColor)5,
			(ManaColor)2,
			(ManaColor)6
		};

		public static ConfigEntry<bool> enableAct1Boss;

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

		private static readonly Harmony harmony = PInfo.harmony;

		internal static ManualLogSource log;

		internal static TemplateSequenceTable sequenceTable = new TemplateSequenceTable(0);

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

		internal static DirectorySource directorySource = new DirectorySource("Worldsoul15.LBoL.Character.ShouMod", "");

		private void Awake()
		{
			log = ((BaseUnityPlugin)this).Logger;
			enableAct1Boss = ((BaseUnityPlugin)this).Config.Bind<bool>(enableAct1BossEntry.Section, enableAct1BossEntry.Key, enableAct1BossEntry.Value, enableAct1BossEntry.Description);
			Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject);
			((Object)((Component)this).gameObject).hideFlags = (HideFlags)61;
			CardIndexGenerator.PromiseClearIndexSet();
			EntityManager.RegisterSelf();
			harmony.PatchAll();
			if (Chainloader.PluginInfos.ContainsKey("neo.lbol.tools.watermark"))
			{
				WatermarkWrapper.ActivateWatermark();
			}
			Func<Sprite> func = () => ResourceLoader.LoadSprite("BossIcon.png", (IResourceSource)(object)directorySource, (Rect?)null, 1, (Vector2?)null);
			EnemyUnitTemplate.AddBossNodeIcon("SampleCharacterMod", func, (Assembly)null);
		}

		private void OnDestroy()
		{
			if (harmony != null)
			{
				harmony.UnpatchSelf();
			}
		}
	}
	public static class PInfo
	{
		public const string GUID = "Worldsoul15.LBoL.Character.ShouMod";

		public const string Name = "ShouMod";

		public const string version = "0.4.0";

		public static readonly Harmony harmony = new Harmony("Worldsoul15.LBoL.Character.ShouMod");
	}
	public class SampleCharacterLoadouts
	{
		public static string UltimateSkillA = "ShouVajraBuddhist";

		public static string UltimateSkillB = "ShouTreasureGun";

		public static string ExhibitA = "ShouDullPagoda";

		public static string ExhibitB = "ShouMouseBasket";

		public static List<string> DeckA = new List<string> { "Shoot", "Shoot", "Boundary", "Boundary", "ShouAttackW", "ShouAttackR", "ShouBlockW", "ShouBlockW", "ShouBlockR", "ShouChannelingPower" };

		public static List<string> DeckB = new List<string> { "Shoot", "Shoot", "Boundary", "Boundary", "ShouAttackW", "ShouAttackW", "ShouBlockW", "ShouBlockR", "ShouBlockW", "ShouGemstoneManufacturing" };

		public static PlayerUnitConfig playerUnitConfig;

		static SampleCharacterLoadouts()
		{
			//IL_014a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0162: 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_0197: Expected O, but got Unknown
			string modUniqueID = BepinexPlugin.modUniqueID;
			int? num = 0;
			int? num2 = 6;
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).White = 3;
			((ManaGroup)(ref val)).Red = 1;
			playerUnitConfig = new PlayerUnitConfig(modUniqueID, false, "", 0, 8, num, true, num2, (ManaColor)4, (ManaColor)1, val, "#f3c259", 80, 99, 0, UltimateSkillA, UltimateSkillB, ExhibitA, ExhibitB, (IReadOnlyList<string>)DeckA, (IReadOnlyList<string>)DeckB, 1, 3);
		}
	}
	public sealed class ShouModDef : PlayerUnitTemplate
	{
		[EntityLogic(typeof(ShouModDef))]
		public sealed class ShouMod : PlayerUnit
		{
		}

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

		public override IdContainer GetId()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			return IdContainer.op_Implicit(BepinexPlugin.modUniqueID);
		}

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

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

		public override PlayerUnitConfig MakeConfig()
		{
			return SampleCharacterLoadouts.playerUnitConfig;
		}
	}
	internal class WatermarkWrapper
	{
		[MethodImpl(MethodImplOptions.NoInlining)]
		internal static void ActivateWatermark()
		{
			API.ActivateWatermark();
		}
	}
}
namespace ShouMod.SampleCharacterUlt
{
	public sealed class ShouTreasureGunDef : SampleCharacterUltTemplate
	{
		public override UltimateSkillConfig MakeConfig()
		{
			UltimateSkillConfig defaulUltConfig = GetDefaulUltConfig();
			defaulUltConfig.Damage = 5;
			defaulUltConfig.Value1 = 8;
			defaulUltConfig.Value2 = 2;
			defaulUltConfig.RelativeCards = new List<string> { "ShouDiamond", "ShouEmerald", "ShouOnyx", "ShouOpal", "ShouPearl", "ShouRuby", "ShouSapphire" };
			return defaulUltConfig;
		}
	}
	[EntityLogic(typeof(ShouTreasureGunDef))]
	public sealed class ShouTreasureGun : UltimateSkill
	{
		public List<Type> Gemstones = new List<Type>
		{
			typeof(ShouDiamond),
			typeof(ShouEmerald),
			typeof(ShouOnyx),
			typeof(ShouOpal),
			typeof(ShouPearl),
			typeof(ShouRuby),
			typeof(ShouSapphire)
		};

		public ShouTreasureGun()
		{
			((UltimateSkill)this).TargetType = (TargetType)1;
			((UltimateSkill)this).GunName = GunNameID.GetGunFromId(4158);
		}

		protected override IEnumerable<BattleAction> Actions(UnitSelector selector)
		{
			EnemyUnit enemy = selector.GetEnemy(((UltimateSkill)this).Battle);
			yield return (BattleAction)(object)PerformAction.Spell((Unit)(object)((UltimateSkill)this).Owner, "ShouTreasureGun");
			List<Card> list = new List<Card>();
			CollectionsExtensions.Shuffle<Type>((IList<Type>)Gemstones, ((GameEntity)this).GameRun.BattleCardRng);
			for (int j = 0; j < ((UltimateSkill)this).Value2; j++)
			{
				list.Add(Library.CreateCard(Gemstones[j]));
			}
			for (int i = 0; i < ((UltimateSkill)this).Value1; i++)
			{
				yield return (BattleAction)new DamageAction((Unit)(object)((UltimateSkill)this).Owner, (Unit)(object)enemy, ((UltimateSkill)this).Damage, ((UltimateSkill)this).GunName, (GunType)0);
			}
			if (!((UltimateSkill)this).Battle.BattleShouldEnd)
			{
				yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)list, (AddCardsType)1);
			}
		}
	}
	public sealed class ShouVajraBuddhistDef : SampleCharacterUltTemplate
	{
		public override UltimateSkillConfig MakeConfig()
		{
			UltimateSkillConfig defaulUltConfig = GetDefaulUltConfig();
			defaulUltConfig.Damage = 23;
			defaulUltConfig.Value1 = 3;
			defaulUltConfig.Value2 = 1;
			defaulUltConfig.RelativeEffects = new List<string> { "ShouHardenSe", "Firepower" };
			return defaulUltConfig;
		}
	}
	[EntityLogic(typeof(ShouVajraBuddhistDef))]
	public sealed class ShouVajraBuddhist : UltimateSkill
	{
		public ShouVajraBuddhist()
		{
			((UltimateSkill)this).TargetType = (TargetType)2;
			((UltimateSkill)this).GunName = GunNameID.GetGunFromId(4158);
		}

		protected override IEnumerable<BattleAction> Actions(UnitSelector selector)
		{
			Unit[] targets = selector.GetUnits(((UltimateSkill)this).Battle);
			yield return (BattleAction)(object)PerformAction.Spell((Unit)(object)((UltimateSkill)this).Owner, "ShouVajraBuddhist");
			yield return (BattleAction)new DamageAction((Unit)(object)((UltimateSkill)this).Owner, (IEnumerable<Unit>)targets, ((UltimateSkill)this).Damage, ((UltimateSkill)this).GunName, (GunType)0);
			if (!((UltimateSkill)this).Battle.BattleShouldEnd)
			{
				yield return (BattleAction)(object)new ApplyStatusEffectAction<ShouHardenSe>((Unit)(object)((UltimateSkill)this).Battle.Player, (int?)0, (int?)((UltimateSkill)this).Value1, (int?)0, (int?)0, 0.2f, true);
				yield return (BattleAction)(object)new ApplyStatusEffectAction<Firepower>((Unit)(object)((UltimateSkill)this).Battle.Player, (int?)((UltimateSkill)this).Value2, (int?)0, (int?)0, (int?)0, 0.2f, true);
			}
		}
	}
	public class SampleCharacterUltTemplate : UltimateSkillTemplate
	{
		public override IdContainer GetId()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			return IdContainer.op_Implicit(SampleCharacterDefaultConfig.DefaultID((EntityDefinition)(object)this));
		}

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

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

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

		public UltimateSkillConfig GetDefaulUltConfig()
		{
			return SampleCharacterDefaultConfig.GetDefaultUltConfig();
		}
	}
}
namespace ShouMod.StatusEffects
{
	public sealed class SampleCharacterEnhanceSeDef : SampleCharacterStatusEffectTemplate
	{
		public override Sprite LoadSprite()
		{
			return null;
		}
	}
	[EntityLogic(typeof(SampleCharacterEnhanceSeDef))]
	public sealed class SampleCharacterEnhanceSe : StatusEffect
	{
	}
	public sealed class ShouAbsoluteJusticeSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "Weak", "Vulnerable" };
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouAbsoluteJusticeSeDef))]
	public sealed class ShouAbsoluteJusticeSe : StatusEffect
	{
		private int Counter { get; set; }

		private List<Type> Types { get; set; }

		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).OnAdded(unit);
			Counter = 0;
			Types = new List<Type>
			{
				typeof(Weak),
				typeof(Vulnerable)
			};
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnStarted);
		}

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

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class ShouBloodMoneySeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = true;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouBloodMoneySeDef))]
	public sealed class ShouBloodMoneySe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).Owner.ReactBattleEvent<DieEventArgs>(((StatusEffect)this).Battle.EnemyDied, (Func<DieEventArgs, IEnumerable<BattleAction>>)OnEnemyDied);
		}

		private IEnumerable<BattleAction> OnEnemyDied(DieEventArgs args)
		{
			if (!args.Unit.HasStatusEffect<Servant>())
			{
				yield return (BattleAction)new GainMoneyAction(((StatusEffect)this).Level, (SpecialSourceType)0);
			}
		}
	}
	public sealed class ShouByakurenTeammateBuffSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = false;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouByakurenTeammateBuffSeDef))]
	public sealed class ShouByakurenTeammateBuffSe : StatusEffect
	{
		public ManaGroup Mana => ManaGroup.Empty;

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

		private IEnumerable<BattleAction> OnTurnStarted(UnitEventArgs args)
		{
			Card[] array = ((StatusEffect)this).Battle.RollCardsWithoutManaLimit(new CardWeightTable(RarityWeightTable.BattleCard, OwnerWeightTable.AllOnes, CardTypeWeightTable.CanBeLoot, false), 1, (Predicate<CardConfig>)((CardConfig config) => (int)config.Rarity == 2 && config.Id != "ShouByakurenTeammateDef"));
			Card[] array2 = array;
			foreach (Card card in array2)
			{
				card.IsEthereal = true;
				card.IsExile = true;
				card.SetBaseCost(Mana);
			}
			yield return (BattleAction)new AddCardsToHandAction(array);
		}
	}
	public sealed class ShouColdCashSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = true;
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "Cold" };
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouColdCashSeDef))]
	public sealed class ShouColdCashSe : StatusEffect
	{
		public List<Type> Gemstones = new List<Type>
		{
			typeof(ShouAmber),
			typeof(ShouDiamond),
			typeof(ShouEmerald),
			typeof(ShouOnyx),
			typeof(ShouOpal),
			typeof(ShouPearl),
			typeof(ShouRuby),
			typeof(ShouSapphire)
		};

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

		private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args)
		{
			if (args.Card is ShouGemstoneCard)
			{
				yield return (BattleAction)(object)new ApplyStatusEffectAction<Cold>((Unit)(object)((StatusEffect)this).Battle.RandomAliveEnemy, (int?)0, (int?)0, (int?)0, (int?)0, 0.2f, true);
			}
		}

		private IEnumerable<BattleAction> OnOwnerTurnEnding(UnitEventArgs args)
		{
			yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
		}
	}
	public sealed class ShouCrimsonTearsSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = true;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouCrimsonTearsSeDef))]
	public sealed class ShouCrimsonTearsSe : StatusEffect
	{
		private int count = 0;

		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>)OnOwnerTurnStarted);
		}

		private IEnumerable<BattleAction> OnDamageReceived(DamageEventArgs args)
		{
			int num;
			if (args.Source != ((StatusEffect)this).Owner && args.Source.IsAlive)
			{
				DamageInfo damageInfo = args.DamageInfo;
				if ((int)((DamageInfo)(ref damageInfo)).DamageType == 2)
				{
					damageInfo = args.DamageInfo;
					num = ((((DamageInfo)(ref damageInfo)).Amount > 0f) ? 1 : 0);
					goto IL_0080;
				}
			}
			num = 0;
			goto IL_0080;
			IL_0080:
			if (num != 0)
			{
				<>n__0();
				if (count < ((StatusEffect)this).Level)
				{
					yield return (BattleAction)new AddCardsToDiscardAction((IEnumerable<Card>)Library.CreateCards<ShouRuby>(1, false), (AddCardsType)0);
					count++;
				}
			}
		}

		private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args)
		{
			count = 0;
			yield break;
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((StatusEffect)this).NotifyActivating();
		}
	}
	public sealed class ShouCycleofWealthSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = false;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouCycleofWealthSeDef))]
	public sealed class ShouCycleofWealthSe : StatusEffect
	{
		public List<Type> Gemstones = new List<Type>
		{
			typeof(ShouAmber),
			typeof(ShouDiamond),
			typeof(ShouEmerald),
			typeof(ShouOnyx),
			typeof(ShouOpal),
			typeof(ShouPearl),
			typeof(ShouRuby),
			typeof(ShouSapphire)
		};

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

		private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args)
		{
			if (args.Card is ShouGemstoneCard)
			{
				CollectionsExtensions.Shuffle<Type>((IList<Type>)Gemstones, ((GameEntity)this).GameRun.BattleCardRng);
				yield return (BattleAction)new ExileCardAction(args.Card);
				yield return (BattleAction)new AddCardsToDiscardAction((Card[])(object)new Card[1] { Library.CreateCard(Gemstones[0]) });
			}
		}
	}
	public sealed class ShouDivineProtectorSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = true;
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "ShouResonanceSe" };
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouDivineProtectorSeDef))]
	public sealed class ShouDivineProtectorSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed);
		}

		private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args)
		{
			yield return (BattleAction)(object)new ApplyStatusEffectAction<ShouResonanceSe>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true);
		}
	}
	public sealed class ShouEndlessWealthSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.IsStackable = false;
			defaultStatusEffectConfig.LevelStackType = (StackType)3;
			defaultStatusEffectConfig.HasCount = true;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouEndlessWealthSeDef))]
	public sealed class ShouEndlessWealthSe : StatusEffect
	{
		public List<Type> Gemstones = new List<Type>
		{
			typeof(ShouRuby),
			typeof(ShouOnyx),
			typeof(ShouSapphire),
			typeof(ShouPearl),
			typeof(ShouEmerald),
			typeof(ShouOpal)
		};

		public string NextGem
		{
			get
			{
				string[] array = ((StatusEffect)this).Brief.Split(" ");
				return array[(((StatusEffect)this).Count + 1) % 6];
			}
		}

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

		private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args)
		{
			((StatusEffect)this).Count = (((StatusEffect)this).Count + 1) % 6;
			yield return (BattleAction)new AddCardsToHandAction((Card[])(object)new Card[1] { Library.CreateCard(Gemstones[((StatusEffect)this).Count]) });
		}
	}
	public sealed class ShouFocusingLightSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "Firepower" };
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouFocusingLightSeDef))]
	public sealed class ShouFocusingLightSe : StatusEffect
	{
		public ManaGroup Mana => ManaGroup.Single((ManaColor)7);

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

		private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args)
		{
			if (!((StatusEffect)this).Battle.BattleShouldEnd)
			{
				yield return (BattleAction)new GainManaAction(ManaGroup.Philosophies(1));
				yield return ((StatusEffect)this).BuffAction<Firepower>(((StatusEffect)this).Level, 0, 0, 0, 0.2f);
			}
		}
	}
	public sealed class ShouGemstoneReferenceSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(ShouGemstoneReferenceSeDef))]
	public sealed class ShouGemstoneReferenceSe : StatusEffect
	{
		public List<Type> Gemstones = new List<Type>
		{
			typeof(ShouDiamond),
			typeof(ShouEmerald),
			typeof(ShouOnyx),
			typeof(ShouOpal),
			typeof(ShouPearl),
			typeof(ShouRuby),
			typeof(ShouSapphire)
		};
	}
	public sealed class ShouHardenedSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = false;
			defaultStatusEffectConfig.HasDuration = true;
			defaultStatusEffectConfig.DurationDecreaseTiming = (DurationDecreaseTiming)3;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouHardenedSeDef))]
	public sealed class ShouHardenedSe : StatusEffect
	{
	}
	public sealed class ShouHardenSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = false;
			defaultStatusEffectConfig.HasDuration = true;
			defaultStatusEffectConfig.DurationDecreaseTiming = (DurationDecreaseTiming)3;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouHardenSeDef))]
	public sealed class ShouHardenSe : StatusEffect
	{
		public int ExtraShield
		{
			get
			{
				if (((Unit)((StatusEffect)this).Battle.Player).HasStatusEffect<ShouResonanceSe>())
				{
					return 30 + ((StatusEffect)((Unit)((StatusEffect)this).Battle.Player).GetStatusEffect<ShouResonanceSe>()).Level;
				}
				return 30;
			}
		}

		protected override void OnAdded(Unit unit)
		{
			if (unit is PlayerUnit)
			{
				((StatusEffect)this).HandleOwnerEvent<BlockShieldEventArgs>(unit.BlockShieldGaining, (GameEventHandler<BlockShieldEventArgs>)OnBlockGaining);
			}
			else
			{
				Debug.LogError((object)(((GameEntity)this).Name + " added to enemy " + ((GameEntity)unit).Name + ", which has no effect."));
			}
		}

		private void OnBlockGaining(BlockShieldEventArgs args)
		{
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Invalid comparison between Unknown and I4
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Invalid comparison between Unknown and I4
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Invalid comparison between Unknown and I4
			int num = 30;
			if (((Unit)((StatusEffect)this).Battle.Player).HasStatusEffect<ShouResonanceSe>())
			{
				num += ((StatusEffect)((Unit)((StatusEffect)this).Battle.Player).GetStatusEffect<ShouResonanceSe>()).Level;
			}
			if ((int)((GameEventArgs)args).Cause == 1 || (int)((GameEventArgs)args).Cause == 20)
			{
				float num2 = 1f + (float)num / 100f;
				if ((int)args.Type != 2)
				{
					args.Block *= num2;
					args.Shield *= num2;
				}
			}
		}
	}
	public sealed class ShouHeartSutraRecitationSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = true;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouHeartSutraRecitationSeDef))]
	public sealed class ShouHeartSutraRecitationSe : StatusEffect
	{
		public List<Type> Gemstones = new List<Type>
		{
			typeof(ShouAmber),
			typeof(ShouDiamond),
			typeof(ShouEmerald),
			typeof(ShouOnyx),
			typeof(ShouOpal),
			typeof(ShouPearl),
			typeof(ShouRuby),
			typeof(ShouSapphire)
		};

		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<CardEventArgs>(((StatusEffect)this).Battle.CardExiled, (EventSequencedReactor<CardEventArgs>)OnCardExiled);
		}

		private IEnumerable<BattleAction> OnCardExiled(CardEventArgs args)
		{
			if ((int)((GameEventArgs)args).Cause != 3 && args.Card is ShouGemstoneCard)
			{
				yield return (BattleAction)new CastBlockShieldAction((Unit)(object)((StatusEffect)this).Battle.Player, ((StatusEffect)this).Level, 0, (BlockShieldType)2, false);
			}
		}
	}
	public sealed class ShouInstinctiveCharitySeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = true;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouInstinctiveCharitySeDef))]
	public sealed class ShouInstinctiveCharitySe : StatusEffect
	{
		public List<Type> Gemstones = new List<Type>
		{
			typeof(ShouAmber),
			typeof(ShouDiamond),
			typeof(ShouEmerald),
			typeof(ShouOnyx),
			typeof(ShouOpal),
			typeof(ShouPearl),
			typeof(ShouRuby),
			typeof(ShouSapphire)
		};

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

		private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args)
		{
			List<Card> list = new List<Card>();
			CollectionsExtensions.Shuffle<Type>((IList<Type>)Gemstones, ((GameEntity)this).GameRun.BattleCardRng);
			for (int i = 0; i < ((StatusEffect)this).Level; i++)
			{
				list.Add(Library.CreateCard(Gemstones[i]));
			}
			yield return (BattleAction)new AddCardsToDrawZoneAction((IEnumerable<Card>)list, (DrawZoneTarget)2, (AddCardsType)0);
		}
	}
	public sealed class ShouLimitlessBenevolenceSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = true;
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "LockedOn", "ShouVigorSe" };
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouLimitlessBenevolenceSeDef))]
	public sealed class ShouLimitlessBenevolenceSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(((StatusEffect)this).Owner.DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnDamageReceived);
		}

		public IEnumerable<BattleAction> OnDamageReceived(DamageEventArgs args)
		{
			int num;
			if (args.Source != ((StatusEffect)this).Owner && args.Source.IsAlive)
			{
				DamageInfo damageInfo = args.DamageInfo;
				if ((int)((DamageInfo)(ref damageInfo)).DamageType == 2)
				{
					damageInfo = args.DamageInfo;
					num = ((((DamageInfo)(ref damageInfo)).Amount > 0f) ? 1 : 0);
					goto IL_0080;
				}
			}
			num = 0;
			goto IL_0080;
			IL_0080:
			if (num != 0 && ((Unit)((StatusEffect)this).Battle.Player).HasStatusEffect<ShouVigorSe>())
			{
				yield return (BattleAction)(object)new ApplyStatusEffectAction<LockedOn>(args.Source, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true);
			}
		}
	}
	public sealed class ShouPrimalPowerSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = true;
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "ShouResonanceSe" };
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouPrimalPowerSeDef))]
	public sealed class ShouPrimalPowerSe : StatusEffect
	{
		public ManaGroup Mana => ManaGroup.Single((ManaColor)7);

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

		private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args)
		{
			if ((int)args.Card.CardType == 1)
			{
				yield return (BattleAction)new GainManaAction(Mana);
				yield return (BattleAction)new DrawCardAction();
				yield return (BattleAction)(object)new ApplyStatusEffectAction<ShouResonanceSe>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)3, (int?)0, (int?)0, (int?)0, 0.2f, true);
				int level = ((StatusEffect)this).Level;
				((StatusEffect)this).Level = level - 1;
				if (((StatusEffect)this).Level == 0)
				{
					yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
				}
			}
		}

		private IEnumerable<BattleAction> OnOwnerTurnEnding(UnitEventArgs args)
		{
			yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
		}
	}
	public sealed class ShouRefractingLightSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = true;
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "TempFirepower", "TempSpirit" };
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouRefractingLightSeDef))]
	public sealed class ShouRefractingLightSe : StatusEffect
	{
		public List<Type> Gemstones = new List<Type>
		{
			typeof(ShouAmber),
			typeof(ShouDiamond),
			typeof(ShouEmerald),
			typeof(ShouOnyx),
			typeof(ShouOpal),
			typeof(ShouPearl),
			typeof(ShouRuby),
			typeof(ShouSapphire)
		};

		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 ShouGemstoneCard)
			{
				yield return (BattleAction)(object)new ApplyStatusEffectAction<TempFirepower>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true);
				yield return (BattleAction)(object)new ApplyStatusEffectAction<TempSpirit>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true);
			}
		}
	}
	public sealed class ShouResonanceSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = true;
			defaultStatusEffectConfig.LevelStackType = (StackType)0;
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "ShouHardenSe", "ShouVigorSe" };
			defaultStatusEffectConfig.Order = 5;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouResonanceSeDef))]
	public sealed class ShouResonanceSe : StatusEffect
	{
	}
	public sealed class ShouScatteredProtectionSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = true;
			defaultStatusEffectConfig.RelativeEffects = new List<string> { "TempFirepowerNegative", "ShouHardenSe" };
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouScatteredProtectionSeDef))]
	public sealed class ShouScatteredProtectionSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(((Unit)((StatusEffect)this).Battle.Player).DamageDealt, (EventSequencedReactor<DamageEventArgs>)OnPlayerDamageDealt);
		}

		public IEnumerable<BattleAction> OnPlayerDamageDealt(DamageEventArgs args)
		{
			int num;
			if (args.Source == ((StatusEffect)this).Battle.Player && args.Target != null)
			{
				DamageInfo damageInfo = args.DamageInfo;
				num = (((int)((DamageInfo)(ref damageInfo)).DamageType == 2) ? 1 : 0);
			}
			else
			{
				num = 0;
			}
			if (num != 0 && args.Target.IsAlive && ((Unit)((StatusEffect)this).Battle.Player).HasStatusEffect<ShouHardenSe>())
			{
				yield return (BattleAction)(object)new ApplyStatusEffectAction<TempFirepowerNegative>(args.Target, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true);
			}
		}
	}
	public sealed class ShouScorchedEarthMandalaSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = true;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouScorchedEarthMandalaSeDef))]
	public sealed class ShouScorchedEarthMandalaSe : 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 ((int)args.Card.CardType == 1)
			{
				yield return (BattleAction)(object)new ApplyStatusEffectAction<ShouResonanceSe>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true);
			}
			else if ((int)args.Card.CardType == 2 && ((Unit)((StatusEffect)this).Battle.Player).HasStatusEffect<ShouVigorSe>())
			{
				ShouVigorSe Vigor = ((Unit)((StatusEffect)this).Battle.Player).GetStatusEffect<ShouVigorSe>();
				yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)Vigor, true, 0.1f);
			}
		}
	}
	public sealed class ShouTimeisMoneySeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = true;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouTimeisMoneySeDef))]
	public sealed class ShouTimeisMoneySe : ExtraTurnPartner
	{
		public List<Type> Gemstones = new List<Type>
		{
			typeof(ShouAmber),
			typeof(ShouDiamond),
			typeof(ShouEmerald),
			typeof(ShouOnyx),
			typeof(ShouOpal),
			typeof(ShouPearl),
			typeof(ShouRuby),
			typeof(ShouSapphire)
		};

		protected override void OnAdded(Unit unit)
		{
			((ExtraTurnPartner)this).ThisTurnActivating = false;
			((StatusEffect)this).HandleOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarting, (GameEventHandler<UnitEventArgs>)delegate
			{
				if (((Unit)((StatusEffect)this).Battle.Player).IsExtraTurn && !((StatusEffect)this).Battle.Player.IsSuperExtraTurn && ((Unit)((StatusEffect)this).Battle.Player).GetStatusEffectExtend<ExtraTurnPartner>() == this)
				{
					((ExtraTurnPartner)this).ThisTurnActivating = true;
				}
			});
			((StatusEffect)this).HandleOwnerEvent<CardEventArgs>(((StatusEffect)this).Battle.Predraw, (GameEventHandler<CardEventArgs>)OnPredraw);
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnStarted);
		}

		private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args)
		{
			if (((ExtraTurnPartner)this).ThisTurnActivating)
			{
				CollectionsExtensions.Shuffle<Type>((IList<Type>)Gemstones, ((GameEntity)this).GameRun.BattleCardRng);
				List<Card> list = new List<Card>();
				for (int i = 0; i < ((StatusEffect)this).Level; i++)
				{
					list.Add(Library.CreateCard(Gemstones[i]));
				}
				yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)list, (AddCardsType)0);
				yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f);
			}
		}

		private void OnPredraw(CardEventArgs args)
		{
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Invalid comparison between Unknown and I4
			if (((ExtraTurnPartner)this).ThisTurnActivating && (int)((GameEventArgs)args).Cause == 12)
			{
				((GameEventArgs)args).CancelBy((GameEntity)(object)this);
			}
		}
	}
	public sealed class ShouVigorousSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = false;
			defaultStatusEffectConfig.HasDuration = true;
			defaultStatusEffectConfig.DurationDecreaseTiming = (DurationDecreaseTiming)3;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouVigorousSeDef))]
	public sealed class ShouVigorousSe : StatusEffect
	{
	}
	public sealed class ShouVigorSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = false;
			defaultStatusEffectConfig.HasDuration = true;
			defaultStatusEffectConfig.DurationDecreaseTiming = (DurationDecreaseTiming)3;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouVigorSeDef))]
	public sealed class ShouVigorSe : StatusEffect
	{
		public int ExtraDamage
		{
			get
			{
				if (((Unit)((StatusEffect)this).Battle.Player).HasStatusEffect<ShouResonanceSe>())
				{
					return 30 + ((StatusEffect)((Unit)((StatusEffect)this).Battle.Player).GetStatusEffect<ShouResonanceSe>()).Level;
				}
				return 30;
			}
		}

		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).HandleOwnerEvent<DamageDealingEventArgs>(unit.DamageDealing, (GameEventHandler<DamageDealingEventArgs>)OnDamageDealing);
		}

		private void OnDamageDealing(DamageDealingEventArgs args)
		{
			//IL_0033: 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_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Invalid comparison between Unknown and I4
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			int num = 30;
			if (((Unit)((StatusEffect)this).Battle.Player).HasStatusEffect<ShouResonanceSe>())
			{
				num += ((StatusEffect)((Unit)((StatusEffect)this).Battle.Player).GetStatusEffect<ShouResonanceSe>()).Level;
			}
			DamageInfo damageInfo = args.DamageInfo;
			if ((int)((DamageInfo)(ref damageInfo)).DamageType == 2)
			{
				((DamageInfo)(ref damageInfo)).Damage = ((DamageInfo)(ref damageInfo)).Amount * (1f + (float)num / 100f);
				args.DamageInfo = damageInfo;
				((GameEventArgs)args).AddModifier((GameEntity)(object)this);
			}
		}
	}
	public sealed class ShouWantNotSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.HasLevel = true;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouWantNotSeDef))]
	public sealed class ShouWantNotSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnEnding, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnEnding);
		}

		private IEnumerable<BattleAction> OnOwnerTurnEnding(UnitEventArgs args)
		{
			if (((StatusEffect)this).Battle.BattleShouldEnd)
			{
				yield break;
			}
			List<Card> list = ((StatusEffect)this).Battle.DiscardZone.Where((Card c) => c is ShouGemstoneCard).ToList();
			SelectCardInteraction interaction = new SelectCardInteraction(0, 3, (IEnumerable<Card>)list, (SelectedCardHandling)0)
			{
				Source = (GameEntity)(object)this
			};
			yield return (BattleAction)new InteractionAction((Interaction)(object)interaction, true);
			IReadOnlyList<Card> selectedCards = interaction.SelectedCards;
			if (selectedCards == null)
			{
				yield break;
			}
			foreach (Card card in selectedCards)
			{
				yield return (BattleAction)new CastBlockShieldAction((Unit)(object)((StatusEffect)this).Battle.Player, 0, ((StatusEffect)this).Level, (BlockShieldType)2, false);
				yield return (BattleAction)new ExileCardAction(card);
			}
		}
	}
	public sealed class ShouWondersofNatureSeDef : SampleCharacterStatusEffectTemplate
	{
		public override StatusEffectConfig MakeConfig()
		{
			StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
			defaultStatusEffectConfig.IsStackable = false;
			defaultStatusEffectConfig.HasLevel = false;
			return defaultStatusEffectConfig;
		}
	}
	[EntityLogic(typeof(ShouWondersofNatureSeDef))]
	public sealed class ShouWondersofNatureSe : StatusEffect
	{
		protected override void OnAdded(Unit unit)
		{
			((StatusEffect)this).ReactOwnerEvent<CardsEventArgs>(((StatusEffect)this).Battle.CardsAddedToDiscard, (EventSequencedReactor<CardsEventArgs>)OnAddCard);
			((StatusEffect)this).ReactOwnerEvent<CardsEventArgs>(((StatusEffect)this).Battle.CardsAddedToHand, (EventSequencedReactor<CardsEventArgs>)OnAddCard);
			((StatusEffect)this).ReactOwnerEvent<CardsEventArgs>(((StatusEffect)this).Battle.CardsAddedToExile, (EventSequencedReactor<CardsEventArgs>)OnAddCard);
			((StatusEffect)this).ReactOwnerEvent<CardsAddingToDrawZoneEventArgs>(((StatusEffect)this).Battle.CardsAddedToDrawZone, (EventSequencedReactor<CardsAddingToDrawZoneEventArgs>)OnCardsAddedToDrawZone);
		}

		private IEnumerable<BattleAction> OnAddCard(CardsEventArgs args)
		{
			Card[] cards = args.Cards;
			foreach (Card card in cards)
			{
				if (card is ShouGemstoneCard && card.CanUpgradeAndPositive)
				{
					yield return (BattleAction)new UpgradeCardAction(card);
				}
			}
		}

		private IEnumerable<BattleAction> OnCardsAddedToDrawZone(CardsAddingToDrawZoneEventArgs args)
		{
			Card[] cards = args.Cards;
			foreach (Card card in cards)
			{
				if (card is ShouGemstoneCard && card.CanUpgradeAndPositive)
				{
					yield return (BattleAction)new UpgradeCardAction(card);
				}
			}
		}
	}
	public class SampleCharacterStatusEffectTemplate : StatusEffectTemplate
	{
		public override IdContainer GetId()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			return IdContainer.op_Implicit(SampleCharacterDefaultConfig.DefaultID((EntityDefinition)(object)this));
		}

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

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

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

		public static StatusEffectConfig GetDefaultStatusEffectConfig(EntityDefinition entity = null)
		{
			return SampleCharacterDefaultConfig.DefaultStatusEffectConfig(entity);
		}
	}
}
namespace ShouMod.Patches
{
	[HarmonyPatch]
	internal class CustomGameEventManager
	{
		public static GameEvent<BuffAttackEventArgs> PreCustomEvent { get; set; }

		public static GameEvent<BuffAttackEventArgs> PostCustomEvent { get; set; }

		[HarmonyPatch(typeof(GameRunController), "EnterBattle")]
		private static bool Prefix(GameRunController __instance)
		{
			PreCustomEvent = new GameEvent<BuffAttackEventArgs>();
			PostCustomEvent = new GameEvent<BuffAttackEventArgs>();
			return true;
		}
	}
}
namespace ShouMod.model
{
	public sealed class SampleCharacterModel : UnitModelTemplate
	{
		public static bool useInGameModel = BepinexPlugin.useInGameModel;

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

		public static string spellsprite_name = "ShouStand.png";

		public override IdContainer GetId()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			return IdContainer.op_Implicit(BepinexPlugin.modUniqueID);
		}

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

		public override ModelOption LoadModelOptions()
		{
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Expected O, but got Unknown
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Expected O, but got Unknown
			if (useInGameModel)
			{
				return new ModelOption(ResourcesHelper.LoadSpineUnitAsync(model_name));
			}
			return new ModelOption(ResourceLoader.LoadSpriteAsync(model_name, BepinexPlugin.directorySource, 265, (GraphicsFormat)4, 1, (FilterMode)1, (SpriteMeshType)1, (Rect?)null, (Vector2?)null, "file://"));
		}

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

		public override UnitModelConfig MakeConfig()
		{
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			if (useInGameModel)
			{
				UnitModelConfig val = ObjectExtensions.Copy<UnitModelConfig>(UnitModelConfig.FromName(model_name));
				val.Flip = BepinexPlugin.modelIsFlipped;
				return val;
			}
			UnitModelConfig val2 = ObjectExtensions.Copy<UnitModelConfig>(((UnitModelTemplate)this).DefaultConfig());
			val2.Flip = BepinexPlugin.modelIsFlipped;
			val2.Type = 0;
			val2.Offset = new Vector2(-0.2f, -0.7f);
			val2.HasSpellPortrait = true;
			return val2;
		}
	}
}
namespace ShouMod.Localization
{
	public sealed class SampleCharacterLocalization
	{
		public static string Cards = "Cards";

		public static string Exhibits = "Exhibits";

		public static string PlayerUnit = "PlayerUnit";

		public static string EnemiesUnit = "EnemyUnit";

		public static string UnitModel = "UnitModel";

		public static string UltimateSkills = "UltimateSkills";

		public static string StatusEffects = "StatusEffects";

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

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

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

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

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

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

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

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

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

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

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

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

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

		public static Sprite LoadSprite(IdContainer ID)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			return ResourceLoader.LoadSprite(IdContainer.op_Implicit(ID) + file_extension, BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
		}
	}
}
namespace ShouMod.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 ShouMod.Exhibits
{
	public class SampleCharacterExhibitTemplate : ExhibitTemplate
	{
		public override IdContainer GetId()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			return IdContainer.op_Implicit(SampleCharacterDefaultConfig.DefaultID((EntityDefinition)(object)this));
		}

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

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

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

		public ExhibitConfig GetDefaultExhibitConfig()
		{
			return SampleCharacterDefaultConfig.GetDefaultExhibitConfig();
		}
	}
	public sealed class ShouDullPagodaDef : SampleCharacterExhibitTemplate
	{
		public override ExhibitConfig MakeConfig()
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig();
			defaultExhibitConfig.Value1 = 1;
			ManaGroup value = default(ManaGroup);
			((ManaGroup)(ref value)).Philosophy = 1;
			defaultExhibitConfig.Mana = value;
			defaultExhibitConfig.BaseManaColor = (ManaColor)4;
			defaultExhibitConfig.RelativeEffects = new List<string> { "Firepower" };
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(ShouDullPagodaDef))]
	public sealed class ShouDullPagoda : ShiningExhibit
	{
		protected override void OnEnterBattle()
		{
			((Exhibit)this).ReactBattleEvent<GameEventArgs>(((Exhibit)this).Battle.BattleStarted, (EventSequencedReactor<GameEventArgs>)OnBattleStarted);
		}

		private IEnumerable<BattleAction> OnBattleStarted(GameEventArgs args)
		{
			<>n__0();
			yield return (BattleAction)new GainManaAction(((Exhibit)this).Mana);
			yield return (BattleAction)(object)new ApplyStatusEffectAction<Firepower>((Unit)(object)((Exhibit)this).Owner, (int?)1, (int?)null, (int?)null, (int?)null, 0f, true);
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((Exhibit)this).NotifyActivating();
		}
	}
	public sealed class ShouMouseBasketDef : SampleCharacterExhibitTemplate
	{
		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)).White = 1;
			defaultExhibitConfig.Mana = value;
			defaultExhibitConfig.BaseManaColor = (ManaColor)1;
			defaultExhibitConfig.HasCounter = true;
			defaultExhibitConfig.InitialCounter = 0;
			defaultExhibitConfig.RelativeCards = new List<string> { "ShouNazrinTeammate" };
			return defaultExhibitConfig;
		}
	}
	[EntityLogic(typeof(ShouMouseBasketDef))]
	public sealed class ShouMouseBasket : ShiningExhibit
	{
		protected override void OnEnterBattle()
		{
			((Exhibit)this).ReactBattleEvent<UnitEventArgs>(((Unit)((Exhibit)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted);
		}

		private IEnumerable<BattleAction> OnPlayerTurnStarted(GameEventArgs args)
		{
			if (((Unit)((Exhibit)this).Battle.Player).TurnCounter == 1)
			{
				<>n__0();
				Card card = (Card)(object)Library.CreateCard<ShouNazrinTeammate>(false);
				card.IsRetain = true;
				yield return (BattleAction)new AddCardsToHandAction((Card[])(object)new Card[1] { card });
			}
		}

		[CompilerGenerated]
		[DebuggerHidden]
		private void <>n__0()
		{
			((Exhibit)this).NotifyActivating();
		}
	}
}
namespace ShouMod.Enemies
{
	public sealed class SampleCharacterEnemyGroupDef : SampleCharacterEnemyGroupTemplate
	{
		public override IdContainer GetId()
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return IdContainer.op_Implicit("SampleCharacterMod");
		}

		public override EnemyGroupConfig MakeConfig()
		{
			EnemyGroupConfig enemyGroupDefaultConfig = GetEnemyGroupDefaultConfig();
			enemyGroupDefaultConfig.Name = "SampleCharacterMod";
			enemyGroupDefaultConfig.FormationName = "Single";
			enemyGroupDefaultConfig.Enemies = new List<string> { "SampleCharacterMod" };
			enemyGroupDefaultConfig.EnemyType = (EnemyType)3;
			enemyGroupDefaultConfig.RollBossExhibit = true;
			return enemyGroupDefaultConfig;
		}
	}
	public sealed class SampleCharacterEnemyUnitDef : SampleCharacterEnemyUnitTemplate
	{
		public override IdContainer GetId()
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return IdContainer.op_Implicit("SampleCharacterMod");
		}

		public override EnemyUnitConfig MakeConfig()
		{
			//IL_0188: Unknown result type (might be due to invalid IL or missing references)
			//IL_0198: Unknown result type (might be due to invalid IL or missing references)
			EnemyUnitConfig enemyUnitDefaultConfig = GetEnemyUnitDefaultConfig();
			enemyUnitDefaultConfig.IsPreludeOpponent = BepinexPlugin.enableAct1Boss.Value;
			enemyUnitDefaultConfig.BaseManaColor = new List<ManaColor> { (ManaColor)1 };
			enemyUnitDefaultConfig.Type = (EnemyType)3;
			enemyUnitDefaultConfig.MaxHp = 250;
			enemyUnitDefaultConfig.MaxHpHard = 255;
			enemyUnitDefaultConfig.MaxHpLunatic = 260;
			enemyUnitDefaultConfig.Damage1 = 10;
			enemyUnitDefaultConfig.Damage1Hard = 11;
			enemyUnitDefaultConfig.Damage1Lunatic = 12;
			enemyUnitDefaultConfig.Damage2 = 15;
			enemyUnitDefaultConfig.Damage2Hard = 16;
			enemyUnitDefaultConfig.Damage2Lunatic = 17;
			enemyUnitDefaultConfig.Damage3 = 20;
			enemyUnitDefaultConfig.Damage3Hard = 21;
			enemyUnitDefaultConfig.Damage3Lunatic = 22;
			enemyUnitDefaultConfig.Damage4 = 25;
			enemyUnitDefaultConfig.Damage4Hard = 26;
			enemyUnitDefaultConfig.Damage4Lunatic = 27;
			enemyUnitDefaultConfig.Defend = 10;
			enemyUnitDefaultConfig.DefendHard = 11;
			enemyUnitDefaultConfig.DefendLunatic = 12;
			enemyUnitDefaultConfig.Count1 = 1;
			enemyUnitDefaultConfig.Count1Hard = 1;
			enemyUnitDefaultConfig.Count1Lunatic = 2;
			enemyUnitDefaultConfig.Count2 = 1;
			enemyUnitDefaultConfig.Count2Hard = 1;
			enemyUnitDefaultConfig.Count2Lunatic = 2;
			enemyUnitDefaultConfig.PowerLoot = new MinMax(100, 100);
			enemyUnitDefaultConfig.BluePointLoot = new MinMax(100, 100);
			enemyUnitDefaultConfig.Gun1 = new List<string> { GunNameID.GetGunFromId(800) };
			enemyUnitDefaultConfig.Gun2 = new List<string> { GunNameID.GetGunFromId(800) };
			enemyUnitDefaultConfig.Gun3 = new List<string> { GunNameID.GetGunFromId(800) };
			enemyUnitDefaultConfig.Gun4 = new List<string> { GunNameID.GetGunFromId(800) };
			return enemyUnitDefaultConfig;
		}
	}
	[EntityLogic(typeof(SampleCharacterEnemyUnitDef))]
	public sealed class SampleCharacterMod : EnemyUnit
	{
		private enum MoveType
		{
			BasicAttack,
			BasicDefend
		}

		private MoveType Last { get; set; }

		private MoveType Next { get; set; }

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

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

		protected override void OnEnterBattle(BattleController battle)
		{
			Last = MoveType.BasicDefend;
			Next = MoveType.BasicAttack;
		}

		protected override IEnumerable<IEnemyMove> GetTurnMoves()
		{
			switch (Next)
			{
			case MoveType.BasicAttack:
				yield return ((EnemyUnit)this).AttackMove(BasicAttackMove, ((EnemyUnit)this).Gun1, ((EnemyUnit)this).Damage1, 1, false, "Instant", false);
				Last = MoveType.BasicAttack;
				break;
			case MoveType.BasicDefend:
				yield return (IEnemyMove)new SimpleEnemyMove(Intention.Defend().WithMoveName(((EnemyUnit)this).GetMove(1)), BasicDefendAction());
				Last = MoveType.BasicDefend;
				break;
			}
		}

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

		protected override void UpdateMoveCounters()
		{
			Next = ((Last == MoveType.BasicAttack) ? MoveType.BasicDefend : MoveType.BasicAttack);
		}
	}
}
namespace ShouMod.Enemies.Template
{
	public abstract class SampleCharacterEnemyGroupTemplate : EnemyGroupTemplate
	{
		public override IdContainer GetId()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			return IdContainer.op_Implicit(SampleCharacterDefaultConfig.DefaultID((EntityDefinition)(object)this));
		}

		public override EnemyGroupConfig MakeConfig()
		{
			return SampleCharacterDefaultConfig.GetEnemyGroupDefaultConfig();
		}

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

		public override EnemyUnitConfig MakeConfig()
		{
			return SampleCharacterDefaultConfig.GetEnemyUnitDefaultConfig();
		}

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

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

		public EnemyUnitConfig GetEnemyUnitDefaultConfig()
		{
			return SampleCharacterDefaultConfig.GetEnemyUnitDefaultConfig();
		}
	}
}
namespace ShouMod.Source.Config
{
	public sealed class GemstoneEffect : SampleCharacterStatusEffectTemplate
	{
		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("GemstoneStatus");
		}

		[DontOverwrite]
		public override Sprite LoadSprite()
		{
			return null;
		}

		public override StatusEffectConfig MakeConfig()
		{
			return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig();
		}
	}
	[EntityLogic(typeof(GemstoneEffect))]
	public sealed class GemstoneStatus : StatusEffect
	{
	}
	public static class ShouKeyword
	{
		public static CardKeyword Gemstone = new CardKeyword("GemstoneStatus", false)
		{
			descPos = (KwDescPos)1
		};
	}
}
namespace ShouMod.Config
{
	public sealed class SampleCharacterDefaultConfig
	{
		private static readonly string OwnerName = BepinexPlugin.modUniqueID;

		public static string DefaultID(EntityDefinition entity)
		{
			if (entity == null)
			{
				return "";
			}
			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_0172: Unknown result type (might be due to invalid IL or missing references)
			//IL_0179: Expected O, but got Unknown
			return new CardConfig(0, "", 10, true, new string[0][], "", "", 0, false, true, false, true, true, (Rarity)0, (CardType)0, (TargetType?)null, (IReadOnlyList<ManaColor>)new List<ManaColor>(), false, default(ManaGroup), (ManaGroup?)null, (ManaGroup?)null, (ManaGroup?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (ManaGroup?)null, (ManaGroup?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (Keyword)0, (Keyword)0, false, (Keyword)0, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>(), OwnerName, "", "", false, (string)null, (IReadOnlyList<string>)new List<string>());
		}

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

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

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

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

		public static EnemyGroupConfig GetEnemyGroupDefaultConfig()
		{
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Expected O, but got Unknown
			return new EnemyGroupConfig("", false, (IReadOnlyList<string>)new List<string>(), "", "Single", (IReadOnlyList<string>)new List<string>(), (EnemyType)3, true, 1f, true, new Vector2(-4f, 0.5f), "", "", (string)null);
		}
	}
}
namespace ShouMod.Cards
{
	public sealed class ShouHungryTigerDef : SampleCharacterCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.GunName = GunNameID.GetGunFromId(400);
			cardDefaultConfig.IsPooled = false;
			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 = 18;
			cardDefaultConfig.UpgradedDamage = 21;
			cardDefaultConfig.Value1 = 10;
			cardDefaultConfig.Keywords = (Keyword)65536;
			cardDefaultConfig.UpgradedKeywords = (Keyword)65792;
			cardDefaultConfig.Illustrator = "茨木童子";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(ShouHungryTigerDef))]
	public sealed class ShouHungryTiger : SampleCharacterCard
	{
		protected override void OnEnterBattle(BattleController battle)
		{
			((Card)this).ReactBattleEvent<DieEventArgs>(((Card)this).Battle.EnemyDied, (EventSequencedReactor<DieEventArgs>)OnEnemyDied);
		}

		private IEnumerable<BattleAction> OnEnemyDied(DieEventArgs args)
		{
			if (args.DieSource == this && !args.Unit.HasStatusEffect<Servant>())
			{
				yield return ((Card)this).HealAction(((Card)this).Value1);
			}
		}
	}
	public sealed class ShouScorchedEarthMandalaDef : SampleCharacterCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//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.Colors = new List<ManaColor> { (ManaColor)3 };
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 2;
			((ManaGroup)(ref val)).Black = 1;
			cardDefaultConfig.Cost = val;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 1;
			((ManaGroup)(ref val)).Black = 1;
			cardDefaultConfig.UpgradedCost = val;
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)4;
			cardDefaultConfig.TargetType = (TargetType)4;
			cardDefaultConfig.Value1 = 4;
			cardDefaultConfig.UpgradedValue1 = 5;
			cardDefaultConfig.Value2 = 1;
			cardDefaultConfig.UpgradedValue2 = 2;
			cardDefaultConfig.RelativeEffects = new List<string> { "ShouVigorSe", "ShouResonanceSe", "ShouScorchedEarthMandalaSe" };
			cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "ShouVigorSe", "ShouResonanceSe", "ShouScorchedEarthMandalaSe" };
			cardDefaultConfig.Illustrator = "ぶるぅぎ";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(ShouScorchedEarthMandalaDef))]
	public sealed class ShouScorchedEarthMandala : SampleCharacterCard
	{
		protected override IEnumerable<BattleAction> Actions(UnitSelector selector, ManaGroup consumingMana, Interaction precondition)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			yield return ((Card)this).BuffAction<ShouVigorSe>(0, ((Card)this).Value2, 0, 0, 0.2f);
			yield return ((Card)this).BuffAction<ShouScorchedEarthMandalaSe>(((Card)this).Value1, 0, 0, 0, 0.2f);
		}
	}
	public sealed class ShouAmberDef : SampleCharacterCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_0040: 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)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.GunName = GunNameID.GetGunFromId(400);
			cardDefaultConfig.IsPooled = false;
			cardDefaultConfig.Colors = new List<ManaColor>
			{
				(ManaColor)1,
				(ManaColor)5
			};
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 1;
			cardDefaultConfig.Cost = val;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 0;
			cardDefaultConfig.UpgradedCost = val;
			cardDefaultConfig.Rarity = (Rarity)2;
			cardDefaultConfig.Type = (CardType)3;
			cardDefaultConfig.TargetType = (TargetType)4;
			cardDefaultConfig.ToolPlayableTimes = 1;
			cardDefaultConfig.Value1 = 3;
			cardDefaultConfig.Keywords = (Keyword)8388608;
			cardDefaultConfig.UpgradedKeywords = (Keyword)8388608;
			cardDefaultConfig.RelativeEffects = new List<string> { "ShouGemstoneReferenceSe" };
			cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "ShouGemstoneReferenceSe" };
			cardDefaultConfig.Illustrator = "Radal";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(ShouAmberDef))]
	public sealed class ShouAmber : ShouGemstoneCard
	{
		public override void Initialize()
		{
			((Card)this).Initialize();
			((Card)this).DeckCounter = ((Card)this).ToolPlayableTimes;
		}

		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).HealAction(((Card)this).Value1);
			((Card)this).DeckCounter = ((Card)this).DeckCounter - 1;
			if (((Card)this).DeckCounter <= 0)
			{
				yield return (BattleAction)new ExileCardAction((Card)(object)this);
			}
		}
	}
	public sealed class ShouDiamondDef : SampleCharacterCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_0040: 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)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.GunName = GunNameID.GetGunFromId(400);
			cardDefaultConfig.IsPooled = false;
			cardDefaultConfig.Colors = new List<ManaColor>
			{
				(ManaColor)1,
				(ManaColor)2
			};
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 1;
			cardDefaultConfig.Cost = val;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 0;
			cardDefaultConfig.UpgradedCost = val;
			cardDefaultConfig.Rarity = (Rarity)2;
			cardDefaultConfig.Type = (CardType)3;
			cardDefaultConfig.TargetType = (TargetType)4;
			cardDefaultConfig.Value1 = 2;
			cardDefaultConfig.ToolPlayableTimes = 1;
			cardDefaultConfig.Keywords = (Keyword)8388608;
			cardDefaultConfig.UpgradedKeywords = (Keyword)8388608;
			cardDefaultConfig.RelativeEffects = new List<string> { "ShouGemstoneReferenceSe" };
			cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "ShouGemstoneReferenceSe" };
			cardDefaultConfig.Illustrator = "Radal";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(ShouDiamondDef))]
	public sealed class ShouDiamond : ShouGemstoneCard
	{
		public override void Initialize()
		{
			((Card)this).Initialize();
			((Card)this).DeckCounter = ((Card)this).ToolPlayableTimes;
		}

		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<Amulet>(((Card)this).Value1, 0, 0, 0, 0.2f);
			yield return ((Card)this).BuffAction<AmuletForCard>(((Card)this).Value1, 0, 0, 0, 0.2f);
			((Card)this).DeckCounter = ((Card)this).DeckCounter - 1;
			if (((Card)this).DeckCounter <= 0)
			{
				yield return (BattleAction)new ExileCardAction((Card)(object)this);
			}
		}
	}
	public sealed class ShouEmeraldDef : SampleCharacterCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.GunName = GunNameID.GetGunFromId(400);
			cardDefaultConfig.IsPooled = false;
			cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)5 };
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 1;
			cardDefaultConfig.Cost = val;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 0;
			cardDefaultConfig.UpgradedCost = val;
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)3;
			cardDefaultConfig.TargetType = (TargetType)4;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Philosophy = 2;
			((ManaGroup)(ref val)).Colorless = 1;
			cardDefaultConfig.Mana = val;
			cardDefaultConfig.ToolPlayableTimes = 1;
			cardDefaultConfig.Keywords = (Keyword)8388608;
			cardDefaultConfig.UpgradedKeywords = (Keyword)8388608;
			cardDefaultConfig.RelativeEffects = new List<string> { "ShouGemstoneReferenceSe" };
			cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "ShouGemstoneReferenceSe" };
			cardDefaultConfig.Illustrator = "Radal";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(ShouEmeraldDef))]
	public sealed class ShouEmerald : ShouGemstoneCard
	{
		public override void Initialize()
		{
			((Card)this).Initialize();
			((Card)this).DeckCounter = ((Card)this).ToolPlayableTimes;
		}

		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 GainManaAction(((Card)this).Mana);
			((Card)this).DeckCounter = ((Card)this).DeckCounter - 1;
			if (((Card)this).DeckCounter <= 0)
			{
				yield return (BattleAction)new ExileCardAction((Card)(object)this);
			}
		}
	}
	public sealed class ShouOnyxDef : SampleCharacterCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.GunName = GunNameID.GetGunFromId(400);
			cardDefaultConfig.IsPooled = false;
			cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)3 };
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 1;
			cardDefaultConfig.Cost = val;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 0;
			cardDefaultConfig.UpgradedCost = val;
			cardDefaultConfig.Rarity = (Rarity)0;
			cardDefaultConfig.Type = (CardType)2;
			cardDefaultConfig.TargetType = (TargetType)4;
			cardDefaultConfig.Block = 10;
			cardDefaultConfig.UpgradedBlock = 10;
			cardDefaultConfig.ToolPlayableTimes = 3;
			cardDefaultConfig.Keywords = (Keyword)8388608;
			cardDefaultConfig.UpgradedKeywords = (Keyword)8388608;
			cardDefaultConfig.RelativeEffects = new List<string> { "ShouGemstoneReferenceSe" };
			cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "ShouGemstoneReferenceSe" };
			cardDefaultConfig.Illustrator = "Radal";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(ShouOnyxDef))]
	public sealed class ShouOnyx : ShouGemstoneCard
	{
		public override void Initialize()
		{
			((Card)this).Initialize();
			((Card)this).DeckCounter = ((Card)this).ToolPlayableTimes;
		}

		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);
			((Card)this).DeckCounter = ((Card)this).DeckCounter - 1;
			if (((Card)this).DeckCounter <= 0)
			{
				yield return (BattleAction)new ExileCardAction((Card)(object)this);
			}
		}
	}
	public sealed class ShouOpalDef : SampleCharacterCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_0040: 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)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.GunName = GunNameID.GetGunFromId(400);
			cardDefaultConfig.IsPooled = false;
			cardDefaultConfig.Colors = new List<ManaColor>
			{
				(ManaColor)2,
				(ManaColor)4
			};
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 1;
			cardDefaultConfig.Cost = val;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 0;
			cardDefaultConfig.UpgradedCost = val;
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)3;
			cardDefaultConfig.TargetType = (TargetType)4;
			cardDefaultConfig.Value1 = 2;
			cardDefaultConfig.ToolPlayableTimes = 1;
			cardDefaultConfig.Keywords = (Keyword)8388608;
			cardDefaultConfig.UpgradedKeywords = (Keyword)8388608;
			cardDefaultConfig.RelativeEffects = new List<string> { "ShouGemstoneReferenceSe" };
			cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "ShouGemstoneReferenceSe" };
			cardDefaultConfig.Illustrator = "Radal";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(ShouOpalDef))]
	public sealed class ShouOpal : ShouGemstoneCard
	{
		public override void Initialize()
		{
			((Card)this).Initialize();
			((Card)this).DeckCounter = ((Card)this).ToolPlayableTimes;
		}

		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);
			((Card)this).DeckCounter = ((Card)this).DeckCounter - 1;
			if (((Card)this).DeckCounter <= 0)
			{
				yield return (BattleAction)new ExileCardAction((Card)(object)this);
			}
		}
	}
	public sealed class ShouPearlDef : SampleCharacterCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.GunName = GunNameID.GetGunFromId(400);
			cardDefaultConfig.IsPooled = false;
			cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)1 };
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 1;
			cardDefaultConfig.Cost = val;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 0;
			cardDefaultConfig.UpgradedCost = val;
			cardDefaultConfig.Rarity = (Rarity)0;
			cardDefaultConfig.Type = (CardType)2;
			cardDefaultConfig.TargetType = (TargetType)4;
			cardDefaultConfig.Shield = 6;
			cardDefaultConfig.UpgradedShield = 6;
			cardDefaultConfig.ToolPlayableTimes = 2;
			cardDefaultConfig.Keywords = (Keyword)8388608;
			cardDefaultConfig.UpgradedKeywords = (Keyword)8388608;
			cardDefaultConfig.RelativeEffects = new List<string> { "ShouGemstoneReferenceSe" };
			cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "ShouGemstoneReferenceSe" };
			cardDefaultConfig.Illustrator = "Radal";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(ShouPearlDef))]
	public sealed class ShouPearl : ShouGemstoneCard
	{
		public override void Initialize()
		{
			((Card)this).Initialize();
			((Card)this).DeckCounter = ((Card)this).ToolPlayableTimes;
		}

		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);
			((Card)this).DeckCounter = ((Card)this).DeckCounter - 1;
			if (((Card)this).DeckCounter <= 0)
			{
				yield return (BattleAction)new ExileCardAction((Card)(object)this);
			}
		}
	}
	public sealed class ShouRubyDef : SampleCharacterCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.GunName = GunNameID.GetGunFromId(400);
			cardDefaultConfig.IsPooled = false;
			cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)4 };
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 1;
			cardDefaultConfig.Cost = val;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 0;
			cardDefaultConfig.UpgradedCost = val;
			cardDefaultConfig.Rarity = (Rarity)0;
			cardDefaultConfig.Type = (CardType)1;
			cardDefaultConfig.TargetType = (TargetType)1;
			cardDefaultConfig.Damage = 10;
			cardDefaultConfig.UpgradedDamage = 10;
			cardDefaultConfig.ToolPlayableTimes = 3;
			cardDefaultConfig.Keywords = (Keyword)8388608;
			cardDefaultConfig.UpgradedKeywords = (Keyword)8388608;
			cardDefaultConfig.RelativeEffects = new List<string> { "ShouGemstoneReferenceSe" };
			cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "ShouGemstoneReferenceSe" };
			cardDefaultConfig.Illustrator = "Radal";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(ShouRubyDef))]
	public sealed class ShouRuby : ShouGemstoneCard
	{
		public override void Initialize()
		{
			((Card)this).Initialize();
			((Card)this).DeckCounter = ((Card)this).ToolPlayableTimes;
		}

		protected override IEnumerable<BattleAction> Actions(UnitSelector selector, ManaGroup consumingMana, Interaction precondition)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			yield return ((Card)this).AttackAction(selector, ((Card)this).GunName);
			((Card)this).DeckCounter = ((Card)this).DeckCounter - 1;
			if (((Card)this).DeckCounter <= 0)
			{
				yield return (BattleAction)new ExileCardAction((Card)(object)this);
			}
		}
	}
	public sealed class ShouSapphireDef : SampleCharacterCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.GunName = GunNameID.GetGunFromId(400);
			cardDefaultConfig.IsPooled = false;
			cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)2 };
			ManaGroup val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 1;
			cardDefaultConfig.Cost = val;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 0;
			cardDefaultConfig.UpgradedCost = val;
			cardDefaultConfig.Rarity = (Rarity)0;
			cardDefaultConfig.Type = (CardType)1;
			cardDefaultConfig.TargetType = (TargetType)2;
			cardDefaultConfig.Damage = 7;
			cardDefaultConfig.UpgradedDamage = 7;
			cardDefaultConfig.ToolPlayableTimes = 2;
			cardDefaultConfig.Keywords = (Keyword)8388608;
			cardDefaultConfig.UpgradedKeywords = (Keyword)8388608;
			cardDefaultConfig.RelativeEffects = new List<string> { "ShouGemstoneReferenceSe" };
			cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "ShouGemstoneReferenceSe" };
			cardDefaultConfig.Illustrator = "Radal";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(ShouSapphireDef))]
	public sealed class ShouSapphire : ShouGemstoneCard
	{
		public override void Initialize()
		{
			((Card)this).Initialize();
			((Card)this).DeckCounter = ((Card)this).ToolPlayableTimes;
		}

		protected override IEnumerable<BattleAction> Actions(UnitSelector selector, ManaGroup consumingMana, Interaction precondition)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			yield return ((Card)this).AttackAction(selector, ((Card)this).GunName);
			((Card)this).DeckCounter = ((Card)this).DeckCounter - 1;
			if (((Card)this).DeckCounter <= 0)
			{
				yield return (BattleAction)new ExileCardAction((Card)(object)this);
			}
		}
	}
	public sealed class ShouAmberblastDef : SampleCharacterCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			CardConfig cardDefaultConfig = GetCardDefaultConfig();
			cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)5 };
			ManaGroup cost = default(ManaGroup);
			((ManaGroup)(ref cost)).Any = 1;
			((ManaGroup)(ref cost)).Green = 1;
			cardDefaultConfig.Cost = cost;
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)1;
			cardDefaultConfig.TargetType = (TargetType)1;
			cardDefaultConfig.Damage = 15;
			cardDefaultConfig.UpgradedDamage = 20;
			cardDefaultConfig.Value2 = 2;
			cardDefaultConfig.UpgradedValue2 = 2;
			cardDefaultConfig.Illustrator = "";
			cardDefaultConfig.Index = CardIndexGenerator.GetUniqueIndex(cardDefaultConfig);
			return cardDefaultConfig;
		}
	}
	[EntityLogic(typeof(ShouAmberblastDef))]
	public sealed class ShouAmberblast : SampleCharacterCard
	{
		protected override IEnumerable<BattleAction> Actions(UnitSelector selector, ManaGroup consumingMana, Interaction precondition)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			yield return ((Card)this).AttackAction(selector, (GunPair)null);
			List<ShouAmberblast> list = Library.CreateCards<ShouAmberblast>(2, ((Card)this).IsUpgraded).ToList();
			ShouAmberblast first = list[0];
			ShouAmberblast gemChoice = list[1];
			((Card)first).ChoiceCardIndicator = 1;
			((Card)gemChoice).ChoiceCardIndicator = 2;
			((Card)first).SetBattle(((Card)this).Battle);
			((Card)gemChoice).SetBattle(((Card)this).Battle);
			MiniSelectCardInteraction interaction = new MiniSelectCardInteraction((IEnumerable<Card>)list, false, false, false)
			{
				Source = (GameEntity)(object)this
			};
			yield return (BattleAction)new InteractionAction((Interaction)(object)interaction, false);
			if (interaction.SelectedCard == first)
			{
				yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)Library.CreateCards<ShouEmerald>(((Card)this).Value2, false), (AddCardsType)0);
				yield return (BattleAction)new AddCardsToDiscardAction((IEnumerable<Card>)Library.CreateCards<ShouAmber>(((Card)this).Value2, false), (AddCardsType)0);
			}
			else
			{
				yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)Library.CreateCards<ShouAmber>(((Card)this).Value2, false), (AddCardsType)0);
				yield return (BattleAction)new AddCardsToDiscardAction((IEnumerable<Card>)Library.CreateCards<ShouEmerald>(((Card)this).Value2, false), (AddCardsType)0);
			}
		}
	}
	public sealed class ShouPrimalPowerDef : SampleCharacterCardTemplate
	{
		public override CardConfig MakeConfig()
		{
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//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_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ae: 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 = 2;
			((ManaGroup)(ref val)).Green = 1;
			cardDefaultConfig.Cost = val;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Any = 1;
			((ManaGroup)(ref val)).Green = 1;
			cardDefaultConfig.UpgradedCost = val;
			cardDefaultConfig.Rarity = (Rarity)1;
			cardDefaultConfig.Type = (CardType)3;
			cardDefaultConfig.TargetType = (TargetType)4;
			cardDefaultConfig.Value1 = 5;
			cardDefaultConfig.UpgradedValue1 = 6;
			val = default(ManaGroup);
			((ManaGroup)(ref val)).Philosophy = 1;
			cardDefaultConfig.Mana = val;
			cardDefaultConfig.RelativeEffects = new List<string> { "ShouPrimalPowerSe", "ShouResonanceSe" };
			cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "ShouPrimalPowerSe", "ShouResonanceSe" };
			cardDefaultConfig.Keywords = (Keyword)65536;
			cardDefaultConfig.UpgradedKeywords = (Keyword)65536;
			cardDefaultConfig.Illustrator = "Radal";
			ca