Fortitude.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System;
  4. using System.Linq;
  5. using UnityEngine;
  6. public partial class CardEffectCommons
  7. {
  8. #region Can trigger [Fortitude]
  9. public static bool CanTriggerFortitude(Hashtable hashtable, CardSource card)
  10. {
  11. return CanTriggerOnDeletion(hashtable, card);
  12. }
  13. #endregion
  14. #region Can activate [Fortitude]
  15. public static bool CanActivateFortitude(Hashtable hashtable, CardSource card, bool isInheritedEffect, ICardEffect activateClass)
  16. {
  17. if (IsExistOnTrash(card))
  18. {
  19. if (!isInheritedEffect || CanActivateOnDeletion( hashtable, card))
  20. {
  21. List<Hashtable> hashtables = CardEffectCommons.GetHashtablesFromHashtable(hashtable);
  22. if (hashtables != null)
  23. {
  24. foreach (Hashtable hashtable1 in hashtables)
  25. {
  26. List<CardSource> CardStack = CardEffectCommons.GetCardSourcesFromHashtable(hashtable1);
  27. List<CardSource> CardSources = CardEffectCommons.GetDigivolutionSourcesFromHashtable(hashtable1);
  28. if (CardStack != null && CardSources != null)
  29. {
  30. if (CardStack.Contains(card))
  31. {
  32. if (CardSources.Count >= 1)
  33. {
  34. if (CardEffectCommons.CanPlayAsNewPermanent(cardSource: card, payCost: false, cardEffect: activateClass, root: SelectCardEffect.Root.Trash))
  35. {
  36. return true;
  37. }
  38. }
  39. }
  40. }
  41. }
  42. }
  43. }
  44. }
  45. return false;
  46. }
  47. #endregion
  48. #region Effect process of [Fortitude]
  49. public static IEnumerator FortitudeProcess(Hashtable hashtable, CardSource card, ICardEffect activateClass)
  50. {
  51. yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlayPermanentCards(
  52. cardSources: new List<CardSource>() { card },
  53. activateClass: activateClass,
  54. payCost: false,
  55. isTapped: false,
  56. root: SelectCardEffect.Root.Trash,
  57. activateETB: true));
  58. }
  59. #endregion
  60. #region Target 1 Digimon gains [Fortitude]
  61. public static IEnumerator GainFortitude(Permanent targetPermanent, EffectDuration effectDuration, ICardEffect activateClass)
  62. {
  63. if (targetPermanent == null) yield break;
  64. if (!IsPermanentExistsOnBattleArea(targetPermanent)) yield break;
  65. if (activateClass == null) yield break;
  66. if (activateClass.EffectSourceCard == null) yield break;
  67. CardSource card = activateClass.EffectSourceCard;
  68. bool CanUseCondition()
  69. {
  70. if (IsPermanentExistsOnBattleArea(targetPermanent))
  71. {
  72. if (!targetPermanent.TopCard.CanNotBeAffected(activateClass))
  73. {
  74. return true;
  75. }
  76. }
  77. return false;
  78. }
  79. ActivateClass evade = CardEffectFactory.EvadeEffect(targetPermanent: targetPermanent, isInheritedEffect: false, condition: CanUseCondition, rootCardEffect: activateClass, targetPermanent.TopCard);
  80. AddEffectToPermanent(targetPermanent: targetPermanent, effectDuration: effectDuration, card: card, cardEffect: evade, timing: EffectTiming.OnDestroyedAnyone);
  81. if (!targetPermanent.TopCard.CanNotBeAffected(activateClass))
  82. {
  83. yield return ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<Effects>().CreateBuffEffect(targetPermanent));
  84. }
  85. }
  86. #endregion
  87. }