Browse Source

More updates for cards

mbunch_kascope 2 years ago
parent
commit
7aabaf290e

+ 71 - 105
Assets/CardEffect/BT15/Black/Numemon_X_Antibody_BT15_057.cs

@@ -25,140 +25,106 @@ public class Numemon_X_Antibody_BT15_057 : CEntity_Effect
         }
         #endregion
 
-        #region All Turns
-        if(timing == EffectTiming.None)
+        #region All Turns - On Deletion
+        if (timing == EffectTiming.OnDestroyedAnyone)
         {
-            bool CardSourceCondition(CardSource cardSource)
+            ActivateClass activateDeletion = new ActivateClass();
+            activateDeletion.SetUpICardEffect("Play 1 [Numemon] from trash", CanUseOnDeletion, card);
+            activateDeletion.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
+            activateDeletion.SetHashString("Play1NumemonFromTrash_BT15_057");
+            cardEffects.Add(activateDeletion);
+
+            string EffectDiscription()
             {
-                if (CardEffectCommons.IsExistOnBattleArea(card))
-                {
+                return "[On Deletion] You may play 1 Digimon with [Numemon] in it's name from your trash suspended without paying its memory cost.";
+            }
 
-                    if (card.PermanentOfThisCard().DigivolutionCards.Count((cardSource) => cardSource.ContainsCardName("Numemon")) >= 1)
+            bool CanSelectCardCondition(CardSource cardSource)
+            {
+                if (cardSource != null)
+                {
+                    if (cardSource.Owner == card.Owner)
                     {
-                        return true;
+                        if (CardEffectCommons.CanPlayAsNewPermanent(cardSource: cardSource, payCost: false, cardEffect: activateDeletion))
+                        {
+                            if (cardSource.CardNames.Contains("Numemon"))
+                            {
+                                return true;
+                            }
+                        }
                     }
+                }
 
-                    if(card.PermanentOfThisCard().DigivolutionCards.Count((cardSource) => cardSource.CardNames.Contains("XAntibody")) >= 1)
+                return false;
+            }
+
+            bool CanUseOnDeletion(Hashtable hashtable)
+            {
+                if(CardEffectCommons.CanTriggerOnDeletion(hashtable, card))
+                {
+                    if (card.PermanentOfThisCard().DigivolutionCards.Count((cardSource) => (cardSource.ContainsCardName("Numemon") || cardSource.CardNames.Contains("XAntibody") || cardSource.CardNames.Contains("X Antibody"))) >= 1)
                     {
                         return true;
                     }
                 }
-
                 return false;
             }
 
-            AddSkillClass addSkillClass = new AddSkillClass();
-            addSkillClass.SetUpICardEffect("Play 1 [Numemon] from trash", CanUseCondition, card);
-            addSkillClass.SetUpAddSkillClass(cardSourceCondition: CardSourceCondition, getEffects: GetEffects);
-            card.Owner.UntilOpponentTurnEndEffects.Add((_timing) => addSkillClass);
-
-            bool CanUseCondition(Hashtable hashtable)
+            bool CanActivateCondition(Hashtable hashtable)
             {
-                return true;
+                if (CardEffectCommons.CanActivateOnDeletion(card))
+                {
+                    if (CardEffectCommons.HasMatchConditionOwnersCardInTrash(card, (cardSource) => CanSelectCardCondition(cardSource)))
+                    {
+                        return true;
+                    }
+                }
+
+                return false;
             }
 
-            List<ICardEffect> GetEffects(CardSource cardSource, List<ICardEffect> cardEffects, EffectTiming _timing)
+            IEnumerator ActivateCoroutine(Hashtable _hashtable)
             {
-                if (_timing == EffectTiming.OnDestroyedAnyone)
+                if (CardEffectCommons.HasMatchConditionOwnersCardInTrash(card, (cardSource) => CanSelectCardCondition(cardSource)))
                 {
-                    ActivateClass activateDeletion = new ActivateClass();
-                    activateDeletion.SetUpICardEffect("Play 1 [Numemon] from trash", CanUseOnDeletion, cardSource);
-                    activateDeletion.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
-                    cardEffects.Add(activateDeletion);
+                    int maxCount = Math.Min(1, card.Owner.TrashCards.Count((cardSource) => CanSelectCardCondition(cardSource)));
 
-                    if (cardSource.PermanentOfThisCard() != null)
-                    {
-                        activateDeletion.SetEffectSourcePermanent(cardSource.PermanentOfThisCard());
-                    }
+                    List<CardSource> selectedCards = new List<CardSource>();
 
-                    string EffectDiscription()
-                    {
-                        return "[On Deletion] You may play 1 Digimon with [Numemon] in it's name from your trash suspended without paying its memory cost.";
-                    }
+                    SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
 
-                    bool CanSelectCardCondition(CardSource cardSource)
-                    {
-                        if (cardSource != null)
-                        {
-                            if (cardSource.Owner == card.Owner)
-                            {
-                                if (CardEffectCommons.CanPlayAsNewPermanent(cardSource: cardSource, payCost: false, cardEffect: activateDeletion))
-                                {
-                                    if (cardSource.CardNames.Contains("Numemon"))
-                                    {
-                                        return true;
-                                    }
-                                }
-                            }
-                        }
+                    selectCardEffect.SetUp(
+                                canTargetCondition: CanSelectCardCondition,
+                                canTargetCondition_ByPreSelecetedList: null,
+                                canEndSelectCondition: null,
+                                canNoSelect: () => true,
+                                selectCardCoroutine: SelectCardCoroutine,
+                                afterSelectCardCoroutine: null,
+                                message: "Select 1 card to play.",
+                                maxCount: maxCount,
+                                canEndNotMax: false,
+                                isShowOpponent: true,
+                                mode: SelectCardEffect.Mode.Custom,
+                                root: SelectCardEffect.Root.Trash,
+                                customRootCardList: null,
+                                canLookReverseCard: true,
+                                selectPlayer: card.Owner,
+                                cardEffect: activateDeletion);
 
-                        return false;
-                    }
+                    selectCardEffect.SetUpCustomMessage("Select 1 card to play.", "The opponent is selecting 1 card to play.");
+                    selectCardEffect.SetUpCustomMessage_ShowCard("Played Card");
 
-                    bool CanUseOnDeletion(Hashtable hashtable)
-                    {
-                        return CardEffectCommons.CanTriggerOnDeletion(hashtable, card);
-                    }
+                    yield return StartCoroutine(selectCardEffect.Activate());
 
-                    bool CanActivateCondition(Hashtable hashtable)
+                    IEnumerator SelectCardCoroutine(CardSource cardSource)
                     {
-                        if (CardEffectCommons.CanActivateOnDeletion(card))
-                        {
-                            if (CardEffectCommons.HasMatchConditionOwnersCardInTrash(card, (cardSource) => CanSelectCardCondition(cardSource)))
-                            {
-                                return true;
-                            }
-                        }
+                        selectedCards.Add(cardSource);
 
-                        return false;
+                        yield return null;
                     }
 
-                    IEnumerator ActivateCoroutine(Hashtable _hashtable)
-                    {
-                        if (CardEffectCommons.HasMatchConditionOwnersCardInTrash(card, (cardSource) => CanSelectCardCondition(cardSource)))
-                        {
-                            int maxCount = Math.Min(1, card.Owner.TrashCards.Count((cardSource) => CanSelectCardCondition(cardSource)));
-
-                            List<CardSource> selectedCards = new List<CardSource>();
-
-                            SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
-
-                            selectCardEffect.SetUp(
-                                        canTargetCondition: CanSelectCardCondition,
-                                        canTargetCondition_ByPreSelecetedList: null,
-                                        canEndSelectCondition: null,
-                                        canNoSelect: () => true,
-                                        selectCardCoroutine: SelectCardCoroutine,
-                                        afterSelectCardCoroutine: null,
-                                        message: "Select 1 card to play.",
-                                        maxCount: maxCount,
-                                        canEndNotMax: false,
-                                        isShowOpponent: true,
-                                        mode: SelectCardEffect.Mode.Custom,
-                                        root: SelectCardEffect.Root.Trash,
-                                        customRootCardList: null,
-                                        canLookReverseCard: true,
-                                        selectPlayer: card.Owner,
-                                        cardEffect: activateDeletion);
-
-                            selectCardEffect.SetUpCustomMessage("Select 1 card to play.", "The opponent is selecting 1 card to play.");
-                            selectCardEffect.SetUpCustomMessage_ShowCard("Played Card");
-
-                            yield return StartCoroutine(selectCardEffect.Activate());
-
-                            IEnumerator SelectCardCoroutine(CardSource cardSource)
-                            {
-                                selectedCards.Add(cardSource);
-
-                                yield return null;
-                            }
-
-                            yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlayPermanentCards(cardSources: selectedCards, activateClass: activateDeletion, payCost: false, isTapped: false, root: SelectCardEffect.Root.Trash, activateETB: true));
-                        }
-                    }
+                    yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlayPermanentCards(cardSources: selectedCards, activateClass: activateDeletion, payCost: false, isTapped: false, root: SelectCardEffect.Root.Trash, activateETB: true));
                 }
-
-                return cardEffects;
             }
         }
         #endregion

+ 2 - 2
Assets/CardEffect/BT9/Black/Xevolution_BT9_104.cs

@@ -42,6 +42,7 @@ public class Xevolution_BT9_104 : CEntity_Effect
                 return false;
             }
         }
+
         if (timing == EffectTiming.OptionSkill)
         {
             ActivateClass activateClass = new ActivateClass();
@@ -273,12 +274,11 @@ public class Xevolution_BT9_104 : CEntity_Effect
             }
         }
 
-
         if (timing == EffectTiming.SecuritySkill)
         {
             ActivateClass activateClass = new ActivateClass();
             activateClass.SetUpICardEffect($"Reveal the top 3 cards of deck", CanUseCondition, card);
-            activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
+            activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, true, EffectDiscription());
             activateClass.SetIsSecurityEffect(true);
             cardEffects.Add(activateClass);
 

+ 1 - 1
Assets/CardEffect/ST15/Black/BravelyProgress_ST15_15.cs

@@ -21,7 +21,7 @@ public class BravelyProgress_ST15_15 : CEntity_Effect
             bool CanUseCondition(Hashtable hashtable)
             {
                 if (card.Owner.GetBattleAreaPermanents().Count(permanent =>
-                permanent.TopCard.ContainsCardName("Tai Kamiya") || permanent.IsTamer) >= 1)
+                permanent.TopCard.ContainsCardName("Tai Kamiya") && permanent.IsTamer) >= 1)
                 {
                     return true;
                 }

+ 1 - 1
Assets/CardEffect/ST16/Purple/ShoutOfFriendly_ST16_15.cs

@@ -21,7 +21,7 @@ public class ShoutOfFriendly_ST16_15 : CEntity_Effect
 
             bool CanUseCondition(Hashtable hashtable)
             {
-                if (card.Owner.GetBattleAreaPermanents().Count(permanent => permanent.TopCard.ContainsCardName("Matt Ishida") || permanent.IsTamer) >= 1)
+                if (card.Owner.GetBattleAreaPermanents().Count(permanent => permanent.TopCard.ContainsCardName("Matt Ishida") && permanent.IsTamer) >= 1)
                 {
                     return true;
                 }

+ 2 - 5
Assets/CardEffect/ST17/Green/DoubleTyphoon_ST17_11.cs

@@ -255,14 +255,11 @@ namespace DCGO.CardEffects.ST17
                             cardEffect: activateClass);
 
                         yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
+
+                        cardEffects.Add(CardEffectFactory.PlaceSelfDelayOptionSecurityEffect(card));
                     }
                 }
             }
-
-            if (timing == EffectTiming.SecuritySkill)
-            {
-                cardEffects.Add(CardEffectFactory.PlaceSelfDelayOptionSecurityEffect(card));
-            }
             #endregion
 
 

+ 1 - 1
Assets/Scripts/CardEffectCommons/MinMax_DP_Cost_Level/Cost/IsMaxCost.cs

@@ -14,7 +14,7 @@ public partial class CardEffectCommons
         if (permanent.TopCard.Owner != owner) return false;
         if (!IsPermanentExistsOnOwnerBattleArea(permanent, permanent.TopCard)) return false;
         if (!permanent.IsDigimon && !permanent.IsTamer) return false;
-        if (IsDigimonOnly && permanent.IsTamer) return false;
+        //if (IsDigimonOnly && permanent.IsTamer) return false;
         if (!permanent.TopCard.HasPlayCost) return false;
 
         List<int> costs = permanent.TopCard.Owner.GetBattleAreaPermanents().Filter(permanent1 =>

+ 0 - 1
Assets/Scripts/CardSource.cs

@@ -1690,7 +1690,6 @@ public class CardSource : MonoBehaviour
     public bool HasBlocker =>
         EffectList(EffectTiming.None)
             .Some(cardEffect => cardEffect is BlockerClass 
-                && cardEffect.CanUseCondition == null
                 && !cardEffect.IsInheritedEffect && !cardEffect.IsSecurityEffect);
     #endregion