Skip to content

Commit 215666c

Browse files
authored
Merge pull request #840 from FFXIV-CombatReborn/deadstars
Dragoon oGCD management rework, Forked Tower second encounter targeting management added
2 parents dc5b3aa + 169c248 commit 215666c

File tree

5 files changed

+329
-195
lines changed

5 files changed

+329
-195
lines changed

BasicRotations/Melee/DRG_Default.cs

Lines changed: 88 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@ public sealed class DRG_Default : DragoonRotation
2121
[RotationDesc(ActionID.WingedGlidePvE)]
2222
protected override bool MoveForwardAbility(IAction nextGCD, out IAction? act)
2323
{
24+
act = null;
25+
if (IsLastAction(false, StardiverPvE))
26+
{
27+
return false;
28+
}
29+
2430
if (WingedGlidePvE.CanUse(out act, skipComboCheck: true))
2531
{
2632
return true;
@@ -31,6 +37,12 @@ protected override bool MoveForwardAbility(IAction nextGCD, out IAction? act)
3137
[RotationDesc(ActionID.ElusiveJumpPvE)]
3238
protected override bool MoveBackAbility(IAction nextGCD, out IAction? act)
3339
{
40+
act = null;
41+
if (IsLastAction(false, StardiverPvE))
42+
{
43+
return false;
44+
}
45+
3446
if (ElusiveJumpPvE.CanUse(out act, skipComboCheck: true))
3547
{
3648
return true;
@@ -41,6 +53,12 @@ protected override bool MoveBackAbility(IAction nextGCD, out IAction? act)
4153
[RotationDesc(ActionID.FeintPvE)]
4254
protected sealed override bool DefenseAreaAbility(IAction nextGCD, out IAction? act)
4355
{
56+
act = null;
57+
if (IsLastAction(false, StardiverPvE))
58+
{
59+
return false;
60+
}
61+
4462
if (FeintPvE.CanUse(out act, skipComboCheck: true))
4563
{
4664
return true;
@@ -52,82 +70,99 @@ protected sealed override bool DefenseAreaAbility(IAction nextGCD, out IAction?
5270
#region oGCD Logic
5371
protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
5472
{
73+
if (IsLastAction() == IsLastGCD())
74+
{
75+
if (StardiverPvE.CanUse(out act))
76+
{
77+
return true;
78+
}
79+
}
80+
81+
return base.EmergencyAbility(nextGCD, out act);
82+
}
83+
84+
protected override bool AttackAbility(IAction nextGCD, out IAction? act)
85+
{
86+
act = null;
87+
if (IsLastAction(false, StardiverPvE))
88+
{
89+
return false;
90+
}
91+
92+
if (DisembowelPvE.EnoughLevel)
93+
{
94+
if (!HasPowerSurge)
95+
{
96+
return false;
97+
}
98+
}
99+
55100
if (IsBurst && InCombat && HasHostilesInRange)
56101
{
57102
bool lifeSurgeReady =
58-
((Player.HasStatus(true, StatusID.BattleLitany) || Player.HasStatus(true, StatusID.LanceCharge) || LOTDEndAfter(1000))
103+
((HasBattleLitany || LOTDEndAfter(1000))
59104
&& nextGCD.IsTheSameTo(true, HeavensThrustPvE, DrakesbanePvE))
60-
|| (Player.HasStatus(true, StatusID.BattleLitany)
61-
&& Player.HasStatus(true, StatusID.LanceCharge)
105+
|| (HasBattleLitany
62106
&& LOTDEndAfter(1000)
63107
&& nextGCD.IsTheSameTo(true, ChaoticSpringPvE, LanceBarragePvE, WheelingThrustPvE, FangAndClawPvE))
64108
|| (nextGCD.IsTheSameTo(true, HeavensThrustPvE, DrakesbanePvE)
65109
&& (LanceChargePvE.Cooldown.IsCoolingDown || BattleLitanyPvE.Cooldown.IsCoolingDown));
66110

67-
if ((!BattleLitanyPvE.Cooldown.ElapsedAfter(60) || !BattleLitanyPvE.EnoughLevel)
111+
if ((!BattleLitanyPvE.Cooldown.ElapsedAfter(60) || !BattleLitanyPvE.EnoughLevel)
68112
&& LanceChargePvE.CanUse(out act))
69-
{
70-
return true;
71-
}
113+
{
114+
return true;
115+
}
72116

73-
if (Player.HasStatus(true, StatusID.LanceCharge) && BattleLitanyPvE.CanUse(out act))
74-
{
75-
return true;
76-
}
117+
if (BattleLitanyPvE.CanUse(out act))
118+
{
119+
return true;
120+
}
77121

78-
if (((Player.HasStatus(true, StatusID.BattleLitany) || Player.HasStatus(true, StatusID.LanceCharge) || LOTDEndAfter(1000))
122+
if (((HasBattleLitany || LOTDEndAfter(1000))
79123
&& nextGCD.IsTheSameTo(true, HeavensThrustPvE, DrakesbanePvE))
80-
|| (Player.HasStatus(true, StatusID.BattleLitany)
81-
&& Player.HasStatus(true, StatusID.LanceCharge)
124+
|| (HasBattleLitany
125+
&& HasLanceCharge
82126
&& LOTDEndAfter(1000)
83127
&& !HeavensThrustPvE.EnoughLevel
84128
&& !DrakesbanePvE.EnoughLevel
85129
&& nextGCD.IsTheSameTo(true, ChaoticSpringPvE, LanceBarragePvE, WheelingThrustPvE, FangAndClawPvE))
86130
|| (nextGCD.IsTheSameTo(true, HeavensThrustPvE, DrakesbanePvE)
87131
&& (LanceChargePvE.Cooldown.IsCoolingDown || BattleLitanyPvE.Cooldown.IsCoolingDown)))
88-
{
89-
if (LifeSurgePvE.CanUse(out act, usedUp: true))
90-
{
91-
return true;
92-
}
93-
}
132+
{
133+
if (LifeSurgePvE.CanUse(out act, usedUp: true))
134+
{
135+
return true;
136+
}
137+
}
94138

95139
if (lifeSurgeReady
96140
|| (!DisembowelPvE.EnoughLevel && nextGCD.IsTheSameTo(true, VorpalThrustPvE))
97141
|| (!FullThrustPvE.EnoughLevel && nextGCD.IsTheSameTo(true, VorpalThrustPvE, DisembowelPvE))
98142
|| (!LanceChargePvE.EnoughLevel && nextGCD.IsTheSameTo(true, DisembowelPvE, FullThrustPvE))
99143
|| (!BattleLitanyPvE.EnoughLevel && nextGCD.IsTheSameTo(true, ChaosThrustPvE, FullThrustPvE)))
100-
{
101-
if (LifeSurgePvE.CanUse(out act, usedUp: true))
102-
{
103-
return true;
104-
}
105-
}
144+
{
145+
if (LifeSurgePvE.CanUse(out act, usedUp: true))
146+
{
147+
return true;
148+
}
149+
}
106150
}
107151

108-
return base.EmergencyAbility(nextGCD, out act);
109-
}
110-
111-
protected override bool AttackAbility(IAction nextGCD, out IAction? act)
112-
{
113-
if (Player.HasStatus(true, StatusID.LanceCharge))
152+
if (GeirskogulPvE.CanUse(out act))
114153
{
115-
if (GeirskogulPvE.CanUse(out act))
116-
{
117-
return true;
118-
}
154+
return true;
119155
}
120156

121-
if ((BattleLitanyPvE.EnoughLevel && Player.HasStatus(true, StatusID.BattleLitany) && Player.HasStatus(true, StatusID.LanceCharge))
122-
|| (!BattleLitanyPvE.EnoughLevel && Player.HasStatus(true, StatusID.LanceCharge)))
157+
if ((BattleLitanyPvE.EnoughLevel && HasBattleLitany) || (!BattleLitanyPvE.EnoughLevel))
123158
{
124159
if (DragonfireDivePvE.CanUse(out act))
125160
{
126161
return true;
127162
}
128163
}
129164

130-
if (Player.HasStatus(true, StatusID.BattleLitany) || Player.HasStatus(true, StatusID.LanceCharge) || LOTDEndAfter(1000)
165+
if (HasBattleLitany || LOTDEndAfter(1000)
131166
|| nextGCD.IsTheSameTo(true, RaidenThrustPvE, DraconianFuryPvE))
132167
{
133168
if (WyrmwindThrustPvE.CanUse(out act, usedUp: true))
@@ -136,37 +171,38 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)
136171
}
137172
}
138173

139-
if (JumpPvE.CanUse(out act))
174+
if (!HighJumpPvE.EnoughLevel && LanceChargePvE.Cooldown.IsCoolingDown)
140175
{
141-
return true;
142-
}
143-
144-
if (HighJumpPvE.CanUse(out act))
145-
{
146-
return true;
176+
if (JumpPvE.CanUse(out act))
177+
{
178+
return true;
179+
}
147180
}
148181

149-
if (StardiverPvE.CanUse(out act, isFirstAbility: OGCDTimers))
182+
if (GeirskogulPvE.Cooldown.IsCoolingDown)
150183
{
151-
return true;
184+
if (HighJumpPvE.CanUse(out act))
185+
{
186+
return true;
187+
}
152188
}
153189

154-
if (MirageDivePvE.CanUse(out act))
190+
if (NastrondPvE.CanUse(out act))
155191
{
156192
return true;
157193
}
158194

159-
if (NastrondPvE.CanUse(out act))
195+
if (StarcrossPvE.CanUse(out act))
160196
{
161197
return true;
162198
}
163199

164-
if (StarcrossPvE.CanUse(out act))
200+
if (RiseOfTheDragonPvE.CanUse(out act))
165201
{
166202
return true;
167203
}
168204

169-
if (RiseOfTheDragonPvE.CanUse(out act))
205+
if (MirageDivePvE.CanUse(out act))
170206
{
171207
return true;
172208
}

0 commit comments

Comments
 (0)