EX11_049.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. // Punkmon
  5. namespace DCGO.CardEffects.EX11
  6. {
  7. public class EX11_049 : CEntity_Effect
  8. {
  9. public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
  10. {
  11. List<ICardEffect> cardEffects = new List<ICardEffect>();
  12. #region Digivolution Condition
  13. if (timing == EffectTiming.None)
  14. {
  15. bool PermanentCondition(Permanent targetPermanent)
  16. {
  17. return targetPermanent.TopCard.IsLevel3
  18. && targetPermanent.TopCard.EqualsTraits("Evil");
  19. }
  20. cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(
  21. permanentCondition: PermanentCondition,
  22. digivolutionCost: 2,
  23. ignoreDigivolutionRequirement: false,
  24. card: card,
  25. condition: null));
  26. }
  27. #endregion
  28. #region Start of Your Main Phase
  29. if (timing == EffectTiming.OnAllyAttack)
  30. {
  31. ActivateClass activateClass = new ActivateClass();
  32. activateClass.SetUpICardEffect("Discard 2, then may digivolve into [Dark Dragon]/[Evil Dragon] for 2 less.", CanUseCondition, card);
  33. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDescription());
  34. cardEffects.Add(activateClass);
  35. string EffectDescription()
  36. {
  37. return "[When Attacking] Trash 2 cards in your hand. Then, this Digimon may digivolve into a [Dark Dragon] or [Evil Dragon] trait Digimon card in the trash with the digivolution cost reduced by 2.";
  38. }
  39. bool CanUseCondition(Hashtable hashtable)
  40. {
  41. return CardEffectCommons.IsExistOnBattleArea(card)
  42. && CardEffectCommons.CanTriggerOnAttack(hashtable, card);
  43. }
  44. bool CanActivateCondition(Hashtable hashtable)
  45. {
  46. return CardEffectCommons.IsExistOnBattleArea(card);
  47. }
  48. bool CanSelectCardCondition(CardSource cardSource)
  49. {
  50. return cardSource.IsDigimon
  51. && (cardSource.EqualsTraits("Dark Dragon")
  52. || cardSource.EqualsTraits("Evil Dragon"));
  53. }
  54. IEnumerator ActivateCoroutine(Hashtable hashtable)
  55. {
  56. int discardCount = Math.Min(2, card.Owner.HandCards.Count);
  57. SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
  58. selectHandEffect.SetUp(
  59. selectPlayer: card.Owner,
  60. canTargetCondition: (cardSource) => true,
  61. canTargetCondition_ByPreSelecetedList: null,
  62. canEndSelectCondition: null,
  63. maxCount: discardCount,
  64. canNoSelect: false,
  65. canEndNotMax: false,
  66. isShowOpponent: true,
  67. selectCardCoroutine: null,
  68. afterSelectCardCoroutine: null,
  69. mode: SelectHandEffect.Mode.Discard,
  70. cardEffect: activateClass);
  71. yield return ContinuousController.instance.StartCoroutine(selectHandEffect.Activate());
  72. yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.DigivolveIntoHandOrTrashCard(
  73. targetPermanent: card.PermanentOfThisCard(),
  74. cardCondition: CanSelectCardCondition,
  75. payCost: true,
  76. reduceCostTuple: (reduceCost: 2, reduceCostCardCondition: null),
  77. fixedCostTuple: null,
  78. ignoreDigivolutionRequirementFixedCost: -1,
  79. isHand: false,
  80. activateClass: activateClass,
  81. successProcess: null));
  82. }
  83. }
  84. #endregion
  85. #region Inherit
  86. if (timing == EffectTiming.None)
  87. {
  88. bool Condition()
  89. {
  90. return CardEffectCommons.IsExistOnBattleAreaDigimon(card)
  91. && CardEffectCommons.IsOwnerTurn(card);
  92. }
  93. cardEffects.Add(CardEffectFactory.ChangeSelfDPStaticEffect(
  94. changeValue: 2000,
  95. isInheritedEffect: true,
  96. card: card,
  97. condition: Condition));
  98. }
  99. #endregion
  100. return cardEffects;
  101. }
  102. }
  103. }