CanNotBlock.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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 Target 1 Digimon can't block
  9. public static IEnumerator GainCanNotBlock(Permanent targetPermanent, Func<Permanent, bool> attackerCondition, EffectDuration effectDuration, ICardEffect activateClass, string effectName)
  10. {
  11. if (targetPermanent == null) yield break;
  12. if (!IsPermanentExistsOnBattleArea(targetPermanent)) yield break;
  13. if (activateClass == null) yield break;
  14. if (activateClass.EffectSourceCard == null) yield break;
  15. CardSource card = activateClass.EffectSourceCard;
  16. bool AttackerCondition(Permanent defender)
  17. {
  18. if (attackerCondition == null || attackerCondition(defender))
  19. {
  20. return true;
  21. }
  22. return false;
  23. }
  24. bool DefenderCondition(Permanent attacker) => attacker == targetPermanent;
  25. bool CanUseCondition()
  26. {
  27. if (IsPermanentExistsOnBattleArea(targetPermanent))
  28. {
  29. if (!targetPermanent.TopCard.CanNotBeAffected(activateClass))
  30. {
  31. return true;
  32. }
  33. }
  34. return false;
  35. }
  36. CannotBlockClass canNotAttackClass = CardEffectFactory.CanNotBlockStaticEffect(attackerCondition: AttackerCondition, defenderCondition: DefenderCondition, isInheritedEffect: false, card: card, condition: CanUseCondition, effectName: effectName);
  37. AddEffectToPermanent(targetPermanent: targetPermanent, effectDuration: effectDuration, card: card, cardEffect: canNotAttackClass, timing: EffectTiming.None);
  38. if (!targetPermanent.TopCard.CanNotBeAffected(activateClass))
  39. {
  40. yield return ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<Effects>().CreateDebuffEffect(targetPermanent));
  41. }
  42. }
  43. #endregion
  44. }