diff --git a/Directory.Build.props b/Directory.Build.props
index 606eb3b7a..cbae7cbed 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -3,7 +3,7 @@
net7.0-windows
enable
ArchiTed
- 4.0.3.1
+ 4.0.3.2
x64
AnyCPU
latest
diff --git a/Resources/HostileCastingArea.json b/Resources/HostileCastingArea.json
index 0a55a07bf..1770c2fe8 100644
--- a/Resources/HostileCastingArea.json
+++ b/Resources/HostileCastingArea.json
@@ -495,5 +495,16 @@
35384,
35386,
36001,
- 20052
+ 20052,
+ 20386,
+ 9239,
+ 11325,
+ 11344,
+ 11349,
+ 11484,
+ 11550,
+ 11464,
+ 11612,
+ 11306,
+ 11308
]
\ No newline at end of file
diff --git a/Resources/RotationSolverRecord.json b/Resources/RotationSolverRecord.json
index 32dd843af..23514e8b5 100644
--- a/Resources/RotationSolverRecord.json
+++ b/Resources/RotationSolverRecord.json
@@ -1,5 +1,5 @@
{
- "ClickingCount": 73576,
- "SayingHelloCount": 61,
+ "ClickingCount": 76809,
+ "SayingHelloCount": 66,
"SaidUsers": []
}
\ No newline at end of file
diff --git a/RotationSolver.Basic/Actions/ActionTargetInfo.cs b/RotationSolver.Basic/Actions/ActionTargetInfo.cs
index 256e800cb..d6606a007 100644
--- a/RotationSolver.Basic/Actions/ActionTargetInfo.cs
+++ b/RotationSolver.Basic/Actions/ActionTargetInfo.cs
@@ -221,7 +221,11 @@ private readonly bool CheckTimeToKill(GameObject gameObject)
if (t == null) return null;
- if (IsSingleTarget)
+ if (type == TargetType.Move)
+ {
+ return null;
+ }
+ else if (IsSingleTarget)
{
if (CanUseTo(t) && CheckStatus(t, skipStatusProvideCheck) && t.DistanceToPlayer() <= range)
{
diff --git a/RotationSolver.Basic/Actions/IBaseAction.cs b/RotationSolver.Basic/Actions/IBaseAction.cs
index 6cfe3cde2..7e3a45e84 100644
--- a/RotationSolver.Basic/Actions/IBaseAction.cs
+++ b/RotationSolver.Basic/Actions/IBaseAction.cs
@@ -4,10 +4,7 @@ namespace RotationSolver.Basic.Actions;
public interface IBaseAction : IAction
{
- ///
- /// The target override.
- ///
- public static TargetType? TargetOverride { get; set; } = null;
+ internal static TargetType? TargetOverride { get; set; } = null;
internal static bool ForceEnable { get; set; } = false;
internal static bool AutoHealCheck { get; set; } = false;
internal static bool ActionPreview { get; set; } = false;
diff --git a/RotationSolver.Basic/Rotations/Basic/BardRotation.cs b/RotationSolver.Basic/Rotations/Basic/BardRotation.cs
index ed42ad70c..85b94f73b 100644
--- a/RotationSolver.Basic/Rotations/Basic/BardRotation.cs
+++ b/RotationSolver.Basic/Rotations/Basic/BardRotation.cs
@@ -79,7 +79,27 @@ static partial void ModifyIronJawsPvE(ref ActionSetting setting)
return true;
};
}
-
+
+ static partial void ModifyPitchPerfectPvP(ref ActionSetting setting)
+ {
+ setting.StatusNeed = [StatusID.Repertoire];
+ }
+
+ static partial void ModifySilentNocturnePvP(ref ActionSetting setting)
+ {
+ setting.StatusProvide = [StatusID.Repertoire];
+ }
+
+ static partial void ModifyTheWardensPaeanPvP(ref ActionSetting setting)
+ {
+ setting.StatusProvide = [StatusID.Repertoire];
+ }
+
+ static partial void ModifyBlastArrowPvP(ref ActionSetting setting)
+ {
+ setting.StatusNeed = [StatusID.BlastArrowReady_3142];
+ }
+
static partial void ModifyPitchPerfectPvE(ref ActionSetting setting)
{
setting.ActionCheck = () => Song == Song.WANDERER && Repertoire > 0;
diff --git a/RotationSolver.Basic/Rotations/Basic/DancerRotation.cs b/RotationSolver.Basic/Rotations/Basic/DancerRotation.cs
index 5d2ba0250..b75604136 100644
--- a/RotationSolver.Basic/Rotations/Basic/DancerRotation.cs
+++ b/RotationSolver.Basic/Rotations/Basic/DancerRotation.cs
@@ -148,11 +148,6 @@ static partial void ModifyFlourishPvE(ref ActionSetting setting)
setting.ActionCheck = () => InCombat;
}
- static partial void ModifyStandardStepPvE(ref ActionSetting setting)
- {
- setting.StatusProvide = [StatusID.StandardStep, StatusID.TechnicalStep];
- }
-
static partial void ModifyTechnicalStepPvE(ref ActionSetting setting)
{
setting.StatusNeed = [StatusID.StandardFinish];
diff --git a/RotationSolver.Basic/Rotations/Basic/NinjaRotation.cs b/RotationSolver.Basic/Rotations/Basic/NinjaRotation.cs
index a8879548f..fe78e9253 100644
--- a/RotationSolver.Basic/Rotations/Basic/NinjaRotation.cs
+++ b/RotationSolver.Basic/Rotations/Basic/NinjaRotation.cs
@@ -165,10 +165,10 @@ protected override bool DefenseSingleAbility(out IAction? act)
return base.DefenseSingleAbility(out act);
}
- static partial void ModifySuitonPvE(ref ActionSetting setting)
- {
- setting.StatusProvide = [StatusID.Suiton];
- }
+ //static partial void ModifySuitonPvE(ref ActionSetting setting)
+ //{
+ // setting.StatusProvide = [StatusID.Suiton];
+ //}
static partial void ModifyFleetingRaijuPvE(ref ActionSetting setting)
{
diff --git a/RotationSolver.Basic/Rotations/CustomRotation_Actions.cs b/RotationSolver.Basic/Rotations/CustomRotation_Actions.cs
index 9b7dea3b3..d90df5231 100644
--- a/RotationSolver.Basic/Rotations/CustomRotation_Actions.cs
+++ b/RotationSolver.Basic/Rotations/CustomRotation_Actions.cs
@@ -102,21 +102,25 @@ static partial void ModifyStandardissueElixirPvP(ref ActionSetting setting)
setting.ActionCheck = () => !HasHostilesInMaxRange
&& (Player.CurrentMp <= Player.MaxMp / 3 || Player.CurrentHp <= Player.MaxHp / 3)
&& !IsLastAction(ActionID.StandardissueElixirPvP);
+ setting.IsFriendly = true;
}
static partial void ModifyRecuperatePvP(ref ActionSetting setting)
{
setting.ActionCheck = () => Player.MaxHp - Player.CurrentHp > 15000;
+ setting.IsFriendly = true;
}
static partial void ModifyPurifyPvP(ref ActionSetting setting)
{
setting.TargetType = TargetType.Dispel;
+ setting.IsFriendly = true;
}
static partial void ModifySprintPvP(ref ActionSetting setting)
{
setting.StatusProvide = [StatusID.Sprint_1342];
+ setting.IsFriendly = true;
}
#endregion
diff --git a/RotationSolver.Basic/Rotations/CustomRotation_Invoke.cs b/RotationSolver.Basic/Rotations/CustomRotation_Invoke.cs
index 2275eddcb..f1eb830fa 100644
--- a/RotationSolver.Basic/Rotations/CustomRotation_Invoke.cs
+++ b/RotationSolver.Basic/Rotations/CustomRotation_Invoke.cs
@@ -156,8 +156,10 @@ private void UpdateActions(JobRole role)
{
IBaseAction.ShouldEndSpecial = false;
IBaseAction.IgnoreClipping = true;
- IBaseAction.TargetOverride = TargetType.BeAttacked;
+
var countDown = Service.CountDownTime;
+ IBaseAction.TargetOverride = countDown < 1
+ ? TargetType.Move : TargetType.BeAttacked;
if (countDown > 0)
{
gcdAction = null;
diff --git a/RotationSolver/Commands/RSCommands_Actions.cs b/RotationSolver/Commands/RSCommands_Actions.cs
index b893607b4..2e994f01f 100644
--- a/RotationSolver/Commands/RSCommands_Actions.cs
+++ b/RotationSolver/Commands/RSCommands_Actions.cs
@@ -58,8 +58,8 @@ public static void DoAction()
var hash = SocialUpdater.EncryptString(p);
//Don't attack authors and contributors!!
- if (RotationUpdater.AuthorHashes.ContainsKey(hash)
- || DownloadHelper.ContributorsHash.Contains(hash))
+ if (!act1.Setting.IsFriendly && (RotationUpdater.AuthorHashes.ContainsKey(hash)
+ || DownloadHelper.ContributorsHash.Contains(hash)))
{
Svc.Chat.PrintError($"Please don't attack RS developers with RS by {act1}!");
return;
diff --git a/RotationSolver/Localization/Localization.json b/RotationSolver/Localization/Localization.json
index db7682ff4..6ecfdca68 100644
--- a/RotationSolver/Localization/Localization.json
+++ b/RotationSolver/Localization/Localization.json
@@ -248,5 +248,11 @@
"RotationSolver.Data.UiString.ConfigWindow_List_Remove": "Remove",
"RotationSolver.Data.UiString.ConfigWindow_Actions_MoveUp": "Move Up",
"RotationSolver.Data.UiString.ConfigWindow_Actions_MoveDown": "Move Down",
- "RotationSolver.Data.UiString.ConfigWindow_Param_HostileCondition": "Hostile target selection condition"
+ "RotationSolver.Data.UiString.ConfigWindow_Param_HostileCondition": "Hostile target selection condition",
+ "RotationSolver.Basic.Attributes.ConfigUnitType.Yalms": "Distance Unit, in yalms.",
+ "RotationSolver.Data.UiString.SpecialCommandType_Dispel": "Dispel",
+ "RotationSolver.Data.UiString.SpecialCommandType_Raise": "Raise",
+ "DownloadRotationsName": "Auto Download Rotations",
+ "AutoLoadCustomRotationsName": "Auto load rotations",
+ "RotationSolver.Data.UiString.ConfigWindow_Rotations_Library": "The folder contains rotation libs or the download url about rotation lib."
}
\ No newline at end of file
diff --git a/XIVPainter b/XIVPainter
index f3e605492..03263805d 160000
--- a/XIVPainter
+++ b/XIVPainter
@@ -1 +1 @@
-Subproject commit f3e6054923f064739095516cf6127ea53bac99bd
+Subproject commit 03263805d94b4764ca0efc86613485c263f1715b