diff --git a/RotationSolver.Basic/Configuration/PluginConfiguration.cs b/RotationSolver.Basic/Configuration/PluginConfiguration.cs index 5bfedb21c..577e43c7d 100644 --- a/RotationSolver.Basic/Configuration/PluginConfiguration.cs +++ b/RotationSolver.Basic/Configuration/PluginConfiguration.cs @@ -36,6 +36,7 @@ public class PluginConfiguration : IPluginConfiguration public bool AutoOffCutScene = true; public bool AutoOffWhenDead = true; public bool PreventActionsIfOutOfCombat = false; + public bool PreventActionsIfDutyRing = false; public bool ChangeTargetForFate = true; public bool MoveTowardsScreenCenter = true; diff --git a/RotationSolver.Basic/Data/RSCommandType.cs b/RotationSolver.Basic/Data/RSCommandType.cs index 54cf1c171..74396e02b 100644 --- a/RotationSolver.Basic/Data/RSCommandType.cs +++ b/RotationSolver.Basic/Data/RSCommandType.cs @@ -46,7 +46,8 @@ public enum SettingsCommand : byte UseGroundBeneficialAbility, UseAOEAction, UseAOEWhenManual, - PreventActions + PreventActions, + PreventActionsDuty } public static class SettingsCommandExtension @@ -64,6 +65,7 @@ public static class SettingsCommandExtension SettingsCommand.UseAOEAction => true, SettingsCommand.UseAOEWhenManual => false, SettingsCommand.PreventActions => false, + SettingsCommand.PreventActionsDuty => false, _ => false, }; } diff --git a/RotationSolver/Localization/Localization.json b/RotationSolver/Localization/Localization.json index 2fa67b055..ff7a7bedf 100644 --- a/RotationSolver/Localization/Localization.json +++ b/RotationSolver/Localization/Localization.json @@ -58,7 +58,8 @@ "ConfigWindow_Param_AutoOffBetweenArea": "Auto turn off when player is between area.", "ConfigWindow_Param_AutoOffCutScene": "Auto turn off during cut scene.", "ConfigWindow_Param_AutoOffWhenDead": "Auto turn off when dead.", - "ConfigWindow_Param_PreventActionsIfOutOfCombat": "Prevent Actions if no hostiles in range", + "ConfigWindow_Param_PreventActionsIfOutOfCombat": "Prevent Actions if no hostiles in range.", + "ConfigWindow_Param_PreventActionsIfDutyRing": "Also prevent if in duty until duty start.", "ConfigWindow_Param_UseWorkTask": "Use work task for acceleration.", "ConfigWindow_Param_ToggleManual": "Make Manual Command as toggle.", "ConfigWindow_Param_Delay": "Delay", diff --git a/RotationSolver/Localization/Strings.cs b/RotationSolver/Localization/Strings.cs index 3465f9511..21c19aeab 100644 --- a/RotationSolver/Localization/Strings.cs +++ b/RotationSolver/Localization/Strings.cs @@ -106,7 +106,8 @@ internal partial class Strings public string ConfigWindow_Param_AutoOffCutScene { get; set; } = "Auto turn off during cut scene."; public string ConfigWindow_Param_AutoOffWhenDead { get; set; } = "Auto turn off when dead."; - public string ConfigWindow_Param_PreventActionsIfOutOfCombat { get; set; } = "Prevent Actions if no hostiles in range"; + public string ConfigWindow_Param_PreventActionsIfOutOfCombat { get; set; } = "Prevent Actions if no hostiles in range."; + public string ConfigWindow_Param_PreventActionsIfDutyRing { get; set; } = "Also prevent if in duty until duty start."; public string ConfigWindow_Param_UseWorkTask { get; set; } = "Use work task for acceleration."; public string ConfigWindow_Param_ToggleManual { get; set; } = "Make Manual Command as toggle."; diff --git a/RotationSolver/Localization/de.json b/RotationSolver/Localization/de.json index 5281bd454..2cb267736 100644 --- a/RotationSolver/Localization/de.json +++ b/RotationSolver/Localization/de.json @@ -58,7 +58,8 @@ "ConfigWindow_Param_AutoOffBetweenArea": "Auto turn off when player is between area.", "ConfigWindow_Param_AutoOffCutScene": "Auto turn off during cut scene.", "ConfigWindow_Param_AutoOffWhenDead": "Auto turn off when dead.", - "ConfigWindow_Param_PreventActionsIfOutOfCombat": "Prevent Actions if no hostiles in range", + "ConfigWindow_Param_PreventActionsIfOutOfCombat": "Prevent Actions if no hostiles in range.", + "ConfigWindow_Param_PreventActionsIfDutyRing": "Also prevent if in duty until duty start.", "ConfigWindow_Param_UseWorkTask": "Use work task for acceleration.", "ConfigWindow_Param_ToggleManual": "Make Manual Command as toggle.", "ConfigWindow_Param_Delay": "Delay", diff --git a/RotationSolver/Localization/es.json b/RotationSolver/Localization/es.json index 1e975a22e..b0e6477aa 100644 --- a/RotationSolver/Localization/es.json +++ b/RotationSolver/Localization/es.json @@ -58,7 +58,8 @@ "ConfigWindow_Param_AutoOffBetweenArea": "Auto turn off when player is between area.", "ConfigWindow_Param_AutoOffCutScene": "Auto turn off during cut scene.", "ConfigWindow_Param_AutoOffWhenDead": "Auto turn off when dead.", - "ConfigWindow_Param_PreventActionsIfOutOfCombat": "Prevent Actions if no hostiles in range", + "ConfigWindow_Param_PreventActionsIfOutOfCombat": "Prevent Actions if no hostiles in range.", + "ConfigWindow_Param_PreventActionsIfDutyRing": "Also prevent if in duty until duty start.", "ConfigWindow_Param_UseWorkTask": "Use work task for acceleration.", "ConfigWindow_Param_ToggleManual": "Make Manual Command as toggle.", "ConfigWindow_Param_Delay": "Delay", diff --git a/RotationSolver/Localization/fr.json b/RotationSolver/Localization/fr.json index 2fa67b055..ff7a7bedf 100644 --- a/RotationSolver/Localization/fr.json +++ b/RotationSolver/Localization/fr.json @@ -58,7 +58,8 @@ "ConfigWindow_Param_AutoOffBetweenArea": "Auto turn off when player is between area.", "ConfigWindow_Param_AutoOffCutScene": "Auto turn off during cut scene.", "ConfigWindow_Param_AutoOffWhenDead": "Auto turn off when dead.", - "ConfigWindow_Param_PreventActionsIfOutOfCombat": "Prevent Actions if no hostiles in range", + "ConfigWindow_Param_PreventActionsIfOutOfCombat": "Prevent Actions if no hostiles in range.", + "ConfigWindow_Param_PreventActionsIfDutyRing": "Also prevent if in duty until duty start.", "ConfigWindow_Param_UseWorkTask": "Use work task for acceleration.", "ConfigWindow_Param_ToggleManual": "Make Manual Command as toggle.", "ConfigWindow_Param_Delay": "Delay", diff --git a/RotationSolver/Localization/ja.json b/RotationSolver/Localization/ja.json index 2fa67b055..ff7a7bedf 100644 --- a/RotationSolver/Localization/ja.json +++ b/RotationSolver/Localization/ja.json @@ -58,7 +58,8 @@ "ConfigWindow_Param_AutoOffBetweenArea": "Auto turn off when player is between area.", "ConfigWindow_Param_AutoOffCutScene": "Auto turn off during cut scene.", "ConfigWindow_Param_AutoOffWhenDead": "Auto turn off when dead.", - "ConfigWindow_Param_PreventActionsIfOutOfCombat": "Prevent Actions if no hostiles in range", + "ConfigWindow_Param_PreventActionsIfOutOfCombat": "Prevent Actions if no hostiles in range.", + "ConfigWindow_Param_PreventActionsIfDutyRing": "Also prevent if in duty until duty start.", "ConfigWindow_Param_UseWorkTask": "Use work task for acceleration.", "ConfigWindow_Param_ToggleManual": "Make Manual Command as toggle.", "ConfigWindow_Param_Delay": "Delay", diff --git a/RotationSolver/UI/RotationConfigWindow_Param.cs b/RotationSolver/UI/RotationConfigWindow_Param.cs index 6d82c9b15..5068f4b51 100644 --- a/RotationSolver/UI/RotationConfigWindow_Param.cs +++ b/RotationSolver/UI/RotationConfigWindow_Param.cs @@ -290,6 +290,12 @@ private void DrawParamAction() DrawCheckBox(LocalizationManager.RightLang.ConfigWindow_Param_PreventActionsIfOutOfCombat, SettingsCommand.PreventActions); + if (Basic.Configuration.PluginConfiguration.GetValue(SettingsCommand.PreventActions)) + { + DrawCheckBox(LocalizationManager.RightLang.ConfigWindow_Param_PreventActionsIfDutyRing, + SettingsCommand.PreventActionsDuty); + } + ImGui.Separator(); DrawCheckBox(LocalizationManager.RightLang.ConfigWindow_Param_AutoBurst, SettingsCommand.AutoBurst); diff --git a/RotationSolver/Updaters/MajorUpdater.cs b/RotationSolver/Updaters/MajorUpdater.cs index d66145f7a..38a200ecf 100644 --- a/RotationSolver/Updaters/MajorUpdater.cs +++ b/RotationSolver/Updaters/MajorUpdater.cs @@ -1,4 +1,5 @@ using Dalamud.Game; +using Dalamud.Game.ClientState.Conditions; using Dalamud.Logging; using RotationSolver.Commands; @@ -8,7 +9,11 @@ internal static class MajorUpdater { public static bool IsValid => Service.Conditions.Any() && Service.Player != null && !SocialUpdater.InPvp; public static bool ShouldPreventActions => Basic.Configuration.PluginConfiguration.GetValue(SettingsCommand.PreventActions) - && !DataCenter.HasHostilesInMaxRange; + && Basic.Configuration.PluginConfiguration.GetValue(SettingsCommand.PreventActionsDuty) + && Service.Conditions[ConditionFlag.BoundByDuty] + && !Service.DutyState.IsDutyStarted + || Basic.Configuration.PluginConfiguration.GetValue(SettingsCommand.PreventActions) + && !DataCenter.HasHostilesInMaxRange; #if DEBUG private static readonly Dictionary _values = new();