瀏覽代碼

BT22 bug fixes

mbunch_kascope 1 年之前
父節點
當前提交
79433432e0

+ 3 - 2
Assets/CardEffect/BT22/Black/BT22_067.cs

@@ -278,8 +278,9 @@ namespace DCGO.CardEffects.BT22
 
                 bool IsProperCard(CardSource cardSource)
                 {
-                    return card.HasPlayCost && cardSource.BasePlayCostFromEntity <= 4 &&
-                           (cardSource.CardColors.Contains(CardColor.Black) || cardSource.CardColors.Contains(CardColor.Red));
+                    return cardSource.HasPlayCost && cardSource.BasePlayCostFromEntity <= 4 &&
+                           (cardSource.CardColors.Contains(CardColor.Black) || cardSource.CardColors.Contains(CardColor.Red)) &&
+                           CardEffectCommons.CanPlayAsNewPermanent(cardSource,false,activateClass,SelectCardEffect.Root.Library);
                 }
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)

+ 1 - 1
Assets/CardEffect/BT22/Purple/BT22_074.cs

@@ -48,7 +48,7 @@ namespace DCGO.CardEffects.BT22
 
                 bool CanUseCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.IsExistOnField(card) && CardEffectCommons.IsOwnerTurn(card);
+                    return CardEffectCommons.IsExistOnBattleAreaDigimon(card) && CardEffectCommons.IsOwnerTurn(card);
                 }
 
                 bool CanSelectPermamentCondition(Permanent permanent)

+ 1 - 1
Assets/CardEffect/BT22/Purple/BT22_075.cs

@@ -442,7 +442,7 @@ namespace DCGO.CardEffects.BT22
 
                     if (playCard)
                     {
-                        card.PermanentOfThisCard().RemoveLinkedCard(playCard,trashCard:false);
+                        yield return ContinuousController.instance.StartCoroutine(card.PermanentOfThisCard().RemoveLinkedCard(playCard, trashCard: false));
 
                         yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlayPermanentCards(
                             cardSources: new List<CardSource> { playCard },

+ 1 - 1
Assets/CardEffect/BT22/Purple/BT22_078.cs

@@ -104,7 +104,7 @@ namespace DCGO.CardEffects.BT22
             #endregion
 
             #region When Attacking - OPT
-            if (timing == EffectTiming.None)
+            if (timing == EffectTiming.OnAllyAttack)
             {
                 ActivateClass activateClass = new ActivateClass();
                 activateClass.SetUpICardEffect("Delete 1 Digimon with lowest level", CanUseCondition, card);

+ 2 - 7
Assets/CardEffect/BT22/White/BT22_093.cs

@@ -80,17 +80,12 @@ namespace DCGO.CardEffects.BT22
 
                 bool CanUseCondition(Hashtable hashtable)
                 {
-                    return CardEffectCommons.CanTriggerWhenPermanentDigivolving(hashtable, DigivolvingCondition);
+                    return CardEffectCommons.IsExistOnField(card) &&
+                           CardEffectCommons.CanTriggerWhenPermanentDigivolving(hashtable, DigivolvingCondition);
                 }
 
                 bool CanActivateCondition(Hashtable hashtable)
                 {
-                    if (DigivolvingDigimon != null)
-                    {
-                        if (!DigivolvingCondition(DigivolvingDigimon))
-                            return false;
-                    }
-
                     return CardEffectCommons.IsExistOnField(card)
                         && CardEffectCommons.IsOwnerTurn(card)
                         && CardEffectCommons.CanActivateSuspendCostEffect(card);

+ 59 - 13
Assets/CardEffect/BT22/Yellow/BT22_041.cs

@@ -28,26 +28,72 @@ namespace DCGO.CardEffects.BT22
 
             #endregion
 
-            #region Reduce Cost
+            #region Play Cost Reduction
 
-            if (timing == EffectTiming.BeforePayCost)
+            if (timing == EffectTiming.None)
             {
                 int securityCount = card.Owner.SecurityCards.Count + card.Owner.Enemy.SecurityCards.Count;
 
-                bool Condition()
+                ChangeCostClass changeCostClass = new ChangeCostClass();
+                changeCostClass.SetUpICardEffect($"Play Cost -6", CanUseCondition, card);
+                changeCostClass.SetUpChangeCostClass(changeCostFunc: ChangeCost,
+                    cardSourceCondition: CardSourceCondition, rootCondition: RootCondition, isUpDown: IsUpDown,
+                    isCheckAvailability: () => false, isChangePayingCost: () => true);
+
+                cardEffects.Add(changeCostClass);
+
+                bool CanUseCondition(Hashtable hashtable)
+                {
+                    return CardEffectCommons.IsExistOnHand(card) &&
+                           securityCount <= 6;
+                }
+
+                int ChangeCost(CardSource cardSource, int cost, SelectCardEffect.Root root,
+                    List<Permanent> targetPermanents)
+                {
+                    if (CardSourceCondition(cardSource))
+                    {
+                        if (RootCondition(root))
+                        {
+                            if (PermanentsCondition(targetPermanents))
+                            {
+                                cost -= 6;
+                            }
+                        }
+                    }
+
+                    return cost;
+                }
+
+                bool PermanentsCondition(List<Permanent> targetPermanents)
                 {
-                    return !CardEffectCommons.IsExistOnBattleAreaDigimon(card)
-                        && securityCount <= 6;
+                    if (targetPermanents == null)
+                    {
+                        return true;
+                    }
+
+                    if (targetPermanents.Count((targetPermanent) => targetPermanent != null) == 0)
+                    {
+                        return true;
+                    }
+
+                    return false;
                 }
 
-                cardEffects.Add(
-                    CardEffectFactory.ChangePlayCostStaticEffect(
-                        changeValue: -6,
-                        permanentCondition: null,
-                        isInheritedEffect: false,
-                        card: card,
-                        condition: Condition,
-                        setFixedCost: false));
+                bool CardSourceCondition(CardSource cardSource)
+                {
+                    return cardSource == card;
+                }
+
+                bool RootCondition(SelectCardEffect.Root root)
+                {
+                    return true;
+                }
+
+                bool IsUpDown()
+                {
+                    return true;
+                }
             }
 
             #endregion

+ 5 - 16
Assets/CardEffect/P/Purple/P_027.cs

@@ -14,7 +14,7 @@ public class P_027 : CEntity_Effect
         if (timing == EffectTiming.OnDeclaration)
         {
             ActivateClass activateClass = new ActivateClass();
-            activateClass.SetUpICardEffect("Play 1 Option from hand", CanUseCondition, card);
+            activateClass.SetUpICardEffect("Use 1 Option from hand", CanUseCondition, card);
             activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
             cardEffects.Add(activateClass);
 
@@ -25,21 +25,10 @@ public class P_027 : CEntity_Effect
 
             bool CanSelectCardCondition(CardSource cardSource)
             {
-                if (cardSource.IsOption)
-                {
-                    if (cardSource.HasUseCost)
-                    {
-                        if (cardSource.GetCostItself <= 7)
-                        {
-                            if (!cardSource.CanNotPlayThisOption)
-                            {
-                                return true;
-                            }
-                        }
-                    }
-                }
-
-                return false;
+                return cardSource.IsOption &&
+                       cardSource.CardColors.Contains(CardColor.Purple) &&
+                       cardSource.HasUseCost && cardSource.GetCostItself <= 7 &&
+                       !cardSource.CanNotPlayThisOption;
             }
 
             bool CanUseCondition(Hashtable hashtable)

+ 2 - 1
Assets/Scripts/Permanent.cs

@@ -1105,9 +1105,10 @@ public class Permanent
             LinkedDP -= cardSource.LinkDP;
             LinkedCards.Remove(cardSource);
 
+            yield return ContinuousController.instance.StartCoroutine(RemoveCardSource(cardSource));
+
             if (trashCard)
             {
-                yield return ContinuousController.instance.StartCoroutine(RemoveCardSource(cardSource));
                 yield return ContinuousController.instance.StartCoroutine(CardObjectController.AddTrashCard(cardSource));
             }        
         }