EX11_005.cs 4.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. // Yaamon
  5. namespace DCGO.CardEffects.EX11
  6. {
  7. public class EX11_005 : CEntity_Effect
  8. {
  9. public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
  10. {
  11. List<ICardEffect> cardEffects = new List<ICardEffect>();
  12. #region Start of Your Main Phase
  13. if (timing == EffectTiming.OnStartMainPhase)
  14. {
  15. ActivateClass activateClass = new ActivateClass();
  16. activateClass.SetUpICardEffect("Digivolve into [Dark Dragon]/[Evil Dragon] trait for 1 less, if so trash 2 from hand.", CanUseCondition, card);
  17. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDescription());
  18. activateClass.SetIsInheritedEffect(true);
  19. cardEffects.Add(activateClass);
  20. string EffectDescription()
  21. {
  22. return "[Start of Your Main Phase] This Digimon may digivolve into a [Dark Dragon] or [Evil Dragon] trait Digimon card in the trash with the digivolution cost reduced by 1. If this effect digivolved, trash 2 cards in your hand.";
  23. }
  24. bool CanUseCondition(Hashtable hashtable)
  25. {
  26. return CardEffectCommons.IsExistOnBattleArea(card)
  27. && CardEffectCommons.IsOwnerTurn(card);
  28. }
  29. bool CanActivateCondition(Hashtable hashtable)
  30. {
  31. return CardEffectCommons.IsExistOnBattleArea(card)
  32. && CardEffectCommons.HasMatchConditionOwnersCardInTrash(card, CanSelectCardCondition);
  33. }
  34. bool CanSelectCardCondition(CardSource cardSource)
  35. {
  36. return cardSource.IsDigimon
  37. && (cardSource.EqualsTraits("Dark Dragon")
  38. || cardSource.EqualsTraits("Evil Dragon"))
  39. && cardSource.CanPlayCardTargetFrame(card.PermanentOfThisCard().PermanentFrame, false, activateClass, SelectCardEffect.Root.Trash);
  40. }
  41. IEnumerator ActivateCoroutine(Hashtable hashtable)
  42. {
  43. yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.DigivolveIntoHandOrTrashCard(
  44. targetPermanent: card.PermanentOfThisCard(),
  45. cardCondition: CanSelectCardCondition,
  46. payCost: true,
  47. reduceCostTuple: (reduceCost: 1, reduceCostCardCondition: null),
  48. fixedCostTuple: null,
  49. ignoreDigivolutionRequirementFixedCost: -1,
  50. isHand: false,
  51. activateClass: activateClass,
  52. successProcess: SuccessProcess()));
  53. IEnumerator SuccessProcess()
  54. {
  55. int discardCount = Math.Min(2, card.Owner.HandCards.Count);
  56. SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
  57. selectHandEffect.SetUp(
  58. selectPlayer: card.Owner,
  59. canTargetCondition: (cardSource) => true,
  60. canTargetCondition_ByPreSelecetedList: null,
  61. canEndSelectCondition: null,
  62. maxCount: discardCount,
  63. canNoSelect: false,
  64. canEndNotMax: false,
  65. isShowOpponent: true,
  66. selectCardCoroutine: null,
  67. afterSelectCardCoroutine: null,
  68. mode: SelectHandEffect.Mode.Discard,
  69. cardEffect: activateClass);
  70. yield return StartCoroutine(selectHandEffect.Activate());
  71. }
  72. }
  73. }
  74. #endregion
  75. return cardEffects;
  76. }
  77. }
  78. }