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

Commit

Permalink
Merge pull request #175 from FFXIV-CombatReborn/picto-perfect-beta
Browse files Browse the repository at this point in the history
PCT and AST beta
  • Loading branch information
LTS-FFXIV authored Aug 2, 2024
2 parents 80a3391 + 4a92f55 commit 88ef45e
Show file tree
Hide file tree
Showing 6 changed files with 434 additions and 1 deletion.
File renamed without changes.
184 changes: 184 additions & 0 deletions BasicRotations/Healer/AST_BETA.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
namespace DefaultRotations.Healer;

[Rotation("AST Beta", CombatType.PvE, GameVersion = "7.05")]
[SourceCode(Path = "main/DefaultRotations/Healer/AST_BETA.cs")]
[Api(3)]
public sealed class AST_BETA : AstrologianRotation
{
#region Config Options

[Range(4, 20, ConfigUnitType.Seconds)]
[RotationConfig(CombatType.PvE, Name = "Use Earthly Star during countdown timer.")]
public float UseEarthlyStarTime { get; set; } = 15;
#endregion

#region Countdown Logic
protected override IAction? CountDownAction(float remainTime)
{
if (remainTime < MaleficPvE.Info.CastTime + CountDownAhead
&& MaleficPvE.CanUse(out var act)) return act;
if (remainTime < 3 && UseBurstMedicine(out act)) return act;
if (remainTime is < 4 and > 3 && AspectedBeneficPvE.CanUse(out act)) return act;
if (remainTime < UseEarthlyStarTime
&& EarthlyStarPvE.CanUse(out act)) return act;
if (remainTime < 30 && AstralDrawPvE.CanUse(out act)) return act;

return base.CountDownAction(remainTime);
}
#endregion

#region Additional oGCD Logic

[RotationDesc(ActionID.HoroscopePvE, ActionID.NeutralSectPvE, ActionID.SynastryPvE)]
protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
{
if (base.EmergencyAbility(nextGCD, out act)) return true;

if (!InCombat) return false;

if (nextGCD.IsTheSameTo(true, AspectedHeliosPvE, HeliosPvE, HeliosConjunctionPvE))
{
if (HoroscopePvE.CanUse(out act)) return true;
if (NeutralSectPvE.CanUse(out act)) return true;
}

if (nextGCD.IsTheSameTo(true, BeneficPvE, BeneficIiPvE, AspectedBeneficPvE))
{
if (SynastryPvE.CanUse(out act)) return true;
}
return base.EmergencyAbility(nextGCD, out act);
}

[RotationDesc(ActionID.SunSignPvE)]
protected sealed override bool DefenseAreaAbility(IAction nextGCD, out IAction? act)
{
if (SunSignPvE.CanUse(out act)) return true;
return base.DefenseAreaAbility(nextGCD, out act);
}

[RotationDesc(ActionID.ExaltationPvE, ActionID.TheSpirePvE, ActionID.TheBolePvE)]
protected override bool DefenseSingleAbility(IAction nextGCD, out IAction? act)
{
if (InCombat && TheSpirePvE.CanUse(out act)) return true;
if (InCombat && TheBolePvE.CanUse(out act)) return true;

if (ExaltationPvE.CanUse(out act)) return true;
return base.DefenseSingleAbility(nextGCD, out act);
}

[RotationDesc(ActionID.CelestialOppositionPvE, ActionID.StellarDetonationPvE, ActionID.HoroscopePvE, ActionID.HoroscopePvE_16558, ActionID.LadyOfCrownsPvE, ActionID.HeliosConjunctionPvE)]
protected override bool HealAreaAbility(IAction nextGCD, out IAction? act)
{
if (CelestialOppositionPvE.CanUse(out act)) return true;

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

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

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

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

if (HeliosConjunctionPvE.CanUse(out act)) return true;
return base.HealAreaAbility(nextGCD, out act);
}

[RotationDesc(ActionID.TheArrowPvE, ActionID.TheEwerPvE, ActionID.EssentialDignityPvE,
ActionID.CelestialIntersectionPvE)]
protected override bool HealSingleAbility(IAction nextGCD, out IAction? act)
{
if (MicrocosmosPvE.CanUse(out act)) return true;

if (InCombat && TheArrowPvE.CanUse(out act)) return true;

if (InCombat && TheEwerPvE.CanUse(out act)) return true;

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

if (CelestialIntersectionPvE.CanUse(out act, usedUp: true)) return true;

return base.HealSingleAbility(nextGCD, out act);
}
#endregion

#region oGCD Logic

protected override bool GeneralAbility(IAction nextGCD, out IAction? act)
{
if (InCombat && TheBalancePvE.CanUse(out act)) return true;
if (InCombat && TheSpearPvE.CanUse(out act)) return true;
if (AstralDrawPvE.CanUse(out act)) return true;
if (UmbralDrawPvE.CanUse(out act)) return true;
if (MinorArcanaPvE.CanUse(out act)) return true;
return base.GeneralAbility(nextGCD, out act);
}

protected override bool AttackAbility(IAction nextGCD, out IAction? act)
{
if (IsBurst && !IsMoving
&& DivinationPvE.CanUse(out act)) return true;

if (AstralDrawPvE.CanUse(out act, usedUp: IsBurst)) return true;

if (InCombat)
{
if (IsMoving && LightspeedPvE.CanUse(out act)) return true;

if (!IsMoving)
{
if (!Player.HasStatus(true, StatusID.EarthlyDominance, StatusID.GiantDominance))
{
if (EarthlyStarPvE.CanUse(out act)) return true;
}
}

{
if (LordOfCrownsPvE.CanUse(out act)) return true;
}
}

if (OraclePvE.CanUse(out act, skipAoeCheck: true)) return true;
return base.AttackAbility(nextGCD, out act);
}
#endregion

#region GCD Logic

[RotationDesc(ActionID.AspectedHeliosPvE, ActionID.HeliosPvE)]
protected override bool HealAreaGCD(out IAction? act)
{
if (HeliosConjunctionPvE.CanUse(out act)) return true;

if (HeliosPvE.CanUse(out act)) return true;
return base.HealAreaGCD(out act);
}

[RotationDesc(ActionID.AspectedBeneficPvE, ActionID.BeneficIiPvE, ActionID.BeneficPvE)]
protected override bool HealSingleGCD(out IAction? act)
{
if (AspectedBeneficPvE.CanUse(out act) && (IsMoving)) return true;

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

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

return base.HealSingleGCD(out act);
}

protected override bool GeneralGCD(out IAction? act)
{
if (MacrocosmosPvE.CanUse(out act)) return true;

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

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

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

if (CombustIiiPvE.CanUse(out act, skipStatusProvideCheck: true)) return true;

return base.GeneralGCD(out act);
}

#endregion
}
2 changes: 2 additions & 0 deletions BasicRotations/Healer/WHM_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ namespace DefaultRotations.Healer;
public sealed class WHM_Default :WhiteMageRotation
{
#region Config Options

[RotationConfig(CombatType.PvE, Name = "Use spells with cast times to heal. (Ignored if you are the only healer in party)")]
public bool GCDHeal { get; set; } = false;

Expand All @@ -25,6 +26,7 @@ public sealed class WHM_Default :WhiteMageRotation

[Range(0, 10000, ConfigUnitType.None, 100)]
[RotationConfig(CombatType.PvE, Name = "Casting cost requirement for Thin Air to be used")]

public float ThinAirNeed { get; set; } = 1000;
#endregion

Expand Down
Loading

0 comments on commit 88ef45e

Please sign in to comment.