BT19_067.cs 4.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. namespace DCGO.CardEffects.BT19
  5. {
  6. public class BT19_067 : CEntity_Effect
  7. {
  8. public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
  9. {
  10. List<ICardEffect> cardEffects = new List<ICardEffect>();
  11. #region On Play
  12. if (timing == EffectTiming.OnEnterFieldAnyone)
  13. {
  14. ActivateClass activateClass = new ActivateClass();
  15. activateClass.SetUpICardEffect("Play 1 purple Tamer from trash", CanUseCondition, card);
  16. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDescription());
  17. cardEffects.Add(activateClass);
  18. string EffectDescription()
  19. {
  20. return "[On Play] If you have 1 or fewer Tamers, you may play 1 purple Tamer with a play cost of 4 or less from your trash without paying the cost.";
  21. }
  22. bool CanUseCondition(Hashtable hashtable)
  23. {
  24. return CardEffectCommons.CanTriggerOnPlay(hashtable, card);
  25. }
  26. bool CanSelectCardCondition(CardSource cardSource)
  27. {
  28. return cardSource.IsTamer && cardSource.GetCostItself <= 4 && cardSource.HasCardColor(CardColor.Purple) && CardEffectCommons.CanPlayAsNewPermanent(cardSource: cardSource, payCost: false, cardEffect: activateClass);
  29. }
  30. bool CanActivateCondition(Hashtable hashtable)
  31. {
  32. return CardEffectCommons.IsExistOnBattleAreaDigimon(card) && CardEffectCommons.HasMatchConditionOwnersCardInTrash(card, CanSelectCardCondition) && card.Owner.GetBattleAreaPermanents().Count(permanent => permanent.IsTamer) <= 1;
  33. }
  34. IEnumerator ActivateCoroutine(Hashtable hashtable)
  35. {
  36. List<CardSource> selectedCards = new List<CardSource>();
  37. SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
  38. selectCardEffect.SetUp(
  39. canTargetCondition: CanSelectCardCondition,
  40. canTargetCondition_ByPreSelecetedList: null,
  41. canEndSelectCondition: null,
  42. canNoSelect: () => true,
  43. selectCardCoroutine: SelectCardCoroutine,
  44. afterSelectCardCoroutine: null,
  45. message: "Select 1 card to play.",
  46. maxCount: 1,
  47. canEndNotMax: false,
  48. isShowOpponent: true,
  49. mode: SelectCardEffect.Mode.Custom,
  50. root: SelectCardEffect.Root.Trash,
  51. customRootCardList: null,
  52. canLookReverseCard: true,
  53. selectPlayer: card.Owner,
  54. cardEffect: activateClass);
  55. selectCardEffect.SetUpCustomMessage("Select 1 purple Tamer with a play cost of 4 or less to play.", "The opponent is selecting 1 card to play.");
  56. selectCardEffect.SetUpCustomMessage_ShowCard("Played Card");
  57. yield return StartCoroutine(selectCardEffect.Activate());
  58. IEnumerator SelectCardCoroutine(CardSource cardSource)
  59. {
  60. selectedCards.Add(cardSource);
  61. yield return null;
  62. }
  63. yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlayPermanentCards(cardSources: selectedCards, activateClass: activateClass, payCost: false, isTapped: false, root: SelectCardEffect.Root.Trash, activateETB: true));
  64. }
  65. }
  66. #endregion
  67. #region Inherit
  68. if (timing == EffectTiming.OnDestroyedAnyone)
  69. {
  70. cardEffects.Add(CardEffectFactory.RetaliationSelfEffect(isInheritedEffect: true, card: card, condition: null));
  71. }
  72. #endregion
  73. return cardEffects;
  74. }
  75. }
  76. }