mbunch_kascope пре 2 година
родитељ
комит
152b0c020d

+ 25 - 57
Assets/CardEffect/BT16/Black/Shakkoumon_BT16_063.cs

@@ -10,6 +10,10 @@ namespace DCGO.CardEffects.BT16
         {
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
+            List<PartitionCondition> partitionConditions = new List<PartitionCondition>();
+            partitionConditions.Add(new PartitionCondition(4, CardColor.Black));
+            partitionConditions.Add(new PartitionCondition(4, CardColor.Yellow));
+
             #region Rule - Trait: Also has [Angel]
             if (timing == EffectTiming.None)
             {
@@ -105,6 +109,8 @@ namespace DCGO.CardEffects.BT16
             #region When Digivolved
             if (timing == EffectTiming.OnEnterFieldAnyone)
             {
+                int SelectedCardCount = card.Owner.Enemy.SecurityCards.Count;
+
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("Unaffected by effects of your opponent's Digimon", CanUseCondition, card);
                 activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
@@ -156,7 +162,7 @@ namespace DCGO.CardEffects.BT16
                     {
                         if (permanent.TopCard.HasLevel)
                         {
-                            if(permanent.Level <= card.Owner.Enemy.SecurityCards.Count)
+                            if(permanent.Level <= SelectedCardCount)
                             {
                                 return true;
                             }
@@ -199,6 +205,22 @@ namespace DCGO.CardEffects.BT16
                     {
                         SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
 
+                        List<SelectionElement<bool>> selectionElements = new List<SelectionElement<bool>>()
+                        {
+                            new SelectionElement<bool>(message: $"Your Security", value : true, spriteIndex: 0),
+                            new SelectionElement<bool>(message: $"Opponent's Security", value : false, spriteIndex: 1),
+                        };
+
+                        string selectPlayerMessage = "Choose which security you will use?";
+                        string notSelectPlayerMessage = "The opponent is choosing which security to use.";
+
+                        GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage, notSelectPlayerMessage: notSelectPlayerMessage);
+                        
+                        yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager.WaitForEndSelect());
+
+                        if(GManager.instance.userSelectionManager.SelectedBoolValue)
+                            SelectedCardCount = card.Owner.SecurityCards.Count;
+
                         selectPermanentEffect.SetUp(
                             selectPlayer: card.Owner,
                             canTargetCondition: CanSelectPermanentCondition,
@@ -238,38 +260,11 @@ namespace DCGO.CardEffects.BT16
             #region Partition
             if (timing == EffectTiming.WhenRemoveField)
             {
-                bool CanSelectFirstSourceCondition(CardSource cardSource)
-                {
-                    if (cardSource.CardColors.Contains(CardColor.Black))
-                    {
-                        if (cardSource.HasLevel && cardSource.Level == 4)
-                        {
-                            return true;
-                        }
-                    }
-
-                    return false;
-                }
-
-                bool CanSelectSecondSourceCondition(CardSource cardSource)
-                {
-                    if (cardSource.CardColors.Contains(CardColor.Yellow))
-                    {
-                        if (cardSource.HasLevel && cardSource.Level == 4)
-                        {
-                            return true;
-                        }
-                    }
-
-                    return false;
-                }
-
                 cardEffects.Add(CardEffectFactory.PartitionSelfEffect(
                     isInheritedEffect: false,
                     card: card,
                     condition: null,
-                    canSelectFirstSourceCondition: CanSelectFirstSourceCondition,
-                    canSelectSecondSourceCondition: CanSelectSecondSourceCondition)
+                    cardSourceConditions: partitionConditions)
                 );
             }
             #endregion
@@ -277,38 +272,11 @@ namespace DCGO.CardEffects.BT16
             #region Partition - Inherited
             if (timing == EffectTiming.WhenRemoveField)
             {
-                bool CanSelectFirstSourceCondition(CardSource cardSource)
-                {
-                    if (cardSource.CardColors.Contains(CardColor.Black))
-                    {
-                        if (cardSource.HasLevel && cardSource.Level == 4)
-                        {
-                            return true;
-                        }
-                    }
-
-                    return true;
-                }
-
-                bool CanSelectSecondSourceCondition(CardSource cardSource)
-                {
-                    if (cardSource.CardColors.Contains(CardColor.Yellow))
-                    {
-                        if (cardSource.HasLevel && cardSource.Level == 4)
-                        {
-                            return true;
-                        }
-                    }
-
-                    return true;
-                }
-
                 cardEffects.Add(CardEffectFactory.PartitionSelfEffect(
                     isInheritedEffect: true,
                     card: card,
                     condition: null,
-                    canSelectFirstSourceCondition: CanSelectFirstSourceCondition,
-                    canSelectSecondSourceCondition: CanSelectSecondSourceCondition)
+                    cardSourceConditions: partitionConditions)
                 );
             }
             #endregion

+ 13 - 37
Assets/CardEffect/BT16/Blue/Paildramon_BT16_025.cs

@@ -10,48 +10,24 @@ namespace DCGO.CardEffects.BT16
         {
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
+            List<PartitionCondition> partitionConditions = new List<PartitionCondition>();
+            partitionConditions.Add(new PartitionCondition(4, CardColor.Blue));
+            partitionConditions.Add(new PartitionCondition(4, CardColor.Green));
+
             #region Partition - Inherited
-            if(timing == EffectTiming.WhenRemoveField)
+            if (timing == EffectTiming.WhenRemoveField)
             {
-                bool CanSelectFirstSourceCondition(CardSource cardSource)
-                {
-                    if(cardSource.HasLevel && cardSource.Level == 4)
-                    {
-                        if(cardSource.CardColors.Contains(CardColor.Blue))
-                        {
-                            return true;
-                        }
-                    }
-
-                    return false;
-                }
-
-                bool CanSelectSecondSourceCondition(CardSource cardSource)
-                {
-                    if (cardSource.HasLevel && cardSource.Level == 4)
-                    {
-                        if (cardSource.CardColors.Contains(CardColor.Green))
-                        {
-                            return true;
-                        }
-                    }
-
-                    return false;
-                }
-
-                cardEffects.Add(CardEffectFactory.PartitionSelfEffect(
-                    isInheritedEffect: false,
-                    card:card,
-                    condition:null,
-                    canSelectFirstSourceCondition: CanSelectFirstSourceCondition,
-                    canSelectSecondSourceCondition: CanSelectSecondSourceCondition));
+                cardEffects.Add(CardEffectFactory.PartitionSelfEffect
+                    (isInheritedEffect: false,
+                    card: card,
+                    condition: null,
+                    cardSourceConditions: partitionConditions));
 
-                cardEffects.Add(CardEffectFactory.PartitionSelfEffect(
-                    isInheritedEffect: true,
+                cardEffects.Add(CardEffectFactory.PartitionSelfEffect
+                    (isInheritedEffect: true,
                     card: card,
                     condition: null,
-                    canSelectFirstSourceCondition: CanSelectFirstSourceCondition,
-                    canSelectSecondSourceCondition: CanSelectSecondSourceCondition));
+                    cardSourceConditions: partitionConditions));
             }
             #endregion
 

+ 16 - 42
Assets/CardEffect/BT16/Purple/Dinobeemon_BT16_077.cs

@@ -12,6 +12,10 @@ namespace DCGO.CardEffects.BT16
         {
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
+            List<PartitionCondition> partitionConditions = new List<PartitionCondition>();
+            partitionConditions.Add(new PartitionCondition(4, CardColor.Purple));
+            partitionConditions.Add(new PartitionCondition(4, CardColor.Red));
+
             #region DNA Digivolution
             if (timing == EffectTiming.None)
             {
@@ -116,52 +120,22 @@ namespace DCGO.CardEffects.BT16
 
             if (timing == EffectTiming.WhenRemoveField)
             {
-
-                bool CanSelectFirstSource(CardSource cardSource)
-                {
-                    if (card.PermanentOfThisCard().DigivolutionCards.Count((cardSource) => cardSource.CardColors.Contains(CardColor.Purple) && cardSource.HasLevel && cardSource.Level == 4) >= 1)
-                    {
-                        return true;
-                    }
-                    return false;
-                }
-
-                bool CanSelectSecondSource(CardSource cardSource)
-                {
-                    if (card.PermanentOfThisCard().DigivolutionCards.Count((cardSource) => cardSource.CardColors.Contains(CardColor.Red) && cardSource.HasLevel && cardSource.Level == 4) >= 1)
-                    {
-                        return true;
-                    }
-                    return false;
-                }
-
-                cardEffects.Add(CardEffectFactory.PartitionSelfEffect(false, card, null, CanSelectFirstSource, CanSelectSecondSource));
-
+                cardEffects.Add(CardEffectFactory.PartitionSelfEffect(
+                    isInheritedEffect: false,
+                    card: card,
+                    condition: null,
+                    cardSourceConditions: partitionConditions)
+                );
             }
 
             if (timing == EffectTiming.WhenRemoveField)
             {
-
-                bool CanSelectFirstSource(CardSource cardSource)
-                {
-                    if (card.PermanentOfThisCard().DigivolutionCards.Count((cardSource) => cardSource.CardColors.Contains(CardColor.Purple) && cardSource.HasLevel && cardSource.Level == 4) >= 1)
-                    {
-                        return true;
-                    }
-                    return false;
-                }
-
-                bool CanSelectSecondSource(CardSource cardSource)
-                {
-                    if (card.PermanentOfThisCard().DigivolutionCards.Count((cardSource) => cardSource.CardColors.Contains(CardColor.Red) && cardSource.HasLevel && cardSource.Level == 4) >= 1)
-                    {
-                        return true;
-                    }
-                    return false;
-                }
-
-                cardEffects.Add(CardEffectFactory.PartitionSelfEffect(true, card, null, CanSelectFirstSource, CanSelectSecondSource));
-
+                cardEffects.Add(CardEffectFactory.PartitionSelfEffect(
+                    isInheritedEffect: true,
+                    card: card,
+                    condition: null,
+                    cardSourceConditions: partitionConditions)
+                );
             }
             #endregion
 

+ 12 - 48
Assets/CardEffect/BT16/Red/Silphymon_BT16_012.cs

@@ -14,67 +14,31 @@ namespace DCGO.CardEffects.BT16
         {
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
+            List<PartitionCondition> partitionConditions = new List<PartitionCondition>();
+            partitionConditions.Add(new PartitionCondition(4, CardColor.Red));
+            partitionConditions.Add(new PartitionCondition(4, CardColor.Yellow));
+
             #region Partition
             if (timing == EffectTiming.WhenRemoveField)
             {
-                bool CanSelectFirstSourceCondition(CardSource card)
-                {
-                    if (card.PermanentOfThisCard().DigivolutionCards.Count((cardSource) => cardSource.CardColors.Contains(CardColor.Red) && cardSource.Level == 4) >= 1)
-                    {
-                        return true;
-                    }
-
-                    return false;
-                }
-
-                bool CanSelectSecondSourceCondition(CardSource card)
-                {
-                    if (card.PermanentOfThisCard().DigivolutionCards.Count((cardSource) => cardSource.CardColors.Contains(CardColor.Yellow) && cardSource.Level == 4) >= 1)
-                    {
-                        return true;
-                    }
-
-                    return false;
-                }
-
-                cardEffects.Add(CardEffectFactory.PartitionSelfEffect
-                    (isInheritedEffect: false,
+                cardEffects.Add(CardEffectFactory.PartitionSelfEffect(
+                    isInheritedEffect: false,
                     card: card,
                     condition: null,
-                    canSelectFirstSourceCondition: CanSelectFirstSourceCondition, 
-                    canSelectSecondSourceCondition: CanSelectSecondSourceCondition));
+                    cardSourceConditions: partitionConditions)
+                );
             }
             #endregion
 
             #region Inherit
             if (timing == EffectTiming.WhenRemoveField)
             {
-                bool CanSelectFirstSourceCondition(CardSource card)
-                {
-                    if (card.PermanentOfThisCard().DigivolutionCards.Count((cardSource) => cardSource.CardColors.Contains(CardColor.Red) && cardSource.Level == 4) >= 1)
-                    {
-                        return true;
-                    }
-
-                    return false;
-                }
-
-                bool CanSelectSecondSourceCondition(CardSource card)
-                {
-                    if (card.PermanentOfThisCard().DigivolutionCards.Count((cardSource) => cardSource.CardColors.Contains(CardColor.Yellow) && cardSource.Level == 4) >= 1)
-                    {
-                        return true;
-                    }
-
-                    return false;
-                }
-
-                cardEffects.Add(CardEffectFactory.PartitionSelfEffect
-                    (isInheritedEffect: true,
+                cardEffects.Add(CardEffectFactory.PartitionSelfEffect(
+                    isInheritedEffect: true,
                     card: card,
                     condition: null,
-                    canSelectFirstSourceCondition: CanSelectFirstSourceCondition,
-                    canSelectSecondSourceCondition: CanSelectSecondSourceCondition));
+                    cardSourceConditions: partitionConditions)
+                );
             }
             #endregion
 

+ 4 - 27
Assets/CardEffect/BT16/Yellow/Chaosmon_BT16_036.cs

@@ -118,38 +118,15 @@ namespace DCGO.CardEffects.BT16
 
             if(timing == EffectTiming.WhenRemoveField)
             {
-                bool CanSelectFirstSourceCondition(CardSource cardSource)
-                {
-                    if (cardSource.CardColors.Contains(CardColor.Black))
-                    {
-                        if (cardSource.HasLevel && cardSource.Level == 6)
-                        {
-                            return true;
-                        }
-                    }
-
-                    return true;
-                }
-
-                bool CanSelectSecondSourceCondition(CardSource cardSource)
-                {
-                    if (cardSource.CardColors.Contains(CardColor.Yellow))
-                    {
-                        if (cardSource.HasLevel && cardSource.Level == 6)
-                        {
-                            return true;
-                        }
-                    }
-
-                    return true;
-                }
+                List<PartitionCondition> partitionConditions = new List<PartitionCondition>();
+                partitionConditions.Add(new PartitionCondition(6, CardColor.Black));
+                partitionConditions.Add(new PartitionCondition(6, CardColor.Yellow));
 
                 cardEffects.Add(CardEffectFactory.PartitionSelfEffect
                     (isInheritedEffect: false, 
                     card: card, 
                     condition: null, 
-                    canSelectFirstSourceCondition: CanSelectFirstSourceCondition, 
-                    canSelectSecondSourceCondition: CanSelectSecondSourceCondition));
+                    cardSourceConditions: partitionConditions));
             }
             #endregion
 

+ 61 - 45
Assets/Scripts/CardEffectCommons/KeyWordEffects/Partition.cs

@@ -2,6 +2,7 @@ using System.Collections;
 using System.Collections.Generic;
 using System;
 using System.Linq;
+using UnityEngine;
 
 public partial class CardEffectCommons
 {
@@ -39,9 +40,9 @@ public partial class CardEffectCommons
     #endregion
 
     #region Effect process of [Partition]
-    public static IEnumerator PartitionProcess(ICardEffect activateClass, Permanent permanent, Func<CardSource, bool> CanSelectFirstSourceCondition, Func<CardSource, bool> CanSelectSecondSourceCondition)
+    public static IEnumerator PartitionProcess(ICardEffect activateClass, Permanent permanent, List<CardSource> firstSources, List<CardSource> secondSources)
     {
-        yield return ContinuousController.instance.StartCoroutine(new PartitionClass(permanent).Partition(activateClass, CanSelectFirstSourceCondition, CanSelectSecondSourceCondition));
+        yield return ContinuousController.instance.StartCoroutine(new PartitionClass(permanent).Partition(activateClass, firstSources, secondSources));
     }
     #endregion
 
@@ -56,7 +57,7 @@ public partial class CardEffectCommons
         Permanent _permanent = null;
 
 
-        public IEnumerator Partition(ICardEffect activateClass, Func<CardSource, bool> CanSelectFristSourceCondition, Func<CardSource, bool> CanSelectSecondSourceCondition)
+        public IEnumerator Partition(ICardEffect activateClass, List<CardSource> firstSources, List<CardSource> secondSources)
         {
             if (_permanent != null)
             {
@@ -65,54 +66,69 @@ public partial class CardEffectCommons
 
                 List<CardSource> selectedCards = new List<CardSource>();
 
+                bool CanSelectCondition(CardSource source)
+                {
+                    return true;
+                }
+
                 if (_permanent.TopCard != null)
                 {
-                    SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
-                    selectCardEffect.SetUp(
-                            canTargetCondition: CanSelectFristSourceCondition,
-                            canTargetCondition_ByPreSelecetedList: null,
-                            canEndSelectCondition: null,
-                            canNoSelect: () => false,
-                            selectCardCoroutine: SelectCardCoroutine,
-                            afterSelectCardCoroutine: null,
-                            message: "Select card to play",
-                            maxCount: 1,
-                            canEndNotMax: false,
-                            isShowOpponent: false,
-                            mode: SelectCardEffect.Mode.Custom,
-                            root: SelectCardEffect.Root.Custom,
-                            customRootCardList: _permanent.DigivolutionCards.Where(CanSelectFristSourceCondition).ToList(),
-                            canLookReverseCard: true,
-                            selectPlayer: topCard.Owner,
-                            cardEffect: activateClass);
-
-                    yield return ContinuousController.instance.StartCoroutine(selectCardEffect.Activate());
-
-                    SelectCardEffect selectSecondCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
-                    selectSecondCardEffect.SetUp(
-                            canTargetCondition: CanSelectSecondSourceCondition,
-                            canTargetCondition_ByPreSelecetedList: null,
-                            canEndSelectCondition: null,
-                            canNoSelect: () => false,
-                            selectCardCoroutine: SelectCardCoroutine,
-                            afterSelectCardCoroutine: null,
-                            message: "Select card to play",
-                            maxCount: 1,
-                            canEndNotMax: false,
-                            isShowOpponent: false,
-                            mode: SelectCardEffect.Mode.Custom,
-                            root: SelectCardEffect.Root.Custom,
-                            customRootCardList: _permanent.DigivolutionCards.Where(CanSelectSecondSourceCondition).ToList(),
-                            canLookReverseCard: true,
-                            selectPlayer: topCard.Owner,
-                            cardEffect: activateClass);
-
-                    yield return ContinuousController.instance.StartCoroutine(selectSecondCardEffect.Activate());
+                    if (firstSources.Count > 1)
+                    {
+                        SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
+                        selectCardEffect.SetUp(
+                                canTargetCondition: CanSelectCondition,
+                                canTargetCondition_ByPreSelecetedList: null,
+                                canEndSelectCondition: null,
+                                canNoSelect: () => false,
+                                selectCardCoroutine: SelectCardCoroutine,
+                                afterSelectCardCoroutine: null,
+                                message: "Select card to play",
+                                maxCount: 1,
+                                canEndNotMax: false,
+                                isShowOpponent: false,
+                                mode: SelectCardEffect.Mode.Custom,
+                                root: SelectCardEffect.Root.Custom,
+                                customRootCardList: firstSources,
+                                canLookReverseCard: true,
+                                selectPlayer: topCard.Owner,
+                                cardEffect: activateClass);
+
+                        yield return ContinuousController.instance.StartCoroutine(selectCardEffect.Activate());
+                    }
+                    else
+                        selectedCards.AddRange(firstSources);
+
+                    if(secondSources.Count > 1)
+                    { 
+                        SelectCardEffect selectSecondCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
+                        selectSecondCardEffect.SetUp(
+                                canTargetCondition: CanSelectCondition,
+                                canTargetCondition_ByPreSelecetedList: null,
+                                canEndSelectCondition: null,
+                                canNoSelect: () => false,
+                                selectCardCoroutine: SelectCardCoroutine,
+                                afterSelectCardCoroutine: null,
+                                message: "Select card to play",
+                                maxCount: 1,
+                                canEndNotMax: false,
+                                isShowOpponent: false,
+                                mode: SelectCardEffect.Mode.Custom,
+                                root: SelectCardEffect.Root.Custom,
+                                customRootCardList: secondSources,
+                                canLookReverseCard: true,
+                                selectPlayer: topCard.Owner,
+                                cardEffect: activateClass);
+
+                        yield return ContinuousController.instance.StartCoroutine(selectSecondCardEffect.Activate());
+                    }
+                    else
+                        selectedCards.AddRange(secondSources);
 
                     IEnumerator SelectCardCoroutine(CardSource cardSource)
                     {
                         selectedCards.Add(cardSource);
-
+                        secondSources = secondSources.Except(selectedCards).ToList();
                         yield return null;
                     }
                 }

+ 48 - 6
Assets/Scripts/CardEffectFactory/KeyWordEffects/Partition.cs

@@ -4,12 +4,54 @@ using System;
 using System.Linq;
 using UnityEngine;
 
+public class PartitionCondition
+{
+    public int Level;
+    public CardColor Color;
+
+    public PartitionCondition(int level, CardColor color)
+    {
+        Level = level;
+        Color = color;
+    }
+}
 public partial class CardEffectFactory
 {
     #region Trigger effect of [Partition] on oneself
-    public static ActivateClass PartitionSelfEffect(bool isInheritedEffect, CardSource card, Func<bool> condition, Func<CardSource, bool> canSelectFirstSourceCondition, Func<CardSource, bool> canSelectSecondSourceCondition)
+    public static ActivateClass PartitionSelfEffect(bool isInheritedEffect, CardSource card, Func<bool> condition, List<PartitionCondition> cardSourceConditions)
     {
         Permanent targetPermanent = card.PermanentOfThisCard();
+        List<CardSource> sourceOneCard = targetPermanent.cardSources
+            .Clone()
+            .Filter(source =>
+                source.CardColors.Contains(cardSourceConditions[0].Color)
+                && (source.HasLevel && source.Level == cardSourceConditions[0].Level));
+
+        List<CardSource> sourceTwoCard = targetPermanent.cardSources
+            .Clone()
+            .Filter(source =>
+                source.CardColors.Contains(cardSourceConditions[1].Color)
+                && (source.HasLevel && source.Level == cardSourceConditions[1].Level));
+
+        Debug.Log(sourceOneCard.Count + " ++ " + sourceTwoCard.Count);
+        foreach (CardSource cardSource in sourceOneCard)
+            Debug.Log($"First Source Options: {cardSource.BaseENGCardNameFromEntity}");
+
+        foreach (CardSource cardSource in sourceTwoCard)
+            Debug.Log($"Second Source Options: {cardSource.BaseENGCardNameFromEntity}");
+
+        if (sourceOneCard.Count == 1)
+            sourceTwoCard = sourceTwoCard.Except(sourceOneCard).ToList();
+
+        if (sourceTwoCard.Count == 1)
+            sourceOneCard = sourceOneCard.Except(sourceTwoCard).ToList();
+
+        Debug.Log(sourceOneCard.Count + " ++ " + sourceTwoCard.Count);
+        foreach (CardSource cardSource in sourceOneCard)
+            Debug.Log($"First Source Options: {cardSource.BaseENGCardNameFromEntity}");
+
+        foreach (CardSource cardSource in sourceTwoCard)
+            Debug.Log($"Second Source Options: {cardSource.BaseENGCardNameFromEntity}");
 
         bool CanUseCondition()
         {
@@ -21,12 +63,12 @@ public partial class CardEffectFactory
             return false;
         }
 
-        return PartitionEffect(targetPermanent: targetPermanent, isInheritedEffect: isInheritedEffect, condition: CanUseCondition, firstSourceCondition: canSelectFirstSourceCondition, secondSourceCondition: canSelectSecondSourceCondition, card);
+        return PartitionEffect(targetPermanent: targetPermanent, isInheritedEffect: isInheritedEffect, condition: CanUseCondition, firstSourceCards: sourceOneCard, secondSourceCards: sourceTwoCard, card);
     }
     #endregion
 
     #region Trigger effect of [Partition]
-    public static ActivateClass PartitionEffect(Permanent targetPermanent, bool isInheritedEffect, Func<bool> condition, Func<CardSource, bool> firstSourceCondition, Func<CardSource, bool> secondSourceCondition, CardSource card)
+    public static ActivateClass PartitionEffect(Permanent targetPermanent, bool isInheritedEffect, Func<bool> condition, List<CardSource> firstSourceCards, List<CardSource> secondSourceCards, CardSource card)
     {
         if (targetPermanent == null) return null;
         if (targetPermanent.TopCard == null) return null;
@@ -60,9 +102,9 @@ public partial class CardEffectFactory
         {
             if (CardEffectCommons.CanActivatePartition(targetPermanent))
             {
-                if (firstSourceCondition == null || targetPermanent.DigivolutionCards.Count(firstSourceCondition) >= 1)
+                if (firstSourceCards == null || firstSourceCards.Count > 0)
                 {
-                    if (secondSourceCondition == null || targetPermanent.DigivolutionCards.Count(secondSourceCondition) >= 1)
+                    if (secondSourceCards == null || secondSourceCards.Count > 0)
                     {
                         return true;
                     }
@@ -74,7 +116,7 @@ public partial class CardEffectFactory
 
         IEnumerator ActivateCoroutine(Hashtable _hashtable)
         {
-            return CardEffectCommons.PartitionProcess(activateClass, targetPermanent, firstSourceCondition, secondSourceCondition);
+            return CardEffectCommons.PartitionProcess(activateClass, targetPermanent, firstSourceCards, secondSourceCards);
         }
 
         return activateClass;