Skip to content

Commit

Permalink
Merge pull request #498 from FFXIV-CombatReborn/ShadowWalker
Browse files Browse the repository at this point in the history
Adjustments to abilites that use or provide ShadowWalker
  • Loading branch information
LTS-FFXIV authored Dec 31, 2024
2 parents f48c81e + 51720e3 commit 720b962
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 12 deletions.
20 changes: 10 additions & 10 deletions BasicRotations/Melee/NIN_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ private bool ChoiceNinjutsu(out IAction? act)
{
// If Suiton is active but no specific Ninjutsu is currently aimed, it clears the Ninjutsu aim.
// This check is relevant for managing Suiton's effect, particularly for enabling Trick Attack.
if (Player.HasStatus(true, StatusID.Suiton)
if (Player.HasStatus(true, StatusID.ShadowWalker)
&& _ninActionAim == SuitonPvE && NoNinjutsu)
{
ClearNinjutsu();
Expand All @@ -145,15 +145,8 @@ private bool ChoiceNinjutsu(out IAction? act)
return false;
}

//Vulnerable
if (IsBurst && TrickAttackPvE.Cooldown.WillHaveOneCharge(18) && SuitonPvE.CanUse(out _) && !Player.HasStatus(true, StatusID.Suiton) && TenPvE.CanUse(out _) && ChiPvE.CanUse(out _) && JinPvE.CanUse(out _))
{
SetNinjutsu(SuitonPvE);
return false;
}

//Single
if (TenPvE.CanUse(out _, usedUp: InTrickAttack && !Player.HasStatus(false, StatusID.RaijuReady)))
if (!ShadowWalkerNeeded && TenPvE.CanUse(out _, usedUp: InTrickAttack && !Player.HasStatus(false, StatusID.RaijuReady)))
{
if (RaitonPvE.CanUse(out _) && TenPvE.CanUse(out _) && ChiPvE.CanUse(out _))
{
Expand All @@ -167,6 +160,13 @@ private bool ChoiceNinjutsu(out IAction? act)
return false;
}
}

//Vulnerable
if (ShadowWalkerNeeded && !Player.HasStatus(true, StatusID.TenChiJin) && SuitonPvE.CanUse(out _, skipStatusProvideCheck: false) && TenPvE.CanUse(out _) && ChiPvE.CanUse(out _) && JinPvE.CanUse(out _))
{
SetNinjutsu(SuitonPvE);
return false;
}
}

// If the last action performed matches any of a list of specific actions, it clears the Ninjutsu aim.
Expand Down Expand Up @@ -316,7 +316,7 @@ protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
if (!NoNinjutsu || !InCombat) return base.EmergencyAbility(nextGCD, out act);

// First priority is given to Kassatsu if it's available, allowing for an immediate powerful Ninjutsu.
if (KassatsuPvE.CanUse(out act)) return true;
if (NoNinjutsu && KassatsuPvE.CanUse(out act)) return true;

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

Expand Down
23 changes: 21 additions & 2 deletions RotationSolver.Basic/Rotations/Basic/NinjaRotation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@ partial class NinjaRotation
/// </summary>
public static bool HasJin => IncreaseAttackSpeedTrait.EnoughLevel;

/// <summary>
/// Do you need to prep or currently use shadowwalker
/// </summary>
public bool ShadowWalkerNeeded => TrickAttackPvE.Cooldown.WillHaveOneCharge(18) || KunaisBanePvE.Cooldown.WillHaveOneCharge(18) || MeisuiPvE.Cooldown.WillHaveOneCharge(18);

/// <summary>
/// Determines if Trick Attack is in its effective period.
/// </summary>
Expand All @@ -36,6 +41,18 @@ partial class NinjaRotation
/// </summary>
public static bool NoNinjutsu => AdjustId(ActionID.NinjutsuPvE) is ActionID.NinjutsuPvE or ActionID.RabbitMediumPvE;

/// <summary>
/// Holds the remaining amount of Delirium stacks
/// </summary>
public static byte RaijuStacks
{
get
{
byte stacks = Player.StatusStack(true, StatusID.RaijuReady);
return stacks == byte.MaxValue ? (byte)3 : stacks;
}
}

/// <inheritdoc/>
public override void DisplayStatus()
{
Expand All @@ -45,6 +62,8 @@ public override void DisplayStatus()
ImGui.Text($"InTrickAttack: {InTrickAttack}");
ImGui.Text($"InMug: {InMug}");
ImGui.Text($"NoNinjutsu: {NoNinjutsu}");
ImGui.Text($"RaijuStacks: {RaijuStacks}");
ImGui.Text($"ShadowWalkerNeeded: {ShadowWalkerNeeded}");
}
#endregion

Expand Down Expand Up @@ -310,7 +329,7 @@ static partial void ModifyKatonPvE(ref ActionSetting setting)

static partial void ModifyRaitonPvE(ref ActionSetting setting)
{
setting.StatusProvide = [StatusID.RaijuReady];
//setting.StatusProvide = [StatusID.RaijuReady];
}

static partial void ModifyHyotonPvE(ref ActionSetting setting)
Expand Down Expand Up @@ -338,7 +357,7 @@ static partial void ModifyDotonPvE(ref ActionSetting setting)

static partial void ModifySuitonPvE(ref ActionSetting setting)
{
//setting.StatusProvide = [StatusID.ShadowWalker];
setting.StatusProvide = [StatusID.ShadowWalker];
}

static partial void ModifyGokaMekkyakuPvE(ref ActionSetting setting)
Expand Down

0 comments on commit 720b962

Please sign in to comment.