muffin v7.38.9

This commit is contained in:
alydev 2025-12-07 10:55:56 +10:00
parent ada27cf05b
commit 8a7847ff37
21 changed files with 1296 additions and 689 deletions

View file

@ -183,22 +183,28 @@ internal sealed class GeneralConfigComponent : ConfigComponent
base.Configuration.General.UseEscToCancelQuesting = v2;
Save();
}
bool v3 = base.Configuration.General.ShowIncompleteSeasonalEvents;
if (ImGui.Checkbox("Show details for incomplete seasonal events", ref v3))
bool v3 = base.Configuration.General.StopOnPlayerInput;
if (ImGui.Checkbox("Stop automation when manually moving character", ref v3))
{
base.Configuration.General.ShowIncompleteSeasonalEvents = v3;
base.Configuration.General.StopOnPlayerInput = v3;
Save();
}
bool v4 = base.Configuration.General.HideSeasonalEventsFromJournalProgress;
if (ImGui.Checkbox("Hide Seasonal Events from Journal Progress", ref v4))
bool v4 = base.Configuration.General.ShowIncompleteSeasonalEvents;
if (ImGui.Checkbox("Show details for incomplete seasonal events", ref v4))
{
base.Configuration.General.HideSeasonalEventsFromJournalProgress = v4;
base.Configuration.General.ShowIncompleteSeasonalEvents = v4;
Save();
}
bool v5 = base.Configuration.General.ShowChangelogOnUpdate;
if (ImGui.Checkbox("Show changelog window when plugin updates", ref v5))
bool v5 = base.Configuration.General.HideSeasonalEventsFromJournalProgress;
if (ImGui.Checkbox("Hide Seasonal Events from Journal Progress", ref v5))
{
base.Configuration.General.ShowChangelogOnUpdate = 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();
}
}
@ -206,16 +212,16 @@ internal sealed class GeneralConfigComponent : ConfigComponent
ImGui.Text("Questing");
using (ImRaii.PushIndent())
{
bool v6 = base.Configuration.General.ConfigureTextAdvance;
if (ImGui.Checkbox("Automatically configure TextAdvance with the recommended settings", ref v6))
bool v7 = base.Configuration.General.ConfigureTextAdvance;
if (ImGui.Checkbox("Automatically configure TextAdvance with the recommended settings", ref v7))
{
base.Configuration.General.ConfigureTextAdvance = v6;
base.Configuration.General.ConfigureTextAdvance = v7;
Save();
}
bool v7 = base.Configuration.General.SkipLowPriorityDuties;
if (ImGui.Checkbox("Unlock certain optional dungeons and raids (instead of waiting for completion)", ref v7))
bool v8 = base.Configuration.General.SkipLowPriorityDuties;
if (ImGui.Checkbox("Unlock certain optional dungeons and raids (instead of waiting for completion)", ref v8))
{
base.Configuration.General.SkipLowPriorityDuties = v7;
base.Configuration.General.SkipLowPriorityDuties = v8;
Save();
}
ImGui.SameLine();
@ -243,10 +249,10 @@ internal sealed class GeneralConfigComponent : ConfigComponent
}
}
ImGui.Spacing();
bool v8 = base.Configuration.General.AutoStepRefreshEnabled;
if (ImGui.Checkbox("Automatically refresh quest steps when stuck", ref v8))
bool v9 = base.Configuration.General.AutoStepRefreshEnabled;
if (ImGui.Checkbox("Automatically refresh quest steps when stuck", ref v9))
{
base.Configuration.General.AutoStepRefreshEnabled = v8;
base.Configuration.General.AutoStepRefreshEnabled = v9;
Save();
}
ImGui.SameLine();
@ -262,20 +268,20 @@ internal sealed class GeneralConfigComponent : ConfigComponent
ImGui.Text("This helps resume automated quest completion when interruptions occur.");
}
}
using (ImRaii.Disabled(!v8))
using (ImRaii.Disabled(!v9))
{
ImGui.Indent();
int v9 = base.Configuration.General.AutoStepRefreshDelaySeconds;
int v10 = base.Configuration.General.AutoStepRefreshDelaySeconds;
ImGui.SetNextItemWidth(150f);
if (ImGui.SliderInt("Refresh delay (seconds)", ref v9, 10, 180))
if (ImGui.SliderInt("Refresh delay (seconds)", ref v10, 10, 180))
{
base.Configuration.General.AutoStepRefreshDelaySeconds = v9;
base.Configuration.General.AutoStepRefreshDelaySeconds = v10;
Save();
}
Vector4 col = new Vector4(0.7f, 0.7f, 0.7f, 1f);
ImU8String text2 = new ImU8String(77, 1);
text2.AppendLiteral("Quest steps will refresh automatically after ");
text2.AppendFormatted(v9);
text2.AppendFormatted(v10);
text2.AppendLiteral(" seconds if no progress is made.");
ImGui.TextColored(in col, text2);
ImGui.Unindent();
@ -283,16 +289,16 @@ internal sealed class GeneralConfigComponent : ConfigComponent
ImGui.Spacing();
ImGui.Separator();
ImGui.Text("Priority Quest Management");
bool v10 = base.Configuration.General.ClearPriorityQuestsOnLogout;
if (ImGui.Checkbox("Clear priority quests on character logout", ref v10))
bool v11 = base.Configuration.General.ClearPriorityQuestsOnLogout;
if (ImGui.Checkbox("Clear priority quests on character logout", ref v11))
{
base.Configuration.General.ClearPriorityQuestsOnLogout = v10;
base.Configuration.General.ClearPriorityQuestsOnLogout = v11;
Save();
}
bool v11 = base.Configuration.General.ClearPriorityQuestsOnCompletion;
if (ImGui.Checkbox("Remove priority quests when completed", ref v11))
bool v12 = base.Configuration.General.ClearPriorityQuestsOnCompletion;
if (ImGui.Checkbox("Remove priority quests when completed", ref v12))
{
base.Configuration.General.ClearPriorityQuestsOnCompletion = v11;
base.Configuration.General.ClearPriorityQuestsOnCompletion = v12;
Save();
}
ImGui.SameLine();

View file

@ -25,9 +25,9 @@ internal sealed class PluginConfigComponent : ConfigComponent
private static readonly IReadOnlyList<PluginInfo> RequiredPlugins = new global::_003C_003Ez__ReadOnlyArray<PluginInfo>(new PluginInfo[3]
{
new PluginInfo("vnavmesh", "vnavmesh", "vnavmesh handles the navigation within a zone, moving\nyour character to the next quest-related objective.", new Uri("https://github.com/awgil/ffxiv_navmesh/"), new Uri("https://puni.sh/api/repository/veyn")),
new PluginInfo("Lifestream", "Lifestream", "Used to travel to aethernet shards in cities.", new Uri("https://github.com/NightmareXIV/Lifestream"), new Uri("https://github.com/NightmareXIV/MyDalamudPlugins/raw/main/pluginmaster.json")),
new PluginInfo("TextAdvance", "TextAdvance", "Automatically accepts and turns in quests, skips cutscenes\nand dialogue.", new Uri("https://github.com/NightmareXIV/TextAdvance"), new Uri("https://github.com/NightmareXIV/MyDalamudPlugins/raw/main/pluginmaster.json"))
new PluginInfo("TextAdvance", "TextAdvance", "Automatically accepts and turns in quests, skips cutscenes\nand dialogue.", new Uri("https://github.com/NightmareXIV/TextAdvance"), new Uri("https://github.com/NightmareXIV/MyDalamudPlugins/raw/main/pluginmaster.json")),
new PluginInfo("vnavmesh", "vnavmesh", "vnavmesh handles the navigation within a zone, moving\nyour character to the next quest-related objective.", new Uri("https://github.com/awgil/ffxiv_navmesh/"), new Uri("https://puni.sh/api/repository/veyn"))
});
private static readonly ReadOnlyDictionary<Configuration.ECombatModule, PluginInfo> CombatPlugins = new Dictionary<Configuration.ECombatModule, PluginInfo>
@ -36,13 +36,13 @@ internal sealed class PluginConfigComponent : ConfigComponent
Questionable.Configuration.ECombatModule.BossMod,
new PluginInfo("Boss Mod (VBM)", "BossMod", string.Empty, new Uri("https://github.com/awgil/ffxiv_bossmod"), new Uri("https://puni.sh/api/repository/veyn"))
},
{
Questionable.Configuration.ECombatModule.WrathCombo,
new PluginInfo("Wrath Combo", "WrathCombo", string.Empty, new Uri("https://github.com/PunishXIV/WrathCombo"), new Uri("https://puni.sh/api/plugins"))
},
{
Questionable.Configuration.ECombatModule.RotationSolverReborn,
new PluginInfo("Rotation Solver Reborn", "RotationSolver", string.Empty, new Uri("https://github.com/FFXIV-CombatReborn/RotationSolverReborn"), new Uri("https://raw.githubusercontent.com/FFXIV-CombatReborn/CombatRebornRepo/main/pluginmaster.json"))
},
{
Questionable.Configuration.ECombatModule.WrathCombo,
new PluginInfo("Wrath Combo", "WrathCombo", string.Empty, new Uri("https://github.com/PunishXIV/WrathCombo"), new Uri("https://puni.sh/api/plugins"))
}
}.AsReadOnly();
@ -66,9 +66,10 @@ internal sealed class PluginConfigComponent : ConfigComponent
_pluginInterface = pluginInterface;
_uiUtils = uiUtils;
_commandManager = commandManager;
PluginInfo[] obj = new PluginInfo[5]
PluginInfo[] obj = new PluginInfo[6]
{
new PluginInfo("Artisan", "Artisan", "Handles automatic crafting for quests that require\ncrafted items.", new Uri("https://github.com/PunishXIV/Artisan"), new Uri("https://puni.sh/api/plugins")),
new PluginInfo("AutoDuty", "AutoDuty", "Automatically handles dungeon and trial completion during\nMain Scenario Quest progression.", new Uri("https://github.com/erdelf/AutoDuty"), new Uri("https://puni.sh/api/repository/erdelf")),
null,
null,
null,
@ -82,7 +83,8 @@ internal sealed class PluginConfigComponent : ConfigComponent
Span<PluginDetailInfo> span = CollectionsMarshal.AsSpan(list);
int index = 0;
span[index] = new PluginDetailInfo("'Sniper no sniping' enabled", "Automatically completes sniping tasks introduced in Stormblood", () => automatonIpc.IsAutoSnipeEnabled);
obj[1] = new PluginInfo("CBT (formerly known as Automaton)", "Automaton", "Automaton is a collection of automation-related tweaks.", websiteUri, dalamudRepositoryUri, "/cbt", list);
obj[2] = new PluginInfo("CBT (formerly known as Automaton)", "Automaton", "Automaton is a collection of automation-related tweaks.", websiteUri, dalamudRepositoryUri, "/cbt", list);
obj[3] = new PluginInfo("NotificationMaster", "NotificationMaster", "Sends a configurable out-of-game notification if a quest\nrequires manual actions.", new Uri("https://github.com/NightmareXIV/NotificationMaster"), null);
Uri websiteUri2 = new Uri("https://github.com/PunishXIV/PandorasBox");
Uri dalamudRepositoryUri2 = new Uri("https://puni.sh/api/plugins");
index = 1;
@ -91,9 +93,8 @@ internal sealed class PluginConfigComponent : ConfigComponent
span = CollectionsMarshal.AsSpan(list2);
num = 0;
span[num] = new PluginDetailInfo("'Auto Active Time Maneuver' enabled", "Automatically completes active time maneuvers in\nsingle player instances, trials and raids\"", () => pandorasBoxIpc.IsAutoActiveTimeManeuverEnabled);
obj[2] = new PluginInfo("Pandora's Box", "PandorasBox", "Pandora's Box is a collection of tweaks.", websiteUri2, dalamudRepositoryUri2, "/pandora", list2);
obj[3] = new PluginInfo("QuestMap", "QuestMap", "Displays quest objectives and markers on the map for\nbetter navigation and tracking.", new Uri("https://github.com/rreminy/QuestMap"), null);
obj[4] = new PluginInfo("NotificationMaster", "NotificationMaster", "Sends a configurable out-of-game notification if a quest\nrequires manual actions.", new Uri("https://github.com/NightmareXIV/NotificationMaster"), null);
obj[4] = new PluginInfo("Pandora's Box", "PandorasBox", "Pandora's Box is a collection of tweaks.", websiteUri2, dalamudRepositoryUri2, "/pandora", list2);
obj[5] = new PluginInfo("QuestMap", "QuestMap", "Displays quest objectives and markers on the map for\nbetter navigation and tracking.", new Uri("https://github.com/rreminy/QuestMap"), null);
_recommendedPlugins = new global::_003C_003Ez__ReadOnlyArray<PluginInfo>(obj);
}
@ -147,8 +148,8 @@ internal sealed class PluginConfigComponent : ConfigComponent
_pluginInterface.SavePluginConfig(_configuration);
}
allRequiredInstalled &= DrawCombatPlugin(Questionable.Configuration.ECombatModule.BossMod, checklistPadding);
allRequiredInstalled &= DrawCombatPlugin(Questionable.Configuration.ECombatModule.WrathCombo, checklistPadding);
allRequiredInstalled &= DrawCombatPlugin(Questionable.Configuration.ECombatModule.RotationSolverReborn, checklistPadding);
allRequiredInstalled &= DrawCombatPlugin(Questionable.Configuration.ECombatModule.WrathCombo, checklistPadding);
}
}
ImGui.Spacing();