BT25_021.cs 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. // Gaomon
  4. namespace DCGO.CardEffects.BT25
  5. {
  6. public class BT25_021 : CEntity_Effect
  7. {
  8. public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
  9. {
  10. List<ICardEffect> cardEffects = new List<ICardEffect>();
  11. #region Alt Digivolution Condition
  12. if (timing == EffectTiming.None)
  13. {
  14. static bool PermanentCondition(Permanent targetPermanent)
  15. {
  16. return targetPermanent.TopCard.EqualsCardName("Wanyamon");
  17. }
  18. cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(permanentCondition: PermanentCondition, digivolutionCost: 0, ignoreDigivolutionRequirement: false, card: card, condition: null));
  19. }
  20. if (timing == EffectTiming.None)
  21. {
  22. static bool PermanentCondition(Permanent targetPermanent)
  23. {
  24. return targetPermanent.TopCard.EqualsTraits("DATA SQUAD");
  25. }
  26. cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(level: 2, permanentCondition: PermanentCondition, digivolutionCost: 0, ignoreDigivolutionRequirement: false, card: card, condition: null));
  27. }
  28. #endregion
  29. #region On Play
  30. if (timing == EffectTiming.OnEnterFieldAnyone)
  31. {
  32. ActivateClass activateClass = new ActivateClass();
  33. activateClass.SetUpICardEffect("Reveal 3, add 1 [Thomas H. Norstein] or 1 [DATA SQUAD] trait and 1 [Gaogamon] in name, bot deck the rest", CanUseCondition, card);
  34. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDescription());
  35. cardEffects.Add(activateClass);
  36. string EffectDescription()
  37. {
  38. return "[On Play] Reveal the top 3 cards of your deck. Add 1 [Thomas H. Norstein] or card with the [DATA SQUAD] trait and 1 card with [Gaogamon] in its name among them to the hand. Return the rest to the bottom of the deck.";
  39. }
  40. bool CanUseCondition(Hashtable hashtable)
  41. {
  42. return CardEffectCommons.IsExistOnBattleArea(card)
  43. && CardEffectCommons.CanTriggerOnPlay(hashtable, card);
  44. }
  45. bool CanActivateCondition(Hashtable hashtable)
  46. {
  47. return CardEffectCommons.IsExistOnBattleArea(card);
  48. }
  49. bool CanSelectCardCondition(CardSource cardSource)
  50. {
  51. return cardSource.EqualsCardName("Thomas H. Norstein")
  52. || cardSource.EqualsTraits("DATA SQUAD");
  53. }
  54. bool CanSelectCardCondition1(CardSource cardSource)
  55. {
  56. return cardSource.ContainsCardName("Gaogamon");
  57. }
  58. IEnumerator ActivateCoroutine(Hashtable hashtable)
  59. {
  60. yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.SimplifiedRevealDeckTopCardsAndSelect(
  61. revealCount: 3,
  62. simplifiedSelectCardConditions:
  63. new SimplifiedSelectCardConditionClass[]
  64. {
  65. new SimplifiedSelectCardConditionClass(
  66. canTargetCondition:CanSelectCardCondition,
  67. message: "Select 1 [Thomas H. Norstein] or [DATA SQUAD] trait card to add to hand.",
  68. mode: SelectCardEffect.Mode.AddHand,
  69. maxCount: 1,
  70. selectCardCoroutine: null),
  71. new SimplifiedSelectCardConditionClass(
  72. canTargetCondition:CanSelectCardCondition1,
  73. message: "Select 1 card with [Gaogamon] in its name to add to hand.",
  74. mode: SelectCardEffect.Mode.AddHand,
  75. maxCount: 1,
  76. selectCardCoroutine: null),
  77. },
  78. remainingCardsPlace: RemainingCardsPlace.DeckBottom,
  79. activateClass: activateClass,
  80. mutualConditions: true
  81. ));
  82. }
  83. }
  84. #endregion
  85. #region Inherited
  86. if (timing == EffectTiming.OnAllyAttack)
  87. {
  88. ActivateClass activateClass = new ActivateClass();
  89. activateClass.SetUpICardEffect("Both players <Draw 1>", CanUseCondition, card);
  90. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, 1, false, EffectDescription());
  91. activateClass.SetHashString("BT25_021_Inherited");
  92. activateClass.SetIsInheritedEffect(true);
  93. cardEffects.Add(activateClass);
  94. string EffectDescription()
  95. {
  96. return "[When Attacking] [Once Per Turn] Both players <Draw 1>.";
  97. }
  98. bool CanUseCondition(Hashtable hashtable)
  99. {
  100. return CardEffectCommons.IsExistOnBattleAreaDigimon(card)
  101. && CardEffectCommons.CanTriggerOnAttack(hashtable, card);
  102. }
  103. bool CanActivateCondition(Hashtable hashtable)
  104. {
  105. return CardEffectCommons.IsExistOnBattleAreaDigimon(card);
  106. }
  107. IEnumerator ActivateCoroutine(Hashtable hashtable)
  108. {
  109. foreach (Player player in GManager.instance.turnStateMachine.gameContext.Players_ForTurnPlayer)
  110. {
  111. if (player.LibraryCards.Count >= 1)
  112. {
  113. yield return ContinuousController.instance.StartCoroutine(new DrawClass(player, 1, activateClass).Draw());
  114. }
  115. }
  116. }
  117. }
  118. #endregion
  119. return cardEffects;
  120. }
  121. }
  122. }