diff --git a/Dalamud/Game/UnlockState/RecipeData.cs b/Dalamud/Game/UnlockState/RecipeData.cs index 81c0b838b..4c89c2f3e 100644 --- a/Dalamud/Game/UnlockState/RecipeData.cs +++ b/Dalamud/Game/UnlockState/RecipeData.cs @@ -5,6 +5,7 @@ using CommunityToolkit.HighPerformance; using Dalamud.Data; using Dalamud.Game.Gui; +using FFXIVClientStructs.FFXIV.Client.Game; using FFXIVClientStructs.FFXIV.Client.Game.UI; using FFXIVClientStructs.Interop; @@ -33,6 +34,7 @@ internal unsafe class RecipeData : IInternalDisposableService private readonly ushort[,] noteBookDivisionIds; private byte[]? cachedUnlockedSecretRecipeBooks; private byte[]? cachedUnlockLinks; + private byte[]? cachedCompletedQuests; /// /// Initializes a new instance of the class. @@ -105,6 +107,7 @@ internal unsafe class RecipeData : IInternalDisposableService { this.cachedUnlockedSecretRecipeBooks = null; this.cachedUnlockLinks = null; + this.cachedCompletedQuests = null; } private void Update() @@ -252,6 +255,12 @@ internal unsafe class RecipeData : IInternalDisposableService changed |= true; } + if (this.cachedCompletedQuests == null || !QuestManager.Instance()->CompletedQuestsBitmask.SequenceEqual(this.cachedCompletedQuests)) + { + this.cachedCompletedQuests = QuestManager.Instance()->CompletedQuestsBitmask.ToArray(); + changed |= true; + } + return changed; } }