BT18_049.cs 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. namespace DCGO.CardEffects.BT18
  4. {
  5. public class BT18_049 : CEntity_Effect
  6. {
  7. public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
  8. {
  9. List<ICardEffect> cardEffects = new List<ICardEffect>();
  10. #region Alternate Digivolution
  11. // Any green or red tamer
  12. if (timing == EffectTiming.None)
  13. {
  14. bool PermanentCondition(Permanent targetPermanent)
  15. {
  16. return targetPermanent.IsTamer && (targetPermanent.TopCard.CardColors.Contains(CardColor.Green) ||
  17. targetPermanent.TopCard.CardColors.Contains(CardColor.Red));
  18. }
  19. cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(
  20. permanentCondition: PermanentCondition, digivolutionCost: 4, ignoreDigivolutionRequirement: false,
  21. card: card, condition: null));
  22. }
  23. // Zoe Orimoto
  24. if (timing == EffectTiming.None)
  25. {
  26. bool Condition()
  27. {
  28. return true;
  29. }
  30. bool PermanentCondition(Permanent targetPermanent)
  31. {
  32. return targetPermanent.TopCard.EqualsCardName("Zoe Orimoto");
  33. }
  34. cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(
  35. permanentCondition: PermanentCondition, digivolutionCost: 3, ignoreDigivolutionRequirement: false,
  36. card: card, condition: Condition));
  37. }
  38. // Kazemon
  39. if (timing == EffectTiming.None)
  40. {
  41. bool PermanentCondition(Permanent targetPermanent)
  42. {
  43. return targetPermanent.TopCard.EqualsCardName("Kazemon");
  44. }
  45. cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(
  46. permanentCondition: PermanentCondition, digivolutionCost: 1, ignoreDigivolutionRequirement: false,
  47. card: card, condition: null));
  48. }
  49. #endregion
  50. #region Piercing
  51. if (timing == EffectTiming.OnDetermineDoSecurityCheck)
  52. {
  53. cardEffects.Add(CardEffectFactory.PierceSelfEffect(
  54. isInheritedEffect: false,
  55. card: card,
  56. condition: null));
  57. }
  58. #endregion
  59. #region On Play/ When Digivolving Shared
  60. bool CanSelectPermanentConditionShared(Permanent permanent)
  61. {
  62. return CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(permanent, card);
  63. }
  64. bool CanActivateConditionShared(Hashtable hashtable)
  65. {
  66. return CardEffectCommons.IsExistOnBattleAreaDigimon(card) &&
  67. CardEffectCommons.HasMatchConditionPermanent(CanSelectPermanentConditionShared);
  68. }
  69. #endregion
  70. #region On Play
  71. if (timing == EffectTiming.OnEnterFieldAnyone)
  72. {
  73. ActivateClass activateClass = new ActivateClass();
  74. activateClass.SetUpICardEffect("1 Digimon gets +3000 DP.", CanUseCondition, card);
  75. activateClass.SetUpActivateClass(CanActivateConditionShared, ActivateCoroutine, -1, false, EffectDescription());
  76. cardEffects.Add(activateClass);
  77. string EffectDescription()
  78. {
  79. return "[On Play] 1 of your Digimon gets +3000 DP until the end of your opponent's turn.";
  80. }
  81. bool CanUseCondition(Hashtable hashtable)
  82. {
  83. return CardEffectCommons.CanTriggerOnPlay(hashtable, card);
  84. }
  85. IEnumerator ActivateCoroutine(Hashtable hashtable)
  86. {
  87. SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
  88. selectPermanentEffect.SetUp(
  89. selectPlayer: card.Owner,
  90. canTargetCondition: CanSelectPermanentConditionShared,
  91. canTargetCondition_ByPreSelecetedList: null,
  92. canEndSelectCondition: null,
  93. maxCount: 1,
  94. canNoSelect: false,
  95. canEndNotMax: false,
  96. selectPermanentCoroutine: SelectPermanentCoroutine,
  97. afterSelectPermanentCoroutine: null,
  98. mode: SelectPermanentEffect.Mode.Custom,
  99. cardEffect: activateClass);
  100. selectPermanentEffect.SetUpCustomMessage(
  101. "Select 1 Digimon that will get DP +3000.",
  102. "The opponent is selecting 1 Digimon that will get DP +3000.");
  103. yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
  104. IEnumerator SelectPermanentCoroutine(Permanent permanent)
  105. {
  106. yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.ChangeDigimonDP(
  107. targetPermanent: permanent,
  108. changeValue: 3000,
  109. effectDuration: EffectDuration.UntilOpponentTurnEnd,
  110. activateClass: activateClass));
  111. }
  112. }
  113. }
  114. #endregion
  115. #region When Digivolving
  116. if (timing == EffectTiming.OnEnterFieldAnyone)
  117. {
  118. ActivateClass activateClass = new ActivateClass();
  119. activateClass.SetUpICardEffect("1 Digimon gets +3000 DP.", CanUseCondition, card);
  120. activateClass.SetUpActivateClass(CanActivateConditionShared, ActivateCoroutine, -1, false, EffectDescription());
  121. cardEffects.Add(activateClass);
  122. string EffectDescription()
  123. {
  124. return "[When Digivolving] 1 of your Digimon gets +3000 DP until the end of your opponent's turn.";
  125. }
  126. bool CanUseCondition(Hashtable hashtable)
  127. {
  128. return CardEffectCommons.CanTriggerWhenDigivolving(hashtable, card);
  129. }
  130. IEnumerator ActivateCoroutine(Hashtable hashtable)
  131. {
  132. SelectPermanentEffect selectPermanentEffect = GManager.instance.GetComponent<SelectPermanentEffect>();
  133. selectPermanentEffect.SetUp(
  134. selectPlayer: card.Owner,
  135. canTargetCondition: CanSelectPermanentConditionShared,
  136. canTargetCondition_ByPreSelecetedList: null,
  137. canEndSelectCondition: null,
  138. maxCount: 1,
  139. canNoSelect: false,
  140. canEndNotMax: false,
  141. selectPermanentCoroutine: SelectPermanentCoroutine,
  142. afterSelectPermanentCoroutine: null,
  143. mode: SelectPermanentEffect.Mode.Custom,
  144. cardEffect: activateClass);
  145. selectPermanentEffect.SetUpCustomMessage(
  146. "Select 1 Digimon that will get DP +3000.",
  147. "The opponent is selecting 1 Digimon that will get DP +3000.");
  148. yield return ContinuousController.instance.StartCoroutine(selectPermanentEffect.Activate());
  149. IEnumerator SelectPermanentCoroutine(Permanent permanent)
  150. {
  151. yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.ChangeDigimonDP(
  152. targetPermanent: permanent,
  153. changeValue: 3000,
  154. effectDuration: EffectDuration.UntilOpponentTurnEnd,
  155. activateClass: activateClass));
  156. }
  157. }
  158. }
  159. #endregion
  160. #region Piercing - ESS
  161. if (timing == EffectTiming.OnDetermineDoSecurityCheck)
  162. {
  163. cardEffects.Add(CardEffectFactory.PierceSelfEffect(
  164. isInheritedEffect: true,
  165. card: card,
  166. condition: null));
  167. }
  168. #endregion
  169. return cardEffects;
  170. }
  171. }
  172. }