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

Commit

Permalink
Stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
LTS-FFXIV committed Sep 2, 2024
1 parent 9c7107f commit 1a3636a
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 38 deletions.
5 changes: 4 additions & 1 deletion BasicRotations/Healer/SGE_Default.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace DefaultRotations.Healer;

[Rotation("Default", CombatType.PvE, GameVersion = "7.01")]
[Rotation("Default", CombatType.PvE, GameVersion = "7.05")]
[SourceCode(Path = "main/DefaultRotations/Healer/SGE_Default.cs")]
[Api(3)]
public sealed class SGE_Default : SageRotation
Expand Down Expand Up @@ -200,6 +200,9 @@ protected override bool HealSingleAbility(IAction nextGCD, out IAction? act)

protected override bool GeneralAbility(IAction nextGCD, out IAction? act)
{
// If not in combat and lacking the Kardia status, attempt to use KardiaPvE
if (!InCombat && !Player.HasStatus(true, StatusID.Kardia) && KardiaPvE.CanUse(out act)) return true;

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

if (Addersgall <= 1 && RhizomataPvE.CanUse(out act)) return true;
Expand Down
35 changes: 19 additions & 16 deletions BasicRotations/Melee/NIN_Default.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;

namespace DefaultRotations.Melee;

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

public sealed class NIN_Default : NinjaRotation
{
#region Config Options
Expand All @@ -12,7 +15,7 @@ public sealed class NIN_Default : NinjaRotation
[RotationConfig(CombatType.PvE, Name = "Use Unhide")]
public bool AutoUnhide { get; set; } = true;

public bool IsShadowWalking = (Player.HasStatus(true, StatusID.ShadowWalker));
public bool IsShadowWalking = Player.HasStatus(true, StatusID.ShadowWalker);
#endregion

#region CountDown Logic
Expand Down Expand Up @@ -75,42 +78,42 @@ private void ClearNinjutsu()
private bool ChoiceNinjutsu(out IAction? act)
{
act = null;

if (!JinPvE.CanUse(out _) || !ChiPvE.CanUse(out _) || !TenPvE.CanUse(out _)) return false;
// Ensures that the action ID currently considered for Ninjutsu is actually valid for Ninjutsu execution.
if (AdjustId(ActionID.NinjutsuPvE) != ActionID.NinjutsuPvE) return false;
// If more than 4.5 seconds have passed since the last action, it clears any pending Ninjutsu to avoid stale actions.
if (TimeSinceLastAction.TotalSeconds > 4.5) ClearNinjutsu();
// Prevents choosing a new Ninjutsu if the timing is too tight.
if (_ninActionAim != null && WeaponRemain < 0.1) return false;

// Checks for Kassatsu status to prioritize high-impact Ninjutsu due to its buff.
if (Player.HasStatus(true, StatusID.Kassatsu))
{
// Attempts to set high-damage AoE Ninjutsu if available under Kassatsu's effect.
// These are prioritized due to Kassatsu's enhancement of Ninjutsu abilities.
if (GokaMekkyakuPvE.CanUse(out _))
if (GokaMekkyakuPvE.CanUse(out _) && ChiPvE.CanUse(out _) && TenPvE.CanUse(out _))
{
SetNinjutsu(GokaMekkyakuPvE);
return false;
}
if (HyoshoRanryuPvE.CanUse(out _))
if (HyoshoRanryuPvE.CanUse(out _) && TenPvE.CanUse(out _) && JinPvE.CanUse(out _))
{
SetNinjutsu(HyoshoRanryuPvE);
return false;
}

/*if (HutonPvE.CanUse(out _))
if (HutonPvE.CanUse(out _) && TenPvE.CanUse(out _) && ChiPvE.CanUse(out _) && JinPvE.CanUse(out _))
{
SetNinjutsu(HutonPvE);
return false;
}*/
}

if (KatonPvE.CanUse(out _))
if (KatonPvE.CanUse(out _) && ChiPvE.CanUse(out _) && TenPvE.CanUse(out _))
{
SetNinjutsu(KatonPvE);
return false;
}

if (RaitonPvE.CanUse(out _))
if (RaitonPvE.CanUse(out _) && TenPvE.CanUse(out _) && ChiPvE.CanUse(out _))
{
SetNinjutsu(RaitonPvE);
return false;
Expand All @@ -131,16 +134,16 @@ private bool ChoiceNinjutsu(out IAction? act)
// Also considers using Suiton for vulnerability debuff on the enemy if conditions are optimal.

//Aoe
if (KatonPvE.CanUse(out _))
if (KatonPvE.CanUse(out _) && ChiPvE.CanUse(out _) && TenPvE.CanUse(out _))
{
if (!Player.HasStatus(true, StatusID.Doton) && !IsMoving && !IsLastGCD(false, DotonPvE) && (!TenChiJinPvE.Cooldown.WillHaveOneCharge(6)) || !TenChiJinPvE.Cooldown.IsCoolingDown)
if (!Player.HasStatus(true, StatusID.Doton) && !IsMoving && !IsLastGCD(false, DotonPvE) && (!TenChiJinPvE.Cooldown.WillHaveOneCharge(6)) || !TenChiJinPvE.Cooldown.IsCoolingDown && TenPvE.CanUse(out _) && ChiPvE.CanUse(out _) && JinPvE.CanUse(out _))
SetNinjutsu(DotonPvE);
else SetNinjutsu(KatonPvE);
return false;
}

//Vulnerable
if (IsBurst && TrickAttackPvE.Cooldown.WillHaveOneCharge(18) && SuitonPvE.CanUse(out _) && !Player.HasStatus(true, StatusID.Suiton))
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;
Expand All @@ -149,7 +152,7 @@ private bool ChoiceNinjutsu(out IAction? act)
//Single
if (TenPvE.CanUse(out _, usedUp: InTrickAttack && !Player.HasStatus(false, StatusID.RaijuReady)))
{
if (RaitonPvE.CanUse(out _))
if (RaitonPvE.CanUse(out _) && TenPvE.CanUse(out _) && ChiPvE.CanUse(out _))
{
SetNinjutsu(RaitonPvE);
return false;
Expand Down Expand Up @@ -248,7 +251,7 @@ private bool DoNinjutsu(out IAction? act)
act = _ninActionAim.Setting.Ninjutsu![0];
return true;
}
//Finished
//Second
else if ((uint)id == _ninActionAim.ID)
{
if (_ninActionAim.CanUse(out act, skipAoeCheck: true)) return true;
Expand All @@ -258,7 +261,7 @@ private bool DoNinjutsu(out IAction? act)
return true;
}
}
//Second
//Third
else if ((uint)id == FumaShurikenPvE.ID)
{
if (_ninActionAim.Setting.Ninjutsu!.Length > 1
Expand All @@ -268,7 +271,7 @@ private bool DoNinjutsu(out IAction? act)
return true;
}
}
//Third
//Finished
else if ((uint)id == KatonPvE.ID || (uint)id == RaitonPvE.ID || (uint)id == HyotonPvE.ID)
{
if (_ninActionAim.Setting.Ninjutsu!.Length > 2
Expand Down
8 changes: 5 additions & 3 deletions BasicRotations/Melee/SAM_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ public sealed class SAM_Default : SamuraiRotation
[RotationConfig(CombatType.PvE, Name = "Use Kenki above.")]
public int AddKenki { get; set; } = 50;

[RotationConfig(CombatType.PvE, Name = "Prevent Higanbana use if theres more than one target")]
public bool HiganbanaTargets { get; set; } = false;

#endregion

#region Countdown Logic
Expand Down Expand Up @@ -104,6 +107,7 @@ protected override bool GeneralGCD(out IAction? act)
{
if (MidareSetsugekkaPvE.CanUse(out act)) return true;

if (TenkaGokenPvE.CanUse(out act)) return true;
if (TendoGokenPvE.CanUse(out act)) return true;
if (TendoSetsugekkaPvE.CanUse(out act)) return true;
if (TendoKaeshiGokenPvE.CanUse(out act)) return true;
Expand All @@ -124,9 +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 (HiganbanaPvE.CanUse(out act)) return true;

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

if (TendoSetsugekkaPvE.CanUse(out act)) return true;
if (MidareSetsugekkaPvE.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.45" />
<PackageReference Include="RotationSolverReborn.Basic" Version="7.0.5.46" />
</ItemGroup>
<ItemGroup>
<Reference Include="Dalamud">
Expand Down
31 changes: 14 additions & 17 deletions BasicRotations/Tank/DRK_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,6 @@ public sealed class DRK_Default : DarkKnightRotation
// Decision-making for emergency abilities, focusing on Blood Weapon usage.
protected override bool EmergencyAbility(IAction nextGCD, out IAction? act)
{
if (base.EmergencyAbility(nextGCD, out act)) return true;

if ((InCombat && CombatElapsedLess(2) || TimeSinceLastAction.TotalSeconds >= 10))
{
if (BloodWeaponPvE.CanUse(out act, skipAoeCheck: true)) return true;
}

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

Expand Down Expand Up @@ -134,7 +127,7 @@ protected override bool AttackAbility(IAction nextGCD, out IAction? act)

if (InTwoMIsBurst)
{
if (ShadowstridePvE.CanUse(out act, usedUp: true, skipAoeCheck: true) && !IsMoving) return true;
if (ShadowstridePvE.CanUse(out act, skipAoeCheck: true) && !IsMoving) return true;
}
if (MergedStatus.HasFlag(AutoStatus.MoveForward) && MoveForwardAbility(nextGCD, out act)) return true;
return base.AttackAbility(nextGCD, out act);
Expand All @@ -146,21 +139,24 @@ protected override bool GeneralGCD(out IAction? act)
{
if (DisesteemPvE.CanUse(out act)) return true;

//Use Blood
if (UseBlood)
{
if (QuietusPvE.CanUse(out act, skipComboCheck: true)) return true;
if (BloodspillerPvE.CanUse(out act, skipComboCheck: true)) return true;
}
if (QuietusPvE.CanUse(out act, skipComboCheck: true)) return true;
if (ImpalementPvE.CanUse(out act, skipComboCheck: true)) return true;
if (ScarletDeliriumPvE.CanUse(out act, skipComboCheck: true)) return true;
if (ComeuppancePvE.CanUse(out act, skipComboCheck: true)) return true;
if (TorcleaverPvE.CanUse(out act, skipComboCheck: true)) return true;
if (BloodspillerPvE.CanUse(out act, skipComboCheck: true)) return true;

//AOE
if (StalwartSoulPvE.CanUse(out act)) return true;
if (UnleashPvE.CanUse(out act)) return true;

//Single Target
if (SouleaterPvE.CanUse(out act)) return true;
if (SyphonStrikePvE.CanUse(out act)) return true;
if (HardSlashPvE.CanUse(out act)) return true;
if (!Player.HasStatus(true, StatusID.Delirium_1972) && !Player.HasStatus(true, StatusID.Delirium_3836))
{
if (SouleaterPvE.CanUse(out act)) return true;
if (SyphonStrikePvE.CanUse(out act)) return true;
if (HardSlashPvE.CanUse(out act)) return true;
}

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

Expand All @@ -179,6 +175,7 @@ private bool UseBlood
{
// Conditions based on player statuses and ability cooldowns.
if (!DeliriumPvE.EnoughLevel || !LivingShadowPvE.EnoughLevel) return true;
if (Player.HasStatus(true, StatusID.Delirium_3836)) return true;
if ((Player.HasStatus(true, StatusID.Delirium_1972) || Player.HasStatus(true, StatusID.Delirium_3836)) && LivingShadowPvE.Cooldown.IsCoolingDown) return true;
if ((DeliriumPvE.Cooldown.WillHaveOneChargeGCD(1) && !LivingShadowPvE.Cooldown.WillHaveOneChargeGCD(3)) || Blood >= 90 && !LivingShadowPvE.Cooldown.WillHaveOneChargeGCD(1)) return true;

Expand Down

0 comments on commit 1a3636a

Please sign in to comment.