@@ -428,45 +428,40 @@ private bool ChoiceEukrasia(out IAction? act)
428
428
{
429
429
act = null ;
430
430
431
- if ( ! EukrasiaPvE . CanUse ( out _ ) )
432
- {
433
- return false ;
434
- }
435
-
436
- // Checks for Eukrasia status.
437
- // Attempts to set correct Eurkrasia action based on availability and MergedStatus.
431
+ // Only decide the aim; do not require Eukrasia to be currently usable here.
432
+ // Attempts to set correct Eukrasia action based on availability and MergedStatus.
438
433
if ( EukrasianPrognosisIiPvE . EnoughLevel && EukrasianPrognosisIiPvE . IsEnabled && MergedStatus . HasFlag ( AutoStatus . DefenseArea )
439
- && EukrasianPrognosisIiPvE . CanUse ( out _ ) )
434
+ && EukrasianPrognosisIiPvE . CanUse ( out _ , skipStatusNeed : true ) )
440
435
{
441
436
SetEukrasia ( EukrasianPrognosisIiPvE ) ;
442
437
}
443
438
else if ( ! EukrasianPrognosisIiPvE . EnoughLevel && EukrasianPrognosisPvE . EnoughLevel && EukrasianPrognosisPvE . IsEnabled && MergedStatus . HasFlag ( AutoStatus . DefenseArea )
444
- && EukrasianPrognosisPvE . CanUse ( out _ ) )
439
+ && EukrasianPrognosisPvE . CanUse ( out _ , skipStatusNeed : true ) )
445
440
{
446
441
SetEukrasia ( EukrasianPrognosisPvE ) ;
447
442
}
448
443
else if ( EukrasianDiagnosisPvE . EnoughLevel && EukrasianDiagnosisPvE . IsEnabled && MergedStatus . HasFlag ( AutoStatus . DefenseSingle )
449
- && EukrasianDiagnosisPvE . CanUse ( out _ ) )
444
+ && EukrasianDiagnosisPvE . CanUse ( out _ , skipStatusNeed : true ) )
450
445
{
451
446
SetEukrasia ( EukrasianDiagnosisPvE ) ;
452
447
}
453
448
else if ( EukrasianDyskrasiaPvE . EnoughLevel && EukrasianDyskrasiaPvE . IsEnabled && ( ! MergedStatus . HasFlag ( AutoStatus . DefenseSingle ) && ! MergedStatus . HasFlag ( AutoStatus . DefenseArea ) )
454
- && EukrasianDyskrasiaPvE . CanUse ( out _ ) )
449
+ && EukrasianDyskrasiaPvE . CanUse ( out _ , skipStatusNeed : true ) )
455
450
{
456
451
SetEukrasia ( EukrasianDyskrasiaPvE ) ;
457
452
}
458
- else if ( ( ! EukrasianDyskrasiaPvE . CanUse ( out _ ) || ! DyskrasiaPvE . CanUse ( out _ ) )
459
- && EukrasianDosisIiiPvE . CanUse ( out _ ) && EukrasianDosisIiiPvE . EnoughLevel && ( ! MergedStatus . HasFlag ( AutoStatus . DefenseSingle ) && ! MergedStatus . HasFlag ( AutoStatus . DefenseArea ) ) && EukrasianDosisIiiPvE . IsEnabled )
453
+ else if ( ( ! EukrasianDyskrasiaPvE . CanUse ( out _ , skipStatusNeed : true ) || ! DyskrasiaPvE . CanUse ( out _ ) )
454
+ && EukrasianDosisIiiPvE . CanUse ( out _ , skipStatusNeed : true ) && EukrasianDosisIiiPvE . EnoughLevel && ( ! MergedStatus . HasFlag ( AutoStatus . DefenseSingle ) && ! MergedStatus . HasFlag ( AutoStatus . DefenseArea ) ) && EukrasianDosisIiiPvE . IsEnabled )
460
455
{
461
456
SetEukrasia ( EukrasianDosisIiiPvE ) ;
462
457
}
463
- else if ( ( ! EukrasianDyskrasiaPvE . CanUse ( out _ ) || ! DyskrasiaPvE . CanUse ( out _ ) )
464
- && EukrasianDosisIiPvE . CanUse ( out _ ) && ! EukrasianDosisIiiPvE . EnoughLevel && EukrasianDosisIiPvE . EnoughLevel && ( ! MergedStatus . HasFlag ( AutoStatus . DefenseSingle ) && ! MergedStatus . HasFlag ( AutoStatus . DefenseArea ) ) && EukrasianDosisIiPvE . IsEnabled )
458
+ else if ( ( ! EukrasianDyskrasiaPvE . CanUse ( out _ , skipStatusNeed : true ) || ! DyskrasiaPvE . CanUse ( out _ ) )
459
+ && EukrasianDosisIiPvE . CanUse ( out _ , skipStatusNeed : true ) && ! EukrasianDosisIiiPvE . EnoughLevel && EukrasianDosisIiPvE . EnoughLevel && ( ! MergedStatus . HasFlag ( AutoStatus . DefenseSingle ) && ! MergedStatus . HasFlag ( AutoStatus . DefenseArea ) ) && EukrasianDosisIiPvE . IsEnabled )
465
460
{
466
461
SetEukrasia ( EukrasianDosisIiPvE ) ;
467
462
}
468
- else if ( ( ! EukrasianDyskrasiaPvE . CanUse ( out _ ) || ! DyskrasiaPvE . CanUse ( out _ ) )
469
- && EukrasianDosisPvE . CanUse ( out _ ) && ! EukrasianDosisIiPvE . EnoughLevel && EukrasianDosisPvE . EnoughLevel && ( ! MergedStatus . HasFlag ( AutoStatus . DefenseSingle ) && ! MergedStatus . HasFlag ( AutoStatus . DefenseArea ) ) && EukrasianDosisPvE . IsEnabled )
463
+ else if ( ( ! EukrasianDyskrasiaPvE . CanUse ( out _ , skipStatusNeed : true ) || ! DyskrasiaPvE . CanUse ( out _ ) )
464
+ && EukrasianDosisPvE . CanUse ( out _ , skipStatusNeed : true ) && ! EukrasianDosisIiPvE . EnoughLevel && EukrasianDosisPvE . EnoughLevel && ( ! MergedStatus . HasFlag ( AutoStatus . DefenseSingle ) && ! MergedStatus . HasFlag ( AutoStatus . DefenseArea ) ) && EukrasianDosisPvE . IsEnabled )
470
465
{
471
466
SetEukrasia ( EukrasianDosisPvE ) ;
472
467
}
@@ -481,19 +476,53 @@ private bool ChoiceEukrasia(out IAction? act)
481
476
482
477
#region Eukrasia Execution
483
478
// Attempts to perform a Eukrasia action, based on the current game state and conditions.
484
- private bool DoEukrasianPrognosis ( out IAction ? act )
479
+ private bool DoEukrasianPrognosisIi ( out IAction ? act )
485
480
{
486
481
act = null ;
487
482
488
- if ( _EukrasiaActionAim != null && ( _EukrasiaActionAim == EukrasianPrognosisPvE || _EukrasiaActionAim == EukrasianPrognosisIiPvE ) && _EukrasiaActionAim . CanUse ( out _ ) )
483
+ if ( _EukrasiaActionAim != null &&
484
+ _EukrasiaActionAim == EukrasianPrognosisIiPvE )
489
485
{
490
- if ( EukrasiaPvE . CanUse ( out act ) )
486
+ // If we don't have Eukrasia, press it first to enable the Eukrasian spell.
487
+ if ( ! HasEukrasia )
488
+ {
489
+ if ( EukrasiaPvE . CanUse ( out act ) )
490
+ {
491
+ return true ;
492
+ }
493
+ return false ;
494
+ }
495
+
496
+ if ( EukrasianPrognosisIiPvE . CanUse ( out act ) )
491
497
{
492
498
return true ;
493
499
}
500
+ }
501
+ return false ;
502
+ }
503
+
504
+ // Attempts to perform a Eukrasia action, based on the current game state and conditions.
505
+ private bool DoEukrasianPrognosis ( out IAction ? act )
506
+ {
507
+ act = null ;
508
+
509
+ if ( _EukrasiaActionAim != null &&
510
+ _EukrasiaActionAim == EukrasianPrognosisPvE )
511
+ {
512
+ // If we don't have Eukrasia, press it first to enable the Eukrasian spell.
513
+ if ( ! HasEukrasia )
514
+ {
515
+ if ( EukrasiaPvE . CanUse ( out act ) )
516
+ {
517
+ return true ;
518
+ }
519
+ return false ;
520
+ }
494
521
495
- act = _EukrasiaActionAim ;
496
- return true ;
522
+ if ( EukrasianPrognosisPvE . CanUse ( out act ) )
523
+ {
524
+ return true ;
525
+ }
497
526
}
498
527
return false ;
499
528
}
@@ -503,15 +532,21 @@ private bool DoEukrasianDiagnosis(out IAction? act)
503
532
{
504
533
act = null ;
505
534
506
- if ( _EukrasiaActionAim != null && _EukrasiaActionAim == EukrasianDiagnosisPvE && EukrasianDiagnosisPvE . CanUse ( out _ ) )
535
+ if ( _EukrasiaActionAim != null && _EukrasiaActionAim == EukrasianDiagnosisPvE )
507
536
{
508
- if ( EukrasiaPvE . CanUse ( out act ) )
537
+ if ( ! HasEukrasia )
509
538
{
510
- return true ;
539
+ if ( EukrasiaPvE . CanUse ( out act ) )
540
+ {
541
+ return true ;
542
+ }
543
+ return false ;
511
544
}
512
545
513
- act = _EukrasiaActionAim ;
514
- return true ;
546
+ if ( EukrasianDiagnosisPvE . CanUse ( out act ) )
547
+ {
548
+ return true ;
549
+ }
515
550
}
516
551
return false ;
517
552
}
@@ -521,33 +556,94 @@ private bool DoEukrasianDyskrasia(out IAction? act)
521
556
{
522
557
act = null ;
523
558
524
- if ( _EukrasiaActionAim != null && _EukrasiaActionAim == EukrasianDyskrasiaPvE && EukrasianDyskrasiaPvE . CanUse ( out _ ) )
559
+ if ( _EukrasiaActionAim != null && _EukrasiaActionAim == EukrasianDyskrasiaPvE )
525
560
{
526
- if ( EukrasiaPvE . CanUse ( out act ) )
561
+ if ( ! HasEukrasia )
527
562
{
528
- return true ;
563
+ if ( EukrasiaPvE . CanUse ( out act ) )
564
+ {
565
+ return true ;
566
+ }
567
+ return false ;
529
568
}
530
569
531
- act = _EukrasiaActionAim ;
532
- return true ;
570
+ if ( EukrasianDyskrasiaPvE . CanUse ( out act ) )
571
+ {
572
+ return true ;
573
+ }
533
574
}
534
575
return false ;
535
576
}
536
577
537
578
// Attempts to perform a Eukrasia action, based on the current game state and conditions.
538
- private bool DoEukrasianDosis ( out IAction ? act )
579
+ private bool DoEukrasianDosisIii ( out IAction ? act )
580
+ {
581
+ act = null ;
582
+
583
+ if ( _EukrasiaActionAim != null &&
584
+ _EukrasiaActionAim == EukrasianDosisIiiPvE )
585
+ {
586
+ if ( ! HasEukrasia )
587
+ {
588
+ if ( EukrasiaPvE . CanUse ( out act ) )
589
+ {
590
+ return true ;
591
+ }
592
+ return false ;
593
+ }
594
+
595
+ if ( EukrasianDosisIiiPvE . CanUse ( out act ) )
596
+ {
597
+ return true ;
598
+ }
599
+ }
600
+ return false ;
601
+ }
602
+
603
+ private bool DoEukrasianDosisIi ( out IAction ? act )
539
604
{
540
605
act = null ;
541
606
542
- if ( _EukrasiaActionAim != null && ( _EukrasiaActionAim == EukrasianDosisPvE || _EukrasiaActionAim == EukrasianDosisIiPvE || _EukrasiaActionAim == EukrasianDosisIiiPvE ) && _EukrasiaActionAim . CanUse ( out _ ) )
607
+ if ( _EukrasiaActionAim != null &&
608
+ _EukrasiaActionAim == EukrasianDosisIiPvE )
543
609
{
544
- if ( EukrasiaPvE . CanUse ( out act ) )
610
+ if ( ! HasEukrasia )
611
+ {
612
+ if ( EukrasiaPvE . CanUse ( out act ) )
613
+ {
614
+ return true ;
615
+ }
616
+ return false ;
617
+ }
618
+
619
+ if ( EukrasianDosisIiPvE . CanUse ( out act ) )
545
620
{
546
621
return true ;
547
622
}
623
+ }
624
+ return false ;
625
+ }
548
626
549
- act = _EukrasiaActionAim ;
550
- return true ;
627
+ private bool DoEukrasianDosis ( out IAction ? act )
628
+ {
629
+ act = null ;
630
+
631
+ if ( _EukrasiaActionAim != null &&
632
+ _EukrasiaActionAim == EukrasianDosisPvE )
633
+ {
634
+ if ( ! HasEukrasia )
635
+ {
636
+ if ( EukrasiaPvE . CanUse ( out act ) )
637
+ {
638
+ return true ;
639
+ }
640
+ return false ;
641
+ }
642
+
643
+ if ( EukrasianDosisPvE . CanUse ( out act ) )
644
+ {
645
+ return true ;
646
+ }
551
647
}
552
648
return false ;
553
649
}
@@ -557,10 +653,9 @@ private bool DoEukrasianDosis(out IAction? act)
557
653
[ RotationDesc ( ActionID . PneumaPvE , ActionID . PrognosisPvE , ActionID . EukrasianPrognosisPvE , ActionID . EukrasianPrognosisIiPvE ) ]
558
654
protected override bool HealAreaGCD ( out IAction ? act )
559
655
{
560
- act = null ;
561
656
if ( IsLastAction ( ActionID . SwiftcastPvE ) && SwiftLogic && MergedStatus . HasFlag ( AutoStatus . Raise ) )
562
657
{
563
- return false ;
658
+ return base . HealAreaGCD ( out act ) ;
564
659
}
565
660
566
661
bool tankBelowThreshold = false ;
@@ -603,10 +698,9 @@ protected override bool HealAreaGCD(out IAction? act)
603
698
[ RotationDesc ( ActionID . DiagnosisPvE , ActionID . EukrasianDiagnosisPvE ) ]
604
699
protected override bool HealSingleGCD ( out IAction ? act )
605
700
{
606
- act = null ;
607
701
if ( IsLastAction ( ActionID . SwiftcastPvE ) && SwiftLogic && MergedStatus . HasFlag ( AutoStatus . Raise ) )
608
702
{
609
- return false ;
703
+ return base . HealSingleGCD ( out act ) ;
610
704
}
611
705
612
706
if ( HasEukrasia && EukrasiaActionHeal && EukrasianDiagnosisPvE . CanUse ( out act ) )
@@ -629,10 +723,14 @@ protected override bool HealSingleGCD(out IAction? act)
629
723
630
724
protected override bool GeneralGCD ( out IAction ? act )
631
725
{
632
- act = null ;
633
726
if ( IsLastAction ( ActionID . SwiftcastPvE ) && SwiftLogic && MergedStatus . HasFlag ( AutoStatus . Raise ) )
634
727
{
635
- return false ;
728
+ return base . GeneralGCD ( out act ) ;
729
+ }
730
+
731
+ if ( DoEukrasianPrognosisIi ( out act ) )
732
+ {
733
+ return true ;
636
734
}
637
735
638
736
if ( DoEukrasianPrognosis ( out act ) )
@@ -688,6 +786,16 @@ protected override bool GeneralGCD(out IAction? act)
688
786
return true ;
689
787
}
690
788
789
+ if ( DoEukrasianDosisIii ( out act ) )
790
+ {
791
+ return true ;
792
+ }
793
+
794
+ if ( DoEukrasianDosisIi ( out act ) )
795
+ {
796
+ return true ;
797
+ }
798
+
691
799
if ( DoEukrasianDosis ( out act ) )
692
800
{
693
801
return true ;
0 commit comments