P_198.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. // DemiDevimon
  4. namespace DCGO.CardEffects.P
  5. {
  6. public class P_198 : 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 [Fallen Angel]/[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 [Fallen Angel] 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.HasFallenAngelTraits || 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, trash 1", CanUseCondition, card);
  70. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, 1, false, EffectDiscription());
  71. activateClass.SetIsInheritedEffect(true);
  72. activateClass.SetHashString("P_198_Draw1Trash1");
  73. cardEffects.Add(activateClass);
  74. string EffectDiscription()
  75. {
  76. return "[When Attacking] [Once Per Turn] <Draw 1> and trash 1 card in your hand";
  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. }
  86. IEnumerator ActivateCoroutine(Hashtable hashtable)
  87. {
  88. yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.DrawAndDiscardCards(
  89. player: (card.Owner, card.Owner),
  90. drawAmount: 1,
  91. trashAmount: 1,
  92. card: card,
  93. activateClass: activateClass
  94. ));
  95. }
  96. }
  97. #endregion
  98. return cardEffects;
  99. }
  100. }
  101. }