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

Commit

Permalink
Add new WHM options, update WAR abilities, and project file
Browse files Browse the repository at this point in the history
Added `UseDivine` and `AsylumSingle` options to `WHM_Default` for
enhanced healing capabilities. Modified `EmergencyAbility` and
`HealSingleAbility` methods to incorporate these options. Added
`GeneralAbility` method for Divine Caress usage.

Updated `RebornRotations.csproj` to reference `RotationSolverReborn.
Basic` version 7.0.5.51.

Updated `WAR_Default` class to remove description and update game
version to "7.05". Simplified `CountDownAction` method. Modified
`GeneralAbility` to use burst medicine. Enhanced `GeneralGCD` method
with new checks and abilities based on Surging Tempest status.
  • Loading branch information
LTS-FFXIV committed Sep 7, 2024
1 parent 4c1bcd1 commit 34bdac5
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 30 deletions.
16 changes: 15 additions & 1 deletion BasicRotations/Healer/WHM_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@ public sealed class WHM_Default : WhiteMageRotation
[RotationConfig(CombatType.PvE, Name = "Regen on Tank at 5 seconds remaining on Prepull Countdown.")]
public bool UsePreRegen { get; set; } = true;

[RotationConfig(CombatType.PvE, Name = "Use Divine Carress as soon as its available")]
public bool UseDivine { get; set; } = false;

[RotationConfig(CombatType.PvE, Name = "Use Asylum as soon a single player heal (i.e. tankbusters) while moving, in addition to normal logic")]
public bool AsylumSingle { get; set; } = false;

[Range(0, 1, ConfigUnitType.Percent)]
[RotationConfig(CombatType.PvE, Name = "Minimum health threshold party member needs to be to use Benediction")]
public float BenedictionHeal { get; set; } = 0.3f;
Expand Down Expand Up @@ -51,6 +57,8 @@ public sealed class WHM_Default : WhiteMageRotation
#region oGCD Logic
protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
{
if (Player.WillStatusEndGCD(0, 3, true, StatusID.DivineGrace) && DivineCaressPvE.CanUse(out act)) return true;

if (nextGCD is IBaseAction action && action.Info.MPNeed >= ThinAirNeed &&
ThinAirPvE.CanUse(out act)) return true;

Expand All @@ -63,6 +71,12 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
return base.EmergencyAbility(nextGCD, out act);
}

protected override bool GeneralAbility(IAction nextGCD, out IAction? act)
{
if (UseDivine && DivineCaressPvE.CanUse(out act)) return true;
return base.GeneralAbility(nextGCD, out act);
}

[RotationDesc(ActionID.TemperancePvE, ActionID.LiturgyOfTheBellPvE)]
protected override bool DefenseAreaAbility(IAction nextGCD, out IAction? act)
{
Expand Down Expand Up @@ -105,7 +119,7 @@ protected override bool HealSingleAbility(IAction nextGCD, out IAction? act)
if (BenedictionPvE.CanUse(out act) &&
RegenPvE.Target.Target?.GetHealthRatio() < BenedictionHeal) return true;

if (!IsMoving && AsylumPvE.CanUse(out act)) return true;
if (AsylumSingle && !IsMoving && AsylumPvE.CanUse(out act)) return true;

if (DivineBenisonPvE.CanUse(out act)) 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.50" />
<PackageReference Include="RotationSolverReborn.Basic" Version="7.0.5.51" />
</ItemGroup>
<ItemGroup>
<Reference Include="Dalamud">
Expand Down
52 changes: 24 additions & 28 deletions BasicRotations/Tank/WAR_Default.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace DefaultRotations.Tank;

[Rotation("Default", CombatType.PvE, GameVersion = "7.00", Description = "Additional Contributions from Sascha")]
[Rotation("Default", CombatType.PvE, GameVersion = "7.05")]
[SourceCode(Path = "main/DefaultRotations/Tank/WAR_Default.cs")]
[Api(3)]
public sealed class WAR_Default : WarriorRotation
Expand Down Expand Up @@ -29,17 +29,7 @@ public sealed class WAR_Default : WarriorRotation
#region Countdown Logic
protected override IAction? CountDownAction(float remainTime)
{
if (remainTime <= CountDownAhead)
{
if (HasTankStance)
{
if (ProvokePvE.CanUse(out var act)) return act;
}
else
{
if (TomahawkPvE.CanUse(out var act)) return act;
}
}
if (remainTime < 0.54f && TomahawkPvE.CanUse(out var act)) return act;
return base.CountDownAction(remainTime);
}
#endregion
Expand All @@ -51,8 +41,6 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)

if (CombatElapsedLessGCD(1)) return false;

if (UseBurstMedicine(out act)) return true;

if (Player.HasStatus(false, StatusID.SurgingTempest)
&& !Player.WillStatusEndGCD(2, 0, true, StatusID.SurgingTempest)
|| !MythrilTempestPvE.EnoughLevel)
Expand All @@ -61,7 +49,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)

}

if (IsBurstStatus)
if (IsBurstStatus && (InnerReleaseStacks == 0 || InnerReleaseStacks == 3))
{
if (InfuriatePvE.CanUse(out act, usedUp: true)) return true;
}
Expand Down Expand Up @@ -90,6 +78,8 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)

protected override bool GeneralAbility(IAction nextGCD, out IAction? act)
{
if (IsBurstStatus && UseBurstMedicine(out act)) return true;

if (Player.GetHealthRatio() < ThrillOfBattleHeal)
{
if (ThrillOfBattlePvE.CanUse(out act)) return true;
Expand Down Expand Up @@ -143,40 +133,46 @@ protected override bool DefenseAreaAbility(IAction nextGCD, out IAction? act)
#region GCD Logic
protected override bool GeneralGCD(out IAction? act)
{
if (IsLastAction(false, InnerReleasePvE))
if (!Player.WillStatusEndGCD(3, 0, true, StatusID.SurgingTempest))
{
if (FellCleavePvE.CanUse(out act, skipStatusProvideCheck: true)) return true;
if (ChaoticCyclonePvE.CanUse(out act)) return true;
if (InnerChaosPvE.CanUse(out act)) return true;
}

if (Player.HasStatus(false, StatusID.SurgingTempest) &&
(IsBurstStatus || !Player.HasStatus(false, StatusID.NascentChaos) || BeastGauge > 80))
if (!Player.WillStatusEndGCD(3, 0, true, StatusID.SurgingTempest) && !Player.HasStatus(true, StatusID.NascentChaos) && InnerReleaseStacks > 0)
{
if (SteelCyclonePvE.CanUse(out act)) return true;
if (InnerBeastPvE.CanUse(out act)) return true;
if (DecimatePvE.CanUse(out act, skipStatusProvideCheck: true)) return true;
if (FellCleavePvE.CanUse(out act, skipStatusProvideCheck: true)) return true;
}

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

// New check for Primal Ruination
if (Player.HasStatus(false, StatusID.PrimalRuinationReady) && !Player.HasStatus(false, StatusID.InnerRelease))
{
if (PrimalRuinationPvE.CanUse(out act, skipAoeCheck: true)) return true;
}

if (!Player.WillStatusEndGCD(3, 0, true, StatusID.SurgingTempest) && !Player.HasStatus(true, StatusID.NascentChaos) && Player.Level <= 60)
{
if (SteelCyclonePvE.CanUse(out act)) return true;
if (InnerBeastPvE.CanUse(out act)) return true;
}

// AOE
if (!Player.WillStatusEndGCD(3, 0, true, StatusID.SurgingTempest) && DecimatePvE.CanUse(out act, skipStatusProvideCheck: true)) return true;
if (MythrilTempestPvE.CanUse(out act)) return true;
if (OverpowerPvE.CanUse(out act)) return true;

// Single Target
if (!Player.WillStatusEndGCD(3, 0, true, StatusID.SurgingTempest) && FellCleavePvE.CanUse(out act, skipStatusProvideCheck: true)) return true;
if (StormsEyePvE.CanUse(out act)) return true;
if (StormsPathPvE.CanUse(out act)) return true;
if (MaimPvE.CanUse(out act)) return true;
if (HeavySwingPvE.CanUse(out act)) return true;

// Ranged
if (TomahawkPvE.CanUse(out act)) return true;

return base.GeneralGCD(out act);
Expand Down

0 comments on commit 34bdac5

Please sign in to comment.