diff --git a/Configuration.cs b/Configuration.cs index 4868739..71b22a8 100644 --- a/Configuration.cs +++ b/Configuration.cs @@ -19,6 +19,7 @@ public class Configuration : IPluginConfiguration { public bool Alternate = true; public bool ManaModeAlternateOnlyManaUsers = true; public float AlternateSeconds = 3.0f; + public bool OnlyAlternateInCombat = true; public uint TextColour = 0xEDFFEC; public int TextAddRed; public int TextAddGreen; diff --git a/Plugin.cs b/Plugin.cs index 4a55cbd..f6552d6 100644 --- a/Plugin.cs +++ b/Plugin.cs @@ -3,6 +3,7 @@ using System.Globalization; using System.Text; using Dalamud.Game.Addon.Lifecycle; using Dalamud.Game.Addon.Lifecycle.AddonArgTypes; +using Dalamud.Game.ClientState.Conditions; using Dalamud.Game.Gui.ContextMenu; using Dalamud.Game.Text; using Dalamud.IoC; @@ -51,6 +52,9 @@ public class Plugin : IDalamudPlugin { [PluginService] internal IDataManager DataManager { get; init; } + [PluginService] + internal ICondition Condition { get; init; } + // [PluginService] // internal ITextureProvider TextureProvider { get; init; } @@ -617,6 +621,8 @@ public class Plugin : IDalamudPlugin { ); } + var inCombat = this.Condition[ConditionFlag.InCombat]; + if (this.Config.Mode == MeterMode.Mana && info.IsChocobo) { var chocoboTimer = list->GetTextNodeById(5); var chocoboTimerIcon = list->GetTextNodeById(4); @@ -624,7 +630,7 @@ public class Plugin : IDalamudPlugin { var hasTimer = chocoboTimer != null && chocoboTimer->IsVisible(); var hasTimerIcon = chocoboTimerIcon != null && chocoboTimerIcon->IsVisible(); - if (this.Config.Alternate && !this._showDps) { + if (this.Config.Alternate && (!this.Config.OnlyAlternateInCombat || inCombat) && !this._showDps) { this.ResetMember(list, info, false, false); } else { if (hasTimer) { @@ -647,7 +653,7 @@ public class Plugin : IDalamudPlugin { return; } - if (this.Config.Alternate && !this._showDps && info.ClassJob is { } classJob) { + if (this.Config.Alternate && (!this.Config.OnlyAlternateInCombat || inCombat) && !this._showDps && info.ClassJob is { } classJob) { var isCaster = Array.IndexOf(this._manaUsers, classJob) != -1; if (!this.Config.ManaModeAlternateOnlyManaUsers || isCaster) { this.ResetMember(list, info, false, false); diff --git a/PluginUi.cs b/PluginUi.cs index 8a630d5..e40a205 100644 --- a/PluginUi.cs +++ b/PluginUi.cs @@ -118,6 +118,7 @@ public class PluginUi : IDisposable { } using (ImGuiHelper.DisabledUnless(this.Plugin.Config is { Alternate: true, Mode: MeterMode.Mana })) { + anyChanged |= ImGui.Checkbox("Only alternate when in combat", ref this.Plugin.Config.OnlyAlternateInCombat); anyChanged |= ImGui.Checkbox("Only alternate on jobs that use mana", ref this.Plugin.Config.ManaModeAlternateOnlyManaUsers); }