ArmorPurge.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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 activate [Armor Purge]
  9. public static bool CanActivateArmorPurge(CardSource card)
  10. {
  11. if (IsExistOnBattleArea(card))
  12. {
  13. if (card.PermanentOfThisCard().DigivolutionCards.Count >= 1)
  14. {
  15. return true;
  16. }
  17. }
  18. return false;
  19. }
  20. #endregion
  21. #region Effect process of [Armor Purge]
  22. public static IEnumerator ArmorPurgeProcess(CardSource card)
  23. {
  24. yield return ContinuousController.instance.StartCoroutine(new ArmorPurgeClass(card.PermanentOfThisCard()).ArmorPurge());
  25. }
  26. #endregion
  27. #region Armor Purge class
  28. public class ArmorPurgeClass
  29. {
  30. public ArmorPurgeClass(Permanent permanent)
  31. {
  32. _permanent = permanent;
  33. }
  34. Permanent _permanent { get; set; }
  35. public IEnumerator ArmorPurge()
  36. {
  37. if (_permanent != null)
  38. {
  39. if (_permanent.TopCard != null)
  40. {
  41. if (_permanent.DigivolutionCards.Count >= 1)
  42. {
  43. yield return ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<Effects>().CreateDebuffEffect(_permanent));
  44. CardSource topCard = _permanent.TopCard;
  45. yield return ContinuousController.instance.StartCoroutine(CardObjectController.RemoveFromAllArea(topCard));
  46. if (!topCard.IsToken)
  47. {
  48. yield return ContinuousController.instance.StartCoroutine(CardObjectController.AddTrashCard(topCard));
  49. }
  50. _permanent.ShowDeleteEffect();
  51. yield return ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<Effects>().RemoveDigivolveRootEffect(topCard, _permanent));
  52. _permanent.willBeRemoveField = false;
  53. _permanent.HideDeleteEffect();
  54. _permanent.TopCard.SetChangedLocationTime();//register that the new topcard just became a top card for the purpose of the start of timestamped continuous effects
  55. #region "When Top Card is Trashed" effect
  56. #region Hashtable Setting
  57. System.Collections.Hashtable hashtable = new System.Collections.Hashtable()
  58. {
  59. {"Permanent", _permanent},
  60. {"CardSources", new List<CardSource> { topCard } }
  61. };
  62. #endregion
  63. yield return ContinuousController.instance.StartCoroutine(GManager.instance.autoProcessing
  64. .StackSkillInfos(hashtable,EffectTiming.WhenTopCardTrashed));
  65. #endregion
  66. #region Log
  67. string log = "";
  68. log += $"\nArmor Purge :";
  69. log += $"\n{topCard.BaseENGCardNameFromEntity}({topCard.CardID})";
  70. log += "\n";
  71. PlayLog.OnAddLog?.Invoke(log);
  72. #endregion
  73. }
  74. }
  75. }
  76. }
  77. }
  78. #endregion
  79. }