@@ -21,6 +21,12 @@ public sealed class DRG_Default : DragoonRotation
21
21
[ RotationDesc ( ActionID . WingedGlidePvE ) ]
22
22
protected override bool MoveForwardAbility ( IAction nextGCD , out IAction ? act )
23
23
{
24
+ act = null ;
25
+ if ( IsLastAction ( false , StardiverPvE ) )
26
+ {
27
+ return false ;
28
+ }
29
+
24
30
if ( WingedGlidePvE . CanUse ( out act , skipComboCheck : true ) )
25
31
{
26
32
return true ;
@@ -31,6 +37,12 @@ protected override bool MoveForwardAbility(IAction nextGCD, out IAction? act)
31
37
[ RotationDesc ( ActionID . ElusiveJumpPvE ) ]
32
38
protected override bool MoveBackAbility ( IAction nextGCD , out IAction ? act )
33
39
{
40
+ act = null ;
41
+ if ( IsLastAction ( false , StardiverPvE ) )
42
+ {
43
+ return false ;
44
+ }
45
+
34
46
if ( ElusiveJumpPvE . CanUse ( out act , skipComboCheck : true ) )
35
47
{
36
48
return true ;
@@ -41,6 +53,12 @@ protected override bool MoveBackAbility(IAction nextGCD, out IAction? act)
41
53
[ RotationDesc ( ActionID . FeintPvE ) ]
42
54
protected sealed override bool DefenseAreaAbility ( IAction nextGCD , out IAction ? act )
43
55
{
56
+ act = null ;
57
+ if ( IsLastAction ( false , StardiverPvE ) )
58
+ {
59
+ return false ;
60
+ }
61
+
44
62
if ( FeintPvE . CanUse ( out act , skipComboCheck : true ) )
45
63
{
46
64
return true ;
@@ -52,82 +70,99 @@ protected sealed override bool DefenseAreaAbility(IAction nextGCD, out IAction?
52
70
#region oGCD Logic
53
71
protected override bool EmergencyAbility ( IAction nextGCD , out IAction ? act )
54
72
{
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
+
55
100
if ( IsBurst && InCombat && HasHostilesInRange )
56
101
{
57
102
bool lifeSurgeReady =
58
- ( ( Player . HasStatus ( true , StatusID . BattleLitany ) || Player . HasStatus ( true , StatusID . LanceCharge ) || LOTDEndAfter ( 1000 ) )
103
+ ( ( HasBattleLitany || LOTDEndAfter ( 1000 ) )
59
104
&& nextGCD . IsTheSameTo ( true , HeavensThrustPvE , DrakesbanePvE ) )
60
- || ( Player . HasStatus ( true , StatusID . BattleLitany )
61
- && Player . HasStatus ( true , StatusID . LanceCharge )
105
+ || ( HasBattleLitany
62
106
&& LOTDEndAfter ( 1000 )
63
107
&& nextGCD . IsTheSameTo ( true , ChaoticSpringPvE , LanceBarragePvE , WheelingThrustPvE , FangAndClawPvE ) )
64
108
|| ( nextGCD . IsTheSameTo ( true , HeavensThrustPvE , DrakesbanePvE )
65
109
&& ( LanceChargePvE . Cooldown . IsCoolingDown || BattleLitanyPvE . Cooldown . IsCoolingDown ) ) ;
66
110
67
- if ( ( ! BattleLitanyPvE . Cooldown . ElapsedAfter ( 60 ) || ! BattleLitanyPvE . EnoughLevel )
111
+ if ( ( ! BattleLitanyPvE . Cooldown . ElapsedAfter ( 60 ) || ! BattleLitanyPvE . EnoughLevel )
68
112
&& LanceChargePvE . CanUse ( out act ) )
69
- {
70
- return true ;
71
- }
113
+ {
114
+ return true ;
115
+ }
72
116
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
+ }
77
121
78
- if ( ( ( Player . HasStatus ( true , StatusID . BattleLitany ) || Player . HasStatus ( true , StatusID . LanceCharge ) || LOTDEndAfter ( 1000 ) )
122
+ if ( ( ( HasBattleLitany || LOTDEndAfter ( 1000 ) )
79
123
&& nextGCD . IsTheSameTo ( true , HeavensThrustPvE , DrakesbanePvE ) )
80
- || ( Player . HasStatus ( true , StatusID . BattleLitany )
81
- && Player . HasStatus ( true , StatusID . LanceCharge )
124
+ || ( HasBattleLitany
125
+ && HasLanceCharge
82
126
&& LOTDEndAfter ( 1000 )
83
127
&& ! HeavensThrustPvE . EnoughLevel
84
128
&& ! DrakesbanePvE . EnoughLevel
85
129
&& nextGCD . IsTheSameTo ( true , ChaoticSpringPvE , LanceBarragePvE , WheelingThrustPvE , FangAndClawPvE ) )
86
130
|| ( nextGCD . IsTheSameTo ( true , HeavensThrustPvE , DrakesbanePvE )
87
131
&& ( 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
+ }
94
138
95
139
if ( lifeSurgeReady
96
140
|| ( ! DisembowelPvE . EnoughLevel && nextGCD . IsTheSameTo ( true , VorpalThrustPvE ) )
97
141
|| ( ! FullThrustPvE . EnoughLevel && nextGCD . IsTheSameTo ( true , VorpalThrustPvE , DisembowelPvE ) )
98
142
|| ( ! LanceChargePvE . EnoughLevel && nextGCD . IsTheSameTo ( true , DisembowelPvE , FullThrustPvE ) )
99
143
|| ( ! 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
+ }
106
150
}
107
151
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 ) )
114
153
{
115
- if ( GeirskogulPvE . CanUse ( out act ) )
116
- {
117
- return true ;
118
- }
154
+ return true ;
119
155
}
120
156
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 ) )
123
158
{
124
159
if ( DragonfireDivePvE . CanUse ( out act ) )
125
160
{
126
161
return true ;
127
162
}
128
163
}
129
164
130
- if ( Player . HasStatus ( true , StatusID . BattleLitany ) || Player . HasStatus ( true , StatusID . LanceCharge ) || LOTDEndAfter ( 1000 )
165
+ if ( HasBattleLitany || LOTDEndAfter ( 1000 )
131
166
|| nextGCD . IsTheSameTo ( true , RaidenThrustPvE , DraconianFuryPvE ) )
132
167
{
133
168
if ( WyrmwindThrustPvE . CanUse ( out act , usedUp : true ) )
@@ -136,37 +171,38 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)
136
171
}
137
172
}
138
173
139
- if ( JumpPvE . CanUse ( out act ) )
174
+ if ( ! HighJumpPvE . EnoughLevel && LanceChargePvE . Cooldown . IsCoolingDown )
140
175
{
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
+ }
147
180
}
148
181
149
- if ( StardiverPvE . CanUse ( out act , isFirstAbility : OGCDTimers ) )
182
+ if ( GeirskogulPvE . Cooldown . IsCoolingDown )
150
183
{
151
- return true ;
184
+ if ( HighJumpPvE . CanUse ( out act ) )
185
+ {
186
+ return true ;
187
+ }
152
188
}
153
189
154
- if ( MirageDivePvE . CanUse ( out act ) )
190
+ if ( NastrondPvE . CanUse ( out act ) )
155
191
{
156
192
return true ;
157
193
}
158
194
159
- if ( NastrondPvE . CanUse ( out act ) )
195
+ if ( StarcrossPvE . CanUse ( out act ) )
160
196
{
161
197
return true ;
162
198
}
163
199
164
- if ( StarcrossPvE . CanUse ( out act ) )
200
+ if ( RiseOfTheDragonPvE . CanUse ( out act ) )
165
201
{
166
202
return true ;
167
203
}
168
204
169
- if ( RiseOfTheDragonPvE . CanUse ( out act ) )
205
+ if ( MirageDivePvE . CanUse ( out act ) )
170
206
{
171
207
return true ;
172
208
}
0 commit comments