소스 검색

DNA option wording fixes, antylamon, lucemon chaos, angewomon, arkhaiangemon, dominimon, fixes, unsuspend raising area in unsuspend phase

mbunch_kascope 2 년 전
부모
커밋
f6bde4d7cc

+ 1 - 1
Assets/CardEffect/BT16/Black/AncientAngelOfSteel_BT16_097.cs

@@ -281,7 +281,7 @@ namespace DCGO.CardEffects.BT16
                                 string selectPlayerMessage1 = "From which area do you play a card?";
                                 string notSelectPlayerMessage1 = "The opponent is choosing from which area to play a card.";
 
-                                GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage1, notSelectPlayerMessage: notSelectPlayerMessage1);
+                                GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements1, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage1, notSelectPlayerMessage: notSelectPlayerMessage1);
                             }
 
                             else

+ 1 - 1
Assets/CardEffect/BT16/Blue/InvincibleDragonInsectFusion_BT16_092.cs

@@ -289,7 +289,7 @@ namespace DCGO.CardEffects.BT16
                                 string selectPlayerMessage1 = "From which area do you play a card?";
                                 string notSelectPlayerMessage1 = "The opponent is choosing from which area to play a card.";
 
-                                GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage1, notSelectPlayerMessage: notSelectPlayerMessage1);
+                                GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements1, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage1, notSelectPlayerMessage: notSelectPlayerMessage1);
                             }
 
                             else

+ 1 - 1
Assets/CardEffect/BT16/Red/BeastlyStormDanceofAffection_BT16_091.cs

@@ -312,7 +312,7 @@ namespace DCGO.CardEffects.BT16
                                 string selectPlayerMessage1 = "From which area do you select a card?";
                                 string notSelectPlayerMessage1 = "The opponent is choosing from which area to select a card.";
 
-                                GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage1, notSelectPlayerMessage: notSelectPlayerMessage1);
+                                GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements1, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage1, notSelectPlayerMessage: notSelectPlayerMessage1);
                             }
 
                             else

+ 4 - 2
Assets/CardEffect/EX6/Green/Antylamon_EX6_034.cs

@@ -132,6 +132,7 @@ namespace DCGO.CardEffects.EX6
                 activateClass.SetUpICardEffect("Return 1 of your suspend Digimon to play 1 Digimon from hand", CanUseCondition, card);
                 activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, 1, true, EffectDiscription());
                 activateClass.SetIsInheritedEffect(true);
+                activateClass.SetHashString("EndofAttack_EX6_034");
                 cardEffects.Add(activateClass);
 
                 string EffectDiscription()
@@ -145,7 +146,8 @@ namespace DCGO.CardEffects.EX6
                     {
                         if (permanent.IsDigimon && permanent.IsSuspended)
                         {
-                            return true;
+                            if(permanent != card.PermanentOfThisCard())
+                                return true;
                         }
                     }
 
@@ -154,7 +156,7 @@ namespace DCGO.CardEffects.EX6
 
                 bool CanUseCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.CanTriggerOnAttack(hashtable, card);
+                    return CardEffectCommons.CanTriggerOnEndAttack(hashtable, card);
                 }
 
                 bool CanActivateCondition(Hashtable hashtable)

+ 15 - 19
Assets/CardEffect/EX6/Purple/Lucemon_Chaos_Mode_EX6_054.cs

@@ -257,33 +257,16 @@ namespace DCGO.CardEffects.EX6
                     return "[All Turns] When this Digimon would leave the battle area; by returning 1 [Lucemon] from this Digimon's digivolution cards or from your trash to the bottom of the deck, you may play 1 [Lucemon: Satan Mode] or 1 level 6 Digimon card with the [Seven Great Demon Lords] trait from your trash without paying the cost.";
                 }
 
-                bool CanUseCondition(Hashtable hashtable)
-                {
-                    if (CardEffectCommons.IsExistOnBattleArea(card))
-                    {
-                        if (CardEffectCommons.CanTriggerWhenRemoveField(hashtable, card))
-                        {
-                            return true;
-                        }
-                    }
-
-                    return false;
-                }
-
                 bool CanSelectLucemon(CardSource cardSource)
                 {
-                    if(cardSource.CardNames.Contains("Lucemon: Satan Mode"))
-                    {
-                        return true;
-                    }
-                    return false;
+                    return cardSource.CardNames.Contains("Lucemon");
                 }
 
                 bool CanSelectCardToPlayFromTrash(CardSource cardSource)
                 {
                     if (CardEffectCommons.CanPlayAsNewPermanent(cardSource: cardSource, payCost: false, cardEffect: activateClass))
                     {
-                        if (cardSource.CardNames.Contains("Lucemon"))
+                        if (cardSource.CardNames.Contains("Lucemon: Satan Mode"))
                         {
                             return true;
                         }
@@ -299,6 +282,19 @@ namespace DCGO.CardEffects.EX6
                     return false;
                 }
 
+                bool CanUseCondition(Hashtable hashtable)
+                {
+                    if (CardEffectCommons.IsExistOnBattleArea(card))
+                    {
+                        if (CardEffectCommons.CanTriggerWhenRemoveField(hashtable, card))
+                        {
+                            return true;
+                        }
+                    }
+
+                    return false;
+                }
+
                 bool CanActivateCondition(Hashtable hashtable)
                 {
                     if(CardEffectCommons.IsExistOnBattleArea(card))

+ 141 - 4
Assets/CardEffect/EX6/Yellow/Angewomon_EX6_022.cs

@@ -18,17 +18,17 @@ namespace DCGO.CardEffects.EX6
             }
             #endregion
 
-            #region On PLay/When Digivolving
+            #region On PLay
             if (timing == EffectTiming.OnEnterFieldAnyone)
             {
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("Give a Digimon Security Attack -2 or play [Mirei Mikagura] from hand", CanUseCondition, card);
-                activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, true, EffectDiscription());
+                activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
                 cardEffects.Add(activateClass);
 
                 string EffectDiscription()
                 {
-                    return "[On Play] [When Digivolving] If you have a [Mirei Mikagura], 1 of your opponent's Digimon gains Security Attack -2 until the end of their turn. If you don't have a [Mirei Mikagura], you may play 1 [Mirei Mikagura] from your hand without paying the cost.";
+                    return "[On Play] If you have a [Mirei Mikagura], 1 of your opponent's Digimon gains Security Attack -2 until the end of their turn. If you don't have a [Mirei Mikagura], you may play 1 [Mirei Mikagura] from your hand without paying the cost.";
                 }
 
                 bool CanSelectCardCondition(CardSource cardSource)
@@ -51,7 +51,144 @@ namespace DCGO.CardEffects.EX6
 
                 bool CanUseCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.CanTriggerWhenDigivolving(hashtable, card) || CardEffectCommons.CanTriggerOnPlay(hashtable, card);
+                    return CardEffectCommons.CanTriggerOnPlay(hashtable, card);
+                }
+
+                bool CanActivateCondition(Hashtable hashtable)
+                {
+                    if (CardEffectCommons.IsExistOnBattleArea(card))
+                    {
+                        if (card.Owner.GetBattleAreaPermanents().Count((permanent) => permanent.TopCard.CardNames.Contains("Mirei Mikagura") || permanent.TopCard.CardNames.Contains("MireiMikagura")) == 0)
+                        {
+                            if (card.Owner.HandCards.Count >= 1)
+                            {
+                                return true;
+                            }
+                        }
+
+                        else
+                        {
+                            if (CardEffectCommons.HasMatchConditionPermanent(CanSelectPermanentCondition))
+                            {
+                                return true;
+                            }
+                        }
+                    }
+
+                    return false;
+                }
+
+                IEnumerator ActivateCoroutine(Hashtable _hashtable)
+                {
+                    if (card.Owner.GetBattleAreaPermanents().Count((permanent) => permanent.TopCard.CardNames.Contains("Mirei Mikagura") || permanent.TopCard.CardNames.Contains("MireiMikagura")) == 0)
+                    {
+                        if (card.Owner.HandCards.Count(CanSelectCardCondition) >= 1)
+                        {
+                            List<CardSource> selectedCards = new List<CardSource>();
+
+                            int maxCount = 1;
+
+                            SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
+
+                            selectHandEffect.SetUp(
+                                selectPlayer: card.Owner,
+                                canTargetCondition: CanSelectCardCondition,
+                                canTargetCondition_ByPreSelecetedList: null,
+                                canEndSelectCondition: null,
+                                maxCount: maxCount,
+                                canNoSelect: true,
+                                canEndNotMax: false,
+                                isShowOpponent: true,
+                                selectCardCoroutine: SelectCardCoroutine,
+                                afterSelectCardCoroutine: null,
+                                mode: SelectHandEffect.Mode.Custom,
+                                cardEffect: activateClass);
+
+                            selectHandEffect.SetUpCustomMessage("Select 1 card to play.", "The opponent is selecting 1 card to play.");
+                            selectHandEffect.SetUpCustomMessage_ShowCard("Played Card");
+
+                            yield return StartCoroutine(selectHandEffect.Activate());
+
+                            IEnumerator SelectCardCoroutine(CardSource cardSource)
+                            {
+                                selectedCards.Add(cardSource);
+
+                                yield return null;
+                            }
+
+                            yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlayPermanentCards(cardSources: selectedCards, activateClass: activateClass, payCost: false, isTapped: false, root: SelectCardEffect.Root.Hand, activateETB: true));
+                        }
+                    }
+
+                    else
+                    {
+                        if (CardEffectCommons.HasMatchConditionPermanent(CanSelectPermanentCondition))
+                        {
+                            int maxCount = Math.Min(1, CardEffectCommons.MatchConditionPermanentCount(CanSelectPermanentCondition));
+
+                            SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
+
+                            selectPermanentEffect.SetUp(
+                                selectPlayer: card.Owner,
+                                canTargetCondition: CanSelectPermanentCondition,
+                                canTargetCondition_ByPreSelecetedList: null,
+                                canEndSelectCondition: null,
+                                maxCount: maxCount,
+                                canNoSelect: false,
+                                canEndNotMax: false,
+                                selectPermanentCoroutine: SelectPermanentCoroutine,
+                                afterSelectPermanentCoroutine: null,
+                                mode: SelectPermanentEffect.Mode.Custom,
+                                cardEffect: activateClass);
+
+                            selectPermanentEffect.SetUpCustomMessage("Select 1 Digimon that will get Security Attack -2.", "The opponent is selecting 1 Digimon that will get Security Attack -2.");
+
+                            yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
+
+                            IEnumerator SelectPermanentCoroutine(Permanent permanent)
+                            {
+                                yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.ChangeDigimonSAttack(targetPermanent: permanent, changeValue: -2, effectDuration: EffectDuration.UntilOpponentTurnEnd, activateClass: activateClass));
+                            }
+                        }
+                    }
+                }
+            }
+            #endregion
+
+            #region When Digivolving
+            if (timing == EffectTiming.OnEnterFieldAnyone)
+            {
+                ActivateClass activateClass = new ActivateClass();
+                activateClass.SetUpICardEffect("Give a Digimon Security Attack -2 or play [Mirei Mikagura] from hand", CanUseCondition, card);
+                activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
+                cardEffects.Add(activateClass);
+
+                string EffectDiscription()
+                {
+                    return "[When Digivolving] If you have a [Mirei Mikagura], 1 of your opponent's Digimon gains Security Attack -2 until the end of their turn. If you don't have a [Mirei Mikagura], you may play 1 [Mirei Mikagura] from your hand without paying the cost.";
+                }
+
+                bool CanSelectCardCondition(CardSource cardSource)
+                {
+                    if (cardSource.CardNames.Contains("Mirei Mikagura") || cardSource.CardNames.Contains("MireiMikagura"))
+                    {
+                        if (CardEffectCommons.CanPlayAsNewPermanent(cardSource: cardSource, payCost: false, cardEffect: activateClass))
+                        {
+                            return true;
+                        }
+                    }
+
+                    return false;
+                }
+
+                bool CanSelectPermanentCondition(Permanent permanent)
+                {
+                    return CardEffectCommons.IsPermanentExistsOnOpponentBattleAreaDigimon(permanent, card);
+                }
+
+                bool CanUseCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.CanTriggerWhenDigivolving(hashtable, card);
                 }
 
                 bool CanActivateCondition(Hashtable hashtable)

+ 125 - 114
Assets/CardEffect/EX6/Yellow/ArkhaiAngemon_EX6_021.cs

@@ -39,13 +39,7 @@ namespace DCGO.CardEffects.EX6
             #endregion
             
             #region On Play/ When Digivolving Shared
-            
-            string EffectSharedDescription()
-            {
-                return
-                    "[On Play] [When Digivolving] By adding the top or bottom card of your security stack to the hand, 1 of your opponent's Digimon gets -4000 DP for the turn. Then, you may place 1 Digimon card with the [Angel]/[Archangel]/[Three Great Angels] trait from your hand at the bottom of your security stack.";
-            }
-            
+
             bool CanSelectPermanentSharedCondition(Permanent permanent)
             {
                 return CardEffectCommons.IsPermanentExistsOnOpponentBattleAreaDigimon(permanent, card);
@@ -55,10 +49,7 @@ namespace DCGO.CardEffects.EX6
             {
                 if (cardSource.IsDigimon)
                 {
-                    if (cardSource.ContainsTraits("Angel") ||
-                        cardSource.ContainsTraits("Archangel") ||
-                        cardSource.ContainsTraits("Three Great Angels") ||
-                        cardSource.ContainsTraits("ThreeGreatAngels"))
+                    if (cardSource.HasAngelTraitRestrictive)
                     {
                         return true;
                     }
@@ -96,9 +87,15 @@ namespace DCGO.CardEffects.EX6
                     "Add 1 card from top or bottom security to hand to -4000 DP an opponent's Digimon, then place 1 card from hand at the bottom of security",
                     CanUseCondition, card);
                 activateClass.SetUpActivateClass(CanActivateSharedCondition, ActivateCoroutine, -1, false,
-                    EffectSharedDescription());
+                    EffectDescription());
                 cardEffects.Add(activateClass);
-                
+
+                string EffectDescription()
+                {
+                    return
+                        "[On Play] By adding the top or bottom card of your security stack to the hand, 1 of your opponent's Digimon gets -4000 DP for the turn. Then, you may place 1 Digimon card with the [Angel]/[Archangel]/[Three Great Angels] trait from your hand at the bottom of your security stack.";
+                }
+
                 bool CanUseCondition(Hashtable hashtable)
                 {
                     return CardEffectCommons.CanTriggerOnPlay(hashtable, card);
@@ -133,7 +130,11 @@ namespace DCGO.CardEffects.EX6
                             CardSource chosenSecurityCard = (selectionValue == 0)
                                 ? card.Owner.SecurityCards[0]
                                 : card.Owner.SecurityCards[^1];
-                            
+                            string placementValue = (selectionValue == 0)
+                                ? "From Top Of Security"
+                                : "From Bottom Of Security";
+
+                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<Effects>().ShowCardEffect(new List<CardSource>() { chosenSecurityCard }, $"Added Hand Card {placementValue}", true, true));
                             yield return ContinuousController.instance.StartCoroutine(
                                 CardObjectController.AddHandCards(new List<CardSource>() { chosenSecurityCard }, false,
                                     activateClass));
@@ -179,54 +180,54 @@ namespace DCGO.CardEffects.EX6
                                             activateClass: activateClass));
                                 }
                             }
-                        }
-                    }
-                    
-                    if (card.Owner.HandCards.Count(CanSelectCardSharedCondition) >= 1)
-                    {
-                        int maxCount = Math.Min(1, card.Owner.HandCards.Count(CanSelectCardSharedCondition));
-                        
-                        SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
-                        
-                        selectHandEffect.SetUp(
-                            selectPlayer: card.Owner,
-                            canTargetCondition: CanSelectCardSharedCondition,
-                            canTargetCondition_ByPreSelecetedList: null,
-                            canEndSelectCondition: null,
-                            maxCount: maxCount,
-                            canNoSelect: true,
-                            canEndNotMax: false,
-                            isShowOpponent: true,
-                            selectCardCoroutine: SelectCardCoroutine,
-                            afterSelectCardCoroutine: null,
-                            mode: SelectHandEffect.Mode.Custom,
-                            cardEffect: activateClass);
-                        
-                        selectHandEffect.SetUpCustomMessage("Select 1 card to place at the bottom of security.",
-                            "The opponent is selecting 1 card to place at the bottom of security.");
-                        selectHandEffect.SetUpCustomMessage_ShowCard("Security Bottom Card");
-                        
-                        yield return StartCoroutine(selectHandEffect.Activate());
-                        
-                        IEnumerator SelectCardCoroutine(CardSource cardSource)
-                        {
-                            yield return ContinuousController.instance.StartCoroutine(
-                                CardObjectController.AddSecurityCard(cardSource, toTop: false));
-                            
-                            yield return ContinuousController.instance.StartCoroutine(GManager.instance
-                                .GetComponent<Effects>().CreateRecoveryEffect(cardSource.Owner));
-                            
-                            yield return ContinuousController.instance.StartCoroutine(
-                                new IAddSecurity(cardSource.Owner).AddSecurity());
+
+                            if (card.Owner.HandCards.Count(CanSelectCardSharedCondition) >= 1)
+                            {
+                                int maxCount = Math.Min(1, card.Owner.HandCards.Count(CanSelectCardSharedCondition));
+
+                                SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
+
+                                selectHandEffect.SetUp(
+                                    selectPlayer: card.Owner,
+                                    canTargetCondition: CanSelectCardSharedCondition,
+                                    canTargetCondition_ByPreSelecetedList: null,
+                                    canEndSelectCondition: null,
+                                    maxCount: maxCount,
+                                    canNoSelect: true,
+                                    canEndNotMax: false,
+                                    isShowOpponent: true,
+                                    selectCardCoroutine: SelectCardCoroutine,
+                                    afterSelectCardCoroutine: null,
+                                    mode: SelectHandEffect.Mode.Custom,
+                                    cardEffect: activateClass);
+
+                                selectHandEffect.SetUpCustomMessage("Select 1 card to place at the bottom of security.",
+                                    "The opponent is selecting 1 card to place at the bottom of security.");
+                                selectHandEffect.SetUpCustomMessage_ShowCard("Security Bottom Card");
+
+                                yield return StartCoroutine(selectHandEffect.Activate());
+
+                                IEnumerator SelectCardCoroutine(CardSource cardSource)
+                                {
+                                    yield return ContinuousController.instance.StartCoroutine(
+                                        CardObjectController.AddSecurityCard(cardSource, toTop: false));
+
+                                    yield return ContinuousController.instance.StartCoroutine(GManager.instance
+                                        .GetComponent<Effects>().CreateRecoveryEffect(cardSource.Owner));
+
+                                    yield return ContinuousController.instance.StartCoroutine(
+                                        new IAddSecurity(cardSource.Owner).AddSecurity());
+                                }
+                            }
                         }
                     }
                 }
             }
-            
+
             #endregion
-            
+
             #region When Digivolving
-            
+
             if (timing == EffectTiming.OnEnterFieldAnyone)
             {
                 ActivateClass activateClass = new ActivateClass();
@@ -234,14 +235,20 @@ namespace DCGO.CardEffects.EX6
                     "Add 1 card from top or bottom security to hand to -4000 DP an opponent's Digimon, then place 1 card from hand at the bottom of security",
                     CanUseCondition, card);
                 activateClass.SetUpActivateClass(CanActivateSharedCondition, ActivateCoroutine, -1, false,
-                    EffectSharedDescription());
+                    EffectDescription());
                 cardEffects.Add(activateClass);
-                
+
+                string EffectDescription()
+                {
+                    return
+                        "[When Digivolving] By adding the top or bottom card of your security stack to the hand, 1 of your opponent's Digimon gets -4000 DP for the turn. Then, you may place 1 Digimon card with the [Angel]/[Archangel]/[Three Great Angels] trait from your hand at the bottom of your security stack.";
+                }
+
                 bool CanUseCondition(Hashtable hashtable)
                 {
                     return CardEffectCommons.CanTriggerWhenDigivolving(hashtable, card);
                 }
-                
+
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 {
                     if (card.Owner.SecurityCards.Count >= 1)
@@ -252,42 +259,46 @@ namespace DCGO.CardEffects.EX6
                             new(message: "Security Bottom", value: 1, spriteIndex: 0),
                             new(message: "No Selection", value: 2, spriteIndex: 1),
                         };
-                        
+
                         string selectPlayerMessage = "Add the top or bottom card of the security stack to hand";
                         string notSelectPlayerMessage =
                             "The opponent is selecting the top or bottom card of security stack.";
-                        
+
                         GManager.instance.userSelectionManager.SetIntSelection(selectionElements: selectionElements,
                             selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage,
                             notSelectPlayerMessage: notSelectPlayerMessage);
-                        
+
                         yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager
                             .WaitForEndSelect());
-                        
+
                         int selectionValue = GManager.instance.userSelectionManager.SelectedIntValue;
-                        
+
                         if (selectionValue != 2)
                         {
                             CardSource chosenSecurityCard = (selectionValue == 0)
                                 ? card.Owner.SecurityCards[0]
                                 : card.Owner.SecurityCards[^1];
-                            
+                            string placementValue = (selectionValue == 0)
+                                ? "From Top Of Security"
+                                : "From Bottom Of Security";
+
+                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<Effects>().ShowCardEffect(new List<CardSource>() { chosenSecurityCard }, $"Added Hand Card {placementValue}", true, true));
                             yield return ContinuousController.instance.StartCoroutine(
                                 CardObjectController.AddHandCards(new List<CardSource>() { chosenSecurityCard }, false,
                                     activateClass));
-                            
+
                             yield return ContinuousController.instance.StartCoroutine(new IReduceSecurity(
                                 player: card.Owner,
                                 refSkillInfos: ref ContinuousController.instance.nullSkillInfos).ReduceSecurity());
-                            
+
                             if (CardEffectCommons.HasMatchConditionPermanent(CanSelectPermanentSharedCondition))
                             {
                                 int maxCount = Math.Min(1,
                                     CardEffectCommons.MatchConditionPermanentCount(CanSelectPermanentSharedCondition));
-                                
+
                                 SelectPermanentEffect selectPermanentEffect =
                                     GManager.instance.GetComponent<SelectPermanentEffect>();
-                                
+
                                 selectPermanentEffect.SetUp(
                                     selectPlayer: card.Owner,
                                     canTargetCondition: CanSelectPermanentSharedCondition,
@@ -300,13 +311,13 @@ namespace DCGO.CardEffects.EX6
                                     afterSelectPermanentCoroutine: null,
                                     mode: SelectPermanentEffect.Mode.Custom,
                                     cardEffect: activateClass);
-                                
+
                                 selectPermanentEffect.SetUpCustomMessage("Select 1 Digimon that will get DP -4000.",
                                     "The opponent is selecting 1 Digimon that will get DP -4000.");
-                                
+
                                 yield return ContinuousController.instance.StartCoroutine(
                                     selectPermanentEffect.Activate());
-                                
+
                                 IEnumerator SelectPermanentCoroutine(Permanent permanent)
                                 {
                                     yield return ContinuousController.instance.StartCoroutine(
@@ -317,54 +328,54 @@ namespace DCGO.CardEffects.EX6
                                             activateClass: activateClass));
                                 }
                             }
-                        }
-                    }
-                    
-                    if (card.Owner.HandCards.Count(CanSelectCardSharedCondition) >= 1)
-                    {
-                        int maxCount = Math.Min(1, card.Owner.HandCards.Count(CanSelectCardSharedCondition));
-                        
-                        SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
-                        
-                        selectHandEffect.SetUp(
-                            selectPlayer: card.Owner,
-                            canTargetCondition: CanSelectCardSharedCondition,
-                            canTargetCondition_ByPreSelecetedList: null,
-                            canEndSelectCondition: null,
-                            maxCount: maxCount,
-                            canNoSelect: true,
-                            canEndNotMax: false,
-                            isShowOpponent: true,
-                            selectCardCoroutine: SelectCardCoroutine,
-                            afterSelectCardCoroutine: null,
-                            mode: SelectHandEffect.Mode.Custom,
-                            cardEffect: activateClass);
-                        
-                        selectHandEffect.SetUpCustomMessage("Select 1 card to place at the bottom of security.",
-                            "The opponent is selecting 1 card to place at the bottom of security.");
-                        selectHandEffect.SetUpCustomMessage_ShowCard("Security Bottom Card");
-                        
-                        yield return StartCoroutine(selectHandEffect.Activate());
-                        
-                        IEnumerator SelectCardCoroutine(CardSource cardSource)
-                        {
-                            yield return ContinuousController.instance.StartCoroutine(
-                                CardObjectController.AddSecurityCard(cardSource, toTop: false));
-                            
-                            yield return ContinuousController.instance.StartCoroutine(GManager.instance
-                                .GetComponent<Effects>().CreateRecoveryEffect(cardSource.Owner));
-                            
-                            yield return ContinuousController.instance.StartCoroutine(
-                                new IAddSecurity(cardSource.Owner).AddSecurity());
+
+                            if (card.Owner.HandCards.Count(CanSelectCardSharedCondition) >= 1)
+                            {
+                                int maxCount = Math.Min(1, card.Owner.HandCards.Count(CanSelectCardSharedCondition));
+
+                                SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
+
+                                selectHandEffect.SetUp(
+                                    selectPlayer: card.Owner,
+                                    canTargetCondition: CanSelectCardSharedCondition,
+                                    canTargetCondition_ByPreSelecetedList: null,
+                                    canEndSelectCondition: null,
+                                    maxCount: maxCount,
+                                    canNoSelect: true,
+                                    canEndNotMax: false,
+                                    isShowOpponent: true,
+                                    selectCardCoroutine: SelectCardCoroutine,
+                                    afterSelectCardCoroutine: null,
+                                    mode: SelectHandEffect.Mode.Custom,
+                                    cardEffect: activateClass);
+
+                                selectHandEffect.SetUpCustomMessage("Select 1 card to place at the bottom of security.",
+                                    "The opponent is selecting 1 card to place at the bottom of security.");
+                                selectHandEffect.SetUpCustomMessage_ShowCard("Security Bottom Card");
+
+                                yield return StartCoroutine(selectHandEffect.Activate());
+
+                                IEnumerator SelectCardCoroutine(CardSource cardSource)
+                                {
+                                    yield return ContinuousController.instance.StartCoroutine(
+                                        CardObjectController.AddSecurityCard(cardSource, toTop: false));
+
+                                    yield return ContinuousController.instance.StartCoroutine(GManager.instance
+                                        .GetComponent<Effects>().CreateRecoveryEffect(cardSource.Owner));
+
+                                    yield return ContinuousController.instance.StartCoroutine(
+                                        new IAddSecurity(cardSource.Owner).AddSecurity());
+                                }
+                            }
                         }
                     }
                 }
             }
-            
+
             #endregion
-            
+
             #region Opponent's Turn - ESS
-            
+
             if (timing == EffectTiming.None)
             {
                 bool CanUseCondition()

+ 7 - 31
Assets/CardEffect/EX6/Yellow/Dominimon_EX6_030.cs

@@ -221,10 +221,7 @@ namespace DCGO.CardEffects.EX6
                 {
                     if (CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card))
                     {
-                        if (permanent.TopCard.ContainsTraits("Angel") ||
-                            permanent.TopCard.ContainsTraits("Archangel") ||
-                            permanent.TopCard.ContainsTraits("Three Great Angels") ||
-                            permanent.TopCard.ContainsTraits("ThreeGreatAngels"))
+                        if (permanent.TopCard.HasAngelTraitRestrictive)
                         {
                             return true;
                         }
@@ -268,40 +265,19 @@ namespace DCGO.CardEffects.EX6
                 {
                     if (CardEffectCommons.IsExistOnBattleArea(card))
                     {
+                        List<Permanent> removedPermanents = CardEffectCommons.GetPermanentsFromHashtable(hashtable);
+
+                        removedPermanents = removedPermanents.Filter(PermanentCondition);
                         if (CardEffectCommons.HasMatchConditionPermanent(PermanentCondition))
                         {
-                            int maxCount = Math.Min(1,
-                                CardEffectCommons.MatchConditionPermanentCount(PermanentCondition));
-
-                            SelectPermanentEffect selectPermanentEffect =
-                                GManager.instance.GetComponent<SelectPermanentEffect>();
-
-                            selectPermanentEffect.SetUp(
-                                selectPlayer: card.Owner,
-                                canTargetCondition: PermanentCondition,
-                                canTargetCondition_ByPreSelecetedList: null,
-                                canEndSelectCondition: null,
-                                maxCount: maxCount,
-                                canNoSelect: true,
-                                canEndNotMax: false,
-                                selectPermanentCoroutine: SelectPermanentCoroutine,
-                                afterSelectPermanentCoroutine: null,
-                                mode: SelectPermanentEffect.Mode.Custom,
-                                cardEffect: activateClass);
-
-                            selectPermanentEffect.SetUpCustomMessage("Select 1 Digimon to save.",
-                                "The opponent is selecting 1 Digimon to save.");
-
-                            yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
-
-                            IEnumerator SelectPermanentCoroutine(Permanent permanent)
-                            {
-                                yield return ContinuousController.instance.StartCoroutine(new IDestroySecurity(
+                            yield return ContinuousController.instance.StartCoroutine(new IDestroySecurity(
                                     player: card.Owner,
                                     destroySecurityCount: 1,
                                     cardEffect: activateClass,
                                     fromTop: true).DestroySecurity());
 
+                            foreach(Permanent permanent in removedPermanents)
+                            {
                                 permanent.willBeRemoveField = false;
                                 permanent.HideDeleteEffect();
                                 permanent.HideHandBounceEffect();

+ 13 - 0
Assets/Scripts/TurnStateMachine.cs

@@ -585,6 +585,7 @@ public class TurnStateMachine : MonoBehaviourPunCallbacks
 
         List<Permanent> unsuspendPermanents = new List<Permanent>();
 
+        //Add field Permanents to unsuspend list
         foreach (Permanent permanent in gameContext.PermanentsForTurnPlayer)
         {
             if (permanent.IsSuspended && permanent.CanUnsuspend)
@@ -596,6 +597,18 @@ public class TurnStateMachine : MonoBehaviourPunCallbacks
             }
         }
 
+        //Add raising area Permanents to unsuspend list
+        foreach (Permanent permanent in gameContext.You.GetBreedingAreaPermanents())
+        {
+            if (permanent.IsSuspended && permanent.CanUnsuspend)
+            {
+                if (permanent.TopCard.Owner == gameContext.TurnPlayer)
+                {
+                    unsuspendPermanents.Add(permanent);
+                }
+            }
+        }
+
         yield return ContinuousController.instance.StartCoroutine(new IUnsuspendPermanents(unsuspendPermanents, null).Unsuspend());
 
         #endregion