BT7_051.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. // RhinoKabuterimon
  5. public class BT7_051 : CEntity_Effect
  6. {
  7. public override List<ICardEffect> CardEffects(EffectTiming timing, CardSource card)
  8. {
  9. List<ICardEffect> cardEffects = new List<ICardEffect>();
  10. #region Reduced Cost
  11. if (timing == EffectTiming.None)
  12. {
  13. bool Condition()
  14. {
  15. return card.Owner.HandCards.Contains(card);
  16. }
  17. bool PermanentCondition(Permanent targetPermanent)
  18. {
  19. return CardEffectCommons.IsPermanentExistsOnOwnerBattleAreaDigimon(targetPermanent, card)
  20. && targetPermanent.DigivolutionCards.Any((cardSource) => cardSource.IsTamer);
  21. }
  22. bool CardSourceCondition(CardSource cardSource)
  23. {
  24. return cardSource == card
  25. && cardSource.Owner.HandCards.Contains(cardSource);
  26. }
  27. bool RootCondition(SelectCardEffect.Root root)
  28. {
  29. return root == SelectCardEffect.Root.Hand;
  30. }
  31. cardEffects.Add(CardEffectFactory.ChangeDigivolutionCostStaticEffect(
  32. changeValue: -2,
  33. permanentCondition: PermanentCondition,
  34. cardCondition: CardSourceCondition,
  35. rootCondition: RootCondition,
  36. isInheritedEffect: false,
  37. card: card,
  38. condition: Condition,
  39. setFixedCost: false));
  40. }
  41. #endregion
  42. #region When Attacking
  43. if (timing == EffectTiming.OnAllyAttack)
  44. {
  45. ActivateClass activateClass = new ActivateClass();
  46. activateClass.SetUpICardEffect("Digivolve this Digimon into [Insectoid] or [Ten Warriors] Digimon", CanUseCondition, card);
  47. activateClass.SetUpActivateClass(CanActivateCondition, ActivateCoroutine, -1, true, EffectDescription());
  48. cardEffects.Add(activateClass);
  49. string EffectDescription()
  50. {
  51. return "[When Attacking] If a card with [Hybrid] or [Insectoid] in its traits is in this Digimon's digivolution cards, this Digimon can digivolve into a Digimon card with [Insectoid] or [Ten Warriors] in its traits in your hand for a memory cost of 3.";
  52. }
  53. bool CanSelectCardCondition(CardSource cardSource)
  54. {
  55. return cardSource.IsDigimon
  56. && (cardSource.CardTraits.Contains("Insectoid")
  57. || cardSource.CardTraits.Contains("Ten Warriors"));
  58. }
  59. bool CanUseCondition(Hashtable hashtable)
  60. {
  61. return CardEffectCommons.IsExistOnBattleAreaTrigger(card, activateClass)
  62. && CardEffectCommons.CanTriggerOnAttack(hashtable, card);
  63. }
  64. bool CanActivateCondition(Hashtable hashtable)
  65. {
  66. return CardEffectCommons.IsExistOnBattleAreaActivate(card, activateClass)
  67. && CardEffectCommons.HasMatchConditionOwnersHand(card, CanSelectCardCondition)
  68. && card.PermanentOfThisCard().DigivolutionCards.Any((cardSource) =>
  69. (cardSource.EqualsTraits("Hybrid")
  70. || cardSource.EqualsTraits("Insectoid"))
  71. && !cardSource.IsFlipped);
  72. }
  73. IEnumerator ActivateCoroutine(Hashtable _hashtable)
  74. {
  75. yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.DigivolveIntoHandOrTrashCard(
  76. targetPermanent: card.PermanentOfThisCard(),
  77. cardCondition: CanSelectCardCondition,
  78. payCost: true,
  79. reduceCostTuple: null,
  80. fixedCostTuple: (fixedCost: 3, fixedCostCardCondition: null),
  81. ignoreDigivolutionRequirementFixedCost: -1,
  82. isHand: true,
  83. activateClass: activateClass,
  84. successProcess: null));
  85. }
  86. }
  87. #endregion
  88. return cardEffects;
  89. }
  90. }