BT17_022.cs 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. namespace DCGO.CardEffects.BT17
  5. {
  6. public class BT17_022 : CEntity_Effect
  7. {
  8. public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
  9. {
  10. List<ICardEffect> cardEffects = new List<ICardEffect>();
  11. #region Alternate Digivolution
  12. // Koji Minamoto
  13. if (timing == EffectTiming.None)
  14. {
  15. bool Condition()
  16. {
  17. return card.Owner.HandCards.Contains(card);
  18. }
  19. bool PermanentCondition(Permanent targetPermanent)
  20. {
  21. return targetPermanent.TopCard.EqualsCardName("Koji Minamoto");
  22. }
  23. cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(
  24. permanentCondition: PermanentCondition, digivolutionCost: 2, ignoreDigivolutionRequirement: false,
  25. card: card, condition: Condition));
  26. }
  27. // KendoGarurumon
  28. if (timing == EffectTiming.None)
  29. {
  30. bool PermanentCondition(Permanent targetPermanent)
  31. {
  32. return targetPermanent.TopCard.EqualsCardName("KendoGarurumon");
  33. }
  34. cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(
  35. permanentCondition: PermanentCondition, digivolutionCost: 1, ignoreDigivolutionRequirement: false,
  36. card: card, condition: null));
  37. }
  38. // Any yellow tamer
  39. if (timing == EffectTiming.None)
  40. {
  41. bool Condition()
  42. {
  43. return card.Owner.HandCards.Contains(card);
  44. }
  45. bool PermanentCondition(Permanent targetPermanent)
  46. {
  47. return targetPermanent.IsTamer && targetPermanent.TopCard.CardColors.Contains(CardColor.Yellow);
  48. }
  49. cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(
  50. permanentCondition: PermanentCondition, digivolutionCost: 3, ignoreDigivolutionRequirement: false,
  51. card: card, condition: Condition));
  52. }
  53. #endregion
  54. #region When Digivolving
  55. if (timing == EffectTiming.OnEnterFieldAnyone)
  56. {
  57. ActivateClass activateClass = new ActivateClass();
  58. activateClass.SetUpICardEffect("This Digimon digivolves into [AncientGarurumon]", CanUseCondition, card);
  59. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, true,
  60. EffectDescription());
  61. cardEffects.Add(activateClass);
  62. string EffectDescription()
  63. {
  64. return
  65. "[When Digivolving] If [KendoGarurumon] is in this Digimon's digivolution cards or you have a black or purple Digimon or Tamer, this Digimon may digivolve into [KendoGarurumon] in the hand for a digivolution cost of 3, ignoring its digivolution requirements. If digivolved by this effect, delete this Digimon at the end of the turn.";
  66. }
  67. bool CanUseCondition(Hashtable hashtable)
  68. {
  69. return CardEffectCommons.CanTriggerWhenDigivolving(hashtable, card);
  70. }
  71. bool CanActivateCondition(Hashtable hashtable)
  72. {
  73. if (CardEffectCommons.IsExistOnBattleArea(card))
  74. {
  75. if (card.PermanentOfThisCard().DigivolutionCards.Count(cardSource =>
  76. cardSource.EqualsCardName("KendoGarurumon")) >= 1)
  77. {
  78. return true;
  79. }
  80. if (card.Owner.HandCards.Count >= 1)
  81. {
  82. if (CardEffectCommons.HasMatchConditionOwnersPermanent(card,
  83. permanent =>
  84. permanent.TopCard.CardColors.Contains(CardColor.Black) ||
  85. permanent.TopCard.CardColors.Contains(CardColor.Purple)))
  86. {
  87. return true;
  88. }
  89. }
  90. }
  91. return false;
  92. }
  93. IEnumerator ActivateCoroutine(Hashtable hashtable)
  94. {
  95. if (CardEffectCommons.IsExistOnBattleArea(card))
  96. {
  97. Permanent thisPermanent = card.PermanentOfThisCard();
  98. yield return ContinuousController.instance.StartCoroutine(
  99. CardEffectCommons.DigivolveIntoHandOrTrashCard(
  100. targetPermanent: thisPermanent,
  101. cardCondition: cardSource =>
  102. cardSource.IsDigimon && cardSource.EqualsCardName("AncientGarurumon"),
  103. payCost: true,
  104. reduceCostTuple: null,
  105. fixedCostTuple: null,
  106. ignoreDigivolutionRequirementFixedCost: 3,
  107. isHand: true,
  108. activateClass: activateClass,
  109. successProcess: SuccessProcess()));
  110. IEnumerator SuccessProcess()
  111. {
  112. ActivateClass activateClass1 = new ActivateClass();
  113. activateClass1.SetUpICardEffect("Delete this Digimon", CanUseSuccessCondition, card);
  114. activateClass1.SetUpActivateClass(CanActivateSuccessCondition, ActivateSuccessCoroutine, -1,
  115. false, "");
  116. activateClass1.SetEffectSourcePermanent(thisPermanent);
  117. CardEffectCommons.AddEffectToPlayer(effectDuration: EffectDuration.UntilEachTurnEnd,
  118. card: card, cardEffect: activateClass1, timing: EffectTiming.OnEndTurn);
  119. bool CanUseSuccessCondition(Hashtable successHashtable)
  120. {
  121. return true;
  122. }
  123. bool CanActivateSuccessCondition(Hashtable successHashtable)
  124. {
  125. if (thisPermanent.TopCard != null)
  126. {
  127. if (thisPermanent.TopCard.IsDigimon)
  128. {
  129. if (thisPermanent.CanBeDestroyedBySkill(activateClass1))
  130. {
  131. if (!thisPermanent.TopCard.CanNotBeAffected(activateClass1))
  132. {
  133. return true;
  134. }
  135. }
  136. }
  137. }
  138. return false;
  139. }
  140. IEnumerator ActivateSuccessCoroutine(Hashtable successHashtable)
  141. {
  142. yield return ContinuousController.instance.StartCoroutine(
  143. new DestroyPermanentsClass(new List<Permanent>() { thisPermanent },
  144. CardEffectCommons.CardEffectHashtable(activateClass1)).Destroy());
  145. }
  146. yield return null;
  147. }
  148. }
  149. }
  150. }
  151. #endregion
  152. #region When Attacking - ESS
  153. if (timing == EffectTiming.OnAllyAttack)
  154. {
  155. ActivateClass activateClass = new ActivateClass();
  156. activateClass.SetUpICardEffect("Draw 1", CanUseCondition, card);
  157. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false,
  158. EffectDescription());
  159. activateClass.SetIsInheritedEffect(true);
  160. cardEffects.Add(activateClass);
  161. string EffectDescription()
  162. {
  163. return
  164. "[When Attacking] If you have 7 or fewer cards in your hand, [Draw 1].";
  165. }
  166. bool CanUseCondition(Hashtable hashtable)
  167. {
  168. return CardEffectCommons.CanTriggerOnAttack(hashtable, card);
  169. }
  170. bool CanActivateCondition(Hashtable hashtable)
  171. {
  172. if (CardEffectCommons.IsExistOnBattleAreaDigimon(card))
  173. {
  174. if (card.Owner.HandCards.Count <= 7)
  175. {
  176. if (card.Owner.LibraryCards.Count >= 1)
  177. {
  178. return true;
  179. }
  180. }
  181. }
  182. return false;
  183. }
  184. IEnumerator ActivateCoroutine(Hashtable hashtable)
  185. {
  186. yield return ContinuousController.instance.StartCoroutine(
  187. new DrawClass(card.Owner, 1, activateClass).Draw());
  188. }
  189. }
  190. #endregion
  191. return cardEffects;
  192. }
  193. }
  194. }