Просмотр исходного кода

Fix BT16 bugs part 3

Lui Ohwada BT16-090
Beast Storm Dance of Love BT16-091
Invincible Dragon Insect Combo BT16-092
Metropolitan Police Department, Community Safety Bureau, Cyber Crime Division, Investigation Unit 11 BT16-096
Advent of the Ancient Steel Angel BT16-097
The Demon Wolf of the Castle of Nine Wolves BT16-099
Thunderflame Crusher BT16-100
Andrej Erdelsky 1 год назад
Родитель
Сommit
702c0e8d61

+ 141 - 122
Assets/CardEffect/BT16/Black/AncientAngelOfSteel_BT16_097.cs

@@ -13,16 +13,18 @@ namespace DCGO.CardEffects.BT16
             List<ICardEffect> cardEffects = new List<ICardEffect>();
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
 
             #region Main - Option Skill
             #region Main - Option Skill
+
             if (timing == EffectTiming.OptionSkill)
             if (timing == EffectTiming.OptionSkill)
             {
             {
                 ActivateClass activateClass = new ActivateClass();
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("Play 1 [Ankylomon] or [Angemon]", CanUseCondition, card);
                 activateClass.SetUpICardEffect("Play 1 [Ankylomon] or [Angemon]", CanUseCondition, card);
-                activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, true, EffectDiscription());
+                activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
                 cardEffects.Add(activateClass);
                 cardEffects.Add(activateClass);
 
 
                 string EffectDiscription()
                 string EffectDiscription()
                 {
                 {
-                    return "[Main] You may play 1 [Ankylomon] or [Angemon] from your hand without paying the cost. Then, 2 of your Digimon may DNA digivolve into a Digimon card in your hand. If DNA digivolved by this effect, <Recovery +1(Deck)>";
+                    return
+                        "[Main] You may play 1 [Ankylomon] or [Angemon] from your hand without paying the cost. Then, 2 of your Digimon may DNA digivolve into a Digimon card in your hand. If DNA digivolved by this effect, <Recovery +1(Deck)>";
                 }
                 }
 
 
                 bool CanSelectCardCondition(CardSource cardSource)
                 bool CanSelectCardCondition(CardSource cardSource)
@@ -58,12 +60,11 @@ namespace DCGO.CardEffects.BT16
 
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 {
                 {
+                    // Play [Ankylomon/Angemon]
                     if (card.Owner.HandCards.Count(CanSelectCardCondition) >= 1)
                     if (card.Owner.HandCards.Count(CanSelectCardCondition) >= 1)
                     {
                     {
                         List<CardSource> selectedCards = new List<CardSource>();
                         List<CardSource> selectedCards = new List<CardSource>();
 
 
-                        int maxCount = 1;
-
                         SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
                         SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
 
 
                         selectHandEffect.SetUp(
                         selectHandEffect.SetUp(
@@ -71,7 +72,7 @@ namespace DCGO.CardEffects.BT16
                             canTargetCondition: CanSelectCardCondition,
                             canTargetCondition: CanSelectCardCondition,
                             canTargetCondition_ByPreSelecetedList: null,
                             canTargetCondition_ByPreSelecetedList: null,
                             canEndSelectCondition: null,
                             canEndSelectCondition: null,
-                            maxCount: maxCount,
+                            maxCount: 1,
                             canNoSelect: true,
                             canNoSelect: true,
                             canEndNotMax: false,
                             canEndNotMax: false,
                             isShowOpponent: true,
                             isShowOpponent: true,
@@ -92,114 +93,124 @@ namespace DCGO.CardEffects.BT16
                             yield return null;
                             yield return null;
                         }
                         }
 
 
-                        yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlayPermanentCards(cardSources: selectedCards, activateClass: activateClass, payCost: false, isTapped: false, root: SelectCardEffect.Root.Hand, activateETB: true));
+                        yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlayPermanentCards(
+                            cardSources: selectedCards, activateClass: activateClass, payCost: false, isTapped: false,
+                            root: SelectCardEffect.Root.Hand, activateETB: true));
+                    }
 
 
-                        // DNA digivolve
-                        if (card.Owner.GetBattleAreaDigimons().Count >= 2)
+                    // DNA digivolve
+                    if (card.Owner.GetBattleAreaDigimons().Count >= 2)
+                    {
+                        if (card.Owner.HandCards.Count(CanSelectDNACardCondition) >= 1)
                         {
                         {
-                            if (card.Owner.HandCards.Count(CanSelectDNACardCondition) >= 1)
+                            List<CardSource> selectedDNACards = new List<CardSource>();
+
+                            SelectHandEffect selectDNAEffect = GManager.instance.GetComponent<SelectHandEffect>();
+
+                            selectDNAEffect.SetUp(
+                                selectPlayer: card.Owner,
+                                canTargetCondition: CanSelectDNACardCondition,
+                                canTargetCondition_ByPreSelecetedList: null,
+                                canEndSelectCondition: null,
+                                maxCount: 1,
+                                canNoSelect: true,
+                                canEndNotMax: false,
+                                isShowOpponent: true,
+                                selectCardCoroutine: SelectDNACoroutine,
+                                afterSelectCardCoroutine: null,
+                                mode: SelectHandEffect.Mode.Custom,
+                                cardEffect: activateClass);
+
+                            selectDNAEffect.SetUpCustomMessage("Select 1 card to DNA digivolve.",
+                                "The opponent is selecting 1 card to DNA digivolve.");
+                            selectDNAEffect.SetNotShowCard();
+
+                            yield return StartCoroutine(selectDNAEffect.Activate());
+
+                            IEnumerator SelectDNACoroutine(CardSource cardSource)
                             {
                             {
-                                List<CardSource> selectedDNACards = new List<CardSource>();
-
-                                SelectHandEffect selectDNAEffect = GManager.instance.GetComponent<SelectHandEffect>();
-
-                                selectDNAEffect.SetUp(
-                                    selectPlayer: card.Owner,
-                                    canTargetCondition: CanSelectDNACardCondition,
-                                    canTargetCondition_ByPreSelecetedList: null,
-                                    canEndSelectCondition: null,
-                                    maxCount: 1,
-                                    canNoSelect: true,
-                                    canEndNotMax: false,
-                                    isShowOpponent: true,
-                                    selectCardCoroutine: SelectDNACoroutine,
-                                    afterSelectCardCoroutine: null,
-                                    mode: SelectHandEffect.Mode.Custom,
-                                    cardEffect: activateClass);
+                                selectedDNACards.Add(cardSource);
 
 
-                                selectDNAEffect.SetUpCustomMessage("Select 1 card to DNA digivolve.", "The opponent is selecting 1 card to DNA digivolve.");
-                                selectDNAEffect.SetNotShowCard();
-
-                                yield return StartCoroutine(selectDNAEffect.Activate());
-
-                                IEnumerator SelectDNACoroutine(CardSource cardSource)
-                                {
-                                    selectedDNACards.Add(cardSource);
-
-                                    yield return null;
-                                }
+                                yield return null;
+                            }
 
 
-                                if (selectedDNACards.Count >= 1)
+                            if (selectedDNACards.Count >= 1)
+                            {
+                                foreach (CardSource selectedCard in selectedDNACards)
                                 {
                                 {
-                                    foreach (CardSource selectedCard in selectedDNACards)
+                                    if (selectedCard.CanPlayJogress(true))
                                     {
                                     {
-                                        if (selectedCard.CanPlayJogress(true))
-                                        {
-                                            _jogressEvoRootsFrameIDs = new int[0];
+                                        _jogressEvoRootsFrameIDs = new int[0];
 
 
-                                            yield return GManager.instance.photonWaitController.StartWait("AncientAngelOfSteel_BT16_097");
+                                        yield return GManager.instance.photonWaitController.StartWait("AncientAngelOfSteel_BT16_097");
 
 
-                                            if (card.Owner.isYou || GManager.instance.IsAI)
+                                        if (card.Owner.isYou || GManager.instance.IsAI)
+                                        {
+                                            GManager.instance.selectJogressEffect.SetUp_SelectDigivolutionRoots
+                                            (card: selectedCard,
+                                                isLocal: true,
+                                                isPayCost: true,
+                                                canNoSelect: true,
+                                                endSelectCoroutine_SelectDigivolutionRoots: EndSelectCoroutine_SelectDigivolutionRoots,
+                                                noSelectCoroutine: null);
+
+                                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.selectJogressEffect
+                                                .SelectDigivolutionRoots());
+
+                                            IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
                                             {
                                             {
-                                                GManager.instance.selectJogressEffect.SetUp_SelectDigivolutionRoots
-                                                                            (card: selectedCard,
-                                                                            isLocal: true,
-                                                                            isPayCost: true,
-                                                                            canNoSelect: true,
-                                                                            endSelectCoroutine_SelectDigivolutionRoots: EndSelectCoroutine_SelectDigivolutionRoots,
-                                                                            noSelectCoroutine: null);
-
-                                                yield return ContinuousController.instance.StartCoroutine(GManager.instance.selectJogressEffect.SelectDigivolutionRoots());
-
-                                                IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
+                                                if (permanents.Count == 2)
                                                 {
                                                 {
-                                                    if (permanents.Count == 2)
-                                                    {
-                                                        _jogressEvoRootsFrameIDs = permanents.Distinct().ToArray().Map(permanent => permanent.PermanentFrame.FrameID);
-                                                    }
-
-                                                    yield return null;
+                                                    _jogressEvoRootsFrameIDs = permanents.Distinct().ToArray()
+                                                        .Map(permanent => permanent.PermanentFrame.FrameID);
                                                 }
                                                 }
 
 
-                                                photonView.RPC("SetJogressEvoRootsFrameIDs", RpcTarget.All, _jogressEvoRootsFrameIDs);
+                                                yield return null;
                                             }
                                             }
 
 
-                                            else
-                                            {
-                                                GManager.instance.commandText.OpenCommandText("The opponent is choosing a card to DNA digivolve.");
-                                            }
+                                            photonView.RPC("SetJogressEvoRootsFrameIDs", RpcTarget.All, _jogressEvoRootsFrameIDs);
+                                        }
+
+                                        else
+                                        {
+                                            GManager.instance.commandText.OpenCommandText(
+                                                "The opponent is choosing a card to DNA digivolve.");
+                                        }
 
 
-                                            yield return new WaitWhile(() => !_endSelect);
-                                            _endSelect = false;
+                                        yield return new WaitWhile(() => !_endSelect);
+                                        _endSelect = false;
 
 
-                                            GManager.instance.commandText.CloseCommandText();
-                                            yield return new WaitWhile(() => GManager.instance.commandText.gameObject.activeSelf);
+                                        GManager.instance.commandText.CloseCommandText();
+                                        yield return new WaitWhile(() => GManager.instance.commandText.gameObject.activeSelf);
 
 
-                                            if (_jogressEvoRootsFrameIDs.Length == 2)
-                                            {
-                                                yield return ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<Effects>().ShowCardEffect(new List<CardSource>() { selectedCard }, "Played Card", true, true));
+                                        if (_jogressEvoRootsFrameIDs.Length == 2)
+                                        {
+                                            yield return ContinuousController.instance.StartCoroutine(GManager.instance
+                                                .GetComponent<Effects>().ShowCardEffect(new List<CardSource>() { selectedCard },
+                                                    "Played Card", true, true));
 
 
-                                                PlayCardClass playCard = new PlayCardClass(
-                                                    cardSources: new List<CardSource>() { selectedCard },
-                                                    hashtable: CardEffectCommons.CardEffectHashtable(activateClass),
-                                                    payCost: true,
-                                                    targetPermanent: null,
-                                                    isTapped: false,
-                                                    root: SelectCardEffect.Root.Hand,
-                                                    activateETB: true);
+                                            PlayCardClass playCard = new PlayCardClass(
+                                                cardSources: new List<CardSource>() { selectedCard },
+                                                hashtable: CardEffectCommons.CardEffectHashtable(activateClass),
+                                                payCost: true,
+                                                targetPermanent: null,
+                                                isTapped: false,
+                                                root: SelectCardEffect.Root.Hand,
+                                                activateETB: true);
 
 
-                                                playCard.SetJogress(_jogressEvoRootsFrameIDs);
+                                            playCard.SetJogress(_jogressEvoRootsFrameIDs);
 
 
-                                                yield return ContinuousController.instance.StartCoroutine(playCard.PlayCard());
+                                            yield return ContinuousController.instance.StartCoroutine(playCard.PlayCard());
 
 
-                                                if (CardEffectCommons.IsExistOnBattleArea(selectedCard))
+                                            if (CardEffectCommons.IsExistOnBattleArea(selectedCard))
+                                            {
+                                                if (card.Owner.LibraryCards.Count >= 1)
                                                 {
                                                 {
-                                                    if (card.Owner.LibraryCards.Count >= 1)
+                                                    if (card.Owner.CanAddSecurity(activateClass))
                                                     {
                                                     {
-                                                        if (card.Owner.CanAddSecurity(activateClass))
-                                                        {
-                                                            yield return ContinuousController.instance.StartCoroutine(new IRecovery(card.Owner, 1, activateClass).Recovery()); ;
-                                                        }
+                                                        yield return ContinuousController.instance.StartCoroutine(
+                                                            new IRecovery(card.Owner, 1, activateClass).Recovery());
+                                                        ;
                                                     }
                                                     }
                                                 }
                                                 }
                                             }
                                             }
@@ -211,19 +222,23 @@ namespace DCGO.CardEffects.BT16
                     }
                     }
                 }
                 }
             }
             }
+
             #endregion
             #endregion
 
 
             #region Security Effect
             #region Security Effect
+
             if (timing == EffectTiming.SecuritySkill)
             if (timing == EffectTiming.SecuritySkill)
             {
             {
                 ActivateClass activateClass = new ActivateClass();
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("Play 1 [Armadillomon] or [Patamon]", CanUseCondition, card);
                 activateClass.SetUpICardEffect("Play 1 [Armadillomon] or [Patamon]", CanUseCondition, card);
                 activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
                 activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
+                activateClass.SetIsSecurityEffect(true);
                 cardEffects.Add(activateClass);
                 cardEffects.Add(activateClass);
 
 
                 string EffectDiscription()
                 string EffectDiscription()
                 {
                 {
-                    return "[Security] You may play 1 [Armadillomon] or [Patamon] from your hand or trash without paying the cost. Then, add this card to the hand.";
+                    return
+                        "[Security] You may play 1 [Armadillomon] or [Patamon] from your hand or trash without paying the cost. Then, add this card to the hand.";
                 }
                 }
 
 
                 bool CanSelectCardCondition(CardSource cardSource)
                 bool CanSelectCardCondition(CardSource cardSource)
@@ -247,15 +262,16 @@ namespace DCGO.CardEffects.BT16
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 {
                 {
                     List<SelectionElement<bool>> selectionElements = new List<SelectionElement<bool>>()
                     List<SelectionElement<bool>> selectionElements = new List<SelectionElement<bool>>()
-                        {
-                            new SelectionElement<bool>(message: $"Yes", value : true, spriteIndex: 0),
-                            new SelectionElement<bool>(message: $"No", value : false, spriteIndex: 1),
-                        };
+                    {
+                        new SelectionElement<bool>(message: $"Yes", value: true, spriteIndex: 0),
+                        new SelectionElement<bool>(message: $"No", value: false, spriteIndex: 1),
+                    };
 
 
                     string selectPlayerMessage = "Will you play a Digimon?";
                     string selectPlayerMessage = "Will you play a Digimon?";
                     string notSelectPlayerMessage = "The opponent is choosing effects.";
                     string notSelectPlayerMessage = "The opponent is choosing effects.";
 
 
-                    GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage, notSelectPlayerMessage: notSelectPlayerMessage);
+                    GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements, selectPlayer: card.Owner,
+                        selectPlayerMessage: selectPlayerMessage, notSelectPlayerMessage: notSelectPlayerMessage);
 
 
 
 
                     yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager.WaitForEndSelect());
                     yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager.WaitForEndSelect());
@@ -264,7 +280,6 @@ namespace DCGO.CardEffects.BT16
 
 
                     if (playDigimon)
                     if (playDigimon)
                     {
                     {
-
                         bool canSelectHand = card.Owner.HandCards.Count(CanSelectCardCondition) >= 1;
                         bool canSelectHand = card.Owner.HandCards.Count(CanSelectCardCondition) >= 1;
                         bool canSelectTrash = card.Owner.TrashCards.Count(CanSelectCardCondition) >= 1;
                         bool canSelectTrash = card.Owner.TrashCards.Count(CanSelectCardCondition) >= 1;
 
 
@@ -273,15 +288,17 @@ namespace DCGO.CardEffects.BT16
                             if (canSelectHand && canSelectTrash)
                             if (canSelectHand && canSelectTrash)
                             {
                             {
                                 List<SelectionElement<bool>> selectionElements1 = new List<SelectionElement<bool>>()
                                 List<SelectionElement<bool>> selectionElements1 = new List<SelectionElement<bool>>()
-                        {
-                            new SelectionElement<bool>(message: $"From hand", value : true, spriteIndex: 0),
-                            new SelectionElement<bool>(message: $"From trash", value : false, spriteIndex: 1),
-                        };
+                                {
+                                    new SelectionElement<bool>(message: $"From hand", value: true, spriteIndex: 0),
+                                    new SelectionElement<bool>(message: $"From trash", value: false, spriteIndex: 1),
+                                };
 
 
                                 string selectPlayerMessage1 = "From which area do you play a card?";
                                 string selectPlayerMessage1 = "From which area do you play a card?";
                                 string notSelectPlayerMessage1 = "The opponent is choosing from which area to play a card.";
                                 string notSelectPlayerMessage1 = "The opponent is choosing from which area to play a card.";
 
 
-                                GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements1, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage1, notSelectPlayerMessage: notSelectPlayerMessage1);
+                                GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements1,
+                                    selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage1,
+                                    notSelectPlayerMessage: notSelectPlayerMessage1);
                             }
                             }
 
 
                             else
                             else
@@ -289,7 +306,8 @@ namespace DCGO.CardEffects.BT16
                                 GManager.instance.userSelectionManager.SetBool(canSelectHand);
                                 GManager.instance.userSelectionManager.SetBool(canSelectHand);
                             }
                             }
 
 
-                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager.WaitForEndSelect());
+                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager
+                                .WaitForEndSelect());
 
 
                             bool fromHand = GManager.instance.userSelectionManager.SelectedBoolValue;
                             bool fromHand = GManager.instance.userSelectionManager.SelectedBoolValue;
 
 
@@ -335,24 +353,25 @@ namespace DCGO.CardEffects.BT16
                                 SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
                                 SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
 
 
                                 selectCardEffect.SetUp(
                                 selectCardEffect.SetUp(
-                                            canTargetCondition: CanSelectCardCondition,
-                                            canTargetCondition_ByPreSelecetedList: null,
-                                            canEndSelectCondition: null,
-                                            canNoSelect: () => true,
-                                            selectCardCoroutine: SelectCardCoroutine,
-                                            afterSelectCardCoroutine: null,
-                                            message: "Select 1 card to play.",
-                                            maxCount: maxCount1,
-                                            canEndNotMax: false,
-                                            isShowOpponent: true,
-                                            mode: SelectCardEffect.Mode.Custom,
-                                            root: SelectCardEffect.Root.Custom,
-                                            customRootCardList: card.Owner.TrashCards,
-                                            canLookReverseCard: true,
-                                            selectPlayer: card.Owner,
-                                            cardEffect: activateClass);
-
-                                selectCardEffect.SetUpCustomMessage("Select 1 trash card to play.", "The opponent is selecting 1 trash card to play.");
+                                    canTargetCondition: CanSelectCardCondition,
+                                    canTargetCondition_ByPreSelecetedList: null,
+                                    canEndSelectCondition: null,
+                                    canNoSelect: () => true,
+                                    selectCardCoroutine: SelectCardCoroutine,
+                                    afterSelectCardCoroutine: null,
+                                    message: "Select 1 card to play.",
+                                    maxCount: maxCount1,
+                                    canEndNotMax: false,
+                                    isShowOpponent: true,
+                                    mode: SelectCardEffect.Mode.Custom,
+                                    root: SelectCardEffect.Root.Custom,
+                                    customRootCardList: card.Owner.TrashCards,
+                                    canLookReverseCard: true,
+                                    selectPlayer: card.Owner,
+                                    cardEffect: activateClass);
+
+                                selectCardEffect.SetUpCustomMessage("Select 1 trash card to play.",
+                                    "The opponent is selecting 1 trash card to play.");
                                 selectCardEffect.SetUpCustomMessage_ShowCard("Played Card");
                                 selectCardEffect.SetUpCustomMessage_ShowCard("Played Card");
 
 
                                 yield return StartCoroutine(selectCardEffect.Activate());
                                 yield return StartCoroutine(selectCardEffect.Activate());
@@ -372,13 +391,13 @@ namespace DCGO.CardEffects.BT16
                                 isTapped: false,
                                 isTapped: false,
                                 root: root,
                                 root: root,
                                 activateETB: true));
                                 activateETB: true));
-
-                           
                         }
                         }
                     }
                     }
+
                     yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.AddThisCardToHand(card, activateClass));
                     yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.AddThisCardToHand(card, activateClass));
                 }
                 }
             }
             }
+
             #endregion
             #endregion
 
 
             return cardEffects;
             return cardEffects;

+ 2 - 1
Assets/CardEffect/BT16/Black/MetropolitanPoliceDepartmentCommunitySafetyBureauCyberCrimeDivisionInvestigationUnitElevenDigimonCrimeResponeTeam_BT16_096.cs

@@ -68,7 +68,7 @@ namespace DCGO.CardEffects.BT16
 
 
                 string EffectDiscription()
                 string EffectDiscription()
                 {
                 {
-                    return "[Main] <Delay>\r\n Reveal the top 3 cards of your deck. You may play 1 card with the [D-Brigade] or [DigiPolice] trait and a play cost of 4 or less among them without paying the cost. Trash the rest.";
+                    return "[Main] <Delay>\r\n• Reveal the top 3 cards of your deck. You may play 1 card with the [D-Brigade] or [DigiPolice] trait and a play cost of 4 or less among them without paying the cost. Trash the rest.";
                 }
                 }
 
 
                 bool CanSelectCardCondition(CardSource cardSource)
                 bool CanSelectCardCondition(CardSource cardSource)
@@ -139,6 +139,7 @@ namespace DCGO.CardEffects.BT16
                 ActivateClass activateClass = new ActivateClass();
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("Reveal top 3, add 1 card", CanUseCondition, card);
                 activateClass.SetUpICardEffect("Reveal top 3, add 1 card", CanUseCondition, card);
                 activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
                 activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
+                activateClass.SetIsSecurityEffect(true);
                 cardEffects.Add(activateClass);
                 cardEffects.Add(activateClass);
 
 
                 string EffectDiscription()
                 string EffectDiscription()

+ 76 - 56
Assets/CardEffect/BT16/Blue/InvincibleDragonInsectFusion_BT16_092.cs

@@ -13,16 +13,18 @@ namespace DCGO.CardEffects.BT16
             List<ICardEffect> cardEffects = new List<ICardEffect>();
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
 
             #region Main - Option Skill
             #region Main - Option Skill
+
             if (timing == EffectTiming.OptionSkill)
             if (timing == EffectTiming.OptionSkill)
             {
             {
                 ActivateClass activateClass = new ActivateClass();
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("Play 1 [ExVeemon] or [Stingmon]", CanUseCondition, card);
                 activateClass.SetUpICardEffect("Play 1 [ExVeemon] or [Stingmon]", CanUseCondition, card);
-                activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, true, EffectDiscription());
+                activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
                 cardEffects.Add(activateClass);
                 cardEffects.Add(activateClass);
 
 
                 string EffectDiscription()
                 string EffectDiscription()
                 {
                 {
-                    return "[Main] You may play 1 [ExVeemon] or [Stingmon] from your hand without paying the cost. Then, 2 of your Digimon may DNA digivolve into a Digimon card in your hand. Until the end of your opponent's turn, the Digimon this effect DNA digivolved can't be deleted in battle and gains <Blocker>.";
+                    return
+                        "[Main] You may play 1 [ExVeemon] or [Stingmon] from your hand without paying the cost. Then, 2 of your Digimon may DNA digivolve into a Digimon card in your hand. Until the end of your opponent's turn, the Digimon this effect DNA digivolved can't be deleted in battle and gains <Blocker>.";
                 }
                 }
 
 
                 bool CanSelectCardCondition(CardSource cardSource)
                 bool CanSelectCardCondition(CardSource cardSource)
@@ -58,12 +60,11 @@ namespace DCGO.CardEffects.BT16
 
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 {
                 {
+                    // Play [ExVeemon/Stingmon]
                     if (card.Owner.HandCards.Count(CanSelectCardCondition) >= 1)
                     if (card.Owner.HandCards.Count(CanSelectCardCondition) >= 1)
                     {
                     {
                         List<CardSource> selectedCards = new List<CardSource>();
                         List<CardSource> selectedCards = new List<CardSource>();
 
 
-                        int maxCount = 1;
-
                         SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
                         SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
 
 
                         selectHandEffect.SetUp(
                         selectHandEffect.SetUp(
@@ -71,7 +72,7 @@ namespace DCGO.CardEffects.BT16
                             canTargetCondition: CanSelectCardCondition,
                             canTargetCondition: CanSelectCardCondition,
                             canTargetCondition_ByPreSelecetedList: null,
                             canTargetCondition_ByPreSelecetedList: null,
                             canEndSelectCondition: null,
                             canEndSelectCondition: null,
-                            maxCount: maxCount,
+                            maxCount: 1,
                             canNoSelect: true,
                             canNoSelect: true,
                             canEndNotMax: false,
                             canEndNotMax: false,
                             isShowOpponent: true,
                             isShowOpponent: true,
@@ -92,7 +93,9 @@ namespace DCGO.CardEffects.BT16
                             yield return null;
                             yield return null;
                         }
                         }
 
 
-                        yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlayPermanentCards(cardSources: selectedCards, activateClass: activateClass, payCost: false, isTapped: false, root: SelectCardEffect.Root.Hand, activateETB: true));
+                        yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlayPermanentCards(
+                            cardSources: selectedCards, activateClass: activateClass, payCost: false, isTapped: false,
+                            root: SelectCardEffect.Root.Hand, activateETB: true));
                     }
                     }
 
 
                     // DNA digivolve
                     // DNA digivolve
@@ -118,7 +121,8 @@ namespace DCGO.CardEffects.BT16
                                 mode: SelectHandEffect.Mode.Custom,
                                 mode: SelectHandEffect.Mode.Custom,
                                 cardEffect: activateClass);
                                 cardEffect: activateClass);
 
 
-                            selectDNAEffect.SetUpCustomMessage("Select 1 card to DNA digivolve.", "The opponent is selecting 1 card to DNA digivolve.");
+                            selectDNAEffect.SetUpCustomMessage("Select 1 card to DNA digivolve.",
+                                "The opponent is selecting 1 card to DNA digivolve.");
                             selectDNAEffect.SetNotShowCard();
                             selectDNAEffect.SetNotShowCard();
 
 
                             yield return StartCoroutine(selectDNAEffect.Activate());
                             yield return StartCoroutine(selectDNAEffect.Activate());
@@ -143,20 +147,22 @@ namespace DCGO.CardEffects.BT16
                                         if (card.Owner.isYou || GManager.instance.IsAI)
                                         if (card.Owner.isYou || GManager.instance.IsAI)
                                         {
                                         {
                                             GManager.instance.selectJogressEffect.SetUp_SelectDigivolutionRoots
                                             GManager.instance.selectJogressEffect.SetUp_SelectDigivolutionRoots
-                                                                        (card: selectedCard,
-                                                                        isLocal: true,
-                                                                        isPayCost: true,
-                                                                        canNoSelect: true,
-                                                                        endSelectCoroutine_SelectDigivolutionRoots: EndSelectCoroutine_SelectDigivolutionRoots,
-                                                                        noSelectCoroutine: null);
+                                            (card: selectedCard,
+                                                isLocal: true,
+                                                isPayCost: true,
+                                                canNoSelect: true,
+                                                endSelectCoroutine_SelectDigivolutionRoots: EndSelectCoroutine_SelectDigivolutionRoots,
+                                                noSelectCoroutine: null);
 
 
-                                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.selectJogressEffect.SelectDigivolutionRoots());
+                                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.selectJogressEffect
+                                                .SelectDigivolutionRoots());
 
 
                                             IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
                                             IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
                                             {
                                             {
                                                 if (permanents.Count == 2)
                                                 if (permanents.Count == 2)
                                                 {
                                                 {
-                                                    _jogressEvoRootsFrameIDs = permanents.Distinct().ToArray().Map(permanent => permanent.PermanentFrame.FrameID);
+                                                    _jogressEvoRootsFrameIDs = permanents.Distinct().ToArray()
+                                                        .Map(permanent => permanent.PermanentFrame.FrameID);
                                                 }
                                                 }
 
 
                                                 yield return null;
                                                 yield return null;
@@ -167,7 +173,8 @@ namespace DCGO.CardEffects.BT16
 
 
                                         else
                                         else
                                         {
                                         {
-                                            GManager.instance.commandText.OpenCommandText("The opponent is choosing a card to DNA digivolve.");
+                                            GManager.instance.commandText.OpenCommandText(
+                                                "The opponent is choosing a card to DNA digivolve.");
                                         }
                                         }
 
 
                                         yield return new WaitWhile(() => !_endSelect);
                                         yield return new WaitWhile(() => !_endSelect);
@@ -178,7 +185,9 @@ namespace DCGO.CardEffects.BT16
 
 
                                         if (_jogressEvoRootsFrameIDs.Length == 2)
                                         if (_jogressEvoRootsFrameIDs.Length == 2)
                                         {
                                         {
-                                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<Effects>().ShowCardEffect(new List<CardSource>() { selectedCard }, "Played Card", true, true));
+                                            yield return ContinuousController.instance.StartCoroutine(GManager.instance
+                                                .GetComponent<Effects>().ShowCardEffect(new List<CardSource>() { selectedCard },
+                                                    "Played Card", true, true));
 
 
                                             PlayCardClass playCard = new PlayCardClass(
                                             PlayCardClass playCard = new PlayCardClass(
                                                 cardSources: new List<CardSource>() { selectedCard },
                                                 cardSources: new List<CardSource>() { selectedCard },
@@ -200,14 +209,16 @@ namespace DCGO.CardEffects.BT16
                                                     effectDuration: EffectDuration.UntilOpponentTurnEnd,
                                                     effectDuration: EffectDuration.UntilOpponentTurnEnd,
                                                     activateClass: activateClass));
                                                     activateClass: activateClass));
 
 
-                                                yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.GainCanNotBeDeletedByBattle(
-                                                    targetPermanent: selectedCard.PermanentOfThisCard(),
-                                                    canNotBeDestroyedByBattleCondition: CanNotBeDestroyedByBattleCondition,
-                                                    effectDuration: EffectDuration.UntilOpponentTurnEnd,
-                                                    activateClass: activateClass,
-                                                    effectName: "Can't be deleted in battle"));
+                                                yield return ContinuousController.instance.StartCoroutine(
+                                                    CardEffectCommons.GainCanNotBeDeletedByBattle(
+                                                        targetPermanent: selectedCard.PermanentOfThisCard(),
+                                                        canNotBeDestroyedByBattleCondition: CanNotBeDestroyedByBattleCondition,
+                                                        effectDuration: EffectDuration.UntilOpponentTurnEnd,
+                                                        activateClass: activateClass,
+                                                        effectName: "Can't be deleted in battle"));
 
 
-                                                bool CanNotBeDestroyedByBattleCondition(Permanent permanent1, Permanent attackingPermanent, Permanent defendingPermanent, CardSource defendingCard)
+                                                bool CanNotBeDestroyedByBattleCondition(Permanent permanent1, Permanent attackingPermanent,
+                                                    Permanent defendingPermanent, CardSource defendingCard)
                                                 {
                                                 {
                                                     return permanent1 == attackingPermanent || permanent1 == defendingPermanent;
                                                     return permanent1 == attackingPermanent || permanent1 == defendingPermanent;
                                                 }
                                                 }
@@ -220,19 +231,23 @@ namespace DCGO.CardEffects.BT16
                     }
                     }
                 }
                 }
             }
             }
+
             #endregion
             #endregion
 
 
             #region Security Effect
             #region Security Effect
+
             if (timing == EffectTiming.SecuritySkill)
             if (timing == EffectTiming.SecuritySkill)
             {
             {
                 ActivateClass activateClass = new ActivateClass();
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("Play 1 [Veemon] or [Wormmon]", CanUseCondition, card);
                 activateClass.SetUpICardEffect("Play 1 [Veemon] or [Wormmon]", CanUseCondition, card);
                 activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
                 activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
+                activateClass.SetIsSecurityEffect(true);
                 cardEffects.Add(activateClass);
                 cardEffects.Add(activateClass);
 
 
                 string EffectDiscription()
                 string EffectDiscription()
                 {
                 {
-                    return "[Security] You may play 1 [Veemon] or [Wormmon] from your hand or trash without paying the cost. Then, add this card to the hand.";
+                    return
+                        "[Security] You may play 1 [Veemon] or [Wormmon] from your hand or trash without paying the cost. Then, add this card to the hand.";
                 }
                 }
 
 
                 bool CanSelectCardCondition(CardSource cardSource)
                 bool CanSelectCardCondition(CardSource cardSource)
@@ -256,15 +271,16 @@ namespace DCGO.CardEffects.BT16
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 {
                 {
                     List<SelectionElement<bool>> selectionElements = new List<SelectionElement<bool>>()
                     List<SelectionElement<bool>> selectionElements = new List<SelectionElement<bool>>()
-                        {
-                            new SelectionElement<bool>(message: $"Yes", value : true, spriteIndex: 0),
-                            new SelectionElement<bool>(message: $"No", value : false, spriteIndex: 1),
-                        };
+                    {
+                        new SelectionElement<bool>(message: $"Yes", value: true, spriteIndex: 0),
+                        new SelectionElement<bool>(message: $"No", value: false, spriteIndex: 1),
+                    };
 
 
                     string selectPlayerMessage = "Will you play a Digimon?";
                     string selectPlayerMessage = "Will you play a Digimon?";
                     string notSelectPlayerMessage = "The opponent is choosing effects.";
                     string notSelectPlayerMessage = "The opponent is choosing effects.";
 
 
-                    GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage, notSelectPlayerMessage: notSelectPlayerMessage);
+                    GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements, selectPlayer: card.Owner,
+                        selectPlayerMessage: selectPlayerMessage, notSelectPlayerMessage: notSelectPlayerMessage);
 
 
 
 
                     yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager.WaitForEndSelect());
                     yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager.WaitForEndSelect());
@@ -281,15 +297,17 @@ namespace DCGO.CardEffects.BT16
                             if (canSelectHand && canSelectTrash)
                             if (canSelectHand && canSelectTrash)
                             {
                             {
                                 List<SelectionElement<bool>> selectionElements1 = new List<SelectionElement<bool>>()
                                 List<SelectionElement<bool>> selectionElements1 = new List<SelectionElement<bool>>()
-                        {
-                            new SelectionElement<bool>(message: $"From hand", value : true, spriteIndex: 0),
-                            new SelectionElement<bool>(message: $"From trash", value : false, spriteIndex: 1),
-                        };
+                                {
+                                    new SelectionElement<bool>(message: $"From hand", value: true, spriteIndex: 0),
+                                    new SelectionElement<bool>(message: $"From trash", value: false, spriteIndex: 1),
+                                };
 
 
                                 string selectPlayerMessage1 = "From which area do you play a card?";
                                 string selectPlayerMessage1 = "From which area do you play a card?";
                                 string notSelectPlayerMessage1 = "The opponent is choosing from which area to play a card.";
                                 string notSelectPlayerMessage1 = "The opponent is choosing from which area to play a card.";
 
 
-                                GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements1, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage1, notSelectPlayerMessage: notSelectPlayerMessage1);
+                                GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements1,
+                                    selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage1,
+                                    notSelectPlayerMessage: notSelectPlayerMessage1);
                             }
                             }
 
 
                             else
                             else
@@ -297,7 +315,8 @@ namespace DCGO.CardEffects.BT16
                                 GManager.instance.userSelectionManager.SetBool(canSelectHand);
                                 GManager.instance.userSelectionManager.SetBool(canSelectHand);
                             }
                             }
 
 
-                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager.WaitForEndSelect());
+                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager
+                                .WaitForEndSelect());
 
 
                             bool fromHand = GManager.instance.userSelectionManager.SelectedBoolValue;
                             bool fromHand = GManager.instance.userSelectionManager.SelectedBoolValue;
 
 
@@ -343,24 +362,25 @@ namespace DCGO.CardEffects.BT16
                                 SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
                                 SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
 
 
                                 selectCardEffect.SetUp(
                                 selectCardEffect.SetUp(
-                                            canTargetCondition: CanSelectCardCondition,
-                                            canTargetCondition_ByPreSelecetedList: null,
-                                            canEndSelectCondition: null,
-                                            canNoSelect: () => true,
-                                            selectCardCoroutine: SelectCardCoroutine,
-                                            afterSelectCardCoroutine: null,
-                                            message: "Select 1 card to play.",
-                                            maxCount: maxCount1,
-                                            canEndNotMax: false,
-                                            isShowOpponent: true,
-                                            mode: SelectCardEffect.Mode.Custom,
-                                            root: SelectCardEffect.Root.Custom,
-                                            customRootCardList: card.Owner.TrashCards,
-                                            canLookReverseCard: true,
-                                            selectPlayer: card.Owner,
-                                            cardEffect: activateClass);
-
-                                selectCardEffect.SetUpCustomMessage("Select 1 trash card to play.", "The opponent is selecting 1 trash card to play.");
+                                    canTargetCondition: CanSelectCardCondition,
+                                    canTargetCondition_ByPreSelecetedList: null,
+                                    canEndSelectCondition: null,
+                                    canNoSelect: () => true,
+                                    selectCardCoroutine: SelectCardCoroutine,
+                                    afterSelectCardCoroutine: null,
+                                    message: "Select 1 card to play.",
+                                    maxCount: maxCount1,
+                                    canEndNotMax: false,
+                                    isShowOpponent: true,
+                                    mode: SelectCardEffect.Mode.Custom,
+                                    root: SelectCardEffect.Root.Custom,
+                                    customRootCardList: card.Owner.TrashCards,
+                                    canLookReverseCard: true,
+                                    selectPlayer: card.Owner,
+                                    cardEffect: activateClass);
+
+                                selectCardEffect.SetUpCustomMessage("Select 1 trash card to play.",
+                                    "The opponent is selecting 1 trash card to play.");
                                 selectCardEffect.SetUpCustomMessage_ShowCard("Played Card");
                                 selectCardEffect.SetUpCustomMessage_ShowCard("Played Card");
 
 
                                 yield return StartCoroutine(selectCardEffect.Activate());
                                 yield return StartCoroutine(selectCardEffect.Activate());
@@ -380,13 +400,13 @@ namespace DCGO.CardEffects.BT16
                                 isTapped: false,
                                 isTapped: false,
                                 root: root,
                                 root: root,
                                 activateETB: true));
                                 activateETB: true));
-
-                            
                         }
                         }
                     }
                     }
+
                     yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.AddThisCardToHand(card, activateClass));
                     yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.AddThisCardToHand(card, activateClass));
                 }
                 }
             }
             }
+
             #endregion
             #endregion
 
 
             return cardEffects;
             return cardEffects;

+ 3 - 2
Assets/CardEffect/BT16/Purple/DemonWoldOfTheCastleOfNineWolves_BT16_099.cs

@@ -114,9 +114,9 @@ namespace DCGO.CardEffects.BT16
 
 
                 bool CanSelectCardCondition(CardSource cardSource)
                 bool CanSelectCardCondition(CardSource cardSource)
                 {
                 {
-                    if (cardSource.HasPlayCost)
+                    if (cardSource.HasPlayCost && cardSource.ContainsTraits("SoC"))
                     {
                     {
-                        if (cardSource.ContainsTraits("SoC"))
+                        if (CardEffectCommons.CanPlayAsNewPermanent(cardSource: cardSource, payCost: true, cardEffect: activateClass))
                         {
                         {
                             return true;
                             return true;
                         }
                         }
@@ -276,6 +276,7 @@ namespace DCGO.CardEffects.BT16
                 ActivateClass activateClass = new ActivateClass();
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect(card.BaseENGCardNameFromEntity, CanUseCondition, card);
                 activateClass.SetUpICardEffect(card.BaseENGCardNameFromEntity, CanUseCondition, card);
                 activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
                 activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
+                activateClass.SetIsSecurityEffect(true);
                 cardEffects.Add(activateClass);
                 cardEffects.Add(activateClass);
 
 
                 string EffectDiscription()
                 string EffectDiscription()

+ 1 - 1
Assets/CardEffect/BT16/Purple/Soloogarmon_BT16_076.cs

@@ -236,7 +236,7 @@ namespace DCGO.CardEffects.BT16
 
 
                 bool PermanentCondition(Permanent permanent)
                 bool PermanentCondition(Permanent permanent)
                 {
                 {
-                    if (CardEffectCommons.IsPermanentExistsOnOwnerBattleArea(permanent, card))
+                    if (CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card))
                     {
                     {
                         if (permanent != card.PermanentOfThisCard())
                         if (permanent != card.PermanentOfThisCard())
                         {
                         {

+ 1 - 0
Assets/CardEffect/BT16/Purple/ThunderflameCrusher_BT16_100.cs

@@ -274,6 +274,7 @@ namespace DCGO.CardEffects.BT16
                 ActivateClass activateClass = new ActivateClass();
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect(card.BaseENGCardNameFromEntity, CanUseCondition, card);
                 activateClass.SetUpICardEffect(card.BaseENGCardNameFromEntity, CanUseCondition, card);
                 activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
                 activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
+                activateClass.SetIsSecurityEffect(true);
                 cardEffects.Add(activateClass);
                 cardEffects.Add(activateClass);
 
 
                 string EffectDiscription()
                 string EffectDiscription()

+ 166 - 135
Assets/CardEffect/BT16/Red/BeastlyStormDanceofAffection_BT16_091.cs

@@ -13,16 +13,18 @@ namespace DCGO.CardEffects.BT16
             List<ICardEffect> cardEffects = new List<ICardEffect>();
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
 
             #region Main - Option Skill
             #region Main - Option Skill
+
             if (timing == EffectTiming.OptionSkill)
             if (timing == EffectTiming.OptionSkill)
             {
             {
                 ActivateClass activateClass = new ActivateClass();
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("Play 1 [Aquilamon] or [Gatomon]", CanUseCondition, card);
                 activateClass.SetUpICardEffect("Play 1 [Aquilamon] or [Gatomon]", CanUseCondition, card);
-                activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, true, EffectDiscription());
+                activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
                 cardEffects.Add(activateClass);
                 cardEffects.Add(activateClass);
 
 
                 string EffectDiscription()
                 string EffectDiscription()
                 {
                 {
-                    return "[Main] You may play 1 [Aquilamon] or [Gatomon] from your hand without paying the cost. Then, 2 of your Digimon may DNA digivolve into a Digimon card in your hand. The Digimon DNA Digivolved by this effect gains [Security A+1] for the turn, and may attack a player.";
+                    return
+                        "[Main] You may play 1 [Aquilamon] or [Gatomon] from your hand without paying the cost. Then, 2 of your Digimon may DNA digivolve into a Digimon card in your hand. The Digimon DNA Digivolved by this effect gains [Security A+1] for the turn, and may attack a player.";
                 }
                 }
 
 
                 bool CanSelectCardCondition(CardSource cardSource)
                 bool CanSelectCardCondition(CardSource cardSource)
@@ -58,12 +60,11 @@ namespace DCGO.CardEffects.BT16
 
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 {
                 {
+                    // Play [Aquilamon/Gatomon]
                     if (card.Owner.HandCards.Count(CanSelectCardCondition) >= 1)
                     if (card.Owner.HandCards.Count(CanSelectCardCondition) >= 1)
                     {
                     {
                         List<CardSource> selectedCards = new List<CardSource>();
                         List<CardSource> selectedCards = new List<CardSource>();
 
 
-                        int maxCount = 1;
-
                         SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
                         SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
 
 
                         selectHandEffect.SetUp(
                         selectHandEffect.SetUp(
@@ -71,7 +72,7 @@ namespace DCGO.CardEffects.BT16
                             canTargetCondition: CanSelectCardCondition,
                             canTargetCondition: CanSelectCardCondition,
                             canTargetCondition_ByPreSelecetedList: null,
                             canTargetCondition_ByPreSelecetedList: null,
                             canEndSelectCondition: null,
                             canEndSelectCondition: null,
-                            maxCount: maxCount,
+                            maxCount: 1,
                             canNoSelect: true,
                             canNoSelect: true,
                             canEndNotMax: false,
                             canEndNotMax: false,
                             isShowOpponent: true,
                             isShowOpponent: true,
@@ -92,146 +93,162 @@ namespace DCGO.CardEffects.BT16
                             yield return null;
                             yield return null;
                         }
                         }
 
 
-                        yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlayPermanentCards(cardSources: selectedCards, activateClass: activateClass, payCost: false, isTapped: false, root: SelectCardEffect.Root.Hand, activateETB: true));
+                        yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlayPermanentCards(
+                            cardSources: selectedCards, activateClass: activateClass, payCost: false, isTapped: false,
+                            root: SelectCardEffect.Root.Hand, activateETB: true));
+                    }
 
 
-                        // DNA digivolve
-                        if (card.Owner.GetBattleAreaDigimons().Count >= 2)
-                        {
-                            bool DNADigivolved = false;
+                    // DNA digivolve
+                    if (card.Owner.GetBattleAreaDigimons().Count >= 2)
+                    {
+                        bool DNADigivolved = false;
 
 
-                            if (card.Owner.HandCards.Count(CanSelectDNACardCondition) >= 1)
+                        if (card.Owner.HandCards.Count(CanSelectDNACardCondition) >= 1)
+                        {
+                            List<CardSource> selectedDNACards = new List<CardSource>();
+
+                            SelectHandEffect selectDNAEffect = GManager.instance.GetComponent<SelectHandEffect>();
+
+                            selectDNAEffect.SetUp(
+                                selectPlayer: card.Owner,
+                                canTargetCondition: CanSelectDNACardCondition,
+                                canTargetCondition_ByPreSelecetedList: null,
+                                canEndSelectCondition: null,
+                                maxCount: 1,
+                                canNoSelect: true,
+                                canEndNotMax: false,
+                                isShowOpponent: true,
+                                selectCardCoroutine: SelectDNACoroutine,
+                                afterSelectCardCoroutine: null,
+                                mode: SelectHandEffect.Mode.Custom,
+                                cardEffect: activateClass);
+
+                            selectDNAEffect.SetUpCustomMessage("Select 1 card to DNA digivolve.",
+                                "The opponent is selecting 1 card to DNA digivolve.");
+                            selectDNAEffect.SetNotShowCard();
+
+                            yield return StartCoroutine(selectDNAEffect.Activate());
+
+                            IEnumerator SelectDNACoroutine(CardSource cardSource)
                             {
                             {
-                                List<CardSource> selectedDNACards = new List<CardSource>();
-
-                                SelectHandEffect selectDNAEffect = GManager.instance.GetComponent<SelectHandEffect>();
-
-                                selectDNAEffect.SetUp(
-                                    selectPlayer: card.Owner,
-                                    canTargetCondition: CanSelectDNACardCondition,
-                                    canTargetCondition_ByPreSelecetedList: null,
-                                    canEndSelectCondition: null,
-                                    maxCount: 1,
-                                    canNoSelect: true,
-                                    canEndNotMax: false,
-                                    isShowOpponent: true,
-                                    selectCardCoroutine: SelectDNACoroutine,
-                                    afterSelectCardCoroutine: null,
-                                    mode: SelectHandEffect.Mode.Custom,
-                                    cardEffect: activateClass);
-
-                                selectDNAEffect.SetUpCustomMessage("Select 1 card to DNA digivolve.", "The opponent is selecting 1 card to DNA digivolve.");
-                                selectDNAEffect.SetNotShowCard();
-
-                                yield return StartCoroutine(selectDNAEffect.Activate());
-
-                                IEnumerator SelectDNACoroutine(CardSource cardSource)
-                                {
-                                    selectedDNACards.Add(cardSource);
+                                selectedDNACards.Add(cardSource);
 
 
-                                    yield return null;
-                                }
+                                yield return null;
+                            }
 
 
-                                if (selectedDNACards.Count >= 1)
+                            if (selectedDNACards.Count >= 1)
+                            {
+                                foreach (CardSource selectedCard in selectedDNACards)
                                 {
                                 {
-                                    foreach (CardSource selectedCard in selectedDNACards)
+                                    if (selectedCard.CanPlayJogress(true))
                                     {
                                     {
-                                        if (selectedCard.CanPlayJogress(true))
-                                        {
-                                            _jogressEvoRootsFrameIDs = new int[0];
+                                        _jogressEvoRootsFrameIDs = new int[0];
 
 
-                                            yield return GManager.instance.photonWaitController.StartWait("BeastlyStormDanceofAffection_BT16_091");
+                                        yield return GManager.instance.photonWaitController.StartWait(
+                                            "BeastlyStormDanceofAffection_BT16_091");
 
 
-                                            if (card.Owner.isYou || GManager.instance.IsAI)
+                                        if (card.Owner.isYou || GManager.instance.IsAI)
+                                        {
+                                            GManager.instance.selectJogressEffect.SetUp_SelectDigivolutionRoots
+                                            (card: selectedCard,
+                                                isLocal: true,
+                                                isPayCost: true,
+                                                canNoSelect: true,
+                                                endSelectCoroutine_SelectDigivolutionRoots: EndSelectCoroutine_SelectDigivolutionRoots,
+                                                noSelectCoroutine: null);
+
+                                            yield return ContinuousController.instance.StartCoroutine(GManager.instance
+                                                .selectJogressEffect.SelectDigivolutionRoots());
+
+                                            IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
                                             {
                                             {
-                                                GManager.instance.selectJogressEffect.SetUp_SelectDigivolutionRoots
-                                                                            (card: selectedCard,
-                                                                            isLocal: true,
-                                                                            isPayCost: true,
-                                                                            canNoSelect: true,
-                                                                            endSelectCoroutine_SelectDigivolutionRoots: EndSelectCoroutine_SelectDigivolutionRoots,
-                                                                            noSelectCoroutine: null);
-
-                                                yield return ContinuousController.instance.StartCoroutine(GManager.instance.selectJogressEffect.SelectDigivolutionRoots());
-
-                                                IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
+                                                if (permanents.Count == 2)
                                                 {
                                                 {
-                                                    if (permanents.Count == 2)
-                                                    {
-                                                        _jogressEvoRootsFrameIDs = permanents.Distinct().ToArray().Map(permanent => permanent.PermanentFrame.FrameID);
-                                                    }
-
-                                                    yield return null;
+                                                    _jogressEvoRootsFrameIDs = permanents.Distinct().ToArray()
+                                                        .Map(permanent => permanent.PermanentFrame.FrameID);
                                                 }
                                                 }
 
 
-                                                photonView.RPC("SetJogressEvoRootsFrameIDs", RpcTarget.All, _jogressEvoRootsFrameIDs);
+                                                yield return null;
                                             }
                                             }
 
 
-                                            else
-                                            {
-                                                GManager.instance.commandText.OpenCommandText("The opponent is choosing a card to DNA digivolve.");
-                                            }
+                                            photonView.RPC("SetJogressEvoRootsFrameIDs", RpcTarget.All, _jogressEvoRootsFrameIDs);
+                                        }
 
 
-                                            yield return new WaitWhile(() => !_endSelect);
-                                            _endSelect = false;
+                                        else
+                                        {
+                                            GManager.instance.commandText.OpenCommandText(
+                                                "The opponent is choosing a card to DNA digivolve.");
+                                        }
 
 
-                                            GManager.instance.commandText.CloseCommandText();
-                                            yield return new WaitWhile(() => GManager.instance.commandText.gameObject.activeSelf);
+                                        yield return new WaitWhile(() => !_endSelect);
+                                        _endSelect = false;
 
 
-                                            if (_jogressEvoRootsFrameIDs.Length == 2)
-                                            {
-                                                yield return ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<Effects>().ShowCardEffect(new List<CardSource>() { selectedCard }, "Played Card", true, true));
-
-                                                PlayCardClass playCard = new PlayCardClass(
-                                                    cardSources: new List<CardSource>() { selectedCard },
-                                                    hashtable: CardEffectCommons.CardEffectHashtable(activateClass),
-                                                    payCost: true,
-                                                    targetPermanent: null,
-                                                    isTapped: false,
-                                                    root: SelectCardEffect.Root.Hand,
-                                                    activateETB: true);
-
-                                                playCard.SetJogress(_jogressEvoRootsFrameIDs);
-                                                DNADigivolved = true;
-                                                yield return ContinuousController.instance.StartCoroutine(playCard.PlayCard());
-
-                                                
-                                            }
+                                        GManager.instance.commandText.CloseCommandText();
+                                        yield return new WaitWhile(() => GManager.instance.commandText.gameObject.activeSelf);
+
+                                        if (_jogressEvoRootsFrameIDs.Length == 2)
+                                        {
+                                            yield return ContinuousController.instance.StartCoroutine(GManager.instance
+                                                .GetComponent<Effects>().ShowCardEffect(new List<CardSource>() { selectedCard },
+                                                    "Played Card", true, true));
+
+                                            PlayCardClass playCard = new PlayCardClass(
+                                                cardSources: new List<CardSource>() { selectedCard },
+                                                hashtable: CardEffectCommons.CardEffectHashtable(activateClass),
+                                                payCost: true,
+                                                targetPermanent: null,
+                                                isTapped: false,
+                                                root: SelectCardEffect.Root.Hand,
+                                                activateETB: true);
+
+                                            playCard.SetJogress(_jogressEvoRootsFrameIDs);
+                                            DNADigivolved = true;
+                                            yield return ContinuousController.instance.StartCoroutine(playCard.PlayCard());
+                                        }
 
 
-                                            if(DNADigivolved)
+                                        if (DNADigivolved)
+                                        {
+                                            List<SelectionElement<bool>> selectionElements = new List<SelectionElement<bool>>()
                                             {
                                             {
-                                                List<SelectionElement<bool>> selectionElements = new List<SelectionElement<bool>>()
-                                                    {
-                                                        new SelectionElement<bool>(message: $"Yes", value : true, spriteIndex: 0),
-                                                        new SelectionElement<bool>(message: $"No", value : false, spriteIndex: 1),
-                                                    };
+                                                new SelectionElement<bool>(message: $"Yes", value: true, spriteIndex: 0),
+                                                new SelectionElement<bool>(message: $"No", value: false, spriteIndex: 1),
+                                            };
 
 
-                                                string selectPlayerMessage = "Will you give this Digimon [Security A+1] and must attack a player?";
-                                                string notSelectPlayerMessage = "The opponent is choosing effects.";
+                                            string selectPlayerMessage =
+                                                "Will you give this Digimon [Security A+1] and must attack a player?";
+                                            string notSelectPlayerMessage = "The opponent is choosing effects.";
 
 
-                                                GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage, notSelectPlayerMessage: notSelectPlayerMessage);
+                                            GManager.instance.userSelectionManager.SetBoolSelection(
+                                                selectionElements: selectionElements, selectPlayer: card.Owner,
+                                                selectPlayerMessage: selectPlayerMessage,
+                                                notSelectPlayerMessage: notSelectPlayerMessage);
 
 
-                                                yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager.WaitForEndSelect());
+                                            yield return ContinuousController.instance.StartCoroutine(GManager.instance
+                                                .userSelectionManager.WaitForEndSelect());
 
 
-                                                bool willGiveEffects = GManager.instance.userSelectionManager.SelectedBoolValue;
+                                            bool willGiveEffects = GManager.instance.userSelectionManager.SelectedBoolValue;
 
 
-                                                if (willGiveEffects)
-                                                {
-                                                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.ChangeDigimonSAttack(selectedCard.PermanentOfThisCard(), 1, EffectDuration.UntilEachTurnEnd, activateClass));
+                                            if (willGiveEffects)
+                                            {
+                                                yield return ContinuousController.instance.StartCoroutine(
+                                                    CardEffectCommons.ChangeDigimonSAttack(selectedCard.PermanentOfThisCard(), 1,
+                                                        EffectDuration.UntilEachTurnEnd, activateClass));
 
 
-                                                    if (selectedCard.PermanentOfThisCard() != null)
+                                                if (selectedCard.PermanentOfThisCard() != null)
+                                                {
+                                                    if (selectedCard.PermanentOfThisCard().CanAttack(activateClass))
                                                     {
                                                     {
-                                                        if (selectedCard.PermanentOfThisCard().CanAttack(activateClass))
-                                                        {
-                                                            SelectAttackEffect selectAttackEffect = GManager.instance.GetComponent<SelectAttackEffect>();
-
-                                                            selectAttackEffect.SetUp(
-                                                                attacker: selectedCard.PermanentOfThisCard(),
-                                                                canAttackPlayerCondition: () => true,
-                                                                defenderCondition: (permanent) => false,
-                                                                cardEffect: activateClass);
-
-                                                            yield return ContinuousController.instance.StartCoroutine(selectAttackEffect.Activate());
-                                                        }
+                                                        SelectAttackEffect selectAttackEffect =
+                                                            GManager.instance.GetComponent<SelectAttackEffect>();
+
+                                                        selectAttackEffect.SetUp(
+                                                            attacker: selectedCard.PermanentOfThisCard(),
+                                                            canAttackPlayerCondition: () => true,
+                                                            defenderCondition: (permanent) => false,
+                                                            cardEffect: activateClass);
+
+                                                        yield return ContinuousController.instance.StartCoroutine(selectAttackEffect
+                                                            .Activate());
                                                     }
                                                     }
                                                 }
                                                 }
                                             }
                                             }
@@ -243,19 +260,23 @@ namespace DCGO.CardEffects.BT16
                     }
                     }
                 }
                 }
             }
             }
+
             #endregion
             #endregion
 
 
             #region Security Effect
             #region Security Effect
+
             if (timing == EffectTiming.SecuritySkill)
             if (timing == EffectTiming.SecuritySkill)
             {
             {
                 ActivateClass activateClass = new ActivateClass();
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("Play 1 [Hawkmon] or [Salamon]", CanUseCondition, card);
                 activateClass.SetUpICardEffect("Play 1 [Hawkmon] or [Salamon]", CanUseCondition, card);
                 activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
                 activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
+                activateClass.SetIsSecurityEffect(true);
                 cardEffects.Add(activateClass);
                 cardEffects.Add(activateClass);
 
 
                 string EffectDiscription()
                 string EffectDiscription()
                 {
                 {
-                    return "[Security] You may play 1 [Hawkmon] or [Salamon] from your hand or trash without paying the cost. Then, add this card to the hand.";
+                    return
+                        "[Security] You may play 1 [Hawkmon] or [Salamon] from your hand or trash without paying the cost. Then, add this card to the hand.";
                 }
                 }
 
 
                 bool CanSelectCardCondition(CardSource cardSource)
                 bool CanSelectCardCondition(CardSource cardSource)
@@ -279,15 +300,16 @@ namespace DCGO.CardEffects.BT16
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 {
                 {
                     List<SelectionElement<bool>> selectionElements = new List<SelectionElement<bool>>()
                     List<SelectionElement<bool>> selectionElements = new List<SelectionElement<bool>>()
-                        {
-                            new SelectionElement<bool>(message: $"Yes", value : true, spriteIndex: 0),
-                            new SelectionElement<bool>(message: $"No", value : false, spriteIndex: 1),
-                        };
+                    {
+                        new SelectionElement<bool>(message: $"Yes", value: true, spriteIndex: 0),
+                        new SelectionElement<bool>(message: $"No", value: false, spriteIndex: 1),
+                    };
 
 
                     string selectPlayerMessage = "Will you play a Digimon?";
                     string selectPlayerMessage = "Will you play a Digimon?";
                     string notSelectPlayerMessage = "The opponent is choosing effects.";
                     string notSelectPlayerMessage = "The opponent is choosing effects.";
 
 
-                    GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage, notSelectPlayerMessage: notSelectPlayerMessage);
+                    GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements, selectPlayer: card.Owner,
+                        selectPlayerMessage: selectPlayerMessage, notSelectPlayerMessage: notSelectPlayerMessage);
 
 
 
 
                     yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager.WaitForEndSelect());
                     yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager.WaitForEndSelect());
@@ -304,15 +326,17 @@ namespace DCGO.CardEffects.BT16
                             if (canSelectHand && canSelectTrash)
                             if (canSelectHand && canSelectTrash)
                             {
                             {
                                 List<SelectionElement<bool>> selectionElements1 = new List<SelectionElement<bool>>()
                                 List<SelectionElement<bool>> selectionElements1 = new List<SelectionElement<bool>>()
-                        {
-                            new SelectionElement<bool>(message: $"From hand", value : true, spriteIndex: 0),
-                            new SelectionElement<bool>(message: $"From trash", value : false, spriteIndex: 1),
-                        };
+                                {
+                                    new SelectionElement<bool>(message: $"From hand", value: true, spriteIndex: 0),
+                                    new SelectionElement<bool>(message: $"From trash", value: false, spriteIndex: 1),
+                                };
 
 
                                 string selectPlayerMessage1 = "From which area do you select a card?";
                                 string selectPlayerMessage1 = "From which area do you select a card?";
                                 string notSelectPlayerMessage1 = "The opponent is choosing from which area to select a card.";
                                 string notSelectPlayerMessage1 = "The opponent is choosing from which area to select a card.";
 
 
-                                GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements1, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage1, notSelectPlayerMessage: notSelectPlayerMessage1);
+                                GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements1,
+                                    selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage1,
+                                    notSelectPlayerMessage: notSelectPlayerMessage1);
                             }
                             }
 
 
                             else
                             else
@@ -320,7 +344,8 @@ namespace DCGO.CardEffects.BT16
                                 GManager.instance.userSelectionManager.SetBool(canSelectHand);
                                 GManager.instance.userSelectionManager.SetBool(canSelectHand);
                             }
                             }
 
 
-                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager.WaitForEndSelect());
+                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager
+                                .WaitForEndSelect());
 
 
                             bool fromHand = GManager.instance.userSelectionManager.SelectedBoolValue;
                             bool fromHand = GManager.instance.userSelectionManager.SelectedBoolValue;
 
 
@@ -348,7 +373,8 @@ namespace DCGO.CardEffects.BT16
                                         mode: SelectHandEffect.Mode.Custom,
                                         mode: SelectHandEffect.Mode.Custom,
                                         cardEffect: activateClass);
                                         cardEffect: activateClass);
 
 
-                                    selectHandEffect.SetUpCustomMessage("Select 1 Digimon to play.", "The opponent is selecting 1 Digimon to play.");
+                                    selectHandEffect.SetUpCustomMessage("Select 1 Digimon to play.",
+                                        "The opponent is selecting 1 Digimon to play.");
                                     selectHandEffect.SetUpCustomMessage_ShowCard("Played Card");
                                     selectHandEffect.SetUpCustomMessage_ShowCard("Played Card");
 
 
                                     yield return StartCoroutine(selectHandEffect.Activate());
                                     yield return StartCoroutine(selectHandEffect.Activate());
@@ -360,7 +386,9 @@ namespace DCGO.CardEffects.BT16
                                         yield return null;
                                         yield return null;
                                     }
                                     }
 
 
-                                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlayPermanentCards(cardSources: selectedCards, activateClass: activateClass, payCost: false, isTapped: false, root: SelectCardEffect.Root.Hand, activateETB: true));
+                                    yield return ContinuousController.instance.StartCoroutine(
+                                        CardEffectCommons.PlayPermanentCards(cardSources: selectedCards, activateClass: activateClass,
+                                            payCost: false, isTapped: false, root: SelectCardEffect.Root.Hand, activateETB: true));
                                 }
                                 }
                             }
                             }
                             else
                             else
@@ -392,7 +420,8 @@ namespace DCGO.CardEffects.BT16
                                         cardEffect: activateClass);
                                         cardEffect: activateClass);
 
 
                                     selectCardEffect.SetUpCustomMessage_ShowCard("Played Card");
                                     selectCardEffect.SetUpCustomMessage_ShowCard("Played Card");
-                                    selectCardEffect.SetUpCustomMessage("Select 1 Digimon to play.", "The opponent is selecting 1 Digimon to play.");
+                                    selectCardEffect.SetUpCustomMessage("Select 1 Digimon to play.",
+                                        "The opponent is selecting 1 Digimon to play.");
 
 
                                     yield return ContinuousController.instance.StartCoroutine(selectCardEffect.Activate());
                                     yield return ContinuousController.instance.StartCoroutine(selectCardEffect.Activate());
 
 
@@ -403,7 +432,9 @@ namespace DCGO.CardEffects.BT16
                                         yield return null;
                                         yield return null;
                                     }
                                     }
 
 
-                                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlayPermanentCards(cardSources: selectedCards, activateClass: activateClass, payCost: false, isTapped: false, root: SelectCardEffect.Root.Trash, activateETB: true));
+                                    yield return ContinuousController.instance.StartCoroutine(
+                                        CardEffectCommons.PlayPermanentCards(cardSources: selectedCards, activateClass: activateClass,
+                                            payCost: false, isTapped: false, root: SelectCardEffect.Root.Trash, activateETB: true));
                                 }
                                 }
                             }
                             }
                         }
                         }
@@ -412,8 +443,8 @@ namespace DCGO.CardEffects.BT16
                     yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.AddThisCardToHand(card, activateClass));
                     yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.AddThisCardToHand(card, activateClass));
                 }
                 }
             }
             }
-            #endregion
 
 
+            #endregion
 
 
             return cardEffects;
             return cardEffects;
         }
         }

+ 39 - 41
Assets/CardEffect/BT16/White/LuiOhwada_BT16_090.cs

@@ -15,24 +15,28 @@ namespace DCGO.CardEffects.BT16
             List<ICardEffect> cardEffects = new List<ICardEffect>();
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
 
             #region On Start Turn
             #region On Start Turn
+
             if (timing == EffectTiming.OnStartTurn)
             if (timing == EffectTiming.OnStartTurn)
             {
             {
                 cardEffects.Add(CardEffectFactory.SetMemoryTo3TamerEffect(card));
                 cardEffects.Add(CardEffectFactory.SetMemoryTo3TamerEffect(card));
             }
             }
+
             #endregion
             #endregion
 
 
             #region Main Effect
             #region Main Effect
+
             if (timing == EffectTiming.OnDeclaration)
             if (timing == EffectTiming.OnDeclaration)
             {
             {
                 ActivateClass activateClass = new ActivateClass();
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("Delete [Ukkomon] and breeding area Digimon to play [BigUkkomon]", CanUseCondition, card);
                 activateClass.SetUpICardEffect("Delete [Ukkomon] and breeding area Digimon to play [BigUkkomon]", CanUseCondition, card);
-                activateClass.SetUpActivateClass(null, ActivateCoroutine, 1, true, EffectDiscription());
+                activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, 1, true, EffectDiscription());
                 activateClass.SetHashString("Play_ST16_090");
                 activateClass.SetHashString("Play_ST16_090");
                 cardEffects.Add(activateClass);
                 cardEffects.Add(activateClass);
 
 
                 string EffectDiscription()
                 string EffectDiscription()
                 {
                 {
-                    return "[Main] [Once Per Turn] By deleting 1 of your [Ukkomon] and trashing 1 of your Digimon in the breeding area, you may play 1 [BigUkkomon] in your breeding area from your hand for a cost of 3.";
+                    return
+                        "[Main] [Once Per Turn] By deleting 1 of your [Ukkomon] and trashing 1 of your Digimon in the breeding area, you may play 1 [BigUkkomon] in your breeding area from your hand for a cost of 3.";
                 }
                 }
 
 
                 bool CanSelectPermanentCondition(Permanent permanent)
                 bool CanSelectPermanentCondition(Permanent permanent)
@@ -67,28 +71,33 @@ namespace DCGO.CardEffects.BT16
                     {
                     {
                         return true;
                         return true;
                     }
                     }
+
                     return false;
                     return false;
                 }
                 }
 
 
                 bool CanUseCondition(Hashtable hashtable)
                 bool CanUseCondition(Hashtable hashtable)
                 {
                 {
-                    if(CardEffectCommons.IsExistOnBattleArea(card))
+                    if (CardEffectCommons.IsExistOnBattleArea(card))
                     {
                     {
-                        Debug.Log($"CAN USE: {CardEffectCommons.HasMatchConditionOwnersPermanent(card, CanSelectPermanentCondition)} - {card.Owner.GetBreedingAreaPermanents().Count(CanSelectBreedingAreaDigimon)}");
-
-                        if (CardEffectCommons.HasMatchConditionOwnersPermanent(card, CanSelectPermanentCondition) && card.Owner.GetBreedingAreaPermanents().Count(CanSelectBreedingAreaDigimon) >= 1)
+                        if (CardEffectCommons.HasMatchConditionOwnersPermanent(card, CanSelectPermanentCondition) &&
+                            card.Owner.GetBreedingAreaPermanents().Count(CanSelectBreedingAreaDigimon) >= 1)
                         {
                         {
-                            Debug.Log($"CAN USE: {card.Owner.HandCards.Count(CanSelectCardCondition)}");
                             if (card.Owner.HandCards.Count(CanSelectCardCondition) >= 1)
                             if (card.Owner.HandCards.Count(CanSelectCardCondition) >= 1)
                             {
                             {
                                 return true;
                                 return true;
                             }
                             }
                         }
                         }
                     }
                     }
+
                     return false;
                     return false;
                 }
                 }
 
 
-                IEnumerator ActivateCoroutine(Hashtable _hashtable)
+                bool CanActivateCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.IsExistOnBattleArea(card);
+                }
+
+                IEnumerator ActivateCoroutine(Hashtable hashtable)
                 {
                 {
                     bool ukkomonDeleted = false;
                     bool ukkomonDeleted = false;
                     bool breedingAreaPermanentDeleted = false;
                     bool breedingAreaPermanentDeleted = false;
@@ -110,13 +119,17 @@ namespace DCGO.CardEffects.BT16
                             mode: SelectPermanentEffect.Mode.Custom,
                             mode: SelectPermanentEffect.Mode.Custom,
                             cardEffect: activateClass);
                             cardEffect: activateClass);
 
 
-                        selectPermanentEffect.SetUpCustomMessage("Select 1 Digimon to delete.", "The opponent is selecting 1 Digimon to delete.");
+                        selectPermanentEffect.SetUpCustomMessage("Select 1 Digimon to delete.",
+                            "The opponent is selecting 1 Digimon to delete.");
 
 
                         yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
                         yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
 
 
                         IEnumerator SelectPermanentCoroutine(Permanent permanent)
                         IEnumerator SelectPermanentCoroutine(Permanent permanent)
                         {
                         {
-                            yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.DeletePeremanentAndProcessAccordingToResult(targetPermanents: new List<Permanent>() { permanent }, activateClass: activateClass, successProcess: permanents => SuccessProcess(), failureProcess: null));
+                            yield return ContinuousController.instance.StartCoroutine(
+                                CardEffectCommons.DeletePeremanentAndProcessAccordingToResult(
+                                    targetPermanents: new List<Permanent>() { permanent }, activateClass: activateClass,
+                                    successProcess: _ => SuccessProcess(), failureProcess: null));
 
 
                             IEnumerator SuccessProcess()
                             IEnumerator SuccessProcess()
                             {
                             {
@@ -130,43 +143,26 @@ namespace DCGO.CardEffects.BT16
 
 
                         if (card.Owner.GetBreedingAreaPermanents().Count(CanSelectBreedingAreaDigimon) >= 1)
                         if (card.Owner.GetBreedingAreaPermanents().Count(CanSelectBreedingAreaDigimon) >= 1)
                         {
                         {
+                            List<Permanent> digitamaPermanents = card.Owner.GetBreedingAreaPermanents()
+                                .Filter(permanent => permanent.IsDigimon)
+                                .Clone();
 
 
-                            List<SelectionElement<bool>> selectionElements = new List<SelectionElement<bool>>()
-                        {
-                            new SelectionElement<bool>(message: $"Yes", value : true, spriteIndex: 0),
-                            new SelectionElement<bool>(message: $"No", value : false, spriteIndex: 1),
-                        };
-
-                            string selectPlayerMessage = "Will you trash breeding area Digimon to play [BigUkkomon] from your hand?";
-                            string notSelectPlayerMessage = "The opponent is choosing whether or not to trash cards.";
-
-                            GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage, notSelectPlayerMessage: notSelectPlayerMessage);
-
-                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager.WaitForEndSelect());
-
-                            bool trashBreedingAreaDigimon = GManager.instance.userSelectionManager.SelectedBoolValue;
-
-                            if (trashBreedingAreaDigimon)
+                            if (digitamaPermanents.Count >= 1)
                             {
                             {
-                                List<Permanent> DigitamaPermanents = card.Owner.GetBreedingAreaPermanents()
-                                                .Filter(permanent => permanent.IsDigimon)
-                                                .Clone();
-
-                                if (DigitamaPermanents.Count >= 1)
+                                foreach (Permanent permanent in digitamaPermanents)
                                 {
                                 {
-                                    foreach (Permanent permanent in DigitamaPermanents)
-                                    {
-                                        yield return ContinuousController.instance.StartCoroutine(permanent.DiscardEvoRoots());
+                                    yield return ContinuousController.instance.StartCoroutine(permanent.DiscardEvoRoots());
 
 
-                                        CardSource cardSource = permanent.TopCard;
+                                    CardSource cardSource = permanent.TopCard;
 
 
-                                        ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<Effects>().ShowCardEffect(new List<CardSource>() { cardSource }, "Cards put to trash", true, true));
+                                    ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<Effects>()
+                                        .ShowCardEffect(new List<CardSource>() { cardSource }, "Cards put to trash", true, true));
 
 
 
 
-                                        yield return ContinuousController.instance.StartCoroutine(CardObjectController.RemoveField(permanent));
-                                        yield return ContinuousController.instance.StartCoroutine(CardObjectController.AddTrashCard(cardSource));
-                                        breedingAreaPermanentDeleted = true;
-                                    }
+                                    yield return ContinuousController.instance.StartCoroutine(CardObjectController.RemoveField(permanent));
+                                    yield return ContinuousController.instance.StartCoroutine(
+                                        CardObjectController.AddTrashCard(cardSource));
+                                    breedingAreaPermanentDeleted = true;
                                 }
                                 }
                             }
                             }
 
 
@@ -194,7 +190,8 @@ namespace DCGO.CardEffects.BT16
                                         mode: SelectHandEffect.Mode.Custom,
                                         mode: SelectHandEffect.Mode.Custom,
                                         cardEffect: activateClass);
                                         cardEffect: activateClass);
 
 
-                                    selectHandEffect.SetUpCustomMessage("Select 1 card to play.", "The opponent is selecting 1 card to play.");
+                                    selectHandEffect.SetUpCustomMessage("Select 1 card to play.",
+                                        "The opponent is selecting 1 card to play.");
                                     selectHandEffect.SetUpCustomMessage_ShowCard("Played Card");
                                     selectHandEffect.SetUpCustomMessage_ShowCard("Played Card");
 
 
                                     yield return StartCoroutine(selectHandEffect.Activate());
                                     yield return StartCoroutine(selectHandEffect.Activate());
@@ -221,6 +218,7 @@ namespace DCGO.CardEffects.BT16
                     }
                     }
                 }
                 }
             }
             }
+
             #endregion
             #endregion
 
 
             #region Security Skill
             #region Security Skill