BT25_004.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. // Tapmon
  6. namespace DCGO.CardEffects.BT25
  7. {
  8. public class BT25_004 : CEntity_Effect
  9. {
  10. public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
  11. {
  12. List<ICardEffect> cardEffects = new List<ICardEffect>();
  13. #region Shared Conditions
  14. bool CardCondition(CardSource cardSource)
  15. {
  16. return cardSource.EqualsTraits("Social")
  17. || cardSource.EqualsTraits("Tool")
  18. || cardSource.EqualsTraits("Game");
  19. }
  20. bool PermanentCondition(Permanent permanent) => permanent == card.PermanentOfThisCard();
  21. bool RootCondition(SelectCardEffect.Root root) => true;
  22. #endregion
  23. #region Reduce Link Cost
  24. if (timing == EffectTiming.WhenWouldLink)
  25. {
  26. ActivateClass activateClass = new ();
  27. activateClass.SetUpICardEffect("May reduce Link cost by 1", CanUseCondition, card);
  28. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, 1, true, EffectDiscription());
  29. activateClass.SetIsInheritedEffect(true);
  30. activateClass.SetHashString("BT25_004_YT");
  31. cardEffects.Add(activateClass);
  32. string EffectDiscription()
  33. {
  34. return "[Your Turn] [Once Per Turn] When a [Social], [Tool] or [Game] trait card would link to this Digimon, you may reduce the cost by 1.";
  35. }
  36. bool CanUseCondition(Hashtable hashtable)
  37. {
  38. return CardEffectCommons.IsExistOnBattleArea(card)
  39. && CardEffectCommons.CanTriggerWhenWouldLink(hashtable, CardCondition, PermanentCondition)
  40. && CardEffectCommons.IsOwnerTurn(card);
  41. }
  42. bool CanActivateCondition(Hashtable hashtable) => CardEffectCommons.IsExistOnBattleArea(card);
  43. IEnumerator ActivateCoroutine(Hashtable hashtable)
  44. {
  45. card.Owner.UntilCalculateFixedCostEffect.Add((timing) => CardEffectFactory.GrantedReduceLinkCostClass(
  46. card: card,
  47. reducedCost: 1,
  48. cardSourceCondition: CardCondition,
  49. permanentCondition: PermanentCondition,
  50. rootCondition: RootCondition
  51. ));
  52. yield return null;
  53. }
  54. }
  55. #endregion
  56. return cardEffects;
  57. }
  58. }
  59. }