EX11_037.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. // Espimon
  6. namespace DCGO.CardEffects.EX11
  7. {
  8. public class EX11_037 : CEntity_Effect
  9. {
  10. public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
  11. {
  12. List<ICardEffect> cardEffects = new List<ICardEffect>();
  13. #region Alternate Digivolution Requirement
  14. if (timing == EffectTiming.None)
  15. {
  16. static bool PermanentCondition(Permanent targetPermanent)
  17. {
  18. return targetPermanent.TopCard.EqualsCardName("Kapurimon");
  19. }
  20. cardEffects.Add(CardEffectFactory.AddSelfDigivolutionRequirementStaticEffect(permanentCondition: PermanentCondition, digivolutionCost: 0, ignoreDigivolutionRequirement: false, card: card, condition: null));
  21. }
  22. #endregion
  23. #region Shared WM / OP
  24. string SharedEffectName = "Flip security card face up. If you don't, Draw 1 and gain 1 memory.";
  25. string SharedEffectDescription(string tag) => $"[{tag}] Flip your opponent's top face-down security card face up. If this effect didn't flip, <Draw 1> and gain 1 memory.";
  26. bool SharedCanActivateCondition(Hashtable hashtable) => CardEffectCommons.IsExistOnBattleAreaDigimon(card);
  27. IEnumerator SharedActivateCoroutine(Hashtable hashtable, ActivateClass activateClass)
  28. {
  29. bool cardFlipped = false;
  30. foreach (CardSource source in card.Owner.Enemy.SecurityCards)
  31. {
  32. if (!source.IsFlipped)
  33. continue;
  34. yield return ContinuousController.instance.StartCoroutine(new IFlipSecurity(source).FlipFaceUp());
  35. cardFlipped = true;
  36. break;
  37. }
  38. if(!cardFlipped)
  39. {
  40. yield return ContinuousController.instance.StartCoroutine(new DrawClass(card.Owner, 1, activateClass).Draw());
  41. yield return ContinuousController.instance.StartCoroutine(card.Owner.AddMemory(1, activateClass));
  42. }
  43. yield return null;
  44. }
  45. #endregion
  46. #region When Moving
  47. if (timing == EffectTiming.OnMove)
  48. {
  49. ActivateClass activateClass = new ActivateClass();
  50. activateClass.SetUpICardEffect(SharedEffectName, CanUseCondition, card);
  51. activateClass.SetUpActivateClass(SharedCanActivateCondition, (hashTable) => SharedActivateCoroutine(hashTable, activateClass), -1, false, SharedEffectDescription("When Moving"));
  52. cardEffects.Add(activateClass);
  53. bool PermanentCondition(Permanent permanent)
  54. {
  55. return permanent == card.PermanentOfThisCard();
  56. }
  57. bool CanUseCondition(Hashtable hashtable)
  58. {
  59. return CardEffectCommons.IsExistOnBattleAreaDigimon(card)
  60. && CardEffectCommons.CanTriggerOnMove(hashtable, PermanentCondition);
  61. }
  62. }
  63. #endregion
  64. #region On Play
  65. if (timing == EffectTiming.OnEnterFieldAnyone)
  66. {
  67. ActivateClass activateClass = new ActivateClass();
  68. activateClass.SetUpICardEffect(SharedEffectName, CanUseCondition, card);
  69. activateClass.SetUpActivateClass(SharedCanActivateCondition, (hashTable) => SharedActivateCoroutine(hashTable, activateClass), -1, false, SharedEffectDescription("On Play"));
  70. cardEffects.Add(activateClass);
  71. bool CanUseCondition(Hashtable hashtable)
  72. {
  73. return CardEffectCommons.IsExistOnBattleAreaDigimon(card) &&
  74. CardEffectCommons.CanTriggerOnPlay(hashtable, card);
  75. }
  76. }
  77. #endregion
  78. #region Jamming - ESS
  79. if (timing == EffectTiming.None)
  80. {
  81. cardEffects.Add(CardEffectFactory.JammingSelfStaticEffect(isInheritedEffect: true,card: card,condition: null));
  82. }
  83. #endregion
  84. return cardEffects;
  85. }
  86. }
  87. }