1
- using System . ComponentModel ;
1
+ using Dalamud . Interface . Colors ;
2
+ using System . ComponentModel ;
2
3
3
4
namespace RebornRotations . Magical ;
4
5
@@ -51,6 +52,16 @@ public enum SummonOrderType : byte
51
52
52
53
#endregion
53
54
55
+ #region Tracking Properties
56
+ public override void DisplayStatus ( )
57
+ {
58
+ ImGui . TextColored ( ImGuiColors . DalamudViolet , "Rotation Tracking:" ) ;
59
+ ImGui . Text ( $ "EnergyDrainPvE: Is Cooling Down: { EnergyDrainPvE . Cooldown . IsCoolingDown } ") ;
60
+ ImGui . TextColored ( ImGuiColors . DalamudYellow , "Base Tracking:" ) ;
61
+ base . DisplayStatus ( ) ;
62
+ }
63
+ #endregion
64
+
54
65
#region Countdown Logic
55
66
protected override IAction ? CountDownAction ( float remainTime )
56
67
{
@@ -95,7 +106,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)
95
106
bool elapsed2ChargeAfterInvocation = SummonSolarBahamutPvE . Cooldown . ElapsedOneChargeAfterGCD ( 2 ) || SummonBahamutPvE . Cooldown . ElapsedOneChargeAfterGCD ( 2 ) || SummonPhoenixPvE . Cooldown . ElapsedOneChargeAfterGCD ( 2 ) ;
96
107
bool burstInSolar = Player . Level == 100 ? InSolarBahamut : InBahamut ;
97
108
98
- if ( ! Player . HasStatus ( false , StatusID . SearingLight ) && burstInSolar && elapsed0ChargeAfterInvocation )
109
+ if ( ! HasSearingLight && burstInSolar && elapsed0ChargeAfterInvocation )
99
110
{
100
111
if ( SearingLightPvE . CanUse ( out act , skipAoeCheck : true ) )
101
112
{
@@ -148,12 +159,12 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)
148
159
return true ;
149
160
}
150
161
151
- if ( ( ( inSolarUnique && Player . HasStatus ( false , StatusID . SearingLight ) ) || ! SearingLightPvE . EnoughLevel || ( isTargetBoss && isTargetDying ) ) && EnergyDrainPvE . Cooldown . IsCoolingDown && PainflarePvE . CanUse ( out act ) )
162
+ if ( ( ( inSolarUnique && HasSearingLight ) || ! SearingLightPvE . EnoughLevel || ( isTargetBoss && isTargetDying ) ) && PainflarePvE . CanUse ( out act ) )
152
163
{
153
164
return true ;
154
165
}
155
166
156
- if ( ( ( inSolarUnique && Player . HasStatus ( false , StatusID . SearingLight ) ) || ! SearingLightPvE . EnoughLevel || ( isTargetBoss && isTargetDying ) ) && EnergyDrainPvE . Cooldown . IsCoolingDown && FesterPvE . CanUse ( out act ) )
167
+ if ( ( ( inSolarUnique && HasSearingLight ) || ! SearingLightPvE . EnoughLevel || ( isTargetBoss && isTargetDying ) ) && FesterPvE . CanUse ( out act ) )
157
168
{
158
169
return true ;
159
170
}
@@ -176,7 +187,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)
176
187
bool elapsed4ChargeAfterInvocation = SummonSolarBahamutPvE . Cooldown . ElapsedOneChargeAfterGCD ( 4 ) || SummonBahamutPvE . Cooldown . ElapsedOneChargeAfterGCD ( 4 ) || SummonPhoenixPvE . Cooldown . ElapsedOneChargeAfterGCD ( 4 ) ;
177
188
bool burstInSolar = Player . Level == 100 ? InSolarBahamut : InBahamut ;
178
189
179
- if ( ! Player . HasStatus ( false , StatusID . SearingLight ) && burstInSolar && elapsed1ChargeAfterInvocation )
190
+ if ( ! HasSearingLight && burstInSolar && elapsed1ChargeAfterInvocation )
180
191
{
181
192
if ( SearingLightPvE . CanUse ( out act , skipAoeCheck : true ) )
182
193
{
@@ -229,22 +240,22 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)
229
240
return true ;
230
241
}
231
242
232
- if ( ( ( inSolarUnique && Player . HasStatus ( false , StatusID . SearingLight ) && elapsed2ChargeAfterInvocation && EnergyDrainPvE . Cooldown . WillHaveOneCharge ( 2 ) ) || ! SearingLightPvE . EnoughLevel || ( isTargetBoss && isTargetDying ) ) && EnergyDrainPvE . Cooldown . IsCoolingDown && PainflarePvE . CanUse ( out act ) )
243
+ if ( ( ( inSolarUnique && HasSearingLight && elapsed2ChargeAfterInvocation && EnergyDrainPvE . Cooldown . WillHaveOneCharge ( 2 ) ) || ! SearingLightPvE . EnoughLevel || ( isTargetBoss && isTargetDying ) ) && PainflarePvE . CanUse ( out act ) )
233
244
{
234
245
return true ;
235
246
}
236
247
237
- if ( ( ( inSolarUnique && Player . HasStatus ( false , StatusID . SearingLight ) && elapsed2ChargeAfterInvocation && EnergyDrainPvE . Cooldown . WillHaveOneCharge ( 2 ) ) || ! SearingLightPvE . EnoughLevel || ( isTargetBoss && isTargetDying ) ) && EnergyDrainPvE . Cooldown . IsCoolingDown && FesterPvE . CanUse ( out act ) )
248
+ if ( ( ( inSolarUnique && HasSearingLight && elapsed2ChargeAfterInvocation && EnergyDrainPvE . Cooldown . WillHaveOneCharge ( 2 ) ) || ! SearingLightPvE . EnoughLevel || ( isTargetBoss && isTargetDying ) ) && FesterPvE . CanUse ( out act ) )
238
249
{
239
250
return true ;
240
251
}
241
252
242
- if ( ( ( inSolarUnique && Player . HasStatus ( false , StatusID . SearingLight ) && elapsed2ChargeAfterInvocation ) || ! SearingLightPvE . EnoughLevel || ( isTargetBoss && isTargetDying ) ) && EnergyDrainPvE . Cooldown . IsCoolingDown && PainflarePvE . CanUse ( out act ) )
253
+ if ( ( ( inSolarUnique && HasSearingLight && elapsed2ChargeAfterInvocation ) || ! SearingLightPvE . EnoughLevel || ( isTargetBoss && isTargetDying ) ) && PainflarePvE . CanUse ( out act ) )
243
254
{
244
255
return true ;
245
256
}
246
257
247
- if ( ( ( inSolarUnique && Player . HasStatus ( false , StatusID . SearingLight ) && elapsed2ChargeAfterInvocation ) || ! SearingLightPvE . EnoughLevel || ( isTargetBoss && isTargetDying ) ) && EnergyDrainPvE . Cooldown . IsCoolingDown && FesterPvE . CanUse ( out act ) )
258
+ if ( ( ( inSolarUnique && HasSearingLight && elapsed2ChargeAfterInvocation ) || ! SearingLightPvE . EnoughLevel || ( isTargetBoss && isTargetDying ) ) && FesterPvE . CanUse ( out act ) )
248
259
{
249
260
return true ;
250
261
}
@@ -267,23 +278,23 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)
267
278
protected override bool EmergencyAbility ( IAction nextGCD , out IAction ? act )
268
279
{
269
280
bool anyBigInvocationIsCoolingDown = SummonBahamutPvE . Cooldown . IsCoolingDown || SummonSolarBahamutPvE . Cooldown . IsCoolingDown || SummonPhoenixPvE . Cooldown . IsCoolingDown ;
270
- if ( AddSwiftcastOnGaruda && nextGCD == SlipstreamPvE && Player . Level > 86 && ! InBahamut && ! InPhoenix && ! InSolarBahamut )
281
+ if ( AddSwiftcastOnGaruda && nextGCD . IsTheSameTo ( false , SlipstreamPvE ) && ElementalMasteryTrait . EnoughLevel && ! InBahamut && ! InPhoenix && ! InSolarBahamut )
271
282
{
272
283
if ( SwiftcastPvE . CanUse ( out act ) )
273
284
{
274
285
return true ;
275
286
}
276
287
}
277
288
278
- if ( AddSwiftcastOnRuby && nextGCD == RubyRitePvE && Player . Level < 86 )
289
+ if ( AddSwiftcastOnRuby && nextGCD . IsTheSameTo ( false , RubyRitePvE ) && ! ElementalMasteryTrait . EnoughLevel )
279
290
{
280
291
if ( SwiftcastPvE . CanUse ( out act ) )
281
292
{
282
293
return true ;
283
294
}
284
295
}
285
296
286
- if ( ( ( RadiantOnCooldown && RadiantAegisPvE . Cooldown . CurrentCharges == 2 ) || ( RadiantAegisPvE . Cooldown . CurrentCharges == 1 && RadiantAegisPvE . Cooldown . WillHaveOneCharge ( 5 ) ) ) && anyBigInvocationIsCoolingDown && Player . Level <= 100 && RadiantAegisPvE . CanUse ( out act ) )
297
+ if ( ( ( RadiantOnCooldown && RadiantAegisPvE . Cooldown . CurrentCharges == 2 ) || ( RadiantAegisPvE . Cooldown . CurrentCharges == 1 && RadiantAegisPvE . Cooldown . WillHaveOneCharge ( 5 ) ) ) && anyBigInvocationIsCoolingDown && RadiantAegisPvE . CanUse ( out act ) )
287
298
{
288
299
return true ;
289
300
}
@@ -319,7 +330,7 @@ protected override bool GeneralGCD(out IAction? act)
319
330
return true ;
320
331
}
321
332
322
- if ( ( Player . HasStatus ( false , StatusID . SearingLight ) || SearingLightPvE . Cooldown . IsCoolingDown ) && SummonBahamutPvE . CanUse ( out act ) )
333
+ if ( ( HasSearingLight || SearingLightPvE . Cooldown . IsCoolingDown ) && SummonBahamutPvE . CanUse ( out act ) )
323
334
{
324
335
return true ;
325
336
}
@@ -443,7 +454,7 @@ protected override bool GeneralGCD(out IAction? act)
443
454
}
444
455
}
445
456
446
- if ( SummonTimeEndAfterGCD ( ) && AttunmentTimeEndAfterGCD ( ) && ! InBahamut && ! InPhoenix && ! InSolarBahamut && SummonEmeraldPvE . Cooldown . IsCoolingDown && SummonTopazPvE . Cooldown . IsCoolingDown && SummonRubyPvE . Cooldown . IsCoolingDown &&
457
+ if ( SummonTimeEndAfterGCD ( ) && AttunmentTimeEndAfterGCD ( ) && ! InBahamut && ! InPhoenix && ! InSolarBahamut &&
447
458
RuinIvPvE . CanUse ( out act , skipAoeCheck : true ) )
448
459
{
449
460
return true ;
@@ -466,7 +477,7 @@ protected override bool GeneralGCD(out IAction? act)
466
477
#region Extra Methods
467
478
public override bool CanHealSingleSpell => false ;
468
479
469
- public bool DoesAnyPlayerNeedHeal ( )
480
+ public static bool DoesAnyPlayerNeedHeal ( )
470
481
{
471
482
return PartyMembersAverHP < 0.8f ;
472
483
}
0 commit comments