ChangeSAttack.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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 Player gains effect to change Digimon's SAttack
  9. public static IEnumerator ChangeDigimonSAttackPlayerEffect(
  10. Func<Permanent, bool> permanentCondition,
  11. int changeValue,
  12. EffectDuration effectDuration,
  13. ICardEffect activateClass)
  14. {
  15. if (activateClass == null) yield break;
  16. if (activateClass.EffectSourceCard == null) yield break;
  17. if (changeValue == 0) yield break;
  18. CardSource card = activateClass.EffectSourceCard;
  19. bool isUpValue = changeValue > 0;
  20. bool PermanentCondition(Permanent permanent)
  21. {
  22. if (IsPermanentExistsOnBattleArea(permanent))
  23. {
  24. if (!permanent.TopCard.CanNotBeAffected(activateClass))
  25. {
  26. if (permanentCondition == null || permanentCondition(permanent))
  27. {
  28. return true;
  29. }
  30. }
  31. }
  32. return false;
  33. }
  34. bool CanUseCondition()
  35. {
  36. return true;
  37. }
  38. ChangeSAttackClass changeDPClass = CardEffectFactory.ChangeSAttackStaticEffect(
  39. permanentCondition: PermanentCondition,
  40. changeValue: changeValue,
  41. isInheritedEffect: false,
  42. card: card,
  43. condition: CanUseCondition);
  44. AddEffectToPlayer(effectDuration: effectDuration, card: card, cardEffect: changeDPClass, timing: EffectTiming.None);
  45. foreach (Permanent permanent in GManager.instance.turnStateMachine.gameContext.PermanentsForTurnPlayer)
  46. {
  47. if (PermanentCondition(permanent))
  48. {
  49. if (isUpValue)
  50. {
  51. yield return ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<Effects>().CreateBuffEffect(permanent));
  52. }
  53. else
  54. {
  55. yield return ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<Effects>().CreateDebuffEffect(permanent));
  56. }
  57. }
  58. }
  59. }
  60. #endregion
  61. }