ST19_05.cs 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. namespace DCGO.CardEffects.ST19
  4. {
  5. public class ST19_05 : CEntity_Effect
  6. {
  7. public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
  8. {
  9. List<ICardEffect> cardEffects = new List<ICardEffect>();
  10. #region Blocker
  11. if (timing == EffectTiming.None)
  12. {
  13. cardEffects.Add(CardEffectFactory.BlockerSelfStaticEffect(
  14. isInheritedEffect: false,
  15. card: card,
  16. condition: null));
  17. }
  18. #endregion
  19. #region On Deletion
  20. if (timing == EffectTiming.OnDestroyedAnyone)
  21. {
  22. ActivateClass activateClass = new ActivateClass();
  23. activateClass.SetUpICardEffect("Trash 1 [Puppet], <Draw 2>", CanUseCondition, card);
  24. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, true, EffectDescription());
  25. cardEffects.Add(activateClass);
  26. string EffectDescription()
  27. {
  28. return "[On Deletion] By trashing 1 card with the [Puppet] trait in your hand, <Draw 2>.";
  29. }
  30. bool CanUseCondition(Hashtable hashtable)
  31. {
  32. return CardEffectCommons.CanTriggerOnDeletion(hashtable, card, activateClass);
  33. }
  34. bool HasPuppetInTrait(CardSource cardSource)
  35. {
  36. return cardSource.ContainsTraits("Puppet");
  37. }
  38. bool CanActivateCondition(Hashtable hashtable)
  39. {
  40. return CardEffectCommons.CanActivateOnDeletion(card, activateClass) &&
  41. CardEffectCommons.HasMatchConditionOwnersHand(card, HasPuppetInTrait);
  42. }
  43. IEnumerator ActivateCoroutine(Hashtable hashtable)
  44. {
  45. SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
  46. selectHandEffect.SetUp(
  47. canTargetCondition: HasPuppetInTrait,
  48. canTargetCondition_ByPreSelecetedList: null,
  49. canEndSelectCondition: null,
  50. canNoSelect: true,
  51. selectCardCoroutine: null,
  52. afterSelectCardCoroutine: AfterSelectCardCoroutine,
  53. maxCount: 1,
  54. canEndNotMax: false,
  55. isShowOpponent: true,
  56. mode: SelectHandEffect.Mode.Discard,
  57. selectPlayer: card.Owner,
  58. cardEffect: activateClass);
  59. selectHandEffect.SetUpCustomMessage("Select 1 card with [Puppet] trait to discard.",
  60. "The opponent is selecting 1 card with [Puppet] trait to discard.");
  61. yield return ContinuousController.instance.StartCoroutine(selectHandEffect.Activate());
  62. IEnumerator AfterSelectCardCoroutine(List<CardSource> cardSources)
  63. {
  64. if (cardSources.Count > 0)
  65. yield return ContinuousController.instance.StartCoroutine(
  66. new DrawClass(card.Owner, 2, activateClass).Draw());
  67. }
  68. }
  69. }
  70. #endregion
  71. return cardEffects;
  72. }
  73. }
  74. }