forked from aly/qstbak
muffin v7.5.0
This commit is contained in:
parent
afafd5e377
commit
a6481e7b9a
67 changed files with 4281 additions and 2372 deletions
|
|
@ -95,384 +95,533 @@ internal sealed class GeneralConfigComponent : ConfigComponent
|
|||
|
||||
public override void DrawTab()
|
||||
{
|
||||
using ImRaii.IEndObject endObject = ImRaii.TabItem("General###General");
|
||||
if (!endObject)
|
||||
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0147: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_014c: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_014e: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_02fc: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0301: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_042d: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0432: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0434: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0737: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_073c: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_07de: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_07e3: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0885: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_088a: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_09ac: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_09b1: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0ad2: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0ad7: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0c5e: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0c63: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0d05: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0d0a: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0dac: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0db1: Unknown result type (might be due to invalid IL or missing references)
|
||||
TabItemDisposable val = ImRaii.TabItem((ImU8String)"General###General");
|
||||
try
|
||||
{
|
||||
return;
|
||||
}
|
||||
int currentItem = (int)base.Configuration.General.CombatModule;
|
||||
if (ImGui.Combo((ImU8String)"Preferred Combat Module", ref currentItem, (ReadOnlySpan<string>)_combatModuleNames, _combatModuleNames.Length))
|
||||
{
|
||||
base.Configuration.General.CombatModule = (Configuration.ECombatModule)currentItem;
|
||||
Save();
|
||||
}
|
||||
int num = Array.FindIndex(_mountIds, (uint x) => x == base.Configuration.General.MountId);
|
||||
if (num == -1)
|
||||
{
|
||||
num = 0;
|
||||
base.Configuration.General.MountId = _mountIds[num];
|
||||
Save();
|
||||
}
|
||||
string text = ((num >= 0 && num < _mountNames.Length) ? _mountNames[num] : "Unknown");
|
||||
if (ImGui.BeginCombo("Preferred Mount", text, ImGuiComboFlags.HeightLarge))
|
||||
{
|
||||
if (!_mountComboJustOpened)
|
||||
if (!val)
|
||||
{
|
||||
ImGui.SetKeyboardFocusHere();
|
||||
_mountComboJustOpened = true;
|
||||
return;
|
||||
}
|
||||
ImGui.SetNextItemWidth(-1f);
|
||||
ImGui.InputTextWithHint("##MountSearch", "Search mounts...", ref _mountSearchText, 256);
|
||||
ImGui.Separator();
|
||||
using (ImRaii.IEndObject endObject2 = ImRaii.Child("##MountScrollArea", new Vector2(0f, 300f), border: false))
|
||||
int currentItem = (int)base.Configuration.General.CombatModule;
|
||||
if (ImGui.Combo((ImU8String)"Preferred Combat Module", ref currentItem, (ReadOnlySpan<string>)_combatModuleNames, _combatModuleNames.Length))
|
||||
{
|
||||
if (endObject2)
|
||||
base.Configuration.General.CombatModule = (Configuration.ECombatModule)currentItem;
|
||||
Save();
|
||||
}
|
||||
int num = Array.FindIndex(_mountIds, (uint x) => x == base.Configuration.General.MountId);
|
||||
if (num == -1)
|
||||
{
|
||||
num = 0;
|
||||
base.Configuration.General.MountId = _mountIds[num];
|
||||
Save();
|
||||
}
|
||||
string text = ((num >= 0 && num < _mountNames.Length) ? _mountNames[num] : "Unknown");
|
||||
if (ImGui.BeginCombo("Preferred Mount", text, ImGuiComboFlags.HeightLarge))
|
||||
{
|
||||
if (!_mountComboJustOpened)
|
||||
{
|
||||
string value = _mountSearchText.ToUpperInvariant();
|
||||
for (int num2 = 0; num2 < _mountNames.Length; num2++)
|
||||
ImGui.SetKeyboardFocusHere();
|
||||
_mountComboJustOpened = true;
|
||||
}
|
||||
ImGui.SetNextItemWidth(-1f);
|
||||
ImGui.InputTextWithHint("##MountSearch", "Search mounts...", ref _mountSearchText, 256);
|
||||
ImGui.Separator();
|
||||
ChildDisposable val2 = ImRaii.Child((ImU8String)"##MountScrollArea", new Vector2(0f, 300f), false);
|
||||
try
|
||||
{
|
||||
if (ChildDisposable.op_Implicit(val2))
|
||||
{
|
||||
if (string.IsNullOrEmpty(_mountSearchText) || _mountNames[num2].ToUpperInvariant().Contains(value, StringComparison.Ordinal))
|
||||
string value = _mountSearchText.ToUpperInvariant();
|
||||
for (int num2 = 0; num2 < _mountNames.Length; num2++)
|
||||
{
|
||||
bool flag = num2 == num;
|
||||
if (ImGui.Selectable(_mountNames[num2], flag))
|
||||
if (string.IsNullOrEmpty(_mountSearchText) || _mountNames[num2].ToUpperInvariant().Contains(value, StringComparison.Ordinal))
|
||||
{
|
||||
base.Configuration.General.MountId = _mountIds[num2];
|
||||
Save();
|
||||
_mountSearchText = string.Empty;
|
||||
ImGui.CloseCurrentPopup();
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
ImGui.SetItemDefaultFocus();
|
||||
bool flag = num2 == num;
|
||||
if (ImGui.Selectable(_mountNames[num2], flag))
|
||||
{
|
||||
base.Configuration.General.MountId = _mountIds[num2];
|
||||
Save();
|
||||
_mountSearchText = string.Empty;
|
||||
ImGui.CloseCurrentPopup();
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
ImGui.SetItemDefaultFocus();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
ImGui.EndCombo();
|
||||
}
|
||||
else
|
||||
{
|
||||
_mountComboJustOpened = false;
|
||||
}
|
||||
int currentItem2 = (int)base.Configuration.General.GrandCompany;
|
||||
if (ImGui.Combo((ImU8String)"Preferred Grand Company", ref currentItem2, (ReadOnlySpan<string>)_grandCompanyNames, _grandCompanyNames.Length))
|
||||
{
|
||||
base.Configuration.General.GrandCompany = (FFXIVClientStructs.FFXIV.Client.UI.Agent.GrandCompany)currentItem2;
|
||||
Save();
|
||||
}
|
||||
int currentItem3 = (int)base.Configuration.General.MsqPriority;
|
||||
if (ImGui.Combo((ImU8String)"MSQ Priority", ref currentItem3, (ReadOnlySpan<string>)_msqPriorityNames, _msqPriorityNames.Length))
|
||||
{
|
||||
base.Configuration.General.MsqPriority = (Configuration.EMsqPriorityMode)currentItem3;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
{
|
||||
ImGui.Text("Controls when the Main Scenario Quest (MSQ) is automatically accepted:");
|
||||
ImGui.Spacing();
|
||||
ImGui.BulletText("Always: Auto-accept MSQ immediately");
|
||||
ImGui.BulletText("After Tracked: Complete accepted quests first, then pick up MSQ");
|
||||
ImGui.BulletText("Manual: Never auto-accept MSQ, only do manually accepted quests");
|
||||
}
|
||||
}
|
||||
int num3 = Array.IndexOf(_classJobIds, base.Configuration.General.CombatJob);
|
||||
if (num3 == -1)
|
||||
{
|
||||
base.Configuration.General.CombatJob = EClassJob.Adventurer;
|
||||
Save();
|
||||
num3 = 0;
|
||||
}
|
||||
string text2 = ((num3 >= 0 && num3 < _classJobNames.Length) ? _classJobNames[num3] : "Unknown");
|
||||
if (ImGui.BeginCombo("Preferred Combat Job", text2, ImGuiComboFlags.HeightLarge))
|
||||
{
|
||||
if (!_classJobComboJustOpened)
|
||||
{
|
||||
ImGui.SetKeyboardFocusHere();
|
||||
_classJobComboJustOpened = true;
|
||||
}
|
||||
ImGui.SetNextItemWidth(-1f);
|
||||
ImGui.InputTextWithHint("##CombatJobSearch", "Search combat jobs...", ref _classJobSearchText, 256);
|
||||
ImGui.Separator();
|
||||
using (ImRaii.IEndObject endObject3 = ImRaii.Child("##CombatJobScrollArea", new Vector2(0f, 300f), border: false))
|
||||
{
|
||||
if (endObject3)
|
||||
finally
|
||||
{
|
||||
string value2 = _classJobSearchText.ToUpperInvariant();
|
||||
for (int num4 = 0; num4 < _classJobNames.Length; num4++)
|
||||
{
|
||||
if (string.IsNullOrEmpty(_classJobSearchText) || _classJobNames[num4].ToUpperInvariant().Contains(value2, StringComparison.Ordinal))
|
||||
{
|
||||
bool flag2 = num4 == num3;
|
||||
if (ImGui.Selectable(_classJobNames[num4], flag2))
|
||||
{
|
||||
base.Configuration.General.CombatJob = _classJobIds[num4];
|
||||
Save();
|
||||
_classJobSearchText = string.Empty;
|
||||
ImGui.CloseCurrentPopup();
|
||||
}
|
||||
if (flag2)
|
||||
{
|
||||
ImGui.SetItemDefaultFocus();
|
||||
}
|
||||
}
|
||||
}
|
||||
((ChildDisposable)(ref val2)).Dispose();
|
||||
}
|
||||
ImGui.EndCombo();
|
||||
}
|
||||
ImGui.EndCombo();
|
||||
}
|
||||
else
|
||||
{
|
||||
_classJobComboJustOpened = false;
|
||||
}
|
||||
ImGui.Separator();
|
||||
ImGui.Text("UI");
|
||||
using (ImRaii.PushIndent())
|
||||
{
|
||||
bool v = base.Configuration.General.HideInAllInstances;
|
||||
if (ImGui.Checkbox("Hide quest window in all instanced duties", ref v))
|
||||
else
|
||||
{
|
||||
base.Configuration.General.HideInAllInstances = v;
|
||||
_mountComboJustOpened = false;
|
||||
}
|
||||
int currentItem2 = (int)base.Configuration.General.GrandCompany;
|
||||
if (ImGui.Combo((ImU8String)"Preferred Grand Company", ref currentItem2, (ReadOnlySpan<string>)_grandCompanyNames, _grandCompanyNames.Length))
|
||||
{
|
||||
base.Configuration.General.GrandCompany = (FFXIVClientStructs.FFXIV.Client.UI.Agent.GrandCompany)currentItem2;
|
||||
Save();
|
||||
}
|
||||
bool v2 = base.Configuration.General.UseEscToCancelQuesting;
|
||||
if (ImGui.Checkbox("Double tap ESC to cancel questing/movement", ref v2))
|
||||
int currentItem3 = (int)base.Configuration.General.MsqPriority;
|
||||
if (ImGui.Combo((ImU8String)"MSQ Priority", ref currentItem3, (ReadOnlySpan<string>)_msqPriorityNames, _msqPriorityNames.Length))
|
||||
{
|
||||
base.Configuration.General.UseEscToCancelQuesting = v2;
|
||||
Save();
|
||||
}
|
||||
bool v3 = base.Configuration.General.StopOnPlayerInput;
|
||||
if (ImGui.Checkbox("Stop automation when manually moving character", ref v3))
|
||||
{
|
||||
base.Configuration.General.StopOnPlayerInput = v3;
|
||||
Save();
|
||||
}
|
||||
bool v4 = base.Configuration.General.ShowIncompleteSeasonalEvents;
|
||||
if (ImGui.Checkbox("Show details for incomplete seasonal events", ref v4))
|
||||
{
|
||||
base.Configuration.General.ShowIncompleteSeasonalEvents = v4;
|
||||
Save();
|
||||
}
|
||||
bool v5 = base.Configuration.General.HideSeasonalEventsFromJournalProgress;
|
||||
if (ImGui.Checkbox("Hide Seasonal Events from Journal Progress", ref v5))
|
||||
{
|
||||
base.Configuration.General.HideSeasonalEventsFromJournalProgress = v5;
|
||||
Save();
|
||||
}
|
||||
bool v6 = base.Configuration.General.ShowChangelogOnUpdate;
|
||||
if (ImGui.Checkbox("Show changelog window when plugin updates", ref v6))
|
||||
{
|
||||
base.Configuration.General.ShowChangelogOnUpdate = v6;
|
||||
Save();
|
||||
}
|
||||
}
|
||||
ImGui.Separator();
|
||||
ImGui.Text("Questing");
|
||||
using (ImRaii.PushIndent())
|
||||
{
|
||||
bool v7 = base.Configuration.General.AutoSolveQte;
|
||||
if (ImGui.Checkbox("Automatically solve Quick Time Events (QTEs)", ref v7))
|
||||
{
|
||||
base.Configuration.General.AutoSolveQte = v7;
|
||||
base.Configuration.General.MsqPriority = (Configuration.EMsqPriorityMode)currentItem3;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
FontDisposable val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
finally
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
{
|
||||
ImGui.Text("Automatically mashes the button during Active Time Maneuver (ATM)");
|
||||
ImGui.Text("prompts that appear in certain duties and quest battles.");
|
||||
}
|
||||
}
|
||||
bool v8 = base.Configuration.General.AutoSnipe;
|
||||
if (ImGui.Checkbox("Automatically complete snipe quests", ref v8))
|
||||
{
|
||||
base.Configuration.General.AutoSnipe = v8;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
TooltipDisposable val4 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
ImGui.Text("Automatically completes sniping minigames introduced in Stormblood.");
|
||||
ImGui.Text("When enabled, snipe targets are instantly hit without manual aiming.");
|
||||
}
|
||||
}
|
||||
bool v9 = base.Configuration.General.CinemaMode;
|
||||
if (ImGui.Checkbox("Cinema Mode (watch cutscenes)", ref v9))
|
||||
{
|
||||
base.Configuration.General.CinemaMode = v9;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
{
|
||||
ImGui.Text("When enabled, cutscenes will NOT be automatically skipped.");
|
||||
ImGui.Text("This allows you to experience the story while Questionable");
|
||||
ImGui.Text("handles navigation, combat, and other gameplay automation.");
|
||||
ImGui.Text("Controls when the Main Scenario Quest (MSQ) is automatically accepted:");
|
||||
ImGui.Spacing();
|
||||
ImGui.TextColored(new Vector4(0.7f, 0.7f, 0.7f, 1f), "Recommended for first-time story playthroughs.");
|
||||
ImGui.BulletText("Always: Auto-accept MSQ immediately");
|
||||
ImGui.BulletText("After Tracked: Complete accepted quests first, then pick up MSQ");
|
||||
ImGui.BulletText("Manual: Never auto-accept MSQ, only do manually accepted quests");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val4)).Dispose();
|
||||
}
|
||||
}
|
||||
bool v10 = base.Configuration.General.ConfigureTextAdvance;
|
||||
if (ImGui.Checkbox("Automatically configure TextAdvance with the recommended settings", ref v10))
|
||||
int num3 = Array.IndexOf(_classJobIds, base.Configuration.General.CombatJob);
|
||||
if (num3 == -1)
|
||||
{
|
||||
base.Configuration.General.ConfigureTextAdvance = v10;
|
||||
base.Configuration.General.CombatJob = EClassJob.Adventurer;
|
||||
Save();
|
||||
num3 = 0;
|
||||
}
|
||||
bool v11 = base.Configuration.General.SkipLowPriorityDuties;
|
||||
if (ImGui.Checkbox("Unlock certain optional dungeons and raids (instead of waiting for completion)", ref v11))
|
||||
string text2 = ((num3 >= 0 && num3 < _classJobNames.Length) ? _classJobNames[num3] : "Unknown");
|
||||
if (ImGui.BeginCombo("Preferred Combat Job", text2, ImGuiComboFlags.HeightLarge))
|
||||
{
|
||||
base.Configuration.General.SkipLowPriorityDuties = v11;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
if (!_classJobComboJustOpened)
|
||||
{
|
||||
ImGui.Text("Questionable automatically picks up some optional quests (e.g. for aether currents, or the ARR alliance raids).");
|
||||
ImGui.Text("If this setting is enabled, Questionable will continue with other quests, instead of waiting for manual completion of the duty.");
|
||||
ImGui.Separator();
|
||||
ImGui.Text("This affects the following dungeons and raids:");
|
||||
foreach (var lowPriorityContentFinderConditionQuest in _questRegistry.LowPriorityContentFinderConditionQuests)
|
||||
ImGui.SetKeyboardFocusHere();
|
||||
_classJobComboJustOpened = true;
|
||||
}
|
||||
ImGui.SetNextItemWidth(-1f);
|
||||
ImGui.InputTextWithHint("##CombatJobSearch", "Search combat jobs...", ref _classJobSearchText, 256);
|
||||
ImGui.Separator();
|
||||
ChildDisposable val5 = ImRaii.Child((ImU8String)"##CombatJobScrollArea", new Vector2(0f, 300f), false);
|
||||
try
|
||||
{
|
||||
if (ChildDisposable.op_Implicit(val5))
|
||||
{
|
||||
if (_territoryData.TryGetContentFinderCondition(lowPriorityContentFinderConditionQuest.ContentFinderConditionId, out TerritoryData.ContentFinderConditionData contentFinderConditionData))
|
||||
string value2 = _classJobSearchText.ToUpperInvariant();
|
||||
for (int num4 = 0; num4 < _classJobNames.Length; num4++)
|
||||
{
|
||||
ImU8String text3 = new ImU8String(0, 1);
|
||||
text3.AppendFormatted(contentFinderConditionData.Name);
|
||||
ImGui.BulletText(text3);
|
||||
if (string.IsNullOrEmpty(_classJobSearchText) || _classJobNames[num4].ToUpperInvariant().Contains(value2, StringComparison.Ordinal))
|
||||
{
|
||||
bool flag2 = num4 == num3;
|
||||
if (ImGui.Selectable(_classJobNames[num4], flag2))
|
||||
{
|
||||
base.Configuration.General.CombatJob = _classJobIds[num4];
|
||||
Save();
|
||||
_classJobSearchText = string.Empty;
|
||||
ImGui.CloseCurrentPopup();
|
||||
}
|
||||
if (flag2)
|
||||
{
|
||||
ImGui.SetItemDefaultFocus();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
ImGui.Spacing();
|
||||
bool v12 = base.Configuration.General.AutoStepRefreshEnabled;
|
||||
if (ImGui.Checkbox("Automatically refresh quest steps when stuck", ref v12))
|
||||
{
|
||||
base.Configuration.General.AutoStepRefreshEnabled = v12;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
finally
|
||||
{
|
||||
ImGui.Text("Questionable will automatically refresh a quest step if it appears to be stuck after the configured delay.");
|
||||
ImGui.Text("This helps resume automated quest completion when interruptions occur.");
|
||||
((ChildDisposable)(ref val5)).Dispose();
|
||||
}
|
||||
ImGui.EndCombo();
|
||||
}
|
||||
using (ImRaii.Disabled(!v12))
|
||||
else
|
||||
{
|
||||
ImGui.Indent();
|
||||
int v13 = base.Configuration.General.AutoStepRefreshDelaySeconds;
|
||||
ImGui.SetNextItemWidth(150f);
|
||||
if (ImGui.SliderInt("Refresh delay (seconds)", ref v13, 10, 180))
|
||||
_classJobComboJustOpened = false;
|
||||
}
|
||||
ImGui.Separator();
|
||||
ImGui.Text("UI");
|
||||
IndentDisposable val6 = ImRaii.PushIndent(1, true);
|
||||
try
|
||||
{
|
||||
bool v = base.Configuration.General.HideInAllInstances;
|
||||
if (ImGui.Checkbox("Hide quest window in all instanced duties", ref v))
|
||||
{
|
||||
base.Configuration.General.AutoStepRefreshDelaySeconds = v13;
|
||||
base.Configuration.General.HideInAllInstances = v;
|
||||
Save();
|
||||
}
|
||||
bool v2 = base.Configuration.General.UseEscToCancelQuesting;
|
||||
if (ImGui.Checkbox("Double tap ESC to cancel questing/movement", ref v2))
|
||||
{
|
||||
base.Configuration.General.UseEscToCancelQuesting = v2;
|
||||
Save();
|
||||
}
|
||||
bool v3 = base.Configuration.General.StopOnPlayerInput;
|
||||
if (ImGui.Checkbox("Stop automation when manually moving character", ref v3))
|
||||
{
|
||||
base.Configuration.General.StopOnPlayerInput = v3;
|
||||
Save();
|
||||
}
|
||||
bool v4 = base.Configuration.General.ShowIncompleteSeasonalEvents;
|
||||
if (ImGui.Checkbox("Show details for incomplete seasonal events", ref v4))
|
||||
{
|
||||
base.Configuration.General.ShowIncompleteSeasonalEvents = v4;
|
||||
Save();
|
||||
}
|
||||
bool v5 = base.Configuration.General.HideSeasonalEventsFromJournalProgress;
|
||||
if (ImGui.Checkbox("Hide Seasonal Events from Journal Progress", ref v5))
|
||||
{
|
||||
base.Configuration.General.HideSeasonalEventsFromJournalProgress = v5;
|
||||
Save();
|
||||
}
|
||||
bool v6 = base.Configuration.General.ShowChangelogOnUpdate;
|
||||
if (ImGui.Checkbox("Show changelog window when plugin updates", ref v6))
|
||||
{
|
||||
base.Configuration.General.ShowChangelogOnUpdate = v6;
|
||||
Save();
|
||||
}
|
||||
Vector4 col = new Vector4(0.7f, 0.7f, 0.7f, 1f);
|
||||
ImU8String text4 = new ImU8String(77, 1);
|
||||
text4.AppendLiteral("Quest steps will refresh automatically after ");
|
||||
text4.AppendFormatted(v13);
|
||||
text4.AppendLiteral(" seconds if no progress is made.");
|
||||
ImGui.TextColored(in col, text4);
|
||||
ImGui.Unindent();
|
||||
}
|
||||
ImGui.Spacing();
|
||||
finally
|
||||
{
|
||||
((IDisposable)val6)?.Dispose();
|
||||
}
|
||||
ImGui.Separator();
|
||||
ImGui.Text("Priority Quest Management");
|
||||
bool v14 = base.Configuration.General.PersistPriorityQuestsBetweenSessions;
|
||||
if (ImGui.Checkbox("Save priority quests between sessions", ref v14))
|
||||
ImGui.Text("Questing");
|
||||
val6 = ImRaii.PushIndent(1, true);
|
||||
try
|
||||
{
|
||||
base.Configuration.General.PersistPriorityQuestsBetweenSessions = v14;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
bool v7 = base.Configuration.General.AutoSolveQte;
|
||||
if (ImGui.Checkbox("Automatically solve Quick Time Events (QTEs)", ref v7))
|
||||
{
|
||||
ImGui.Text("When enabled, your priority quest list will be saved and restored");
|
||||
ImGui.Text("when the plugin reloads or the game restarts.");
|
||||
base.Configuration.General.AutoSolveQte = v7;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
TooltipDisposable val7 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
ImGui.Text("Automatically mashes the button during Active Time Maneuver (ATM)");
|
||||
ImGui.Text("prompts that appear in certain duties and quest battles.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val7)).Dispose();
|
||||
}
|
||||
}
|
||||
bool v8 = base.Configuration.General.AutoSnipe;
|
||||
if (ImGui.Checkbox("Automatically complete snipe quests", ref v8))
|
||||
{
|
||||
base.Configuration.General.AutoSnipe = v8;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
TooltipDisposable val8 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
ImGui.Text("Automatically completes sniping minigames introduced in Stormblood.");
|
||||
ImGui.Text("When enabled, snipe targets are instantly hit without manual aiming.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val8)).Dispose();
|
||||
}
|
||||
}
|
||||
bool v9 = base.Configuration.General.CinemaMode;
|
||||
if (ImGui.Checkbox("Cinema Mode (watch cutscenes)", ref v9))
|
||||
{
|
||||
base.Configuration.General.CinemaMode = v9;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
TooltipDisposable val9 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
ImGui.Text("When enabled, cutscenes will NOT be automatically skipped.");
|
||||
ImGui.Text("This allows you to experience the story while Questionable");
|
||||
ImGui.Text("handles navigation, combat, and other gameplay automation.");
|
||||
ImGui.Spacing();
|
||||
ImGui.TextColored(new Vector4(0.7f, 0.7f, 0.7f, 1f), "Recommended for first-time story playthroughs.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val9)).Dispose();
|
||||
}
|
||||
}
|
||||
bool v10 = base.Configuration.General.ConfigureTextAdvance;
|
||||
if (ImGui.Checkbox("Automatically configure TextAdvance with the recommended settings", ref v10))
|
||||
{
|
||||
base.Configuration.General.ConfigureTextAdvance = v10;
|
||||
Save();
|
||||
}
|
||||
bool v11 = base.Configuration.General.SkipLowPriorityDuties;
|
||||
if (ImGui.Checkbox("Unlock certain optional dungeons and raids (instead of waiting for completion)", ref v11))
|
||||
{
|
||||
base.Configuration.General.SkipLowPriorityDuties = v11;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
TooltipDisposable val10 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
ImGui.Text("Questionable automatically picks up some optional quests (e.g. for aether currents, or the ARR alliance raids).");
|
||||
ImGui.Text("If this setting is enabled, Questionable will continue with other quests, instead of waiting for manual completion of the duty.");
|
||||
ImGui.Separator();
|
||||
ImGui.Text("This affects the following dungeons and raids:");
|
||||
foreach (var lowPriorityContentFinderConditionQuest in _questRegistry.LowPriorityContentFinderConditionQuests)
|
||||
{
|
||||
if (_territoryData.TryGetContentFinderCondition(lowPriorityContentFinderConditionQuest.ContentFinderConditionId, out TerritoryData.ContentFinderConditionData contentFinderConditionData))
|
||||
{
|
||||
ImU8String text3 = new ImU8String(0, 1);
|
||||
text3.AppendFormatted(contentFinderConditionData.Name);
|
||||
ImGui.BulletText(text3);
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val10)).Dispose();
|
||||
}
|
||||
}
|
||||
ImGui.Spacing();
|
||||
bool v12 = base.Configuration.General.AutoStepRefreshEnabled;
|
||||
if (ImGui.Checkbox("Automatically refresh quest steps when stuck", ref v12))
|
||||
{
|
||||
base.Configuration.General.AutoStepRefreshEnabled = v12;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
TooltipDisposable val11 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
ImGui.Text("Questionable will automatically refresh a quest step if it appears to be stuck after the configured delay.");
|
||||
ImGui.Text("This helps resume automated quest completion when interruptions occur.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val11)).Dispose();
|
||||
}
|
||||
}
|
||||
DisabledDisposable val12 = ImRaii.Disabled(!v12);
|
||||
try
|
||||
{
|
||||
ImGui.Indent();
|
||||
int v13 = base.Configuration.General.AutoStepRefreshDelaySeconds;
|
||||
ImGui.SetNextItemWidth(150f);
|
||||
if (ImGui.SliderInt("Refresh delay (seconds)", ref v13, 10, 180))
|
||||
{
|
||||
base.Configuration.General.AutoStepRefreshDelaySeconds = v13;
|
||||
Save();
|
||||
}
|
||||
Vector4 col = new Vector4(0.7f, 0.7f, 0.7f, 1f);
|
||||
ImU8String text4 = new ImU8String(77, 1);
|
||||
text4.AppendLiteral("Quest steps will refresh automatically after ");
|
||||
text4.AppendFormatted(v13);
|
||||
text4.AppendLiteral(" seconds if no progress is made.");
|
||||
ImGui.TextColored(in col, text4);
|
||||
ImGui.Unindent();
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val12)?.Dispose();
|
||||
}
|
||||
ImGui.Spacing();
|
||||
ImGui.Separator();
|
||||
ImGui.Text("Priority Quest Management");
|
||||
bool v14 = base.Configuration.General.PersistPriorityQuestsBetweenSessions;
|
||||
if (ImGui.Checkbox("Save priority quests between sessions", ref v14))
|
||||
{
|
||||
base.Configuration.General.PersistPriorityQuestsBetweenSessions = v14;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
TooltipDisposable val13 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
ImGui.Text("When enabled, your priority quest list will be saved and restored");
|
||||
ImGui.Text("when the plugin reloads or the game restarts.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val13)).Dispose();
|
||||
}
|
||||
}
|
||||
bool v15 = base.Configuration.General.ClearPriorityQuestsOnLogout;
|
||||
if (ImGui.Checkbox("Clear priority quests on character logout", ref v15))
|
||||
{
|
||||
base.Configuration.General.ClearPriorityQuestsOnLogout = v15;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
TooltipDisposable val14 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
ImGui.Text("Clears the priority queue when your character logs out.");
|
||||
ImGui.Text("This also clears the saved list if persistence is enabled.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val14)).Dispose();
|
||||
}
|
||||
}
|
||||
bool v16 = base.Configuration.General.ClearPriorityQuestsOnCompletion;
|
||||
if (ImGui.Checkbox("Remove priority quests when completed", ref v16))
|
||||
{
|
||||
base.Configuration.General.ClearPriorityQuestsOnCompletion = v16;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
val3 = ImRaii.PushFont(UiBuilder.IconFont, true);
|
||||
try
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
((IDisposable)val3)?.Dispose();
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
TooltipDisposable val15 = ImRaii.Tooltip();
|
||||
try
|
||||
{
|
||||
ImGui.Text("Automatically removes completed quests from your priority queue.");
|
||||
ImGui.Text("This helps keep your priority list clean without manual intervention.");
|
||||
return;
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TooltipDisposable)(ref val15)).Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
bool v15 = base.Configuration.General.ClearPriorityQuestsOnLogout;
|
||||
if (ImGui.Checkbox("Clear priority quests on character logout", ref v15))
|
||||
finally
|
||||
{
|
||||
base.Configuration.General.ClearPriorityQuestsOnLogout = v15;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
{
|
||||
ImGui.Text("Clears the priority queue when your character logs out.");
|
||||
ImGui.Text("This also clears the saved list if persistence is enabled.");
|
||||
}
|
||||
}
|
||||
bool v16 = base.Configuration.General.ClearPriorityQuestsOnCompletion;
|
||||
if (ImGui.Checkbox("Remove priority quests when completed", ref v16))
|
||||
{
|
||||
base.Configuration.General.ClearPriorityQuestsOnCompletion = v16;
|
||||
Save();
|
||||
}
|
||||
ImGui.SameLine();
|
||||
using (ImRaii.PushFont(UiBuilder.IconFont))
|
||||
{
|
||||
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
|
||||
}
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
using (ImRaii.Tooltip())
|
||||
{
|
||||
ImGui.Text("Automatically removes completed quests from your priority queue.");
|
||||
ImGui.Text("This helps keep your priority list clean without manual intervention.");
|
||||
return;
|
||||
}
|
||||
((IDisposable)val6)?.Dispose();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
((TabItemDisposable)(ref val)).Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
static GeneralConfigComponent()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue