Fortitude.cs 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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 || CanActivateOnDeletionInherited(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> CardSources = CardEffectCommons.GetCardSourcesFromHashtable(hashtable1);
  27. if (CardSources != null)
  28. {
  29. if (CardSources.Contains(card))
  30. {
  31. if (CardSources.Count >= 2)
  32. {
  33. if (CardEffectCommons.CanPlayAsNewPermanent(cardSource: card, payCost: false, cardEffect: activateClass, root: SelectCardEffect.Root.Trash))
  34. {
  35. return true;
  36. }
  37. }
  38. }
  39. }
  40. }
  41. }
  42. }
  43. }
  44. return false;
  45. }
  46. #endregion
  47. #region Effect process of [Fortitude]
  48. public static IEnumerator FortitudeProcess(Hashtable hashtable, CardSource card, ICardEffect activateClass)
  49. {
  50. yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.PlayPermanentCards(
  51. cardSources: new List<CardSource>() { card },
  52. activateClass: activateClass,
  53. payCost: false,
  54. isTapped: false,
  55. root: SelectCardEffect.Root.Trash,
  56. activateETB: true));
  57. }
  58. #endregion
  59. #region Target 1 Digimon gains [Fortitude]
  60. public static IEnumerator GainFortitude(Permanent targetPermanent, EffectDuration effectDuration, ICardEffect activateClass)
  61. {
  62. if (targetPermanent == null) yield break;
  63. if (!IsPermanentExistsOnBattleArea(targetPermanent)) yield break;
  64. if (activateClass == null) yield break;
  65. if (activateClass.EffectSourceCard == null) yield break;
  66. CardSource card = activateClass.EffectSourceCard;
  67. bool CanUseCondition()
  68. {
  69. if (IsPermanentExistsOnBattleArea(targetPermanent))
  70. {
  71. if (!targetPermanent.TopCard.CanNotBeAffected(activateClass))
  72. {
  73. return true;
  74. }
  75. }
  76. return false;
  77. }
  78. ActivateClass evade = CardEffectFactory.EvadeEffect(targetPermanent: targetPermanent, isInheritedEffect: false, condition: CanUseCondition, rootCardEffect: activateClass, targetPermanent.TopCard);
  79. AddEffectToPermanent(targetPermanent: targetPermanent, effectDuration: effectDuration, card: card, cardEffect: evade, timing: EffectTiming.OnDestroyedAnyone);
  80. if (!targetPermanent.TopCard.CanNotBeAffected(activateClass))
  81. {
  82. yield return ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<Effects>().CreateBuffEffect(targetPermanent));
  83. }
  84. }
  85. #endregion
  86. }