Decompiled source of StS Stuff Mod v1.2.7
StSStuffMod.dll
Decompiled 3 days ago
The result has been truncated due to the large size, download it to view full contents!
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