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

Merge pull request #623 from BennAbbot/removed-rpcs-from-eot-dna

Removed RPCs From End of Turn DNA Effects
x89rt2 4 месяцев назад
Родитель
Сommit
1d091de5f2

+ 8 - 130
Assets/Scripts/CardEffect/BT12/Blue/BT12_021.cs

@@ -172,141 +172,19 @@ namespace DCGO.CardEffects.BT12
                 {
                     if (isExistOnField(card))
                     {
-                        if (card.Owner.GetBattleAreaDigimons().Contains(card.PermanentOfThisCard()))
-                        {
-                            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 DNA digivolve.", "The opponent is selecting 1 card to DNA digivolve.");
-                                selectHandEffect.SetNotShowCard();
-
-                                yield return StartCoroutine(selectHandEffect.Activate());
-
-                                IEnumerator SelectCardCoroutine(CardSource cardSource)
-                                {
-                                    selectedCards.Add(cardSource);
-
-                                    yield return null;
-                                }
-
-                                if (selectedCards.Count >= 1)
-                                {
-                                    foreach (CardSource selectedCard in selectedCards)
-                                    {
-                                        if (selectedCard.CanPlayJogress(true) && selectedCard.CanJogressFromTargetPermanent(card.PermanentOfThisCard(), true))
-                                        {
-                                            JogressEvoRootsFrameIDs = new int[0];
-
-                                            yield return GManager.instance.photonWaitController.StartWait("Patamon_BT8_020");
-
-                                            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);
-
-                                                GManager.instance.selectJogressEffect.SetUpCustomPermanentConditions(new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() });
-
-                                                yield return ContinuousController.instance.StartCoroutine(GManager.instance.selectJogressEffect.SelectDigivolutionRoots());
-
-                                                IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
-                                                {
-                                                    permanents = permanents.Distinct().ToList();
-
-                                                    if (permanents.Count == 2)
-                                                    {
-                                                        JogressEvoRootsFrameIDs = new int[2];
-
-                                                        for (int i = 0; i < permanents.Count; i++)
-                                                        {
-                                                            if (i < JogressEvoRootsFrameIDs.Length)
-                                                            {
-                                                                JogressEvoRootsFrameIDs[i] = permanents[i].PermanentFrame.FrameID;
-                                                            }
-                                                        }
-                                                    }
-
-                                                    if (!permanents.Contains(card.PermanentOfThisCard()))
-                                                    {
-                                                        JogressEvoRootsFrameIDs = new int[0];
-                                                    }
-
-                                                    yield return null;
-                                                }
-
-                                                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;
-
-                                            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);
-
-                                                yield return ContinuousController.instance.StartCoroutine(playCard.PlayCard());
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
+                        yield return ContinuousController.instance.StartCoroutine(
+                             CardEffectCommons.DNADigivolvePermanentsIntoHandOrTrashCard(
+                                 CanSelectCardCondition,
+                                 payCost: true,
+                                 isHand: true,
+                                 activateClass,
+                                 permanentConditions: new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() }
+                             ));
                     }
                 }
             }
 
             return cardEffects;
         }
-
-        bool endSelect = false;
-        int[] JogressEvoRootsFrameIDs = new int[0];
-
-        [PunRPC]
-        public void SetJogressEvoRootsFrameIDs(int[] JogressEvoRootsFrameIDs)
-        {
-            this.JogressEvoRootsFrameIDs = JogressEvoRootsFrameIDs;
-            endSelect = true;
-        }
     }
 }

+ 8 - 130
Assets/Scripts/CardEffect/BT12/Green/BT12_047.cs

@@ -172,141 +172,19 @@ namespace DCGO.CardEffects.BT12
                 {
                     if (isExistOnField(card))
                     {
-                        if (card.Owner.GetBattleAreaDigimons().Contains(card.PermanentOfThisCard()))
-                        {
-                            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 DNA digivolve.", "The opponent is selecting 1 card to DNA digivolve.");
-                                selectHandEffect.SetNotShowCard();
-
-                                yield return StartCoroutine(selectHandEffect.Activate());
-
-                                IEnumerator SelectCardCoroutine(CardSource cardSource)
-                                {
-                                    selectedCards.Add(cardSource);
-
-                                    yield return null;
-                                }
-
-                                if (selectedCards.Count >= 1)
-                                {
-                                    foreach (CardSource selectedCard in selectedCards)
-                                    {
-                                        if (selectedCard.CanPlayJogress(true) && selectedCard.CanJogressFromTargetPermanent(card.PermanentOfThisCard(), true))
-                                        {
-                                            JogressEvoRootsFrameIDs = new int[0];
-
-                                            yield return GManager.instance.photonWaitController.StartWait("Patamon_BT8_020");
-
-                                            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);
-
-                                                GManager.instance.selectJogressEffect.SetUpCustomPermanentConditions(new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() });
-
-                                                yield return ContinuousController.instance.StartCoroutine(GManager.instance.selectJogressEffect.SelectDigivolutionRoots());
-
-                                                IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
-                                                {
-                                                    permanents = permanents.Distinct().ToList();
-
-                                                    if (permanents.Count == 2)
-                                                    {
-                                                        JogressEvoRootsFrameIDs = new int[2];
-
-                                                        for (int i = 0; i < permanents.Count; i++)
-                                                        {
-                                                            if (i < JogressEvoRootsFrameIDs.Length)
-                                                            {
-                                                                JogressEvoRootsFrameIDs[i] = permanents[i].PermanentFrame.FrameID;
-                                                            }
-                                                        }
-                                                    }
-
-                                                    if (!permanents.Contains(card.PermanentOfThisCard()))
-                                                    {
-                                                        JogressEvoRootsFrameIDs = new int[0];
-                                                    }
-
-                                                    yield return null;
-                                                }
-
-                                                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;
-
-                                            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);
-
-                                                yield return ContinuousController.instance.StartCoroutine(playCard.PlayCard());
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
+                        yield return ContinuousController.instance.StartCoroutine(
+                            CardEffectCommons.DNADigivolvePermanentsIntoHandOrTrashCard(
+                                CanSelectCardCondition,
+                                payCost: true,
+                                isHand: true,
+                                activateClass,
+                                permanentConditions: new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() }
+                            ));
                     }
                 }
             }
 
             return cardEffects;
         }
-
-        bool endSelect = false;
-        int[] JogressEvoRootsFrameIDs = new int[0];
-
-        [PunRPC]
-        public void SetJogressEvoRootsFrameIDs(int[] JogressEvoRootsFrameIDs)
-        {
-            this.JogressEvoRootsFrameIDs = JogressEvoRootsFrameIDs;
-            endSelect = true;
-        }
     }
 }

+ 8 - 152
Assets/Scripts/CardEffect/BT17/Blue/BT17_019.cs

@@ -176,144 +176,14 @@ namespace DCGO.CardEffects.BT17
                 {
                     if (isExistOnField(card))
                     {
-                        if (card.Owner.GetBattleAreaDigimons().Contains(card.PermanentOfThisCard()))
-                        {
-                            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 DNA digivolve.",
-                                    "The opponent is selecting 1 card to DNA digivolve.");
-                                selectHandEffect.SetNotShowCard();
-
-                                yield return StartCoroutine(selectHandEffect.Activate());
-
-                                IEnumerator SelectCardCoroutine(CardSource cardSource)
-                                {
-                                    selectedCards.Add(cardSource);
-
-                                    yield return null;
-                                }
-
-                                if (selectedCards.Count >= 1)
-                                {
-                                    foreach (CardSource selectedCard in selectedCards)
-                                    {
-                                        if (selectedCard.CanPlayJogress(true) &&
-                                            selectedCard.CanJogressFromTargetPermanent(card.PermanentOfThisCard(),
-                                                true))
-                                        {
-                                            JogressEvoRootsFrameIDs = Array.Empty<int>();
-
-                                            yield return GManager.instance.photonWaitController.StartWait(
-                                                "Gabumon_BT17_019");
-
-                                            if (card.Owner.isYou || GManager.instance.IsAI)
-                                            {
-                                                GManager.instance.selectJogressEffect.SetUp_SelectDigivolutionRoots
-                                                (card: selectedCard,
-                                                    isLocal: true,
-                                                    isPayCost: true,
-                                                    canNoSelect: true,
-                                                    endSelectCoroutine_SelectDigivolutionRoots:
-                                                    EndSelectCoroutineSelectDigivolutionRoots,
-                                                    noSelectCoroutine: null);
-
-                                                GManager.instance.selectJogressEffect.SetUpCustomPermanentConditions(
-                                                    new Func<Permanent, bool>[]
-                                                        { (permanent) => permanent == card.PermanentOfThisCard() });
-
-                                                yield return ContinuousController.instance.StartCoroutine(
-                                                    GManager.instance.selectJogressEffect.SelectDigivolutionRoots());
-
-                                                IEnumerator EndSelectCoroutineSelectDigivolutionRoots(
-                                                    List<Permanent> permanents)
-                                                {
-                                                    permanents = permanents.Distinct().ToList();
-
-                                                    if (permanents.Count == 2)
-                                                    {
-                                                        JogressEvoRootsFrameIDs = new int[2];
-
-                                                        for (int i = 0; i < permanents.Count; i++)
-                                                        {
-                                                            if (i < JogressEvoRootsFrameIDs.Length)
-                                                            {
-                                                                JogressEvoRootsFrameIDs[i] =
-                                                                    permanents[i].PermanentFrame.FrameID;
-                                                            }
-                                                        }
-                                                    }
-
-                                                    if (!permanents.Contains(card.PermanentOfThisCard()))
-                                                    {
-                                                        JogressEvoRootsFrameIDs = Array.Empty<int>();
-                                                    }
-
-                                                    yield return null;
-                                                }
-
-                                                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;
-
-                                            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);
-
-                                                yield return ContinuousController.instance.StartCoroutine(
-                                                    playCard.PlayCard());
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
+                        yield return ContinuousController.instance.StartCoroutine(
+                              CardEffectCommons.DNADigivolvePermanentsIntoHandOrTrashCard(
+                                  CanSelectCardCondition,
+                                  payCost: true,
+                                  isHand: true,
+                                  activateClass,
+                                  permanentConditions: new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() }
+                              ));
                     }
                 }
             }
@@ -322,19 +192,5 @@ namespace DCGO.CardEffects.BT17
 
             return cardEffects;
         }
-
-        #region Photon DNA ESS
-
-        bool endSelect;
-        int[] JogressEvoRootsFrameIDs = Array.Empty<int>();
-
-        [PunRPC]
-        public void SetJogressEvoRootsFrameIDs(int[] jogressEvoRootsFrameIDs)
-        {
-            this.JogressEvoRootsFrameIDs = jogressEvoRootsFrameIDs;
-            endSelect = true;
-        }
-
-        #endregion
     }
 }

+ 8 - 152
Assets/Scripts/CardEffect/BT17/Red/BT17_007.cs

@@ -219,144 +219,14 @@ namespace DCGO.CardEffects.BT17
                 {
                     if (isExistOnField(card))
                     {
-                        if (card.Owner.GetBattleAreaDigimons().Contains(card.PermanentOfThisCard()))
-                        {
-                            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 DNA digivolve.",
-                                    "The opponent is selecting 1 card to DNA digivolve.");
-                                selectHandEffect.SetNotShowCard();
-
-                                yield return StartCoroutine(selectHandEffect.Activate());
-
-                                IEnumerator SelectCardCoroutine(CardSource cardSource)
-                                {
-                                    selectedCards.Add(cardSource);
-
-                                    yield return null;
-                                }
-
-                                if (selectedCards.Count >= 1)
-                                {
-                                    foreach (CardSource selectedCard in selectedCards)
-                                    {
-                                        if (selectedCard.CanPlayJogress(true) &&
-                                            selectedCard.CanJogressFromTargetPermanent(card.PermanentOfThisCard(),
-                                                true))
-                                        {
-                                            JogressEvoRootsFrameIDs = Array.Empty<int>();
-
-                                            yield return GManager.instance.photonWaitController.StartWait(
-                                                "Agumon_BT17_007");
-
-                                            if (card.Owner.isYou || GManager.instance.IsAI)
-                                            {
-                                                GManager.instance.selectJogressEffect.SetUp_SelectDigivolutionRoots
-                                                (card: selectedCard,
-                                                    isLocal: true,
-                                                    isPayCost: true,
-                                                    canNoSelect: true,
-                                                    endSelectCoroutine_SelectDigivolutionRoots:
-                                                    EndSelectCoroutineSelectDigivolutionRoots,
-                                                    noSelectCoroutine: null);
-
-                                                GManager.instance.selectJogressEffect.SetUpCustomPermanentConditions(
-                                                    new Func<Permanent, bool>[]
-                                                        { (permanent) => permanent == card.PermanentOfThisCard() });
-
-                                                yield return ContinuousController.instance.StartCoroutine(
-                                                    GManager.instance.selectJogressEffect.SelectDigivolutionRoots());
-
-                                                IEnumerator EndSelectCoroutineSelectDigivolutionRoots(
-                                                    List<Permanent> permanents)
-                                                {
-                                                    permanents = permanents.Distinct().ToList();
-
-                                                    if (permanents.Count == 2)
-                                                    {
-                                                        JogressEvoRootsFrameIDs = new int[2];
-
-                                                        for (int i = 0; i < permanents.Count; i++)
-                                                        {
-                                                            if (i < JogressEvoRootsFrameIDs.Length)
-                                                            {
-                                                                JogressEvoRootsFrameIDs[i] =
-                                                                    permanents[i].PermanentFrame.FrameID;
-                                                            }
-                                                        }
-                                                    }
-
-                                                    if (!permanents.Contains(card.PermanentOfThisCard()))
-                                                    {
-                                                        JogressEvoRootsFrameIDs = Array.Empty<int>();
-                                                    }
-
-                                                    yield return null;
-                                                }
-
-                                                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;
-
-                                            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);
-
-                                                yield return ContinuousController.instance.StartCoroutine(
-                                                    playCard.PlayCard());
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
+                        yield return ContinuousController.instance.StartCoroutine(
+                                             CardEffectCommons.DNADigivolvePermanentsIntoHandOrTrashCard(
+                                                 CanSelectCardCondition,
+                                                 payCost: true,
+                                                 isHand: true,
+                                                 activateClass,
+                                                 permanentConditions: new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() }
+                                             ));
                     }
                 }
             }
@@ -365,19 +235,5 @@ namespace DCGO.CardEffects.BT17
 
             return cardEffects;
         }
-
-        #region Photon DNA ESS
-
-        bool endSelect;
-        int[] JogressEvoRootsFrameIDs = Array.Empty<int>();
-
-        [PunRPC]
-        public void SetJogressEvoRootsFrameIDs(int[] jogressEvoRootsFrameIDs)
-        {
-            this.JogressEvoRootsFrameIDs = jogressEvoRootsFrameIDs;
-            endSelect = true;
-        }
-
-        #endregion
     }
 }

+ 8 - 130
Assets/Scripts/CardEffect/BT21/Green/BT21_046.cs

@@ -189,126 +189,14 @@ namespace DCGO.CardEffects.BT21
                 {
                     if (isExistOnField(card))
                     {
-                        if (card.Owner.GetBattleAreaDigimons().Contains(card.PermanentOfThisCard()))
-                        {
-                            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 DNA digivolve.", "The opponent is selecting 1 card to DNA digivolve.");
-                                selectHandEffect.SetNotShowCard();
-
-                                yield return StartCoroutine(selectHandEffect.Activate());
-
-                                IEnumerator SelectCardCoroutine(CardSource cardSource)
-                                {
-                                    selectedCards.Add(cardSource);
-
-                                    yield return null;
-                                }
-
-                                if (selectedCards.Count >= 1)
-                                {
-                                    foreach (CardSource selectedCard in selectedCards)
-                                    {
-                                        if (selectedCard.CanPlayJogress(true) && selectedCard.CanJogressFromTargetPermanent(card.PermanentOfThisCard(), true))
-                                        {
-                                            JogressEvoRootsFrameIDs = new int[0];
-
-                                            yield return GManager.instance.photonWaitController.StartWait("Patamon_BT8_020");
-
-                                            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);
-
-                                                GManager.instance.selectJogressEffect.SetUpCustomPermanentConditions(new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() });
-
-                                                yield return ContinuousController.instance.StartCoroutine(GManager.instance.selectJogressEffect.SelectDigivolutionRoots());
-
-                                                IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
-                                                {
-                                                    permanents = permanents.Distinct().ToList();
-
-                                                    if (permanents.Count == 2)
-                                                    {
-                                                        JogressEvoRootsFrameIDs = new int[2];
-
-                                                        for (int i = 0; i < permanents.Count; i++)
-                                                        {
-                                                            if (i < JogressEvoRootsFrameIDs.Length)
-                                                            {
-                                                                JogressEvoRootsFrameIDs[i] = permanents[i].PermanentFrame.FrameID;
-                                                            }
-                                                        }
-                                                    }
-
-                                                    if (!permanents.Contains(card.PermanentOfThisCard()))
-                                                    {
-                                                        JogressEvoRootsFrameIDs = new int[0];
-                                                    }
-
-                                                    yield return null;
-                                                }
-
-                                                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;
-
-                                            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);
-
-                                                yield return ContinuousController.instance.StartCoroutine(playCard.PlayCard());
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
+                        yield return ContinuousController.instance.StartCoroutine(
+                                             CardEffectCommons.DNADigivolvePermanentsIntoHandOrTrashCard(
+                                                 CanSelectCardCondition,
+                                                 payCost: true,
+                                                 isHand: true,
+                                                 activateClass,
+                                                 permanentConditions: new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() }
+                                             ));
                     }
                 }
             }
@@ -316,15 +204,5 @@ namespace DCGO.CardEffects.BT21
 
             return cardEffects;
         }
-
-        bool endSelect = false;
-        int[] JogressEvoRootsFrameIDs = new int[0];
-
-        [PunRPC]
-        public void SetJogressEvoRootsFrameIDs(int[] JogressEvoRootsFrameIDs)
-        {
-            this.JogressEvoRootsFrameIDs = JogressEvoRootsFrameIDs;
-            endSelect = true;
-        }
     }
 }

+ 8 - 134
Assets/Scripts/CardEffect/BT22/Blue/BT22_017.cs

@@ -168,126 +168,14 @@ namespace DCGO.CardEffects.BT22
                 {
                     if (isExistOnField(card))
                     {
-                        if (card.Owner.GetBattleAreaDigimons().Contains(card.PermanentOfThisCard()))
-                        {
-                            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 DNA digivolve.", "The opponent is selecting 1 card to DNA digivolve.");
-                                selectHandEffect.SetNotShowCard();
-
-                                yield return StartCoroutine(selectHandEffect.Activate());
-
-                                IEnumerator SelectCardCoroutine(CardSource cardSource)
-                                {
-                                    selectedCards.Add(cardSource);
-
-                                    yield return null;
-                                }
-
-                                if (selectedCards.Count >= 1)
-                                {
-                                    foreach (CardSource selectedCard in selectedCards)
-                                    {
-                                        if (selectedCard.CanPlayJogress(true) && selectedCard.CanJogressFromTargetPermanent(card.PermanentOfThisCard(), true))
-                                        {
-                                            JogressEvoRootsFrameIDs = new int[0];
-
-                                            yield return GManager.instance.photonWaitController.StartWait("Gabumon_BT22_017");
-
-                                            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);
-
-                                                GManager.instance.selectJogressEffect.SetUpCustomPermanentConditions(new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() });
-
-                                                yield return ContinuousController.instance.StartCoroutine(GManager.instance.selectJogressEffect.SelectDigivolutionRoots());
-
-                                                IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
-                                                {
-                                                    permanents = permanents.Distinct().ToList();
-
-                                                    if (permanents.Count == 2)
-                                                    {
-                                                        JogressEvoRootsFrameIDs = new int[2];
-
-                                                        for (int i = 0; i < permanents.Count; i++)
-                                                        {
-                                                            if (i < JogressEvoRootsFrameIDs.Length)
-                                                            {
-                                                                JogressEvoRootsFrameIDs[i] = permanents[i].PermanentFrame.FrameID;
-                                                            }
-                                                        }
-                                                    }
-
-                                                    if (!permanents.Contains(card.PermanentOfThisCard()))
-                                                    {
-                                                        JogressEvoRootsFrameIDs = new int[0];
-                                                    }
-
-                                                    yield return null;
-                                                }
-
-                                                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;
-
-                                            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);
-
-                                                yield return ContinuousController.instance.StartCoroutine(playCard.PlayCard());
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
+                        yield return ContinuousController.instance.StartCoroutine(
+                                            CardEffectCommons.DNADigivolvePermanentsIntoHandOrTrashCard(
+                                                CanSelectCardCondition,
+                                                payCost: true,
+                                                isHand: true,
+                                                activateClass,
+                                                permanentConditions: new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() }
+                                            ));
                     }
                 }
             }
@@ -296,19 +184,5 @@ namespace DCGO.CardEffects.BT22
 
             return cardEffects;
         }
-
-        #region DNA Required
-
-        bool endSelect = false;
-        int[] JogressEvoRootsFrameIDs = new int[0];
-
-        [PunRPC]
-        public void SetJogressEvoRootsFrameIDs(int[] JogressEvoRootsFrameIDs)
-        {
-            this.JogressEvoRootsFrameIDs = JogressEvoRootsFrameIDs;
-            endSelect = true;
-        }
-
-        #endregion
     }
 }

+ 8 - 134
Assets/Scripts/CardEffect/BT22/Red/BT22_008.cs

@@ -172,126 +172,14 @@ namespace DCGO.CardEffects.BT22
                 {
                     if (isExistOnField(card))
                     {
-                        if (card.Owner.GetBattleAreaDigimons().Contains(card.PermanentOfThisCard()))
-                        {
-                            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 DNA digivolve.", "The opponent is selecting 1 card to DNA digivolve.");
-                                selectHandEffect.SetNotShowCard();
-
-                                yield return StartCoroutine(selectHandEffect.Activate());
-
-                                IEnumerator SelectCardCoroutine(CardSource cardSource)
-                                {
-                                    selectedCards.Add(cardSource);
-
-                                    yield return null;
-                                }
-
-                                if (selectedCards.Count >= 1)
-                                {
-                                    foreach (CardSource selectedCard in selectedCards)
-                                    {
-                                        if (selectedCard.CanPlayJogress(true) && selectedCard.CanJogressFromTargetPermanent(card.PermanentOfThisCard(), true))
-                                        {
-                                            JogressEvoRootsFrameIDs = new int[0];
-
-                                            yield return GManager.instance.photonWaitController.StartWait("Agumon _BT22_008");
-
-                                            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);
-
-                                                GManager.instance.selectJogressEffect.SetUpCustomPermanentConditions(new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() });
-
-                                                yield return ContinuousController.instance.StartCoroutine(GManager.instance.selectJogressEffect.SelectDigivolutionRoots());
-
-                                                IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
-                                                {
-                                                    permanents = permanents.Distinct().ToList();
-
-                                                    if (permanents.Count == 2)
-                                                    {
-                                                        JogressEvoRootsFrameIDs = new int[2];
-
-                                                        for (int i = 0; i < permanents.Count; i++)
-                                                        {
-                                                            if (i < JogressEvoRootsFrameIDs.Length)
-                                                            {
-                                                                JogressEvoRootsFrameIDs[i] = permanents[i].PermanentFrame.FrameID;
-                                                            }
-                                                        }
-                                                    }
-
-                                                    if (!permanents.Contains(card.PermanentOfThisCard()))
-                                                    {
-                                                        JogressEvoRootsFrameIDs = new int[0];
-                                                    }
-
-                                                    yield return null;
-                                                }
-
-                                                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;
-
-                                            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);
-
-                                                yield return ContinuousController.instance.StartCoroutine(playCard.PlayCard());
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
+                        yield return ContinuousController.instance.StartCoroutine(
+                                         CardEffectCommons.DNADigivolvePermanentsIntoHandOrTrashCard(
+                                             CanSelectCardCondition,
+                                             payCost: true,
+                                             isHand: true,
+                                             activateClass,
+                                             permanentConditions: new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() }
+                                         ));
                     }
                 }
             }
@@ -300,19 +188,5 @@ namespace DCGO.CardEffects.BT22
 
             return cardEffects;
         }
-
-        #region DNA Required
-
-        bool endSelect = false;
-        int[] JogressEvoRootsFrameIDs = new int[0];
-
-        [PunRPC]
-        public void SetJogressEvoRootsFrameIDs(int[] JogressEvoRootsFrameIDs)
-        {
-            this.JogressEvoRootsFrameIDs = JogressEvoRootsFrameIDs;
-            endSelect = true;
-        }
-
-        #endregion
     }
 }

+ 9 - 130
Assets/Scripts/CardEffect/BT8/Blue/BT8_020.cs

@@ -75,141 +75,20 @@ public class BT8_020 : CEntity_Effect
 
             IEnumerator ActivateCoroutine(Hashtable _hashtable)
             {
-                if (CardEffectCommons.IsExistOnBattleArea(card))
+                if (isExistOnField(card))
                 {
-                    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 DNA digivolve.", "The opponent is selecting 1 card to DNA digivolve.");
-                        selectHandEffect.SetNotShowCard();
-
-                        yield return StartCoroutine(selectHandEffect.Activate());
-
-                        IEnumerator SelectCardCoroutine(CardSource cardSource)
-                        {
-                            selectedCards.Add(cardSource);
-
-                            yield return null;
-                        }
-
-                        if (selectedCards.Count >= 1)
-                        {
-                            foreach (CardSource selectedCard in selectedCards)
-                            {
-                                if (selectedCard.CanPlayJogress(true) && selectedCard.CanJogressFromTargetPermanent(card.PermanentOfThisCard(), true))
-                                {
-                                    JogressEvoRootsFrameIDs = new int[0];
-
-                                    yield return GManager.instance.photonWaitController.StartWait("Patamon_BT8_020");
-
-                                    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);
-
-                                        GManager.instance.selectJogressEffect.SetUpCustomPermanentConditions(
-                                            new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() });
-
-                                        yield return ContinuousController.instance.StartCoroutine(GManager.instance.selectJogressEffect.SelectDigivolutionRoots());
-
-                                        IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
-                                        {
-                                            permanents = permanents.Distinct().ToList();
-
-                                            if (permanents.Count == 2)
-                                            {
-                                                JogressEvoRootsFrameIDs = new int[2];
-
-                                                for (int i = 0; i < permanents.Count; i++)
-                                                {
-                                                    if (i < JogressEvoRootsFrameIDs.Length)
-                                                    {
-                                                        JogressEvoRootsFrameIDs[i] = permanents[i].PermanentFrame.FrameID;
-                                                    }
-                                                }
-                                            }
-
-                                            if (!permanents.Contains(card.PermanentOfThisCard()))
-                                            {
-                                                JogressEvoRootsFrameIDs = new int[0];
-                                            }
-
-                                            yield return null;
-                                        }
-
-                                        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;
-
-                                    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);
-
-                                        yield return ContinuousController.instance.StartCoroutine(playCard.PlayCard());
-                                    }
-                                }
-                            }
-                        }
-                    }
+                    yield return ContinuousController.instance.StartCoroutine(
+                                     CardEffectCommons.DNADigivolvePermanentsIntoHandOrTrashCard(
+                                         CanSelectCardCondition,
+                                         payCost: true,
+                                         isHand: true,
+                                         activateClass,
+                                         permanentConditions: new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() }
+                                     ));
                 }
             }
         }
 
         return cardEffects;
     }
-
-    bool endSelect = false;
-    int[] JogressEvoRootsFrameIDs = new int[0];
-
-    [PunRPC]
-    public void SetJogressEvoRootsFrameIDs(int[] JogressEvoRootsFrameIDs)
-    {
-        this.JogressEvoRootsFrameIDs = JogressEvoRootsFrameIDs;
-        endSelect = true;
-    }
 }

+ 8 - 131
Assets/Scripts/CardEffect/BT9/Purple/BT9_080.cs

@@ -228,141 +228,18 @@ public class BT9_080 : CEntity_Effect
             {
                 if (isExistOnField(card))
                 {
-                    if (card.Owner.GetBattleAreaDigimons().Contains(card.PermanentOfThisCard()))
-                    {
-                        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 DNA digivolve.", "The opponent is selecting 1 card to DNA digivolve.");
-                            selectHandEffect.SetNotShowCard();
-
-                            yield return StartCoroutine(selectHandEffect.Activate());
-
-                            IEnumerator SelectCardCoroutine(CardSource cardSource)
-                            {
-                                selectedCards.Add(cardSource);
-
-                                yield return null;
-                            }
-
-                            if (selectedCards.Count >= 1)
-                            {
-                                foreach (CardSource selectedCard in selectedCards)
-                                {
-                                    if (selectedCard.CanPlayJogress(true) && selectedCard.CanJogressFromTargetPermanent(card.PermanentOfThisCard(), true))
-                                    {
-                                        JogressEvoRootsFrameIDs = new int[0];
-
-                                        yield return GManager.instance.photonWaitController.StartWait("Patamon_BT8_020");
-
-                                        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);
-
-                                            GManager.instance.selectJogressEffect.SetUpCustomPermanentConditions(new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() });
-
-                                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.selectJogressEffect.SelectDigivolutionRoots());
-
-                                            IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
-                                            {
-                                                permanents = permanents.Distinct().ToList();
-
-                                                if (permanents.Count == 2)
-                                                {
-                                                    JogressEvoRootsFrameIDs = new int[2];
-
-                                                    for (int i = 0; i < permanents.Count; i++)
-                                                    {
-                                                        if (i < JogressEvoRootsFrameIDs.Length)
-                                                        {
-                                                            JogressEvoRootsFrameIDs[i] = permanents[i].PermanentFrame.FrameID;
-                                                        }
-                                                    }
-                                                }
-
-                                                if (!permanents.Contains(card.PermanentOfThisCard()))
-                                                {
-                                                    JogressEvoRootsFrameIDs = new int[0];
-                                                }
-
-                                                yield return null;
-                                            }
-
-                                            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;
-
-                                        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);
-
-                                            yield return ContinuousController.instance.StartCoroutine(playCard.PlayCard());
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
+                    yield return ContinuousController.instance.StartCoroutine(
+                                        CardEffectCommons.DNADigivolvePermanentsIntoHandOrTrashCard(
+                                            CanSelectCardCondition,
+                                            payCost: true,
+                                            isHand: true,
+                                            activateClass,
+                                            permanentConditions: new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() }
+                                        ));
                 }
             }
         }
 
         return cardEffects;
     }
-
-    bool endSelect = false;
-    int[] JogressEvoRootsFrameIDs = new int[0];
-
-    [PunRPC]
-    public void SetJogressEvoRootsFrameIDs(int[] JogressEvoRootsFrameIDs)
-    {
-        this.JogressEvoRootsFrameIDs = JogressEvoRootsFrameIDs;
-        endSelect = true;
-    }
 }

+ 8 - 131
Assets/Scripts/CardEffect/EX3/Blue/EX3_020.cs

@@ -161,127 +161,14 @@ namespace DCGO.CardEffects.EX3
                 {
                     if (isExistOnField(card))
                     {
-                        if (card.Owner.GetBattleAreaDigimons().Contains(card.PermanentOfThisCard()))
-                        {
-                            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 DNA digivolve.", "The opponent is selecting 1 card to DNA digivolve.");
-                                selectHandEffect.SetNotShowCard();
-
-                                yield return StartCoroutine(selectHandEffect.Activate());
-
-                                IEnumerator SelectCardCoroutine(CardSource cardSource)
-                                {
-                                    selectedCards.Add(cardSource);
-
-                                    yield return null;
-                                }
-
-                                if (selectedCards.Count >= 1)
-                                {
-                                    foreach (CardSource selectedCard in selectedCards)
-                                    {
-                                        if (selectedCard.CanPlayJogress(true) && selectedCard.CanJogressFromTargetPermanent(card.PermanentOfThisCard(), true))
-                                        {
-                                            JogressEvoRootsFrameIDs = new int[0];
-
-                                            yield return GManager.instance.photonWaitController.StartWait("Wingdramon_EX3_020");
-
-                                            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);
-
-                                                GManager.instance.selectJogressEffect.SetUpCustomPermanentConditions(new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard(), (permanent) => permanent != card.PermanentOfThisCard() && permanent.TopCard.HasDramonName });
-
-                                                yield return ContinuousController.instance.StartCoroutine(GManager.instance.selectJogressEffect.SelectDigivolutionRoots());
-
-                                                IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
-                                                {
-                                                    permanents = permanents.Distinct().ToList();
-
-                                                    if (permanents.Count == 2)
-                                                    {
-                                                        JogressEvoRootsFrameIDs = new int[2];
-
-                                                        for (int i = 0; i < permanents.Count; i++)
-                                                        {
-                                                            if (i < JogressEvoRootsFrameIDs.Length)
-                                                            {
-                                                                JogressEvoRootsFrameIDs[i] = permanents[i].PermanentFrame.FrameID;
-                                                            }
-                                                        }
-                                                    }
-
-                                                    if (!permanents.Contains(card.PermanentOfThisCard()) || (permanents.Count((permanent) => permanent != card.PermanentOfThisCard() && permanent.TopCard.HasDramonName) == 0))
-                                                    {
-                                                        JogressEvoRootsFrameIDs = new int[0];
-                                                    }
-
-                                                    yield return null;
-                                                }
-
-                                                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;
-
-                                            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);
-
-                                                yield return ContinuousController.instance.StartCoroutine(playCard.PlayCard());
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
+                        yield return ContinuousController.instance.StartCoroutine(
+                                             CardEffectCommons.DNADigivolvePermanentsIntoHandOrTrashCard(
+                                                 CanSelectCardCondition,
+                                                 payCost: true,
+                                                 isHand: true,
+                                                 activateClass,
+                                                 permanentConditions: new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard(), (permanent) => permanent != card.PermanentOfThisCard() && permanent.TopCard.HasDramonName }
+                                             ));
                     }
                 }
             }
@@ -311,15 +198,5 @@ namespace DCGO.CardEffects.EX3
 
             return cardEffects;
         }
-
-        bool endSelect = false;
-        int[] JogressEvoRootsFrameIDs = new int[0];
-
-        [PunRPC]
-        public void SetJogressEvoRootsFrameIDs(int[] JogressEvoRootsFrameIDs)
-        {
-            this.JogressEvoRootsFrameIDs = JogressEvoRootsFrameIDs;
-            endSelect = true;
-        }
     }
 }

+ 8 - 131
Assets/Scripts/CardEffect/EX3/Green/EX3_041.cs

@@ -161,127 +161,14 @@ namespace DCGO.CardEffects.EX3
                 {
                     if (isExistOnField(card))
                     {
-                        if (card.Owner.GetBattleAreaDigimons().Contains(card.PermanentOfThisCard()))
-                        {
-                            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 DNA digivolve.", "The opponent is selecting 1 card to DNA digivolve.");
-                                selectHandEffect.SetNotShowCard();
-
-                                yield return StartCoroutine(selectHandEffect.Activate());
-
-                                IEnumerator SelectCardCoroutine(CardSource cardSource)
-                                {
-                                    selectedCards.Add(cardSource);
-
-                                    yield return null;
-                                }
-
-                                if (selectedCards.Count >= 1)
-                                {
-                                    foreach (CardSource selectedCard in selectedCards)
-                                    {
-                                        if (selectedCard.CanPlayJogress(true) && selectedCard.CanJogressFromTargetPermanent(card.PermanentOfThisCard(), true))
-                                        {
-                                            JogressEvoRootsFrameIDs = new int[0];
-
-                                            yield return GManager.instance.photonWaitController.StartWait("Wingdramon_EX3_020");
-
-                                            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);
-
-                                                GManager.instance.selectJogressEffect.SetUpCustomPermanentConditions(new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard(), (permanent) => permanent != card.PermanentOfThisCard() && permanent.TopCard.HasDramonName });
-
-                                                yield return ContinuousController.instance.StartCoroutine(GManager.instance.selectJogressEffect.SelectDigivolutionRoots());
-
-                                                IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
-                                                {
-                                                    permanents = permanents.Distinct().ToList();
-
-                                                    if (permanents.Count == 2)
-                                                    {
-                                                        JogressEvoRootsFrameIDs = new int[2];
-
-                                                        for (int i = 0; i < permanents.Count; i++)
-                                                        {
-                                                            if (i < JogressEvoRootsFrameIDs.Length)
-                                                            {
-                                                                JogressEvoRootsFrameIDs[i] = permanents[i].PermanentFrame.FrameID;
-                                                            }
-                                                        }
-                                                    }
-
-                                                    if (!permanents.Contains(card.PermanentOfThisCard()) || (permanents.Count((permanent) => permanent != card.PermanentOfThisCard() && permanent.TopCard.HasDramonName) == 0))
-                                                    {
-                                                        JogressEvoRootsFrameIDs = new int[0];
-                                                    }
-
-                                                    yield return null;
-                                                }
-
-                                                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;
-
-                                            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);
-
-                                                yield return ContinuousController.instance.StartCoroutine(playCard.PlayCard());
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
+                        yield return ContinuousController.instance.StartCoroutine(
+                                              CardEffectCommons.DNADigivolvePermanentsIntoHandOrTrashCard(
+                                                  CanSelectCardCondition,
+                                                  payCost: true,
+                                                  isHand: true,
+                                                  activateClass,
+                                                  permanentConditions: new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard(), (permanent) => permanent != card.PermanentOfThisCard() && permanent.TopCard.HasDramonName }
+                                              ));
                     }
                 }
             }
@@ -311,15 +198,5 @@ namespace DCGO.CardEffects.EX3
 
             return cardEffects;
         }
-
-        bool endSelect = false;
-        int[] JogressEvoRootsFrameIDs = new int[0];
-
-        [PunRPC]
-        public void SetJogressEvoRootsFrameIDs(int[] JogressEvoRootsFrameIDs)
-        {
-            this.JogressEvoRootsFrameIDs = JogressEvoRootsFrameIDs;
-            endSelect = true;
-        }
     }
 }

+ 8 - 131
Assets/Scripts/CardEffect/P/Black/P_121.cs

@@ -158,141 +158,18 @@ public class P_121 : CEntity_Effect
             {
                 if (isExistOnField(card))
                 {
-                    if (card.Owner.GetBattleAreaDigimons().Contains(card.PermanentOfThisCard()))
-                    {
-                        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 DNA digivolve.", "The opponent is selecting 1 card to DNA digivolve.");
-                            selectHandEffect.SetNotShowCard();
-
-                            yield return StartCoroutine(selectHandEffect.Activate());
-
-                            IEnumerator SelectCardCoroutine(CardSource cardSource)
-                            {
-                                selectedCards.Add(cardSource);
-
-                                yield return null;
-                            }
-
-                            if (selectedCards.Count >= 1)
-                            {
-                                foreach (CardSource selectedCard in selectedCards)
-                                {
-                                    if (selectedCard.CanPlayJogress(true) && selectedCard.CanJogressFromTargetPermanent(card.PermanentOfThisCard(), true))
-                                    {
-                                        JogressEvoRootsFrameIDs = new int[0];
-
-                                        yield return GManager.instance.photonWaitController.StartWait("Patamon_BT8_020");
-
-                                        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);
-
-                                            GManager.instance.selectJogressEffect.SetUpCustomPermanentConditions(new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() });
-
-                                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.selectJogressEffect.SelectDigivolutionRoots());
-
-                                            IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
-                                            {
-                                                permanents = permanents.Distinct().ToList();
-
-                                                if (permanents.Count == 2)
-                                                {
-                                                    JogressEvoRootsFrameIDs = new int[2];
-
-                                                    for (int i = 0; i < permanents.Count; i++)
-                                                    {
-                                                        if (i < JogressEvoRootsFrameIDs.Length)
-                                                        {
-                                                            JogressEvoRootsFrameIDs[i] = permanents[i].PermanentFrame.FrameID;
-                                                        }
-                                                    }
-                                                }
-
-                                                if (!permanents.Contains(card.PermanentOfThisCard()))
-                                                {
-                                                    JogressEvoRootsFrameIDs = new int[0];
-                                                }
-
-                                                yield return null;
-                                            }
-
-                                            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;
-
-                                        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);
-
-                                            yield return ContinuousController.instance.StartCoroutine(playCard.PlayCard());
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
+                    yield return ContinuousController.instance.StartCoroutine(
+                                         CardEffectCommons.DNADigivolvePermanentsIntoHandOrTrashCard(
+                                             CanSelectCardCondition,
+                                             payCost: true,
+                                             isHand: true,
+                                             activateClass,
+                                             permanentConditions: new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() }
+                                         ));
                 }
             }
         }
 
         return cardEffects;
     }
-
-    bool endSelect = false;
-    int[] JogressEvoRootsFrameIDs = new int[0];
-
-    [PunRPC]
-    public void SetJogressEvoRootsFrameIDs(int[] JogressEvoRootsFrameIDs)
-    {
-        this.JogressEvoRootsFrameIDs = JogressEvoRootsFrameIDs;
-        endSelect = true;
-    }
 }

+ 8 - 131
Assets/Scripts/CardEffect/P/Green/P_118.cs

@@ -158,141 +158,18 @@ public class P_118 : CEntity_Effect
             {
                 if (isExistOnField(card))
                 {
-                    if (card.Owner.GetBattleAreaDigimons().Contains(card.PermanentOfThisCard()))
-                    {
-                        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 DNA digivolve.", "The opponent is selecting 1 card to DNA digivolve.");
-                            selectHandEffect.SetNotShowCard();
-
-                            yield return StartCoroutine(selectHandEffect.Activate());
-
-                            IEnumerator SelectCardCoroutine(CardSource cardSource)
-                            {
-                                selectedCards.Add(cardSource);
-
-                                yield return null;
-                            }
-
-                            if (selectedCards.Count >= 1)
-                            {
-                                foreach (CardSource selectedCard in selectedCards)
-                                {
-                                    if (selectedCard.CanPlayJogress(true) && selectedCard.CanJogressFromTargetPermanent(card.PermanentOfThisCard(), true))
-                                    {
-                                        JogressEvoRootsFrameIDs = new int[0];
-
-                                        yield return GManager.instance.photonWaitController.StartWait("Patamon_BT8_020");
-
-                                        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);
-
-                                            GManager.instance.selectJogressEffect.SetUpCustomPermanentConditions(new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() });
-
-                                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.selectJogressEffect.SelectDigivolutionRoots());
-
-                                            IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
-                                            {
-                                                permanents = permanents.Distinct().ToList();
-
-                                                if (permanents.Count == 2)
-                                                {
-                                                    JogressEvoRootsFrameIDs = new int[2];
-
-                                                    for (int i = 0; i < permanents.Count; i++)
-                                                    {
-                                                        if (i < JogressEvoRootsFrameIDs.Length)
-                                                        {
-                                                            JogressEvoRootsFrameIDs[i] = permanents[i].PermanentFrame.FrameID;
-                                                        }
-                                                    }
-                                                }
-
-                                                if (!permanents.Contains(card.PermanentOfThisCard()))
-                                                {
-                                                    JogressEvoRootsFrameIDs = new int[0];
-                                                }
-
-                                                yield return null;
-                                            }
-
-                                            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;
-
-                                        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);
-
-                                            yield return ContinuousController.instance.StartCoroutine(playCard.PlayCard());
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
+                    yield return ContinuousController.instance.StartCoroutine(
+                                          CardEffectCommons.DNADigivolvePermanentsIntoHandOrTrashCard(
+                                              CanSelectCardCondition,
+                                              payCost: true,
+                                              isHand: true,
+                                              activateClass,
+                                              permanentConditions: new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() }
+                                          ));
                 }
             }
         }
 
         return cardEffects;
     }
-
-    bool endSelect = false;
-    int[] JogressEvoRootsFrameIDs = new int[0];
-
-    [PunRPC]
-    public void SetJogressEvoRootsFrameIDs(int[] JogressEvoRootsFrameIDs)
-    {
-        this.JogressEvoRootsFrameIDs = JogressEvoRootsFrameIDs;
-        endSelect = true;
-    }
 }

+ 8 - 131
Assets/Scripts/CardEffect/P/Red/P_119.cs

@@ -170,141 +170,18 @@ public class P_119 : CEntity_Effect
             {
                 if (isExistOnField(card))
                 {
-                    if (card.Owner.GetBattleAreaDigimons().Contains(card.PermanentOfThisCard()))
-                    {
-                        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 DNA digivolve.", "The opponent is selecting 1 card to DNA digivolve.");
-                            selectHandEffect.SetNotShowCard();
-
-                            yield return StartCoroutine(selectHandEffect.Activate());
-
-                            IEnumerator SelectCardCoroutine(CardSource cardSource)
-                            {
-                                selectedCards.Add(cardSource);
-
-                                yield return null;
-                            }
-
-                            if (selectedCards.Count >= 1)
-                            {
-                                foreach (CardSource selectedCard in selectedCards)
-                                {
-                                    if (selectedCard.CanPlayJogress(true) && selectedCard.CanJogressFromTargetPermanent(card.PermanentOfThisCard(), true))
-                                    {
-                                        JogressEvoRootsFrameIDs = new int[0];
-
-                                        yield return GManager.instance.photonWaitController.StartWait("Patamon_BT8_020");
-
-                                        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);
-
-                                            GManager.instance.selectJogressEffect.SetUpCustomPermanentConditions(new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() });
-
-                                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.selectJogressEffect.SelectDigivolutionRoots());
-
-                                            IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
-                                            {
-                                                permanents = permanents.Distinct().ToList();
-
-                                                if (permanents.Count == 2)
-                                                {
-                                                    JogressEvoRootsFrameIDs = new int[2];
-
-                                                    for (int i = 0; i < permanents.Count; i++)
-                                                    {
-                                                        if (i < JogressEvoRootsFrameIDs.Length)
-                                                        {
-                                                            JogressEvoRootsFrameIDs[i] = permanents[i].PermanentFrame.FrameID;
-                                                        }
-                                                    }
-                                                }
-
-                                                if (!permanents.Contains(card.PermanentOfThisCard()))
-                                                {
-                                                    JogressEvoRootsFrameIDs = new int[0];
-                                                }
-
-                                                yield return null;
-                                            }
-
-                                            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;
-
-                                        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);
-
-                                            yield return ContinuousController.instance.StartCoroutine(playCard.PlayCard());
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
+                    yield return ContinuousController.instance.StartCoroutine(
+                                         CardEffectCommons.DNADigivolvePermanentsIntoHandOrTrashCard(
+                                             CanSelectCardCondition,
+                                             payCost: true,
+                                             isHand: true,
+                                             activateClass,
+                                             permanentConditions: new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() }
+                                         ));
                 }
             }
         }
 
         return cardEffects;
     }
-
-    bool endSelect = false;
-    int[] JogressEvoRootsFrameIDs = new int[0];
-
-    [PunRPC]
-    public void SetJogressEvoRootsFrameIDs(int[] JogressEvoRootsFrameIDs)
-    {
-        this.JogressEvoRootsFrameIDs = JogressEvoRootsFrameIDs;
-        endSelect = true;
-    }
 }

+ 8 - 131
Assets/Scripts/CardEffect/ST10/Yellow/ST10_04.cs

@@ -213,141 +213,18 @@ public class ST10_04 : CEntity_Effect
             {
                 if (isExistOnField(card))
                 {
-                    if (card.Owner.GetBattleAreaDigimons().Contains(card.PermanentOfThisCard()))
-                    {
-                        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 DNA digivolve.", "The opponent is selecting 1 card to DNA digivolve.");
-                            selectHandEffect.SetNotShowCard();
-
-                            yield return StartCoroutine(selectHandEffect.Activate());
-
-                            IEnumerator SelectCardCoroutine(CardSource cardSource)
-                            {
-                                selectedCards.Add(cardSource);
-
-                                yield return null;
-                            }
-
-                            if (selectedCards.Count >= 1)
-                            {
-                                foreach (CardSource selectedCard in selectedCards)
-                                {
-                                    if (selectedCard.CanPlayJogress(true) && selectedCard.CanJogressFromTargetPermanent(card.PermanentOfThisCard(), true))
-                                    {
-                                        JogressEvoRootsFrameIDs = new int[0];
-
-                                        yield return GManager.instance.photonWaitController.StartWait("Patamon_BT8_020");
-
-                                        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);
-
-                                            GManager.instance.selectJogressEffect.SetUpCustomPermanentConditions(new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() });
-
-                                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.selectJogressEffect.SelectDigivolutionRoots());
-
-                                            IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
-                                            {
-                                                permanents = permanents.Distinct().ToList();
-
-                                                if (permanents.Count == 2)
-                                                {
-                                                    JogressEvoRootsFrameIDs = new int[2];
-
-                                                    for (int i = 0; i < permanents.Count; i++)
-                                                    {
-                                                        if (i < JogressEvoRootsFrameIDs.Length)
-                                                        {
-                                                            JogressEvoRootsFrameIDs[i] = permanents[i].PermanentFrame.FrameID;
-                                                        }
-                                                    }
-                                                }
-
-                                                if (!permanents.Contains(card.PermanentOfThisCard()))
-                                                {
-                                                    JogressEvoRootsFrameIDs = new int[0];
-                                                }
-
-                                                yield return null;
-                                            }
-
-                                            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;
-
-                                        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);
-
-                                            yield return ContinuousController.instance.StartCoroutine(playCard.PlayCard());
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
+                    yield return ContinuousController.instance.StartCoroutine(
+                        CardEffectCommons.DNADigivolvePermanentsIntoHandOrTrashCard(
+                            CanSelectCardCondition,
+                            payCost: true,
+                            isHand: true,
+                            activateClass,
+                            permanentConditions: new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() }
+                        ));
                 }
             }
         }
 
         return cardEffects;
     }
-
-    bool endSelect = false;
-    int[] JogressEvoRootsFrameIDs = new int[0];
-
-    [PunRPC]
-    public void SetJogressEvoRootsFrameIDs(int[] JogressEvoRootsFrameIDs)
-    {
-        this.JogressEvoRootsFrameIDs = JogressEvoRootsFrameIDs;
-        endSelect = true;
-    }
 }

+ 8 - 131
Assets/Scripts/CardEffect/ST13/Black/ST13_13.cs

@@ -121,141 +121,18 @@ public class ST13_13 : CEntity_Effect
             {
                 if (isExistOnField(card))
                 {
-                    if (card.Owner.GetBattleAreaDigimons().Contains(card.PermanentOfThisCard()))
-                    {
-                        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 DNA digivolve.", "The opponent is selecting 1 card to DNA digivolve.");
-                            selectHandEffect.SetNotShowCard();
-
-                            yield return StartCoroutine(selectHandEffect.Activate());
-
-                            IEnumerator SelectCardCoroutine(CardSource cardSource)
-                            {
-                                selectedCards.Add(cardSource);
-
-                                yield return null;
-                            }
-
-                            if (selectedCards.Count >= 1)
-                            {
-                                foreach (CardSource selectedCard in selectedCards)
-                                {
-                                    if (selectedCard.CanPlayJogress(true) && selectedCard.CanJogressFromTargetPermanent(card.PermanentOfThisCard(), true))
-                                    {
-                                        JogressEvoRootsFrameIDs = new int[0];
-
-                                        yield return GManager.instance.photonWaitController.StartWait("Patamon_BT8_020");
-
-                                        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);
-
-                                            GManager.instance.selectJogressEffect.SetUpCustomPermanentConditions(new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() });
-
-                                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.selectJogressEffect.SelectDigivolutionRoots());
-
-                                            IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
-                                            {
-                                                permanents = permanents.Distinct().ToList();
-
-                                                if (permanents.Count == 2)
-                                                {
-                                                    JogressEvoRootsFrameIDs = new int[2];
-
-                                                    for (int i = 0; i < permanents.Count; i++)
-                                                    {
-                                                        if (i < JogressEvoRootsFrameIDs.Length)
-                                                        {
-                                                            JogressEvoRootsFrameIDs[i] = permanents[i].PermanentFrame.FrameID;
-                                                        }
-                                                    }
-                                                }
-
-                                                if (!permanents.Contains(card.PermanentOfThisCard()))
-                                                {
-                                                    JogressEvoRootsFrameIDs = new int[0];
-                                                }
-
-                                                yield return null;
-                                            }
-
-                                            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;
-
-                                        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);
-
-                                            yield return ContinuousController.instance.StartCoroutine(playCard.PlayCard());
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
+                    yield return ContinuousController.instance.StartCoroutine(
+                                         CardEffectCommons.DNADigivolvePermanentsIntoHandOrTrashCard(
+                                             CanSelectCardCondition,
+                                             payCost: true,
+                                             isHand: true,
+                                             activateClass,
+                                             permanentConditions: new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() }
+                                         ));
                 }
             }
         }
 
         return cardEffects;
     }
-
-    bool endSelect = false;
-    int[] JogressEvoRootsFrameIDs = new int[0];
-
-    [PunRPC]
-    public void SetJogressEvoRootsFrameIDs(int[] JogressEvoRootsFrameIDs)
-    {
-        this.JogressEvoRootsFrameIDs = JogressEvoRootsFrameIDs;
-        endSelect = true;
-    }
 }

+ 8 - 131
Assets/Scripts/CardEffect/ST13/Red/ST13_04.cs

@@ -129,141 +129,18 @@ public class ST13_04 : CEntity_Effect
             {
                 if (isExistOnField(card))
                 {
-                    if (card.Owner.GetBattleAreaDigimons().Contains(card.PermanentOfThisCard()))
-                    {
-                        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 DNA digivolve.", "The opponent is selecting 1 card to DNA digivolve.");
-                            selectHandEffect.SetNotShowCard();
-
-                            yield return StartCoroutine(selectHandEffect.Activate());
-
-                            IEnumerator SelectCardCoroutine(CardSource cardSource)
-                            {
-                                selectedCards.Add(cardSource);
-
-                                yield return null;
-                            }
-
-                            if (selectedCards.Count >= 1)
-                            {
-                                foreach (CardSource selectedCard in selectedCards)
-                                {
-                                    if (selectedCard.CanPlayJogress(true) && selectedCard.CanJogressFromTargetPermanent(card.PermanentOfThisCard(), true))
-                                    {
-                                        JogressEvoRootsFrameIDs = new int[0];
-
-                                        yield return GManager.instance.photonWaitController.StartWait("Patamon_BT8_020");
-
-                                        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);
-
-                                            GManager.instance.selectJogressEffect.SetUpCustomPermanentConditions(new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() });
-
-                                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.selectJogressEffect.SelectDigivolutionRoots());
-
-                                            IEnumerator EndSelectCoroutine_SelectDigivolutionRoots(List<Permanent> permanents)
-                                            {
-                                                permanents = permanents.Distinct().ToList();
-
-                                                if (permanents.Count == 2)
-                                                {
-                                                    JogressEvoRootsFrameIDs = new int[2];
-
-                                                    for (int i = 0; i < permanents.Count; i++)
-                                                    {
-                                                        if (i < JogressEvoRootsFrameIDs.Length)
-                                                        {
-                                                            JogressEvoRootsFrameIDs[i] = permanents[i].PermanentFrame.FrameID;
-                                                        }
-                                                    }
-                                                }
-
-                                                if (!permanents.Contains(card.PermanentOfThisCard()))
-                                                {
-                                                    JogressEvoRootsFrameIDs = new int[0];
-                                                }
-
-                                                yield return null;
-                                            }
-
-                                            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;
-
-                                        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);
-
-                                            yield return ContinuousController.instance.StartCoroutine(playCard.PlayCard());
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
+                    yield return ContinuousController.instance.StartCoroutine(
+                                          CardEffectCommons.DNADigivolvePermanentsIntoHandOrTrashCard(
+                                              CanSelectCardCondition,
+                                              payCost: true,
+                                              isHand: true,
+                                              activateClass,
+                                              permanentConditions: new Func<Permanent, bool>[] { (permanent) => permanent == card.PermanentOfThisCard() }
+                                          ));
                 }
             }
         }
 
         return cardEffects;
     }
-
-    bool endSelect = false;
-    int[] JogressEvoRootsFrameIDs = new int[0];
-
-    [PunRPC]
-    public void SetJogressEvoRootsFrameIDs(int[] JogressEvoRootsFrameIDs)
-    {
-        this.JogressEvoRootsFrameIDs = JogressEvoRootsFrameIDs;
-        endSelect = true;
-    }
 }