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

Commit

Permalink
fix: fix the range attack action usage of melee and tank.
Browse files Browse the repository at this point in the history
  • Loading branch information
ArchiDog1998 committed Mar 27, 2023
1 parent 6189eb1 commit 04c4c2e
Show file tree
Hide file tree
Showing 15 changed files with 43 additions and 18 deletions.
17 changes: 17 additions & 0 deletions RotationSolver.Basic/Helpers/IActionHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,23 @@ namespace RotationSolver.Basic.Helpers;

public static class IActionHelper
{
public static ActionID[] MovingActions = new ActionID[]
{
ActionID.EnAvant,
ActionID.Plunge,
ActionID.RoughDivide,
ActionID.Thunderclap,
ActionID.Shukuchi,
ActionID.Intervene,
ActionID.CorpsACorps,
ActionID.HellsIngress,
ActionID.HissatsuGyoten,
ActionID.Icarus,
ActionID.Onslaught,
ActionID.SpineShatterDive,
ActionID.DragonFireDive,
};

internal static bool IsLastGCD(bool isAdjust, params IAction[] actions)
{
return IsLastGCD(GetIDFromActions(isAdjust, actions));
Expand Down
1 change: 1 addition & 0 deletions RotationSolver.Basic/Rotations/Basic/DRG_Base.cs
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ public abstract class DRG_Base : CustomRotation
public static IBaseAction PiercingTalon { get; } = new BaseAction(ActionID.PiercingTalon)
{
FilterForHostiles = TargetFilter.MeleeRangeTargetFilter,
ActionCheck = b => !IsLastAction(IActionHelper.MovingActions),
};

/// <summary>
Expand Down
3 changes: 2 additions & 1 deletion RotationSolver.Basic/Rotations/Basic/DRK_Base.cs
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ protected static bool DarkSideEndAfterGCD(uint gctCount = 0, uint abilityCount =
public static IBaseAction Unmend { get; } = new BaseAction(ActionID.Unmend)
{
FilterForHostiles = TargetFilter.TankRangeTarget,
ActionCheck = b => !IsLastAction(IActionHelper.MovingActions),
};

/// <summary>
Expand Down Expand Up @@ -199,7 +200,7 @@ protected static bool DarkSideEndAfterGCD(uint gctCount = 0, uint abilityCount =
/// <summary>
/// 暗影使者
/// </summary>
public static IBaseAction Shadowbringer { get; } = new BaseAction(ActionID.ShadowBringer)
public static IBaseAction ShadowBringer { get; } = new BaseAction(ActionID.ShadowBringer)
{
ActionCheck = b => JobGauge.DarksideTimeRemaining > 0,
};
Expand Down
1 change: 1 addition & 0 deletions RotationSolver.Basic/Rotations/Basic/GNB_Base.cs
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ public abstract class GNB_Base : CustomRotation
public static IBaseAction LightningShot { get; } = new BaseAction(ActionID.LightningShot)
{
FilterForHostiles = TargetFilter.TankRangeTarget,
ActionCheck = b => !IsLastAction(IActionHelper.MovingActions),
};

/// <summary>
Expand Down
10 changes: 5 additions & 5 deletions RotationSolver.Basic/Rotations/Basic/MNK_Base.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,12 @@ public abstract class MNK_Base : CustomRotation
/// <summary>
/// 连击
/// </summary>
public static IBaseAction Bootshine { get; } = new BaseAction(ActionID.BootShine);
public static IBaseAction BootShine { get; } = new BaseAction(ActionID.BootShine);

/// <summary>
/// 破坏神冲 aoe
/// </summary>
public static IBaseAction ArmoftheDestroyer { get; } = new BaseAction(ActionID.ArmOfTheDestroyer);
public static IBaseAction ArmOfTheDestroyer { get; } = new BaseAction(ActionID.ArmOfTheDestroyer);

/// <summary>
/// 破坏神脚 aoe
Expand Down Expand Up @@ -177,15 +177,15 @@ public abstract class MNK_Base : CustomRotation
/// <summary>
/// 金刚极意 盾
/// </summary>
public static IBaseAction RiddleofEarth { get; } = new BaseAction(ActionID.RiddleOfEarth, true, shouldEndSpecial: true, isTimeline: true)
public static IBaseAction RiddleOfEarth { get; } = new BaseAction(ActionID.RiddleOfEarth, true, shouldEndSpecial: true, isTimeline: true)
{
StatusProvide = new[] { StatusID.RiddleOfEarth },
};

/// <summary>
/// 疾风极意
/// </summary>
public static IBaseAction RiddleofWind { get; } = new BaseAction(ActionID.RiddleOfWind, true);
public static IBaseAction RiddleOfWind { get; } = new BaseAction(ActionID.RiddleOfWind, true);

[RotationDesc(ActionID.Thunderclap)]
protected sealed override bool MoveForwardAbility(byte abilitiesRemaining, out IAction act, bool recordTarget = true)
Expand All @@ -211,7 +211,7 @@ protected sealed override bool HealAreaAbility(byte abilitiesRemaining, out IAct
[RotationDesc(ActionID.RiddleOfEarth)]
protected sealed override bool DefenseSingleAbility(byte abilitiesRemaining, out IAction act)
{
if (RiddleofEarth.CanUse(out act, emptyOrSkipCombo: true)) return true;
if (RiddleOfEarth.CanUse(out act, emptyOrSkipCombo: true)) return true;
return false;
}
}
1 change: 1 addition & 0 deletions RotationSolver.Basic/Rotations/Basic/NIN_Base.cs
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ internal NinAction(ActionID actionID, params IBaseAction[] ninjutsus)
public static IBaseAction ThrowingDagger { get; } = new BaseAction(ActionID.ThrowingDagger)
{
FilterForHostiles = TargetFilter.MeleeRangeTargetFilter,
ActionCheck = b => !IsLastAction(IActionHelper.MovingActions),
};

/// <summary>
Expand Down
1 change: 1 addition & 0 deletions RotationSolver.Basic/Rotations/Basic/PLD_Base.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ public abstract class PLD_Base : CustomRotation
public static IBaseAction ShieldLob { get; } = new BaseAction(ActionID.ShieldLob)
{
FilterForHostiles = TargetFilter.TankRangeTarget,
ActionCheck = b => !IsLastAction(IActionHelper.MovingActions),
};

/// <summary>
Expand Down
2 changes: 1 addition & 1 deletion RotationSolver.Basic/Rotations/Basic/RPR_Base.cs
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ internal PRPAction(ActionID actionID, bool isFriendly = false, bool shouldEndSpe
/// </summary>
public static IBaseAction Harpe { get; } = new BaseAction(ActionID.Harpe)
{
ActionCheck = b => !SoulReaver,
ActionCheck = b => !SoulReaver && !IsLastAction(IActionHelper.MovingActions),
FilterForHostiles = TargetFilter.MeleeRangeTargetFilter,
};

Expand Down
1 change: 1 addition & 0 deletions RotationSolver.Basic/Rotations/Basic/SAM_Base.cs
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@ public abstract class SAM_Base : CustomRotation
public static IBaseAction Enpi { get; } = new BaseAction(ActionID.Enpi)
{
FilterForHostiles = TargetFilter.MeleeRangeTargetFilter,
ActionCheck = b => !IsLastAction(IActionHelper.MovingActions),
};

/// <summary>
Expand Down
2 changes: 2 additions & 0 deletions RotationSolver.Basic/Rotations/Basic/SGE_Base.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using Dalamud.Game.ClientState.JobGauge.Types;
using RotationSolver.Actions.BaseAction;
using RotationSolver.Basic.Actions;
using RotationSolver.Basic.Attributes;
using RotationSolver.Basic.Data;
using RotationSolver.Basic.Helpers;
using RotationSolver.Rotations.CustomRotation;
Expand Down Expand Up @@ -252,6 +253,7 @@ protected static bool AddersgallEndAfterGCD(uint gctCount = 0, uint abilityCount
},
};

[RotationDesc(ActionID.Icarus)]
protected sealed override bool MoveForwardAbility(byte abilitiesRemaining, out IAction act, bool recordTarget = true)
{
//神翼
Expand Down
1 change: 1 addition & 0 deletions RotationSolver.Basic/Rotations/Basic/WAR_Base.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ public abstract class WAR_Base : CustomRotation
public static IBaseAction Tomahawk { get; } = new BaseAction(ActionID.Tomahawk)
{
FilterForHostiles = TargetFilter.TankRangeTarget,
ActionCheck = b => !IsLastAction(IActionHelper.MovingActions),
};

/// <summary>
Expand Down
6 changes: 3 additions & 3 deletions RotationSolver.Default/Melee/MNK_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ protected override IAction CountDownAction(float remainTime)

private static bool OpoOpoForm(out IAction act)
{
if (ArmoftheDestroyer.CanUse(out act)) return true;
if (ArmOfTheDestroyer.CanUse(out act)) return true;
if (DragonKick.CanUse(out act)) return true;
if (Bootshine.CanUse(out act)) return true;
if (BootShine.CanUse(out act)) return true;
return false;
}

Expand Down Expand Up @@ -177,7 +177,7 @@ protected override bool AttackAbility(byte abilitiesRemaining, out IAction act)

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

if (RiddleofWind.CanUse(out act)) return true;
if (RiddleOfWind.CanUse(out act)) return true;

if (HowlingFist.CanUse(out act)) return true;
if (SteelPeak.CanUse(out act)) return true;
Expand Down
8 changes: 4 additions & 4 deletions RotationSolver.Default/Tank/DRK_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public sealed class DRK_Default : DRK_Base

private static bool CombatLess => CombatElapsedLess(3);

private bool CheckDrakSide
private bool CheckDarkSide
{
get
{
Expand Down Expand Up @@ -129,7 +129,7 @@ protected override bool GeneralGCD(out IAction act)

protected override bool AttackAbility(byte abilitiesRemaining, out IAction act)
{
if (CheckDrakSide)
if (CheckDarkSide)
{
if (FloodofDarkness.CanUse(out act)) return true;
if (EdgeofDarkness.CanUse(out act)) return true;
Expand All @@ -153,12 +153,12 @@ protected override bool AttackAbility(byte abilitiesRemaining, out IAction act)

if (InDeliruim)
{
if (Shadowbringer.CanUse(out act, mustUse: true)) return true;
if (ShadowBringer.CanUse(out act, mustUse: true)) return true;

if (AbyssalDrain.CanUse(out act)) return true;
if (CarveandSpit.CanUse(out act)) return true;

if (Shadowbringer.CanUse(out act, mustUse: true, emptyOrSkipCombo: true)) return true;
if (ShadowBringer.CanUse(out act, mustUse: true, emptyOrSkipCombo: true)) return true;
}

if (SaltandDarkness.CanUse(out act)) return true;
Expand Down
1 change: 0 additions & 1 deletion RotationSolver.Default/Tank/GNB_Default.cs
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,6 @@ protected override bool AttackAbility(byte abilitiesRemaining, out IAction act)
if (GnashingFang.IsCoolingDown && Bloodfest.CanUse(out act)) return true;

//搞搞攻击,粗分斩
if (RoughDivide.CanUse(out act, mustUse: true) && !IsMoving) return true;
if (Player.HasStatus(true, StatusID.NoMercy) && RoughDivide.CanUse(out act, mustUse: true)) return true;

act = null;
Expand Down
6 changes: 3 additions & 3 deletions RotationSolver.Old/Melee/MNK_Old.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ protected override IRotationConfigSet CreateConfiguration()

private bool OpoOpoForm(out IAction act)
{
if (ArmoftheDestroyer.CanUse(out act)) return true;
if (ArmOfTheDestroyer.CanUse(out act)) return true;
if (DragonKick.CanUse(out act)) return true;
if (Bootshine.CanUse(out act)) return true;
if (BootShine.CanUse(out act)) return true;
return false;
}

Expand Down Expand Up @@ -138,7 +138,7 @@ protected override bool AttackAbility(byte abilitiesRemaining, out IAction act)
}
}

if (RiddleofWind.CanUse(out act)) return true;
if (RiddleOfWind.CanUse(out act)) return true;

if (HowlingFist.CanUse(out act)) return true;
if (SteelPeak.CanUse(out act)) return true;
Expand Down

0 comments on commit 04c4c2e

Please sign in to comment.