Quellcode durchsuchen

Lewis 0-30 bug Fixes

Lewisaaronwelch vor 11 Monaten
Ursprung
Commit
7369055548

+ 1 - 1
Assets/CardBaseEntity/EX10/Black/Digimon/EX10_030.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:217faf64e3af6b3756ac6637e0a33f0dfc61e9edf647a422816d3cecf7b2986f
+oid sha256:1a994a7c7a75a1cefbc87bb6dc97d952d130b80f4cbf6703677198ce72c2a3ca
 size 1731

+ 33 - 17
Assets/CardEffect/EX10/Black/EX10_029.cs

@@ -12,6 +12,29 @@ namespace DCGO.CardEffects.EX10
         {
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
+            #region Secuity
+
+            if (timing == EffectTiming.SecuritySkill)
+            {
+                cardEffects.Add(CardEffectFactory.PlaySelfDigimonAfterBattleSecurityEffect(card: card));
+            }
+
+            #endregion
+
+            #region Alternative Digivolution Condition
+
+            if (timing == EffectTiming.None)
+            {
+                bool PermanentCondition(Permanent targetPermanent)
+                {
+                    return targetPermanent.TopCard.HasStandardAppTraits;
+                }
+
+                cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(permanentCondition: PermanentCondition, digivolutionCost: 2, ignoreDigivolutionRequirement: false, card: card, condition: null));
+            }
+
+            #endregion
+
             #region Link Condition
 
             if (timing == EffectTiming.None)
@@ -27,25 +50,16 @@ namespace DCGO.CardEffects.EX10
             #endregion
 
             #region Link
+
             if (timing == EffectTiming.OnDeclaration)
             {
                 cardEffects.Add(CardEffectFactory.LinkEffect(card));
             }
-            #endregion
-
-            #region Alternative Digivolution Condition
-            if (timing == EffectTiming.None)
-            {
-                bool PermanentCondition(Permanent targetPermanent)
-                {
-                    return targetPermanent.TopCard.EqualsTraits("Stnd.");
-                }
 
-                cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(permanentCondition: PermanentCondition, digivolutionCost: 2, ignoreDigivolutionRequirement: false, card: card, condition: null));
-            }
             #endregion
 
             #region Blocker
+
             if (timing == EffectTiming.None)
             {
                 cardEffects.Add(CardEffectFactory.BlockerSelfStaticEffect(
@@ -53,6 +67,7 @@ namespace DCGO.CardEffects.EX10
                     card: card,
                     condition: null));
             }
+
             #endregion
 
             #region When Linked
@@ -159,10 +174,13 @@ namespace DCGO.CardEffects.EX10
                                     yield return null;
                                 }
 
+                                selectPermanentEffect.SetUpCustomMessage("Select 1 Digimon to gain De-digivolve immunity.", "The opponent is selecting 1 Digimon to gain De-digivolve immunity.");
+                                yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
+
                                 if (selectedPermanent != null)
                                 {
                                     #region De-digivolve immunity
-                                    
+
                                     bool CanUseImmunityCondition(Hashtable hashtable1)
                                     {
                                         return selectedPermanent.TopCard != null;
@@ -174,14 +192,12 @@ namespace DCGO.CardEffects.EX10
                                     }
 
                                     ImmuneFromDeDigivolveClass immuneFromDeDigivolveClass = new ImmuneFromDeDigivolveClass();
-                                    immuneFromDeDigivolveClass.SetUpICardEffect("Isn't affected by <De-Digivolve>", CanUseImmunityCondition,
-                                        selectedPermanent.TopCard);
+                                    immuneFromDeDigivolveClass.SetUpICardEffect("Isn't affected by <De-Digivolve>", CanUseImmunityCondition, selectedPermanent.TopCard);
                                     immuneFromDeDigivolveClass.SetUpImmuneFromDeDigivolveClass(PermanentCondition: PermanentImmunityCondition);
-                                    selectedPermanent.UntilOpponentTurnEndEffects.Add(_ => immuneFromDeDigivolveClass);
-                                    
+                                    selectedPermanent.UntilOpponentTurnEndEffects.Add((_timing) => immuneFromDeDigivolveClass);
+
                                     #endregion
                                 }
-                                yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
                             }
                         }
                     }

+ 82 - 80
Assets/CardEffect/EX10/Black/EX10_030.cs

@@ -1,7 +1,6 @@
 using System;
 using System.Collections;
 using System.Collections.Generic;
-using System.Linq;
 
 //EX10 Cometmon
 namespace DCGO.CardEffects.EX10
@@ -12,36 +11,7 @@ namespace DCGO.CardEffects.EX10
         {
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
-
-            #region Link Condition
-
-            if (timing == EffectTiming.None)
-            {
-                static bool PermanentCondition(Permanent targetPermanent)
-                {
-                    return targetPermanent.TopCard.HasAppmonTraits;
-                }
-
-                cardEffects.Add(CardEffectFactory.AddSelfLinkConditionStaticEffect(permanentCondition: PermanentCondition, linkCost: 2, card: card));
-            }
-
-            #endregion
-
-
-            #region Link
-            if (timing == EffectTiming.OnDeclaration)
-            {
-                cardEffects.Add(CardEffectFactory.LinkEffect(card));
-            }
-            #endregion
-
-            #region Collision
-            if (timing == EffectTiming.OnCounterTiming)
-            {
-                cardEffects.Add(CardEffectFactory.CollisionSelfStaticEffect(false, card, null));
-            }
-            #endregion
-
+            #region Static Effects
 
             #region App Fusion (Warpmon, Weatherdramon)
 
@@ -59,17 +29,17 @@ namespace DCGO.CardEffects.EX10
                     {
                         if (source != null && source != card)
                         {
-                            if (permanent.TopCard.EqualsCardName("DoGatchmon"))
+                            if (permanent.TopCard.EqualsCardName("Warpmon"))
                             {
-                                if (permanent.LinkedCards.Find(x => x.EqualsCardName("Timemon")))
+                                if (permanent.LinkedCards.Find(x => x.EqualsCardName("Weatherdramon")))
                                 {
                                     return true;
                                 }
                             }
 
-                            if (permanent.TopCard.EqualsCardName("Timemon"))
+                            if (permanent.TopCard.EqualsCardName("Weatherdramon"))
                             {
-                                if (permanent.LinkedCards.Find(x => x.EqualsCardName("DoGatchmon")))
+                                if (permanent.LinkedCards.Find(x => x.EqualsCardName("Warpmon")))
                                 {
                                     return true;
                                 }
@@ -82,17 +52,17 @@ namespace DCGO.CardEffects.EX10
                     {
                         if (CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card))
                         {
-                            if (permanent.TopCard.EqualsCardName("DoGatchmon"))
+                            if (permanent.TopCard.EqualsCardName("Warpmon"))
                             {
-                                if (permanent.LinkedCards.Find(x => x.EqualsCardName("Timemon")))
+                                if (permanent.LinkedCards.Find(x => x.EqualsCardName("Weatherdramon")))
                                 {
                                     return true;
                                 }
                             }
 
-                            if (permanent.TopCard.EqualsCardName("Timemon"))
+                            if (permanent.TopCard.EqualsCardName("Weatherdramon"))
                             {
-                                if (permanent.LinkedCards.Find(x => x.EqualsCardName("DoGatchmon")))
+                                if (permanent.LinkedCards.Find(x => x.EqualsCardName("Warpmon")))
                                 {
                                     return true;
                                 }
@@ -118,8 +88,56 @@ namespace DCGO.CardEffects.EX10
 
             #endregion
 
+            #region Alternative Digivolution Condition
+
+            if (timing == EffectTiming.None)
+            {
+                bool PermanentCondition(Permanent targetPermanent)
+                {
+                    return targetPermanent.TopCard.HasSuperAppTraits;
+                }
+
+                cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(permanentCondition: PermanentCondition, digivolutionCost: 4, ignoreDigivolutionRequirement: false, card: card, condition: null));
+            }
+
+            #endregion
+
+            #region Link Condition
+
+            if (timing == EffectTiming.None)
+            {
+                static bool PermanentCondition(Permanent targetPermanent)
+                {
+                    return targetPermanent.TopCard.HasAppmonTraits;
+                }
+
+                cardEffects.Add(CardEffectFactory.AddSelfLinkConditionStaticEffect(permanentCondition: PermanentCondition, linkCost: 3, card: card));
+            }
+
+            #endregion
+
+            #region Link
+
+            if (timing == EffectTiming.OnDeclaration)
+            {
+                cardEffects.Add(CardEffectFactory.LinkEffect(card));
+            }
+
+            #endregion
+
+            #region Collision
+
+            if (timing == EffectTiming.OnCounterTiming)
+            {
+                cardEffects.Add(CardEffectFactory.CollisionSelfStaticEffect(false, card, null));
+            }
+
+            #endregion
+
+            #endregion
 
             #region On Play/When Digivolving shared
+
             bool CanActivateConditionShared(Hashtable hashtable)
             {
                 return CardEffectCommons.IsExistOnBattleAreaDigimon(card) &&
@@ -235,6 +253,7 @@ namespace DCGO.CardEffects.EX10
                     }
                 }
             }
+
             #endregion
 
             #region On Play
@@ -262,7 +281,6 @@ namespace DCGO.CardEffects.EX10
                     }
                     return false;
                 }
-
             }
 
             #endregion
@@ -327,7 +345,6 @@ namespace DCGO.CardEffects.EX10
                     return CardEffectCommons.IsPermanentExistsOnOpponentBattleAreaDigimon(permanent, card);
                 }
 
-
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 {
                     Permanent selectedPermament = null;
@@ -372,48 +389,26 @@ namespace DCGO.CardEffects.EX10
 
             #endregion
 
-
             #region Link effect
+
             if (timing == EffectTiming.WhenRemoveField)
             {
-                List<Permanent> removedPermanents = new List<Permanent>();
-
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("Trash a linked card to prevent this digimon from leaving", CanUseCondition, card);
                 activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, 1, true, EffectDescription());
-                activateClass.SetIsLinkedEffect(true);
+                activateClass.SetIsInheritedEffect(true);
                 activateClass.SetHashString("Protection_EX10-030");
                 cardEffects.Add(activateClass);
 
                 string EffectDescription()
                 {
-                    return
-                        "[All Turns] [Once Per Turn] When this Digimon would leave the battle area, by trashing 1 of this Digimon's link cards, it doesn't leave.";
+                    return "[All Turns] [Once Per Turn] When this Digimon would leave the battle area, by trashing 1 of this Digimon's link cards, it doesn't leave.";
                 }
 
                 bool CanUseCondition(Hashtable hashtable)
                 {
                     return CardEffectCommons.IsExistLinked(card) &&
                            CardEffectCommons.CanTriggerWhenRemoveField(hashtable, card);
-
-                }
-
-                bool CanSelectPermanentCondition(Permanent permanent)
-                {
-                    if (permanent == card.PermanentOfThisCard())
-                    {
-                        if (permanent.LinkedCards.Count(CanSelectCardCondition) >= 1)
-                        {
-                            return true;
-                        }
-                    }
-
-                    return false;
-                }
-
-                bool CanSelectCardCondition(CardSource cardSource)
-                {
-                    return true;
                 }
 
                 bool CanActivateCondition(Hashtable hashtable)
@@ -425,41 +420,45 @@ namespace DCGO.CardEffects.EX10
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 {
                     Permanent thisPermanent = card.PermanentOfThisCard();
-                    bool trashed = false;
+                    CardSource selectedCard = null;
 
                     SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
 
                     selectCardEffect.SetUp(
-                                canTargetCondition: CanSelectCardCondition,
+                                canTargetCondition: _ => true,
                                 canTargetCondition_ByPreSelecetedList: null,
                                 canEndSelectCondition: null,
                                 canNoSelect: () => true,
-                                selectCardCoroutine: null,
-                                afterSelectCardCoroutine: SelectCardCoroutine,
+                                selectCardCoroutine: SelectCardCoroutine,
+                                afterSelectCardCoroutine: null,
                                 message: "Select 1 link card to trash.",
                                 maxCount: 1,
                                 canEndNotMax: false,
                                 isShowOpponent: true,
-                                mode: SelectCardEffect.Mode.Discard,
+                                mode: SelectCardEffect.Mode.Custom,
                                 root: SelectCardEffect.Root.Custom,
                                 customRootCardList: card.PermanentOfThisCard().LinkedCards,
                                 canLookReverseCard: true,
                                 selectPlayer: card.Owner,
                                 cardEffect: activateClass);
 
-                    selectCardEffect.SetUpCustomMessage("Select 1 link card to trash.", "The opponent is selecting 1 link card to trash.");
-
-                    yield return StartCoroutine(selectCardEffect.Activate());
-
-                    IEnumerator SelectCardCoroutine(List<CardSource> cardSources)
+                    IEnumerator SelectCardCoroutine(CardSource cardSource)
                     {
-                        if (cardSources.Count > 0)
-                            trashed = true;
-
+                        selectedCard = cardSource;
                         yield return null;
                     }
 
-                    if (trashed)
+                    selectCardEffect.SetUpCustomMessage("Select 1 link card to trash.", "The opponent is selecting 1 link card to trash.");
+                    yield return StartCoroutine(selectCardEffect.Activate());
+
+                    if (selectedCard != null) yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.TrashLinkCardsAndProcessAccordingToResult(
+                        targetPermanent: thisPermanent,
+                        targetLinkCards: new List<CardSource>() { selectedCard },
+                        activateClass: activateClass,
+                        successProcess: SuccessProcess,
+                        failureProcess: null));
+
+                    IEnumerator SuccessProcess(List<CardSource> cardSources)
                     {
                         thisPermanent.willBeRemoveField = false;
 
@@ -467,9 +466,12 @@ namespace DCGO.CardEffects.EX10
                         thisPermanent.HideDeckBounceEffect();
                         thisPermanent.HideWillRemoveFieldEffect();
                         thisPermanent.HideDeleteEffect();
+
+                        yield return null;
                     }
                 }
             }
+
             #endregion
 
             return cardEffects;

+ 34 - 33
Assets/CardEffect/EX10/Blue/EX10_012.cs

@@ -11,7 +11,10 @@ namespace DCGO.CardEffects.EX10
         {
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
+            ActivateClass deleteDigimonActivateClass = null;
+
             #region Hand - Main
+
             if (timing == EffectTiming.OnDeclaration)
             {
                 ActivateClass activateClass = new ActivateClass();
@@ -40,6 +43,7 @@ namespace DCGO.CardEffects.EX10
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 {
                     #region reduce play cost
+
                     if (card.Owner.CanReduceCost(null, card))
                         ContinuousController.instance.PlaySE(GManager.instance.GetComponent<Effects>().BuffSE);
 
@@ -77,7 +81,6 @@ namespace DCGO.CardEffects.EX10
                         {
                             return true;
                         }
-
                         else
                         {
                             if (targetPermanents.Count((targetPermanent) => targetPermanent != null) == 0)
@@ -103,6 +106,7 @@ namespace DCGO.CardEffects.EX10
                     {
                         return true;
                     }
+
                     #endregion
 
                     yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlayPermanentCards(
@@ -114,13 +118,12 @@ namespace DCGO.CardEffects.EX10
                                             activateETB: true));
 
                     #region Delete Digimon Played
+
                     Permanent selectedPermanent = card.PermanentOfThisCard();
 
-                    ActivateClass activateClass1 = new ActivateClass();
-                    activateClass1.SetUpICardEffect("Delete this Digimon", CanUseCondition2, selectedPermanent.TopCard);
-                    activateClass1.SetUpActivateClass(CanActivateCondition1, ActivateCoroutine1, -1, false, EffectDiscription1());
-                    activateClass1.SetEffectSourcePermanent(selectedPermanent);
-                    selectedPermanent.UntilOwnerTurnEndEffects.Add(GetCardEffect);
+                    deleteDigimonActivateClass.SetUpICardEffect("Delete this Digimon", CanUseCondition2, selectedPermanent.TopCard);
+                    deleteDigimonActivateClass.SetUpActivateClass(CanActivateCondition1, ActivateCoroutine1, -1, false, EffectDiscription1());
+                    deleteDigimonActivateClass.SetEffectSourcePermanent(selectedPermanent);
 
                     if (!selectedPermanent.TopCard.CanNotBeAffected(activateClass))
                     {
@@ -134,27 +137,19 @@ namespace DCGO.CardEffects.EX10
 
                     bool CanUseCondition2(Hashtable hashtable1)
                     {
-                        if (CardEffectCommons.IsOpponentTurn(card))
-                        {
-                            if (CardEffectCommons.IsPermanentExistsOnOwnerBattleArea(selectedPermanent, selectedPermanent.TopCard))
-                            {
-                                if (CardEffectCommons.CanTriggerOnEndAttack(hashtable1, selectedPermanent.TopCard))
-                                {
-                                    return true;
-                                }
-                            }
-                        }
-
-                        return false;
+                        return CardEffectCommons.IsPermanentExistsOnOwnerBattleArea(selectedPermanent, selectedPermanent.TopCard);
                     }
 
                     bool CanActivateCondition1(Hashtable hashtable1)
                     {
                         if (CardEffectCommons.IsPermanentExistsOnBattleArea(selectedPermanent))
                         {
-                            if (!selectedPermanent.TopCard.CanNotBeAffected(activateClass))
+                            if (CardEffectCommons.IsOwnerTurn(selectedPermanent.TopCard))
                             {
-                                return true;
+                                if (!selectedPermanent.TopCard.CanNotBeAffected(activateClass))
+                                {
+                                    return true;
+                                }
                             }
                         }
 
@@ -167,22 +162,23 @@ namespace DCGO.CardEffects.EX10
                         {
                             yield return ContinuousController.instance.StartCoroutine(new DestroyPermanentsClass(
                             new List<Permanent>() { selectedPermanent },
-                            CardEffectCommons.CardEffectHashtable(activateClass1)).Destroy());
+                            CardEffectCommons.CardEffectHashtable(deleteDigimonActivateClass)).Destroy());
                         }
                     }
 
-                    ICardEffect GetCardEffect(EffectTiming _timing)
-                    {
-                        if (_timing == EffectTiming.OnEndTurn)
-                        {
-                            return activateClass1;
-                        }
-
-                        return null;
-                    }
                     #endregion
                 }
             }
+
+            #endregion
+
+            #region End of Turn (Only used if Hand - Main was activated)
+
+            if (timing == EffectTiming.OnEndTurn && deleteDigimonActivateClass != null)
+            {
+                cardEffects.Add(deleteDigimonActivateClass);
+            }
+
             #endregion
 
             #region On Play/When Attacking Shared
@@ -429,6 +425,7 @@ namespace DCGO.CardEffects.EX10
             #endregion
 
             #region All Turns
+
             if (timing == EffectTiming.None)
             {
                 bool Condition()
@@ -457,15 +454,16 @@ namespace DCGO.CardEffects.EX10
                 effectName: "[All Turns] This Digimon can only digivolve into [Apocalymon].")
                 );
             }
+
             #endregion
 
             #region On Deletion
+
             if (timing == EffectTiming.OnDestroyedAnyone)
             {
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("Place this Digimon face up as bottom security, add top security to hand", CanUseCondition, card);
                 activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, true, EffectDiscription());
-                activateClass.SetIsInheritedEffect(true);
                 cardEffects.Add(activateClass);
 
                 string EffectDiscription()
@@ -473,7 +471,7 @@ namespace DCGO.CardEffects.EX10
                     return "[On Deletion] If you have no black face-up security cards, place this Digimon face up as the bottom security card.";
                 }
 
-                bool FaceUpGreen(CardSource card)
+                bool FaceUpBlack(CardSource card)
                 {
                     return card.IsFlipped &&
                            card.CardColors.Contains(CardColor.Black);
@@ -482,7 +480,7 @@ namespace DCGO.CardEffects.EX10
                 bool CanUseCondition(Hashtable hashtable)
                 {
                     return CardEffectCommons.CanTriggerOnDeletion(hashtable, card) &&
-                           !CardEffectCommons.HasMatchConditionOwnersSecurity(card, FaceUpGreen);
+                           !CardEffectCommons.HasMatchConditionOwnersSecurity(card, FaceUpBlack);
                 }
 
                 bool CanActivateCondition(Hashtable hashtable)
@@ -495,9 +493,11 @@ namespace DCGO.CardEffects.EX10
                     yield return ContinuousController.instance.StartCoroutine(CardObjectController.AddSecurityCard(card, false, true));
                 }
             }
+
             #endregion
 
             #region Security
+
             if (timing == EffectTiming.SecuritySkill)
             {
                 ActivateClass activateClass = new ActivateClass();
@@ -522,6 +522,7 @@ namespace DCGO.CardEffects.EX10
                     yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.AddThisCardToHand(card, activateClass));
                 }
             }
+
             #endregion
 
             return cardEffects;

+ 108 - 11
Assets/CardEffect/EX10/Green/EX10_019.cs

@@ -11,6 +11,99 @@ namespace DCGO.CardEffects.EX10
         {
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
+            #region Alternative Digivolution Condition
+
+            if (timing == EffectTiming.None)
+            {
+                bool PermanentCondition(Permanent targetPermanent)
+                {
+                    return targetPermanent.TopCard.HasSuperAppTraits;
+                }
+
+                cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(permanentCondition: PermanentCondition, digivolutionCost: 4, ignoreDigivolutionRequirement: false, card: card, condition: null));
+            }
+
+            #endregion
+
+            #region App Fusion (Mienumon & Sakusimon)
+
+            if (timing == EffectTiming.None)
+            {
+                AddAppFusionConditionClass addAppFusionConditionClass = new AddAppFusionConditionClass();
+                addAppFusionConditionClass.SetUpICardEffect($"App Fusion", (hashtable) => true, card);
+                addAppFusionConditionClass.SetUpAddAppFusionConditionClass(getAppFusionCondition: GetAppFusion);
+                addAppFusionConditionClass.SetNotShowUI(true);
+                cardEffects.Add(addAppFusionConditionClass);
+
+                AppFusionCondition GetAppFusion(CardSource cardSource)
+                {
+                    bool linkCondition(Permanent permanent, CardSource source)
+                    {
+                        if (source != null)
+                        {
+                            if (source != card)
+                            {
+                                if (permanent.TopCard.EqualsCardName("Mienumon"))
+                                {
+                                    if (permanent.LinkedCards.Find(x => x.EqualsCardName("Sakusimon")))
+                                    {
+                                        return true;
+                                    }
+                                }
+                                if (permanent.TopCard.EqualsCardName("Sakusimon"))
+                                {
+                                    if (permanent.LinkedCards.Find(x => x.EqualsCardName("Mienumon")))
+                                    {
+                                        return true;
+                                    }
+                                }
+                            }
+
+                            return false;
+                        }
+
+                        return false;
+                    }
+                    bool digimonCondition(Permanent permanent)
+                    {
+                        if (CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card))
+                        {
+                            if (permanent.TopCard.EqualsCardName("Mienumon"))
+                            {
+                                if (permanent.LinkedCards.Find(x => x.EqualsCardName("Sakusimon")))
+                                {
+                                    return true;
+                                }
+                            }
+                            if (permanent.TopCard.EqualsCardName("Sakusimon"))
+                            {
+                                if (permanent.LinkedCards.Find(x => x.EqualsCardName("Mienumon")))
+                                {
+                                    return true;
+                                }
+                            }
+                            return false;
+                        }
+
+                        return false;
+                    }
+
+                    if (cardSource == card)
+                    {
+                        AppFusionCondition AppFusionCondition = new AppFusionCondition(
+                            linkedCondition: linkCondition,
+                            digimonCondition: digimonCondition,
+                            cost: 0);
+
+                        return AppFusionCondition;
+                    }
+
+                    return null;
+                }
+            }
+
+            #endregion
+
             #region Link Condition
 
             if (timing == EffectTiming.None)
@@ -26,20 +119,25 @@ namespace DCGO.CardEffects.EX10
             #endregion
 
             #region Link
+
             if (timing == EffectTiming.OnDeclaration)
             {
                 cardEffects.Add(CardEffectFactory.LinkEffect(card));
             }
+
             #endregion
 
             #region Fortitude
+
             if (timing == EffectTiming.OnDestroyedAnyone)
             {
                 cardEffects.Add(CardEffectFactory.FortitudeSelfEffect(isInheritedEffect: false, card: card, condition: null));
             }
+
             #endregion
 
             #region On Play/When Digivolving shared
+
             bool CanLinkCondition(CardSource cardSource)
             {
                 return cardSource.HasLevel && cardSource.Level <= 4 && cardSource.CanLinkToTargetPermanent(card.PermanentOfThisCard(), false);
@@ -51,9 +149,11 @@ namespace DCGO.CardEffects.EX10
                     (CardEffectCommons.HasMatchConditionOwnersCardInTrash(card, CanLinkCondition) ||
                     card.PermanentOfThisCard().DigivolutionCards.Any(CanLinkCondition));
             }
+
             #endregion
 
             #region On Play
+
             if (timing == EffectTiming.OnEnterFieldAnyone)
             {
                 ActivateClass activateClass = new ActivateClass();
@@ -84,7 +184,6 @@ namespace DCGO.CardEffects.EX10
                             {
                                 new(message: "From trash", value: true, spriteIndex: 0),
                                 new(message: "From sources", value: false, spriteIndex: 1),
-
                             };
 
                             string selectPlayerMessage = "From which area do you select a card?";
@@ -92,7 +191,6 @@ namespace DCGO.CardEffects.EX10
 
                             GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage, notSelectPlayerMessage: notSelectPlayerMessage);
                         }
-
                         else
                         {
                             GManager.instance.userSelectionManager.SetBool(canSelectTrash);
@@ -102,7 +200,6 @@ namespace DCGO.CardEffects.EX10
 
                         bool fromTrash = GManager.instance.userSelectionManager.SelectedBoolValue;
 
-
                         List<CardSource> selectedCards = new List<CardSource>();
 
                         IEnumerator SelectCardCoroutine(CardSource cardSource)
@@ -114,7 +211,6 @@ namespace DCGO.CardEffects.EX10
 
                         if (fromTrash)
                         {
-
                             SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
                             selectCardEffect.SetUp(
                                 canTargetCondition: CanLinkCondition,
@@ -139,7 +235,6 @@ namespace DCGO.CardEffects.EX10
 
                             yield return StartCoroutine(selectCardEffect.Activate());
                         }
-
                         else
                         {
                             SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
@@ -175,9 +270,11 @@ namespace DCGO.CardEffects.EX10
                     }
                 }
             }
+
             #endregion
 
             #region When Digivolving
+
             if (timing == EffectTiming.OnEnterFieldAnyone)
             {
                 ActivateClass activateClass = new ActivateClass();
@@ -208,7 +305,6 @@ namespace DCGO.CardEffects.EX10
                             {
                                 new(message: "From trash", value: true, spriteIndex: 0),
                                 new(message: "From sources", value: false, spriteIndex: 1),
-
                             };
 
                             string selectPlayerMessage = "From which area do you select a card?";
@@ -216,7 +312,6 @@ namespace DCGO.CardEffects.EX10
 
                             GManager.instance.userSelectionManager.SetBoolSelection(selectionElements: selectionElements, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage, notSelectPlayerMessage: notSelectPlayerMessage);
                         }
-
                         else
                         {
                             GManager.instance.userSelectionManager.SetBool(canSelectTrash);
@@ -226,7 +321,6 @@ namespace DCGO.CardEffects.EX10
 
                         bool fromTrash = GManager.instance.userSelectionManager.SelectedBoolValue;
 
-
                         List<CardSource> selectedCards = new List<CardSource>();
 
                         IEnumerator SelectCardCoroutine(CardSource cardSource)
@@ -238,7 +332,6 @@ namespace DCGO.CardEffects.EX10
 
                         if (fromTrash)
                         {
-
                             SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
                             selectCardEffect.SetUp(
                                 canTargetCondition: CanLinkCondition,
@@ -263,7 +356,6 @@ namespace DCGO.CardEffects.EX10
 
                             yield return StartCoroutine(selectCardEffect.Activate());
                         }
-
                         else
                         {
                             SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
@@ -299,9 +391,11 @@ namespace DCGO.CardEffects.EX10
                     }
                 }
             }
+
             #endregion
 
             #region All Turns - OPT
+
             if (timing == EffectTiming.WhenLinked)
             {
                 ActivateClass activateClass = new ActivateClass();
@@ -362,7 +456,7 @@ namespace DCGO.CardEffects.EX10
                             yield return null;
                         }
 
-                        if(selectedPermanent != null)
+                        if (selectedPermanent != null)
                         {
                             bool PermanentCondition(Permanent permanent)
                             {
@@ -379,9 +473,11 @@ namespace DCGO.CardEffects.EX10
                     }
                 }
             }
+
             #endregion
 
             #region Link Effect
+
             if (timing == EffectTiming.OnTappedAnyone)
             {
                 ActivateClass activateClass = new ActivateClass();
@@ -471,6 +567,7 @@ namespace DCGO.CardEffects.EX10
                     }
                 }
             }
+
             #endregion
 
             return cardEffects;

+ 4 - 3
Assets/CardEffect/EX10/Purple/EX10_004.cs

@@ -10,6 +10,7 @@ namespace DCGO.CardEffects.EX10
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
             #region ESS
+
             if (timing == EffectTiming.OnMove)
             {
                 ActivateClass activateClass = new ActivateClass();
@@ -33,14 +34,13 @@ namespace DCGO.CardEffects.EX10
                 bool CanUseCondition(Hashtable hashtable)
                 {
                     return CardEffectCommons.IsExistOnBattleArea(card) &&
-                           CardEffectCommons.IsOpponentTurn(card) &&
+                           CardEffectCommons.IsOwnerTurn(card) &&
                            CardEffectCommons.CanTriggerOnMove(hashtable, PermanentCondition);
                 }
 
                 bool CanActivateCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.IsExistOnBattleArea(card) &&
-                           card.Owner.HandCards.Count > 0;
+                    return CardEffectCommons.IsExistOnBattleArea(card);
                 }
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
@@ -85,6 +85,7 @@ namespace DCGO.CardEffects.EX10
                     }
                 }
             }
+
             #endregion
 
             return cardEffects;

+ 2 - 1
Assets/CardEffect/EX10/Red/EX10_007.cs

@@ -38,7 +38,8 @@ namespace DCGO.CardEffects.EX10
 
             bool CanSelectPermanentCondition(Permanent permanent)
             {
-                return CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card);
+                return CardEffectCommons.IsPermanentExistsOnBattleArea(permanent)
+                    && permanent.IsDigimon;
             }
 
             IEnumerator SharedActivateCoroutine(Hashtable hashtable, ActivateClass activateClass)

+ 1 - 1
Assets/CardEffect/EX10/Red/EX10_008.cs

@@ -49,7 +49,7 @@ namespace DCGO.CardEffects.EX10
 
                     #region Select Permanent
 
-                    int maxCount = Math.Min(1, CardEffectCommons.MatchConditionOwnersPermanentCount(card, CanSelectPermanentCondition));
+                    int maxCount = Math.Min(1, CardEffectCommons.MatchConditionPermanentCount(CanSelectPermanentCondition));
                     SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
 
                     selectPermanentEffect.SetUp(

+ 9 - 5
Assets/CardEffect/EX10/Red/EX10_010.cs

@@ -12,13 +12,16 @@ namespace DCGO.CardEffects.EX10
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
             #region Blast Digivolve
+
             if (timing == EffectTiming.OnCounterTiming)
             {
                 cardEffects.Add(CardEffectFactory.BlastDigivolveEffect(card: card, condition: null));
             }
+
             #endregion
 
             #region Static Effects
+
             //Raid
             if (timing == EffectTiming.OnAllyAttack)
             {
@@ -31,6 +34,7 @@ namespace DCGO.CardEffects.EX10
                 cardEffects.Add(CardEffectFactory.RebootSelfStaticEffect(isInheritedEffect: false, card: card, condition: null));
                 cardEffects.Add(CardEffectFactory.BlockerSelfStaticEffect(isInheritedEffect: false, card: card, condition: null));
             }
+
             #endregion
 
             #region On Play/When Digivolving Shared
@@ -40,12 +44,10 @@ namespace DCGO.CardEffects.EX10
                 return $"[{tag}] Delete 1 of your opponent's play cost 7 or lower Digimon or Tamers.";
             }
 
-
             bool CanSelectPermanentCondition(Permanent permanent)
             {
-                return CardEffectCommons.IsPermanentExistsOnBattleArea(permanent) &&
-                       permanent.TopCard.HasPlayCost && permanent.TopCard.GetCostItself <= 7 &&
-                       (permanent.TopCard.IsDigimon || permanent.TopCard.IsTamer);
+                return (CardEffectCommons.IsPermanentExistsOnOpponentBattleAreaDigimon(permanent, card) || CardEffectCommons.IsPermanentExistsOnOpponentBattleAreaTamer(permanent, card))
+                       && permanent.TopCard.HasPlayCost && permanent.TopCard.GetCostItself <= 7;
             }
 
             bool CanActivateSharedCondition(Hashtable hashtable)
@@ -115,6 +117,7 @@ namespace DCGO.CardEffects.EX10
             #endregion
 
             #region All Turns
+
             if (timing == EffectTiming.OnRemovedField || timing == EffectTiming.OnEnterFieldAnyone || timing == EffectTiming.WhenTopCardTrashed)
             {
                 if (CardEffectCommons.IsExistOnBattleAreaDigimon(card))
@@ -142,8 +145,9 @@ namespace DCGO.CardEffects.EX10
                     {
                         thisPermanent.RemoveBoost("AT_EX10-010");
                     }
-                }                
+                }
             }
+
             #endregion
 
             return cardEffects;

+ 17 - 6
Assets/CardEffect/EX10/Yellow/EX10_014.cs

@@ -11,6 +11,15 @@ namespace DCGO.CardEffects.EX10
         {
             List<ICardEffect> cardEffects = new List<ICardEffect>();
 
+            #region Secuity
+
+            if (timing == EffectTiming.SecuritySkill)
+            {
+                cardEffects.Add(CardEffectFactory.PlaySelfDigimonAfterBattleSecurityEffect(card: card));
+            }
+
+            #endregion
+
             #region Link Condition
 
             if (timing == EffectTiming.None)
@@ -26,6 +35,7 @@ namespace DCGO.CardEffects.EX10
             #endregion
 
             #region Alternative Digivolution Condition
+
             if (timing == EffectTiming.None)
             {
                 bool PermanentCondition(Permanent targetPermanent)
@@ -35,6 +45,7 @@ namespace DCGO.CardEffects.EX10
 
                 cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(permanentCondition: PermanentCondition, digivolutionCost: 2, ignoreDigivolutionRequirement: false, card: card, condition: null));
             }
+
             #endregion
 
             #region On Play
@@ -44,7 +55,6 @@ namespace DCGO.CardEffects.EX10
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("Give 2 of your opponent's Digimon <Security A. -1>", CanUseCondition, card);
                 activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
-                activateClass.SetIsLinkedEffect(true);
                 cardEffects.Add(activateClass);
 
                 string EffectDiscription()
@@ -117,7 +127,6 @@ namespace DCGO.CardEffects.EX10
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("Give 2 of your opponent's Digimon <Security A. -1>", CanUseCondition, card);
                 activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
-                activateClass.SetIsLinkedEffect(true);
                 cardEffects.Add(activateClass);
 
                 string EffectDiscription()
@@ -184,10 +193,12 @@ namespace DCGO.CardEffects.EX10
             #endregion
 
             #region Link
+
             if (timing == EffectTiming.OnDeclaration)
             {
                 cardEffects.Add(CardEffectFactory.LinkEffect(card));
             }
+
             #endregion
 
             #region When Attacking - Linked
@@ -219,7 +230,7 @@ namespace DCGO.CardEffects.EX10
                 bool CanActivateCondition(Hashtable hashtable)
                 {
                     return CardEffectCommons.IsExistOnBattleArea(card)
-                        && card.PermanentOfThisCard().HasNoLinkCards;
+                        && !card.PermanentOfThisCard().HasNoLinkCards;
                 }
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
@@ -304,9 +315,9 @@ namespace DCGO.CardEffects.EX10
 
                             if (selectedPermament != null)
                                 yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.ChangeDigimonDP(
-                                    targetPermanent: selectedPermament, 
-                                    changeValue: -6000, 
-                                    effectDuration: EffectDuration.UntilEachTurnEnd, 
+                                    targetPermanent: selectedPermament,
+                                    changeValue: -6000,
+                                    effectDuration: EffectDuration.UntilEachTurnEnd,
                                     activateClass: activateClass));
                         }
                     }