diff --git a/RotationSolver/Actions/BaseAction/BaseAction_Target.cs b/RotationSolver/Actions/BaseAction/BaseAction_Target.cs
index 32307c6ee..f1a12edf5 100644
--- a/RotationSolver/Actions/BaseAction/BaseAction_Target.cs
+++ b/RotationSolver/Actions/BaseAction/BaseAction_Target.cs
@@ -54,13 +54,13 @@ internal static bool TankDefenseSelf(BattleChara chara)
{
return TargetUpdater.TarOnMeTargets.Any();
}
- internal static bool TankBreakOtherCheck(ClassJobID id, BattleChara chara)
+ internal static bool TankBreakOtherCheck(ClassJobID id)
{
var tankHealth = id.GetHealthForDyingTank();
return TargetUpdater.HasHostilesInRange
&& Service.ClientState.LocalPlayer.GetHealthRatio() < tankHealth
- && TargetUpdater.PartyMembersAverHP > tankHealth + 0.05f;
+ && TargetUpdater.PartyMembersAverHP > tankHealth + 0.01f;
}
private bool FindTarget(bool mustUse, out BattleChara target)
diff --git a/RotationSolver/Data/StatusID.cs b/RotationSolver/Data/StatusID.cs
index 21a33db82..76425a7f2 100644
--- a/RotationSolver/Data/StatusID.cs
+++ b/RotationSolver/Data/StatusID.cs
@@ -249,9 +249,7 @@ internal enum StatusID : ushort
///
/// 铁壁
///
- Rampart1 = 71,
- Rampart2 = 1191,
- Rampart3 = 1978,
+ Rampart = 1191,
///
/// 复仇
@@ -1119,4 +1117,6 @@ internal enum StatusID : ushort
Aetherpact = 1223,
ConfiteorReady = 3019,
+
+ Bulwark = 77,
}
diff --git a/RotationSolver/Rotations/Basic/DRK_Base.cs b/RotationSolver/Rotations/Basic/DRK_Base.cs
index 4965e2331..5f41b92c3 100644
--- a/RotationSolver/Rotations/Basic/DRK_Base.cs
+++ b/RotationSolver/Rotations/Basic/DRK_Base.cs
@@ -212,7 +212,7 @@ protected static bool DarkSideEndAfterGCD(uint gctCount = 0, uint abilityCount =
private protected override bool EmergencyAbility(byte abilitiesRemaining, IAction nextGCD, out IAction act)
{
//行尸走肉
- if (LivingDead.CanUse(out act) && BaseAction.TankBreakOtherCheck(JobIDs[0], LivingDead.Target)) return true;
+ if (LivingDead.CanUse(out act) && BaseAction.TankBreakOtherCheck(JobIDs[0])) return true;
return base.EmergencyAbility(abilitiesRemaining, nextGCD, out act);
}
diff --git a/RotationSolver/Rotations/Basic/GNB_Base.cs b/RotationSolver/Rotations/Basic/GNB_Base.cs
index 3a0fa4b16..98a52dd1c 100644
--- a/RotationSolver/Rotations/Basic/GNB_Base.cs
+++ b/RotationSolver/Rotations/Basic/GNB_Base.cs
@@ -231,7 +231,7 @@ internal abstract class GNB_Base : CustomRotation.CustomRotation
private protected override bool EmergencyAbility(byte abilitiesRemaining, IAction nextGCD, out IAction act)
{
- if (Superbolide.CanUse(out act) && BaseAction.TankBreakOtherCheck(JobIDs[0], Superbolide.Target)) return true;
+ if (Superbolide.CanUse(out act) && BaseAction.TankBreakOtherCheck(JobIDs[0])) return true;
return base.EmergencyAbility(abilitiesRemaining, nextGCD, out act);
}
diff --git a/RotationSolver/Rotations/Basic/PLD_Base.cs b/RotationSolver/Rotations/Basic/PLD_Base.cs
index 51804b768..8774bcbf1 100644
--- a/RotationSolver/Rotations/Basic/PLD_Base.cs
+++ b/RotationSolver/Rotations/Basic/PLD_Base.cs
@@ -104,7 +104,7 @@ internal abstract class PLD_Base : CustomRotation.CustomRotation
///
/// ��ʥ����
///
- public static IBaseAction HallowedGround { get; } = new BaseAction(ActionID.HallowedGround, isTimeline: true);
+ public static IBaseAction HallowedGround { get; } = new BaseAction(ActionID.HallowedGround, true, isTimeline: true);
///
/// ʥ��Ļ��
@@ -200,17 +200,20 @@ internal abstract class PLD_Base : CustomRotation.CustomRotation
///
/// ����
///
- public static IBaseAction Sheltron { get; } = new BaseAction(ActionID.Sheltron, isTimeline: true)
+ public static IBaseAction Sheltron { get; } = new BaseAction(ActionID.Sheltron, true, isTimeline: true)
{
ActionCheck = Cover.ActionCheck,
};
- public static IBaseAction Bulwark { get; } = new BaseAction(ActionID.Bulwark, isTimeline: true);
+ public static IBaseAction Bulwark { get; } = new BaseAction(ActionID.Bulwark, true, isTimeline: true)
+ {
+ StatusProvide = Rampart.StatusProvide,
+ };
private protected override bool EmergencyAbility(byte abilitiesRemaining, IAction nextGCD, out IAction act)
{
- if (HallowedGround.CanUse(out act) && BaseAction.TankBreakOtherCheck(JobIDs[0], HallowedGround.Target)) return true;
+ if (HallowedGround.CanUse(out act) && BaseAction.TankBreakOtherCheck(JobIDs[0])) return true;
return base.EmergencyAbility(abilitiesRemaining, nextGCD, out act);
}
diff --git a/RotationSolver/Rotations/Basic/WAR_Base.cs b/RotationSolver/Rotations/Basic/WAR_Base.cs
index f3fe5d192..5ff2264b9 100644
--- a/RotationSolver/Rotations/Basic/WAR_Base.cs
+++ b/RotationSolver/Rotations/Basic/WAR_Base.cs
@@ -181,7 +181,7 @@ internal abstract class WAR_Base : CustomRotation.CustomRotation
private protected override bool EmergencyAbility(byte abilitiesRemaining, IAction nextGCD, out IAction act)
{
//���� ���Ѫ�����ˡ�
- if (Holmgang.CanUse(out act) && BaseAction.TankBreakOtherCheck(JobIDs[0], Holmgang.Target)) return true;
+ if (Holmgang.CanUse(out act) && BaseAction.TankBreakOtherCheck(JobIDs[0])) return true;
return base.EmergencyAbility(abilitiesRemaining, nextGCD, out act);
}
diff --git a/RotationSolver/Rotations/CustomRotation/CustomRotation_Actions.cs b/RotationSolver/Rotations/CustomRotation/CustomRotation_Actions.cs
index 6b4c08075..a10df3d51 100644
--- a/RotationSolver/Rotations/CustomRotation/CustomRotation_Actions.cs
+++ b/RotationSolver/Rotations/CustomRotation/CustomRotation_Actions.cs
@@ -105,7 +105,7 @@ internal RoleAction(ActionID actionID, JobRole[] roles, bool isFriendly = false,
StatusProvide = new StatusID[]
{
StatusID.Superbolide, StatusID.HallowedGround,
- StatusID.Rampart1, StatusID.Rampart2, StatusID.Rampart3,
+ StatusID.Rampart, StatusID.Bulwark,
//原初的直觉和血气
StatusID.RawIntuition, StatusID.Bloodwhetting,
//复仇
diff --git a/RotationSolver/Windows/OverlayWindow.cs b/RotationSolver/Windows/OverlayWindow.cs
index f51c700a3..b7bc1df8e 100644
--- a/RotationSolver/Windows/OverlayWindow.cs
+++ b/RotationSolver/Windows/OverlayWindow.cs
@@ -16,7 +16,7 @@ namespace RotationSolver.Windows;
internal static class OverlayWindow
{
- internal static BattleChara EnemyLocationTarget;
+ internal static BattleChara EnemyLocationTarget { get; set; }
internal static EnemyPositional ShouldPositional { get; set; } = EnemyPositional.None;
public static void Draw()
{