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

Drg beta aoe whenever config option #69

Merged
merged 1 commit into from
May 1, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
115 changes: 115 additions & 0 deletions BasicRotations/Melee/DRG_Beta.cs
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
}