1
0
Fork 0
forked from aly/qstbak

muffin v7.4.10

This commit is contained in:
alydev 2026-01-19 08:31:23 +10:00
parent 2df81c5d15
commit b8dd142c23
47 changed files with 3604 additions and 1058 deletions

View file

@ -35,6 +35,8 @@ internal sealed class GeneralConfigComponent : ConfigComponent
private readonly string[] _grandCompanyNames = new string[4] { "None (manually pick quest)", "Maelstrom", "Twin Adder", "Immortal Flames" };
private readonly string[] _msqPriorityNames = new string[3] { "Always (MSQ first)", "After Tracked (MSQ last)", "Manual (never auto-accept MSQ)" };
private readonly EClassJob[] _classJobIds;
private readonly string[] _classJobNames;
@ -159,6 +161,28 @@ internal sealed class GeneralConfigComponent : ConfigComponent
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)
{
@ -253,10 +277,48 @@ internal sealed class GeneralConfigComponent : ConfigComponent
ImGui.Text("Questing");
using (ImRaii.PushIndent())
{
bool v7 = base.Configuration.General.CinemaMode;
if (ImGui.Checkbox("Cinema Mode (watch cutscenes)", ref v7))
bool v7 = base.Configuration.General.AutoSolveQte;
if (ImGui.Checkbox("Automatically solve Quick Time Events (QTEs)", ref v7))
{
base.Configuration.General.CinemaMode = v7;
base.Configuration.General.AutoSolveQte = v7;
Save();
}
ImGui.SameLine();
using (ImRaii.PushFont(UiBuilder.IconFont))
{
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
}
if (ImGui.IsItemHovered())
{
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());
}
if (ImGui.IsItemHovered())
{
using (ImRaii.Tooltip())
{
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();
@ -275,16 +337,16 @@ internal sealed class GeneralConfigComponent : ConfigComponent
ImGui.TextColored(new Vector4(0.7f, 0.7f, 0.7f, 1f), "Recommended for first-time story playthroughs.");
}
}
bool v8 = base.Configuration.General.ConfigureTextAdvance;
if (ImGui.Checkbox("Automatically configure TextAdvance with the recommended settings", ref v8))
bool v10 = base.Configuration.General.ConfigureTextAdvance;
if (ImGui.Checkbox("Automatically configure TextAdvance with the recommended settings", ref v10))
{
base.Configuration.General.ConfigureTextAdvance = v8;
base.Configuration.General.ConfigureTextAdvance = v10;
Save();
}
bool v9 = base.Configuration.General.SkipLowPriorityDuties;
if (ImGui.Checkbox("Unlock certain optional dungeons and raids (instead of waiting for completion)", ref v9))
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 = v9;
base.Configuration.General.SkipLowPriorityDuties = v11;
Save();
}
ImGui.SameLine();
@ -312,10 +374,10 @@ internal sealed class GeneralConfigComponent : ConfigComponent
}
}
ImGui.Spacing();
bool v10 = base.Configuration.General.AutoStepRefreshEnabled;
if (ImGui.Checkbox("Automatically refresh quest steps when stuck", ref v10))
bool v12 = base.Configuration.General.AutoStepRefreshEnabled;
if (ImGui.Checkbox("Automatically refresh quest steps when stuck", ref v12))
{
base.Configuration.General.AutoStepRefreshEnabled = v10;
base.Configuration.General.AutoStepRefreshEnabled = v12;
Save();
}
ImGui.SameLine();
@ -331,20 +393,20 @@ internal sealed class GeneralConfigComponent : ConfigComponent
ImGui.Text("This helps resume automated quest completion when interruptions occur.");
}
}
using (ImRaii.Disabled(!v10))
using (ImRaii.Disabled(!v12))
{
ImGui.Indent();
int v11 = base.Configuration.General.AutoStepRefreshDelaySeconds;
int v13 = base.Configuration.General.AutoStepRefreshDelaySeconds;
ImGui.SetNextItemWidth(150f);
if (ImGui.SliderInt("Refresh delay (seconds)", ref v11, 10, 180))
if (ImGui.SliderInt("Refresh delay (seconds)", ref v13, 10, 180))
{
base.Configuration.General.AutoStepRefreshDelaySeconds = v11;
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(v11);
text4.AppendFormatted(v13);
text4.AppendLiteral(" seconds if no progress is made.");
ImGui.TextColored(in col, text4);
ImGui.Unindent();
@ -352,16 +414,48 @@ internal sealed class GeneralConfigComponent : ConfigComponent
ImGui.Spacing();
ImGui.Separator();
ImGui.Text("Priority Quest Management");
bool v12 = base.Configuration.General.ClearPriorityQuestsOnLogout;
if (ImGui.Checkbox("Clear priority quests on character logout", ref v12))
bool v14 = base.Configuration.General.PersistPriorityQuestsBetweenSessions;
if (ImGui.Checkbox("Save priority quests between sessions", ref v14))
{
base.Configuration.General.ClearPriorityQuestsOnLogout = v12;
base.Configuration.General.PersistPriorityQuestsBetweenSessions = v14;
Save();
}
bool v13 = base.Configuration.General.ClearPriorityQuestsOnCompletion;
if (ImGui.Checkbox("Remove priority quests when completed", ref v13))
ImGui.SameLine();
using (ImRaii.PushFont(UiBuilder.IconFont))
{
base.Configuration.General.ClearPriorityQuestsOnCompletion = v13;
ImGui.TextDisabled(FontAwesomeIcon.InfoCircle.ToIconString());
}
if (ImGui.IsItemHovered())
{
using (ImRaii.Tooltip())
{
ImGui.Text("When enabled, your priority quest list will be saved and restored");
ImGui.Text("when the plugin reloads or the game restarts.");
}
}
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();
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();