Decompiled source of YuukaMod v0.2.2
YuukaMod.dll
Decompiled 2 days ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using AddWatermark; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using Cysharp.Threading.Tasks; using HarmonyLib; using LBoL.Base; using LBoL.Base.Extensions; using LBoL.ConfigData; using LBoL.Core; using LBoL.Core.Battle; using LBoL.Core.Battle.BattleActions; using LBoL.Core.Battle.Interactions; using LBoL.Core.Cards; using LBoL.Core.Randoms; using LBoL.Core.StatusEffects; using LBoL.Core.Units; using LBoL.EntityLib.Cards; using LBoL.EntityLib.Cards.Character.Cirno; using LBoL.EntityLib.Cards.Character.Reimu; using LBoL.EntityLib.Cards.Enemy; using LBoL.EntityLib.Cards.Neutral.NoColor; using LBoL.EntityLib.Exhibits; using LBoL.EntityLib.StatusEffects.Basic; using LBoL.EntityLib.StatusEffects.Cirno; using LBoL.EntityLib.StatusEffects.Enemy; using LBoL.EntityLib.StatusEffects.ExtraTurn; using LBoL.Presentation; using LBoL.Presentation.UI; using LBoLEntitySideloader; using LBoLEntitySideloader.Attributes; using LBoLEntitySideloader.CustomHandlers; using LBoLEntitySideloader.CustomKeywords; using LBoLEntitySideloader.Entities; using LBoLEntitySideloader.Resource; using LBoLEntitySideloader.Utils; using UnityEngine; using UnityEngine.Experimental.Rendering; using YuukaMod.BattleActions; using YuukaMod.Cards; using YuukaMod.Cards.Template; using YuukaMod.Config; using YuukaMod.Enemies; using YuukaMod.Enemies.Template; using YuukaMod.GunName; using YuukaMod.ImageLoader; using YuukaMod.Keywords; using YuukaMod.Localization; using YuukaMod.Logic; using YuukaMod.Patches; using YuukaMod.Source.Keywords; using YuukaMod.StatusEffects; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("LBoL.Base")] [assembly: IgnoresAccessChecksTo("LBoL.ConfigData")] [assembly: IgnoresAccessChecksTo("LBoL.Core")] [assembly: IgnoresAccessChecksTo("LBoL.EntityLib")] [assembly: IgnoresAccessChecksTo("LBoL.Presentation")] [assembly: IgnoresAccessChecksTo("Untitled.ConfigDataBuilder.Base")] [assembly: AssemblyCompany("YuukaMod")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+f8fe69df20faa6d4b9269d3701b92cf9a0feb02d")] [assembly: AssemblyProduct("YuukaMod")] [assembly: AssemblyTitle("YuukaMod")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace YuukaMod { [BepInPlugin("author.game.typeofmod.Yuuka", "YuukaMod", "0.0.1")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInProcess("LBoL.exe")] public class BepinexPlugin : BaseUnityPlugin { public static string modUniqueID = "YuukaMod"; public static string playerName = "Yuuka"; public static bool useInGameModel = false; public static string modelName = "Youmu"; public static bool modelIsFlipped = true; public static List<ManaColor> offColors = new List<ManaColor> { (ManaColor)1, (ManaColor)2, (ManaColor)3, (ManaColor)6 }; public static ConfigEntry<bool> enableAct1Boss; public static CustomConfigEntry<bool> enableAct1BossEntry = new CustomConfigEntry<bool>(value: true, "EnableAct1Boss", "EnableAct1Boss", "Toggle the Act 1 boss. Default: Off"); private static readonly Harmony harmony = PInfo.harmony; internal static ManualLogSource log; internal static TemplateSequenceTable sequenceTable = new TemplateSequenceTable(0); internal static IResourceSource embeddedSource = (IResourceSource)new EmbeddedSource(Assembly.GetExecutingAssembly()); internal static DirectorySource directorySource = new DirectorySource("author.game.typeofmod.Yuuka", ""); private void Awake() { log = ((BaseUnityPlugin)this).Logger; enableAct1Boss = ((BaseUnityPlugin)this).Config.Bind<bool>(enableAct1BossEntry.Section, enableAct1BossEntry.Key, enableAct1BossEntry.Value, enableAct1BossEntry.Description); Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject); ((Object)((Component)this).gameObject).hideFlags = (HideFlags)61; CardIndexGenerator.PromiseClearIndexSet(); EntityManager.RegisterSelf(); harmony.PatchAll(); if (Chainloader.PluginInfos.ContainsKey("neo.lbol.tools.watermark")) { WatermarkWrapper.ActivateWatermark(); } Func<Sprite> func = () => ResourceLoader.LoadSprite("BossIcon.png", (IResourceSource)(object)directorySource, (Rect?)null, 1, (Vector2?)null); if (enableAct1Boss.Value) { EnemyUnitTemplate.AddBossNodeIcon(modUniqueID, func, (Assembly)null); } YuukaCharacterArrangedHandle.RegisterHandlers(); YuukaSecondCardTracker.RegisterHandlers(); } private void OnDestroy() { if (harmony != null) { harmony.UnpatchSelf(); } } } public static class PInfo { public const string GUID = "author.game.typeofmod.Yuuka"; public const string Name = "YuukaMod"; public const string version = "0.0.1"; public static readonly Harmony harmony = new Harmony("author.game.typeofmod.Yuuka"); } public static class YuukaGardenArchitectConfig { public static int Option1FlowerToBonus = 3; public static int Option1GrowBonus = 2; public static int Option2FlowerBonus = 12; public static int Option3BloomToBonus = 3; public static int Option3FirepowerBonus = 1; } public static class YuukaSeasonsConfig { public static int BloomValue = 4; public static int GrowValue = 1; public static int SummerFlowerValue = 9; public static int FervorValue = 25; public static int BarrierValue = 5; } public class YuukaLoadouts { public static string UltimateSkillA = "YuukaUltA"; public static string UltimateSkillB = "YuukaUltB"; public static string ExhibitA = "YuukaExhibitA"; public static string ExhibitB = "YuukaExhibitB"; public static List<string> DeckA = new List<string> { "Shoot", "Shoot", "Boundary", "Boundary", "YuukaCharacterBaseAttackG", "YuukaCharacterBaseAttackG", "YuukaCharacterBaseBlockR", "YuukaCharacterBaseBlockR", "YuukaCharacterBloomingField", "YuukaCharacterRosepetalRuin" }; public static List<string> DeckB = new List<string> { "Shoot", "Shoot", "Boundary", "Boundary", "YuukaCharacterBaseAttackR", "YuukaCharacterBaseAttackR", "YuukaCharacterBaseBlockG", "YuukaCharacterBaseBlockG", "YuukaCharacterSunbeamBurst", "YuukaCharacterRadiantGlare" }; public static PlayerUnitConfig playerUnitConfig; static YuukaLoadouts() { //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Expected O, but got Unknown string modUniqueID = BepinexPlugin.modUniqueID; int? num = 0; ManaGroup val = default(ManaGroup); ((ManaGroup)(ref val)).White = 0; ((ManaGroup)(ref val)).Blue = 0; ((ManaGroup)(ref val)).Black = 0; ((ManaGroup)(ref val)).Red = 2; ((ManaGroup)(ref val)).Green = 2; ((ManaGroup)(ref val)).Colorless = 0; ((ManaGroup)(ref val)).Philosophy = 0; playerUnitConfig = new PlayerUnitConfig(modUniqueID, 8, 0, num, "", "#e58c27", true, 80, val, 80, 0, UltimateSkillA, UltimateSkillB, ExhibitA, ExhibitB, (IReadOnlyList<string>)DeckA, (IReadOnlyList<string>)DeckB, 2, 3); } } public sealed class YuukaModDef : PlayerUnitTemplate { [EntityLogic(typeof(YuukaModDef))] public sealed class YuukaMod : PlayerUnit { protected override void OnEnterGameRun(GameRunController gameRun) { CardConfig.FromId("PatchouliGreenAttack").IsPooled = false; } } [HarmonyPatch(typeof(UiManager), "LeaveGameRun")] private class UiManager_LeaveGameRun_Patch { private static void Postfix(UiManager __instance) { CardConfig.FromId("PatchouliGreenAttack").IsPooled = true; } } public UniTask<Sprite>? LoadSpellPortraitAsync { get; private set; } public override IdContainer GetId() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) return IdContainer.op_Implicit(BepinexPlugin.modUniqueID); } public override LocalizationOption LoadLocalization() { return (LocalizationOption)(object)YuukaLocalization.PlayerUnitBatchLoc.AddEntity((EntityDefinition)(object)this); } public override PlayerImages LoadPlayerImages() { return YuukaImageLoader.LoadPlayerImages(BepinexPlugin.playerName); } public override PlayerUnitConfig MakeConfig() { return YuukaLoadouts.playerUnitConfig; } public override EikiSummonInfo AssociateEikiSummon() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown return new EikiSummonInfo(typeof(global::YuukaMod.Enemies.YuukaMod), (string)null); } } internal class WatermarkWrapper { [MethodImpl(MethodImplOptions.NoInlining)] internal static void ActivateWatermark() { API.ActivateWatermark(); } } } namespace YuukaMod.YuukaUlt { public class YuukaUltTemplate : UltimateSkillTemplate { public override IdContainer GetId() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) return IdContainer.op_Implicit(YuukaDefaultConfig.GetDefaultID((EntityDefinition)(object)this)); } public override LocalizationOption LoadLocalization() { return (LocalizationOption)(object)YuukaLocalization.UltimateSkillsBatchLoc.AddEntity((EntityDefinition)(object)this); } public override Sprite LoadSprite() { return YuukaImageLoader.LoadUltLoader((UltimateSkillTemplate)(object)this); } public override UltimateSkillConfig MakeConfig() { throw new NotImplementedException(); } public UltimateSkillConfig GetDefaulUltConfig() { return YuukaDefaultConfig.GetDefaultUltConfig(); } } public sealed class YuukaCharacterUltFillerPrototypeMasterSparkDef : YuukaUltTemplate { public override UltimateSkillConfig MakeConfig() { UltimateSkillConfig defaulUltConfig = GetDefaulUltConfig(); defaulUltConfig.Damage = 30; defaulUltConfig.RelativeCards = new List<string> { "RManaCard" }; defaulUltConfig.Value1 = 1; return defaulUltConfig; } } [EntityLogic(typeof(YuukaCharacterUltFillerPrototypeMasterSparkDef))] public sealed class YuukaCharacterUltFillerPrototypeMasterSpark : UltimateSkill { public YuukaCharacterUltFillerPrototypeMasterSpark() { ((UltimateSkill)this).TargetType = (TargetType)1; ((UltimateSkill)this).GunName = GunNameID.GetGunFromId(12170); } protected override IEnumerable<BattleAction> Actions(UnitSelector selector) { EnemyUnit enemy = selector.GetEnemy(((UltimateSkill)this).Battle); yield return (BattleAction)new DamageAction((Unit)(object)((UltimateSkill)this).Owner, (Unit)(object)enemy, ((UltimateSkill)this).Damage, ((UltimateSkill)this).GunName, (GunType)0); yield return (BattleAction)new AddCardsToHandAction((Card[])(object)new Card[1] { (Card)Library.CreateCard<RManaCard>() }); } } public sealed class YuukaUltADef : YuukaUltTemplate { public override UltimateSkillConfig MakeConfig() { UltimateSkillConfig defaulUltConfig = GetDefaulUltConfig(); defaulUltConfig.Damage = 15; defaulUltConfig.Value1 = 3; defaulUltConfig.RelativeEffects = new List<string> { "Graze" }; return defaulUltConfig; } } [EntityLogic(typeof(YuukaUltADef))] public sealed class YuukaUltA : UltimateSkill { public YuukaUltA() { ((UltimateSkill)this).TargetType = (TargetType)2; ((UltimateSkill)this).GunName = GunNameID.GetGunFromId(25100); } protected override IEnumerable<BattleAction> Actions(UnitSelector selector) { yield return (BattleAction)new DamageAction((Unit)(object)((UltimateSkill)this).Owner, (IEnumerable<Unit>)selector.GetUnits(((UltimateSkill)this).Battle), ((UltimateSkill)this).Damage, ((UltimateSkill)this).GunName, (GunType)0); yield return (BattleAction)(object)new ApplyStatusEffectAction<Graze>((Unit)(object)((UltimateSkill)this).Owner, (int?)((UltimateSkill)this).Value1, (int?)0, (int?)0, (int?)0, 0.2f, true); } } public sealed class YuukaUltBDef : YuukaUltTemplate { public override UltimateSkillConfig MakeConfig() { UltimateSkillConfig defaulUltConfig = GetDefaulUltConfig(); defaulUltConfig.Damage = 30; defaulUltConfig.RelativeCards = new List<string> { "RManaCard" }; defaulUltConfig.Value1 = 1; return defaulUltConfig; } } [EntityLogic(typeof(YuukaUltBDef))] public sealed class YuukaUltB : UltimateSkill { public YuukaUltB() { ((UltimateSkill)this).TargetType = (TargetType)1; ((UltimateSkill)this).GunName = GunNameID.GetGunFromId(23061); } protected override IEnumerable<BattleAction> Actions(UnitSelector selector) { EnemyUnit enemy = selector.GetEnemy(((UltimateSkill)this).Battle); yield return (BattleAction)new DamageAction((Unit)(object)((UltimateSkill)this).Owner, (Unit)(object)enemy, ((UltimateSkill)this).Damage, ((UltimateSkill)this).GunName, (GunType)0); yield return (BattleAction)new AddCardsToHandAction((Card[])(object)new Card[1] { (Card)Library.CreateCard<RManaCard>() }); } } } namespace YuukaMod.StatusEffects { public sealed class YuukaArrangedKeywordDef : YuukaStatusEffectTemplate { public override Sprite LoadSprite() { return null; } } [EntityLogic(typeof(YuukaArrangedKeywordDef))] public sealed class YuukaArrangedKeyword : StatusEffect { } public sealed class YuukaArrangeKeywordDef : YuukaStatusEffectTemplate { public override Sprite LoadSprite() { return null; } } [EntityLogic(typeof(YuukaArrangeKeywordDef))] public sealed class YuukaArrangeKeyword : StatusEffect { } public sealed class YuukaFlourishKeywordDef : YuukaStatusEffectTemplate { public override Sprite LoadSprite() { return null; } } [EntityLogic(typeof(YuukaFlourishKeywordDef))] public sealed class YuukaFlourishKeyword : StatusEffect { } public sealed class YuukaThirdTurnKeywordDef : YuukaStatusEffectTemplate { public override Sprite LoadSprite() { return null; } } [EntityLogic(typeof(YuukaThirdTurnKeywordDef))] public sealed class YuukaThirdTurnKeyword : StatusEffect { } public class YuukaStatusEffectTemplate : StatusEffectTemplate { public override IdContainer GetId() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) return IdContainer.op_Implicit(YuukaDefaultConfig.GetDefaultID((EntityDefinition)(object)this)); } public override LocalizationOption LoadLocalization() { return (LocalizationOption)(object)YuukaLocalization.StatusEffectsBatchLoc.AddEntity((EntityDefinition)(object)this); } public override Sprite LoadSprite() { return YuukaImageLoader.LoadStatusEffectLoader((StatusEffectTemplate)(object)this); } public override StatusEffectConfig MakeConfig() { return GetDefaultStatusEffectConfig(); } public static StatusEffectConfig GetDefaultStatusEffectConfig() { return YuukaDefaultConfig.GetDefaultStatusEffectConfig(); } } public sealed class YuukaBloomSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(YuukaBloomSeDef))] public sealed class YuukaBloomSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnStarting, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnStarting); } private IEnumerable<BattleAction> OnOwnerTurnStarting(UnitEventArgs args) { ((StatusEffect)this).NotifyActivating(); if (((StatusEffect)this).Level < 5) { if (((StatusEffect)this).Level <= 0) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); yield break; } yield return (BattleAction)new AddCardsToHandAction((Card[])(object)new Card[1] { Library.CreateCard<YuukaCharacterTokenBlossomSmall>() }); ((StatusEffect)this).Level = ((StatusEffect)this).Level - 1; if (args.Unit.GetStatusEffect<YuukaShedBloomShieldBornSe>() != null) { YuukaShedBloomShieldBornSe pv3 = args.Unit.GetStatusEffect<YuukaShedBloomShieldBornSe>(); yield return (BattleAction)new CastBlockShieldAction(args.Unit, args.Unit, 0, ((StatusEffect)pv3).Level, (BlockShieldType)2, true); } } else if (((StatusEffect)this).Level < 15) { yield return (BattleAction)new AddCardsToHandAction((Card[])(object)new Card[1] { Library.CreateCard<YuukaCharacterTokenBlossomMedium>() }); ((StatusEffect)this).Level = ((StatusEffect)this).Level - 2; if (args.Unit.GetStatusEffect<YuukaShedBloomShieldBornSe>() != null) { YuukaShedBloomShieldBornSe pv2 = args.Unit.GetStatusEffect<YuukaShedBloomShieldBornSe>(); yield return (BattleAction)new CastBlockShieldAction(args.Unit, args.Unit, 0, ((StatusEffect)pv2).Level * 2, (BlockShieldType)2, true); } } else { yield return (BattleAction)new AddCardsToHandAction((Card[])(object)new Card[1] { Library.CreateCard<YuukaCharacterTokenBlossomLarge>() }); ((StatusEffect)this).Level = ((StatusEffect)this).Level - 3; if (args.Unit.GetStatusEffect<YuukaShedBloomShieldBornSe>() != null) { YuukaShedBloomShieldBornSe pv = args.Unit.GetStatusEffect<YuukaShedBloomShieldBornSe>(); yield return (BattleAction)new CastBlockShieldAction(args.Unit, args.Unit, 0, ((StatusEffect)pv).Level * 3, (BlockShieldType)2, true); } } if (((StatusEffect)this).Level <= 0) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } } public sealed class YuukaBossSleepingTerrorSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.HasCount = true; defaultStatusEffectConfig.CountStackType = (StackType)0; return defaultStatusEffectConfig; } } [EntityLogic(typeof(YuukaBossSleepingTerrorSeDef))] public sealed class YuukaBossSleepingTerrorSe : StatusEffect { private int _internalCount; private bool _hasTriggered = false; public string HasTriggered { get { if (_hasTriggered) { return "Has already triggered this turn."; } return "Can trigger once per turn."; } } protected override void OnAdded(Unit unit) { _internalCount = ((StatusEffect)this).Limit; ((StatusEffect)this).Count = _internalCount; ((StatusEffect)this).HandleOwnerEvent<UnitEventArgs>(unit.TurnStarting, (GameEventHandler<UnitEventArgs>)OnTurnStarting); ((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(unit.DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnDamageReceived); } public void OnTurnStarting(UnitEventArgs args) { _internalCount = ((StatusEffect)this).Limit; ((StatusEffect)this).Count = _internalCount; _hasTriggered = false; } private IEnumerable<BattleAction> OnDamageReceived(DamageEventArgs args) { DamageInfo damageInfo = args.DamageInfo; int num = MathExtensions.RoundToInt(((DamageInfo)(ref damageInfo)).Damage) - _internalCount; if (num > 0 && !_hasTriggered) { yield return (BattleAction)(object)new ApplyStatusEffectAction<Firepower>(((StatusEffect)this).Owner, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true); _hasTriggered = true; ((StatusEffect)this).NotifyActivating(); ((GameEventArgs)args).AddModifier((GameEntity)(object)this); } YuukaBossSleepingTerrorSe yuukaBossSleepingTerrorSe = this; int internalCount = _internalCount; damageInfo = args.DamageInfo; yuukaBossSleepingTerrorSe._internalCount = internalCount - MathExtensions.RoundToInt(((DamageInfo)(ref damageInfo)).Damage); ((StatusEffect)this).Count = Math.Max(_internalCount, 0); } } public sealed class YuukaBouquetBindingSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.HasLevel = false; return defaultStatusEffectConfig; } } [EntityLogic(typeof(YuukaBouquetBindingSeDef))] public sealed class YuukaBouquetBindingSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<CardsEventArgs>(((StatusEffect)this).Battle.CardsAddedToDiscard, (EventSequencedReactor<CardsEventArgs>)OnCardsAddedToDiscard); ((StatusEffect)this).ReactOwnerEvent<CardsEventArgs>(((StatusEffect)this).Battle.CardsAddedToHand, (EventSequencedReactor<CardsEventArgs>)OnCardsAddedToHand); ((StatusEffect)this).ReactOwnerEvent<CardsAddingToDrawZoneEventArgs>(((StatusEffect)this).Battle.CardsAddedToDrawZone, (EventSequencedReactor<CardsAddingToDrawZoneEventArgs>)OnCardsAddedToDrawZone); } private IEnumerable<BattleAction> OnCardsAddedToHand(CardsEventArgs args) { List<Card> list = args.Cards.Where((Card card) => card is SummerFlower).ToList(); if (list.Count == 0) { yield break; } foreach (Card card2 in list) { yield return (BattleAction)new ExileCardAction(card2); yield return (BattleAction)new AddCardsToHandAction((Card[])(object)new Card[1] { Library.CreateCard<YuukaCharacterTokenBouquetCharm>() }); } } private IEnumerable<BattleAction> OnCardsAddedToDiscard(CardsEventArgs args) { List<Card> list = args.Cards.Where((Card card) => card is SummerFlower).ToList(); BepinexPlugin.log.LogWarning((object)$"Amount of Midsummer Flowers created: {list.Count}"); if (list.Count == 0) { yield break; } foreach (Card card2 in list) { yield return (BattleAction)new ExileCardAction(card2); yield return (BattleAction)new AddCardsToDiscardAction((Card[])(object)new Card[1] { Library.CreateCard<YuukaCharacterTokenBouquetCharm>() }); } } private IEnumerable<BattleAction> OnCardsAddedToDrawZone(CardsAddingToDrawZoneEventArgs args) { List<Card> list = args.Cards.Where((Card card) => card is SummerFlower).ToList(); BepinexPlugin.log.LogWarning((object)$"Amount of Midsummer Flowers created: {list.Count}"); if (list.Count == 0) { yield break; } foreach (Card card2 in list) { yield return (BattleAction)new ExileCardAction(card2); yield return (BattleAction)new AddCardsToDrawZoneAction((IEnumerable<Card>)Library.CreateCards<YuukaCharacterTokenBouquetCharm>(1, false), (DrawZoneTarget)2, (AddCardsType)0); } } } public sealed class YuukaDawnsPromiseSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.HasCount = true; defaultStatusEffectConfig.CountStackType = (StackType)0; return defaultStatusEffectConfig; } } [EntityLogic(typeof(YuukaDawnsPromiseSeDef))] public sealed class YuukaDawnsPromiseSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnStarting, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnStarting); ((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed); } private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args) { ManaGroup consumingMana = args.ConsumingMana; if (((ManaGroup)(ref consumingMana)).Amount >= 3) { YuukaDawnsPromiseSe yuukaDawnsPromiseSe = this; consumingMana = args.ConsumingMana; yield return ((StatusEffect)yuukaDawnsPromiseSe).BuffAction<YuukaDawnsPromiseSe>(((ManaGroup)(ref consumingMana)).Amount, 0, 0, 0, 0.2f); } } private IEnumerable<BattleAction> OnOwnerTurnStarting(UnitEventArgs args) { ((StatusEffect)this).NotifyActivating(); bool is_upgraded = ((StatusEffect)this).Count == 4; YuukaCharacterDawnsFury attack = Library.CreateCard<YuukaCharacterDawnsFury>(is_upgraded); ((Card)attack).DeltaDamage = ((Card)attack).DeltaDamage + (((StatusEffect)this).Level - ((Card)attack).ConfigDamage); yield return (BattleAction)new AddCardsToHandAction((Card[])(object)new Card[1] { attack }); yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } public sealed class YuukaDazzlingFlareSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)2; defaultStatusEffectConfig.HasLevel = false; defaultStatusEffectConfig.HasDuration = true; defaultStatusEffectConfig.DurationStackType = (StackType)0; defaultStatusEffectConfig.DurationDecreaseTiming = (DurationDecreaseTiming)3; return defaultStatusEffectConfig; } } [EntityLogic(typeof(YuukaDazzlingFlareSeDef))] public sealed class YuukaDazzlingFlareSe : StatusEffect { public override bool ShouldPreventCardUsage(Card card) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Invalid comparison between Unknown and I4 return (int)card.CardType == 1; } } public sealed class YuukaDrawNextTurnSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Order = 15; return defaultStatusEffectConfig; } } [EntityLogic(typeof(YuukaDrawNextTurnSeDef))] public sealed class YuukaDrawNextTurnSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnTurnStarted); } private IEnumerable<BattleAction> OnTurnStarted(UnitEventArgs args) { <>n__0(); yield return (BattleAction)new DrawManyCardAction(((StatusEffect)this).Level); yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((StatusEffect)this).NotifyActivating(); } } public sealed class YuukaDrawReductionNextTurnSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)2; return defaultStatusEffectConfig; } } [EntityLogic(typeof(YuukaDrawReductionNextTurnSeDef))] public sealed class YuukaDrawReductionNextTurnSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnStarted); BattleController battle = ((StatusEffect)this).Battle; battle.DrawCardCount -= ((StatusEffect)this).Level; } protected override void OnRemoved(Unit unit) { BattleController battle = ((StatusEffect)this).Battle; battle.DrawCardCount += ((StatusEffect)this).Level; } private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } public sealed class YuukaFervorInTwoTurnsSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Order = 12; return defaultStatusEffectConfig; } } [EntityLogic(typeof(YuukaFervorInTwoTurnsSeDef))] public sealed class YuukaFervorInTwoTurnsSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnStarted); } private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args) { ((StatusEffect)this).NotifyActivating(); yield return ((StatusEffect)this).BuffAction<YuukaFervorNextTurnSe>(((StatusEffect)this).Level, 0, 0, 0, 0.2f); yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } public sealed class YuukaFervorNextTurnSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Order = 11; return defaultStatusEffectConfig; } } [EntityLogic(typeof(YuukaFervorNextTurnSeDef))] public sealed class YuukaFervorNextTurnSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnStarted); } private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args) { ((StatusEffect)this).NotifyActivating(); yield return ((StatusEffect)this).BuffAction<YuukaFervorSe>(((StatusEffect)this).Level, 0, 0, 0, 0.2f); yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } public sealed class YuukaFervorSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(YuukaFervorSeDef))] public sealed class YuukaFervorSe : StatusEffect { private float AttackRatio => ((float)((StatusEffect)this).Level + 100f) / 100f; protected override void OnAdded(Unit unit) { ((StatusEffect)this).HandleOwnerEvent<DamageDealingEventArgs>(((StatusEffect)this).Owner.DamageDealing, (GameEventHandler<DamageDealingEventArgs>)OnDamageDealing); ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnEnded, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnEnded); } private void OnDamageDealing(DamageDealingEventArgs args) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Invalid comparison between Unknown and I4 //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Invalid comparison between Unknown and I4 DamageInfo damageInfo = args.DamageInfo; if ((int)((DamageInfo)(ref damageInfo)).DamageType == 2) { damageInfo = args.DamageInfo; args.DamageInfo = ((DamageInfo)(ref damageInfo)).MultiplyBy(AttackRatio); ((GameEventArgs)args).AddModifier((GameEntity)(object)this); if ((int)((GameEventArgs)args).Cause != 20) { ((StatusEffect)this).NotifyActivating(); } } } private IEnumerable<BattleAction> OnOwnerTurnEnded(UnitEventArgs args) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } public sealed class YuukaFloweringResonanceSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(YuukaFloweringResonanceSeDef))] public sealed class YuukaFloweringResonanceSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnEnded, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnEnded); ((StatusEffect)this).ReactOwnerEvent<BlockShieldEventArgs>(((Unit)((StatusEffect)this).Battle.Player).BlockShieldGained, (EventSequencedReactor<BlockShieldEventArgs>)OnBlockShieldGained); } private IEnumerable<BattleAction> OnBlockShieldGained(BlockShieldEventArgs args) { if (args.Block > 0f) { yield return ((StatusEffect)this).BuffAction<NextTurnGainBlock>((int)(args.Block * (float)((StatusEffect)this).Level), 0, 0, 0, 0.2f); } if (args.Shield > 0f) { yield return ((StatusEffect)this).BuffAction<NextTurnGainBlock>((int)(args.Shield * (float)((StatusEffect)this).Level), 0, 0, 0, 0.2f); } } private IEnumerable<BattleAction> OnOwnerTurnEnded(UnitEventArgs args) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } public sealed class YuukaFlowersBirdsWindAndMoonSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(YuukaFlowersBirdsWindAndMoonSeDef))] public sealed class YuukaFlowersBirdsWindAndMoonSe : StatusEffect { public ManaGroup Mana { get; private set; } protected override void OnAdded(Unit unit) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) ((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed); ManaGroup mana = default(ManaGroup); ((ManaGroup)(ref mana)).Any = ((StatusEffect)this).Level; Mana = mana; } private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args) { if (args.Card.HasKeyword((Keyword)4398046511104L) || ((Enum)args.Card.ConfigRelativeKeywords).HasFlag((Enum)(object)(Keyword)4398046511104L)) { ((StatusEffect)this).NotifyActivating(); if (args.Card is ReimuSakura) { args.Card.DecreaseBaseCost(Mana); } yield return (BattleAction)(object)new IncreasePlayCountAction(args.Card, ((StatusEffect)this).Level); } if (args.Card is SummerFlower) { ((StatusEffect)this).NotifyActivating(); yield return ((StatusEffect)this).BuffAction<SummerFlowerSe>(args.Card.Value1 * ((StatusEffect)this).Level, 0, 0, 0, 0.2f); } } } public sealed class YuukaFrostNocturneSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(YuukaFrostNocturneSeDef))] public sealed class YuukaFrostNocturneSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<StatusEffectApplyEventArgs>(((Unit)((StatusEffect)this).Battle.Player).StatusEffectAdded, (EventSequencedReactor<StatusEffectApplyEventArgs>)StatusEffectAdded); } private IEnumerable<BattleAction> StatusEffectAdded(StatusEffectApplyEventArgs args) { if (args.Effect is YuukaBloomSe) { int level = args.Level.GetValueOrDefault(); yield return ((StatusEffect)this).BuffAction<FrostArmor>(((StatusEffect)this).Level * level, 0, 0, 0, 0.2f); } } } public sealed class YuukaGardenArchitectChoice1SeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.HasCount = true; defaultStatusEffectConfig.CountStackType = (StackType)0; return defaultStatusEffectConfig; } } [EntityLogic(typeof(YuukaGardenArchitectChoice1SeDef))] public sealed class YuukaGardenArchitectChoice1Se : StatusEffect { public ManaGroup Mana; public int FlowerReq => YuukaGardenArchitectConfig.Option1FlowerToBonus; protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<CardsEventArgs>(((StatusEffect)this).Battle.CardsAddedToDiscard, (EventSequencedReactor<CardsEventArgs>)OnCardsAddedToDiscard); ((StatusEffect)this).ReactOwnerEvent<CardsEventArgs>(((StatusEffect)this).Battle.CardsAddedToHand, (EventSequencedReactor<CardsEventArgs>)OnCardsAddedToHand); ((StatusEffect)this).ReactOwnerEvent<CardsAddingToDrawZoneEventArgs>(((StatusEffect)this).Battle.CardsAddedToDrawZone, (EventSequencedReactor<CardsAddingToDrawZoneEventArgs>)OnCardsAddedToDrawZone); } private IEnumerable<BattleAction> OnCardsAddedToHand(CardsEventArgs args) { List<Card> list = args.Cards.Where((Card card) => card is SummerFlower).ToList(); if (list.Count == 0) { yield break; } foreach (Card card2 in list) { if (((Unit)((StatusEffect)this).Battle.Player).GetStatusEffect<YuukaBouquetBindingSe>() == null) { yield return (BattleAction)new ExileCardAction(card2); } if (((StatusEffect)this).Count == 1) { new List<Card>(); List<Card> list2 = (from card in ((StatusEffect)this).Battle.HandZone.Concat(((StatusEffect)this).Battle.DrawZoneToShow).Concat(((StatusEffect)this).Battle.DiscardZone) where card.HasKeyword((Keyword)4398046511104L) || ((Enum)card.ConfigRelativeKeywords).HasFlag((Enum)(object)(Keyword)4398046511104L) select card).ToList(); foreach (Card card3 in list2) { if (card2 is ReimuSakura) { card2.DecreaseBaseCost(Mana * ((StatusEffect)this).Level); } yield return (BattleAction)(object)new IncreasePlayCountAction(card3, ((StatusEffect)this).Level * YuukaGardenArchitectConfig.Option1GrowBonus); } ((StatusEffect)this).Count = YuukaGardenArchitectConfig.Option1FlowerToBonus; ((StatusEffect)this).NotifyActivating(); } else { ((StatusEffect)this).Count = ((StatusEffect)this).Count - 1; } } } private IEnumerable<BattleAction> OnCardsAddedToDiscard(CardsEventArgs args) { List<Card> list = args.Cards.Where((Card card) => card is SummerFlower).ToList(); BepinexPlugin.log.LogWarning((object)$"Amount of Midsummer Flowers created: {list.Count}"); if (list.Count == 0) { yield break; } foreach (Card card2 in list) { if (((Unit)((StatusEffect)this).Battle.Player).GetStatusEffect<YuukaBouquetBindingSe>() == null) { yield return (BattleAction)new ExileCardAction(card2); } if (((StatusEffect)this).Count == 1) { new List<Card>(); List<Card> list2 = (from card in ((StatusEffect)this).Battle.HandZone.Concat(((StatusEffect)this).Battle.DrawZoneToShow).Concat(((StatusEffect)this).Battle.DiscardZone) where card.HasKeyword((Keyword)4398046511104L) || ((Enum)card.ConfigRelativeKeywords).HasFlag((Enum)(object)(Keyword)4398046511104L) select card).ToList(); foreach (Card card3 in list2) { if (card2 is ReimuSakura) { card2.DecreaseBaseCost(Mana * ((StatusEffect)this).Level); } yield return (BattleAction)(object)new IncreasePlayCountAction(card3, ((StatusEffect)this).Level * YuukaGardenArchitectConfig.Option1GrowBonus); } ((StatusEffect)this).Count = YuukaGardenArchitectConfig.Option1FlowerToBonus; ((StatusEffect)this).NotifyActivating(); } else { ((StatusEffect)this).Count = ((StatusEffect)this).Count - 1; } } } private IEnumerable<BattleAction> OnCardsAddedToDrawZone(CardsAddingToDrawZoneEventArgs args) { List<Card> list = args.Cards.Where((Card card) => card is SummerFlower).ToList(); BepinexPlugin.log.LogWarning((object)$"Amount of Midsummer Flowers created: {list.Count}"); if (list.Count == 0) { yield break; } foreach (Card card2 in list) { if (((Unit)((StatusEffect)this).Battle.Player).GetStatusEffect<YuukaBouquetBindingSe>() == null) { yield return (BattleAction)new ExileCardAction(card2); } if (((StatusEffect)this).Count == 1) { new List<Card>(); List<Card> list2 = (from card in ((StatusEffect)this).Battle.HandZone.Concat(((StatusEffect)this).Battle.DrawZoneToShow).Concat(((StatusEffect)this).Battle.DiscardZone) where card.HasKeyword((Keyword)4398046511104L) || ((Enum)card.ConfigRelativeKeywords).HasFlag((Enum)(object)(Keyword)4398046511104L) select card).ToList(); foreach (Card card3 in list2) { if (card2 is ReimuSakura) { card2.DecreaseBaseCost(Mana * ((StatusEffect)this).Level); } yield return (BattleAction)(object)new IncreasePlayCountAction(card3, ((StatusEffect)this).Level * YuukaGardenArchitectConfig.Option1GrowBonus); } ((StatusEffect)this).Count = YuukaGardenArchitectConfig.Option1FlowerToBonus; ((StatusEffect)this).NotifyActivating(); } else { ((StatusEffect)this).Count = ((StatusEffect)this).Count - 1; } } } public YuukaGardenArchitectChoice1Se() { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) ManaGroup mana = default(ManaGroup); ((ManaGroup)(ref mana)).Any = YuukaSeasonsConfig.GrowValue; Mana = mana; ((StatusEffect)this)..ctor(); } } public sealed class YuukaGardenArchitectChoice2SeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(YuukaGardenArchitectChoice2SeDef))] public sealed class YuukaGardenArchitectChoice2Se : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed); } private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args) { if (args.Card.HasKeyword((Keyword)4398046511104L) || ((Enum)args.Card.ConfigRelativeKeywords).HasFlag((Enum)(object)(Keyword)4398046511104L)) { yield return ((StatusEffect)this).BuffAction<SummerFlowerSe>(((StatusEffect)this).Level, 0, 0, 0, 0.2f); } } } public sealed class YuukaGardenArchitectChoice3SeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.HasCount = true; defaultStatusEffectConfig.CountStackType = (StackType)0; return defaultStatusEffectConfig; } } [EntityLogic(typeof(YuukaGardenArchitectChoice3SeDef))] public sealed class YuukaGardenArchitectChoice3Se : StatusEffect { public int BloomReq => YuukaGardenArchitectConfig.Option3BloomToBonus; protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<StatusEffectApplyEventArgs>(((Unit)((StatusEffect)this).Battle.Player).StatusEffectAdded, (EventSequencedReactor<StatusEffectApplyEventArgs>)StatusEffectAdded); } private IEnumerable<BattleAction> StatusEffectAdded(StatusEffectApplyEventArgs args) { if (!(args.Effect is YuukaBloomSe)) { yield break; } int bloom = args.Level.GetValueOrDefault(); if (bloom >= ((StatusEffect)this).Count) { while (bloom >= ((StatusEffect)this).Count) { bloom -= ((StatusEffect)this).Count; yield return ((StatusEffect)this).BuffAction<Firepower>(YuukaGardenArchitectConfig.Option3FirepowerBonus * ((StatusEffect)this).Level, 0, 0, 0, 0.2f); ((StatusEffect)this).Count = YuukaGardenArchitectConfig.Option3BloomToBonus; } if (bloom > 0) { ((StatusEffect)this).Count = ((StatusEffect)this).Count - bloom; } } else { ((StatusEffect)this).Count = ((StatusEffect)this).Count - bloom; } } } public sealed class YuukaGardenOfEndlessSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Order = 40; return defaultStatusEffectConfig; } } [EntityLogic(typeof(YuukaGardenOfEndlessSeDef))] public sealed class YuukaGardenOfEndlessSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnTurnStarted); } private IEnumerable<BattleAction> OnTurnStarted(UnitEventArgs args) { <>n__0(); yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)Library.CreateCards<SummerFlower>(((StatusEffect)this).Level, false), (AddCardsType)0); int turnCounter = ((Unit)((StatusEffect)this).Battle.Player).TurnCounter; if (turnCounter % 3 == 0) { yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)Library.CreateCards<SummerFlower>(turnCounter / 3, false), (AddCardsType)0); } } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((StatusEffect)this).NotifyActivating(); } } public sealed class YuukaNightSkyDanceSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(YuukaNightSkyDanceSeDef))] public sealed class YuukaNightSkyDanceSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(((Unit)((StatusEffect)this).Battle.Player).DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnPlayerDamageReceived); } private IEnumerable<BattleAction> OnPlayerDamageReceived(DamageEventArgs args) { DamageInfo damageInfo = args.DamageInfo; if (((DamageInfo)(ref damageInfo)).IsGrazed) { <>n__0(); yield return (BattleAction)(object)new ApplyStatusEffectAction<YuukaFervorNextTurnSe>(((StatusEffect)this).Owner, (int?)((StatusEffect)this).Level, (int?)null, (int?)null, (int?)null, 0f, true); } } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((StatusEffect)this).NotifyActivating(); } } public sealed class YuukaPerfectCompositionSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(YuukaPerfectCompositionSeDef))] public sealed class YuukaPerfectCompositionSe : StatusEffect { private string Header => ((GameEntity)this).LocalizeProperty("Header", false, true); protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnEnding, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnEnding); } private IEnumerable<BattleAction> OnOwnerTurnEnding(UnitEventArgs args) { if (((StatusEffect)this).Battle.BattleShouldEnd) { yield break; } List<Card> list = (from card in ((StatusEffect)this).Battle.HandZone.Concat(((StatusEffect)this).Battle.DrawZoneToShow).Concat(((StatusEffect)this).Battle.DiscardZone) select (card)).ToList(); if (CollectionsExtensions.Empty<Card>((IReadOnlyCollection<Card>)list)) { yield break; } SelectHandInteraction interaction = new SelectHandInteraction(0, ((StatusEffect)this).Level, (IEnumerable<Card>)list); ((Interaction)interaction).Description = Header; yield return (BattleAction)new InteractionAction((Interaction)(object)interaction, false); IReadOnlyList<Card> cards = interaction.SelectedCards; if (cards.Count <= 0) { yield break; } foreach (Card card2 in cards) { KeywordManager.AddCustomKeyword(card2, YuukaKeywords.YuukaArrangedKW); yield return (BattleAction)new MoveCardToDrawZoneAction(card2, (DrawZoneTarget)0); } } } public sealed class YuukaPerfectSlumbersSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Order = 100; defaultStatusEffectConfig.Type = (StatusEffectType)2; return defaultStatusEffectConfig; } } [EntityLogic(typeof(YuukaPerfectSlumbersSeDef))] public sealed class YuukaPerfectSlumbersSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnStarted); } private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args) { bool sleep = true; if (args.Unit.GetStatusEffect<SuperExtraTurn>() != null) { SuperExtraTurn SET = ((Unit)((StatusEffect)this).Battle.Player).GetStatusEffect<SuperExtraTurn>(); if (SET.IsInExtraTurnByThis) { sleep = false; } } if (!sleep) { yield break; } yield return (BattleAction)new RequestEndPlayerTurnAction(); if (((StatusEffect)this).Level <= 0) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); yield break; } ((StatusEffect)this).Level = ((StatusEffect)this).Level - 1; if (((StatusEffect)this).Level <= 0) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } } public sealed class YuukaPhotosynthesisSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(YuukaPhotosynthesisSeDef))] public sealed class YuukaPhotosynthesisSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed); } private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args) { ManaGroup consumingMana = args.ConsumingMana; if (((ManaGroup)(ref consumingMana)).Amount >= 3) { yield return ((StatusEffect)this).BuffAction<YuukaBloomSe>(((StatusEffect)this).Level, 0, 0, 0, 0.2f); } } } public sealed class YuukaShedBloomShieldBornSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(YuukaShedBloomShieldBornSeDef))] public sealed class YuukaShedBloomShieldBornSe : StatusEffect { protected override void OnAdded(Unit unit) { } } public sealed class YuukaSolarCoronationSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(YuukaSolarCoronationSeDef))] public sealed class YuukaSolarCoronationSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnStarted); } private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args) { int turnCounter = ((Unit)((StatusEffect)this).Battle.Player).TurnCounter; if (turnCounter % 3 == 0) { yield return ((StatusEffect)this).BuffAction<YuukaFervorSe>(((StatusEffect)this).Level, 0, 0, 0, 0.2f); ((StatusEffect)this).Level = ((StatusEffect)this).Level + 50; ((StatusEffect)this).NotifyActivating(); } } } public sealed class YuukaSplittingSovereignSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(YuukaSplittingSovereignSeDef))] public sealed class YuukaSplittingSovereignSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnEnded, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnEnded); ((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsing, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsing); } private IEnumerable<BattleAction> OnCardUsing(CardUsingEventArgs args) { if ((int)args.Card.CardType == 1 || (int)args.Card.CardType == 2 || (int)args.Card.CardType == 4) { <>n__0(); args.PlayTwice = true; ((GameEventArgs)args).AddModifier((GameEntity)(object)this); int num = ((StatusEffect)this).Level - 1; ((StatusEffect)this).Level = num; if (((StatusEffect)this).Level <= 0) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } } private IEnumerable<BattleAction> OnOwnerTurnEnded(UnitEventArgs args) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((StatusEffect)this).NotifyActivating(); } } public sealed class YuukaSplittingSovereignUnlimitedSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.HasLevel = false; return defaultStatusEffectConfig; } } [EntityLogic(typeof(YuukaSplittingSovereignUnlimitedSeDef))] public sealed class YuukaSplittingSovereignUnlimitedSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnEnded, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnEnded); ((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsing, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsing); } private IEnumerable<BattleAction> OnCardUsing(CardUsingEventArgs args) { if ((int)args.Card.CardType == 1 || (int)args.Card.CardType == 2 || (int)args.Card.CardType == 4) { <>n__0(); args.PlayTwice = true; ((GameEventArgs)args).AddModifier((GameEntity)(object)this); } yield break; } private IEnumerable<BattleAction> OnOwnerTurnEnded(UnitEventArgs args) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((StatusEffect)this).NotifyActivating(); } } public sealed class YuukaSpringsAccordSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Order = 15; return defaultStatusEffectConfig; } } [EntityLogic(typeof(YuukaSpringsAccordSeDef))] public sealed class YuukaSpringsAccordSe : StatusEffect { public ManaGroup Mana { get { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) ManaGroup result = default(ManaGroup); ((ManaGroup)(ref result)).Philosophy = ((StatusEffect)this).Level; return result; } } protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnStarted); } private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args) { if (BloomUtility.CheckBloomLevel(((StatusEffect)this).Battle, ((StatusEffect)this).Level)) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)new GainManaAction(Mana); yield return (BattleAction)new DrawManyCardAction(((StatusEffect)this).Level); YuukaBloomSe statusEffect = ((Unit)((StatusEffect)this).Battle.Player).GetStatusEffect<YuukaBloomSe>(); ((StatusEffect)statusEffect).Level = ((StatusEffect)statusEffect).Level - ((StatusEffect)this).Level; if (((Unit)((StatusEffect)this).Battle.Player).GetStatusEffect<YuukaShedBloomShieldBornSe>() != null) { YuukaShedBloomShieldBornSe pv = ((Unit)((StatusEffect)this).Battle.Player).GetStatusEffect<YuukaShedBloomShieldBornSe>(); yield return (BattleAction)new CastBlockShieldAction((Unit)(object)((StatusEffect)this).Battle.Player, 0, ((StatusEffect)pv).Level * ((StatusEffect)this).Level, (BlockShieldType)2, true); } if (((StatusEffect)statusEffect).Level == 0) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)statusEffect, true, 0.1f); } } } } public sealed class YuukaSunlitAfternoonTeaSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.HasLevel = false; return defaultStatusEffectConfig; } } [EntityLogic(typeof(YuukaSunlitAfternoonTeaSeDef))] public sealed class YuukaSunlitAfternoonTeaSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<StatusEffectApplyEventArgs>(((StatusEffect)this).Owner.StatusEffectAdding, (EventSequencedReactor<StatusEffectApplyEventArgs>)OnStatusEffectAdding); } private IEnumerable<BattleAction> OnStatusEffectAdding(StatusEffectApplyEventArgs args) { if (args.Effect is Fragil || args.Effect is Weak || args.Effect is Vulnerable) { ((GameEventArgs)args).CancelBy((GameEntity)(object)this); <>n__0(); } yield break; } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((StatusEffect)this).NotifyActivating(); } } public sealed class YuukaTempFpNextTurnSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Order = 11; return defaultStatusEffectConfig; } } [EntityLogic(typeof(YuukaTempFpNextTurnSeDef))] public sealed class YuukaTempFpNextTurnSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnStarted); } private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args) { ((StatusEffect)this).NotifyActivating(); yield return ((StatusEffect)this).BuffAction<TempFirepower>(((StatusEffect)this).Level, 0, 0, 0, 0.2f); yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } public sealed class YuukaTyrantOfTheGardenSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(YuukaTyrantOfTheGardenSeDef))] public sealed class YuukaTyrantOfTheGardenSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<GameEventArgs>(((StatusEffect)this).Battle.BattleEnding, (EventSequencedReactor<GameEventArgs>)OnBattleEnding); GameRunController gameRun = ((GameEntity)this).GameRun; gameRun.EnemyVulnerableExtraPercentage += ((StatusEffect)this).Level; } public override bool Stack(StatusEffect other) { GameRunController gameRun = ((GameEntity)this).GameRun; gameRun.EnemyVulnerableExtraPercentage += other.Level; return ((StatusEffect)this).Stack(other); } private IEnumerable<BattleAction> OnBattleEnding(GameEventArgs args) { GameRunController gameRun = ((GameEntity)this).GameRun; gameRun.EnemyVulnerableExtraPercentage -= ((StatusEffect)this).Level; yield break; } } public sealed class YuukaVulnerableNextTurnSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(YuukaVulnerableNextTurnSeDef))] public sealed class YuukaVulnerableNextTurnSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnStarted); } private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args) { ((StatusEffect)this).NotifyActivating(); foreach (BattleAction item in ((StatusEffect)this).DebuffAction<Vulnerable>((IEnumerable<Unit>)((StatusEffect)this).Battle.AllAliveEnemies, 0, ((StatusEffect)this).Level, 0, 0, true, 0.2f)) { yield return item; } yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } public sealed class YuukaWheelOfSeasonsSeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(YuukaWheelOfSeasonsSeDef))] public sealed class YuukaWheelOfSeasonsSe : StatusEffect { public string S1a { get { int turnCounter = ((Unit)((StatusEffect)this).Battle.Player).TurnCounter; if (turnCounter % 3 == 1) { return "<b>"; } return ""; } } public string S2a { get { int turnCounter = ((Unit)((StatusEffect)this).Battle.Player).TurnCounter; if (turnCounter % 3 == 2) { return "<b>"; } return ""; } } public string S3a { get { int turnCounter = ((Unit)((StatusEffect)this).Battle.Player).TurnCounter; if (turnCounter % 3 == 0) { return "<b>"; } return ""; } } public string S1b { get { int turnCounter = ((Unit)((StatusEffect)this).Battle.Player).TurnCounter; if (turnCounter % 3 == 1) { return ((GameEntity)this).LocalizeProperty("Header", false, true); } return ""; } } public string S2b { get { int turnCounter = ((Unit)((StatusEffect)this).Battle.Player).TurnCounter; if (turnCounter % 3 == 2) { return ((GameEntity)this).LocalizeProperty("Header", false, true); } return ""; } } public string S3b { get { int turnCounter = ((Unit)((StatusEffect)this).Battle.Player).TurnCounter; if (turnCounter % 3 == 0) { return ((GameEntity)this).LocalizeProperty("Header", false, true); } return ""; } } protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnEnding, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnEnding); } private IEnumerable<BattleAction> OnOwnerTurnEnding(UnitEventArgs args) { int turnCounter = ((Unit)((StatusEffect)this).Battle.Player).TurnCounter; ManaGroup val = default(ManaGroup); ((ManaGroup)(ref val)).Any = ((StatusEffect)this).Level; ManaGroup Mana = val; if (turnCounter % 3 == 1) { yield return ((StatusEffect)this).BuffAction<YuukaBloomSe>(((StatusEffect)this).Level * YuukaSeasonsConfig.BloomValue, 0, 0, 0, 0.2f); } else if (turnCounter % 3 == 2) { new List<Card>(); List<Card> list = (from card in ((StatusEffect)this).Battle.HandZone.Concat(((StatusEffect)this).Battle.DrawZoneToShow).Concat(((StatusEffect)this).Battle.DiscardZone) where card.HasKeyword((Keyword)4398046511104L) || ((Enum)card.ConfigRelativeKeywords).HasFlag((Enum)(object)(Keyword)4398046511104L) select card).ToList(); foreach (Card card2 in list) { if (card2 is ReimuSakura) { card2.DecreaseBaseCost(Mana); } yield return (BattleAction)(object)new IncreasePlayCountAction(card2, ((StatusEffect)this).Level * YuukaSeasonsConfig.GrowValue); } yield return ((StatusEffect)this).BuffAction<SummerFlowerSe>(((StatusEffect)this).Level * YuukaSeasonsConfig.SummerFlowerValue, 0, 0, 0, 0.2f); } else { if (args.Unit.GetStatusEffect<YuukaFervorSe>() != null) { YuukaFervorSe FervorSe = ((Unit)((StatusEffect)this).Battle.Player).GetStatusEffect<YuukaFervorSe>(); int FervorCount = ((StatusEffect)FervorSe).Level / YuukaSeasonsConfig.FervorValue; yield return (BattleAction)new CastBlockShieldAction(args.Unit, args.Unit, 0, ((StatusEffect)this).Level * FervorCount * YuukaSeasonsConfig.BarrierValue, (BlockShieldType)2, true); } yield return ((StatusEffect)this).BuffAction<YuukaWheelOfSeasonsSe>(1, 0, 0, 0, 0.2f); } } } public sealed class YuukaWovenContingencySeDef : YuukaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return YuukaStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(YuukaWovenContingencySeDef))] public sealed class YuukaWovenContingencySe : StatusEffect { public string ExtraRule { get { int turnCounter = ((Unit)((StatusEffect)this).Battle.Player).TurnCounter; if (((StatusEffect)this).Level == 6) { return " <b>past the first</b>"; } return ""; } } private string Header => ((GameEntity)this).LocalizeProperty("Header", false, true); protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnEnding, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnEnding); } private IEnumerable<BattleAction> OnOwnerTurnEnding(UnitEventArgs args) { if (((StatusEffect)this).Battle.BattleShouldEnd) { yield break; } List<Card> list = ((StatusEffect)this).Battle.HandZone.Where((Card hand) => !hand.IsTempRetain && !hand.IsRetain && !hand.Summoned && !hand.IsEthereal).ToList(); if (CollectionsExtensions.Empty<Card>((IReadOnlyCollection<Card>)list)) { yield break; } SelectHandInteraction interaction = new SelectHandInteraction(0, 5, (IEnumerable<Card>)list); ((Interaction)interaction).Description = Header; yield return (BattleAction)new InteractionAction((Interaction)(object)interaction, false); int selectedCardCount = interaction.SelectedCards.Count(); foreach (Card card in interaction.SelectedCards) { if (!card.IsRetain && !card.Summoned) { card.IsTempRetain = true; } } if (((StatusEffect)this).Level == 5 && selectedCardCount > 0) { yield return ((StatusEffect)this).BuffAction<YuukaDrawReductionNextTurnSe>(selectedCardCount, 0, 0, 0, 0.2f); } else if (((StatusEffect)this).Level == 6 && selectedCardCount > 1) { yield return ((StatusEffect)this).BuffAction<YuukaDrawReductionNextTurnSe>(selectedCardCount - 1, 0, 0, 0, 0.2f); } } } } namespace YuukaMod.Patches { [HarmonyPatch] internal class CustomGameEventManager { public static GameEvent<IncreasePlayCountEventArgs> PreIncreasePlayCountEvent { get; set; } public static GameEvent<IncreasePlayCountEventArgs> PostIncreasePlayCountEvent { get; set; } [HarmonyPatch(typeof(GameRunController), "EnterBattle")] private static bool Prefix(GameRunController __instance) { PreIncreasePlayCountEvent = new GameEvent<IncreasePlayCountEventArgs>(); PostIncreasePlayCountEvent = new GameEvent<IncreasePlayCountEventArgs>(); return true; } } } namespace YuukaMod.model { public sealed class YuukaModel : UnitModelTemplate { public static bool useInGameModel = BepinexPlugin.useInGameModel; public static string model_name = (useInGameModel ? BepinexPlugin.modelName : "YuukaModel.png"); public static string spellsprite_name = "YuukaStand.png"; public override IdContainer GetId() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) return IdContainer.op_Implicit(BepinexPlugin.modUniqueID); } public override LocalizationOption LoadLocalization() { return (LocalizationOption)(object)YuukaLocalization.UnitModelBatchLoc.AddEntity((EntityDefinition)(object)this); } public override ModelOption LoadModelOptions() { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown if (useInGameModel) { return new ModelOption(ResourcesHelper.LoadSpineUnitAsync(model_name)); } return new ModelOption(ResourceLoader.LoadSpriteAsync(model_name, BepinexPlugin.directorySource, 565, (GraphicsFormat)4, 1, (FilterMode)1, (SpriteMeshType)1, (Rect?)null, (Vector2?)null, "file://")); } public override UniTask<Sprite> LoadSpellSprite() { //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) if (useInGameModel) { return ResourcesHelper.LoadSpellPortraitAsync(model_name); } return ResourceLoader.LoadSpriteAsync(spellsprite_name, BepinexPlugin.directorySource, 100, (GraphicsFormat)4, 1, (FilterMode)1, (SpriteMeshType)1, (Rect?)null, (Vector2?)null, "file://"); } public override UnitModelConfig MakeConfig() { //IL_0057: Unknown result type (might be due to invalid IL or missing references) if (useInGameModel) { UnitModelConfig val = ObjectExtensions.Copy<UnitModelConfig>(UnitModelConfig.FromName(model_name)); val.Flip = BepinexPlugin.modelIsFlipped; return val; } UnitModelConfig val2 = ObjectExtensions.Copy<UnitModelConfig>(((UnitModelTemplate)this).DefaultConfig()); val2.Flip = BepinexPlugin.modelIsFlipped; val2.Type = 0; val2.Offset = new Vector2(0f, -0.1f); val2.HasSpellPortrait = true; return val2; } } } namespace YuukaMod.Localization { public sealed class YuukaLocalization { public static string Cards = "Cards"; public static string Exhibits = "Exhibits"; public static string PlayerUnit = "PlayerUnit"; public static string EnemiesUnit = "EnemyUnit"; public static string UnitModel = "UnitModel"; public static string UltimateSkills = "UltimateSkills"; public static string StatusEffects = "StatusEffects"; public static BatchLocalization CardsBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(CardTemplate), Cards, (Locale)0, false); public static BatchLocalization ExhibitsBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(ExhibitTemplate), Exhibits, (Locale)0, false); public static BatchLocalization PlayerUnitBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(PlayerUnitTemplate), PlayerUnit, (Locale)0, false); public static BatchLocalization EnemiesUnitBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(EnemyUnitTemplate), EnemiesUnit, (Locale)0, false); public static BatchLocalization UnitModelBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(UnitModelTemplate), UnitModel, (Locale)0, false); public static BatchLocalization UltimateSkillsBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(UltimateSkillTemplate), UltimateSkills, (Locale)0, false); public static BatchLocalization StatusEffectsBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(StatusEffectTemplate), StatusEffects, (Locale)0, false); public static void Init() { CardsBatchLoc.DiscoverAndLoadLocFiles(Cards); ExhibitsBatchLoc.DiscoverAndLoadLocFiles(Exhibits); PlayerUnitBatchLoc.DiscoverAndLoadLocFiles(PlayerUnit); EnemiesUnitBatchLoc.DiscoverAndLoadLocFiles(EnemiesUnit); UnitModelBatchLoc.DiscoverAndLoadLocFiles(UnitModel); UltimateSkillsBatchLoc.DiscoverAndLoadLocFiles(UltimateSkills); StatusEffectsBatchLoc.DiscoverAndLoadLocFiles(StatusEffects); } } } namespace YuukaMod.Keywords { public static class YuukaKeywords { public static CardKeyword YuukaArrangedKW => new CardKeyword("YuukaArrangedKeyword", false) { descPos = (KwDescPos)1 }; } } namespace YuukaMod.Source.Keywords { internal static class YuukaCharacterArrangedHandle { public static int ArrangePriority = 10; public static GameEvent<UnitEventArgs> GetBounceEvent(BattleController battle) { return ((Unit)battle.Player).TurnEnding; } public static GameEvent<CardMovingEventArgs> GetCardMovedEvent(BattleController battle) { return battle.CardMoved; } public static void RegisterHandlers() { CHandlerManager.RegisterBattleEventHandler<CardMovingEventArgs>((EventProvider<CardMovingEventArgs, BattleController>)((BattleController b) => GetCardMovedEvent(b)), (GameEventHandler<CardMovingEventArgs>)OnCardMoved, (Predicate<BattleController>)null, (GameEventPriority)ArrangePriority); } private static void OnCardMoved(CardMovingEventArgs args) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Invalid comparison between Unknown and I4 //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Invalid comparison between Unknown and I4 //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Invalid comparison between Unknown and I4 //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Invalid comparison between Unknown and I4 if (KeywordManager.HasCustomKeyword(args.Card, "YuukaArrangedKeyword") && ((int)args.SourceZone == 5 || (int)args.SourceZone == 2) && ((int)args.DestinationZone == 3 || (int)args.DestinationZone == 4)) { KeywordManager.RemoveCustomKeyword(args.Card, YuukaKeywords.YuukaArrangedKW); } } } internal static class YuukaSecondCardTracker { private static int cardCounter = 0; public static int TrackerPriority = 10; public static Card SecondCard { get; private set; } public static void RegisterHandlers() { CHandlerManager.RegisterBattleEventHandler<GameEventArgs>((EventProvider<GameEventArgs, BattleController>)((BattleController b) => b.BattleStarted), (GameEventHandler<GameEventArgs>)OnBattleStart, (Predicate<BattleController>)null, (GameEventPriority)TrackerPriority); CHandlerManager.RegisterBattleEventHandler<CardUsingEventArgs>((EventProvider<CardUsingEventArgs, BattleController>)((BattleController b) => b.CardUsing), (GameEventHandler<CardUsingEventArgs>)OnCardUsed, (Predicate<BattleController>)null, (GameEventPriority)TrackerPriority); CHandlerManager.RegisterBattleEventHandler<GameEventArgs>((EventProvider<GameEventArgs, BattleController>)((BattleController b) => b.BattleEnded), (GameEventHandler<GameEventArgs>)OnBattleEnd, (Predicate<BattleController>)null, (GameEventPriority)TrackerPriority); } private static void OnBattleStart(GameEventArgs args) { ResetTracker(); } private static void OnCardUsed(CardUsingEventArgs args) { cardCounter++; if (cardCounter == 2) { SecondCard = args.Card; } } private static void OnBattleEnd(GameEventArgs args) { ResetTracker(); } private static void ResetTracker() { cardCounter = 0; SecondCard = null; } } internal class YuukaGardenArchitectValues { } internal class YuukaWheelOfSeasonsValues { } } namespace YuukaMod.Logic { public static class BloomUtility { public static int GetBloomLevel(BattleController battle) { YuukaBloomSe statusEffect = ((Unit)battle.Player).GetStatusEffect<YuukaBloomSe>(); return (statusEffect != null) ? ((StatusEffect)statusEffect).Level : 0; } public static bool CheckBloomLevel(BattleController battle, int threshold) { return GetBloomLevel(battle) >= threshold; } } public class FlourishChoiceResult { public bool FlourishChosen { get; set; } public IEnumerable<BattleAction> Actions { get; set; } } public static class FlourishUtility { public static FlourishChoiceResult OfferFlourishChoice<TCard>(TCard sourceCard, int bloomRequirement) where TCard : YuukaCard { FlourishChoiceResult result = new FlourishChoiceResult { FlourishChosen = false, Actions = Enumerable.Empty<BattleAction>() }; if (!BloomUtility.CheckBloomLevel(((Card)sourceCard).Battle, bloomRequirement)) { return result; } List<TCard> copies = Library.CreateCards<TCard>(2, ((Card)sourceCard).IsUpgraded).ToList(); TCard val = copies[0]; TCard flourishCard = copies[1]; ((Card)val).ChoiceCardIndicator = 1; ((Card)flourishCard).ChoiceCardIndicator = 2; ((Card)val).SetBattle(((Card)sourceCard).Battle); ((Card)flourishCard).SetBattle(((Card)sourceCard).Battle); result.Actions = actionIterator(); return result; IEnumerable<BattleAction> actionIterator() { MiniSelectCardInteraction choiceInteraction = new MiniSelectCardInteraction((IEnumerable<Card>)copies, false, false, false) { Source = (GameEntity)(object)sourceCard }; yield return (BattleAction)new InteractionAction((Interaction)(object)choiceInteraction, false); result.FlourishChosen = choiceInteraction.SelectedCard == flourishCard; } } public static IEnumerable<BattleAction> ApplyFlourishCost<TCard>(TCard sourceCard, int bloomCost) where TCard : YuukaCard { BattleController battle = ((Card)sourceCard).Battle; YuukaBloomSe statusEffect = ((Unit)battle.Player).GetStatusEffect<YuukaBloomSe>(); if (statusEffect != null) { ((StatusEffect)statusEffect).Level = ((StatusEffect)statusEffect).Level - bloomCost; YuukaShedBloomShieldBornSe shieldEffect = ((Unit)battle.Player).GetStatusEffect<YuukaShedBloomShieldBornSe>(); if (shieldEffect != null) { yield return (BattleAction)new CastBlockShieldAction((Unit)(object)battle.Player, 0, ((StatusEffect)shieldEffect).Level * bloomCost, (BlockShieldType)2, true); } if (((StatusEffect)statusEffect).Level <= 0) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)statusEffect, true, 0.1f); } } } } } namespace YuukaMod.ImageLoader { public sealed class YuukaImageLoader { public static string file_extension = ".png"; public static PlayerImages LoadPlayerImages(string name) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown PlayerImages val = new PlayerImages(); val.AutoLoad(name, (Func<string, Sprite>)((string s) => ResourceLoader.LoadSprite(s, (IResourceSource)(object)BepinexPlugin.directorySource, 100, 1, (FilterMode)1, true, (Rect?)null, (Vector2?)null)), (Func<string, UniTask<Sprite>>)((string s) => ResourceLoader.LoadSpriteAsync(s, BepinexPlugin.directorySource, 100, (GraphicsFormat)4, 1, (FilterMode)1, (SpriteMeshType)1, (Rect?)null, (Vector2?)null, "file://")), (UseSame)1, ".png", ""); return val; } public static CardImages LoadCardImages(CardTemplate cardTemplate) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown CardImages val = new CardImages(BepinexPlugin.embeddedSource); val.AutoLoad(cardTemplate, file_extension, "", false); return val; } public static ExhibitSprites LoadExhibitSprite(ExhibitTemplate exhibit) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0009: Unknown result type (might be due to invalid IL or missing references) ExhibitSprites val = new ExhibitSprites(); val.main = ResourceLoader.LoadSprite(IdContainer.op_Implicit(((EntityDefinition)exhibit).GetId()) + file_extension, BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null); return val; } public static Sprite LoadUltLoader(UltimateSkillTemplate ult) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) return LoadSprite(((EntityDefinition)ult).GetId()); } public static Sprite LoadStatusEffectLoader(StatusEffectTemplate status) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) return LoadSprite(((EntityDefinition)status).GetId()); } public static Sprite LoadSprite(IdContainer ID) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return ResourceLoader.LoadSprite(IdContainer.op_Implicit(ID) + file_extension, BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null); } } } namespace YuukaMod.GunName { public static class GunNameID { private static IReadOnlyList<GunConfig> gunConfig = GunConfig.AllConfig(); public static string GetGunFromId(int id) { string text = ""; try { return (from config in gunConfig where config.Id == id select config.Name).ToList()[0]; } catch { Debug.Log((object)("id: " + id + " doesn't exist. Check whether the ID is correct.")); return "Instant"; } } } } namespace YuukaMod.Exhibits { public sealed class YuukaExhibitADef : YuukaExhibitTemplate { public override ExhibitConfig MakeConfig() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig(); defaultExhibitConfig.Value1 = 2; defaultExhibitConfig.Value2 = 4; ManaGroup value = default(ManaGroup); ((ManaGroup)(ref value)).Green = 1; defaultExhibitConfig.Mana = value; defaultExhibitConfig.BaseManaColor = (ManaColor)5; defaultExhibitConfig.RelativeEffects = new List<string> { "YuukaBloomSe" }; defaultExhibitConfig.RelativeCards = new List<string> { "YuukaCharacterTokenBlossomSmall", "YuukaCharacterTokenBlossomMedium", "YuukaCharacterTokenBlossomLarge" }; return defaultExhibitConfig; } } [EntityLogic(typeof(YuukaExhibitADef))] public sealed class YuukaExhibitA : ShiningExhibit { protected override void OnEnterBattle() { ((Exhibit)this).ReactBattleEvent<UnitEventArgs>(((Unit)((Exhibit)this).Battle.Player).TurnEnding, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnEnding); } private IEnumerable<BattleAction> OnPlayerTurnEnding(UnitEventArgs args) { if (((Unit)((Exhibit)this).Battle.Player).TurnCounter == ((Exhibit)this).Value1) { <>n__0(); yield return (BattleAction)(object)new ApplyStatusEffectAction<YuukaBloomSe>((Unit)(object)((Exhibit)this).Owner, (int?)((Exhibit)this).Value2, (int?)null, (int?)null, (int?)null, 0f, true); } } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((Exhibit)this).NotifyActivating(); } } public sealed class YuukaExhibitBDef : YuukaExhibitTemplate { public override ExhibitConfig MakeConfig() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig(); defaultExhibitConfig.Value1 = 4; defaultExhibitConfig.Value2 = 12; ManaGroup value = default(ManaGroup); ((ManaGroup)(ref value)).Red = 1; defaultExhibitConfig.Mana = value; defaultExhibitConfig.BaseManaColor = (ManaColor)4; defaultExhibitConfig.HasCounter = true; defaultExhibitConfig.InitialCounter = 0; defaultExhibitConfig.RelativeEffects = new List<string>(); defaultExhibitConfig.RelativeCards = new List<string> { "YuukaCharacterTokenZeal" }; return defaultExhibitConfig; } } [EntityLogic(typeof(YuukaExhibitBDef))] public sealed class YuukaExhibitB : ShiningExhibit { protected override void OnEnterBattle() { ((Exhibit)this).ReactBattleEvent<UnitEventArgs>(((Unit)((Exhibit)this).Battle.Player).TurnStarting, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarting); ((Exhibit)this).ReactBattleEvent<GameEventArgs>(((Exhibit)this).Battle.BattleEnded, (EventSequencedReactor<GameEventArgs>)OnBattleEnded); ((Exhibit)this).Battle.MaxHand = ((Exhibit)this).Value2; } private IEnumerable<BattleAction> OnPlayerTurnStarting(UnitEventArgs args) { ((Exhibit)this).Counter = ((Exhibit)this).Counter + 1; if (((Unit)((Exhibit)this).Battle.Player).TurnCounter == ((Exhibit)this).Value1) { <>n__0(); yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)Library.CreateCards<YuukaCharacterTokenZeal>(1, false), (AddCardsType)0); } } private IEnumerable<BattleAction> OnBattleEnded(GameEventArgs args) { ((Exhibit)this).Counter = 0; yield break; } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((Exhibit)this).NotifyActivating(); } } public class YuukaExhibitTemplate : ExhibitTemplate { public override IdContainer GetId() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) return IdContainer.op_Implicit(YuukaDefaultConfig.GetDefaultID((EntityDefinition)(object)this)); } public override LocalizationOption LoadLocalization() { return (LocalizationOption)(object)YuukaLocalization.ExhibitsBatchLoc.AddEntity((EntityDefinition)(object)this); } public override ExhibitSprites LoadSprite() { return YuukaImageLoader.LoadExhibitSprite((ExhibitTemplate)(object)this); } public override ExhibitConfig MakeConfig() { return GetDefaultExhibitConfig(); } public ExhibitConfig GetDefaultExhibitConfig() { return YuukaDefaultConfig.GetDefaultExhibitConfig(); } } } namespace YuukaMod.Enemies { [EntityLogic(typeof(YuukaEnemyUnitDef))] public sealed class YuukaMod : EnemyUnit { private enum MoveType { Attack3x, AttackFrail, AttackGraze, AttackJunk, BarrierBuff, SpellCard } private enum BossPhase { RandomMoves, BarrierBuff, SpellCard } private BossPhase currentPhase; private int randomMovesUsed; private static readonly Random rng = new Random(); private MoveType lastMove = MoveType.Attack3x; public string Attack3x => ((EnemyUnit)this).GetSpellCardName((int?)0, 1); public string AttackFrail => ((EnemyUnit)this).GetSpellCardName((int?)0, 2); public string AttackGraze => ((EnemyUnit)this).GetSpellCardName((int?)0, 3); public string BarrierBuff => ((EnemyUnit)this).GetSpellCardName((int?)0, 4); public string SpellCard => ((EnemyUnit)this).GetSpellCardName((int?)5, 6); public string AttackJunk => ((EnemyUnit)this).GetSpellCardName((int?)0, 7); protected override void OnEnterBattle(BattleController battle) { currentPhase = BossPhase.RandomMoves; randomMovesUsed = 0; ((EnemyUnit)this).CountDown = 5; ((Unit)this).ReactBattleEvent<GameEventArgs>(((Unit)this).Battle.BattleStarted, (Func<GameEventArgs, IEnumerable<BattleAction>>)OnBattleStarted); } public override void OnSpawn(EnemyUnit spawner) { ((GameEntity)this).React(Reactor.op_Implicit((BattleAction)(object)new ApplyStatusEffectAction<YuukaBossSleepingTerrorSe>((Unit)(object)this, (int?)((EnemyUnit)this).Count1, (int?)null, (int?)null, (int?)((EnemyUnit)this).Count2, 1f, true))); } private IEnumerable<BattleAction> OnBattleStarted(GameEventArgs arg) { int? num = ((EnemyUnit)this).Count2; yield return (BattleAction)(object)new ApplyStatusEffectAction<YuukaBossSleepingTerrorSe>((Unit)(object)this, (int?)((EnemyUnit)this).Count1, (int?)null, (int?)null, num, 1f, true); } protected override IEnumerable<IEnemyMove> GetTurnMoves() { switch (currentPhase) { case BossPhase.RandomMoves: switch (ChooseRandomRandomMove()) { case MoveType.Attack3x: yield return ((EnemyUnit)this).AttackMove(Attack3x, ((EnemyUnit)this).Gun1, ((EnemyUnit)this).Damage1, 3, false, "Instant", true); break; case MoveType.AttackFrail: yield return ((EnemyUnit)this).AttackMove(AttackFrail, ((EnemyUnit)this).Gun2, ((EnemyUnit)this).Damage2, 2, false, "Instant", true); yield return ((EnemyUnit)this).NegativeMove((string)null, typeof(Fragil), (int?)null, (int?)2, false, false, (PerformAction)null); break; case MoveType.AttackGraze: yield return ((EnemyUnit)this).AttackMove(AttackGraze, ((EnemyUnit)this).Gun3, ((EnemyUnit)this).Damage3, 1, false, "Instant", true); yield return ((EnemyUnit)this).DefendMove((Unit)(object)this, (string)null, 0, 0, 2, true, (PerformAction)null); break; default: yield return ((EnemyUnit)this).AttackMove(AttackJunk, EnemyUnit.GetRandomGun((IReadOnlyList<string>)new List<string> { GunNameID.GetGunFromId(7041) }), 13, 1, false, "Instant", true); yield return ((EnemyUnit)this).AddCardMove((string)null, typeof(Riguang), 1, (AddCardZone)0, (PerformAction)null, false); break; } if (((EnemyUnit)this).CountDown == 2) { yield return (IEnemyMove)new SimpleEnemyMove(Intention.CountDown(((EnemyUnit)this).CountDown)); } break; case BossPhase.BarrierBuff: if (((Unit)this).Hp <= ((Unit)this).MaxHp - ((EnemyUnit)this).Defend) { yield return (IEnemyMove)new SimpleEnemyMove(Intention.Heal().WithMoveName(BarrierBuff), (IEnumerable<BattleAction>)(object)new BattleAction[2] { (BattleAction)new EnemyMoveAction((EnemyUnit)(object)this, ((EnemyUnit)this).GetMove(1), true), (BattleAction)new HealAction((Unit)(object)this, (Unit)(object)this, ((EnemyUnit)this).Defend, (HealType)0, 0.2f) }); } else { yield return (IEnemyMove)new SimpleEnemyMove(Intention.Defend().WithMoveName(BarrierBuff), (IEnumerable<BattleAction>)(object)new BattleAction[2] { (BattleAction)new EnemyMoveAction((EnemyUnit)(object)this, ((EnemyUnit)this).GetMove(1), true), (BattleAction)new CastBlockShieldAction((Unit)(object)this, 0, ((EnemyUnit)this).Defend, (BlockShieldType)1, true) }); } yield return ((EnemyUnit)this).PositiveMove(BarrierBuff, typeof(Firepower), (int?)1, (int?)null, true, (PerformAction)null); yield return (IEnemyMove)new SimpleEnemyMove(Intention.CountDown(((EnemyUnit)this).CountDown)); break; case BossPhase.SpellCard: yield return (IEnemyMove)new SimpleEnemyMove(Intention.SpellCard(SpellCard, (int?)((EnemyUnit)this).Damage4, (int?)2, true), ((EnemyUnit)this).AttackActions(SpellCard, ((EnemyUnit)this).Gun4, ((EnemyUnit)this).Damage4, 2, true, "Instant")); break; } } protected override void UpdateMoveCounters() { switch (currentPhase) { case BossPhase.RandomMoves: { if (((EnemyUnit)this).CountDown <= 2) { currentPhase = BossPhase.BarrierBuff; } int countDown = ((EnemyUnit)this).CountDown; ((EnemyUnit)this).CountDown = countDown - 1; break; } case BossPhase.BarrierBuff: { currentPhase = BossPhase.SpellCard; int countDown = ((EnemyUnit)this).CountDown; ((EnemyUnit)this).CountDown = countDown - 1; break; } case BossPhase.SpellCard: currentPhase = BossPhase.RandomMoves; ((EnemyUnit)this).CountDown = rng.Next(4, 6); break; } } private MoveType ChooseRandomRandomMove() { MoveType[] collection = new MoveType[4] { MoveType.Attack3x, MoveType.AttackFrail, MoveType.AttackGraze, MoveType.AttackJunk }; List<MoveType> list = new List<MoveType>(collection); list.Remove(lastMove); return lastMove = list[rng.Next(list.Count)]; } } public sealed class YuukaEnemyGroupDef : YuukaEnemyGroupTemplate { public override IdContainer GetId() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) return IdContainer.op_Implicit("YuukaMod"); } public override EnemyGroupConfig MakeConfig() { EnemyGroupConfig enemyGroupDefaultConfig = GetEnemyGroupDefaultConfig(); enemyGroupDefaultConfig.Name = "YuukaMod"; enemyGroupDefaultConfig.FormationName = "Single"; enemyGroupDefaultConfig.Enemies = new List<string> { "YuukaMod" }; enemyGroupDefaultConfig.EnemyType = (EnemyType)3; enemyGroupDefaultConfig.RollBossExhibit = true; return enemyGroupDefaultConfig; } } public sealed class YuukaEnemyUnitDef : YuukaEnemyUnitTemplate { public override IdContainer GetId() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) return IdContainer.op_Implicit("YuukaMod"); } public override EnemyUnitConfig MakeConfig() { //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) EnemyUnitConfig enemyUnitDefaultConfig = GetEnemyUnitDefaultConfig(); enemyUnitDefaultConfig.IsPreludeOpponent = BepinexPlugin.enableAct1Boss.Value; enemyUnitDefaultConfig.BaseManaColor = new List<ManaColor> { (ManaColor)5, (ManaColor)4 }; enemyUnitDefaultConfig.Type = (EnemyType)3; enemyUnitDefaultConfig.MaxHp = 250; enemyUnitDefaultConfig.MaxHpHard = 255; enemyUnitDefaultConfig.MaxHpLunatic = 260; enemyUnitDefaultConfig.Damage1 = 5; enemyUnitDefaultConfig.Damage1Hard = 5; enemyUnitDefaultConfig.Damage1Lunatic = 6; enemyUnitDefaultConfig.Damage2 = 7; enemyUnitDefaultConfig.Damage2Hard = 7; enemyUnitDefaultConfig.Damage2Lunatic = 8; enemyUnitDefaultConfig.Damage3 = 15; enemyUnitDefaultConfig.Damage3Hard = 16; enemyUnitDefaultConfig.Damage3Lunatic = 17; enemyUnitDefaultConfig.Damage4 = 12; enemyUnitDefaultConfig.Damage4Hard = 13; enemyUnitDefaultConfig.Damage4Lunatic = 14; enemyUnitDefaultConfig.Defend = 14; enemyUnitDefaultConfig.DefendHard = 17; enemyUnitDefaultConfig.DefendLunatic = 20; enemyUnitDefaultConfig.Count1 = 2; enemyUnitDefaultConfig.Count1Hard = 2; enemyUnitDefaultConfig.Count1Lunatic = 3; enemyUnitDefaultConfig.Count2 = 30; enemyUnitDefaultConfig.Count2Hard = 30; enemyUnitDefaultConfig.Count2Lunatic = 30; enemyUnitDefaultConfig.PowerLoot = new MinMax(100, 100); enemyUnitDefaultConfig.BluePointLoot = new MinMax(100, 100); enemyUnitDefaultConfig.Gun1 = new List<string> { GunNameID.GetGunFromId(7040) }; enemyUnitDefaultConfig.Gun2 = new List<string> { GunNameID.GetGunFromId(22010) }; enemyUnitDefaultConfig.Gun3 = new List<string> { GunNameID.GetGunFromId(14010) }; enemyUnitDefaultConfig.Gun4 = new List<string> { GunNameID.GetGunFromId(14040) }; return enemyUnitDefaultConfig; } } } namespace YuukaMod.Enemies.Template { public abstract class YuukaEnemyGroupTemplate : EnemyGroupTemplate { public override IdContainer GetId() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) return IdContainer.op_Implicit(YuukaDefaultConfig.GetDefaultID((EntityDefinition)(object)this)); } public override EnemyGroupConfig MakeConfig() { return YuukaDefaultConfig.GetEnemyGroupDefaultConfig(); } public EnemyGroupConfig GetEnemyGroupDefaultConfig() { return YuukaDefaultConfig.GetEnemyGroupDefaultConfig(); } } public class YuukaEnemyUnitTemplate : EnemyUnitTemplate { public override IdContainer GetId() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) return IdContainer.op_Implicit(YuukaDefaultConfig.GetDefaultID((EntityDefinition)(object)this)); } public override EnemyUnitConfig MakeConfig() { return YuukaDefaultConfig.GetEnemyUnitDefaultConfig(); } public override LocalizationOption LoadLocalization() { return (LocalizationOption)(object)YuukaLocalization.EnemiesUnitBatchLoc.AddEntity((EntityDefinition)(object)this); } public override Type TemplateType() { return typeof(EnemyUnitTemplate); } public EnemyUnitConfig GetEnemyUnitDefaultConfig() { return YuukaDefaultConfig.GetEnemyUnitDefaultConfig(); } } } namespace YuukaMod.Config { public struct CustomConfigEntry<T> { public T Value { get; set; } public string Section { get; set; } public string Key { get; set; } public string Description { get; set; } public CustomConfigEntry(T value, string section, string key, string description) { Value = value; Section = section; Key = key; Description = description; } } public sealed class YuukaDefaultConfig { private static readonly string OwnerName = BepinexPlugin.modUniqueID; public static string GetDefaultID(EntityDefinition entity) { string name = ((object)entity).GetType().Name; return name.Remove(name.Length - 3); } public static CardConfig GetCardDefaultConfig() { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Expected O, but got Unknown return new CardConfig(0, "", 10, true, new string[0][], "", "", 0, false, true, true, false, true, (Rarity)0, (CardType)0, (TargetType?)null, (IReadOnlyList<ManaColor>)new List<ManaColor>(), false, default(ManaGroup), (ManaGroup?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (ManaGroup?)null, (ManaGroup?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (Keyword)0, (Keyword)0, false, (Keyword)0, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>(), OwnerName, "", "", false, (string)null, (IReadOnlyList<string>)new List<string>()); } public static ExhibitConfig GetDefaultExhibitConfig() { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown return new ExhibitConfig(0, "", 10, false, false, false, false, (AppearanceType)3, OwnerName, (ExhibitLosableType)1, (Rarity)3, (int?)null, (int?)null, (int?)null, (ManaGroup?)default(ManaGroup), (ManaColor?)null, (ManaColor?)(ManaColor)1, 1, false, (int?)null, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>()); } public static StatusEffectConfig GetDefaultStatusEffectConfig() { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Expected O, but got Unknown return new StatusEffectConfig(0, "", 10, (StatusEffectType)0, false, true, (int?)null, true, (StackType?)(StackType)0, false, (StackType?)(StackType)0, (DurationDecreaseTiming)0, false, (StackType?)(StackType)3, (StackType?)(StackType)3, false, (Keyword)0, (IReadOnlyList<string>)new List<string>(), "Default", "Default", "Default"); } public static UltimateSkillConfig GetDefaultUltConfig() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown return new UltimateSkillConfig("", 10, 100, 100, 2, (UsRepeatableType)1, 1, 0, 0, (Keyword)256, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>()); } public static EnemyUnitConfig GetEnemyUnitDefaultConfig() { //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Expected O, but got Unknown return new EnemyUnitConfig("", false, false, (IReadOnlyList<ManaColor>)new List<ManaColor> { (ManaColor)6 }, 10, "", "#ffff", (EnemyType)3, true, (float?)null, (int?)null, 250, (int?)10, (int?)10, (int?)10, (int?)10, (int?)1, (int?)15, (int?)1, (int?)2, (int?)250, (int?)10, (int