EX3_012.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. namespace DCGO.CardEffects.EX3
  4. {
  5. public class EX3_012 : CEntity_Effect
  6. {
  7. public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
  8. {
  9. List<ICardEffect> cardEffects = new List<ICardEffect>();
  10. if (timing == EffectTiming.OnEnterFieldAnyone)
  11. {
  12. ActivateClass activateClass = new ActivateClass();
  13. activateClass.SetUpICardEffect("Delete opponent's all Digimon with the lowest DP or opponent can't play Digimon with 5000 DP or less", CanUseCondition, card);
  14. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
  15. cardEffects.Add(activateClass);
  16. string EffectDiscription()
  17. {
  18. return "[On Play] Delete all of your opponent's Digimon with the lowest DP. If no Digimon is deleted by this effect, your opponent can't play Digimon with 5000 DP or less until the end of their turn.";
  19. }
  20. bool PermanentCondition(Permanent permanent)
  21. {
  22. return CardEffectCommons.IsMinDP(permanent, card.Owner.Enemy);
  23. }
  24. bool CanUseCondition(Hashtable hashtable)
  25. {
  26. return CardEffectCommons.CanTriggerOnPlay(hashtable, card);
  27. }
  28. bool CanActivateCondition(Hashtable hashtable)
  29. {
  30. if (CardEffectCommons.IsExistOnBattleArea(card))
  31. {
  32. return true;
  33. }
  34. return false;
  35. }
  36. IEnumerator ActivateCoroutine(Hashtable _hashtable)
  37. {
  38. List<Permanent> destroyTargetPermanents = card.Owner.Enemy.GetBattleAreaDigimons().Filter(PermanentCondition);
  39. yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.DeletePeremanentAndProcessAccordingToResult(targetPermanents: destroyTargetPermanents, activateClass: activateClass, successProcess: null, failureProcess: FailureProcess));
  40. IEnumerator FailureProcess()
  41. {
  42. CanNotPutFieldClass canNotPutFieldClass = new CanNotPutFieldClass();
  43. canNotPutFieldClass.SetUpICardEffect("Can't play Digimon with 5000 DP or less", CanUseCondition1, card);
  44. canNotPutFieldClass.SetUpCanNotPutFieldClass(cardCondition: CardCondition, cardEffectCondition: CardEffectCondition);
  45. card.Owner.Enemy.UntilOwnerTurnEndEffects.Add((_timing) => canNotPutFieldClass);
  46. ContinuousController.instance.PlaySE(GManager.instance.GetComponent<Effects>().DebuffSE);
  47. bool CanUseCondition1(Hashtable hashtable)
  48. {
  49. return true;
  50. }
  51. bool CardCondition(CardSource cardSource)
  52. {
  53. if (cardSource.IsDigimon || cardSource.IsDigiEgg)
  54. {
  55. if (cardSource.HasDP && cardSource.CardDP <= 5000)
  56. {
  57. return true;
  58. }
  59. }
  60. return cardSource.Owner == card.Owner.Enemy &&
  61. (cardSource.IsDigimon || cardSource.IsDigiEgg) &&
  62. (cardSource.HasDP && cardSource.CardDP <= 5000);
  63. }
  64. bool CardEffectCondition(ICardEffect cardEffect)
  65. {
  66. return true;
  67. }
  68. yield return null;
  69. }
  70. }
  71. }
  72. if (timing == EffectTiming.OnAllyAttack)
  73. {
  74. ActivateClass activateClass = new ActivateClass();
  75. activateClass.SetUpICardEffect($"Trash the top card of opponent's security", CanUseCondition, card);
  76. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
  77. cardEffects.Add(activateClass);
  78. string EffectDiscription()
  79. {
  80. return "[When Attacking] If you have a Tamer in play, trash the top card of your opponent's security stack.";
  81. }
  82. bool CanUseCondition(Hashtable hashtable)
  83. {
  84. return CardEffectCommons.CanTriggerOnAttack(hashtable, card);
  85. }
  86. bool CanActivateCondition(Hashtable hashtable)
  87. {
  88. if (CardEffectCommons.IsExistOnBattleArea(card))
  89. {
  90. if (card.Owner.Enemy.SecurityCards.Count >= 1)
  91. {
  92. if (CardEffectCommons.HasMatchConditionOwnersPermanent(card, (permanent) => permanent.IsTamer))
  93. {
  94. return true;
  95. }
  96. }
  97. }
  98. return false;
  99. }
  100. IEnumerator ActivateCoroutine(Hashtable _hashtable)
  101. {
  102. yield return ContinuousController.instance.StartCoroutine(new IDestroySecurity(
  103. player: card.Owner.Enemy,
  104. destroySecurityCount: 1,
  105. cardEffect: activateClass,
  106. fromTop: true).DestroySecurity());
  107. }
  108. }
  109. return cardEffects;
  110. }
  111. }
  112. }