ST12_15.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using System.Linq;
  5. using Photon;
  6. using System;
  7. using Photon.Pun;
  8. public class ST12_15 : CEntity_Effect
  9. {
  10. public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
  11. {
  12. List<ICardEffect> cardEffects = new List<ICardEffect>();
  13. if (timing == EffectTiming.OptionSkill)
  14. {
  15. ActivateClass activateClass = new ActivateClass();
  16. activateClass.SetUpICardEffect(card.BaseENGCardNameFromEntity, CanUseCondition, card);
  17. activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
  18. cardEffects.Add(activateClass);
  19. string EffectDiscription()
  20. {
  21. return "[Main] Reveal the top 3 cards of your deck. Add 1 card with [Huckmon] or [Sistermon] in its name or [Royal Knight] in its traits among them to your hand. Trash the rest. Then, place this card in your Battle Area.";
  22. }
  23. bool CanSelectCardCondition(CardSource cardSource)
  24. {
  25. if (cardSource.ContainsCardName("Huckmon"))
  26. {
  27. return true;
  28. }
  29. if (cardSource.ContainsCardName("Sistermon"))
  30. {
  31. return true;
  32. }
  33. if (cardSource.HasRoyalKnightTraits)
  34. {
  35. return true;
  36. }
  37. return false;
  38. }
  39. bool CanUseCondition(Hashtable hashtable)
  40. {
  41. return CardEffectCommons.CanTriggerOptionMainEffect(hashtable, card);
  42. }
  43. IEnumerator ActivateCoroutine(Hashtable _hashtable)
  44. {
  45. yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.SimplifiedRevealDeckTopCardsAndSelect(
  46. revealCount: 3,
  47. simplifiedSelectCardConditions:
  48. new SimplifiedSelectCardConditionClass[]
  49. {
  50. new SimplifiedSelectCardConditionClass(
  51. canTargetCondition:CanSelectCardCondition,
  52. message: "Select 1 card with [Huckmon] or [Sistermon] in its name or [Royal Knight] in its traits.",
  53. mode: SelectCardEffect.Mode.AddHand,
  54. maxCount: 1,
  55. selectCardCoroutine: null),
  56. },
  57. remainingCardsPlace: RemainingCardsPlace.Trash,
  58. activateClass: activateClass
  59. ));
  60. yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlaceDelayOptionCards(card: card, cardEffect: activateClass));
  61. }
  62. }
  63. if (timing == EffectTiming.OnDeclaration)
  64. {
  65. ActivateClass activateClass = new ActivateClass();
  66. activateClass.SetUpICardEffect("Digivolution Cost -1", CanUseCondition, card);
  67. activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
  68. cardEffects.Add(activateClass);
  69. string EffectDiscription()
  70. {
  71. return "[Main] <Delay> (Trash this card in your battle area to activate the effect below. You can't activate this effect the turn this card enters play.) - The next time one of your Digimon would digivolve this turn, reduce the digivolution cost by 1.";
  72. }
  73. bool CanUseCondition(Hashtable hashtable)
  74. {
  75. return CardEffectCommons.CanDeclareOptionDelayEffect(card);
  76. }
  77. IEnumerator ActivateCoroutine(Hashtable _hashtable)
  78. {
  79. yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.DeletePeremanentAndProcessAccordingToResult(targetPermanents: new List<Permanent>() { card.PermanentOfThisCard() }, activateClass: activateClass, successProcess: permanents => SuccessProcess(), failureProcess: null));
  80. IEnumerator SuccessProcess()
  81. {
  82. ContinuousController.instance.PlaySE(GManager.instance.GetComponent<Effects>().BuffSE);
  83. yield return new WaitForSeconds(0.2f);
  84. ChangeCostClass changeCostClass = new ChangeCostClass();
  85. Func<EffectTiming, ICardEffect> getCardEffect = GetCardEffect;
  86. changeCostClass.SetUpICardEffect("Digivolution Cost -1", CanUseCondition1, card);
  87. changeCostClass.SetUpChangeCostClass(changeCostFunc: ChangeCost, cardSourceCondition: CardSourceCondition, rootCondition: RootCondition, isUpDown: isUpDown, isCheckAvailability: () => false, isChangePayingCost: () => true);
  88. CardEffectCommons.AddEffectToPlayer(effectDuration: EffectDuration.UntilEachTurnEnd, card: card, cardEffect: null, timing: EffectTiming.None, getCardEffect: getCardEffect);
  89. ActivateClass activateClass1 = new ActivateClass();
  90. Func<EffectTiming, ICardEffect> getCardEffect1 = GetCardEffect1;
  91. activateClass1.SetUpICardEffect("Remove Effect", CanUseCondition1, card);
  92. activateClass1.SetUpActivateClass(null, ActivateCoroutine1, -1, false, "");
  93. activateClass1.SetIsBackgroundProcess(true);
  94. CardEffectCommons.AddEffectToPlayer(effectDuration: EffectDuration.UntilEachTurnEnd, card: card, cardEffect: null, timing: EffectTiming.None, getCardEffect: getCardEffect1);
  95. bool CanUseCondition1(Hashtable hashtable)
  96. {
  97. return true;
  98. }
  99. int ChangeCost(CardSource cardSource, int Cost, SelectCardEffect.Root root, List<Permanent> targetPermanents)
  100. {
  101. if (CardSourceCondition(cardSource))
  102. {
  103. if (RootCondition(root))
  104. {
  105. if (PermanentsCondition(targetPermanents))
  106. {
  107. Cost -= 1;
  108. }
  109. }
  110. }
  111. return Cost;
  112. }
  113. bool PermanentsCondition(List<Permanent> targetPermanents)
  114. {
  115. if (targetPermanents != null)
  116. {
  117. if (targetPermanents.Count(PermanentCondition) >= 1)
  118. {
  119. return true;
  120. }
  121. }
  122. return false;
  123. }
  124. bool PermanentCondition(Permanent targetPermanent)
  125. {
  126. return CardEffectCommons.IsPermanentExistsOnOwnerBattleArea(targetPermanent, card);
  127. }
  128. bool CardSourceCondition(CardSource cardSource)
  129. {
  130. return cardSource.Owner == card.Owner;
  131. }
  132. bool RootCondition(SelectCardEffect.Root root)
  133. {
  134. return true;
  135. }
  136. bool isUpDown()
  137. {
  138. return true;
  139. }
  140. ICardEffect GetCardEffect(EffectTiming _timing)
  141. {
  142. return changeCostClass;
  143. }
  144. IEnumerator ActivateCoroutine1(Hashtable _hashtable1)
  145. {
  146. if (CardEffectCommons.CanTriggerWhenPermanentWouldDigivolve(
  147. hashtable: _hashtable1,
  148. permanentCondition: PermanentCondition,
  149. cardCondition: CardSourceCondition))
  150. {
  151. card.Owner.UntilEachTurnEndEffects.Remove(getCardEffect);
  152. card.Owner.UntilEachTurnEndEffects.Remove(getCardEffect1);
  153. yield return null;
  154. }
  155. }
  156. ICardEffect GetCardEffect1(EffectTiming _timing)
  157. {
  158. if (_timing == EffectTiming.AfterPayCost)
  159. {
  160. return activateClass1;
  161. }
  162. return null;
  163. }
  164. }
  165. }
  166. }
  167. if (timing == EffectTiming.SecuritySkill)
  168. {
  169. ActivateClass activateClass = new ActivateClass();
  170. activateClass.SetUpICardEffect("Reveal the top 3 cards of deck and place this card in battle area", CanUseCondition, card);
  171. activateClass.SetUpActivateClass(null, ActivateCoroutine, -1, false, EffectDiscription());
  172. activateClass.SetIsSecurityEffect(true);
  173. cardEffects.Add(activateClass);
  174. string EffectDiscription()
  175. {
  176. return "[Security] Reveal 3 cards from the top of your deck. Add 1 card with [Huckmon] or [Sistermon] in its name or [Royal Knight] in its traits among them to your hand. Trash the rest. Then, place this card in your Battle Area.";
  177. }
  178. bool CanSelectCardCondition(CardSource cardSource)
  179. {
  180. if (cardSource.ContainsCardName("Huckmon"))
  181. {
  182. return true;
  183. }
  184. if (cardSource.ContainsCardName("Sistermon"))
  185. {
  186. return true;
  187. }
  188. if (cardSource.HasRoyalKnightTraits)
  189. {
  190. return true;
  191. }
  192. return false;
  193. }
  194. bool CanUseCondition(Hashtable hashtable)
  195. {
  196. return CardEffectCommons.CanTriggerSecurityEffect(hashtable, card);
  197. }
  198. IEnumerator ActivateCoroutine(Hashtable _hashtable)
  199. {
  200. yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.SimplifiedRevealDeckTopCardsAndSelect(
  201. revealCount: 3,
  202. simplifiedSelectCardConditions:
  203. new SimplifiedSelectCardConditionClass[]
  204. {
  205. new SimplifiedSelectCardConditionClass(
  206. canTargetCondition:CanSelectCardCondition,
  207. message: "Select 1 card with [Huckmon] or [Sistermon] in its name or [Royal Knight] in its traits.",
  208. mode: SelectCardEffect.Mode.AddHand,
  209. maxCount: 1,
  210. selectCardCoroutine: null),
  211. },
  212. remainingCardsPlace: RemainingCardsPlace.Trash,
  213. activateClass: activateClass
  214. ));
  215. yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlaceDelayOptionCards(card: card, cardEffect: activateClass));
  216. }
  217. }
  218. return cardEffects;
  219. }
  220. }