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

Commit

Permalink
Nuget bump and moved all ability call logic to rotations
Browse files Browse the repository at this point in the history
  • Loading branch information
LTS-FFXIV committed Sep 28, 2024
1 parent 2819892 commit e519419
Show file tree
Hide file tree
Showing 11 changed files with 128 additions and 12 deletions.
30 changes: 29 additions & 1 deletion BasicRotations/Melee/MNK_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,42 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
return base.EmergencyAbility(nextGCD, out act);
}

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

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

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

[RotationDesc(ActionID.RiddleOfEarthPvE)]
protected override bool DefenseSingleAbility(IAction nextGCD, out IAction? act)
{
if (RiddleOfEarthPvE.CanUse(out act, usedUp: true)) return true;
return base.DefenseSingleAbility(nextGCD, out act);
}

protected override bool AttackAbility(IAction nextGCD, out IAction? act)
{
act = null;
if (EnableTEAChecker && Target.Name.ToString() == "Jagd Doll" && Target.GetHealthRatio() < 0.25)
{
return false;
}

// you need to position yourself in the centre of the mobs if they are large, that range is only 3 yarms
if (AutoPB_AOE && NumberOfHostilesInRange >= 2)
{
Expand Down
8 changes: 4 additions & 4 deletions BasicRotations/Melee/RPR_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -148,8 +148,8 @@ protected override bool GeneralGCD(out IAction? act)
}

// Try using Gallows/Gibbet that player is in position for when without Enchanced status
if (GallowsPvE.CanUse(out act, skipComboCheck: true) && CanHitPositional(EnemyPositional.Rear, GallowsPvE.Target.Target)) return true;
if (GibbetPvE.CanUse(out act, skipComboCheck: true) && CanHitPositional(EnemyPositional.Flank, GibbetPvE.Target.Target)) return true;
if (GallowsPvE.CanUse(out act, skipComboCheck: true) && GallowsPvE.Target.Target != null && CanHitPositional(EnemyPositional.Rear, GallowsPvE.Target.Target)) return true;
if (GibbetPvE.CanUse(out act, skipComboCheck: true) && GibbetPvE.Target.Target != null && CanHitPositional(EnemyPositional.Flank, GibbetPvE.Target.Target)) return true;

if (GallowsPvE.CanUse(out act, skipComboCheck: true)) return true;
if (GibbetPvE.CanUse(out act, skipComboCheck: true)) return true;
Expand Down Expand Up @@ -205,8 +205,8 @@ private bool ItsGluttonyTime(out IAction? act)
}

// Try using Executioners Gallows/Gibbet that player is in position for when without Enchanced status
if (ExecutionersGallowsPvE.CanUse(out act, skipComboCheck: true) && CanHitPositional(EnemyPositional.Rear, ExecutionersGallowsPvE.Target.Target)) return true;
if (ExecutionersGibbetPvE.CanUse(out act, skipComboCheck: true) && CanHitPositional(EnemyPositional.Flank, ExecutionersGibbetPvE.Target.Target)) return true;
if (ExecutionersGallowsPvE.CanUse(out act, skipComboCheck: true) && ExecutionersGallowsPvE.Target.Target != null && CanHitPositional(EnemyPositional.Rear, ExecutionersGallowsPvE.Target.Target)) return true;
if (ExecutionersGibbetPvE.CanUse(out act, skipComboCheck: true) && ExecutionersGibbetPvE.Target.Target != null && CanHitPositional(EnemyPositional.Flank, ExecutionersGibbetPvE.Target.Target)) return true;

if (ExecutionersGallowsPvE.CanUse(out act, skipComboCheck: true)) return true;
if (ExecutionersGibbetPvE.CanUse(out act, skipComboCheck: true)) return true;
Expand Down
8 changes: 4 additions & 4 deletions BasicRotations/Melee/SAM_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -164,15 +164,15 @@ protected override bool GeneralGCD(out IAction? act)
YukikazePvE.CanUse(out act, skipComboCheck: HaveMeikyoShisui && HasGetsu && HasKa)) return true;

// single target 123 combo's 3 or used 3 directly during burst when MeikyoShisui is active, while also trying to start with the one that player is in position for extra DMG
if (GekkoPvE.CanUse(out act, skipComboCheck: HaveMeikyoShisui && !HasGetsu) && CanHitPositional(EnemyPositional.Rear, GekkoPvE.Target.Target)) return true;
if (KashaPvE.CanUse(out act, skipComboCheck: HaveMeikyoShisui && !HasKa) && CanHitPositional(EnemyPositional.Flank, KashaPvE.Target.Target)) return true;
if (GekkoPvE.CanUse(out act, skipComboCheck: HaveMeikyoShisui && !HasGetsu) && GekkoPvE.Target.Target != null && CanHitPositional(EnemyPositional.Rear, GekkoPvE.Target.Target)) return true;
if (KashaPvE.CanUse(out act, skipComboCheck: HaveMeikyoShisui && !HasKa) && KashaPvE.Target.Target != null && CanHitPositional(EnemyPositional.Flank, KashaPvE.Target.Target)) return true;

if (GekkoPvE.CanUse(out act, skipComboCheck: HaveMeikyoShisui && !HasGetsu)) return true;
if (KashaPvE.CanUse(out act, skipComboCheck: HaveMeikyoShisui && !HasKa)) return true;

// single target 123 combo's 2, while also trying to start with the one that player is in position for extra DMG
if (!HasGetsu && JinpuPvE.CanUse(out act) && (CanHitPositional(EnemyPositional.Rear, JinpuPvE.Target.Target) || (!HasMoon && HasFlower))) return true;
if (!HasKa && ShifuPvE.CanUse(out act) && (CanHitPositional(EnemyPositional.Flank, ShifuPvE.Target.Target) || (!HasFlower && HasMoon))) return true;
if (!HasGetsu && JinpuPvE.CanUse(out act) && JinpuPvE.Target.Target != null && (CanHitPositional(EnemyPositional.Rear, JinpuPvE.Target.Target) || (!HasMoon && HasFlower))) return true;
if (!HasKa && ShifuPvE.CanUse(out act) && ShifuPvE.Target.Target != null && (CanHitPositional(EnemyPositional.Flank, ShifuPvE.Target.Target) || (!HasFlower && HasMoon))) return true;

if ((!HasMoon || IsMoonTimeLessThanFlower || !ShifuPvE.EnoughLevel) && JinpuPvE.CanUse(out act)) return true;
if ((!HasFlower || !IsMoonTimeLessThanFlower) && ShifuPvE.CanUse(out act)) return true;
Expand Down
4 changes: 2 additions & 2 deletions BasicRotations/Melee/VPR_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -167,8 +167,8 @@ protected override bool GeneralGCD(out IAction? act)

////Single Target Dread Combo
// Try using Coil that player is in position for extra damage first
if (HuntersCoilPvE.CanUse(out act, skipComboCheck: true) && CanHitPositional(EnemyPositional.Flank, HuntersCoilPvE.Target.Target)) return true;
if (SwiftskinsCoilPvE.CanUse(out act, skipComboCheck: true) && CanHitPositional(EnemyPositional.Rear, SwiftskinsCoilPvE.Target.Target)) return true;
if (HuntersCoilPvE.CanUse(out act, skipComboCheck: true) && HuntersCoilPvE.Target.Target != null && CanHitPositional(EnemyPositional.Flank, HuntersCoilPvE.Target.Target)) return true;
if (SwiftskinsCoilPvE.CanUse(out act, skipComboCheck: true) && SwiftskinsCoilPvE.Target.Target != null && CanHitPositional(EnemyPositional.Rear, SwiftskinsCoilPvE.Target.Target)) return true;

if (HuntersCoilPvE.CanUse(out act, skipComboCheck: true)) return true;
if (SwiftskinsCoilPvE.CanUse(out act, skipComboCheck: true)) return true;
Expand Down
21 changes: 21 additions & 0 deletions BasicRotations/Ranged/BRD_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,27 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
return base.EmergencyAbility(nextGCD, out act);
}

[RotationDesc(ActionID.TheWardensPaeanPvE)]
protected override bool DispelGCD(out IAction? act)
{
if (TheWardensPaeanPvE.CanUse(out act)) return true;
return base.DispelGCD(out act);
}

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

[RotationDesc(ActionID.TroubadourPvE)]
protected override bool DefenseAreaAbility(IAction nextGCD, out IAction act)
{
if (TroubadourPvE.CanUse(out act)) return true;
return false;
}

protected override bool AttackAbility(IAction nextGCD, out IAction? act)
{
act = null;
Expand Down
22 changes: 22 additions & 0 deletions BasicRotations/Ranged/DNC_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,28 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
return false;
}

[RotationDesc(ActionID.CuringWaltzPvE, ActionID.ImprovisationPvE)]
protected override bool HealAreaAbility(IAction nextGCD, out IAction act)
{
if (CuringWaltzPvE.CanUse(out act, usedUp: true)) return true;
if (ImprovisationPvE.CanUse(out act, usedUp: true)) return true;
return false;
}

[RotationDesc(ActionID.ShieldSambaPvE)]
protected override bool DefenseAreaAbility(IAction nextGCD, out IAction act)
{
if (ShieldSambaPvE.CanUse(out act, usedUp: true)) return true;
return false;
}

[RotationDesc(ActionID.EnAvantPvE)]
protected override bool MoveForwardAbility(IAction nextGCD, out IAction act)
{
if (EnAvantPvE.CanUse(out act, usedUp: true)) return true;
return false;
}

// Override the method for handling attack abilities
protected override bool AttackAbility(IAction nextGCD, out IAction? act)
{
Expand Down
8 changes: 8 additions & 0 deletions BasicRotations/Ranged/MCH_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,14 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
return base.EmergencyAbility(nextGCD, out act);
}

[RotationDesc(ActionID.TacticianPvE, ActionID.DismantlePvE)]
protected override bool DefenseAreaAbility(IAction nextGCD, out IAction act)
{
if (TacticianPvE.CanUse(out act, skipAoeCheck: true)) return true;
if (DismantlePvE.CanUse(out act, skipAoeCheck: true)) return true;
return false;
}

// Logic for using attack abilities outside of GCD, focusing on burst windows and cooldown management.
protected override bool AttackAbility(IAction nextGCD, out IAction? act)
{
Expand Down
12 changes: 12 additions & 0 deletions BasicRotations/Ranged/zMCH_Beta.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ public sealed class zMCH_Beta : MachinistRotation

[RotationConfig(CombatType.PvE, Name = "Use burst medicine when available for midfight burst phase (requires auto burst option on)")]
private bool MidfightBurstMeds { get; set; } = false;

[RotationConfig(CombatType.PvE, Name = "Prevent the use of defense abilties during hypercharge burst")]
private bool BurstDefense { get; set; } = false;
#endregion

#region Countdown logic
Expand Down Expand Up @@ -58,6 +61,15 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
return base.EmergencyAbility(nextGCD, out act);
}

[RotationDesc(ActionID.TacticianPvE, ActionID.DismantlePvE)]
protected override bool DefenseAreaAbility(IAction nextGCD, out IAction? act)
{
if ((!BurstDefense || (BurstDefense && !IsOverheated)) && TacticianPvE.CanUse(out act, skipAoeCheck: true)) return true;
if ((!BurstDefense || (BurstDefense && !IsOverheated)) && DismantlePvE.CanUse(out act, skipAoeCheck: true)) return true;

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

// Logic for using attack abilities outside of GCD, focusing on burst windows and cooldown management.
protected override bool AttackAbility(IAction nextGCD, out IAction? act)
{
Expand Down
8 changes: 8 additions & 0 deletions BasicRotations/Ranged/zMCH_Beta_2.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,14 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
return base.EmergencyAbility(nextGCD, out act);
}

[RotationDesc(ActionID.TacticianPvE, ActionID.DismantlePvE)]
protected override bool DefenseAreaAbility(IAction nextGCD, out IAction act)
{
if (TacticianPvE.CanUse(out act, skipAoeCheck: true)) return true;
if (DismantlePvE.CanUse(out act, skipAoeCheck: true)) return true;
return false;
}

// Logic for using attack abilities outside of GCD, focusing on burst windows and cooldown management.
protected override bool AttackAbility(IAction nextGCD, out IAction? act)
{
Expand Down
2 changes: 1 addition & 1 deletion BasicRotations/RebornRotations.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<Compile Include="Duty\EmanationDefault" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="RotationSolverReborn.Basic" Version="7.0.5.135" />
<PackageReference Include="RotationSolverReborn.Basic" Version="7.0.5.137" />
</ItemGroup>
<ItemGroup>
<Reference Include="Dalamud">
Expand Down
17 changes: 17 additions & 0 deletions BasicRotations/Tank/PLD_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,9 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
{
if (Player.HasStatus(true, StatusID.Cover) && HallowedWithCover && HallowedGroundPvE.CanUse(out act)) return true;

if (HallowedGroundPvE.CanUse(out act)
&& Player.GetHealthRatio() <= HealthForDyingTanks) return true;

if ((Player.HasStatus(true, StatusID.Rampart) || Player.HasStatus(true, StatusID.Sentinel)) &&
InterventionPvE.CanUse(out act) &&
InterventionPvE.Target.Target?.GetHealthRatio() < 0.6) return true;
Expand All @@ -93,6 +96,13 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
return base.EmergencyAbility(nextGCD, out act);
}

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

[RotationDesc(ActionID.SentinelPvE, ActionID.RampartPvE, ActionID.BulwarkPvE, ActionID.SheltronPvE, ActionID.ReprisalPvE)]
protected override bool DefenseSingleAbility(IAction nextGCD, out IAction? act)
{
Expand Down Expand Up @@ -218,6 +228,13 @@ protected override bool GeneralGCD(out IAction? act)

return base.GeneralGCD(out act);
}

[RotationDesc(ActionID.ClemencyPvE)]
protected override bool HealSingleGCD(out IAction? act)
{
if (ClemencyPvE.CanUse(out act)) return true;
return base.HealSingleGCD(out act);
}
#endregion

#region Extra Methods
Expand Down

0 comments on commit e519419

Please sign in to comment.