Decompiled source of StS Stuff Mod v1.2.7

StSStuffMod.dll

Decompiled 3 days ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using AddWatermark;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Logging;
using Cysharp.Threading.Tasks;
using HarmonyLib;
using JetBrains.Annotations;
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.GapOptions;
using LBoL.Core.Randoms;
using LBoL.Core.Stations;
using LBoL.Core.StatusEffects;
using LBoL.Core.Units;
using LBoL.EntityLib.Cards.Character.Sakuya;
using LBoL.EntityLib.Cards.Enemy;
using LBoL.EntityLib.Cards.Neutral.NoColor;
using LBoL.EntityLib.Exhibits;
using LBoL.EntityLib.Exhibits.Adventure;
using LBoL.EntityLib.Exhibits.Shining;
using LBoL.EntityLib.Stages.NormalStages;
using LBoL.EntityLib.StatusEffects.Basic;
using LBoL.EntityLib.StatusEffects.Enemy;
using LBoL.EntityLib.StatusEffects.Others;
using LBoL.Presentation;
using LBoL.Presentation.UI;
using LBoL.Presentation.UI.Panels;
using LBoL.Presentation.UI.Widgets;
using LBoL.Presentation.Units;
using LBoLEntitySideloader;
using LBoLEntitySideloader.Attributes;
using LBoLEntitySideloader.Entities;
using LBoLEntitySideloader.ReflectionHelpers;
using LBoLEntitySideloader.Resource;
using StSStuffMod.Cards;
using UnityEngine;
using UnityEngine.Events;
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("StSStuffMod")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("StSStuffMod")]
[assembly: AssemblyTitle("StSStuffMod")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace StSStuffMod
{
	[BepInPlugin("intoxicatedkid.stsstuffmod", "StS Stuff Mod", "1.2.7")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInProcess("LBoL.exe")]
	public class BepinexPlugin : BaseUnityPlugin
	{
		public static class Helpers
		{
			public static void FakeQueueConsumingMana(ManaGroup manaGroup)
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0010: Unknown result type (might be due to invalid IL or missing references)
				//IL_0013: Unknown result type (might be due to invalid IL or missing references)
				//IL_0022: Unknown result type (might be due to invalid IL or missing references)
				//IL_0023: Unknown result type (might be due to invalid IL or missing references)
				//IL_0037: Expected O, but got Unknown
				//IL_0032: Unknown result type (might be due to invalid IL or missing references)
				//IL_003c: Expected O, but got Unknown
				BattleManaPanel panel = UiManager.GetPanel<BattleManaPanel>();
				List<ConsumingManaWidgets> consumingDeque = panel._consumingDeque;
				ManaGroup val = default(ManaGroup);
				((ManaGroup)(ref val)).Any = 0;
				consumingDeque.Insert(0, new ConsumingManaWidgets(new ConsumingMana(manaGroup, val), new List<BattleManaWidget>(), new List<BattleManaWidget>()));
			}
		}

		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("intoxicatedkid.stsstuffmod", "");

		internal static BatchLocalization cardLoc = new BatchLocalization((IResourceSource)(object)directorySource, typeof(CardTemplate), false);

		internal static BatchLocalization enemyUnitLoc = new BatchLocalization((IResourceSource)(object)directorySource, typeof(EnemyUnitTemplate), false);

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

		internal static BatchLocalization statusEffectLoc = new BatchLocalization((IResourceSource)(object)directorySource, typeof(StatusEffectTemplate), false);

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

		private void Awake()
		{
			log = ((BaseUnityPlugin)this).Logger;
			Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject);
			((Object)((Component)this).gameObject).hideFlags = (HideFlags)61;
			EntityManager.RegisterSelf();
			harmony.PatchAll();
			if (Chainloader.PluginInfos.ContainsKey("neo.lbol.tools.watermark"))
			{
				WatermarkWrapper.ActivateWatermark();
			}
			cardLoc.DiscoverAndLoadLocFiles("Card");
			enemyUnitLoc.DiscoverAndLoadLocFiles("EnemyUnit");
			exhibitLoc.DiscoverAndLoadLocFiles("Exhibit");
			statusEffectLoc.DiscoverAndLoadLocFiles("StatusEffect");
			unitModelLoc.DiscoverAndLoadLocFiles("UnitModel");
		}

		private void OnDestroy()
		{
			if (harmony != null)
			{
				harmony.UnpatchSelf();
			}
		}
	}
	public static class PInfo
	{
		public const string GUID = "intoxicatedkid.stsstuffmod";

		public const string Name = "StS Stuff Mod";

		public const string version = "1.2.7";

		public static readonly Harmony harmony = new Harmony("intoxicatedkid.stsstuffmod");
	}
	internal class WatermarkWrapper
	{
		[MethodImpl(MethodImplOptions.NoInlining)]
		internal static void ActivateWatermark()
		{
			API.ActivateWatermark();
		}
	}
}
namespace StSStuffMod.Exhibits
{
	public sealed class StSBustedCrownDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSBustedCrownDef))]
		[UsedImplicitly]
		[ExhibitInfo(WeighterType = typeof(StSBustedCrownWeighter))]
		public sealed class StSBustedCrown : ShiningExhibit
		{
			private class StSBustedCrownWeighter : IExhibitWeighter
			{
				public float WeightFor(Type type, GameRunController gameRun)
				{
					if (gameRun.CurrentStage.Level > 2 || gameRun.Player.HasExhibit<StSBustedCrown>() || gameRun.Player.HasExhibit<StSCursedKeyDef.StSCursedKey>() || gameRun.Player.HasExhibit<StSEctoplasmDef.StSEctoplasm>() || gameRun.Player.HasExhibit<StSPhilosophersStoneDef.StSPhilosophersStone>() || gameRun.Player.HasExhibit<StSRunicDomeDef.StSRunicDome>() || gameRun.Player.HasExhibit<StSVelvetChokerDef.StSVelvetChoker>())
					{
						return 0f;
					}
					return 1f;
				}
			}

			protected override void OnAdded(PlayerUnit player)
			{
				GameRunController gameRun = ((GameEntity)this).GameRun;
				gameRun.AdditionalRewardCardCount -= ((Exhibit)this).Value1;
			}

			protected override void OnRemoved(PlayerUnit player)
			{
				GameRunController gameRun = ((GameEntity)this).GameRun;
				gameRun.AdditionalRewardCardCount += ((Exhibit)this).Value1;
			}
		}

		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("StSBustedCrown");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, false, false, false, (AppearanceType)0, "", (ExhibitLosableType)2, (Rarity)3, (int?)1, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)(ManaColor)1, 2, false, (int?)null, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSCauldronDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSCauldronDef))]
		[UsedImplicitly]
		public sealed class StSCauldron : Exhibit
		{
			protected override IEnumerator SpecialGain(PlayerUnit player)
			{
				((Exhibit)this).OnGain(player);
				Card[] cards = ((GameEntity)this).GameRun.RollCards(((GameEntity)this).GameRun.GameRunEventRng, new CardWeightTable(RarityWeightTable.ShopCard, OwnerWeightTable.Valid, CardTypeWeightTable.OnlyTool, false), ((Exhibit)this).Value1, false, false, (Predicate<CardConfig>)null);
				SelectCardInteraction interaction = new SelectCardInteraction(0, ((Exhibit)this).Value1, (IEnumerable<Card>)cards, (SelectedCardHandling)0)
				{
					Source = (GameEntity)(object)this,
					CanCancel = false
				};
				yield return ((GameEntity)this).GameRun.InteractionViewer.View((Interaction)(object)interaction);
				IReadOnlyList<Card> selectedCards = interaction.SelectedCards;
				if (selectedCards.Count != 0)
				{
					((GameEntity)this).GameRun.AddDeckCards((IEnumerable<Card>)selectedCards, true, (VisualSourceData)null);
				}
			}
		}

		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("StSCauldron");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, true, false, false, (AppearanceType)1, "", (ExhibitLosableType)0, (Rarity)0, (int?)5, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)null, 0, false, (int?)0, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSCeramicFishDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSCeramicFishDef))]
		[UsedImplicitly]
		[ExhibitInfo(ExpireStageLevel = 3, ExpireStationLevel = 4)]
		public sealed class StSCeramicFish : Exhibit
		{
			protected override void OnAdded(PlayerUnit player)
			{
				((Exhibit)this).HandleGameRunEvent<CardsEventArgs>(((GameEntity)this).GameRun.DeckCardsAdded, (GameEventHandler<CardsEventArgs>)delegate(CardsEventArgs args)
				{
					//IL_0029: Unknown result type (might be due to invalid IL or missing references)
					//IL_002e: Unknown result type (might be due to invalid IL or missing references)
					//IL_0036: Unknown result type (might be due to invalid IL or missing references)
					//IL_0043: Expected O, but got Unknown
					int num = args.Cards.Length;
					if (num > 0)
					{
						((Exhibit)this).NotifyActivating();
						((GameEntity)this).GameRun.GainMoney(num * ((Exhibit)this).Value1, true, new VisualSourceData
						{
							SourceType = (VisualSourceType)7,
							Source = (GameEntity)(object)this
						});
					}
				});
			}
		}

		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("StSCeramicFish");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, true, false, false, (AppearanceType)0, "", (ExhibitLosableType)0, (Rarity)0, (int?)10, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)null, 0, false, (int?)0, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSCoffeeDripperDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSCoffeeDripperDef))]
		[UsedImplicitly]
		public sealed class StSCoffeeDripper : Exhibit
		{
			protected override void OnAdded(PlayerUnit player)
			{
				((Exhibit)this).HandleGameRunEvent<StationEventArgs>(((GameEntity)this).GameRun.GapOptionsGenerating, (GameEventHandler<StationEventArgs>)delegate(StationEventArgs args)
				{
					//IL_0013: Unknown result type (might be due to invalid IL or missing references)
					((Exhibit)this).NotifyActivating();
					((GapStation)args.Station).GapOptions.RemoveAll((GapOption o) => (int)o.Type == 0);
					args.Station.Finish();
				});
				((Exhibit)this).HandleGameRunEvent<StationEventArgs>(((GameEntity)this).GameRun.StationEntered, (GameEventHandler<StationEventArgs>)delegate(StationEventArgs args)
				{
					//IL_0007: Unknown result type (might be due to invalid IL or missing references)
					//IL_000d: Invalid comparison between Unknown and I4
					//IL_0015: 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_0069: Unknown result type (might be due to invalid IL or missing references)
					//IL_0073: Expected O, but got Unknown
					//IL_006e: Unknown result type (might be due to invalid IL or missing references)
					//IL_0078: Expected O, but got Unknown
					if ((int)args.Station.Type == 4 && CollectionsExtensions.Empty<GapOption>((IReadOnlyCollection<GapOption>)((GapStation)args.Station).GapOptions) && player.HasExhibit<WaijieYanshuang>() && !player.HasExhibit<JingjieGanzhiyi>())
					{
						((Station)(GapStation)args.Station).PreDialogs.Add(new StationDialogSource("YukariProvide", (object)new YanshuangCommandHandler(((GameEntity)this).GameRun)));
					}
				});
			}

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

			private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args)
			{
				((Exhibit)this).NotifyActivating();
				ManaGroup manaGroup = ManaGroup.Single(CollectionsExtensions.Sample<ManaColor>((IEnumerable<ManaColor>)ManaColors.Colors, ((GameEntity)this).GameRun.BattleRng));
				yield return (BattleAction)new GainManaAction(manaGroup);
			}
		}

		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("StSCoffeeDripper");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, true, false, false, (AppearanceType)1, "", (ExhibitLosableType)2, (Rarity)0, (int?)null, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)null, 0, false, (int?)0, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSCultistHeadpieceDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSCultistHeadpieceDef))]
		[UsedImplicitly]
		public sealed class StSCultistHeadpiece : Exhibit
		{
			protected override void OnEnterBattle()
			{
				((Exhibit)this).ReactBattleEvent<GameEventArgs>(((Exhibit)this).Battle.BattleStarted, (EventSequencedReactor<GameEventArgs>)OnBattleStarted);
			}

			private IEnumerable<BattleAction> OnBattleStarted(GameEventArgs args)
			{
				((Exhibit)this).NotifyActivating();
				yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)((Exhibit)this).Battle.Player, "CAW!\nCAAAW", 2f, 0f, 0f, true);
				yield return (BattleAction)(object)PerformAction.Sfx("Raven", 0f);
				yield return (BattleAction)(object)PerformAction.Sfx("Raven", 0f);
				yield return (BattleAction)(object)PerformAction.Sfx("Raven", 0.75f);
				yield return (BattleAction)(object)PerformAction.Sfx("Raven", 0f);
				foreach (EnemyUnit enemyUnit in ((Exhibit)this).Battle.EnemyGroup)
				{
					if (((Unit)enemyUnit).IsAlive)
					{
						yield return (BattleAction)(object)new ApplyStatusEffectAction<TempFirepowerNegative>((Unit)(object)enemyUnit, (int?)((Exhibit)this).Value1, (int?)null, (int?)null, (int?)null, 0f, true);
					}
				}
			}
		}

		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("StSCultistHeadpiece");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, true, false, false, (AppearanceType)2, "", (ExhibitLosableType)0, (Rarity)0, (int?)3, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)null, 0, false, (int?)0, (Keyword)0, (IReadOnlyList<string>)new List<string> { "TempFirepowerNegative" }, (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSCursedKeyDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSCursedKeyDef))]
		[UsedImplicitly]
		[ExhibitInfo(WeighterType = typeof(StSCursedKeyWeighter))]
		public sealed class StSCursedKey : ShiningExhibit
		{
			private class StSCursedKeyWeighter : IExhibitWeighter
			{
				public float WeightFor(Type type, GameRunController gameRun)
				{
					if (gameRun.CurrentStage.Level > 2 || gameRun.Player.HasExhibit<StSBustedCrownDef.StSBustedCrown>() || gameRun.Player.HasExhibit<StSCursedKey>() || gameRun.Player.HasExhibit<StSEctoplasmDef.StSEctoplasm>() || gameRun.Player.HasExhibit<StSPhilosophersStoneDef.StSPhilosophersStone>() || gameRun.Player.HasExhibit<StSRunicDomeDef.StSRunicDome>() || gameRun.Player.HasExhibit<StSVelvetChokerDef.StSVelvetChoker>())
					{
						return 0f;
					}
					return 1f;
				}
			}

			protected override void OnAdded(PlayerUnit player)
			{
				((Exhibit)this).HandleGameRunEvent<StationEventArgs>(((GameEntity)this).GameRun.StationEntered, (GameEventHandler<StationEventArgs>)delegate(StationEventArgs args)
				{
					//IL_0007: Unknown result type (might be due to invalid IL or missing references)
					//IL_000d: Invalid comparison between Unknown and I4
					if ((int)args.Station.Type == 3)
					{
						((Exhibit)this).NotifyActivating();
						Card randomCurseCard = ((GameEntity)this).GameRun.GetRandomCurseCard(((GameEntity)this).GameRun.GameRunEventRng, false);
						((GameEntity)this).GameRun.AddDeckCard(randomCurseCard, false, (VisualSourceData)null);
					}
				});
			}
		}

		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("StSCursedKey");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, false, false, false, (AppearanceType)0, "", (ExhibitLosableType)2, (Rarity)3, (int?)null, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)(ManaColor)3, 2, false, (int?)null, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSDamaruDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSDamaruDef))]
		[UsedImplicitly]
		[ExhibitInfo(WeighterType = typeof(StSDamaruWeighter))]
		public sealed class StSDamaru : Exhibit
		{
			private class StSDamaruWeighter : IExhibitWeighter
			{
				public float WeightFor(Type type, GameRunController gameRun)
				{
					if (gameRun.Player.HasExhibit<MarisaR>())
					{
						return 1f;
					}
					if (gameRun.BaseDeck.Any((Card card) => card.IsUpgraded ? card.Config.UpgradedRelativeEffects.Contains("Charging") : card.Config.RelativeEffects.Contains("Charging")))
					{
						return 1f;
					}
					return 0f;
				}
			}

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

			private IEnumerable<BattleAction> OnPlayerTurnStarting(UnitEventArgs args)
			{
				((Exhibit)this).NotifyActivating();
				yield return (BattleAction)(object)new ApplyStatusEffectAction<Charging>((Unit)(object)((Exhibit)this).Owner, (int?)((Exhibit)this).Value1, (int?)null, (int?)null, (int?)null, 0f, true);
			}
		}

		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("StSDamaru");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, true, false, false, (AppearanceType)0, "", (ExhibitLosableType)0, (Rarity)0, (int?)1, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)null, 0, false, (int?)0, (Keyword)0, (IReadOnlyList<string>)new List<string> { "Charging" }, (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSEctoplasmDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSEctoplasmDef))]
		[UsedImplicitly]
		[ExhibitInfo(WeighterType = typeof(StSEctoplasmWeighter))]
		public sealed class StSEctoplasm : ShiningExhibit
		{
			[HarmonyPatch(typeof(GameRunController), "InternalGainMoney")]
			private class GameRunController_InternalGainMoney_Patch
			{
				private static bool Prefix()
				{
					if (Singleton<GameMaster>.Instance.CurrentGameRun != null && Singleton<GameMaster>.Instance.CurrentGameRun.Player.HasExhibit<StSEctoplasm>())
					{
						return false;
					}
					return true;
				}
			}

			[HarmonyPatch(typeof(GapStation), "OnEnter")]
			private class GapStation_OnEnter_Patch
			{
				private static void Postfix(GapStation __instance)
				{
					if (Singleton<GameMaster>.Instance.CurrentGameRun != null && Singleton<GameMaster>.Instance.CurrentGameRun.Player.HasExhibit<StSEctoplasm>())
					{
						GapOption? obj = ((IEnumerable<GapOption>)__instance.GapOptions).FirstOrDefault((Func<GapOption, bool>)((GapOption gapOption) => (int)gapOption.Type == 1));
						UpgradeCard val = (UpgradeCard)(object)((obj is UpgradeCard) ? obj : null);
						if (val != null)
						{
							val.Price = 0;
						}
					}
				}
			}

			private class StSEctoplasmWeighter : IExhibitWeighter
			{
				public float WeightFor(Type type, GameRunController gameRun)
				{
					if (gameRun.CurrentStage.Level > 2 || gameRun.Player.HasExhibit<StSBustedCrownDef.StSBustedCrown>() || gameRun.Player.HasExhibit<StSCursedKeyDef.StSCursedKey>() || gameRun.Player.HasExhibit<StSEctoplasm>() || gameRun.Player.HasExhibit<StSPhilosophersStoneDef.StSPhilosophersStone>() || gameRun.Player.HasExhibit<StSRunicDomeDef.StSRunicDome>() || gameRun.Player.HasExhibit<StSVelvetChokerDef.StSVelvetChoker>())
					{
						return 0f;
					}
					return 1f;
				}
			}

			protected override void OnAdded(PlayerUnit player)
			{
				((Exhibit)this).HandleGameRunEvent<GameEventArgs>(((GameEntity)this).GameRun.MoneyGained, (GameEventHandler<GameEventArgs>)delegate
				{
					((Exhibit)this).NotifyActivating();
				});
			}
		}

		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("StSEctoplasm");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, false, false, false, (AppearanceType)0, "", (ExhibitLosableType)2, (Rarity)3, (int?)0, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)(ManaColor)5, 2, false, (int?)null, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSEmotionChipDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSEmotionChipDef))]
		[UsedImplicitly]
		[ExhibitInfo(WeighterType = typeof(StSEmotionChipWeighter))]
		public sealed class StSEmotionChip : Exhibit
		{
			private class StSEmotionChipWeighter : IExhibitWeighter
			{
				public float WeightFor(Type type, GameRunController gameRun)
				{
					if (gameRun.BaseDeck.Any((Card card) => (int)card.CardType == 5))
					{
						return 1f;
					}
					return 0f;
				}
			}

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

			private IEnumerable<BattleAction> OnPlayerDamageReceived(DamageEventArgs args)
			{
				DamageInfo damageInfo = args.DamageInfo;
				if (((DamageInfo)(ref damageInfo)).Damage > 0f)
				{
					((Exhibit)this).Active = true;
				}
				yield break;
			}

			private IEnumerable<BattleAction> OnPlayerTurnStarted(UnitEventArgs args)
			{
				if (((Exhibit)this).Active && !((Exhibit)this).Battle.BattleShouldEnd)
				{
					((Exhibit)this).NotifyActivating();
					List<Card> list = ((Exhibit)this).Battle.HandZone.Where((Card card) => (int)card.CardType == 5 && card.Summoned).ToList();
					foreach (Card card2 in list)
					{
						IEnumerable<BattleAction> passiveActions = card2.GetPassiveActions();
						if (passiveActions == null)
						{
							continue;
						}
						foreach (BattleAction item in passiveActions)
						{
							yield return item;
						}
					}
				}
				((Exhibit)this).Active = false;
			}

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

		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("StSEmotionChip");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, true, false, false, (AppearanceType)0, "", (ExhibitLosableType)0, (Rarity)2, (int?)null, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)null, 0, false, (int?)0, (Keyword)281474976710656L, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSEnchiridionDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSEnchiridionDef))]
		[UsedImplicitly]
		public sealed class StSEnchiridion : Exhibit
		{
			protected override void OnEnterBattle()
			{
				((Exhibit)this).ReactBattleEvent<GameEventArgs>(((Exhibit)this).Battle.BattleStarted, (EventSequencedReactor<GameEventArgs>)OnBattleStarted);
			}

			private IEnumerable<BattleAction> OnBattleStarted(GameEventArgs args)
			{
				((Exhibit)this).NotifyActivating();
				Card card = ((Exhibit)this).Battle.RollCard(new CardWeightTable(RarityWeightTable.BattleCard, OwnerWeightTable.Valid, CardTypeWeightTable.OnlyAbility, false), (Predicate<CardConfig>)null);
				card.SetTurnCost(((Exhibit)this).Mana);
				if (((Exhibit)this).Battle.HandZone.Count >= ((Exhibit)this).Battle.MaxHand)
				{
					yield return (BattleAction)new AddCardsToDiscardAction((Card[])(object)new Card[1] { card });
				}
				else
				{
					yield return (BattleAction)new AddCardsToHandAction((Card[])(object)new Card[1] { card });
				}
			}
		}

		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("StSEnchiridion");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_0042: 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_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Expected O, but got Unknown
			int num = BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig));
			int? num2 = 1;
			ManaGroup value = default(ManaGroup);
			((ManaGroup)(ref value)).Any = 0;
			return new ExhibitConfig(num, "", 10, false, true, false, false, (AppearanceType)2, "", (ExhibitLosableType)0, (Rarity)1, num2, (int?)null, (int?)null, (ManaGroup?)value, (ManaColor?)null, (ManaColor?)null, 0, false, (int?)0, (Keyword)4, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSFusionHammerDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSFusionHammerDef))]
		[UsedImplicitly]
		public sealed class StSFusionHammer : Exhibit
		{
			protected override void OnAdded(PlayerUnit player)
			{
				((Exhibit)this).HandleGameRunEvent<StationEventArgs>(((GameEntity)this).GameRun.GapOptionsGenerating, (GameEventHandler<StationEventArgs>)delegate(StationEventArgs args)
				{
					//IL_000e: Unknown result type (might be due to invalid IL or missing references)
					((Exhibit)this).NotifyActivating();
					((GapStation)args.Station).GapOptions.RemoveAll((GapOption o) => (int)o.Type == 1);
					args.Station.Finish();
				});
			}

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

			private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args)
			{
				((Exhibit)this).NotifyActivating();
				ManaGroup manaGroup = ManaGroup.Single(CollectionsExtensions.Sample<ManaColor>((IEnumerable<ManaColor>)ManaColors.Colors, ((GameEntity)this).GameRun.BattleRng));
				yield return (BattleAction)new GainManaAction(manaGroup);
			}
		}

		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("StSFusionHammer");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, true, false, false, (AppearanceType)1, "", (ExhibitLosableType)2, (Rarity)0, (int?)null, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)null, 0, false, (int?)0, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSIncenseBurnerDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSIncenseBurnerDef))]
		[UsedImplicitly]
		public sealed class StSIncenseBurner : Exhibit
		{
			protected override void OnEnterBattle()
			{
				((Exhibit)this).ReactBattleEvent<UnitEventArgs>(((Unit)((Exhibit)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted);
			}

			private IEnumerable<BattleAction> OnPlayerTurnStarted(UnitEventArgs args)
			{
				int counter = ((Exhibit)this).Counter;
				((Exhibit)this).Counter = counter + 1;
				var (item, item2) = MathExtensions.DivRem(((Exhibit)this).Counter, ((Exhibit)this).Value1);
				((Exhibit)this).Counter = item2;
				if (item != 0)
				{
					((Exhibit)this).NotifyActivating();
					yield return (BattleAction)(object)new ApplyStatusEffectAction<Invincible>((Unit)(object)((Exhibit)this).Owner, (int?)null, (int?)((Exhibit)this).Value2, (int?)null, (int?)null, 0f, true);
				}
			}
		}

		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("StSIncenseBurner");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, true, false, false, (AppearanceType)0, "", (ExhibitLosableType)0, (Rarity)2, (int?)5, (int?)1, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)null, 0, true, (int?)0, (Keyword)0, (IReadOnlyList<string>)new List<string> { "Invincible" }, (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSNecronomiconDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSNecronomiconDef))]
		[UsedImplicitly]
		public sealed class StSNecronomicon : Exhibit
		{
			private bool Again = false;

			private Card card = null;

			private ManaGroup manaGroup = ManaGroup.Empty;

			private UnitSelector unitSelector = null;

			protected override void OnGain(PlayerUnit player)
			{
				List<Card> list = new List<Card> { (Card)(object)Library.CreateCard<StSNecronomicurse>() };
				((GameEntity)this).GameRun.AddDeckCards((IEnumerable<Card>)list, false, (VisualSourceData)null);
			}

			protected override void OnEnterBattle()
			{
				((Exhibit)this).HandleBattleEvent<UnitEventArgs>(((Unit)((Exhibit)this).Battle.Player).TurnStarting, (GameEventHandler<UnitEventArgs>)delegate
				{
					((Exhibit)this).Active = true;
				});
				((Exhibit)this).ReactBattleEvent<CardUsingEventArgs>(((Exhibit)this).Battle.CardUsing, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsing);
				((Exhibit)this).ReactBattleEvent<CardMovingEventArgs>(((Exhibit)this).Battle.CardMoving, (EventSequencedReactor<CardMovingEventArgs>)OnCardMoving);
				((Exhibit)this).ReactBattleEvent<CardEventArgs>(((Exhibit)this).Battle.CardExiling, (EventSequencedReactor<CardEventArgs>)OnCardExiling);
				((Exhibit)this).ReactBattleEvent<CardEventArgs>(((Exhibit)this).Battle.CardRemoving, (EventSequencedReactor<CardEventArgs>)OnCardRemoving);
			}

			private IEnumerable<BattleAction> OnCardUsing(CardUsingEventArgs args)
			{
				int num;
				if (((Exhibit)this).Active && (int)args.Card.CardType == 1 && args.Card != card)
				{
					ManaGroup consumingMana = args.ConsumingMana;
					num = ((((ManaGroup)(ref consumingMana)).Amount >= ((Exhibit)this).Value1) ? 1 : 0);
				}
				else
				{
					num = 0;
				}
				if (num != 0)
				{
					Again = true;
					card = args.Card;
					manaGroup = args.ConsumingMana;
					unitSelector = args.Selector;
				}
				yield break;
			}

			private IEnumerable<BattleAction> OnCardMoving(CardMovingEventArgs args)
			{
				if (((Exhibit)this).Battle.BattleShouldEnd || !Again || args.Card != card || ((int)args.SourceZone == 5 && (int)args.DestinationZone == 2))
				{
					yield break;
				}
				foreach (BattleAction item in Play(args.Card, (GameEventArgs)(object)args))
				{
					yield return item;
				}
			}

			private IEnumerable<BattleAction> OnCardExiling(CardEventArgs args)
			{
				if (((Exhibit)this).Battle.BattleShouldEnd || !Again || args.Card != card)
				{
					yield break;
				}
				foreach (BattleAction item in Play(args.Card, (GameEventArgs)(object)args))
				{
					yield return item;
				}
			}

			private IEnumerable<BattleAction> OnCardRemoving(CardEventArgs args)
			{
				if (((Exhibit)this).Battle.BattleShouldEnd || !Again || args.Card != card)
				{
					yield break;
				}
				foreach (BattleAction item in Play(args.Card, (GameEventArgs)(object)args))
				{
					yield return item;
				}
			}

			private IEnumerable<BattleAction> Play(Card Card, GameEventArgs args)
			{
				Again = false;
				BattleController battle = ((Exhibit)this).Battle;
				battle.MaxHand += 1;
				if (((Exhibit)this).Battle.HandZone.Count >= ((Exhibit)this).Battle.MaxHand)
				{
					BattleController battle2 = ((Exhibit)this).Battle;
					battle2.MaxHand -= 1;
					card = null;
					manaGroup = ManaGroup.Empty;
					unitSelector = null;
					yield break;
				}
				((Exhibit)this).NotifyActivating();
				args.CancelBy((GameEntity)(object)this);
				yield return (BattleAction)new MoveCardAction(Card, (CardZone)2);
				BattleController battle3 = ((Exhibit)this).Battle;
				battle3.MaxHand -= 1;
				if ((int)Card.Zone == 2)
				{
					if ((int)unitSelector.Type == 1 && !((Unit)unitSelector.SelectedEnemy).IsAlive)
					{
						unitSelector = new UnitSelector(CollectionsExtensions.Sample<EnemyUnit>(((Exhibit)this).Battle.AllAliveEnemies, ((GameEntity)this).GameRun.BattleRng));
					}
					((Exhibit)this).Battle.GainMana(manaGroup);
					BepinexPlugin.Helpers.FakeQueueConsumingMana(manaGroup);
					yield return (BattleAction)new UseCardAction(Card, unitSelector, manaGroup);
					if ((int)Card.Zone == 2 && Card.IsExile)
					{
						yield return (BattleAction)new ExileCardAction(Card);
					}
					else if ((int)Card.Zone == 2)
					{
						yield return (BattleAction)new MoveCardAction(Card, (CardZone)3);
					}
				}
				card = null;
				manaGroup = ManaGroup.Empty;
				unitSelector = null;
				((Exhibit)this).Active = false;
			}

			protected override void OnLeaveBattle()
			{
				//IL_0018: Unknown result type (might be due to invalid IL or missing references)
				//IL_001d: Unknown result type (might be due to invalid IL or missing references)
				((Exhibit)this).Active = false;
				Again = false;
				card = null;
				manaGroup = ManaGroup.Empty;
				unitSelector = null;
			}
		}

		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("StSNecronomicon");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_0042: 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_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Expected O, but got Unknown
			int num = BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig));
			int? num2 = 3;
			ManaGroup value = default(ManaGroup);
			((ManaGroup)(ref value)).Any = 0;
			return new ExhibitConfig(num, "", 10, false, true, false, false, (AppearanceType)2, "", (ExhibitLosableType)2, (Rarity)2, num2, (int?)null, (int?)null, (ManaGroup?)value, (ManaColor?)null, (ManaColor?)null, 0, false, (int?)0, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string> { "StSNecronomicurse" });
		}
	}
	public sealed class StSNeowsLamentDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSNeowsLamentDef))]
		[UsedImplicitly]
		[ExhibitInfo(ExpireStageLevel = 2, ExpireStationLevel = 0)]
		public sealed class StSNeowsLament : Exhibit
		{
			protected override void OnEnterBattle()
			{
				((Exhibit)this).ReactBattleEvent<GameEventArgs>(((Exhibit)this).Battle.BattleStarted, (EventSequencedReactor<GameEventArgs>)OnBattleStarted);
				((Exhibit)this).ReactBattleEvent<GameEventArgs>(((Exhibit)this).Battle.BattleEnded, (EventSequencedReactor<GameEventArgs>)OnBattleEnded);
			}

			private IEnumerable<BattleAction> OnBattleStarted(GameEventArgs args)
			{
				if (((Exhibit)this).Counter <= 0)
				{
					yield break;
				}
				int num = ((Exhibit)this).Counter - 1;
				((Exhibit)this).Counter = num;
				((Exhibit)this).NotifyActivating();
				foreach (EnemyUnit enemyUnit in ((Exhibit)this).Battle.AllAliveEnemies)
				{
					((GameEntity)this).GameRun.SetEnemyHpAndMaxHp(((Exhibit)this).Value2, ((Unit)enemyUnit).MaxHp, enemyUnit, false);
				}
			}

			private IEnumerable<BattleAction> OnBattleEnded(GameEventArgs args)
			{
				yield break;
			}
		}

		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("StSNeowsLament");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, true, false, false, (AppearanceType)2, "", (ExhibitLosableType)0, (Rarity)0, (int?)3, (int?)1, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)null, 0, true, (int?)3, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSNinjaScrollDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSNinjaScrollDef))]
		[UsedImplicitly]
		[ExhibitInfo(WeighterType = typeof(StSNinjaScrollWeighter))]
		public sealed class StSNinjaScroll : Exhibit
		{
			private class StSNinjaScrollWeighter : IExhibitWeighter
			{
				public float WeightFor(Type type, GameRunController gameRun)
				{
					if (gameRun.Player.HasExhibit<SakuyaW>())
					{
						return 1f;
					}
					if (gameRun.BaseDeck.Any((Card card) => card.IsUpgraded ? card.Config.UpgradedRelativeCards.Contains("Knife") : card.Config.RelativeCards.Contains("Knife")))
					{
						return 1f;
					}
					return 0f;
				}
			}

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

			private IEnumerable<BattleAction> OnBattleStarted(GameEventArgs args)
			{
				((Exhibit)this).NotifyActivating();
				List<Card> cards = ((IEnumerable<Card>)Library.CreateCards<Knife>(((Exhibit)this).Value1, false)).ToList();
				foreach (Card card in cards)
				{
					card.IsAutoExile = true;
				}
				yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)cards, (AddCardsType)0);
			}
		}

		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("StSNinjaScroll");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, true, false, false, (AppearanceType)0, "", (ExhibitLosableType)0, (Rarity)1, (int?)3, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)null, 0, false, (int?)0, (Keyword)33554432, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string> { "Knife" });
		}
	}
	public sealed class StSNlothsGiftDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSNlothsGiftDef))]
		[UsedImplicitly]
		[ExhibitInfo(ExpireStageLevel = 3, ExpireStationLevel = 9)]
		public sealed class StSNlothsGift : Exhibit
		{
			[HarmonyPatch(typeof(GameRunController), "BaseCardWeight")]
			private class GameRunController_BaseCardWeight_Patch
			{
				private static bool Prefix()
				{
					if (Singleton<GameMaster>.Instance.CurrentGameRun != null && Singleton<GameMaster>.Instance.CurrentGameRun.Player.HasExhibit<StSNlothsGift>())
					{
						Singleton<GameMaster>.Instance.CurrentGameRun._cardRareWeightFactor = 3f;
					}
					return true;
				}
			}
		}

		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("StSNlothsGift");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, true, false, false, (AppearanceType)2, "", (ExhibitLosableType)0, (Rarity)1, (int?)null, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)null, 0, false, (int?)null, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSOrangePelletsDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSOrangePelletsDef))]
		[UsedImplicitly]
		public sealed class StSOrangePellets : Exhibit
		{
			private bool unknown = false;

			private bool attack = false;

			private bool defense = false;

			private bool skill = false;

			private bool ability = false;

			private bool friend = false;

			private bool tool = false;

			private bool status = false;

			private bool misfortune = false;

			protected override void OnEnterBattle()
			{
				((Exhibit)this).ReactBattleEvent<CardUsingEventArgs>(((Exhibit)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed);
				((Exhibit)this).HandleBattleEvent<UnitEventArgs>(((Unit)((Exhibit)this).Battle.Player).TurnEnding, (GameEventHandler<UnitEventArgs>)delegate
				{
					((Exhibit)this).Counter = 0;
					unknown = false;
					attack = false;
					defense = false;
					skill = false;
					ability = false;
					friend = false;
					tool = false;
					status = false;
					misfortune = false;
				});
			}

			private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args)
			{
				if (((Unit)((Exhibit)this).Owner).IsInTurn)
				{
					if ((int)args.Card.CardType == 0 && !unknown)
					{
						unknown = true;
						((Exhibit)this).Counter = ((Exhibit)this).Counter + 1;
					}
					else if ((int)args.Card.CardType == 1 && !attack)
					{
						attack = true;
						((Exhibit)this).Counter = ((Exhibit)this).Counter + 1;
					}
					else if ((int)args.Card.CardType == 2 && !defense)
					{
						defense = true;
						((Exhibit)this).Counter = ((Exhibit)this).Counter + 1;
					}
					else if ((int)args.Card.CardType == 3 && !skill)
					{
						skill = true;
						((Exhibit)this).Counter = ((Exhibit)this).Counter + 1;
					}
					else if ((int)args.Card.CardType == 4 && !ability)
					{
						ability = true;
						((Exhibit)this).Counter = ((Exhibit)this).Counter + 1;
					}
					else if ((int)args.Card.CardType == 5 && !friend)
					{
						friend = true;
						((Exhibit)this).Counter = ((Exhibit)this).Counter + 1;
					}
					else if ((int)args.Card.CardType == 6 && !tool)
					{
						tool = true;
						((Exhibit)this).Counter = ((Exhibit)this).Counter + 1;
					}
					else if ((int)args.Card.CardType == 7 && !status)
					{
						status = true;
						((Exhibit)this).Counter = ((Exhibit)this).Counter + 1;
					}
					else if ((int)args.Card.CardType == 8 && !misfortune)
					{
						misfortune = true;
						((Exhibit)this).Counter = ((Exhibit)this).Counter + 1;
					}
					if (((Exhibit)this).Counter >= ((Exhibit)this).Value1)
					{
						((Exhibit)this).NotifyActivating();
						((Exhibit)this).Counter = 0;
						unknown = false;
						attack = false;
						defense = false;
						skill = false;
						ability = false;
						friend = false;
						tool = false;
						status = false;
						misfortune = false;
						yield return (BattleAction)new RemoveAllNegativeStatusEffectAction((Unit)(object)((Exhibit)this).Battle.Player, 0.2f);
					}
				}
			}

			protected override void OnLeaveBattle()
			{
				((Exhibit)this).Counter = 0;
				unknown = false;
				attack = false;
				defense = false;
				skill = false;
				ability = false;
				friend = false;
				tool = false;
				status = false;
				misfortune = false;
			}
		}

		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("StSOrangePellets");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, true, false, false, (AppearanceType)1, "", (ExhibitLosableType)0, (Rarity)0, (int?)4, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)null, 0, true, (int?)0, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSOrreryDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSOrreryDef))]
		[UsedImplicitly]
		public sealed class StSOrrery : Exhibit
		{
			protected override IEnumerator SpecialGain(PlayerUnit player)
			{
				((Exhibit)this).Active = true;
				((Exhibit)this).OnGain(player);
				((UiPanelBase)UiManager.GetPanel<ShopPanel>()).Hide();
				((Exhibit)this).HandleGameRunEvent<CardsEventArgs>(((GameEntity)this).GameRun.DeckCardsAdded, (GameEventHandler<CardsEventArgs>)delegate
				{
					if (((Exhibit)this).Active)
					{
						((MonoBehaviour)Singleton<GameMaster>.Instance).StartCoroutine(Wait());
					}
				});
				((GameEntity)this).GameRun.CurrentStation.ClearRewards();
				((GameEntity)this).GameRun.CurrentStation.AddReward(GetOrreryReward());
				((GameEntity)this).GameRun.CurrentStation.AddReward(GetOrreryReward());
				((GameEntity)this).GameRun.CurrentStation.AddReward(GetOrreryReward());
				((GameEntity)this).GameRun.CurrentStation.AddReward(GetOrreryReward());
				((GameEntity)this).GameRun.CurrentStation.AddReward(GetOrreryReward());
				((UiPanel<ShowRewardContent>)(object)UiManager.GetPanel<RewardPanel>()).Show(new ShowRewardContent
				{
					Station = ((GameEntity)this).GameRun.CurrentStation,
					Rewards = ((GameEntity)this).GameRun.CurrentStation.Rewards
				});
				UiManager.GetPanel<VnPanel>().SetNextButton(false, (int?)null, (Action)null);
				CollectionExtensions.Do<RewardWidget>((IEnumerable<RewardWidget>)UiManager.GetPanel<RewardPanel>()._rewardWidgets, (Action<RewardWidget>)delegate(RewardWidget rw)
				{
					rw.Click += delegate
					{
						//IL_002d: Unknown result type (might be due to invalid IL or missing references)
						//IL_0037: Expected O, but got Unknown
						//IL_004e: Unknown result type (might be due to invalid IL or missing references)
						//IL_0058: Expected O, but got Unknown
						UiManager.GetPanel<VnPanel>().SetNextButton(false, (int?)null, (Action)null);
						((UnityEvent)UiManager.GetPanel<RewardPanel>().abandonButton.onClick).AddListener((UnityAction)delegate
						{
							UiManager.GetPanel<VnPanel>().SetNextButton(false, (int?)null, (Action)null);
							if (UiManager.GetPanel<RewardPanel>()._rewardWidgets.Count == 0)
							{
								((Exhibit)this).Active = false;
								((UiPanelBase)UiManager.GetPanel<RewardPanel>()).Hide();
								UiManager.GetPanel<VnPanel>().SetNextButton(true, (int?)null, (Action)null);
							}
						});
						((UnityEvent)UiManager.GetPanel<RewardPanel>().returnButton.onClick).AddListener((UnityAction)delegate
						{
							UiManager.GetPanel<VnPanel>().SetNextButton(false, (int?)null, (Action)null);
							if (UiManager.GetPanel<RewardPanel>()._rewardWidgets.Count == 0)
							{
								((Exhibit)this).Active = false;
								((UiPanelBase)UiManager.GetPanel<RewardPanel>()).Hide();
								UiManager.GetPanel<VnPanel>().SetNextButton(true, (int?)null, (Action)null);
							}
						});
					};
				});
				((MonoBehaviour)Singleton<GameMaster>.Instance).StartCoroutine(WaitMore());
				yield break;
			}

			private IEnumerator Wait()
			{
				yield return (object)new WaitForEndOfFrame();
				UiManager.GetPanel<VnPanel>().SetNextButton(false, (int?)null, (Action)null);
				if (UiManager.GetPanel<RewardPanel>()._rewardWidgets.Count == 0)
				{
					((Exhibit)this).Active = false;
					((UiPanelBase)UiManager.GetPanel<RewardPanel>()).Hide();
					UiManager.GetPanel<VnPanel>().SetNextButton(true, (int?)null, (Action)null);
				}
			}

			private IEnumerator WaitMore()
			{
				yield return (object)new WaitForEndOfFrame();
				yield return (object)new WaitForEndOfFrame();
				yield return (object)new WaitForEndOfFrame();
				yield return (object)new WaitForEndOfFrame();
				yield return (object)new WaitForEndOfFrame();
				yield return (object)new WaitForEndOfFrame();
				yield return (object)new WaitForEndOfFrame();
				yield return (object)new WaitForEndOfFrame();
				yield return (object)new WaitForEndOfFrame();
				yield return (object)new WaitForEndOfFrame();
				yield return (object)new WaitForEndOfFrame();
				yield return (object)new WaitForEndOfFrame();
				yield return (object)new WaitForEndOfFrame();
				UiManager.GetPanel<VnPanel>().SetNextButton(false, (int?)null, (Action)null);
			}

			private StationReward GetOrreryReward()
			{
				return StationReward.CreateCards(((GameEntity)this).GameRun.GetRewardCards(((GameEntity)this).GameRun.CurrentStage.EnemyCardOnlyPlayerWeight, ((GameEntity)this).GameRun.CurrentStage.EnemyCardWithFriendWeight, ((GameEntity)this).GameRun.CurrentStage.EnemyCardNeutralWeight, ((GameEntity)this).GameRun.CurrentStage.EnemyCardWeight, ((GameEntity)this).GameRun.RewardCardCount, false));
			}
		}

		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("StSOrrery");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, true, false, false, (AppearanceType)1, "", (ExhibitLosableType)0, (Rarity)1, (int?)5, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)null, 0, false, (int?)0, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSPandorasBoxDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSPandorasBoxDef))]
		[UsedImplicitly]
		[ExhibitInfo(WeighterType = typeof(StSPandorasBoxWeighter))]
		public sealed class StSPandorasBox : Exhibit
		{
			private class StSPandorasBoxWeighter : IExhibitWeighter
			{
				public float WeightFor(Type type, GameRunController gameRun)
				{
					return (gameRun.BaseDeck.Count((Card c) => c.IsBasic) > 0) ? 1 : 0;
				}
			}

			protected override void OnGain(PlayerUnit player)
			{
				//IL_0082: Unknown result type (might be due to invalid IL or missing references)
				//IL_008f: Expected O, but got Unknown
				List<Card> list = ((GameEntity)this).GameRun.BaseDeckWithOutUnremovable.Where((Card card) => card.IsBasic).ToList();
				if (list.Count <= 0)
				{
					return;
				}
				List<Card> list2 = new List<Card>();
				foreach (Card item in list)
				{
					Card val = ((GameEntity)this).GameRun.RollCard(((GameEntity)this).GameRun.GameRunEventRng, new CardWeightTable(RarityWeightTable.AllOnes, OwnerWeightTable.Valid, CardTypeWeightTable.CanBeLoot, false), false, false, (Predicate<CardConfig>)null);
					if (item.IsUpgraded)
					{
						val.Upgrade();
					}
					list2.Add(val);
				}
				((GameEntity)this).GameRun.RemoveDeckCards((IEnumerable<Card>)list, false);
				((GameEntity)this).GameRun.AddDeckCards((IEnumerable<Card>)list2, true, (VisualSourceData)null);
			}
		}

		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("StSPandorasBox");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, true, false, false, (AppearanceType)0, "", (ExhibitLosableType)0, (Rarity)2, (int?)null, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)null, 0, false, (int?)0, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSPhilosophersStoneDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSPhilosophersStoneDef))]
		[UsedImplicitly]
		[ExhibitInfo(WeighterType = typeof(StSPhilosophersStoneWeighter))]
		public sealed class StSPhilosophersStone : ShiningExhibit
		{
			private class StSPhilosophersStoneWeighter : IExhibitWeighter
			{
				public float WeightFor(Type type, GameRunController gameRun)
				{
					if (gameRun.CurrentStage.Level > 2 || gameRun.Player.HasExhibit<StSBustedCrownDef.StSBustedCrown>() || gameRun.Player.HasExhibit<StSCursedKeyDef.StSCursedKey>() || gameRun.Player.HasExhibit<StSEctoplasmDef.StSEctoplasm>() || gameRun.Player.HasExhibit<StSPhilosophersStone>() || gameRun.Player.HasExhibit<StSRunicDomeDef.StSRunicDome>() || gameRun.Player.HasExhibit<StSVelvetChokerDef.StSVelvetChoker>())
					{
						return 0f;
					}
					return 1f;
				}
			}

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

			private IEnumerable<BattleAction> OnBattleStarted(GameEventArgs args)
			{
				((Exhibit)this).NotifyActivating();
				foreach (EnemyUnit enemyUnit in ((Exhibit)this).Battle.AllAliveEnemies)
				{
					yield return (BattleAction)(object)new ApplyStatusEffectAction<Firepower>((Unit)(object)enemyUnit, (int?)((Exhibit)this).Value1, (int?)null, (int?)null, (int?)null, 0.2f, true);
				}
			}
		}

		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("StSPhilosophersStone");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, false, false, false, (AppearanceType)0, "", (ExhibitLosableType)2, (Rarity)3, (int?)1, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)(ManaColor)4, 2, false, (int?)null, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSRunicDomeDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSRunicDomeDef))]
		[UsedImplicitly]
		[ExhibitInfo(WeighterType = typeof(StSRunicDomeWeighter))]
		public sealed class StSRunicDome : ShiningExhibit
		{
			private class StSRunicDomeWeighter : IExhibitWeighter
			{
				public float WeightFor(Type type, GameRunController gameRun)
				{
					if (gameRun.CurrentStage.Level > 2 || gameRun.Player.HasExhibit<StSBustedCrownDef.StSBustedCrown>() || gameRun.Player.HasExhibit<StSCursedKeyDef.StSCursedKey>() || gameRun.Player.HasExhibit<StSEctoplasmDef.StSEctoplasm>() || gameRun.Player.HasExhibit<StSPhilosophersStoneDef.StSPhilosophersStone>() || gameRun.Player.HasExhibit<StSRunicDome>() || gameRun.Player.HasExhibit<StSVelvetChokerDef.StSVelvetChoker>())
					{
						return 0f;
					}
					return 1f;
				}
			}

			private bool Hidden { get; set; }

			protected override void OnEnterBattle()
			{
				((Exhibit)this).HandleBattleEvent<GameEventArgs>(((Exhibit)this).Battle.BattleStarted, (GameEventHandler<GameEventArgs>)OnBattleStarted);
			}

			private void OnBattleStarted(GameEventArgs args)
			{
				if (!Hidden)
				{
					Hidden = true;
					BattleController battle = ((Exhibit)this).Battle;
					int hideEnemyIntentionLevel = battle.HideEnemyIntentionLevel;
					battle.HideEnemyIntentionLevel = hideEnemyIntentionLevel + 1;
				}
			}

			protected override void OnLeaveBattle()
			{
				if (!Hidden)
				{
					return;
				}
				Hidden = false;
				if (Singleton<GameMaster>.Instance.CurrentGameRun.Battle != null)
				{
					BattleController battle = Singleton<GameMaster>.Instance.CurrentGameRun.Battle;
					int hideEnemyIntentionLevel = battle.HideEnemyIntentionLevel;
					battle.HideEnemyIntentionLevel = hideEnemyIntentionLevel - 1;
					if (!Singleton<GameMaster>.Instance.CurrentGameRun.Battle.HideEnemyIntention)
					{
						Singleton<GameMaster>.Instance.CurrentGameRun.Battle.RevealHiddenIntentions();
					}
				}
			}

			protected override void OnRemoved(PlayerUnit player)
			{
				if (!Hidden)
				{
					return;
				}
				Hidden = false;
				if (Singleton<GameMaster>.Instance.CurrentGameRun.Battle != null)
				{
					BattleController battle = Singleton<GameMaster>.Instance.CurrentGameRun.Battle;
					int hideEnemyIntentionLevel = battle.HideEnemyIntentionLevel;
					battle.HideEnemyIntentionLevel = hideEnemyIntentionLevel - 1;
					if (!Singleton<GameMaster>.Instance.CurrentGameRun.Battle.HideEnemyIntention)
					{
						Singleton<GameMaster>.Instance.CurrentGameRun.Battle.RevealHiddenIntentions();
					}
				}
			}
		}

		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("StSRunicDome");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, false, false, false, (AppearanceType)0, "", (ExhibitLosableType)2, (Rarity)3, (int?)null, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)(ManaColor)2, 2, false, (int?)null, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSRunicPyramidDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSRunicPyramidDef))]
		[UsedImplicitly]
		public sealed class StSRunicPyramid : Exhibit
		{
			protected override void OnEnterBattle()
			{
				((Exhibit)this).ReactBattleEvent<CardMovingEventArgs>(((Exhibit)this).Battle.CardMoving, (EventSequencedReactor<CardMovingEventArgs>)OnCardMoving);
			}

			private IEnumerable<BattleAction> OnCardMoving(CardMovingEventArgs args)
			{
				if ((int)((GameEventArgs)args).Cause == 13 && (int)args.Card.CardType != 8 && (int)args.Card.CardType != 7)
				{
					((GameEventArgs)args).CancelBy((GameEntity)(object)this);
				}
				yield break;
			}
		}

		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("StSRunicPyramid");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, true, false, false, (AppearanceType)0, "", (ExhibitLosableType)0, (Rarity)2, (int?)null, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)null, 0, false, (int?)0, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSSacredBarkDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSSacredBarkDef))]
		[UsedImplicitly]
		public sealed class StSSacredBark : Exhibit
		{
			protected override void OnEnterBattle()
			{
				((Exhibit)this).ReactBattleEvent<GameEventArgs>(((Exhibit)this).Battle.BattleStarted, (EventSequencedReactor<GameEventArgs>)OnBattleStarted);
				((Exhibit)this).ReactBattleEvent<CardsAddingToDrawZoneEventArgs>(((Exhibit)this).Battle.CardsAddedToDrawZone, (EventSequencedReactor<CardsAddingToDrawZoneEventArgs>)OnCardsAddedToDrawZone);
				((Exhibit)this).ReactBattleEvent<CardsEventArgs>(((Exhibit)this).Battle.CardsAddedToHand, (EventSequencedReactor<CardsEventArgs>)OnAddCard);
				((Exhibit)this).ReactBattleEvent<CardsEventArgs>(((Exhibit)this).Battle.CardsAddedToDiscard, (EventSequencedReactor<CardsEventArgs>)OnAddCard);
				((Exhibit)this).ReactBattleEvent<CardsEventArgs>(((Exhibit)this).Battle.CardsAddedToExile, (EventSequencedReactor<CardsEventArgs>)OnAddCard);
			}

			private IEnumerable<BattleAction> OnBattleStarted(GameEventArgs args)
			{
				foreach (Card card in ((Exhibit)this).Battle.EnumerateAllCards())
				{
					if ((int)card.CardType == 6)
					{
						if (card.Config.Damage.HasValue && card.RawDamage > 0)
						{
							card.DeltaDamage += card.RawDamage * (((Exhibit)this).Value1 / 100);
						}
						if (card.Config.Block.HasValue && card.RawBlock > 0)
						{
							card.DeltaBlock += card.RawBlock * (((Exhibit)this).Value1 / 100);
						}
						if (card.Config.Shield.HasValue && card.RawShield > 0)
						{
							card.DeltaShield += card.RawShield * (((Exhibit)this).Value1 / 100);
						}
						if (card.Config.Value1.HasValue && card.ConfigValue1 > 0)
						{
							card.DeltaValue1 += card.ConfigValue1 * (((Exhibit)this).Value1 / 100);
						}
						if (card.Config.Value2.HasValue && card.ConfigValue2 > 0)
						{
							card.DeltaValue2 += card.ConfigValue2 * (((Exhibit)this).Value1 / 100);
						}
					}
				}
				yield break;
			}

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

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

			private BattleAction ToolCardModify(IEnumerable<Card> cards)
			{
				//IL_0017: Unknown result type (might be due to invalid IL or missing references)
				//IL_001d: Invalid comparison between Unknown and I4
				foreach (Card card in cards)
				{
					if ((int)card.CardType == 6)
					{
						if (card.Config.Damage.HasValue && card.RawDamage > 0)
						{
							card.DeltaDamage += card.RawDamage * (((Exhibit)this).Value1 / 100);
						}
						if (card.Config.Block.HasValue && card.RawBlock > 0)
						{
							card.DeltaBlock += card.RawBlock * (((Exhibit)this).Value1 / 100);
						}
						if (card.Config.Shield.HasValue && card.RawShield > 0)
						{
							card.DeltaShield += card.RawShield * (((Exhibit)this).Value1 / 100);
						}
						if (card.Config.Value1.HasValue && card.ConfigValue1 > 0)
						{
							card.DeltaValue1 += card.ConfigValue1 * (((Exhibit)this).Value1 / 100);
						}
						if (card.Config.Value2.HasValue && card.ConfigValue2 > 0)
						{
							card.DeltaValue2 += card.ConfigValue2 * (((Exhibit)this).Value1 / 100);
						}
					}
				}
				return null;
			}
		}

		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("StSSacredBark");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, true, false, false, (AppearanceType)0, "", (ExhibitLosableType)0, (Rarity)1, (int?)100, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)null, 0, false, (int?)0, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSSneckoEyeDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSSneckoEyeDef))]
		[UsedImplicitly]
		public sealed class StSSneckoEye : ShiningExhibit
		{
			private int[] _costs;

			protected override void OnAdded(PlayerUnit player)
			{
				GameRunController gameRun = ((GameEntity)this).GameRun;
				gameRun.DrawCardCount += ((Exhibit)this).Value1;
			}

			protected override void OnRemoved(PlayerUnit player)
			{
				GameRunController gameRun = ((GameEntity)this).GameRun;
				gameRun.DrawCardCount -= ((Exhibit)this).Value1;
			}

			protected override void OnEnterBattle()
			{
				((Exhibit)this).ReactBattleEvent<CardEventArgs>(((Exhibit)this).Battle.CardDrawn, (EventSequencedReactor<CardEventArgs>)OnCardDrawn);
			}

			private IEnumerable<BattleAction> OnCardDrawn(CardEventArgs args)
			{
				Card card = args.Card;
				StSSneckoEye stSSneckoEye = this;
				UniqueRandomPool<int> obj = new UniqueRandomPool<int>(false);
				obj.Add(0, 1f);
				obj.Add(1, 1f);
				obj.Add(2, 1f);
				obj.Add(3, 1f);
				obj.Add(4, 0.9f);
				obj.Add(5, 0.8f);
				stSSneckoEye._costs = obj.SampleMany(((GameEntity)this).GameRun.BattleRng, 6, true);
				for (int i = 0; i < 6; i++)
				{
					if (_costs[i] == 0)
					{
						card.SetBaseCost(ManaGroup.Anys(i));
					}
				}
				yield break;
			}
		}

		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("StSSneckoEye");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_0042: 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_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Expected O, but got Unknown
			int num = BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig));
			int? num2 = 2;
			ManaGroup value = default(ManaGroup);
			((ManaGroup)(ref value)).Any = 1;
			return new ExhibitConfig(num, "", 10, false, false, false, false, (AppearanceType)0, "", (ExhibitLosableType)2, (Rarity)3, num2, (int?)null, (int?)null, (ManaGroup?)value, (ManaColor?)null, (ManaColor?)null, 0, false, (int?)null, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSSneckoSkullDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSSneckoSkullDef))]
		[UsedImplicitly]
		[ExhibitInfo(WeighterType = typeof(StSSneckoSkullWeighter))]
		public sealed class StSSneckoSkull : Exhibit
		{
			private class StSSneckoSkullWeighter : IExhibitWeighter
			{
				public float WeightFor(Type type, GameRunController gameRun)
				{
					if (gameRun.BaseDeck.Any((Card card) => card.IsUpgraded ? card.Config.UpgradedRelativeEffects.Contains("Poison") : card.Config.RelativeEffects.Contains("Poison")))
					{
						return 1f;
					}
					return 0f;
				}
			}

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

			private IEnumerable<BattleAction> OnEnemyStatusEffectAdding(StatusEffectApplyEventArgs args)
			{
				if (args.Effect is Poison)
				{
					((Exhibit)this).NotifyActivating();
					args.Effect.SetInitLevel(args.Effect.Level + ((Exhibit)this).Value1);
				}
				yield break;
			}

			private void OnEnemySpawned(UnitEventArgs args)
			{
				((Exhibit)this).ReactBattleEvent<StatusEffectApplyEventArgs>(args.Unit.StatusEffectAdding, (EventSequencedReactor<StatusEffectApplyEventArgs>)OnEnemyStatusEffectAdding);
			}
		}

		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("StSSneckoSkull");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, true, false, false, (AppearanceType)0, "", (ExhibitLosableType)0, (Rarity)0, (int?)1, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)null, 0, false, (int?)0, (Keyword)0, (IReadOnlyList<string>)new List<string> { "Poison" }, (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSSozuDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSSozuDef))]
		[UsedImplicitly]
		public sealed class StSSozu : Exhibit
		{
			protected override void OnEnterBattle()
			{
				((Exhibit)this).ReactBattleEvent<GameEventArgs>(((Exhibit)this).Battle.BattleStarted, (EventSequencedReactor<GameEventArgs>)OnBattleStarted);
				((Exhibit)this).ReactBattleEvent<UnitEventArgs>(((Unit)((Exhibit)this).Owner).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnStarted);
				((Exhibit)this).ReactBattleEvent<CardsAddingToDrawZoneEventArgs>(((Exhibit)this).Battle.CardsAddedToDrawZone, (EventSequencedReactor<CardsAddingToDrawZoneEventArgs>)OnCardsAddedToDrawZone);
				((Exhibit)this).ReactBattleEvent<CardsEventArgs>(((Exhibit)this).Battle.CardsAddedToHand, (EventSequencedReactor<CardsEventArgs>)OnAddCard);
				((Exhibit)this).ReactBattleEvent<CardsEventArgs>(((Exhibit)this).Battle.CardsAddedToDiscard, (EventSequencedReactor<CardsEventArgs>)OnAddCard);
				((Exhibit)this).ReactBattleEvent<CardsEventArgs>(((Exhibit)this).Battle.CardsAddedToExile, (EventSequencedReactor<CardsEventArgs>)OnAddCard);
			}

			private IEnumerable<BattleAction> OnBattleStarted(GameEventArgs args)
			{
				foreach (Card card in ((Exhibit)this).Battle.EnumerateAllCards())
				{
					if ((int)card.CardType == 6)
					{
						((GameEntity)card).NotifyChanged();
						card.IsForbidden = true;
					}
				}
				yield break;
			}

			private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args)
			{
				((Exhibit)this).NotifyActivating();
				ManaGroup manaGroup = ManaGroup.Single(CollectionsExtensions.Sample<ManaColor>((IEnumerable<ManaColor>)ManaColors.Colors, ((GameEntity)this).GameRun.BattleRng));
				yield return (BattleAction)new GainManaAction(manaGroup);
			}

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

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

			private BattleAction ToolCardModify(IEnumerable<Card> cards)
			{
				//IL_0014: Unknown result type (might be due to invalid IL or missing references)
				//IL_001a: Invalid comparison between Unknown and I4
				foreach (Card card in cards)
				{
					if ((int)card.CardType == 6)
					{
						((GameEntity)card).NotifyChanged();
						card.IsForbidden = true;
					}
				}
				return null;
			}
		}

		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("StSSozu");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, true, false, false, (AppearanceType)1, "", (ExhibitLosableType)2, (Rarity)0, (int?)null, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)null, 0, false, (int?)0, (Keyword)32768, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSSsserpentHeadDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSSsserpentHeadDef))]
		[UsedImplicitly]
		[ExhibitInfo(ExpireStageLevel = 3, ExpireStationLevel = 4)]
		public sealed class StSSsserpentHead : Exhibit
		{
			protected override void OnAdded(PlayerUnit player)
			{
				((Exhibit)this).HandleGameRunEvent<StationEventArgs>(((GameEntity)this).GameRun.StationEntered, (GameEventHandler<StationEventArgs>)delegate(StationEventArgs args)
				{
					//IL_0007: Unknown result type (might be due to invalid IL or missing references)
					//IL_000d: Invalid comparison between Unknown and I4
					//IL_0028: Unknown result type (might be due to invalid IL or missing references)
					//IL_002d: Unknown result type (might be due to invalid IL or missing references)
					//IL_0035: Unknown result type (might be due to invalid IL or missing references)
					//IL_0042: Expected O, but got Unknown
					if ((int)args.Station.Type == 6)
					{
						((Exhibit)this).NotifyActivating();
						((GameEntity)this).GameRun.GainMoney(((Exhibit)this).Value1, true, new VisualSourceData
						{
							SourceType = (VisualSourceType)7,
							Source = (GameEntity)(object)this
						});
					}
				});
			}
		}

		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("StSSsserpentHead");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null);
			val.main = func("");
			return val;
		}

		public override ExhibitConfig MakeConfig()
		{
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Expected O, but got Unknown
			return new ExhibitConfig(BepinexPlugin.sequenceTable.Next(typeof(ExhibitConfig)), "", 10, false, true, false, false, (AppearanceType)2, "", (ExhibitLosableType)0, (Rarity)1, (int?)50, (int?)null, (int?)null, (ManaGroup?)null, (ManaColor?)null, (ManaColor?)null, 0, false, (int?)0, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>());
		}
	}
	public sealed class StSStrangeSpoonDef : ExhibitTemplate
	{
		[EntityLogic(typeof(StSStrangeSpoonDef))]
		[UsedImplicitly]
		public sealed class StSStrangeSpoon : Exhibit
		{
			private Card card = null;

			protected override void OnEnterBattle()
			{
				((Exhibit)this).ReactBattleEvent<CardUsingEventArgs>(((Exhibit)this).Battle.CardUsing, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsing);
				((Exhibit)this).ReactBattleEvent<CardEventArgs>(((Exhibit)this).Battle.CardExiling, (EventSequencedReactor<CardEventArgs>)OnCardExiling);
			}

			private IEnumerable<BattleAction> OnCardUsing(CardUsingEventArgs args)
			{
				if (args.Card.IsExile && (int)args.Card.CardType != 7 && (int)args.Card.CardType != 8)
				{
					card = args.Card;
				}
				yield break;
			}

			private IEnumerable<BattleAction> OnCardExiling(CardEventArgs args)
			{
				if (args.Card == card)
				{
					if (((GameEntity)this).GameRun.BattleRng.NextInt(0, 1) == 0)
					{
						((Exhibit)this).NotifyActivating();
						((GameEventArgs)args).CancelBy((GameEntity)(object)this);
						yield return (BattleAction)new MoveCardAction(args.Card, (CardZone)3);
					}
					card = null;
				}
			}

			protected override void OnLeaveBattle()
			{
				card = null;
			}
		}

		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("StSStrangeSpoon");
		}

		public override LocalizationOption LoadLocalization()
		{
			return (LocalizationOption)(object)BepinexPlugin.exhibitLoc.AddEntity((EntityDefinition)(object)this);
		}

		public override ExhibitSprites LoadSprite()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			string folder = "";
			ExhibitSprites val = new ExhibitSprites();
			Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(folder + IdContainer.op_Implicit(((EntityDefinition)this).GetId()) + s + ".png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (V