BT17_062.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. namespace DCGO.CardEffects.BT17
  4. {
  5. public class BT17_062 : 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. if (timing == EffectTiming.None)
  12. {
  13. bool PermanentCondition(Permanent targetPermanent)
  14. {
  15. return targetPermanent.TopCard.EqualsCardName("Dorimon");
  16. }
  17. cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(
  18. permanentCondition: PermanentCondition, digivolutionCost: 0, ignoreDigivolutionRequirement: false,
  19. card: card, condition: null));
  20. }
  21. #endregion
  22. #region When Attacking
  23. if (timing == EffectTiming.OnAllyAttack)
  24. {
  25. ActivateClass activateClass = new ActivateClass();
  26. activateClass.SetUpICardEffect("This Digimon digivolves", CanUseCondition, card);
  27. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, true,
  28. EffectDescription());
  29. cardEffects.Add(activateClass);
  30. string EffectDescription()
  31. {
  32. return
  33. "[When Attacking] If [Kosuke Kisakata] is in this Digimon's digivolution cards and your opponent has a level 6 or higher Digimon, this Digimon may digivolve into [Dorugoramon] in the hand for a digivolution cost of 4, ignoring its digivolution requirements.";
  34. }
  35. bool CanUseCondition(Hashtable hashtable)
  36. {
  37. return CardEffectCommons.CanTriggerOnAttack(hashtable, card);
  38. }
  39. bool IsKosukeCardCondition(CardSource cardSource)
  40. {
  41. return cardSource.IsTamer &&
  42. (cardSource.EqualsCardName("Kosuke Kisakata") ||
  43. cardSource.EqualsCardName("KosukeKisakata"));
  44. }
  45. bool OpponentPermanentCondition(Permanent permanent)
  46. {
  47. return CardEffectCommons.IsPermanentExistsOnOpponentBattleAreaDigimon(permanent, card) &&
  48. permanent.TopCard.HasLevel &&
  49. permanent.Level >= 6;
  50. }
  51. bool CanActivateCondition(Hashtable hashtable)
  52. {
  53. return CardEffectCommons.IsExistOnBattleArea(card) &&
  54. card.PermanentOfThisCard().DigivolutionCards.Some(IsKosukeCardCondition) &&
  55. CardEffectCommons.HasMatchConditionPermanent(OpponentPermanentCondition);
  56. }
  57. IEnumerator ActivateCoroutine(Hashtable hashtable)
  58. {
  59. yield return ContinuousController.instance.StartCoroutine(
  60. CardEffectCommons.DigivolveIntoHandOrTrashCard(
  61. targetPermanent: card.PermanentOfThisCard(),
  62. cardCondition: cardSource =>
  63. cardSource.IsDigimon && cardSource.EqualsCardName("Dorugoramon"),
  64. payCost: true,
  65. reduceCostTuple: null,
  66. fixedCostTuple: null,
  67. ignoreDigivolutionRequirementFixedCost: 4,
  68. isHand: true,
  69. activateClass: activateClass,
  70. successProcess: null));
  71. }
  72. }
  73. #endregion
  74. #region Reboot - ESS
  75. if (timing == EffectTiming.None)
  76. {
  77. cardEffects.Add(CardEffectFactory.RebootSelfStaticEffect(isInheritedEffect: true, card: card, condition: null));
  78. }
  79. #endregion
  80. return cardEffects;
  81. }
  82. }
  83. }