Skip to content
This repository has been archived by the owner on Nov 23, 2024. It is now read-only.

Commit

Permalink
Sage (#111)
Browse files Browse the repository at this point in the history
- Added the Psyche attack ability, no logic.
- Added Eukrasian Prognosis II.
- Fixed a problem where Pneuma would be fired if any party member is dead.
  • Loading branch information
Xeltor authored Jul 19, 2024
1 parent bad9b5c commit 3fc8332
Showing 1 changed file with 34 additions and 6 deletions.
40 changes: 34 additions & 6 deletions BasicRotations/Healer/SGE_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,20 @@ public sealed class SGE_Default : SageRotation
#endregion

#region oGCD Logic
[RotationDesc(ActionID.PsychePvE)]
protected override bool AttackAbility(IAction nextGCD, out IAction? act)
{
if (PsychePvE.CanUse(out act)) return true;

return base.AttackAbility(nextGCD, out act);
}

protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
{
if (base.EmergencyAbility(nextGCD, out act)) return true;

if (nextGCD.IsTheSameTo(false, PneumaPvE, EukrasianDiagnosisPvE,
EukrasianPrognosisPvE, DiagnosisPvE, PrognosisPvE))
EukrasianPrognosisPvE, EukrasianPrognosisIiPvE, DiagnosisPvE, PrognosisPvE))
{
if (ZoePvE.CanUse(out act)) return true;
}
Expand Down Expand Up @@ -180,7 +188,7 @@ protected override bool HealSingleAbility(IAction nextGCD, out IAction? act)
return base.HealSingleAbility(nextGCD, out act);
}

[RotationDesc(ActionID.EukrasianPrognosisPvE)]
[RotationDesc(ActionID.EukrasianPrognosisPvE, ActionID.EukrasianPrognosisIiPvE)]

protected override bool GeneralAbility(IAction nextGCD, out IAction? act)
{
Expand All @@ -199,7 +207,21 @@ protected override bool GeneralAbility(IAction nextGCD, out IAction? act)
#region GCD Logic
protected override bool DefenseAreaGCD(out IAction? act)
{
if (EukrasianPrognosisPvE.CanUse(out act))
if (EukrasianPrognosisIiPvE.CanUse(out act))
{
if (EukrasianPrognosisIiPvE.Target.Target?.HasStatus(false,
StatusID.EukrasianDiagnosis,
StatusID.EukrasianPrognosis,
StatusID.Galvanize
) ?? false) return false;

if (EukrasiaPvE.CanUse(out act)) return true;

act = EukrasianPrognosisIiPvE;
return true;
}

if (!EukrasianPrognosisIiPvE.EnoughLevel && EukrasianPrognosisPvE.CanUse(out act))
{
if (EukrasianPrognosisPvE.Target.Target?.HasStatus(false,
StatusID.EukrasianDiagnosis,
Expand Down Expand Up @@ -256,7 +278,7 @@ protected override bool GeneralGCD(out IAction? act)
if (!PhlegmaIiiPvE.EnoughLevel && PhlegmaIiPvE.CanUse(out act, usedUp: IsMoving, skipAoeCheck: true)) return true;
if (!PhlegmaIiPvE.EnoughLevel && PhlegmaPvE.CanUse(out act, usedUp: IsMoving, skipAoeCheck: true)) return true;

if (PartyMembers.Any(b => b.GetHealthRatio() < PneumaSTPartyHeal) || PartyMembers.GetJobCategory(JobRole.Tank).Any(t => t.GetHealthRatio() < PneumaSTTankHeal))
if (PartyMembers.Any(b => b.GetHealthRatio() < PneumaSTPartyHeal && !b.IsDead) || PartyMembers.GetJobCategory(JobRole.Tank).Any(t => t.GetHealthRatio() < PneumaSTTankHeal && !t.IsDead))
{
if (PneumaPvE.CanUse(out act, skipAoeCheck: true)) return true;
}
Expand Down Expand Up @@ -287,7 +309,7 @@ protected override bool GeneralGCD(out IAction? act)
return base.GeneralGCD(out act);
}

[RotationDesc(ActionID.PneumaPvE, ActionID.PrognosisPvE, ActionID.EukrasianPrognosisPvE)]
[RotationDesc(ActionID.PneumaPvE, ActionID.PrognosisPvE, ActionID.EukrasianPrognosisPvE, ActionID.EukrasianPrognosisIiPvE)]
protected override bool HealAreaGCD(out IAction? act)
{
if (PartyMembersAverHP < PneumaAOEPartyHeal || DyskrasiaPvE.CanUse(out _) && PartyMembers.GetJobCategory(JobRole.Tank).Any(t => t.GetHealthRatio() < PneumaAOETankHeal))
Expand All @@ -300,7 +322,13 @@ protected override bool HealAreaGCD(out IAction? act)
if (PrognosisPvE.CanUse(out act)) return true;
}

if (EukrasianPrognosisPvE.CanUse(out _))
if (EukrasianPrognosisIiPvE.CanUse(out _)) {
if (EukrasiaPvE.CanUse(out act)) return true;
act = EukrasianPrognosisIiPvE;
return true;
}

if (!EukrasianPrognosisIiPvE.EnoughLevel && EukrasianPrognosisPvE.CanUse(out _))
{
if (EukrasiaPvE.CanUse(out act)) return true;
act = EukrasianPrognosisPvE;
Expand Down

0 comments on commit 3fc8332

Please sign in to comment.