This repository has been archived by the owner on Jul 3, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #69 from FFXIV-CombatReborn/Drg-aoe-whenevs
Drg beta aoe whenever config option
- Loading branch information
Showing
1 changed file
with
115 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
namespace DefaultRotations.Melee; | ||
|
||
[Rotation("Beta", CombatType.PvE, GameVersion = "6.58")] | ||
[SourceCode(Path = "main/DefaultRotations/Melee/DRG_Beta.cs")] | ||
[Api(1)] | ||
|
||
public sealed class DRG_Beta : DragoonRotation | ||
{ | ||
#region Config Options | ||
[RotationDesc(ActionID.SpineshatterDivePvE, ActionID.DragonfireDivePvE)] | ||
|
||
[RotationConfig(CombatType.PvE, Name = "Break Single Target for AOE cause why the heck not let's test it")] | ||
public bool DoomSpikeWhenever { get; set; } = true; | ||
#endregion | ||
|
||
#region Move Logic | ||
protected override bool MoveForwardAbility(IAction nextGCD, out IAction act) | ||
{ | ||
if (SpineshatterDivePvE.CanUse(out act)) return true; | ||
if (DragonfireDivePvE.CanUse(out act, skipAoeCheck: true)) return true; | ||
|
||
return false; | ||
} | ||
|
||
#endregion | ||
|
||
#region oGCD Logic | ||
protected override bool EmergencyAbility(IAction nextGCD, out IAction? act) | ||
{ | ||
if (nextGCD.IsTheSameTo(true, FullThrustPvE, CoerthanTormentPvE) | ||
|| Player.HasStatus(true, StatusID.LanceCharge) && nextGCD.IsTheSameTo(false, FangAndClawPvE)) | ||
{ | ||
if (LifeSurgePvE.CanUse(out act, onLastAbility: true, usedUp: true)) return true; | ||
} | ||
|
||
return base.EmergencyAbility(nextGCD, out act); | ||
} | ||
|
||
|
||
|
||
protected override bool AttackAbility(IAction nextGCD, out IAction? act) | ||
{ | ||
if (IsBurst && InCombat) | ||
{ | ||
if (LanceChargePvE.CanUse(out act, skipAoeCheck: true) && Player.HasStatus(true, StatusID.PowerSurge)) return true; | ||
if (LanceChargePvE.CanUse(out act, skipAoeCheck: true, onLastAbility: true) && !Player.HasStatus(true, StatusID.PowerSurge)) return true; | ||
|
||
if (DragonSightPvE.CanUse(out act, skipAoeCheck: true)) return true; | ||
if (BattleLitanyPvE.CanUse(out act, skipAoeCheck: true)) return true; | ||
} | ||
|
||
if (NastrondPvE.CanUse(out act, skipAoeCheck: true)) return true; | ||
if (StardiverPvE.CanUse(out act, skipAoeCheck: true)) return true; | ||
|
||
if (HighJumpPvE.EnoughLevel) | ||
{ | ||
if (HighJumpPvE.CanUse(out act)) return true; | ||
} | ||
else | ||
{ | ||
if (JumpPvE.CanUse(out act)) return true; | ||
} | ||
|
||
if (GeirskogulPvE.CanUse(out act, skipAoeCheck: true)) return true; | ||
|
||
if (SpineshatterDivePvE.CanUse(out act, usedUp: true)) | ||
{ | ||
if (Player.HasStatus(true, StatusID.LanceCharge) && LanceChargePvE.Cooldown.ElapsedOneChargeAfterGCD(3)) return true; | ||
} | ||
if (Player.HasStatus(true, StatusID.PowerSurge) && SpineshatterDivePvE.Cooldown.CurrentCharges != 1 && SpineshatterDivePvE.CanUse(out act)) return true; | ||
|
||
if (MirageDivePvE.CanUse(out act)) return true; | ||
|
||
if (DragonfireDivePvE.CanUse(out act, skipAoeCheck: true)) | ||
{ | ||
if (Player.HasStatus(true, StatusID.LanceCharge) && LanceChargePvE.Cooldown.ElapsedOneChargeAfterGCD(3)) return true; | ||
} | ||
|
||
if (WyrmwindThrustPvE.CanUse(out act, skipAoeCheck: true)) return true; | ||
if (MergedStatus.HasFlag(AutoStatus.MoveForward) && MoveForwardAbility(nextGCD, out act)) return true; | ||
|
||
return base.AttackAbility(nextGCD, out act); | ||
} | ||
#endregion | ||
|
||
#region GCD Logic | ||
protected override bool GeneralGCD(out IAction? act) | ||
{ | ||
var doomSpikeRightMeow = DoomSpikeWhenever; | ||
|
||
if (CoerthanTormentPvE.CanUse(out act)) return true; | ||
if (SonicThrustPvE.CanUse(out act)) return true; | ||
if (DoomSpikePvE.CanUse(out act, skipComboCheck: doomSpikeRightMeow)) return true; | ||
|
||
|
||
if (WheelingThrustPvE.CanUse(out act)) return true; | ||
if (FangAndClawPvE.CanUse(out act)) return true; | ||
|
||
|
||
if (FullThrustPvE.CanUse(out act)) return true; | ||
if (ChaosThrustPvE.CanUse(out act)) return true; | ||
|
||
if (Player.WillStatusEndGCD(5, 0, true, StatusID.PowerSurge_2720)) | ||
{ | ||
if (DisembowelPvE.CanUse(out act)) return true; | ||
} | ||
|
||
if (VorpalThrustPvE.CanUse(out act)) return true; | ||
if (TrueThrustPvE.CanUse(out act)) return true; | ||
if (PiercingTalonPvE.CanUse(out act)) return true; | ||
|
||
return base.GeneralGCD(out act); | ||
} | ||
#endregion | ||
} |