muffin v7.5.0

This commit is contained in:
alydev 2026-05-01 05:17:35 +10:00
parent afafd5e377
commit a6481e7b9a
67 changed files with 4281 additions and 2372 deletions

View file

@ -61,7 +61,7 @@ internal sealed class ActiveQuestComponent
public event EventHandler? Reload;
[GeneratedRegex("\\s\\s+", RegexOptions.IgnoreCase, "en-US")]
[GeneratedCode("System.Text.RegularExpressions.Generator", "10.0.14.15411")]
[GeneratedCode("System.Text.RegularExpressions.Generator", "10.0.14.21808")]
private static Regex MultipleWhitespaceRegex()
{
return _003CRegexGenerator_g_003EFBB8301322196CF81C64F1652C2FA6E1D6BF3907141F781E9D97ABED51BF056C4__MultipleWhitespaceRegex_0.Instance;
@ -90,6 +90,8 @@ internal sealed class ActiveQuestComponent
public void Draw(bool isMinimized)
{
//IL_0150: Unknown result type (might be due to invalid IL or missing references)
//IL_0157: Expected O, but got Unknown
if (_fateController.IsRunning)
{
DrawFateActive(isMinimized);
@ -116,17 +118,27 @@ internal sealed class ActiveQuestComponent
string currentTaskState = _questController.CurrentTaskState;
if (currentTaskState != null)
{
using (ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudOrange))
ColorDisposable val = ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudOrange, true);
try
{
ImGui.TextUnformatted(currentTaskState);
}
finally
{
((IDisposable)val)?.Dispose();
}
}
else
{
using (ImRaii.Disabled())
DisabledDisposable val2 = ImRaii.Disabled();
try
{
ImGui.TextUnformatted(_questController.DebugState ?? string.Empty);
}
finally
{
((IDisposable)val2)?.Dispose();
}
}
}
try
@ -135,7 +147,8 @@ internal sealed class ActiveQuestComponent
QuestStep questStep = questSequence?.FindStep(questProgress.Step);
if (!isMinimized)
{
using (ImRaii.Color color = new ImRaii.Color())
ColorDisposable val3 = new ColorDisposable();
try
{
bool flag;
if (questStep != null)
@ -152,10 +165,14 @@ internal sealed class ActiveQuestComponent
IL_017e:
if (flag)
{
color.Push(ImGuiCol.Text, ImGuiColors.DalamudOrange);
val3.Push(ImGuiCol.Text, ImGuiColors.DalamudOrange, true);
}
ImGui.TextUnformatted(questStep?.Comment ?? questSequence?.Comment ?? questProgress.Quest.Root.Comment ?? string.Empty);
}
finally
{
((IDisposable)val3)?.Dispose();
}
ImGui.Text(_questController.ToStatString());
}
DrawQuestButtons(questProgress, questStep, questProgressInfo, isMinimized);
@ -191,7 +208,8 @@ internal sealed class ActiveQuestComponent
text2.AppendFormatted((item2 == 1) ? string.Empty : "s");
text2.AppendLiteral(" - Leveling mode will start automatically");
ImGui.TextColored(in col, text2);
using (ImRaii.Disabled(_questController.IsRunning || _fateController.IsRunning || _seasonalDutyController.IsRunning || !_autoDutyIpc.IsStopped()))
DisabledDisposable val4 = ImRaii.Disabled(_questController.IsRunning || _fateController.IsRunning || _seasonalDutyController.IsRunning || !_autoDutyIpc.IsStopped());
try
{
if (ImGuiComponents.IconButton(FontAwesomeIcon.Play))
{
@ -206,6 +224,10 @@ internal sealed class ActiveQuestComponent
}
}
}
finally
{
((IDisposable)val4)?.Dispose();
}
if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
{
if (!_autoDutyIpc.IsStopped())
@ -262,13 +284,18 @@ internal sealed class ActiveQuestComponent
private void DrawFateActive(bool isMinimized)
{
using (ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.ParsedGold))
ColorDisposable val = ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.ParsedGold, true);
try
{
ImU8String text = new ImU8String(6, 1);
text.AppendLiteral("FATE: ");
text.AppendFormatted(Shorten(_fateController.CurrentFate.Name));
ImGui.TextUnformatted(text);
}
finally
{
((IDisposable)val)?.Dispose();
}
IList<string> remainingTaskNames = _fateController.GetRemainingTaskNames();
if (remainingTaskNames.Count > 0)
{
@ -288,13 +315,18 @@ internal sealed class ActiveQuestComponent
private void DrawDutyActive(bool isMinimized)
{
using (ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.ParsedGreen))
ColorDisposable val = ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.ParsedGreen, true);
try
{
ImU8String text = new ImU8String(6, 1);
text.AppendLiteral("Duty: ");
text.AppendFormatted(Shorten(_seasonalDutyController.CurrentDuty.Name));
ImGui.TextUnformatted(text);
}
finally
{
((IDisposable)val)?.Dispose();
}
IList<string> remainingTaskNames = _seasonalDutyController.GetRemainingTaskNames();
if (remainingTaskNames.Count > 0)
{
@ -314,9 +346,14 @@ internal sealed class ActiveQuestComponent
private void DrawQuestNames(QuestController.QuestProgress currentQuest, QuestController.ECurrentQuestType? currentQuestType)
{
//IL_0709: Unknown result type (might be due to invalid IL or missing references)
//IL_070e: Unknown result type (might be due to invalid IL or missing references)
//IL_03c9: Unknown result type (might be due to invalid IL or missing references)
//IL_03ce: Unknown result type (might be due to invalid IL or missing references)
if (currentQuestType == QuestController.ECurrentQuestType.Simulated)
{
using (ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudRed))
ColorDisposable val = ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudRed, true);
try
{
ImU8String text = new ImU8String(26, 4);
text.AppendLiteral("Simulated Quest: ");
@ -330,10 +367,15 @@ internal sealed class ActiveQuestComponent
ImGui.TextUnformatted(text);
return;
}
finally
{
((IDisposable)val)?.Dispose();
}
}
if (currentQuestType == QuestController.ECurrentQuestType.Gathering)
{
using (ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.ParsedGold))
ColorDisposable val2 = ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.ParsedGold, true);
try
{
ImU8String text2 = new ImU8String(20, 4);
text2.AppendLiteral("Gathering: ");
@ -347,6 +389,10 @@ internal sealed class ActiveQuestComponent
ImGui.TextUnformatted(text2);
return;
}
finally
{
((IDisposable)val2)?.Dispose();
}
}
QuestController.QuestProgress startedQuest = _questController.StartedQuest;
if (startedQuest != null)
@ -403,91 +449,98 @@ internal sealed class ActiveQuestComponent
ImGui.TextColored(in col, SeIconChar.Clock.ToIconString());
if (ImGui.IsItemHovered())
{
using ImRaii.IEndObject endObject = ImRaii.Tooltip();
if (endObject)
TooltipDisposable val3 = ImRaii.Tooltip();
try
{
ImGui.Text("Stop Conditions:");
ImGui.Separator();
if (flag)
if (((TooltipDisposable)(ref val3)).Alive)
{
int num2 = _objectTable.LocalPlayer?.Level ?? 0;
ImU8String text4 = new ImU8String(14, 1);
text4.AppendLiteral("Stop at level ");
text4.AppendFormatted(_configuration.Stop.TargetLevel);
ImGui.BulletText(text4);
if (num2 > 0)
ImGui.Text("Stop Conditions:");
ImGui.Separator();
if (flag)
{
int num2 = _objectTable.LocalPlayer?.Level ?? 0;
ImU8String text4 = new ImU8String(14, 1);
text4.AppendLiteral("Stop at level ");
text4.AppendFormatted(_configuration.Stop.TargetLevel);
ImGui.BulletText(text4);
if (num2 > 0)
{
ImGui.SameLine();
if (num2 >= _configuration.Stop.TargetLevel)
{
Vector4 col2 = ImGuiColors.ParsedGreen;
ImU8String text5 = new ImU8String(22, 1);
text5.AppendLiteral("(Current: ");
text5.AppendFormatted(num2);
text5.AppendLiteral(" - Reached!)");
ImGui.TextColored(in col2, text5);
}
else
{
Vector4 col2 = ImGuiColors.ParsedBlue;
ImU8String text6 = new ImU8String(11, 1);
text6.AppendLiteral("(Current: ");
text6.AppendFormatted(num2);
text6.AppendLiteral(")");
ImGui.TextColored(in col2, text6);
}
}
}
if (flag3)
{
if (flag)
{
ImGui.Spacing();
}
int sequence = startedQuest.Sequence;
ImU8String text7 = new ImU8String(23, 1);
text7.AppendLiteral("Stop at quest sequence ");
text7.AppendFormatted(_configuration.Stop.TargetSequence);
ImGui.BulletText(text7);
ImGui.SameLine();
if (num2 >= _configuration.Stop.TargetLevel)
if (sequence >= _configuration.Stop.TargetSequence)
{
Vector4 col2 = ImGuiColors.ParsedGreen;
ImU8String text5 = new ImU8String(22, 1);
text5.AppendLiteral("(Current: ");
text5.AppendFormatted(num2);
text5.AppendLiteral(" - Reached!)");
ImGui.TextColored(in col2, text5);
ImU8String text8 = new ImU8String(22, 1);
text8.AppendLiteral("(Current: ");
text8.AppendFormatted(sequence);
text8.AppendLiteral(" - Reached!)");
ImGui.TextColored(in col2, text8);
}
else
{
Vector4 col2 = ImGuiColors.ParsedBlue;
ImU8String text6 = new ImU8String(11, 1);
text6.AppendLiteral("(Current: ");
text6.AppendFormatted(num2);
text6.AppendLiteral(")");
ImGui.TextColored(in col2, text6);
ImU8String text9 = new ImU8String(11, 1);
text9.AppendLiteral("(Current: ");
text9.AppendFormatted(sequence);
text9.AppendLiteral(")");
ImGui.TextColored(in col2, text9);
}
}
}
if (flag3)
{
if (flag)
if (flag2)
{
ImGui.Spacing();
}
int sequence = startedQuest.Sequence;
ImU8String text7 = new ImU8String(23, 1);
text7.AppendLiteral("Stop at quest sequence ");
text7.AppendFormatted(_configuration.Stop.TargetSequence);
ImGui.BulletText(text7);
ImGui.SameLine();
if (sequence >= _configuration.Stop.TargetSequence)
{
Vector4 col2 = ImGuiColors.ParsedGreen;
ImU8String text8 = new ImU8String(22, 1);
text8.AppendLiteral("(Current: ");
text8.AppendFormatted(sequence);
text8.AppendLiteral(" - Reached!)");
ImGui.TextColored(in col2, text8);
}
else
{
Vector4 col2 = ImGuiColors.ParsedBlue;
ImU8String text9 = new ImU8String(11, 1);
text9.AppendLiteral("(Current: ");
text9.AppendFormatted(sequence);
text9.AppendLiteral(")");
ImGui.TextColored(in col2, text9);
}
}
if (flag2)
{
if (flag || flag3)
{
ImGui.Spacing();
}
ImGui.BulletText("Stop after completing any of these quests:");
ImGui.Indent();
foreach (ElementId item in _configuration.Stop.QuestsToStopAfter)
{
if (_questRegistry.TryGetQuest(item, out Quest quest))
if (flag || flag3)
{
var (color, icon, _) = _uiUtils.GetQuestStyle(item);
_uiUtils.ChecklistItem($"{quest.Info.Name} ({item})", color, icon);
ImGui.Spacing();
}
ImGui.BulletText("Stop after completing any of these quests:");
ImGui.Indent();
foreach (ElementId item in _configuration.Stop.QuestsToStopAfter)
{
if (_questRegistry.TryGetQuest(item, out Quest quest))
{
var (color, icon, _) = _uiUtils.GetQuestStyle(item);
_uiUtils.ChecklistItem($"{quest.Info.Name} ({item})", color, icon);
}
}
ImGui.Unindent();
}
ImGui.Unindent();
}
}
finally
{
((TooltipDisposable)(ref val3)).Dispose();
}
}
}
if (_configuration.Advanced.AdditionalStatusInformation && _questController.IsInterruptible())
@ -496,65 +549,73 @@ internal sealed class ActiveQuestComponent
ImGui.TextColored(ImGuiColors.DalamudYellow, SeIconChar.Hyadelyn.ToIconString());
if (ImGui.IsItemHovered())
{
using ImRaii.IEndObject endObject2 = ImRaii.Tooltip();
if (endObject2)
TooltipDisposable val4 = ImRaii.Tooltip();
try
{
ImGui.Text("This quest sequence starts with a teleport to an Aetheryte.");
ImGui.Text("Certain priority quest (e.g. class quests) may be started/completed by the plugin prior to continuing with this quest.");
ImGui.Separator();
ImGui.Text("Available priority quests:");
List<PriorityQuestInfo> nextPriorityQuestsThatCanBeAccepted = _questFunctions.GetNextPriorityQuestsThatCanBeAccepted();
List<ElementId> list = (from x in nextPriorityQuestsThatCanBeAccepted
where x.IsAvailable
select x.QuestId).ToList();
if (list.Count > 0)
if (((TooltipDisposable)(ref val4)).Alive)
{
foreach (ElementId item2 in list)
ImGui.Text("This quest sequence starts with a teleport to an Aetheryte.");
ImGui.Text("Certain priority quest (e.g. class quests) may be started/completed by the plugin prior to continuing with this quest.");
ImGui.Separator();
ImGui.Text("Available priority quests:");
List<PriorityQuestInfo> nextPriorityQuestsThatCanBeAccepted = _questFunctions.GetNextPriorityQuestsThatCanBeAccepted();
List<ElementId> list = (from x in nextPriorityQuestsThatCanBeAccepted
where x.IsAvailable
select x.QuestId).ToList();
if (list.Count > 0)
{
if (_questRegistry.TryGetQuest(item2, out Quest quest2))
foreach (ElementId item2 in list)
{
ImU8String text10 = new ImU8String(3, 2);
text10.AppendFormatted(quest2.Info.Name);
text10.AppendLiteral(" (");
text10.AppendFormatted(item2);
text10.AppendLiteral(")");
ImGui.BulletText(text10);
if (_questRegistry.TryGetQuest(item2, out Quest quest2))
{
ImU8String text10 = new ImU8String(3, 2);
text10.AppendFormatted(quest2.Info.Name);
text10.AppendLiteral(" (");
text10.AppendFormatted(item2);
text10.AppendLiteral(")");
ImGui.BulletText(text10);
}
}
}
}
else
{
ImGui.BulletText("(none)");
}
if (_configuration.Advanced.AdditionalStatusInformation)
{
List<PriorityQuestInfo> list2 = nextPriorityQuestsThatCanBeAccepted.Where((PriorityQuestInfo x) => !x.IsAvailable).ToList();
if (list2.Count > 0)
else
{
ImGui.Text("Unavailable priority quests:");
foreach (var (elementId2, value) in list2)
ImGui.BulletText("(none)");
}
if (_configuration.Advanced.AdditionalStatusInformation)
{
List<PriorityQuestInfo> list2 = nextPriorityQuestsThatCanBeAccepted.Where((PriorityQuestInfo x) => !x.IsAvailable).ToList();
if (list2.Count > 0)
{
if (_questRegistry.TryGetQuest(elementId2, out Quest quest3))
ImGui.Text("Unavailable priority quests:");
foreach (var (elementId2, value) in list2)
{
ImU8String text12 = new ImU8String(6, 3);
text12.AppendFormatted(quest3.Info.Name);
text12.AppendLiteral(" (");
text12.AppendFormatted(elementId2);
text12.AppendLiteral(") - ");
text12.AppendFormatted(value);
ImGui.BulletText(text12);
if (_questRegistry.TryGetQuest(elementId2, out Quest quest3))
{
ImU8String text12 = new ImU8String(6, 3);
text12.AppendFormatted(quest3.Info.Name);
text12.AppendLiteral(" (");
text12.AppendFormatted(elementId2);
text12.AppendLiteral(") - ");
text12.AppendFormatted(value);
ImGui.BulletText(text12);
}
}
}
}
}
}
finally
{
((TooltipDisposable)(ref val4)).Dispose();
}
}
}
}
QuestController.QuestProgress nextQuest = _questController.NextQuest;
if (nextQuest != null)
{
using (ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudYellow))
ColorDisposable val5 = ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudYellow, true);
try
{
ImU8String text13 = new ImU8String(21, 4);
text13.AppendLiteral("Next Quest: ");
@ -567,6 +628,10 @@ internal sealed class ActiveQuestComponent
text13.AppendFormatted(nextQuest.Step);
ImGui.TextUnformatted(text13);
}
finally
{
((IDisposable)val5)?.Dispose();
}
}
}
@ -580,8 +645,9 @@ internal sealed class ActiveQuestComponent
return questProgressInfo;
}
Vector4* styleColorVec = ImGui.GetStyleColorVec4(ImGuiCol.TextDisabled);
Vector4 color = ((styleColorVec == null) ? ImGuiColors.ParsedOrange : (*styleColorVec));
using (ImRaii.PushColor(ImGuiCol.Text, color))
Vector4 vector = ((styleColorVec == null) ? ImGuiColors.ParsedOrange : (*styleColorVec));
ColorDisposable val = ImRaii.PushColor(ImGuiCol.Text, vector, true);
try
{
ImU8String text = new ImU8String(0, 1);
text.AppendFormatted(questProgressInfo);
@ -608,10 +674,15 @@ internal sealed class ActiveQuestComponent
ImGui.Text(text3);
}
}
finally
{
((IDisposable)val)?.Dispose();
}
}
else if (currentQuest.Quest.Id is QuestId)
{
using (ImRaii.Disabled())
DisabledDisposable val2 = ImRaii.Disabled();
try
{
if (currentQuest.Quest.Id == _questController.NextQuest?.Quest.Id)
{
@ -622,13 +693,18 @@ internal sealed class ActiveQuestComponent
ImGui.TextUnformatted("(Not accepted)");
}
}
finally
{
((IDisposable)val2)?.Dispose();
}
}
return questProgressInfo;
}
private void DrawQuestButtons(QuestController.QuestProgress currentQuest, QuestStep? currentStep, QuestProgressInfo? questProgressInfo, bool isMinimized)
{
using (ImRaii.Disabled(_questController.IsRunning || _fateController.IsRunning || _seasonalDutyController.IsRunning))
DisabledDisposable val = ImRaii.Disabled(_questController.IsRunning || _fateController.IsRunning || _seasonalDutyController.IsRunning);
try
{
if (ImGuiComponents.IconButton(FontAwesomeIcon.Play))
{
@ -647,6 +723,10 @@ internal sealed class ActiveQuestComponent
}
}
}
finally
{
((IDisposable)val)?.Dispose();
}
ImGui.SameLine();
if (ImGuiComponents.IconButton(FontAwesomeIcon.Stop))
{
@ -666,10 +746,12 @@ internal sealed class ActiveQuestComponent
}
bool flag = currentStep == currentQuest.Quest.FindSequence(currentQuest.Sequence)?.Steps.LastOrDefault();
WaitAtEnd.WaitNextStepOrSequence task;
bool condition = currentStep != null && !flag && currentStep.InteractionType == EInteractionType.Instruction && _questController.HasCurrentTaskMatching<WaitAtEnd.WaitNextStepOrSequence>(out task);
using (ImRaii.Disabled(flag))
bool flag2 = currentStep != null && !flag && currentStep.InteractionType == EInteractionType.Instruction && _questController.HasCurrentTaskMatching<WaitAtEnd.WaitNextStepOrSequence>(out task);
val = ImRaii.Disabled(flag);
try
{
using (ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.ParsedGreen, condition))
ColorDisposable val2 = ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.ParsedGreen, flag2);
try
{
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.ArrowCircleRight, "Skip"))
{
@ -681,6 +763,14 @@ internal sealed class ActiveQuestComponent
ImGui.SetTooltip("Skip the current step of the quest path.");
}
}
finally
{
((IDisposable)val2)?.Dispose();
}
}
finally
{
((IDisposable)val)?.Dispose();
}
if (_commandManager.Commands.ContainsKey("/questinfo"))
{
@ -739,7 +829,8 @@ internal sealed class ActiveQuestComponent
{
return;
}
using (ImRaii.PushId("SimulatedStep"))
IdDisposable val = ImRaii.PushId((ImU8String)"SimulatedStep", true);
try
{
ImU8String text2 = new ImU8String(9, 2);
text2.AppendLiteral("Step: ");
@ -776,6 +867,10 @@ internal sealed class ActiveQuestComponent
_questController.Stop("ClearSim");
}
}
finally
{
((IDisposable)val)?.Dispose();
}
}
private static string Shorten(string text)