ST22_13.cs 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System;
  4. using UnityEngine;
  5. //GrandGalemon
  6. namespace DCGO.CardEffects.ST22
  7. {
  8. public class ST22_13 : CEntity_Effect
  9. {
  10. public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
  11. {
  12. List<ICardEffect> cardEffects = new List<ICardEffect>();
  13. #region Static effects
  14. #region Fortitude
  15. if (timing == EffectTiming.OnDestroyedAnyone)
  16. {
  17. cardEffects.Add(CardEffectFactory.FortitudeSelfEffect(isInheritedEffect: false, card: card, condition: null));
  18. }
  19. #endregion
  20. #region Vortex
  21. if (timing == EffectTiming.OnEndTurn)
  22. {
  23. cardEffects.Add(CardEffectFactory.VortexSelfEffect(isInheritedEffect: false, card: card,
  24. condition: null));
  25. }
  26. #endregion
  27. #endregion
  28. #region Shared (On Play/When Digivolving/When Attacking)
  29. bool SelectDigimonToSuspend(Permanent permanent)
  30. {
  31. return CardEffectCommons.IsPermanentExistsOnBattleAreaDigimon(permanent);
  32. }
  33. bool CanActivateSharedCondition(Hashtable hashtable)
  34. {
  35. return CardEffectCommons.IsExistOnBattleAreaDigimon(card);
  36. }
  37. IEnumerator SharedActivateCoroutine(Hashtable hashtable, ActivateClass activateClass)
  38. {
  39. SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
  40. selectPermanentEffect.SetUp(
  41. selectPlayer: card.Owner,
  42. canTargetCondition: SelectDigimonToSuspend,
  43. canTargetCondition_ByPreSelecetedList: null,
  44. canEndSelectCondition: null,
  45. maxCount: 1,
  46. canNoSelect: true,
  47. canEndNotMax: false,
  48. selectPermanentCoroutine: null,
  49. afterSelectPermanentCoroutine: null,
  50. mode: SelectPermanentEffect.Mode.Tap,
  51. cardEffect: activateClass);
  52. selectPermanentEffect.SetUpCustomMessage("Select 1 Digimon to suspend.", "The opponent is selecting 1 Digimon to suspend.");
  53. yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
  54. yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.ChangeDigimonDP(
  55. targetPermanent: card.PermanentOfThisCard(),
  56. changeValue: 3000,
  57. effectDuration: EffectDuration.UntilEachTurnEnd,
  58. activateClass: activateClass));
  59. }
  60. #endregion
  61. #region On Play
  62. if (timing == EffectTiming.OnEnterFieldAnyone)
  63. {
  64. ActivateClass activateClass = new ActivateClass();
  65. activateClass.SetUpICardEffect("Suspend 1 Digimon", CanUseCondition, card);
  66. activateClass.SetUpActivateClass(CanActivateSharedCondition, hashtable => SharedActivateCoroutine(hashtable, activateClass), -1, false, EffectDescription());
  67. cardEffects.Add(activateClass);
  68. string EffectDescription()
  69. {
  70. return "[On Play] You may suspend 1 Digimon. Then, this Digimon get +3000 DP for the turn.";
  71. }
  72. bool CanUseCondition(Hashtable hashtable)
  73. {
  74. return CardEffectCommons.CanTriggerOnPlay(hashtable, card);
  75. }
  76. }
  77. #endregion
  78. #region When Digivolving
  79. if (timing == EffectTiming.OnEnterFieldAnyone)
  80. {
  81. ActivateClass activateClass = new ActivateClass();
  82. activateClass.SetUpICardEffect("Suspend 1 Digimon", CanUseCondition, card);
  83. activateClass.SetUpActivateClass(CanActivateSharedCondition, hashtable => SharedActivateCoroutine(hashtable, activateClass), -1, false, EffectDescription());
  84. cardEffects.Add(activateClass);
  85. string EffectDescription()
  86. {
  87. return "[When Digivolving] You may suspend 1 Digimon. Then, this Digimon get +3000 DP for the turn.";
  88. }
  89. bool CanUseCondition(Hashtable hashtable)
  90. {
  91. return CardEffectCommons.IsExistOnBattleAreaDigimon(card)
  92. && CardEffectCommons.CanTriggerWhenDigivolving(hashtable, card);
  93. }
  94. }
  95. #endregion
  96. #region When Attacking
  97. if (timing == EffectTiming.OnAllyAttack)
  98. {
  99. ActivateClass activateClass = new ActivateClass();
  100. activateClass.SetUpICardEffect("Suspend 1 Digimon", CanUseCondition, card);
  101. activateClass.SetUpActivateClass(CanActivateSharedCondition, hashtable => SharedActivateCoroutine(hashtable, activateClass), -1, false, EffectDescription());
  102. cardEffects.Add(activateClass);
  103. string EffectDescription()
  104. {
  105. return "[When Attacking] You may suspend 1 Digimon. Then, this Digimon get +3000 DP for the turn.";
  106. }
  107. bool CanUseCondition(Hashtable hashtable)
  108. {
  109. return CardEffectCommons.CanTriggerOnAttack(hashtable, card);
  110. }
  111. }
  112. #endregion
  113. #region When Attacking - ESS
  114. if (timing == EffectTiming.OnAllyAttack)
  115. {
  116. ActivateClass activateClass = new ActivateClass();
  117. activateClass.SetUpICardEffect("Unsuspend this Digimon", CanUseCondition, card);
  118. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, 1, true, EffectDescription());
  119. activateClass.SetHashString("ST22_13_ESS");
  120. activateClass.SetIsInheritedEffect(true);
  121. cardEffects.Add(activateClass);
  122. string EffectDescription()
  123. {
  124. return "[When Attacking] If your opponent has no unsuspended Digimon, this Digimon with the [Vortex Warriors] trait may unsuspend.";
  125. }
  126. bool CanUseCondition(Hashtable hashtable)
  127. {
  128. return CardEffectCommons.CanTriggerOnAttack(hashtable, card);
  129. }
  130. bool OpponentsDigimon(Permanent permanent)
  131. {
  132. return CardEffectCommons.IsPermanentExistsOnOpponentBattleAreaDigimon(permanent, card) &&
  133. !permanent.IsSuspended;
  134. }
  135. bool CanActivateCondition(Hashtable hashtable)
  136. {
  137. return (CardEffectCommons.MatchConditionOpponentsPermanentCount(card,OpponentsDigimon) == 0)
  138. && card.PermanentOfThisCard().TopCard.EqualsTraits("Vortex Warriors")
  139. && CardEffectCommons.IsExistOnBattleAreaDigimon(card);
  140. }
  141. IEnumerator ActivateCoroutine(Hashtable hashtable)
  142. {
  143. yield return ContinuousController.instance.StartCoroutine(
  144. new IUnsuspendPermanents(new List<Permanent>() { card.PermanentOfThisCard() }, activateClass).Unsuspend());
  145. }
  146. }
  147. #endregion
  148. return cardEffects;
  149. }
  150. }
  151. }