BT24_039.cs 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. // Piximon
  4. namespace DCGO.CardEffects.BT24
  5. {
  6. public class BT24_039 : CEntity_Effect
  7. {
  8. public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
  9. {
  10. List<ICardEffect> cardEffects = new List<ICardEffect>();
  11. #region Alternative Digivolution Condition
  12. if (timing == EffectTiming.None)
  13. {
  14. bool PermanentCondition(Permanent targetPermanent)
  15. {
  16. return targetPermanent.TopCard.IsLevel4 &&
  17. targetPermanent.TopCard.HasTSTraits;
  18. }
  19. cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(
  20. permanentCondition: PermanentCondition,
  21. digivolutionCost: 3,
  22. ignoreDigivolutionRequirement: false,
  23. card: card,
  24. condition: null)
  25. );
  26. }
  27. #endregion
  28. bool PermamentCondition(Permanent permanent)
  29. {
  30. return permanent.IsDigimon &&
  31. permanent.TopCard.HasLevel &&
  32. permanent.Level >= 6;
  33. }
  34. #region Ignore Battle
  35. if (timing == EffectTiming.None)
  36. {
  37. DontBattleSecurityDigimonClass dontBattleSecurityDigimonClass = new DontBattleSecurityDigimonClass();
  38. dontBattleSecurityDigimonClass.SetUpICardEffect("Ignore Battle", CanUseCondition, card);
  39. dontBattleSecurityDigimonClass.SetUpDontBattleSecurityDigimonClass(CardSourceCondition: CardSourceCondition);
  40. dontBattleSecurityDigimonClass.SetIsSecurityEffect(true);
  41. dontBattleSecurityDigimonClass.SetNotShowUI(true);
  42. cardEffects.Add(dontBattleSecurityDigimonClass);
  43. bool CanUseCondition(Hashtable hashtable)
  44. {
  45. return CardEffectCommons.CanUseIgnoreBattle(hashtable, card)
  46. && CardEffectCommons.HasMatchConditionOpponentsPermanent(card, PermamentCondition);
  47. }
  48. bool CardSourceCondition(CardSource cardSource)
  49. {
  50. return cardSource == card;
  51. }
  52. }
  53. #endregion
  54. #region Security
  55. if (timing == EffectTiming.SecuritySkill)
  56. {
  57. ActivateClass activateClass = new ActivateClass();
  58. activateClass.SetUpICardEffect("Play this card without battling", CanUseCondition, card);
  59. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDescription());
  60. activateClass.SetIsSecurityEffect(true);
  61. cardEffects.Add(activateClass);
  62. string EffectDescription()
  63. {
  64. return "[Security] If your opponent has a level 6 or higher Digimon, play this card without battling and without paying the cost.";
  65. }
  66. bool CanUseCondition(Hashtable hashtable)
  67. {
  68. return CardEffectCommons.CanTriggerSecurityEffect(hashtable, card);
  69. }
  70. bool CanActivateCondition(Hashtable hashtable)
  71. {
  72. return card.Owner.ExecutingCards.Contains(card) &&
  73. CardEffectCommons.HasMatchConditionOpponentsPermanent(card, PermamentCondition) &&
  74. CardEffectCommons.CanPlayAsNewPermanent(cardSource: card, payCost: false, cardEffect: activateClass);
  75. }
  76. IEnumerator ActivateCoroutine(Hashtable _hashtable)
  77. {
  78. yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlayPermanentCards(cardSources: new List<CardSource>() { card }, activateClass: activateClass, payCost: false, isTapped: false, root: SelectCardEffect.Root.Execution, activateETB: true));
  79. }
  80. }
  81. #endregion
  82. #region Blocker
  83. if (timing == EffectTiming.None)
  84. {
  85. cardEffects.Add(CardEffectFactory.BlockerSelfStaticEffect(false, card, null));
  86. }
  87. #endregion
  88. #region Barrier
  89. if (timing == EffectTiming.WhenPermanentWouldBeDeleted)
  90. {
  91. cardEffects.Add(CardEffectFactory.BarrierSelfEffect(isInheritedEffect: false, card: card, condition: null));
  92. }
  93. #endregion
  94. #region On Deletion
  95. if (timing == EffectTiming.OnDestroyedAnyone)
  96. {
  97. ActivateClass activateClass = new ActivateClass();
  98. activateClass.SetUpICardEffect("Recovery +1 (Deck)", CanUseCondition, card);
  99. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDescription());
  100. activateClass.SetIsInheritedEffect(true);
  101. cardEffects.Add(activateClass);
  102. string EffectDescription()
  103. {
  104. return "[On Deletion] Trigger <Recovery +1 (Deck)>. (Place the top card of your deck on top of your security stack.)";
  105. }
  106. bool CanUseCondition(Hashtable hashtable)
  107. {
  108. return CardEffectCommons.CanTriggerOnDeletion(hashtable, card, activateClass);
  109. }
  110. bool CanActivateCondition(Hashtable hashtable)
  111. {
  112. return CardEffectCommons.CanActivateOnDeletion(card, activateClass) &&
  113. card.Owner.LibraryCards.Count >= 1 &&
  114. card.Owner.CanAddSecurity(activateClass);
  115. }
  116. IEnumerator ActivateCoroutine(Hashtable _hashtable)
  117. {
  118. yield return ContinuousController.instance.StartCoroutine(new IRecovery(card.Owner, 1, activateClass).Recovery());
  119. }
  120. }
  121. #endregion
  122. return cardEffects;
  123. }
  124. }
  125. }