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

Commit

Permalink
Update various classes and configurations
Browse files Browse the repository at this point in the history
- SGE_Default: Added level check for EukrasianDyskrasiaPvE and removed redundant status checks.
- PCT_Default: Added CountdownBuffer constant, simplified conditions, and refactored EmergencyAbility method.
- DRG_Default: Added OGCDTimers config, and modified StardiverPvE usage.
- SAM_Default: Simplified and fixed HiganbanaPvE logic.
- BRD_Default: Added OGCDTimers config and updated conditions for cooldown management.
- RebornRotations.csproj: Updated RotationSolverReborn.Basic package to 7.0.5.80.
- WAR_Default: Added YEET config for Primal Rend usage while moving and updated logic.
  • Loading branch information
LTS-FFXIV committed Sep 15, 2024
1 parent 6001ffa commit 979dfd3
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 91 deletions.
3 changes: 1 addition & 2 deletions BasicRotations/Healer/SGE_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,6 @@ protected override bool HealSingleGCD(out IAction? act)

if (DiagnosisPvE.CanUse(out _) && !EukrasianDiagnosisPvE.CanUse(out _, skipCastingCheck: true) && InCombat)
{
StatusHelper.StatusOff(StatusID.Eukrasia);
if (DiagnosisPvE.CanUse(out act))
{
return true;
Expand Down Expand Up @@ -391,7 +390,7 @@ protected override bool GeneralGCD(out IAction? act)

if (DyskrasiaPvE.CanUse(out _))
{
if ((EukrasianDyskrasiaPvE.Target.Target?.WillStatusEnd(3, true, EukrasianDyskrasiaPvE.Setting.TargetStatusProvide ?? []) ?? false) && InCombat)
if (EukrasianDyskrasiaPvE.EnoughLevel && (EukrasianDyskrasiaPvE.Target.Target?.WillStatusEnd(3, true, EukrasianDyskrasiaPvE.Setting.TargetStatusProvide ?? []) ?? false) && InCombat)
{
StatusHelper.StatusOff(StatusID.Eukrasia);
}
Expand Down
98 changes: 22 additions & 76 deletions BasicRotations/Magical/PCT_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
[Api(3)]
public sealed class PCT_Default : PictomancerRotation
{
private const float CountdownBuffer = 0.4f;

#region Config Options
[RotationConfig(CombatType.PvE, Name = "Use HolyInWhite or CometInBlack while moving")]
public bool HolyCometMoving { get; set; } = true;
Expand All @@ -31,23 +33,14 @@ public sealed class PCT_Default : PictomancerRotation
IAction act;
if (!InCombat)
{
if (!CreatureMotifDrawn)
{
if (PomMotifPvE.CanUse(out act, skipCastingCheck: true)) return act;
}
if (!WeaponMotifDrawn)
{
if (HammerMotifPvE.CanUse(out act, skipCastingCheck: true)) return act;
}
if (!LandscapeMotifDrawn)
{
if (StarrySkyMotifPvE.CanUse(out act, skipCastingCheck: true) && !Player.HasStatus(true, StatusID.Hyperphantasia)) return act;
}
if (!CreatureMotifDrawn && PomMotifPvE.CanUse(out act, skipCastingCheck: true)) return act;
if (!WeaponMotifDrawn && HammerMotifPvE.CanUse(out act, skipCastingCheck: true)) return act;
if (!LandscapeMotifDrawn && StarrySkyMotifPvE.CanUse(out act, skipCastingCheck: true) && !Player.HasStatus(true, StatusID.Hyperphantasia)) return act;
}

if (remainTime < RainbowDripPvE.Info.CastTime + 0.4f + CountDownAhead)
if (remainTime < RainbowDripPvE.Info.CastTime + CountdownBuffer + CountDownAhead && RainbowDripPvE.CanUse(out act, skipCastingCheck: true))
{
if (RainbowDripPvE.CanUse(out act, skipCastingCheck: true)) return act;
return act;
}

return base.CountDownAction(remainTime);
Expand All @@ -60,70 +53,32 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
{
if (InCombat)
{
if (RainbowDripSwift)
{
if (nextGCD == RainbowDripPvE)
{
if (SwiftcastPvE.CanUse(out act)) return true;
}
}
}
if (RainbowDripSwift && nextGCD == RainbowDripPvE && SwiftcastPvE.CanUse(out act)) return true;

if (InCombat)
{
if (MotifSwiftCastSwift)
{
switch (MotifSwiftCast)
if (MotifSwiftCast switch
{
CanvasFlags.Pom => nextGCD == PomMotifPvE,
CanvasFlags.Wing => nextGCD == WingMotifPvE,
CanvasFlags.Claw => nextGCD == ClawMotifPvE,
CanvasFlags.Maw => nextGCD == MawMotifPvE,
CanvasFlags.Weapon => nextGCD == HammerMotifPvE,
CanvasFlags.Landscape => nextGCD == StarrySkyMotifPvE,
_ => false
} && SwiftcastPvE.CanUse(out act))
{
case CanvasFlags.Pom:
if (nextGCD == PomMotifPvE)
{
if (SwiftcastPvE.CanUse(out act)) return true;
}
break;
case CanvasFlags.Wing:
if (nextGCD == WingMotifPvE)
{
if (SwiftcastPvE.CanUse(out act)) return true;
}
break;
case CanvasFlags.Claw:
if (nextGCD == ClawMotifPvE)
{
if (SwiftcastPvE.CanUse(out act)) return true;
}
break;
case CanvasFlags.Maw:
if (nextGCD == MawMotifPvE)
{
if (SwiftcastPvE.CanUse(out act)) return true;
}
break;
case CanvasFlags.Weapon:
if (nextGCD == HammerMotifPvE)
{
if (SwiftcastPvE.CanUse(out act)) return true;
}
break;
case CanvasFlags.Landscape:
if (nextGCD == StarrySkyMotifPvE)
{
if (SwiftcastPvE.CanUse(out act)) return true;
}
break;
return true;
}
}
}
return base.EmergencyAbility(nextGCD, out act);
}


[RotationDesc(ActionID.SmudgePvE)]
protected override bool MoveForwardAbility(IAction nextGCD, out IAction? act)
{

if (SmudgePvE.CanUse(out act)) return true;

return base.MoveForwardAbility(nextGCD, out act);
}

Expand Down Expand Up @@ -177,22 +132,13 @@ protected override bool GeneralGCD(out IAction? act)
if (HammerBrushPvE.CanUse(out act, skipComboCheck: true)) return true;
if (HammerStampPvE.CanUse(out act, skipComboCheck: true)) return true;

if (HolyCometMoving && IsMoving)
{
if (HolyInWhitePvE.CanUse(out act)) return true;
}
if (HolyCometMoving && IsMoving && HolyInWhitePvE.CanUse(out act)) return true;

//Use up paint if in Hyperphantasia
if (Player.HasStatus(true, StatusID.Hyperphantasia))
{
if (CometInBlackPvE.CanUse(out act)) return true;
}
if (Player.HasStatus(true, StatusID.Hyperphantasia) && CometInBlackPvE.CanUse(out act)) return true;

//Paint overcap protection
if (Paint == HolyCometMax)
{
if (HolyInWhitePvE.CanUse(out act)) return true;
}
if (Paint == HolyCometMax && HolyInWhitePvE.CanUse(out act)) return true;

// Landscape Paining Burst
if (RainbowDripPvE.CanUse(out act)) return true;
Expand Down
7 changes: 5 additions & 2 deletions BasicRotations/Melee/DRG_Default.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace DefaultRotations.Melee;

[Rotation("Default", CombatType.PvE, GameVersion = "7.01")]
[Rotation("Default", CombatType.PvE, GameVersion = "7.05")]
[SourceCode(Path = "main/DefaultRotations/Melee/DRG_Default.cs")]
[Api(3)]

Expand All @@ -9,6 +9,9 @@ public sealed class DRG_Default : DragoonRotation
#region Config Options
[RotationConfig(CombatType.PvE, Name = "Use Doom Spike for damage uptime if out of melee range even if it breaks combo")]
public bool DoomSpikeWhenever { get; set; } = true;

[RotationConfig(CombatType.PvE, Name = "Attempt to assign Stardiver to the first ogcd slot (Experimental)")]
public bool OGCDTimers { get; set; } = false;
#endregion

private static bool InBurstStatus => !Player.WillStatusEnd(0, true, StatusID.BattleLitany);
Expand Down Expand Up @@ -81,7 +84,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)
if (JumpPvE.CanUse(out act)) return true;
if (HighJumpPvE.CanUse(out act)) return true;

if (StardiverPvE.CanUse(out act, isFirstAbility: true)) return true;
if (StardiverPvE.CanUse(out act, isFirstAbility: OGCDTimers)) return true;
if (MirageDivePvE.CanUse(out act)) return true;
if (NastrondPvE.CanUse(out act)) return true;
if (StarcrossPvE.CanUse(out act)) return true;
Expand Down
2 changes: 1 addition & 1 deletion BasicRotations/Melee/SAM_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ protected override bool GeneralGCD(out IAction? act)
if ((!IsTargetBoss || (HostileTarget?.HasStatus(true, StatusID.Higanbana) ?? false)) && HasMoon && HasFlower
&& OgiNamikiriPvE.CanUse(out act)) return true;

if (((HiganbanaTargets && NumberOfAllHostilesInRange >= 2) || !HiganbanaTargets) && HiganbanaPvE.CanUse(out act)) return true;
if ((!HiganbanaTargets || (HiganbanaTargets && NumberOfAllHostilesInRange < 2)) && HiganbanaPvE.CanUse(out act)) return true;

if (TendoSetsugekkaPvE.CanUse(out act)) return true;
if (MidareSetsugekkaPvE.CanUse(out act)) return true;
Expand Down
15 changes: 9 additions & 6 deletions BasicRotations/Ranged/BRD_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ public sealed class BRD_Default : BardRotation
[RotationConfig(CombatType.PvE, Name = "Buff Alighnment Timer (Experimental, do not touch if you don't understand it)")]
public float BuffAlignment { get; set; } = 1;

[RotationConfig(CombatType.PvE, Name = "Attempt to assign Raging Strikes, Battle Voice, and Radiant Finale to specific ogcd slots (Experimental)")]
public bool OGCDTimers { get; set; } = false;

[Range(1, 45, ConfigUnitType.Seconds, 1)]
[RotationConfig(CombatType.PvE, Name = "Wanderer's Minuet Uptime")]
public float WANDTime { get; set; } = 43;
Expand Down Expand Up @@ -94,14 +97,14 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)
{
if (((!RadiantFinalePvE.EnoughLevel && !RagingStrikesPvE.Cooldown.IsCoolingDown)
|| (RadiantFinalePvE.EnoughLevel && !RadiantFinalePvE.Cooldown.IsCoolingDown && RagingStrikesPvE.EnoughLevel && (!RagingStrikesPvE.Cooldown.IsCoolingDown || RagingStrikesPvE.Cooldown.WillHaveOneCharge(BuffAlignment))))
&& (HostileTarget?.HasStatus(true, StatusID.Windbite, StatusID.Stormbite) == true) && (HostileTarget?.HasStatus(true, StatusID.VenomousBite, StatusID.CausticBite) == true) && BattleVoicePvE.CanUse(out act, isLastAbility: false)) return true;
&& (HostileTarget?.HasStatus(true, StatusID.Windbite, StatusID.Stormbite) == true) && (HostileTarget?.HasStatus(true, StatusID.VenomousBite, StatusID.CausticBite) == true) && BattleVoicePvE.CanUse(out act, isLastAbility: OGCDTimers)) return true;

if (!Player.WillStatusEnd(0, true, StatusID.BattleVoice) && RadiantFinalePvE.CanUse(out act)) return true;
if (!Player.WillStatusEnd(0, true, StatusID.BattleVoice) && RadiantFinalePvE.CanUse(out act, isFirstAbility: OGCDTimers)) return true;

if (((RadiantFinalePvE.EnoughLevel && !Player.WillStatusEnd(0, true, StatusID.RadiantFinale) && !Player.WillStatusEnd(0, true, StatusID.BattleVoice))
|| (!RadiantFinalePvE.EnoughLevel && BattleVoicePvE.EnoughLevel && !Player.WillStatusEnd(0, true, StatusID.BattleVoice))
|| (!RadiantFinalePvE.EnoughLevel && !BattleVoicePvE.EnoughLevel))
&& RagingStrikesPvE.CanUse(out act)) return true;
&& RagingStrikesPvE.CanUse(out act, isLastAbility: OGCDTimers)) return true;
}

if (RadiantFinalePvE.EnoughLevel && RadiantFinalePvE.Cooldown.IsCoolingDown && BattleVoicePvE.EnoughLevel && !BattleVoicePvE.Cooldown.IsCoolingDown) return false;
Expand All @@ -119,7 +122,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)

if (Repertoire == 3) return true;

if (Repertoire == 2 && EmpyrealArrowPvE.Cooldown.WillHaveOneChargeGCD()) return true;
if (Repertoire == 2 && EmpyrealArrowPvE.Cooldown.WillHaveOneChargeGCD() && RadiantFinalePvE.Cooldown.IsCoolingDown) return true;
}

if (MagesBalladPvE.CanUse(out act) && InCombat)
Expand All @@ -137,9 +140,9 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)

if (SidewinderPvE.CanUse(out act))
{
if (Player.HasStatus(true, StatusID.BattleVoice) && (Player.HasStatus(true, StatusID.RadiantFinale) || !RadiantFinalePvE.EnoughLevel)) return true;
if (Player.HasStatus(true, StatusID.BattleVoice) && (Player.HasStatus(true, StatusID.RadiantFinale) && RagingStrikesPvE.Cooldown.IsCoolingDown || !RadiantFinalePvE.EnoughLevel)) return true;

if (!BattleVoicePvE.Cooldown.WillHaveOneCharge(10) && !RadiantFinalePvE.Cooldown.WillHaveOneCharge(10)) return true;
if (!BattleVoicePvE.Cooldown.WillHaveOneCharge(10) && !RadiantFinalePvE.Cooldown.WillHaveOneCharge(10) && RagingStrikesPvE.Cooldown.IsCoolingDown) return true;

if (RagingStrikesPvE.Cooldown.IsCoolingDown && !Player.HasStatus(true, StatusID.RagingStrikes)) return true;
}
Expand Down
2 changes: 1 addition & 1 deletion BasicRotations/RebornRotations.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<Compile Include="Duty\EmanationDefault" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="RotationSolverReborn.Basic" Version="7.0.5.78" />
<PackageReference Include="RotationSolverReborn.Basic" Version="7.0.5.80" />
</ItemGroup>
<ItemGroup>
<Reference Include="Dalamud">
Expand Down
7 changes: 4 additions & 3 deletions BasicRotations/Tank/WAR_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ public sealed class WAR_Default : WarriorRotation
[RotationConfig(CombatType.PvE, Name = "Use Bloodwhetting/Raw intuition on single enemies")]
public bool SoloIntuition { get; set; } = false;

[RotationConfig(CombatType.PvE, Name = "Use Primal Rend while moving (Danger)")]
public bool YEET { get; set; } = false;

[Range(1, 20, ConfigUnitType.Yalms)]
[RotationConfig(CombatType.PvE, Name = "Max distance you can be from the boss for Primal Rend use (Danger, setting too high will get you killed)")]
public float PrimalRendDistance { get; set; } = 2;
Expand Down Expand Up @@ -50,7 +53,6 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)
|| !MythrilTempestPvE.EnoughLevel)
{
if (BerserkPvE.CanUse(out act)) return true;

}

if (IsBurstStatus && (InnerReleaseStacks == 0 || InnerReleaseStacks == 3))
Expand All @@ -75,7 +77,6 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)
return true;
}


if (MergedStatus.HasFlag(AutoStatus.MoveForward) && MoveForwardAbility(nextGCD, out act)) return true;
return base.AttackAbility(nextGCD, out act);
}
Expand Down Expand Up @@ -149,7 +150,7 @@ protected override bool GeneralGCD(out IAction? act)

if (!Player.WillStatusEndGCD(3, 0, true, StatusID.SurgingTempest) && InnerReleaseStacks == 0)
{
if (!IsMoving && PrimalRendPvE.CanUse(out act, skipAoeCheck: true))
if ((YEET || (!YEET && !IsMoving)) && PrimalRendPvE.CanUse(out act, skipAoeCheck: true))
{
if (PrimalRendPvE.Target.Target?.DistanceToPlayer() < PrimalRendDistance) return true;
}
Expand Down

0 comments on commit 979dfd3

Please sign in to comment.