From bcc1433f74feb0e2164452fcbc61d26a71f1869e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=E6=B0=B4?= <1123993881@qq.com> Date: Sat, 4 Nov 2023 09:28:07 +0800 Subject: [PATCH] fix: add a warning on target in target condition. --- Resources/RotationSolverRecord.json | 2 +- .../Rotations/CustomRotation_Actions.cs | 11 ++++++----- .../Rotations/CustomRotation_Medicine.cs | 2 ++ .../Rotations/CustomRotation_OtherInfo.cs | 2 ++ RotationSolver/Localization/Localization.json | 5 +++-- RotationSolver/Localization/Strings.cs | 3 ++- RotationSolver/UI/ConditionDrawer.cs | 8 +++++++- 7 files changed, 23 insertions(+), 10 deletions(-) diff --git a/Resources/RotationSolverRecord.json b/Resources/RotationSolverRecord.json index aa141caad..42bf50051 100644 --- a/Resources/RotationSolverRecord.json +++ b/Resources/RotationSolverRecord.json @@ -1,4 +1,4 @@ { - "ClickingCount": 51182, + "ClickingCount": 51481, "SaidUsers": [] } \ No newline at end of file diff --git a/RotationSolver.Basic/Rotations/CustomRotation_Actions.cs b/RotationSolver.Basic/Rotations/CustomRotation_Actions.cs index 7ead6eeef..f2bf251d4 100644 --- a/RotationSolver.Basic/Rotations/CustomRotation_Actions.cs +++ b/RotationSolver.Basic/Rotations/CustomRotation_Actions.cs @@ -297,7 +297,7 @@ public override bool CanUse(out IAction act, CanUseOption option = CanUseOption. ActionOption.DutyAction | ActionOption.Friendly) { StatusProvide = new StatusID[] { StatusID.LostSpellforge }, - ActionCheck = (b, m) => Target?.HasStatus(false, StatusID.MagicalAversion) ?? false, + ActionCheck = (b, m) => LostSpellforge.Target?.HasStatus(false, StatusID.MagicalAversion) ?? false, ChoiceTarget = (targets, mustUse) => targets.FirstOrDefault(t => (Job)t.ClassJob.Id switch { Job.WAR @@ -326,7 +326,7 @@ or Job.RDM ActionOption.DutyAction | ActionOption.Friendly) { StatusProvide = new StatusID[] { StatusID.LostSteelsting }, - ActionCheck = (b, m) => Target?.HasStatus(false, StatusID.PhysicalAversion) ?? false, + ActionCheck = (b, m) => LostSteelsting.Target?.HasStatus(false, StatusID.PhysicalAversion) ?? false, ChoiceTarget = (targets, mustUse) => targets.FirstOrDefault(t => (Job)t.ClassJob.Id switch { Job.WHM @@ -354,7 +354,7 @@ or Job.RDM ActionOption.DutyAction | ActionOption.Friendly) { StatusProvide = new StatusID[] { StatusID.LostRampage }, - ActionCheck = (b, m) => Target?.HasStatus(false, StatusID.PhysicalAversion) ?? false, + ActionCheck = (b, m) => LostRampage.Target?.HasStatus(false, StatusID.PhysicalAversion) ?? false, }; /// @@ -364,7 +364,7 @@ or Job.RDM ActionOption.DutyAction | ActionOption.Friendly) { StatusProvide = new StatusID[] { StatusID.LostBurst }, - ActionCheck = (b, m) => Target?.HasStatus(false, StatusID.MagicalAversion) ?? false, + ActionCheck = (b, m) => LostBurst.Target?.HasStatus(false, StatusID.MagicalAversion) ?? false, }; /// @@ -466,7 +466,8 @@ or Job.RDM public static IBaseAction PvP_StandardIssueElixir { get; } = new BaseAction(ActionID.PvP_StandardIssueElixir, ActionOption.Heal) { ActionCheck = (t, m) => !HasHostilesInMaxRange - && (t.CurrentMp <= t.MaxMp / 3 || t.CurrentHp <= t.MaxHp / 3), + && (t.CurrentMp <= t.MaxMp / 3 || t.CurrentHp <= t.MaxHp / 3) + && !IsLastAction(ActionID.PvP_StandardIssueElixir), }; /// diff --git a/RotationSolver.Basic/Rotations/CustomRotation_Medicine.cs b/RotationSolver.Basic/Rotations/CustomRotation_Medicine.cs index 1fd37f22e..2e5d26bb5 100644 --- a/RotationSolver.Basic/Rotations/CustomRotation_Medicine.cs +++ b/RotationSolver.Basic/Rotations/CustomRotation_Medicine.cs @@ -122,7 +122,9 @@ protected bool UseBurstMedicine(out IAction act, bool clippingCheck = true) { act = null; +#pragma warning disable CS0618 // Type or member is obsolete if (!(Target?.IsDummy() ?? false) && !DataCenter.IsInHighEndDuty) return false; +#pragma warning restore CS0618 // Type or member is obsolete return MedicineType switch { diff --git a/RotationSolver.Basic/Rotations/CustomRotation_OtherInfo.cs b/RotationSolver.Basic/Rotations/CustomRotation_OtherInfo.cs index 3137a2090..2702efee7 100644 --- a/RotationSolver.Basic/Rotations/CustomRotation_OtherInfo.cs +++ b/RotationSolver.Basic/Rotations/CustomRotation_OtherInfo.cs @@ -126,7 +126,9 @@ public abstract partial class CustomRotation #region Target /// /// The player's target. + ///
WARNING: You'd better not use it. Because this target isn't the action's target. Try to use instead after using
///
+ [Obsolete("You'd better not use it. More information in summary.")] protected static BattleChara Target => Svc.Targets.Target is BattleChara b ? b : Player; /// diff --git a/RotationSolver/Localization/Localization.json b/RotationSolver/Localization/Localization.json index 5b162bc80..8fdf753bc 100644 --- a/RotationSolver/Localization/Localization.json +++ b/RotationSolver/Localization/Localization.json @@ -584,6 +584,7 @@ "ConfigWindow_Condition_RotationNullWarning": "Rotation is null, please login or switch the job!", "ConfigWindow_Condition_NoItemsWarning": "There are no items!", "ConfigWindow_Condition_ConditionName": "Condition Name", - "ConfigWindow_Condition_TeritoryName": "Teritory Name", - "ConfigWindow_Condition_DutyName": "Duty Name" + "ConfigWindow_Condition_TerritoryName": "Territory Name", + "ConfigWindow_Condition_DutyName": "Duty Name", + "ConfigWindow_Condition_TargetWarning": "You'd better not use it. Because this target isn't the action's target. Try to pick it from action." } \ No newline at end of file diff --git a/RotationSolver/Localization/Strings.cs b/RotationSolver/Localization/Strings.cs index 3dc28f649..90ca9f8ee 100644 --- a/RotationSolver/Localization/Strings.cs +++ b/RotationSolver/Localization/Strings.cs @@ -814,7 +814,8 @@ internal class Strings public string ConfigWindow_Condition_ConditionName { get; set; } = "Condition Name"; - public string ConfigWindow_Condition_TeritoryName { get; set; } = "Teritory Name"; + public string ConfigWindow_Condition_TerritoryName { get; set; } = "Territory Name"; public string ConfigWindow_Condition_DutyName { get; set; } = "Duty Name"; + public string ConfigWindow_Condition_TargetWarning { get; set; } = "You'd better not use it. Because this target isn't the action's target. Try to pick it from action."; } \ No newline at end of file diff --git a/RotationSolver/UI/ConditionDrawer.cs b/RotationSolver/UI/ConditionDrawer.cs index 4a402802f..ffbc4aaab 100644 --- a/RotationSolver/UI/ConditionDrawer.cs +++ b/RotationSolver/UI/ConditionDrawer.cs @@ -1022,6 +1022,12 @@ void DrawStatusIcon() } break; } + + if (targetCondition._action == null && targetCondition.IsTarget) + { + using var style = ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudRed); + ImGui.TextWrapped(LocalizationManager.RightLang.ConfigWindow_Condition_TargetWarning); + } } private static string[] _territoryNames = null; @@ -1062,7 +1068,7 @@ private static void DrawAfter(this TerritoryCondition territoryCondition, ICusto TerritoryNames, i => i.ToString(), i => { territoryCondition.Name = i; - }, LocalizationManager.RightLang.ConfigWindow_Condition_TeritoryName); + }, LocalizationManager.RightLang.ConfigWindow_Condition_TerritoryName); break; case TerritoryConditionType.DutyName: