Explorar el Código

Implement BT25-097 and allow limiting AddSkillClasses

hooperk hace 4 meses
padre
commit
d044e78013

+ 1 - 1
Assets/Scripts/CardEffect/BT25/Yellow/BT25_097.cs

@@ -67,7 +67,7 @@ namespace DCGO.CardEffects.BT25
 
                 AddSkillClass addSkillClass = new AddSkillClass();
                 addSkillClass.SetUpICardEffect("Your Digimon gain Scapegoat", CanUseCondition, card);
-                addSkillClass.SetUpAddSkillClass(cardSourceCondition: CardSourceCondition, getEffects: GetEffects);
+                addSkillClass.SetUpAddSkillClass(cardSourceCondition: CardSourceCondition, getEffects: GetEffects, limitTiming: EffectTiming.WhenPermanentWouldBeDeleted);
                 cardEffects.Add(addSkillClass);
 
                 bool HasOXII(Permanent permanent)

+ 4 - 4
Assets/Scripts/Script/CEntity_EffectController.cs

@@ -74,7 +74,7 @@ public class CEntity_EffectController : MonoBehaviour
                                                 continue;
                                             }
 
-                                            if (cardEffect.CanUse(null))
+                                            if (((IAddSkillEffect)cardEffect).ShouldAddEffect(timing) && cardEffect.CanUse(null))
                                             {
                                                 if (!card.CanNotBeAffected(cardEffect))
                                                     GetCardEffects = ((IAddSkillEffect)cardEffect).GetCardEffect(card, GetCardEffects, timing);
@@ -96,7 +96,7 @@ public class CEntity_EffectController : MonoBehaviour
                             {
                                 if (cardEffect is IAddSkillEffect)
                                 {
-                                    if (cardEffect.CanUse(null))
+                                    if (((IAddSkillEffect)cardEffect).ShouldAddEffect(timing) && cardEffect.CanUse(null))
                                     {
                                         GetCardEffects = ((IAddSkillEffect)cardEffect).GetCardEffect(card, GetCardEffects, timing);
                                     }
@@ -110,7 +110,7 @@ public class CEntity_EffectController : MonoBehaviour
                         {
                             if (cardEffect is IAddSkillEffect)
                             {
-                                if (cardEffect.CanUse(null))
+                                if (((IAddSkillEffect)cardEffect).ShouldAddEffect(timing) && cardEffect.CanUse(null))
                                 {
                                     GetCardEffects = ((IAddSkillEffect)cardEffect).GetCardEffect(card, GetCardEffects, timing);
                                 }
@@ -156,7 +156,7 @@ public class CEntity_EffectController : MonoBehaviour
                     {
                         if (cardEffect is IAddSkillEffect)
                         {
-                            if (cardEffect.CanUse(null))
+                            if (((IAddSkillEffect)cardEffect).ShouldAddEffect(timing) && cardEffect.CanUse(null))
                             {
                                 GetCardEffects = ((IAddSkillEffect)cardEffect).GetCardEffect(card, GetCardEffects, timing);
                             }

+ 1 - 0
Assets/Scripts/Script/CardEffectInterfaces.cs

@@ -82,6 +82,7 @@ public interface IChangeBaseCardColorEffect
 #region "Target card gains additional effects" effect
 public interface IAddSkillEffect
 {
+    bool ShouldAddEffect(EffectTiming timing);
     List<ICardEffect> GetCardEffect(CardSource card, List<ICardEffect> GetCardEffects, EffectTiming timing);
 }
 #endregion

+ 11 - 1
Assets/Scripts/Script/CardEffects/AddSkillClass.cs

@@ -7,10 +7,20 @@ public class AddSkillClass : ICardEffect, IAddSkillEffect
 {
     Func<CardSource, bool> _cardSourceCondition = null;
     Func<CardSource, List<ICardEffect>, EffectTiming, List<ICardEffect>> _getEffects = null;
-    public void SetUpAddSkillClass(Func<CardSource, bool> cardSourceCondition, Func<CardSource, List<ICardEffect>, EffectTiming, List<ICardEffect>> getEffects)
+    EffectTiming? _limitedTiming = null;
+    public void SetUpAddSkillClass(Func<CardSource, bool> cardSourceCondition, Func<CardSource, List<ICardEffect>, EffectTiming, List<ICardEffect>> getEffects, EffectTiming? limitTiming = null)
     {
         _cardSourceCondition = cardSourceCondition;
         _getEffects = getEffects;
+        _limitedTiming = limitTiming;
+    }
+
+    public bool ShouldAddEffect(EffectTiming timing)
+    {
+        if (_limitedTiming == null)
+            return true;
+
+        return timing == _limitedTiming;
     }
     public List<ICardEffect> GetCardEffect(CardSource card, List<ICardEffect> getCardEffect, EffectTiming timing)
     {