Decompiled source of Aya Shameimaru v0.3.14
AyaShameimaru.dll
Decompiled 2 months 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.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using AddWatermark; using AyaShameimaru.Cards; using AyaShameimaru.EnemyUnits; using AyaShameimaru.Exhibits; using AyaShameimaru.PlayerUnits; using AyaShameimaru.Stages; using AyaShameimaru.StatusEffects; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using Cysharp.Threading.Tasks; using DG.Tweening; using DG.Tweening.Core; using DG.Tweening.Plugins.Options; 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.Helpers; using LBoL.Core.Intentions; using LBoL.Core.Randoms; using LBoL.Core.Stations; using LBoL.Core.StatusEffects; using LBoL.Core.Units; using LBoL.EntityLib.Adventures.Common; using LBoL.EntityLib.Adventures.FirstPlace; using LBoL.EntityLib.Adventures.Shared23; using LBoL.EntityLib.Adventures.Stage3; using LBoL.EntityLib.Cards.Enemy; using LBoL.EntityLib.Cards.Neutral.NoColor; using LBoL.EntityLib.EnemyUnits.Character; using LBoL.EntityLib.EnemyUnits.Opponent; using LBoL.EntityLib.Exhibits; using LBoL.EntityLib.Exhibits.Shining; using LBoL.EntityLib.StatusEffects.Basic; using LBoL.EntityLib.StatusEffects.Enemy; using LBoL.EntityLib.StatusEffects.Enemy.SeijaItems; using LBoL.EntityLib.StatusEffects.Reimu; using LBoL.Presentation; using LBoL.Presentation.UI; using LBoL.Presentation.UI.Panels; using LBoL.Presentation.Units; using LBoLEntitySideloader; using LBoLEntitySideloader.Attributes; using LBoLEntitySideloader.Entities; using LBoLEntitySideloader.ExtraFunc; using LBoLEntitySideloader.Resource; using LBoLEntitySideloader.Utils; using UnityEngine; using UnityEngine.Experimental.Rendering; using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; [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("AyaShameimaru")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("AyaShameimaru")] [assembly: AssemblyTitle("AyaShameimaru")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace AyaShameimaru { [BepInPlugin("intoxicatedkid.ayashameimaru", "Aya Shameimaru", "0.3.14")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInProcess("LBoL.exe")] public class BepinexPlugin : BaseUnityPlugin { private static readonly Harmony harmony = PluginInfo.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.ayashameimaru", ""); 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 playerUnitLoc = new BatchLocalization((IResourceSource)(object)directorySource, typeof(PlayerUnitTemplate), false); internal static BatchLocalization ultimateSkillLoc = new BatchLocalization((IResourceSource)(object)directorySource, typeof(UltimateSkillTemplate), 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); public static ConfigEntry<bool> AyaPhantasmMode; public static ConfigEntry<string> AyaSave; public static int LastInput = 0; public static bool NormalAyaPlayerUnit => AyaSave.Value.Contains("NormalAyaPlayerUnit") ? true : false; public static bool HardAyaPlayerUnit => AyaSave.Value.Contains("HardAyaPlayerUnit") ? true : false; public static bool LunaticAyaPlayerUnit => AyaSave.Value.Contains("LunaticAyaPlayerUnit") ? true : false; public static bool PhantasmAyaPlayerUnit => AyaSave.Value.Contains("PhantasmAyaPlayerUnit") ? true : false; private void Awake() { log = ((BaseUnityPlugin)this).Logger; Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject); ((Object)((Component)this).gameObject).hideFlags = (HideFlags)61; AyaPhantasmMode = ((BaseUnityPlugin)this).Config.Bind<bool>("Phantasm Mode", "Phantasm Mode", false, "Weakens many cards and exhibits."); AyaSave = ((BaseUnityPlugin)this).Config.Bind<string>("Records", "Records", "", "May cause an error if edited manually."); EntityManager.RegisterSelf(); harmony.PatchAll(); if (Chainloader.PluginInfos.ContainsKey("neo.lbol.tools.watermark")) { WatermarkWrapper.ActivateWatermark(); } AyaBackgrounds.AddAyaBackgrounds(); cardLoc.DiscoverAndLoadLocFiles("Card"); enemyUnitLoc.DiscoverAndLoadLocFiles("EnemyUnit"); exhibitLoc.DiscoverAndLoadLocFiles("Exhibit"); playerUnitLoc.DiscoverAndLoadLocFiles("PlayerUnit"); ultimateSkillLoc.DiscoverAndLoadLocFiles("UltimateSkill"); statusEffectLoc.DiscoverAndLoadLocFiles("StatusEffect"); unitModelLoc.DiscoverAndLoadLocFiles("UnitModel"); } private void OnDestroy() { if (harmony != null) { harmony.UnpatchSelf(); } } private void Update() { if (UnityInput.Current.anyKeyDown) { LastInput = 0; } } } public static class PluginInfo { public const string GUID = "intoxicatedkid.ayashameimaru"; public const string Name = "Aya Shameimaru"; public const string version = "0.3.14"; public static readonly Harmony harmony = new Harmony("intoxicatedkid.ayashameimaru"); } internal class WatermarkWrapper { [MethodImpl(MethodImplOptions.NoInlining)] internal static void ActivateWatermark() { API.ActivateWatermark(); } } } namespace AyaShameimaru.StatusEffects { public sealed class AyaAccelerationSeDef : StatusEffectTemplate { [EntityLogic(typeof(AyaAccelerationSeDef))] public sealed class AyaAccelerationSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).HandleOwnerEvent<StatusEffectApplyEventArgs>(((StatusEffect)this).Owner.StatusEffectAdded, (GameEventHandler<StatusEffectApplyEventArgs>)delegate { int count3 = MathExtensions.RoundToInt(Math.Truncate((float)((StatusEffect)this).Level / 4f)); ((StatusEffect)this).Count = count3; }); ((StatusEffect)this).HandleOwnerEvent<StatusEffectEventArgs>(((StatusEffect)this).Owner.StatusEffectChanged, (GameEventHandler<StatusEffectEventArgs>)delegate { int count2 = MathExtensions.RoundToInt(Math.Truncate((float)((StatusEffect)this).Level / 4f)); ((StatusEffect)this).Count = count2; }); ((StatusEffect)this).HandleOwnerEvent<StatusEffectEventArgs>(((StatusEffect)this).Owner.StatusEffectRemoved, (GameEventHandler<StatusEffectEventArgs>)delegate { int count = MathExtensions.RoundToInt(Math.Truncate((float)((StatusEffect)this).Level / 4f)); ((StatusEffect)this).Count = count; }); ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnEnding, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnEnding); ((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(((StatusEffect)this).Owner.DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnOwnerDamageReceived); } private IEnumerable<BattleAction> OnOwnerTurnEnding(GameEventArgs args) { foreach (BattleAction item in Activate()) { yield return item; } } public IEnumerable<BattleAction> Activate() { if (!((StatusEffect)this).Battle.BattleShouldEnd) { Graze statusEffect = ((StatusEffect)this).Owner.GetStatusEffect<Graze>(); int num = ((statusEffect != null) ? ((StatusEffect)statusEffect).Level : 0); int num2 = MathExtensions.RoundToInt(Math.Truncate((float)((StatusEffect)this).Level / 4f)); if (num < num2) { yield return (BattleAction)(object)new ApplyStatusEffectAction<Graze>(((StatusEffect)this).Owner, (int?)(num2 - num), (int?)null, (int?)null, (int?)null, 0f, true); } } } private IEnumerable<BattleAction> OnOwnerDamageReceived(DamageEventArgs args) { DamageInfo damageInfo = args.DamageInfo; if (((DamageInfo)(ref damageInfo)).IsGrazed && !((Unit)((StatusEffect)this).Battle.Player).HasStatusEffect<AyaInstantShotJournalistSeDef.AyaInstantShotJournalistSe>()) { ((StatusEffect)this).Level = Math.Max(((StatusEffect)this).Level - 2, 0); if (((StatusEffect)this).Level <= 0) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0f); } } } public OpposeResult Oppose(AyaDecelerationSeDef.AyaDecelerationSe other) { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) if (((StatusEffect)this).Level < ((StatusEffect)other).Level) { ((StatusEffect)other).Level = ((StatusEffect)other).Level - ((StatusEffect)this).Level; return (OpposeResult)1; } if (((StatusEffect)this).Level == ((StatusEffect)other).Level) { return (OpposeResult)2; } ((StatusEffect)this).Level = ((StatusEffect)this).Level - ((StatusEffect)other).Level; return (OpposeResult)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("AyaAccelerationSe"); } public override LocalizationOption LoadLocalization() { return (LocalizationOption)(object)BepinexPlugin.statusEffectLoc.AddEntity((EntityDefinition)(object)this); } public override Sprite LoadSprite() { return ResourceLoader.LoadSprite("Resources.AyaAccelerationSe.png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null); } public override StatusEffectConfig MakeConfig() { //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Expected O, but got Unknown return new StatusEffectConfig(BepinexPlugin.sequenceTable.Next(typeof(StatusEffectConfig)), "", 0, (StatusEffectType)0, false, true, (int?)null, true, (StackType?)(StackType)0, false, (StackType?)(StackType)0, (DurationDecreaseTiming)0, true, (StackType?)(StackType)4, (StackType?)(StackType)3, false, (Keyword)0, (IReadOnlyList<string>)new List<string> { "Graze" }, "Graze", "Default", "Graze"); } } public sealed class AyaDecelerationSeDef : StatusEffectTemplate { [EntityLogic(typeof(AyaDecelerationSeDef))] public sealed class AyaDecelerationSe : StatusEffect { public OpposeResult Oppose(AyaAccelerationSeDef.AyaAccelerationSe other) { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) if (((StatusEffect)this).Level < ((StatusEffect)other).Level) { ((StatusEffect)other).Level = ((StatusEffect)other).Level - ((StatusEffect)this).Level; return (OpposeResult)1; } if (((StatusEffect)this).Level == ((StatusEffect)other).Level) { return (OpposeResult)2; } ((StatusEffect)this).Level = ((StatusEffect)this).Level - ((StatusEffect)other).Level; return (OpposeResult)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("AyaDecelerationSe"); } public override LocalizationOption LoadLocalization() { return (LocalizationOption)(object)BepinexPlugin.statusEffectLoc.AddEntity((EntityDefinition)(object)this); } public override Sprite LoadSprite() { return ResourceLoader.LoadSprite("Resources.AyaDecelerationSe.png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null); } public override StatusEffectConfig MakeConfig() { //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Expected O, but got Unknown return new StatusEffectConfig(BepinexPlugin.sequenceTable.Next(typeof(StatusEffectConfig)), "", 1, (StatusEffectType)0, false, true, (int?)null, true, (StackType?)(StackType)0, false, (StackType?)(StackType)0, (DurationDecreaseTiming)0, false, (StackType?)(StackType)3, (StackType?)(StackType)3, false, (Keyword)0, (IReadOnlyList<string>)new List<string>(), "Default", "Default", "Default"); } } public sealed class AyaPassiveSeDef : StatusEffectTemplate { [EntityLogic(typeof(AyaPassiveSeDef))] public sealed class AyaPassiveSe : StatusEffect { [HarmonyPatch(typeof(Card), "LocalizeProperty")] private class Card_LocalizeProperty_Patch { private static bool Prefix(Card __instance, ref string key, ref bool decorated, ref bool required, ref string __result) { if (((GameEntity)__instance).Id == "AyaNews" && key == "Description" && Singleton<GameMaster>.Instance.CurrentGameRun != null && (Singleton<GameMaster>.Instance.CurrentGameRun.Player is AyaPlayerUnitDef.AyaPlayerUnit || Singleton<GameMaster>.Instance.CurrentGameRun.Player.HasExhibit<AyaGDef.AyaG>() || Singleton<GameMaster>.Instance.CurrentGameRun.Player.HasExhibit<AyaRDef.AyaR>())) { __result = TypeFactory<Card>.LocalizeProperty("AyaNewsSpecial", "AyaNewsDescription", decorated, required); return false; } return true; } } public int Value1 => 12; public int Value2 => 1; protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<StatusEffectEventArgs>(((Unit)((StatusEffect)this).Battle.Player).StatusEffectRemoving, (EventSequencedReactor<StatusEffectEventArgs>)OnPlayerStatusEffectRemoving); } private IEnumerable<BattleAction> OnPlayerStatusEffectRemoving(StatusEffectEventArgs args) { if (args.Effect == this) { ((GameEventArgs)args).ForceCancelBecause((CancelCause)4096); } 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("AyaPassiveSe"); } public override LocalizationOption LoadLocalization() { return (LocalizationOption)(object)BepinexPlugin.statusEffectLoc.AddEntity((EntityDefinition)(object)this); } public override Sprite LoadSprite() { return ResourceLoader.LoadSprite("Resources.AyaPassiveSe.png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null); } public override StatusEffectConfig MakeConfig() { //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Expected O, but got Unknown return new StatusEffectConfig(BepinexPlugin.sequenceTable.Next(typeof(StatusEffectConfig)), "", -2, (StatusEffectType)2, false, true, (int?)null, false, (StackType?)(StackType)0, false, (StackType?)(StackType)0, (DurationDecreaseTiming)0, false, (StackType?)(StackType)3, (StackType?)(StackType)3, false, (Keyword)8388608, (IReadOnlyList<string>)new List<string> { "LockedOn" }, "Default", "Default", "Default"); } } public sealed class AyaPerfectGrazeSeDef : StatusEffectTemplate { [EntityLogic(typeof(AyaPerfectGrazeSeDef))] public sealed class AyaPerfectGrazeSe : StatusEffect { [HarmonyPatch(typeof(Unit), "MeasureDamage")] private class Unit_MeasureDamage_Patch { private static bool Prefix(Unit __instance, ref DamageInfo info, ref DamageInfo __result) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Invalid comparison between Unknown and I4 //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) if (__instance.HasStatusEffect<AyaPerfectGrazeSe>() && (int)((DamageInfo)(ref info)).DamageType == 2 && MathExtensions.Round(((DamageInfo)(ref info)).Damage, MidpointRounding.AwayFromZero) > 0f && ((DamageInfo)(ref info)).IsAccuracy) { DamageInfo val = new DamageInfo(0f, ((DamageInfo)(ref info)).DamageType, true, ((DamageInfo)(ref info)).IsAccuracy, false); val = ((DamageInfo)(ref val)).BlockBy(__instance.Block); __result = ((DamageInfo)(ref val)).ShieldBy(__instance.Shield); return false; } return true; } } [HarmonyPatch(typeof(Unit), "TakeDamage")] private class Unit_TakeDamage_Patch { private static int CheckGraze(Unit unit) { return unit.HasStatusEffect<Graze>() ? 2 : (-1); } private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator generator) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Expected O, but got Unknown //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Expected O, but got Unknown return new CodeMatcher(instructions, generator).MatchForward(true, (CodeMatch[])(object)new CodeMatch[5] { new CodeMatch((OpCode?)OpCodes.Ldstr, (object)"Taking grazed accurary DamageInfo {0}.", (string)null), CodeMatch.op_Implicit(OpCodes.Ldarg_1), CodeMatch.op_Implicit(OpCodes.Box), CodeMatch.op_Implicit(OpCodes.Call), CodeMatch.op_Implicit(OpCodes.Call) }).Set(OpCodes.Pop, (object)null).MatchForward(true, (CodeMatch[])(object)new CodeMatch[3] { CodeMatch.op_Implicit(OpCodes.Ldarga_S), new CodeMatch((OpCode?)OpCodes.Call, (object)AccessTools.PropertyGetter(typeof(DamageInfo), "DamageType"), (string)null), CodeMatch.op_Implicit(OpCodes.Ldc_I4_2) }) .Set(OpCodes.Call, (object)AccessTools.Method(typeof(Unit_TakeDamage_Patch), "CheckGraze", (Type[])null, (Type[])null)) .Insert((CodeInstruction[])(object)new CodeInstruction[1] { new CodeInstruction(OpCodes.Ldarg_0, (object)null) }) .InstructionEnumeration(); } private static void Postfix(Unit __instance, ref DamageInfo info) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Invalid comparison between Unknown and I4 if ((int)((DamageInfo)(ref info)).DamageType == 2 && __instance.HasStatusEffect<AyaPerfectGrazeSe>() && ((DamageInfo)(ref info)).IsGrazed && ((DamageInfo)(ref info)).IsAccuracy) { __instance.GetStatusEffect<AyaPerfectGrazeSe>().Activate(); } } } public void Activate() { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown int level = ((StatusEffect)this).Level; ((StatusEffect)this).Level = level - 1; if (((StatusEffect)this).Level > 0) { ((StatusEffect)this).NotifyActivating(); } else { ((GameEntity)this).React(Reactor.op_Implicit((BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f))); } } } 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("AyaPerfectGrazeSe"); } public override LocalizationOption LoadLocalization() { return (LocalizationOption)(object)BepinexPlugin.statusEffectLoc.AddEntity((EntityDefinition)(object)this); } public override Sprite LoadSprite() { return ResourceLoader.LoadSprite("Resources.AyaPerfectGrazeSe.png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null); } public override StatusEffectConfig MakeConfig() { //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Expected O, but got Unknown return new StatusEffectConfig(BepinexPlugin.sequenceTable.Next(typeof(StatusEffectConfig)), "", 0, (StatusEffectType)0, false, true, (int?)null, true, (StackType?)(StackType)0, false, (StackType?)(StackType)0, (DurationDecreaseTiming)0, false, (StackType?)(StackType)3, (StackType?)(StackType)3, false, (Keyword)256, (IReadOnlyList<string>)new List<string>(), "Graze", "Default", "Graze"); } } } namespace AyaShameimaru.Stages { public sealed class LongExtraStageDef : StageTemplate { [EntityLogic(typeof(LongExtraStageDef))] public sealed class LongExtraStage : Stage { public LongExtraStage() { ((Stage)this).Level = 666; ((Stage)this).CardUpgradedChance = 1f; UniqueRandomPool<string> obj = new UniqueRandomPool<string>(true); obj.Add("31", 1f); obj.Add("32", 1f); obj.Add("33", 1f); ((Stage)this).EnemyPoolAct1 = obj; UniqueRandomPool<string> obj2 = new UniqueRandomPool<string>(true); obj2.Add("34", 1f); obj2.Add("35", 1f); obj2.Add("36", 1f); ((Stage)this).EnemyPoolAct2 = obj2; UniqueRandomPool<string> obj3 = new UniqueRandomPool<string>(true); obj3.Add("37", 1f); obj3.Add("38", 1f); obj3.Add("39", 1f); ((Stage)this).EnemyPoolAct3 = obj3; UniqueRandomPool<string> obj4 = new UniqueRandomPool<string>(true); obj4.Add("37", 1f); obj4.Add("38", 1f); obj4.Add("39", 1f); ((Stage)this).EliteEnemyPool = obj4; RepeatableRandomPool<string> obj5 = new RepeatableRandomPool<string>(); obj5.Add("LongBossAyaEnemyGroup", 1f); ((Stage)this).BossPool = obj5; UniqueRandomPool<Type> val = new UniqueRandomPool<Type>(false); val.Add(typeof(PatchouliPhilosophy), 1f); val.Add(typeof(JunkoColorless), 1f); val.Add(typeof(ShinmyoumaruForge), 1f); val.Add(typeof(MiyoiBartender), 1f); val.Add(typeof(WatatsukiPurify), 1f); ((Stage)this).FirstAdventurePool = val; val = new UniqueRandomPool<Type>(true); val.Add(typeof(YorigamiSisters), 1f); val.Add(typeof(HatateInterview), 1f); val.Add(typeof(HinaCollect), 1f); val.Add(typeof(KogasaSpook), 1f); val.Add(typeof(KosuzuBookstore), 1f); val.Add(typeof(NarumiOfferCard), 1f); val.Add(typeof(NazrinDetect), 1f); val.Add(typeof(MedicinePoison), 1.2f); val.Add(typeof(BackgroundDancers), 1.2f); val.Add(typeof(SatoriCounseling), 1.2f); ((Stage)this).AdventurePool = val; } public override GameMap CreateMap() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Expected O, but got Unknown //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Expected O, but got Unknown //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Expected O, but got Unknown //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Expected O, but got Unknown //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Invalid comparison between Unknown and I4 int num = 24; GameMap val = new GameMap(num + 1, 1, (UiType)0, "LongBossAyaEnemyGroup"); val.Nodes[0, 0] = new MapNode(val, 0, 0, 1) { StationType = (StationType)7, FollowerList = { 0 } }; for (int i = 0; i < num - 1; i++) { StationType stationType = (StationType)1; val.Nodes[i + 1, 0] = new MapNode(val, i + 1, 0, 1) { StationType = stationType, FollowerList = { 0 } }; } val.Nodes[num, 0] = new MapNode(val, num, 0, 1) { StationType = (StationType)10 }; val.StartNode = val.Nodes[0, 0]; val.StartNode.Status = (MapNodeStatus)1; val.EndNode = val.Nodes[num, 0]; if ((int)val.EndNode.StationType == 10) { val.BossNode = val.EndNode; } return val; } } public override IdContainer GetId() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) return IdContainer.op_Implicit("LongExtraStage"); } public override StageConfig MakeConfig() { StageConfig val = ((StageTemplate)this).DefaultConfig(); val.Obj0 = "LongExtraStageBackground"; val.Obj1 = "LongExtraStageBackground"; val.Obj2 = "LongExtraStageBackground"; val.Obj3 = "LongExtraStageBackground"; val.Obj4 = "LongExtraStageBackground"; return val; } } public static class AyaBackgrounds { public const string AyaBackground = "AyaBackground"; public const string AyaBackgroundTransition = "AyaBackgroundTransition"; public const string AyaTanukiBackground = "AyaTanukiBackground"; public const string LongExtraStageBackground = "LongExtraStageBackground"; public static void AddAyaBackgrounds() { StageTemplate.AddEvironmentGameobject(StageTemplate.CreateSimpleEnvObject("AyaBackground", ResourceLoader.LoadSprite("AyaBackground.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 80, (Vector2?)null)), false, (Func<GameObject, GameObject>)delegate(GameObject self) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) Transform transform4 = self.transform; transform4.position += new Vector3(0f, 0f, -0.1f); return self; }, (string)null, (Assembly)null); StageTemplate.AddEvironmentGameobject(StageTemplate.CreateSimpleEnvObject("AyaBackgroundTransition", ResourceLoader.LoadSprite("AyaBackgroundTransition.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 100, (Vector2?)null)), false, (Func<GameObject, GameObject>)delegate(GameObject self) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) Transform transform3 = self.transform; transform3.position += new Vector3(0f, 0f, -0.2f); return self; }, (string)null, (Assembly)null); StageTemplate.AddEvironmentGameobject(StageTemplate.CreateSimpleEnvObject("AyaTanukiBackground", ResourceLoader.LoadSprite("AyaTanukiBackground.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 100, (Vector2?)null)), false, (Func<GameObject, GameObject>)delegate(GameObject self) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) Transform transform2 = self.transform; transform2.position += new Vector3(0f, 0f, -0.1f); return self; }, (string)null, (Assembly)null); StageTemplate.AddEvironmentGameobject(StageTemplate.CreateSimpleEnvObject("LongExtraStageBackground", ResourceLoader.LoadSprite("LongExtraStageBackground.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 100, (Vector2?)null)), false, (Func<GameObject, GameObject>)delegate(GameObject self) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) Transform transform = self.transform; transform.position += new Vector3(0f, 0f, -0.1f); return self; }, (string)null, (Assembly)null); } } } namespace AyaShameimaru.PlayerUnits { public sealed class AyaPlayerUnitDef : PlayerUnitTemplate { [EntityLogic(typeof(AyaPlayerUnitDef))] public sealed class AyaPlayerUnit : PlayerUnit { [HarmonyPatch(typeof(AmuletForCard), "ExileCard")] private class AmuletForCard_ExileCard_Patch { private static bool Prefix(AmuletForCard __instance, ref IEnumerable<Card> cards) { //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Expected O, but got Unknown //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Expected O, but got Unknown GameRunController currentGameRun = Singleton<GameMaster>.Instance.CurrentGameRun; if (((currentGameRun != null) ? currentGameRun.Player : null) is AyaPlayerUnit) { List<Card> list = cards.Where((Card card) => (int)card.CardType == 7 && !((GameEntity)card).DebugName.Contains("News")).ToList(); if (list.Count == 0) { return false; } if (((StatusEffect)__instance).Level < list.Count) { list.RemoveRange(((StatusEffect)__instance).Level, list.Count - ((StatusEffect)__instance).Level); } ((StatusEffect)__instance).NotifyActivating(); Singleton<GameMaster>.Instance.CurrentGameRun.Battle.React(Reactor.op_Implicit((BattleAction)new ExileManyCardAction((IEnumerable<Card>)list)), (GameEntity)(object)__instance, (ActionCause)7); ((StatusEffect)__instance).Level = ((StatusEffect)__instance).Level - list.Count; if (((StatusEffect)__instance).Level <= 0) { Singleton<GameMaster>.Instance.CurrentGameRun.Battle.React(Reactor.op_Implicit((BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)__instance, true, 0.1f)), (GameEntity)(object)__instance, (ActionCause)7); } return false; } return true; } } [HarmonyPatch(typeof(SihunYuSe), "OnOwnerTurnEnded")] private class SihunYuSe_OnOwnerTurnEnded_Patch { private static bool Prefix(SihunYuSe __instance) { if (FinalBossSequence >= 3) { return false; } return true; } } [HarmonyPatch(typeof(Stage), "GetBossCardReward")] private class Stage_GetBossCardReward_Patch { private static void Postfix(Stage __instance, StationReward __result) { if (!(Singleton<GameMaster>.Instance.CurrentGameRun.Player is AyaPlayerUnit) || !Singleton<GameMaster>.Instance.CurrentGameRun.Player.HasExhibit<AyaTanukisLeafDef.AyaTanukisLeaf>()) { return; } List<Card> list = new List<Card>(); Card momiji = (Card)(object)Library.CreateCard<AyaFriendMomijiDef.AyaFriendMomiji>(); if (!Singleton<GameMaster>.Instance.CurrentGameRun.BaseDeck.Any((Card c) => ((GameEntity)c).Id == ((GameEntity)momiji).Id)) { list.Add(momiji); } Card megumu = (Card)(object)Library.CreateCard<AyaFriendMegumuDef.AyaFriendMegumu>(); if (Singleton<GameMaster>.Instance.CurrentGameRun.BaseDeck.Any((Card c) => ((GameEntity)c).Id == ((GameEntity)momiji).Id) && !Singleton<GameMaster>.Instance.CurrentGameRun.BaseDeck.Any((Card c) => ((GameEntity)c).Id == ((GameEntity)megumu).Id)) { list.Add(megumu); } Card hatate = (Card)(object)Library.CreateCard<AyaFriendHatateDef.AyaFriendHatate>(); if (Singleton<GameMaster>.Instance.CurrentGameRun.BaseDeck.Any((Card c) => ((GameEntity)c).Id == ((GameEntity)momiji).Id) && Singleton<GameMaster>.Instance.CurrentGameRun.BaseDeck.Any((Card c) => ((GameEntity)c).Id == ((GameEntity)megumu).Id) && !Singleton<GameMaster>.Instance.CurrentGameRun.BaseDeck.Any((Card c) => ((GameEntity)c).Id == ((GameEntity)hatate).Id)) { list.Add(hatate); } if (CollectionsExtensions.NotEmpty<Card>((IReadOnlyCollection<Card>)list)) { Card item = ((IEnumerable<Card>)__result.Cards).FirstOrDefault((Func<Card, bool>)((Card c) => c is AyaFriendMomijiDef.AyaFriendMomiji || c is AyaFriendMegumuDef.AyaFriendMegumu || c is AyaFriendHatateDef.AyaFriendHatate)) ?? __result.Cards.First(); __result.Cards.Remove(item); __result.Cards.Add(CollectionsExtensions.Sample<Card>((IEnumerable<Card>)list, Singleton<GameMaster>.Instance.CurrentGameRun.CardRng)); } } } [HarmonyPatch(typeof(UiManager), "LeaveGameRun")] private class UiManager_LeaveGameRun_Patch { private static void Postfix(UiManager __instance) { //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) background.SetActive(false); CardConfig.FromId("AyaNews").Damage = 1; CardConfig.FromId("AyaNews").Value1 = null; CardConfig.FromId("AyaNews").TargetType = (TargetType)3; if (((Enum)CardConfig.FromId("AyaNews").Keywords).HasFlag((Enum)(object)(Keyword)8388608)) { CardConfig obj = CardConfig.FromId("AyaNews"); obj.Keywords = (Keyword)(obj.Keywords - 8388608); } if (((Enum)CardConfig.FromId("HatateNews").Keywords).HasFlag((Enum)(object)(Keyword)8388608)) { CardConfig obj2 = CardConfig.FromId("HatateNews"); obj2.Keywords = (Keyword)(obj2.Keywords - 8388608); } CardConfig.FromId("AyaWindGirl").Value1 = 1; } } [HarmonyPatch(typeof(Unit), "Heal")] private class Unit_Heal_Patch { private static void Postfix(Unit __instance) { if (Singleton<GameMaster>.Instance.CurrentGameRun != null && __instance is AyaPlayerUnit && FinalBossSequence < 3 && !FinalBossTransition && !BossStationFinished) { if ((float)__instance.Hp / (float)__instance.MaxHp > 0.66f) { UiManager.GetPanel<SystemBoard>().characterImage.sprite = ResourceLoader.LoadSprite("AyaAvatar.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 100, (Vector2?)null); } else if ((float)__instance.Hp / (float)__instance.MaxHp > 0.33f) { UiManager.GetPanel<SystemBoard>().characterImage.sprite = ResourceLoader.LoadSprite("AyaAvatar1.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 100, (Vector2?)null); } else { UiManager.GetPanel<SystemBoard>().characterImage.sprite = ResourceLoader.LoadSprite("AyaAvatar2.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 100, (Vector2?)null); } } } } public static bool BossStationFinished = false; public static bool LastInputTriggered = false; public static int FinalBossSequence = 0; public static EnemyUnit FinalBoss = null; public static List<Card> FinalBossKeyCards = new List<Card>(); public static bool FinalBossTransition = false; private static GameObject background = StageTemplate.TryGetEnvObject("AyaBackgroundTransition", (Assembly)null); private bool AyaIntro = false; private bool CirnoLeaved = false; private bool LastEnemy = false; public string AyaTanukiIntro1AyaTanuki => ((GameEntity)this).LocalizeProperty("AyaTanukiIntro1AyaTanuki", true, true); public string AyaTanukiIntro2Aya => ((GameEntity)this).LocalizeProperty("AyaTanukiIntro2Aya", true, true); public string AyaTanukiIntro3Aya => ((GameEntity)this).LocalizeProperty("AyaTanukiIntro3Aya", true, true); public string AyaTanukiIntro4AyaTanuki => ((GameEntity)this).LocalizeProperty("AyaTanukiIntro4AyaTanuki", true, true); public string SeijaPhase11Seija => ((GameEntity)this).LocalizeProperty("SeijaPhase11Seija", true, true); public string SeijaPhase12Aya => ((GameEntity)this).LocalizeProperty("SeijaPhase12Aya", true, true); public string SeijaPhase13Aya => ((GameEntity)this).LocalizeProperty("SeijaPhase13Aya", true, true); public string SeijaPhase14Seija => ((GameEntity)this).LocalizeProperty("SeijaPhase14Seija", true, true); public string SeijaPhase15Seija => ((GameEntity)this).LocalizeProperty("SeijaPhase15Seija", true, true); public string SeijaPhase16Aya => ((GameEntity)this).LocalizeProperty("SeijaPhase16Aya", true, true); public string SeijaPhase2Hidden1Aya => ((GameEntity)this).LocalizeProperty("SeijaPhase2Hidden1Aya", true, true); public string SeijaPhase2Hidden2Koishi => ((GameEntity)this).LocalizeProperty("SeijaPhase2Hidden2Koishi", true, true); public string SeijaPhase2HiddenPhantasmMode1SukusukuAya => ((GameEntity)this).LocalizeProperty("SeijaPhase2HiddenPhantasmMode1SukusukuAya", true, true); public string SeijaPhase2HiddenPhantasmMode2SukusukuAya => ((GameEntity)this).LocalizeProperty("SeijaPhase2HiddenPhantasmMode2SukusukuAya", true, true); public string SeijaPhase2HiddenPhantasmMode3SukusukuAya => ((GameEntity)this).LocalizeProperty("SeijaPhase2HiddenPhantasmMode3SukusukuAya", true, true); public string SeijaPhase2HiddenPhantasmMode4SukusukuAya => ((GameEntity)this).LocalizeProperty("SeijaPhase2HiddenPhantasmMode4SukusukuAya", true, true); public string SeijaPhase21Seija => ((GameEntity)this).LocalizeProperty("SeijaPhase21Seija", true, true); public string SeijaPhase22Seija => ((GameEntity)this).LocalizeProperty("SeijaPhase22Seija", true, true); public string SeijaPhase23Aya => ((GameEntity)this).LocalizeProperty("SeijaPhase23Aya", true, true); public string SeijaPhase24Seija => ((GameEntity)this).LocalizeProperty("SeijaPhase24Seija", true, true); public string SeijaPhase25Seija => ((GameEntity)this).LocalizeProperty("SeijaPhase25Seija", true, true); public string SeijaPhase26Reimu => ((GameEntity)this).LocalizeProperty("SeijaPhase26Reimu", true, true); public string SeijaPhase27Marisa => ((GameEntity)this).LocalizeProperty("SeijaPhase27Marisa", true, true); public string SeijaPhase28Sakuya => ((GameEntity)this).LocalizeProperty("SeijaPhase28Sakuya", true, true); public string SeijaPhase29Cirno => ((GameEntity)this).LocalizeProperty("SeijaPhase29Cirno", true, true); public string SeijaPhase210Seija => ((GameEntity)this).LocalizeProperty("SeijaPhase210Seija", true, true); public string SeijaPhase211Aya => ((GameEntity)this).LocalizeProperty("SeijaPhase211Aya", true, true); public string SeijaPhase212Seija => ((GameEntity)this).LocalizeProperty("SeijaPhase212Seija", true, true); public string SeijaPhase213Aya => ((GameEntity)this).LocalizeProperty("SeijaPhase213Aya", true, true); public string SeijaPhase214Seija => ((GameEntity)this).LocalizeProperty("SeijaPhase214Seija", true, true); public string SeijaPhase215Aya => ((GameEntity)this).LocalizeProperty("SeijaPhase215Aya", true, true); public string SeijaPhase216Aya => ((GameEntity)this).LocalizeProperty("SeijaPhase216Aya", true, true); public string SeijaPhase217Aya => ((GameEntity)this).LocalizeProperty("SeijaPhase217Aya", true, true); public string SeijaPhase3Normal1Cirno => ((GameEntity)this).LocalizeProperty("SeijaPhase3Normal1Cirno", true, true); public string SeijaPhase3True1Cirno => ((GameEntity)this).LocalizeProperty("SeijaPhase3True1Cirno", true, true); public string SeijaPhase3True2Aya => ((GameEntity)this).LocalizeProperty("SeijaPhase3True2Aya", true, true); public string SeijaPhase3True3Aya => ((GameEntity)this).LocalizeProperty("SeijaPhase3True3Aya", true, true); public string SeijaPhase3True4Cirno => ((GameEntity)this).LocalizeProperty("SeijaPhase3True4Cirno", true, true); public string SeijaPhase3True5Cirno => ((GameEntity)this).LocalizeProperty("SeijaPhase3True5Cirno", true, true); public string SeijaPhase3True6Aya => ((GameEntity)this).LocalizeProperty("SeijaPhase3True6Aya", true, true); public string SeijaPhase3True7Cirno => ((GameEntity)this).LocalizeProperty("SeijaPhase3True7Cirno", true, true); public string SeijaPhase3True8Aya => ((GameEntity)this).LocalizeProperty("SeijaPhase3True8Aya", true, true); public string SeijaPhase31Seija => ((GameEntity)this).LocalizeProperty("SeijaPhase31Seija", true, true); public string SeijaPhase32Megumu => ((GameEntity)this).LocalizeProperty("SeijaPhase32Megumu", true, true); public string SeijaPhase33Seija => ((GameEntity)this).LocalizeProperty("SeijaPhase33Seija", true, true); public string SeijaPhase34Seija => ((GameEntity)this).LocalizeProperty("SeijaPhase34Seija", true, true); public string SeijaPhase35Megumu => ((GameEntity)this).LocalizeProperty("SeijaPhase35Megumu", true, true); public string SeijaPhase36Megumu => ((GameEntity)this).LocalizeProperty("SeijaPhase36Megumu", true, true); public string SeijaPhase37Megumu => ((GameEntity)this).LocalizeProperty("SeijaPhase37Megumu", true, true); public string SeijaPhase38Seija => ((GameEntity)this).LocalizeProperty("SeijaPhase38Seija", true, true); public string SeijaPhase39Seija => ((GameEntity)this).LocalizeProperty("SeijaPhase39Seija", true, true); public string SeijaPhase310Seija => ((GameEntity)this).LocalizeProperty("SeijaPhase310Seija", true, true); public string SeijaPhase311Seija => ((GameEntity)this).LocalizeProperty("SeijaPhase311Seija", true, true); public string SeijaPhase312Seija => ((GameEntity)this).LocalizeProperty("SeijaPhase312Seija", true, true); public string SeijaPhase3Normal2Megumu => ((GameEntity)this).LocalizeProperty("SeijaPhase3Normal2Megumu", true, true); public string SeijaPhase3Normal3Megumu => ((GameEntity)this).LocalizeProperty("SeijaPhase3Normal3Megumu", true, true); public string SeijaPhase3Normal4Megumu => ((GameEntity)this).LocalizeProperty("SeijaPhase3Normal4Megumu", true, true); public string SeijaPhase3True9Megumu => ((GameEntity)this).LocalizeProperty("SeijaPhase3True9Megumu", true, true); public string SeijaPhase3True10Megumu => ((GameEntity)this).LocalizeProperty("SeijaPhase3True10Megumu", true, true); public string SeijaPhase3True11Aya => ((GameEntity)this).LocalizeProperty("SeijaPhase3True11Aya", true, true); public string SeijaPhase3True12Megumu => ((GameEntity)this).LocalizeProperty("SeijaPhase3True12Megumu", true, true); public string SeijaPhase3True13Aya => ((GameEntity)this).LocalizeProperty("SeijaPhase3True13Aya", true, true); public string SeijaPhase3True14Megumu => ((GameEntity)this).LocalizeProperty("SeijaPhase3True14Megumu", true, true); public string SeijaPhase3True15Aya => ((GameEntity)this).LocalizeProperty("SeijaPhase3True15Aya", true, true); public string SeijaPhase3True16Megumu => ((GameEntity)this).LocalizeProperty("SeijaPhase3True16Megumu", true, true); public string SeijaPhase3True17Megumu => ((GameEntity)this).LocalizeProperty("SeijaPhase3True17Megumu", true, true); public string SeijaPhase3True18Megumu => ((GameEntity)this).LocalizeProperty("SeijaPhase3True18Megumu", true, true); public string SeijaPhase3True19Megumu => ((GameEntity)this).LocalizeProperty("SeijaPhase3True19Megumu", true, true); public string SeijaPhase3True20Okina => ((GameEntity)this).LocalizeProperty("SeijaPhase3True20Okina", true, true); protected override void OnEnterGameRun(GameRunController gameRun) { //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) ((MonoBehaviour)Singleton<GameMaster>.Instance).StartCoroutine(Timer()); ((Unit)this).HandleGameRunEvent<StationEventArgs>(((GameEntity)this).GameRun.StationEntered, (GameEventHandler<StationEventArgs>)delegate { //IL_00f3: Unknown result type (might be due to invalid IL or missing references) BossStationFinished = false; if ((float)((Unit)this).Hp / (float)((Unit)this).MaxHp > 0.66f) { UiManager.GetPanel<SystemBoard>().characterImage.sprite = ResourceLoader.LoadSprite("AyaAvatar.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 100, (Vector2?)null); } else if ((float)((Unit)this).Hp / (float)((Unit)this).MaxHp > 0.33f) { UiManager.GetPanel<SystemBoard>().characterImage.sprite = ResourceLoader.LoadSprite("AyaAvatar1.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 100, (Vector2?)null); } else { UiManager.GetPanel<SystemBoard>().characterImage.sprite = ResourceLoader.LoadSprite("AyaAvatar2.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 100, (Vector2?)null); } UnitView view = ((Unit)this).GetView<UnitView>(); if (view == null || ((Component)view).transform.localPosition.x != 0f) { ((MonoBehaviour)Singleton<GameMaster>.Instance).StartCoroutine(Return()); } }); ((Unit)this).HandleGameRunEvent<StationEventArgs>(((GameEntity)this).GameRun.StationFinished, (GameEventHandler<StationEventArgs>)delegate(StationEventArgs args) { //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Expected I4, but got Unknown //IL_02ac: Unknown result type (might be due to invalid IL or missing references) if (args.Station is BossStation) { BossStationFinished = true; UiManager.GetPanel<SystemBoard>().characterImage.sprite = ResourceLoader.LoadSprite("AyaAvatar4.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 100, (Vector2?)null); if (args.Station.IsNormalEnd) { GameDifficulty difficulty = ((GameEntity)this).GameRun.Difficulty; GameDifficulty val = difficulty; switch (val - 1) { case 0: if (!BepinexPlugin.AyaSave.Value.Contains("NormalAyaPlayerUnit")) { ConfigEntry<string> ayaSave7 = BepinexPlugin.AyaSave; ayaSave7.Value += (BasicTypeExtensions.IsNullOrEmpty(BepinexPlugin.AyaSave.Value) ? "NormalAyaPlayerUnit" : ",NormalAyaPlayerUnit"); } break; case 1: if (!BepinexPlugin.AyaSave.Value.Contains("NormalAyaPlayerUnit")) { ConfigEntry<string> ayaSave5 = BepinexPlugin.AyaSave; ayaSave5.Value += (BasicTypeExtensions.IsNullOrEmpty(BepinexPlugin.AyaSave.Value) ? "NormalAyaPlayerUnit" : ",NormalAyaPlayerUnit"); } if (!BepinexPlugin.AyaSave.Value.Contains("HardAyaPlayerUnit")) { ConfigEntry<string> ayaSave6 = BepinexPlugin.AyaSave; ayaSave6.Value += (BasicTypeExtensions.IsNullOrEmpty(BepinexPlugin.AyaSave.Value) ? "HardAyaPlayerUnit" : ",HardAyaPlayerUnit"); } break; case 2: if (!BepinexPlugin.AyaSave.Value.Contains("NormalAyaPlayerUnit")) { ConfigEntry<string> ayaSave = BepinexPlugin.AyaSave; ayaSave.Value += (BasicTypeExtensions.IsNullOrEmpty(BepinexPlugin.AyaSave.Value) ? "NormalAyaPlayerUnit" : ",NormalAyaPlayerUnit"); } if (!BepinexPlugin.AyaSave.Value.Contains("HardAyaPlayerUnit")) { ConfigEntry<string> ayaSave2 = BepinexPlugin.AyaSave; ayaSave2.Value += (BasicTypeExtensions.IsNullOrEmpty(BepinexPlugin.AyaSave.Value) ? "HardAyaPlayerUnit" : ",HardAyaPlayerUnit"); } if (!BepinexPlugin.AyaSave.Value.Contains("LunaticAyaPlayerUnit")) { ConfigEntry<string> ayaSave3 = BepinexPlugin.AyaSave; ayaSave3.Value += (BasicTypeExtensions.IsNullOrEmpty(BepinexPlugin.AyaSave.Value) ? "LunaticAyaPlayerUnit" : ",LunaticAyaPlayerUnit"); } if (!BepinexPlugin.AyaSave.Value.Contains("PhantasmAyaPlayerUnit") && BepinexPlugin.AyaPhantasmMode.Value && PuzzleFlags.GetPuzzleLevel(((GameEntity)this).GameRun.Puzzles) == 7) { ConfigEntry<string> ayaSave4 = BepinexPlugin.AyaSave; ayaSave4.Value += (BasicTypeExtensions.IsNullOrEmpty(BepinexPlugin.AyaSave.Value) ? "PhantasmAyaPlayerUnit" : ",PhantasmAyaPlayerUnit"); } break; } } } }); ((Unit)this).HandleGameRunEvent<DamageEventArgs>(((Unit)((GameEntity)this).GameRun.Player).DamageReceived, (GameEventHandler<DamageEventArgs>)delegate { if (FinalBossSequence < 3 && !FinalBossTransition && !BossStationFinished) { if ((float)((Unit)this).Hp / (float)((Unit)this).MaxHp > 0.66f) { UiManager.GetPanel<SystemBoard>().characterImage.sprite = ResourceLoader.LoadSprite("AyaAvatar.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 100, (Vector2?)null); } else if ((float)((Unit)this).Hp / (float)((Unit)this).MaxHp > 0.33f) { UiManager.GetPanel<SystemBoard>().characterImage.sprite = ResourceLoader.LoadSprite("AyaAvatar1.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 100, (Vector2?)null); } else { UiManager.GetPanel<SystemBoard>().characterImage.sprite = ResourceLoader.LoadSprite("AyaAvatar2.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 100, (Vector2?)null); } } }); CardConfig.FromId("AyaNews").Damage = 12; CardConfig.FromId("AyaNews").Value1 = 1; CardConfig.FromId("AyaNews").TargetType = (TargetType)1; if (!((Enum)CardConfig.FromId("AyaNews").Keywords).HasFlag((Enum)(object)(Keyword)8388608)) { CardConfig obj = CardConfig.FromId("AyaNews"); obj.Keywords = (Keyword)(obj.Keywords + 8388608); } if (!((Enum)CardConfig.FromId("HatateNews").Keywords).HasFlag((Enum)(object)(Keyword)8388608)) { CardConfig obj2 = CardConfig.FromId("HatateNews"); obj2.Keywords = (Keyword)(obj2.Keywords + 8388608); } CardConfig.FromId("AyaWindGirl").Value1 = 2; } private IEnumerator Timer() { yield return (object)new WaitUntil((Func<bool>)(() => Singleton<GameMaster>.Instance.CurrentGameRun != null)); while (Singleton<GameMaster>.Instance.CurrentGameRun != null && FinalBossSequence < 3 && !FinalBossTransition) { if (BepinexPlugin.LastInput >= 90 && !LastInputTriggered) { LastInputTriggered = true; UiManager.GetPanel<SystemBoard>().characterImage.sprite = ResourceLoader.LoadSprite("AyaAvatar3.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 100, (Vector2?)null); } else if (BepinexPlugin.LastInput < 90 && LastInputTriggered) { LastInputTriggered = false; if ((float)((Unit)this).Hp / (float)((Unit)this).MaxHp > 0.66f) { UiManager.GetPanel<SystemBoard>().characterImage.sprite = ResourceLoader.LoadSprite("AyaAvatar.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 100, (Vector2?)null); } else if ((float)((Unit)this).Hp / (float)((Unit)this).MaxHp > 0.33f) { UiManager.GetPanel<SystemBoard>().characterImage.sprite = ResourceLoader.LoadSprite("AyaAvatar1.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 100, (Vector2?)null); } else { UiManager.GetPanel<SystemBoard>().characterImage.sprite = ResourceLoader.LoadSprite("AyaAvatar2.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 100, (Vector2?)null); } } yield return (object)new WaitForSecondsRealtime(1f); BepinexPlugin.LastInput++; } } private IEnumerator Return() { TweenExtensions.WaitForCompletion((Tween)(object)TweenSettingsExtensions.SetAutoKill<TweenerCore<Vector3, Vector3, VectorOptions>>(TweenSettingsExtensions.SetUpdate<TweenerCore<Vector3, Vector3, VectorOptions>>(TweenSettingsExtensions.SetEase<TweenerCore<Vector3, Vector3, VectorOptions>>(ShortcutExtensions.DOLocalMove(((Component)((Unit)this).GetView<UnitView>()).transform, new Vector3(-10f, 0f), 0f, false), (Ease)6), true), true)); yield return (object)new WaitUntil((Func<bool>)(() => ((Component)((Unit)this).GetView<UnitView>()).transform.localPosition.x == -10f)); TweenExtensions.WaitForCompletion((Tween)(object)TweenSettingsExtensions.SetAutoKill<TweenerCore<Vector3, Vector3, VectorOptions>>(TweenSettingsExtensions.SetUpdate<TweenerCore<Vector3, Vector3, VectorOptions>>(TweenSettingsExtensions.SetEase<TweenerCore<Vector3, Vector3, VectorOptions>>(ShortcutExtensions.DOLocalMove(((Component)((Unit)this).GetView<UnitView>()).transform, new Vector3(0f, 0f), 1.25f, false), (Ease)6), true), true)); } protected override void OnEnterBattle(BattleController battle) { FinalBossSequence = 0; ((Unit)this).ReactBattleEvent<GameEventArgs>(((Unit)this).Battle.BattleStarted, (Func<GameEventArgs, IEnumerable<BattleAction>>)OnBattleStarted); ((Unit)this).ReactBattleEvent<CardsEventArgs>(((Unit)this).Battle.CardsAddingToDiscard, (Func<CardsEventArgs, IEnumerable<BattleAction>>)OnCardsAddingToDiscard); ((Unit)this).ReactBattleEvent<CardsAddingToDrawZoneEventArgs>(((Unit)this).Battle.CardsAddingToDrawZone, (Func<CardsAddingToDrawZoneEventArgs, IEnumerable<BattleAction>>)OnCardsAddingToDrawZone); ((Unit)this).ReactBattleEvent<CardsEventArgs>(((Unit)this).Battle.CardsAddingToExile, (Func<CardsEventArgs, IEnumerable<BattleAction>>)OnCardsAddingToExile); ((Unit)this).ReactBattleEvent<CardsEventArgs>(((Unit)this).Battle.CardsAddingToHand, (Func<CardsEventArgs, IEnumerable<BattleAction>>)OnCardsAddingToHand); ((Unit)this).ReactBattleEvent<StatisticalDamageEventArgs>(((Unit)((Unit)this).Battle.Player).StatisticalTotalDamageDealt, (Func<StatisticalDamageEventArgs, IEnumerable<BattleAction>>)OnPlayerStatisticalTotalDamageDealt); } private IEnumerable<BattleAction> OnBattleStarted(GameEventArgs arg) { yield return (BattleAction)new ApplyStatusEffectAction(typeof(AyaPassiveSeDef.AyaPassiveSe), (Unit)(object)this, (int?)null, (int?)null, (int?)null, (int?)null, 0f, true); if (((GameEntity)this).GameRun.Battle.EnemyGroup.Id == "Aya") { ((Unit)this).ReactBattleEvent<GameEventArgs>(((Unit)this).Battle.RoundStarting, (Func<GameEventArgs, IEnumerable<BattleAction>>)AyaRoundStarting); } Card Momiji = ((IEnumerable<Card>)((Unit)this).Battle.DrawZone).FirstOrDefault((Func<Card, bool>)((Card card) => card is AyaFriendMomijiDef.AyaFriendMomiji)); Card Megumu = ((IEnumerable<Card>)((Unit)this).Battle.DrawZone).FirstOrDefault((Func<Card, bool>)((Card card) => card is AyaFriendMegumuDef.AyaFriendMegumu)); Card Hatate = ((IEnumerable<Card>)((Unit)this).Battle.DrawZone).FirstOrDefault((Func<Card, bool>)((Card card) => card is AyaFriendHatateDef.AyaFriendHatate)); if (Momiji != null && Megumu != null && Hatate != null && ((GameEntity)this).GameRun.Battle.EnemyGroup.Id == "Seija") { FinalBossSequence = 1; FinalBossKeyCards.Add(Momiji); FinalBossKeyCards.Add(Megumu); FinalBossKeyCards.Add(Hatate); FinalBoss = ((GameEntity)this).GameRun.Battle.AllAliveEnemies.First((EnemyUnit e) => e is Seija); AyaAdventoftheDivineGrandsonDef.AyaAdventoftheDivineGrandson.MusicChanged = true; BgmConfig.FromID(IdContainer.op_Implicit(((EntityDefinition)new AyaFinalBossBgm()).UniqueId)).LoopStart = 68.4f; BgmConfig.FromID(IdContainer.op_Implicit(((EntityDefinition)new AyaFinalBossBgm()).UniqueId)).LoopEnd = 223.5f; AudioManager.PlayInLayer1("AyaFinalBossBgm"); ((Unit)this).ReactBattleEvent<UnitEventArgs>(((Unit)((Unit)this).Battle.Player).TurnEnded, (Func<UnitEventArgs, IEnumerable<BattleAction>>)FinalBossPlayerTurnEnded); ((Unit)this).ReactBattleEvent<DieEventArgs>(((Unit)((Unit)this).Battle.Player).Dying, (Func<DieEventArgs, IEnumerable<BattleAction>>)FinalBossPlayerDying); ((Unit)this).ReactBattleEvent<GameEventArgs>(((Unit)this).Battle.AllEnemyTurnStarting, (Func<GameEventArgs, IEnumerable<BattleAction>>)FinalBossAllEnemyTurnStarting); ((Unit)this).ReactBattleEvent<GameEventArgs>(((Unit)this).Battle.AllEnemyTurnEnded, (Func<GameEventArgs, IEnumerable<BattleAction>>)FinalBossAllEnemyTurnEnded); ((Unit)this).ReactBattleEvent<CardEventArgs>(((Unit)this).Battle.CardRemoving, (Func<CardEventArgs, IEnumerable<BattleAction>>)FinalBossCardRemoving); ((Unit)this).ReactBattleEvent<CardTransformEventArgs>(((Unit)this).Battle.CardTransforming, (Func<CardTransformEventArgs, IEnumerable<BattleAction>>)FinalBossCardTransforming); ((Unit)this).ReactBattleEvent<UnitEventArgs>(((Unit)this).Battle.EnemySpawned, (Func<UnitEventArgs, IEnumerable<BattleAction>>)FinalBossEnemySpawned); ((Unit)this).ReactBattleEvent<DieEventArgs>(((Unit)this).Battle.EnemyDied, (Func<DieEventArgs, IEnumerable<BattleAction>>)FinalBossEnemyDied); ((Unit)this).ReactBattleEvent<DieEventArgs>(((Unit)FinalBoss).Dying, (Func<DieEventArgs, IEnumerable<BattleAction>>)FinalBossDying); } } private IEnumerable<BattleAction> AyaRoundStarting(GameEventArgs arg) { if (!AyaIntro) { AyaIntro = true; EnemyUnit ayaFake = ((GameEntity)this).GameRun.Battle.AllAliveEnemies.First((EnemyUnit e) => e is Aya); yield return (BattleAction)new DamageAction((Unit)(object)this, (Unit)(object)ayaFake, DamageInfo.HpLose(10f, false), "鸦天狗触发", (GunType)0); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)ayaFake, AyaTanukiIntro1AyaTanuki, 2f, 0f, 0f, true); ((Unit)ayaFake).GetView<UnitView>()._statusWidget.FadeOut(); ((Unit)ayaFake).GetView<UnitView>().Escape(); yield return (BattleAction)new SpawnEnemyAction(ayaFake, typeof(AyaTanuki), ayaFake.RootIndex, 0f, 0f, false); AudioManager.PlayInLayer1("AyaTanukiBgm"); EnemyUnit limao = ((GameEntity)this).GameRun.Battle.AllAliveEnemies.First((EnemyUnit e) => e is AyaTanuki); yield return (BattleAction)(object)PerformAction.Effect((Unit)(object)limao, "Bianshen", 0f, (string)null, 0f, (EffectBehavior)0, 0f); yield return (BattleAction)(object)PerformAction.Sfx("Graze", 0f); yield return (BattleAction)(object)new ApplyStatusEffectAction<AyaTanukiWindGodGrillSeDef.AyaTanukiWindGodGrillSe>((Unit)(object)limao, (int?)limao.Count1, (int?)null, (int?)null, (int?)null, 0f, true); yield return (BattleAction)(object)PerformAction.Wait(1.5f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, AyaTanukiIntro2Aya, 2.5f, 0f, 2f, true); yield return (BattleAction)new EscapeAction((Unit)(object)ayaFake); yield return (BattleAction)(object)new ApplyStatusEffectAction<AyaArmoredRavenSeDef.AyaArmoredRavenSe>((Unit)(object)this, (int?)1, (int?)null, (int?)null, (int?)null, 0f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, AyaTanukiIntro3Aya, 2f, 0f, 2f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)((GameEntity)this).GameRun.Battle.AllAliveEnemies.First((EnemyUnit e) => e is AyaTanuki), AyaTanukiIntro4AyaTanuki, 1.5f, 0f, 0.5f, true); } } private IEnumerable<BattleAction> OnCardsAddingToDiscard(CardsEventArgs arg) { if (((GameEventArgs)arg).ActionSource == this || !arg.Cards.Any((Card card) => card is AyaNewsReimuSp || card is ManaFreezer)) { yield break; } List<Card> cards = new List<Card>(); Card[] cards2 = arg.Cards; foreach (Card card2 in cards2) { if (!(card2 is ManaFreezer) || !((GameEntity)this).GameRun.BaseDeck.Any((Card c) => c is AyaTenguNewspaperDeadlineDay)) { if (card2 is AyaNewsReimuSp) { cards.Add((Card)(object)Library.CreateCard<AyaNewsAyaPlayerUnitSpDef.AyaNewsAyaPlayerUnitSp>()); } else { cards.Add(card2); } } } ((GameEventArgs)arg).CancelBy((GameEntity)(object)this); if (CollectionsExtensions.NotEmpty<Card>((IReadOnlyCollection<Card>)cards)) { yield return (BattleAction)new AddCardsToDiscardAction((IEnumerable<Card>)cards, (AddCardsType)0); } } private IEnumerable<BattleAction> OnCardsAddingToDrawZone(CardsAddingToDrawZoneEventArgs arg) { if (((GameEventArgs)arg).ActionSource == this || !arg.Cards.Any((Card card) => card is AyaNewsReimuSp || card is ManaFreezer)) { yield break; } List<Card> cards = new List<Card>(); Card[] cards2 = arg.Cards; foreach (Card card2 in cards2) { if (!(card2 is ManaFreezer) || !((GameEntity)this).GameRun.BaseDeck.Any((Card c) => c is AyaTenguNewspaperDeadlineDay)) { if (card2 is AyaNewsReimuSp) { cards.Add((Card)(object)Library.CreateCard<AyaNewsAyaPlayerUnitSpDef.AyaNewsAyaPlayerUnitSp>()); } else { cards.Add(card2); } } } ((GameEventArgs)arg).CancelBy((GameEntity)(object)this); if (CollectionsExtensions.NotEmpty<Card>((IReadOnlyCollection<Card>)cards)) { yield return (BattleAction)new AddCardsToDrawZoneAction((IEnumerable<Card>)cards, arg.DrawZoneTarget, (AddCardsType)0); } } private IEnumerable<BattleAction> OnCardsAddingToExile(CardsEventArgs arg) { if (((GameEventArgs)arg).ActionSource == this || !arg.Cards.Any((Card card) => card is AyaNewsReimuSp || card is ManaFreezer)) { yield break; } List<Card> cards = new List<Card>(); Card[] cards2 = arg.Cards; foreach (Card card2 in cards2) { if (!(card2 is ManaFreezer) || !((GameEntity)this).GameRun.BaseDeck.Any((Card c) => c is AyaTenguNewspaperDeadlineDay)) { if (card2 is AyaNewsReimuSp) { cards.Add((Card)(object)Library.CreateCard<AyaNewsAyaPlayerUnitSpDef.AyaNewsAyaPlayerUnitSp>()); } else { cards.Add(card2); } } } ((GameEventArgs)arg).CancelBy((GameEntity)(object)this); if (CollectionsExtensions.NotEmpty<Card>((IReadOnlyCollection<Card>)cards)) { yield return (BattleAction)new AddCardsToExileAction((IEnumerable<Card>)cards); } } private IEnumerable<BattleAction> OnCardsAddingToHand(CardsEventArgs arg) { if (((GameEventArgs)arg).ActionSource == this || !arg.Cards.Any((Card card) => card is AyaNewsReimuSp || card is ManaFreezer)) { yield break; } List<Card> cards = new List<Card>(); Card[] cards2 = arg.Cards; foreach (Card card2 in cards2) { if (!(card2 is ManaFreezer) || !((GameEntity)this).GameRun.BaseDeck.Any((Card c) => c is AyaTenguNewspaperDeadlineDay)) { if (card2 is AyaNewsReimuSp) { cards.Add((Card)(object)Library.CreateCard<AyaNewsAyaPlayerUnitSpDef.AyaNewsAyaPlayerUnitSp>()); } else { cards.Add(card2); } } } ((GameEventArgs)arg).CancelBy((GameEntity)(object)this); if (CollectionsExtensions.NotEmpty<Card>((IReadOnlyCollection<Card>)cards)) { yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)cards, (AddCardsType)0); } } private IEnumerable<BattleAction> OnPlayerStatisticalTotalDamageDealt(StatisticalDamageEventArgs args) { if (((Unit)this).Battle.BattleShouldEnd) { yield break; } GameEntity actionSource = ((GameEventArgs)args).ActionSource; AyaNews ayaNews = (AyaNews)(object)((actionSource is AyaNews) ? actionSource : null); if (ayaNews == null || !args.ArgsTable.Keys.Any((Unit u) => u.IsAlive)) { yield break; } foreach (EnemyUnit item in args.ArgsTable.Keys.Where((Unit u) => u.IsAlive)) { EnemyUnit enemyUnit = item; yield return (BattleAction)(object)new ApplyStatusEffectAction<LockedOn>((Unit)(object)enemyUnit, (int?)((Card)ayaNews).Value1, (int?)null, (int?)null, (int?)null, 0f, true); } } private IEnumerable<BattleAction> FinalBossPlayerTurnEnded(UnitEventArgs arg) { if (FinalBossSequence == 1 && ((Unit)FinalBoss).Hp < 500) { FinalBossSequence = 2; BgmConfig.FromID(IdContainer.op_Implicit(((EntityDefinition)new AyaFinalBossBgm()).UniqueId)).LoopStart = 277.9f; BgmConfig.FromID(IdContainer.op_Implicit(((EntityDefinition)new AyaFinalBossBgm()).UniqueId)).LoopEnd = 447.35f; AudioManager.FadeOutAndPlayBgm("AyaFinalBossBgm", 0f, 0f, 227.175f, false); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)FinalBoss, SeijaPhase11Seija, 2.5f, 0f, 2.5f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, SeijaPhase12Aya, 2.5f, 0f, 2.5f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, SeijaPhase13Aya, 1.5f, 0f, 0.75f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)FinalBoss, SeijaPhase14Seija, 2.5f, 0f, 1.75f, true); yield return (BattleAction)(object)PerformAction.Wait(0.75f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)FinalBoss, SeijaPhase15Seija, 2.5f, 0f, 2.5f, true); yield return (BattleAction)(object)PerformAction.Spell((Unit)(object)FinalBoss, "逆转攻势"); yield return (BattleAction)(object)PerformAction.Animation((Unit)(object)FinalBoss, "spell", 1f, (string)null, 0f, -1); yield return (BattleAction)new HealAction((Unit)(object)FinalBoss, (Unit)(object)FinalBoss, ((Unit)FinalBoss).MaxHp, (HealType)0, 0.2f); EnemyUnit finalBoss = FinalBoss; Seija seija = (Seija)(object)((finalBoss is Seija) ? finalBoss : null); seija._pool.Clear(); if (!((Unit)seija).HasStatusEffect<ShendengSe>()) { yield return (BattleAction)(object)new ApplyStatusEffectAction<ShendengSe>((Unit)(object)seija, (int?)3, (int?)null, (int?)null, (int?)null, 0.2f, true); } if (!((Unit)seija).HasStatusEffect<HolyGrailSe>()) { yield return (BattleAction)(object)new ApplyStatusEffectAction<HolyGrailSe>((Unit)(object)seija, (int?)null, (int?)null, (int?)null, (int?)null, 0.2f, true); } if (!((Unit)seija).HasStatusEffect<SihunYuSe>()) { yield return (BattleAction)(object)new ApplyStatusEffectAction<SihunYuSe>((Unit)(object)seija, (int?)null, (int?)null, (int?)null, (int?)null, 0.2f, true); } if (!((Unit)seija).HasStatusEffect<MadokaBowSe>()) { yield return (BattleAction)(object)new ApplyStatusEffectAction<MadokaBowSe>((Unit)(object)seija, (int?)2, (int?)null, (int?)null, (int?)null, 0.2f, true); } if (!((Unit)seija).HasStatusEffect<QiannianShenqiSe>()) { yield return (BattleAction)(object)new ApplyStatusEffectAction<QiannianShenqiSe>((Unit)(object)seija, (int?)2, (int?)null, (int?)null, (int?)10, 0.2f, true); } if (!((Unit)seija).HasStatusEffect<InfinityGemsSe>()) { yield return (BattleAction)(object)new ApplyStatusEffectAction<InfinityGemsSe>((Unit)(object)seija, (int?)null, (int?)null, (int?)null, (int?)null, 0.2f, true); } if (!((Unit)seija).HasStatusEffect<SakuraWandSe>()) { yield return (BattleAction)(object)new ApplyStatusEffectAction<SakuraWandSe>((Unit)(object)seija, (int?)null, (int?)null, (int?)null, (int?)null, 0.2f, true); } yield return (BattleAction)(object)new ApplyStatusEffectAction<GuangxueMicai>((Unit)(object)seija, (int?)null, (int?)999, (int?)null, (int?)null, 0.2f, true); seija.ItemCount = 6; seija.BigRoundCount = 6; seija.LastType = typeof(SakuraWandSe).Name; ((EnemyUnit)seija)._turnMoves.Clear(); ((EnemyUnit)seija).ClearIntentions(); ((EnemyUnit)seija).NotifyIntentionsChanged(); seija.Next = (MoveType)0; yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, SeijaPhase16Aya, 2.5f, 0f, 2.5f, true); } else if (FinalBossSequence == 2 && ((Unit)this).Battle.BattleShouldEnd) { foreach (Unit unit in ((Unit)this).Battle.AllAliveUnits) { yield return (BattleAction)new EndShootAction(unit); } foreach (EnemyUnit enemy in ((Unit)this).Battle.AllAliveEnemies.Where((EnemyUnit e) => !(e is Seija))) { yield return (BattleAction)new ForceKillAction((Unit)(object)enemy, (Unit)(object)enemy); } if (BepinexPlugin.AyaPhantasmMode.Value) { yield return (BattleAction)new SpawnEnemyAction((EnemyUnit)null, typeof(AyaPlayerUnitSK), 2, 0f, 0.3f, false); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is AyaPlayerUnitSK), SeijaPhase2HiddenPhantasmMode1SukusukuAya, 4f, 0f, 4f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is AyaPlayerUnitSK), SeijaPhase2HiddenPhantasmMode2SukusukuAya, 3f, 0f, 3f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is AyaPlayerUnitSK), SeijaPhase2HiddenPhantasmMode3SukusukuAya, 4f, 0f, 4f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is AyaPlayerUnitSK), SeijaPhase2HiddenPhantasmMode4SukusukuAya, 4f, 0f, 4f, true); } else { yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, SeijaPhase2Hidden1Aya, 5f, 0f, 5f, true); TweenExtensions.WaitForCompletion((Tween)(object)TweenSettingsExtensions.SetAutoKill<Sequence>(TweenSettingsExtensions.SetUpdate<Sequence>(TweenSettingsExtensions.SetEase<Sequence>(TweenSettingsExtensions.Append(TweenSettingsExtensions.Append(DOTween.Sequence(), (Tween)(object)ShortcutExtensions.DOScaleX(((Component)((Unit)this).GetView<UnitView>()).transform, -1f, 0.25f)), (Tween)(object)ShortcutExtensions.DOLocalMoveX(((Component)((Unit)this).GetView<UnitView>()).transform, -12f, 5f, false)), (Ease)1), true), true)); yield return (BattleAction)(object)PerformAction.Wait(4f, true); yield return (BattleAction)new SpawnEnemyAction((EnemyUnit)null, typeof(Koishi), 4, 0f, 0.3f, false); yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)((Unit)((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is Koishi)).GetStatusEffect<MirrorImage>(), true, 0f); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is Koishi), SeijaPhase2Hidden2Koishi, 2f, 0f, 2f, true); } ((Unit)this).Battle.InstantWin(); } else { if (FinalBossSequence != 6) { yield break; } FinalBossSequence = 7; foreach (Unit unit2 in ((Unit)this).Battle.AllAliveUnits) { yield return (BattleAction)new EndShootAction(unit2); } if (((Unit)this).Battle.HandZone.Any((Card c) => c is AyaFriendCirnoDef.AyaFriendCirno)) { EnemyUnit megumu2 = ((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is AyaAllyLong); TweenExtensions.WaitForCompletion((Tween)(object)TweenSettingsExtensions.SetAutoKill<Sequence>(TweenSettingsExtensions.SetUpdate<Sequence>(TweenSettingsExtensions.SetEase<Sequence>(TweenSettingsExtensions.Append(TweenSettingsExtensions.Append(DOTween.Sequence(), (Tween)(object)ShortcutExtensions.DOScaleX(((Component)((Unit)this).GetView<UnitView>()).transform, -1f, 0.25f)), (Tween)(object)ShortcutExtensions.DOLocalMoveX(((Component)((Unit)this).GetView<UnitView>()).transform, 0f, 5f, false)), (Ease)1), true), true)); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu2, SeijaPhase3True9Megumu, 2.5f, 0f, 2.5f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu2, SeijaPhase3True10Megumu, 2.5f, 0f, 2f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, SeijaPhase3True11Aya, 2.5f, 0f, 1.5f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu2, SeijaPhase3True12Megumu, 1f, 0f, 1f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, SeijaPhase3True13Aya, 3f, 0f, 3f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu2, SeijaPhase3True14Megumu, 2.5f, 0f, 2.5f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, SeijaPhase3True15Aya, 2.5f, 0f, 2.5f, true); TweenExtensions.WaitForCompletion((Tween)(object)TweenSettingsExtensions.SetAutoKill<TweenerCore<Vector3, Vector3, VectorOptions>>(TweenSettingsExtensions.SetUpdate<TweenerCore<Vector3, Vector3, VectorOptions>>(TweenSettingsExtensions.SetEase<TweenerCore<Vector3, Vector3, VectorOptions>>(ShortcutExtensions.DOLocalMoveX(((Component)((Unit)this).GetView<UnitView>()).transform, -12f, 5f, false), (Ease)1), true), true)); yield return (BattleAction)(object)PerformAction.Wait(0.5f, true); TweenExtensions.WaitForCompletion((Tween)(object)TweenSettingsExtensions.SetAutoKill<Sequence>(TweenSettingsExtensions.SetUpdate<Sequence>(TweenSettingsExtensions.SetEase<Sequence>(TweenSettingsExtensions.Append(TweenSettingsExtensions.Append(DOTween.Sequence(), (Tween)(object)ShortcutExtensions.DOScaleX(((Component)((Unit)megumu2).GetView<UnitView>()).transform, 1f, 0.2f)), (Tween)(object)ShortcutExtensions.DOLocalMoveX(((Component)((Unit)megumu2).GetView<UnitView>()).transform, -11f, 1f, false)), (Ease)1), true), true)); yield return (BattleAction)(object)PerformAction.Wait(2f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu2, SeijaPhase3True16Megumu, 1.5f, 0f, 1.5f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu2, SeijaPhase3True17Megumu, 3.5f, 0f, 3.5f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu2, SeijaPhase3True18Megumu, 3f, 0f, 3f, true); yield return (BattleAction)(object)PerformAction.Effect((Unit)(object)megumu2, "BuffFirepower", 0f, "Firepower", 0f, (EffectBehavior)0, 0f); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu2, SeijaPhase3True19Megumu, 2.5f, 0f, 2.5f, true); TweenExtensions.WaitForCompletion((Tween)(object)TweenSettingsExtensions.SetAutoKill<TweenerCore<Vector3, Vector3, VectorOptions>>(TweenSettingsExtensions.SetUpdate<TweenerCore<Vector3, Vector3, VectorOptions>>(TweenSettingsExtensions.SetEase<TweenerCore<Vector3, Vector3, VectorOptions>>(ShortcutExtensions.DOLocalMoveX(((Component)((Unit)megumu2).GetView<UnitView>()).transform, -22f, 5f, false), (Ease)1), true), true)); yield return (BattleAction)(object)PerformAction.Wait(3f, true); yield return (BattleAction)new SpawnEnemyAction(megumu2, typeof(AyaPlayerUnitM), 0, 0f, 0.5f, false); yield return (BattleAction)new SpawnEnemyAction(megumu2, typeof(AyaPlayerUnitS), 1, 0f, 0.5f, false); yield return (BattleAction)new SpawnEnemyAction(megumu2, typeof(AyaPlayerUnitO), 2, 0f, 0.5f, false); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is AyaPlayerUnitO), SeijaPhase3True20Okina, 2.5f, 0f, 2.5f, true); ((Unit)this).Battle.InstantWin(); } else { EnemyUnit megumu = ((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is AyaAllyLong); TweenExtensions.WaitForCompletion((Tween)(object)TweenSettingsExtensions.SetAutoKill<Sequence>(TweenSettingsExtensions.SetUpdate<Sequence>(TweenSettingsExtensions.SetEase<Sequence>(TweenSettingsExtensions.Append(TweenSettingsExtensions.Append(DOTween.Sequence(), (Tween)(object)ShortcutExtensions.DOScaleX(((Component)((Unit)this).GetView<UnitView>()).transform, -1f, 0.25f)), (Tween)(object)ShortcutExtensions.DOLocalMoveX(((Component)((Unit)this).GetView<UnitView>()).transform, -12f, 10f, false)), (Ease)1), true), true)); TweenExtensions.WaitForCompletion((Tween)(object)TweenSettingsExtensions.SetAutoKill<TweenerCore<Vector3, Vector3, VectorOptions>>(TweenSettingsExtensions.SetUpdate<TweenerCore<Vector3, Vector3, VectorOptions>>(TweenSettingsExtensions.SetEase<TweenerCore<Vector3, Vector3, VectorOptions>>(ShortcutExtensions.DOLocalMoveX(((Component)((Unit)megumu).GetView<UnitView>()).transform, -11f, 1f, false), (Ease)3), true), true)); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu, SeijaPhase3Normal2Megumu, 2.5f, 0f, 2.5f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu, SeijaPhase3Normal3Megumu, 2.5f, 0f, 3.5f, true); TweenExtensions.WaitForCompletion((Tween)(object)TweenSettingsExtensions.SetAutoKill<Sequence>(TweenSettingsExtensions.SetUpdate<Sequence>(TweenSettingsExtensions.SetEase<Sequence>(TweenSettingsExtensions.Append(TweenSettingsExtensions.Append(DOTween.Sequence(), (Tween)(object)ShortcutExtensions.DOScaleX(((Component)((Unit)megumu).GetView<UnitView>()).transform, 1f, 0.25f)), (Tween)(object)ShortcutExtensions.DOLocalMoveX(((Component)((Unit)megumu).GetView<UnitView>()).transform, -22f, 12f, false)), (Ease)1), true), true)); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu, SeijaPhase3Normal4Megumu, 2.5f, 0f, 2.5f, false); ((Unit)this).Battle.InstantWin(); } } } private IEnumerable<BattleAction> FinalBossPlayerDying(DieEventArgs arg) { if (FinalBossSequence == 2) { FinalBossTransition = true; ((GameEntity)this).GameRun.SetHpAndMaxHp(1, 1, false); ((GameEventArgs)arg).ForceCancelBecause((CancelCause)4096); ((Unit)this).Status = (UnitStatus)0; } yield break; } private IEnumerable<BattleAction> FinalBossAllEnemyTurnStarting(GameEventArgs arg) { yield break; } private IEnumerable<BattleAction> FinalBossAllEnemyTurnEnded(GameEventArgs arg) { if (FinalBossTransition) { FinalBossTransition = false; FinalBossSequence = 3; foreach (EnemyUnit enemy in ((Unit)this).Battle.AllAliveEnemies) { if (enemy != FinalBoss) { yield return (BattleAction)new EscapeAction((Unit)(object)enemy); } } yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)FinalBoss, SeijaPhase21Seija, 2f, 0f, 2f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)FinalBoss, SeijaPhase22Seija, 2f, 0f, 2f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, SeijaPhase23Aya, 3f, 0f, 2f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)FinalBoss, SeijaPhase24Seija, 2f, 0f, 2f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)FinalBoss, SeijaPhase25Seija, 2f, 0f, 2f, true); Vector2 defaultChat = UnitModelConfig.FromName("Reimu").Chat; UnitModelConfig.FromName("Reimu").Chat = new Vector2(0.4f, 0.4f); yield return (BattleAction)new SpawnEnemyAction(FinalBoss, typeof(Reimu), 0, 0f, 0f, false); yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)((Unit)((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is Reimu)).GetStatusEffect<MirrorImage>(), true, 0f); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is Reimu), SeijaPhase26Reimu, 3f, 0f, 3f, true); UnitModelConfig.FromName("Reimu").Chat = defaultChat; yield return (BattleAction)new SpawnEnemyAction(FinalBoss, typeof(Marisa), 1, 0f, 0f, false); yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)((Unit)((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is Marisa)).GetStatusEffect<MirrorImage>(), true, 0f); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is Marisa), SeijaPhase27Marisa, 3f, 0f, 3f, true); defaultChat = UnitModelConfig.FromName("Sakuya").Chat; UnitModelConfig.FromName("Sakuya").Chat = new Vector2(0.4f, 0.4f); yield return (BattleAction)new SpawnEnemyAction(FinalBoss, typeof(Sakuya), 3, 0f, 0f, false); yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)((Unit)((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is Sakuya)).GetStatusEffect<MirrorImage>(), true, 0f); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is Sakuya), SeijaPhase28Sakuya, 3f, 0f, 3f, true); UnitModelConfig.FromName("Sakuya").Chat = defaultChat; yield return (BattleAction)new SpawnEnemyAction(FinalBoss, typeof(Cirno), 4, 0f, 0f, false); yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)((Unit)((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is Cirno)).GetStatusEffect<MirrorImage>(), true, 0f); yield return (BattleAction)(object)new ApplyStatusEffectAction<AyaPlayerUnitBuddySeDef.AyaPlayerUnitBuddySe>((Unit)(object)((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is Cirno), (int?)null, (int?)null, (int?)null, (int?)null, 0f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is Cirno), SeijaPhase29Cirno, 3f, 0f, 3f, true); yield return (BattleAction)new HealAction((Unit)(object)FinalBoss, (Unit)(object)FinalBoss, ((Unit)FinalBoss).MaxHp, (HealType)0, 0.2f); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)FinalBoss, SeijaPhase210Seija, 2f, 0f, 1f, true); UiManager.GetPanel<SystemBoard>().characterImage.sprite = ResourceLoader.LoadSprite("AyaAvatar3.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 100, (Vector2?)null); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, SeijaPhase211Aya, 2f, 0f, 1f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)FinalBoss, SeijaPhase212Seija, 1.5f, 0f, 1.5f, true); yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)this, (Unit)(object)FinalBoss, "JunkoLunatic", 0f); foreach (EnemyUnit enemy2 in ((Unit)this).Battle.AllAliveEnemies) { yield return (BattleAction)(object)PerformAction.Animation((Unit)(object)enemy2, "hit", 0f, (string)null, 0f, 10); } AudioManager.FadeOutBgm(0f); background.SetActive(true); UiManager.GetPanel<SystemBoard>().characterImage.sprite = ResourceLoader.LoadSprite("AyaAvatar4.png", (IResourceSource)(object)BepinexPlugin.directorySource, (Rect?)null, 100, (Vector2?)null); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, SeijaPhase213Aya, 2f, 0f, 2f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)FinalBoss, SeijaPhase214Seija, 1f, 0f, 1f, true); List<Card> hands = ((Unit)this).Battle.HandZone.ToList(); foreach (Card hand in hands) { yield return (BattleAction)new MoveCardAction(hand, (CardZone)4); } List<Card> keys = FinalBossKeyCards; foreach (Card key in keys) { ((GameEntity)key).GameRun = ((GameEntity)this).GameRun; if (key.Battle == null) { key.EnterBattle(((Unit)this).Battle); } if ((int)key.Zone != 5) { yield return (BattleAction)new ExileCardAction(key); } } Card momiji = keys.First((Card c) => c is AyaFriendMomijiDef.AyaFriendMomiji); if ((int)momiji.Zone != 2) { yield return (BattleAction)new MoveCardAction(momiji, (CardZone)2); } yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, SeijaPhase215Aya, 4f, 0f, 4f, true); Card megumu3 = keys.First((Card c) => c is AyaFriendMegumuDef.AyaFriendMegumu); if ((int)megumu3.Zone != 2) { yield return (BattleAction)new MoveCardAction(megumu3, (CardZone)2); } yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, SeijaPhase216Aya, 4f, 0f, 4f, true); Card hatate = keys.First((Card c) => c is AyaFriendHatateDef.AyaFriendHatate); if ((int)hatate.Zone != 2) { yield return (BattleAction)new MoveCardAction(hatate, (CardZone)2); } yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, SeijaPhase217Aya, 4f, 0f, 4f, true); foreach (Card key2 in keys) { ((GameEntity)key2).GameRun = ((GameEntity)this).GameRun; if (key2.Battle != null) { yield return (BattleAction)new RemoveCardAction(key2); continue; } key2.EnterBattle(((Unit)this).Battle); yield return (BattleAction)new RemoveCardAction(key2); } List<Exhibit> ayaExhibits = new List<Exhibit> { (Exhibit)(object)Library.CreateExhibit<AyaRDef.AyaR>(), (Exhibit)(object)Library.CreateExhibit<AyaGDef.AyaG>() }; foreach (Exhibit exhibit in ayaExhibits.Where((Exhibit e) => !((GameEntity)this).GameRun.Player.HasExhibit(((GameEntity)e).Id))) { ((MonoBehaviour)Singleton<GameMaster>.Instance).StartCoroutine(((GameEntity)this).GameRun.GainExhibitRunner(exhibit, false, (VisualSourceData)null)); } Card card = (Card)(object)Library.CreateCard<AyaFriendAyaDef.AyaFriendAya>(); int maxHand = ((Unit)this).Battle.MaxHand; ((Unit)this).Battle.MaxHand = 99; yield return (BattleAction)new AddCardsToHandAction((Card[])(object)new Card[1] { card }); ((Unit)this).Battle.MaxHand = maxHand; yield return (BattleAction)(object)CardHelper.AutoCastAction(card, UnitSelector.Nobody, ManaGroup.Philosophies(7), true); yield return (BattleAction)(object)new ApplyStatusEffectAction<AyaPerfectGrazeSeDef.AyaPerfectGrazeSe>((Unit)(object)this, (int?)10, (int?)null, (int?)null, (int?)null, 0f, true); background.SetActive(false); EnemyUnit finalBoss = FinalBoss; Seija seija = (Seija)(object)((finalBoss is Seija) ? finalBoss : null); seija.ItemCount = 8; seija.BigRoundCount = 8; if (((Unit)seija).HasStatusEffect<DragonBallSe>()) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)((Unit)seija).GetStatusEffect<DragonBallSe>(), true, 0f); } } else if (FinalBossSequence == 3 && Singleton<GameMaster>.Instance.CurrentGameRun.Battle.AllAliveEnemies.Count() == 1) { FinalBossSequence = 4; yield return (BattleAction)new SpawnEnemyAction(FinalBoss, typeof(Tianzi), 0, 0f, 0.3f, false); EnemyUnit tianzi = ((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is Tianzi); yield return (BattleAction)(object)new ApplyStatusEffectAction<FlatPeach>((Unit)(object)tianzi, (int?)tianzi.Count1, (int?)null, (int?)null, (int?)null, 0f, true); yield return (BattleAction)(object)new ApplyStatusEffectAction<EnemyEnergy>((Unit)(object)tianzi, (int?)0, (int?)null, (int?)null, (int?)null, 0f, true); yield return (BattleAction)(object)new ApplyStatusEffectAction<GuangxueMicai>((Unit)(object)tianzi, (int?)null, (int?)999, (int?)null, (int?)null, 0.2f, true); yield return (BattleAction)new SpawnEnemyAction(FinalBoss, typeof(Yuyuko), 1, 0f, 0.3f, false); yield return (BattleAction)(object)new ApplyStatusEffectAction<GuangxueMicai>((Unit)(object)((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is Yuyuko), (int?)null, (int?)999, (int?)null, (int?)null, 0.2f, true); yield return (BattleAction)new SpawnEnemyAction(FinalBoss, typeof(AyaAllyLong), 4, 0f, 0.3f, false); } else if (FinalBossSequence == 4 && Singleton<GameMaster>.Instance.CurrentGameRun.Battle.AllAliveEnemies.Count() == 2) { FinalBossSequence = 5; yield return (BattleAction)new SpawnEnemyAction(FinalBoss, typeof(Sanae), 0, 0f, 0.3f, false); EnemyUnit sanae = ((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is Sanae); yield return (BattleAction)(object)new ApplyStatusEffectAction<Curiosity>((Unit)(object)sanae, (int?)(((int)sanae.Difficulty != 3) ? 1 : 2), (int?)null, (int?)null, (int?)null, 0f, true); yield return (BattleAction)(object)new ApplyStatusEffectAction<Amulet>((Unit)(object)sanae, (int?)3, (int?)null, (int?)null, (int?)null, 0f, true); yield return (BattleAction)(object)new ApplyStatusEffectAction<GuangxueMicai>((Unit)(object)sanae, (int?)null, (int?)999, (int?)null, (int?)null, 0.2f, true); yield return (BattleAction)new SpawnEnemyAction(FinalBoss, typeof(Remilia), 1, 0f, 0.3f, false); EnemyUnit remilia = ((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is Remilia); yield return (BattleAction)(object)new ApplyStatusEffectAction<ScarletDestiny>((Unit)(object)remilia, (int?)null, (int?)null, (int?)null, (int?)remilia.Count2, 0f, true); yield return (BattleAction)(object)new ApplyStatusEffectAction<Graze>((Unit)(object)remilia, (int?)3, (int?)null, (int?)null, (int?)null, 0f, true); yield return (BattleAction)(object)new ApplyStatusEffectAction<GuangxueMicai>((Unit)(object)remilia, (int?)null, (int?)999, (int?)null, (int?)null, 0.2f, true); yield return (BattleAction)new SpawnEnemyAction(FinalBoss, typeof(Junko), 3, 0f, 0.3f, false); Junko junko = (Junko)((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is Junko); yield return (BattleAction)(object)new ApplyStatusEffectAction<JunkoPurify>((Unit)(object)junko, (int?)1, (int?)null, (int?)null, (int?)null, 0f, true); junko._junkoColorLevel = 1; yield return (BattleAction)(object)new ApplyStatusEffectAction<JunkoColor>((Unit)(object)this, (int?)1, (int?)null, (int?)0, (int?)null, 0f, true); junko.Next = (MoveType)1; ((EnemyUnit)junko).CountDown = 2; yield return (BattleAction)(object)new ApplyStatusEffectAction<GuangxueMicai>((Unit)(object)junko, (int?)null, (int?)999, (int?)null, (int?)null, 0.2f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)FinalBoss, SeijaPhase38Seija, 2f, 0f, 2f, true); } else { if (FinalBossSequence != 6) { yield break; } FinalBossSequence = 7; if (((Unit)this).Battle.HandZone.Any((Card c) => c is AyaFriendCirnoDef.AyaFriendCirno)) { EnemyUnit megumu2 = ((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is AyaAllyLong); TweenExtensions.WaitForCompletion((Tween)(object)TweenSettingsExtensions.SetAutoKill<Sequence>(TweenSettingsExtensions.SetUpdate<Sequence>(TweenSettingsExtensions.SetEase<Sequence>(TweenSettingsExtensions.Append(TweenSettingsExtensions.Append(DOTween.Sequence(), (Tween)(object)ShortcutExtensions.DOScaleX(((Component)((Unit)this).GetView<UnitView>()).transform, -1f, 0.25f)), (Tween)(object)ShortcutExtensions.DOLocalMoveX(((Component)((Unit)this).GetView<UnitView>()).transform, 0f, 5f, false)), (Ease)1), true), true)); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu2, SeijaPhase3True9Megumu, 2.5f, 0f, 2.5f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu2, SeijaPhase3True10Megumu, 2.5f, 0f, 2f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, SeijaPhase3True11Aya, 2.5f, 0f, 1.5f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu2, SeijaPhase3True12Megumu, 1f, 0f, 1f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, SeijaPhase3True13Aya, 3f, 0f, 3f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu2, SeijaPhase3True14Megumu, 2.5f, 0f, 2.5f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)this, SeijaPhase3True15Aya, 2.5f, 0f, 2.5f, true); TweenExtensions.WaitForCompletion((Tween)(object)TweenSettingsExtensions.SetAutoKill<TweenerCore<Vector3, Vector3, VectorOptions>>(TweenSettingsExtensions.SetUpdate<TweenerCore<Vector3, Vector3, VectorOptions>>(TweenSettingsExtensions.SetEase<TweenerCore<Vector3, Vector3, VectorOptions>>(ShortcutExtensions.DOLocalMoveX(((Component)((Unit)this).GetView<UnitView>()).transform, -12f, 5f, false), (Ease)1), true), true)); yield return (BattleAction)(object)PerformAction.Wait(0.5f, true); TweenExtensions.WaitForCompletion((Tween)(object)TweenSettingsExtensions.SetAutoKill<Sequence>(TweenSettingsExtensions.SetUpdate<Sequence>(TweenSettingsExtensions.SetEase<Sequence>(TweenSettingsExtensions.Append(TweenSettingsExtensions.Append(DOTween.Sequence(), (Tween)(object)ShortcutExtensions.DOScaleX(((Component)((Unit)megumu2).GetView<UnitView>()).transform, 1f, 0.2f)), (Tween)(object)ShortcutExtensions.DOLocalMoveX(((Component)((Unit)megumu2).GetView<UnitView>()).transform, -11f, 1f, false)), (Ease)1), true), true)); yield return (BattleAction)(object)PerformAction.Wait(2f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu2, SeijaPhase3True16Megumu, 1.5f, 0f, 1.5f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu2, SeijaPhase3True17Megumu, 3.5f, 0f, 3.5f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu2, SeijaPhase3True18Megumu, 3f, 0f, 3f, true); yield return (BattleAction)(object)PerformAction.Effect((Unit)(object)megumu2, "BuffFirepower", 0f, "Firepower", 0f, (EffectBehavior)0, 0f); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu2, SeijaPhase3True19Megumu, 2.5f, 0f, 2.5f, true); TweenExtensions.WaitForCompletion((Tween)(object)TweenSettingsExtensions.SetAutoKill<TweenerCore<Vector3, Vector3, VectorOptions>>(TweenSettingsExtensions.SetUpdate<TweenerCore<Vector3, Vector3, VectorOptions>>(TweenSettingsExtensions.SetEase<TweenerCore<Vector3, Vector3, VectorOptions>>(ShortcutExtensions.DOLocalMoveX(((Component)((Unit)megumu2).GetView<UnitView>()).transform, -22f, 5f, false), (Ease)1), true), true)); yield return (BattleAction)(object)PerformAction.Wait(3f, true); yield return (BattleAction)new SpawnEnemyAction(megumu2, typeof(AyaPlayerUnitM), 0, 0f, 0.5f, false); yield return (BattleAction)new SpawnEnemyAction(megumu2, typeof(AyaPlayerUnitS), 1, 0f, 0.5f, false); yield return (BattleAction)new SpawnEnemyAction(megumu2, typeof(AyaPlayerUnitO), 2, 0f, 0.5f, false); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is AyaPlayerUnitO), SeijaPhase3True20Okina, 2.5f, 0f, 2.5f, true); ((Unit)this).Battle.InstantWin(); } else { EnemyUnit megumu = ((Unit)this).Battle.AllAliveEnemies.First((EnemyUnit e) => e is AyaAllyLong); TweenExtensions.WaitForCompletion((Tween)(object)TweenSettingsExtensions.SetAutoKill<Sequence>(TweenSettingsExtensions.SetUpdate<Sequence>(TweenSettingsExtensions.SetEase<Sequence>(TweenSettingsExtensions.Append(TweenSettingsExtensions.Append(DOTween.Sequence(), (Tween)(object)ShortcutExtensions.DOScaleX(((Component)((Unit)this).GetView<UnitView>()).transform, -1f, 0.25f)), (Tween)(object)ShortcutExtensions.DOLocalMoveX(((Component)((Unit)this).GetView<UnitView>()).transform, -12f, 10f, false)), (Ease)1), true), true)); TweenExtensions.WaitForCompletion((Tween)(object)TweenSettingsExtensions.SetAutoKill<TweenerCore<Vector3, Vector3, VectorOptions>>(TweenSettingsExtensions.SetUpdate<TweenerCore<Vector3, Vector3, VectorOptions>>(TweenSettingsExtensions.SetEase<TweenerCore<Vector3, Vector3, VectorOptions>>(ShortcutExtensions.DOLocalMoveX(((Component)((Unit)megumu).GetView<UnitView>()).transform, -11f, 1f, false), (Ease)3), true), true)); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu, SeijaPhase3Normal2Megumu, 2.5f, 0f, 2.5f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu, SeijaPhase3Normal3Megumu, 2.5f, 0f, 3.5f, true); TweenExtensions.WaitForCompletion((Tween)(object)TweenSettingsExtensions.SetAutoKill<Sequence>(TweenSettingsExtensions.SetUpdate<Sequence>(TweenSettingsExtensions.SetEase<Sequence>(TweenSettingsExtensions.Append(TweenSettingsExtensions.Append(DOTween.Sequence(), (Tween)(object)ShortcutExtensions.DOScaleX(((Component)((Unit)megumu).GetView<UnitView>()).transform, 1f, 0.25f)), (Tween)(object)ShortcutExtensions.DOLocalMoveX(((Component)((Unit)megumu).GetView<UnitView>()).transform, -22f, 12f, false)), (Ease)1), true), true)); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)megumu, SeijaPhase3Normal4Megumu, 2.5f, 0f, 2.5f, false); ((Unit)this).Battle.InstantWin(); } } } private IEnumerable<BattleAction> FinalBossCardRemoving(CardEventArgs arg) { if (FinalBossSequence < 3 && FinalBossKeyCards.Contains(arg.Card)) { ((GameEventArgs)arg).ForceCancelBecause((CancelCause)4096); yield return (BattleAction)new ExileCardAction(arg.Card); } } private IEnumerable<BattleAction> FinalBossCardTransforming(CardTransformEventArgs arg) { if (FinalBossSequence < 3 && FinalBossKeyCards.Contains(arg.SourceCard)) { ((GameEventArgs)arg).ForceCancelBecause((CancelCause)4096); yield return (BattleAction)new ExileCardAction(arg.SourceCard); } } private IEnumerable<BattleAction> FinalBossEnemySpawned(UnitEventArgs args) { if (args.Unit is AyaAllyLong) { yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)FinalBoss, SeijaPhase31Seija, 2.5f, 0f, 2.5f, true); yield return (BattleAction)(object)PerformAction.Chat(args.Unit, SeijaPhase32Megumu, 1.5f, 0f, 1.5f, true); TweenExtensions.WaitForCompletion((Tween)(object)TweenSettingsExtensions.SetAutoKill<TweenerCore<Vector3, Vector3, VectorOptions>>(TweenSettingsExtensions.SetUpdate<TweenerCore<Vector3, Vector3, VectorOptions>>(TweenSettingsExtensions.SetEase<TweenerCore<Vector3, Vector3, VectorOptions>>(ShortcutExtensions.DOLocalMoveX(((Component)args.Unit.GetView<UnitView>()).transform, -12f, 3f, false), (Ease)3), true), true)); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)FinalBoss, SeijaPhase33Seija, 1.5f, 0f, 1.5f, true); yield return (BattleAction)(object)PerformAction.Chat((Unit)(object)FinalBoss, SeijaPhase34Seija, 1.5f, 0f, 1f, true); TweenExtensions.WaitForCompletion((Tween)(object)TweenSettingsExtensions.SetAutoKill<TweenerCore<Vector3, Vector3, VectorOptions>>(TweenSetting