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