P_196.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. // Gomamon
  4. namespace DCGO.CardEffects.P
  5. {
  6. public class P_196 : 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 Requirement
  12. if (timing == EffectTiming.None)
  13. {
  14. static bool PermanentCondition(Permanent targetPermanent)
  15. {
  16. return targetPermanent.TopCard.HasTSTraits &&
  17. targetPermanent.TopCard.HasLevel && targetPermanent.TopCard.Level == 2;
  18. }
  19. cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(permanentCondition: PermanentCondition, digivolutionCost: 0, ignoreDigivolutionRequirement: false, card: card, condition: null));
  20. }
  21. #endregion
  22. #region Start Of Your Main Phase
  23. if (timing == EffectTiming.OnStartMainPhase)
  24. {
  25. ActivateClass activateClass = new ActivateClass();
  26. activateClass.SetUpICardEffect("Digivolve into a [Sea Beast]/[TS] digimon in hand", CanUseCondition, card);
  27. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, true, EffectDiscription());
  28. cardEffects.Add(activateClass);
  29. string EffectDiscription()
  30. {
  31. return "[Start of Your Main Phase] If you have 4 or less memory, this Digimon may digivolve into a Digimon card with the [Sea Beast] or [TS] trait in the hand without paying the cost.";
  32. }
  33. bool CanUseCondition(Hashtable hashtable)
  34. {
  35. return CardEffectCommons.IsExistOnBattleAreaDigimon(card);
  36. }
  37. bool CanActivateCondition(Hashtable hashtable)
  38. {
  39. return CardEffectCommons.IsExistOnBattleAreaDigimon(card)
  40. && CardEffectCommons.IsOwnerTurn(card)
  41. && card.Owner.MemoryForPlayer <= 4;
  42. }
  43. bool CanSelectCardCondition(CardSource cardSource)
  44. {
  45. return cardSource.IsDigimon
  46. && (cardSource.HasSeaBeastTraits || cardSource.HasTSTraits)
  47. && cardSource.CanPlayCardTargetFrame(card.PermanentOfThisCard().PermanentFrame, false, activateClass);
  48. }
  49. IEnumerator ActivateCoroutine(Hashtable hashtable)
  50. {
  51. yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.DigivolveIntoHandOrTrashCard(
  52. card.PermanentOfThisCard(),
  53. digivolvingCard => CanSelectCardCondition(digivolvingCard),
  54. payCost: false,
  55. reduceCostTuple: null,
  56. fixedCostTuple: null,
  57. ignoreDigivolutionRequirementFixedCost: -1,
  58. isHand: true,
  59. activateClass: activateClass,
  60. successProcess: null
  61. ));
  62. }
  63. }
  64. #endregion
  65. #region ESS - When Attacking
  66. if (timing == EffectTiming.OnAllyAttack)
  67. {
  68. ActivateClass activateClass = new ActivateClass();
  69. activateClass.SetUpICardEffect("Draw 1", CanUseCondition, card);
  70. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, 1, false, EffectDiscription());
  71. activateClass.SetIsInheritedEffect(true);
  72. activateClass.SetHashString("P_196_Draw1");
  73. cardEffects.Add(activateClass);
  74. string EffectDiscription()
  75. {
  76. return "[When Attacking] [Once Per Turn] If you have 7 or fewer cards in your hand, <Draw 1>";
  77. }
  78. bool CanUseCondition(Hashtable hashtable)
  79. {
  80. return CardEffectCommons.CanTriggerOnAttack(hashtable, card);
  81. }
  82. bool CanActivateCondition(Hashtable hashtable)
  83. {
  84. return CardEffectCommons.IsExistOnBattleArea(card)
  85. && card.Owner.HandCards.Count <= 7;
  86. }
  87. IEnumerator ActivateCoroutine(Hashtable hashtable)
  88. {
  89. yield return ContinuousController.instance.StartCoroutine(new DrawClass(card.Owner, 1, activateClass).Draw());
  90. }
  91. }
  92. #endregion
  93. return cardEffects;
  94. }
  95. }
  96. }