P_210.cs 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. // Hiroko Sagisaka
  6. namespace DCGO.CardEffects.P
  7. {
  8. public class P_210 : CEntity_Effect
  9. {
  10. public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
  11. {
  12. List<ICardEffect> cardEffects = new List<ICardEffect>();
  13. #region Start of Main Phase
  14. if (timing == EffectTiming.OnStartMainPhase)
  15. {
  16. cardEffects.Add(CardEffectFactory.Gain1MemoryTamerOpponentDigimonEffect(card));
  17. }
  18. #endregion
  19. #region On Play
  20. if (timing == EffectTiming.OnEnterFieldAnyone)
  21. {
  22. ActivateClass activateClass = new ActivateClass();
  23. activateClass.SetUpICardEffect("Add 1 [TS] digimon from trash to hand", CanUseCondition, card);
  24. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, false, EffectDiscription());
  25. cardEffects.Add(activateClass);
  26. string EffectDiscription()
  27. {
  28. return "[On Play] You may return 1 Digimon card with the [TS] trait from your trash to the hand.";
  29. }
  30. bool CanUseCondition(Hashtable hashtable)
  31. {
  32. return CardEffectCommons.IsExistOnBattleArea(card)
  33. && CardEffectCommons.CanTriggerOnPlay(hashtable, card);
  34. }
  35. bool CanActivateCondition(Hashtable hashtable)
  36. {
  37. return CardEffectCommons.IsExistOnBattleArea(card);
  38. }
  39. bool CanSelectCardCondition(CardSource cardSource)
  40. {
  41. return cardSource.IsDigimon
  42. && cardSource.HasTSTraits;
  43. }
  44. IEnumerator ActivateCoroutine(Hashtable hashtable)
  45. {
  46. if (CardEffectCommons.HasMatchConditionOwnersCardInTrash(card, CanSelectCardCondition))
  47. {
  48. SelectCardEffect selectCardEffect = GManager.instance.GetComponent<SelectCardEffect>();
  49. int maxCount = Math.Min(1, card.Owner.TrashCards.Count(CanSelectCardCondition));
  50. selectCardEffect.SetUp(
  51. canTargetCondition: CanSelectCardCondition,
  52. canTargetCondition_ByPreSelecetedList: null,
  53. canEndSelectCondition: null,
  54. canNoSelect: () => true,
  55. selectCardCoroutine: null,
  56. afterSelectCardCoroutine: null,
  57. message: "Select 1 card to add to your hand.",
  58. maxCount: maxCount,
  59. canEndNotMax: false,
  60. isShowOpponent: true,
  61. mode: SelectCardEffect.Mode.AddHand,
  62. root: SelectCardEffect.Root.Trash,
  63. customRootCardList: null,
  64. canLookReverseCard: true,
  65. selectPlayer: card.Owner,
  66. cardEffect: activateClass);
  67. yield return ContinuousController.instance.StartCoroutine(selectCardEffect.Activate());
  68. }
  69. }
  70. }
  71. #endregion
  72. #region Security
  73. if (timing == EffectTiming.SecuritySkill)
  74. {
  75. cardEffects.Add(CardEffectFactory.PlaySelfTamerSecurityEffect(card));
  76. }
  77. #endregion
  78. return cardEffects;
  79. }
  80. }
  81. }