EX11_070.cs 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. //Unchained
  5. namespace DCGO.CardEffects.EX11
  6. {
  7. public class EX11_070 : CEntity_Effect
  8. {
  9. public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
  10. {
  11. List<ICardEffect> cardEffects = new List<ICardEffect>();
  12. #region Security
  13. if (timing == EffectTiming.SecuritySkill)
  14. {
  15. cardEffects.Add(CardEffectFactory.PlaySelfTamerSecurityEffect(card));
  16. }
  17. #endregion
  18. #region Start of turn set to 3
  19. if (timing == EffectTiming.OnStartTurn)
  20. {
  21. cardEffects.Add(CardEffectFactory.SetMemoryTo3TamerEffect(card));
  22. }
  23. #endregion
  24. #region End of your Turn
  25. if (timing == EffectTiming.OnEndTurn)
  26. {
  27. ActivateClass activateClass = new ActivateClass();
  28. activateClass.SetUpICardEffect("DNA digivolve into [ExMaquinamon]. Mind Link to [Maquinamon] in text.", CanUseCondition, card);
  29. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDescription());
  30. cardEffects.Add(activateClass);
  31. string EffectDescription()
  32. {
  33. return "[End of Your Turn] 2 of your Digimon may DNA digivolve into [ExMaquinamon] in the hand. Then, this Tamer may <Mind Link> with 1 of your Digimon with [Maquinamon] in its text.";
  34. }
  35. bool CanSelectDNACardCondition(CardSource cardSource)
  36. {
  37. return cardSource.IsDigimon
  38. && cardSource.CanPlayJogress(true)
  39. && cardSource.EqualsCardName("ExMaquinamon");
  40. }
  41. bool CanUseCondition(Hashtable hashtable)
  42. {
  43. return CardEffectCommons.IsExistOnBattleArea(card)
  44. && CardEffectCommons.IsOwnerTurn(card);
  45. }
  46. bool CanActivateCondition(Hashtable hashtable)
  47. {
  48. return CardEffectCommons.IsExistOnBattleArea(card);
  49. }
  50. bool IsMyProperDigimon(Permanent permanent)
  51. {
  52. return permanent.IsDigimon
  53. && permanent.TopCard.HasText("Maquinamon");
  54. }
  55. IEnumerator ActivateCoroutine(Hashtable hashtable)
  56. {
  57. #region DNA digivolve
  58. yield return ContinuousController.instance.StartCoroutine(
  59. CardEffectCommons.DNADigivolvePermanentsIntoHandOrTrashCard(
  60. CanSelectDNACardCondition,
  61. payCost: true,
  62. isHand: true,
  63. activateClass
  64. ));
  65. #endregion
  66. #region Mind Link
  67. yield return ContinuousController.instance.StartCoroutine(
  68. new MindLinkClass(
  69. tamer: card.PermanentOfThisCard(),
  70. digimonCondition: IsMyProperDigimon,
  71. activateClass: activateClass
  72. ).MindLink()
  73. );
  74. #endregion
  75. }
  76. }
  77. #endregion
  78. #region ESS - All turns
  79. if(timing == EffectTiming.None)
  80. {
  81. bool CanUseCondition(Hashtable hashtable)
  82. {
  83. return CardEffectCommons.IsExistOnBattleAreaDigimon(card)
  84. && card.PermanentOfThisCard().TopCard.HasText("Maquinamon");
  85. }
  86. #region Can't have less than 1000 DP
  87. {
  88. ChangeDPClass changeDPClass = new ChangeDPClass();
  89. changeDPClass.SetUpICardEffect("Can't have less than 1000 DP", CanUseCondition, card);
  90. changeDPClass.SetUpChangeDPClass(ChangeDP: ChangeDP, permanentCondition: PermanentCondition, isUpDown: () => false, isMinusDP: () => false);
  91. changeDPClass.SetIsInheritedEffect(true);
  92. cardEffects.Add(changeDPClass);
  93. int ChangeDP(Permanent permanent, int DP)
  94. {
  95. if (PermanentCondition(permanent) && DP < 1000)
  96. {
  97. DP = 1000;
  98. }
  99. return DP;
  100. }
  101. bool PermanentCondition(Permanent permanent)
  102. {
  103. return CardEffectCommons.IsPermanentExistsOnBattleAreaDigimon(permanent)
  104. && !permanent.TopCard.CanNotBeAffected(changeDPClass)
  105. && permanent.DigivolutionCards.Contains(card)
  106. && permanent.TopCard.HasText("Maquinamon");
  107. }
  108. }
  109. #endregion
  110. #region Immunity to Stack Trashing
  111. {
  112. ImmuneStackTrashingClass immuneFromStackTrashingClass = new ImmuneStackTrashingClass();
  113. immuneFromStackTrashingClass.SetUpICardEffect("Isn't affected by trashing any stacked card", CanUseCondition, card);
  114. immuneFromStackTrashingClass.SetUpImmuneFromStackTrashingClass(PermanentCondition: PermanentCondition, EffectCondition: EffectCondition);
  115. immuneFromStackTrashingClass.SetIsInheritedEffect(true);
  116. cardEffects.Add(immuneFromStackTrashingClass);
  117. bool EffectCondition(ICardEffect effect)
  118. {
  119. return CardEffectCommons.IsOpponentEffect(effect, card);
  120. }
  121. bool PermanentCondition(Permanent permanent)
  122. {
  123. return permanent.cardSources.Contains(card);
  124. }
  125. }
  126. #endregion
  127. }
  128. #endregion
  129. #region ESS - De-MindLink
  130. if (timing == EffectTiming.OnEndTurn)
  131. {
  132. cardEffects.Add(CardEffectFactory.PlayMindLinkTamerFromDigivolutionCards(
  133. card,
  134. "Unchained",
  135. "[End of All Turns] You may play 1 [Unchained] from this Digimon's digivolution cards without paying the cost."));
  136. }
  137. #endregion
  138. return cardEffects;
  139. }
  140. }
  141. }