Fix 'A Relic Reborn' showing under 'Manderville Weapons'
authorLiza Carvelli <liza@carvel.li>
Mon, 31 Mar 2025 21:14:43 +0000 (23:14 +0200)
committerLiza Carvelli <liza@carvel.li>
Mon, 31 Mar 2025 21:14:43 +0000 (23:14 +0200)
Questionable/Data/QuestData.cs
Questionable/Model/JournalGenreOverrides.cs
Questionable/Model/QuestInfo.cs

index 1993c41..328bcfc 100644 (file)
@@ -42,6 +42,7 @@ internal sealed class QuestData
     {
         JournalGenreOverrides journalGenreOverrides = new()
         {
+            ARelicRebornQuests = dataManager.GetExcelSheet<Quest>().GetRow(65742).JournalGenre.RowId,
             RadzAtHanSideQuests = dataManager.GetExcelSheet<Quest>().GetRow(69805).JournalGenre.RowId,
             ThavnairSideQuests = dataManager.GetExcelSheet<Quest>().GetRow(70025).JournalGenre.RowId,
         };
@@ -228,15 +229,6 @@ internal sealed class QuestData
         // follow-up quests to picking a GC
         AddGcFollowUpQuests();
 
-        // update relic quests to be in a different journal category
-        ushort[] zodiacStartingQuests = [1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1579];
-        foreach (var questId in zodiacStartingQuests)
-        {
-            var quest = ((QuestInfo)_quests[new QuestId(questId)]);
-            quest.JournalGenre = 82;
-            quest.SortKey = 0;
-        }
-
         RedeemableItems = quests.Where(x => x is QuestInfo)
             .Cast<QuestInfo>()
             .SelectMany(x => x.ItemRewards)
index bafd728..86340b1 100644 (file)
@@ -2,6 +2,7 @@
 
 internal sealed class JournalGenreOverrides
 {
+    public required uint ARelicRebornQuests { get; init; }
     public required uint ThavnairSideQuests { get; init; }
     public required uint RadzAtHanSideQuests { get; init; }
 }
index a5f3de7..8f5a6eb 100644 (file)
@@ -54,13 +54,17 @@ internal sealed class QuestInfo : IQuestInfo
             .Where(x => x.Value != 0)
             .ToImmutableList();
         QuestLockJoin = (EQuestJoin)quest.QuestLockJoin;
-        JournalGenre = QuestId.Value switch
+
+        ValueTuple<uint?, ushort?> genreAndSortKey = QuestId.Value switch
         {
-            >= 4196 and <= 4209 => journalGenreOverrides.ThavnairSideQuests,
-            4173 => journalGenreOverrides.RadzAtHanSideQuests,
-            _ => quest.JournalGenre.ValueNullable?.RowId,
+            >= 1119 and <= 1127 or 1579 => (journalGenreOverrides.ARelicRebornQuests, 0),
+            >= 4196 and <= 4209 => (journalGenreOverrides.ThavnairSideQuests, null),
+            4173 => (journalGenreOverrides.RadzAtHanSideQuests, null),
+            _ => (quest.JournalGenre.ValueNullable?.RowId, null),
         };
-        SortKey = quest.SortKey;
+        JournalGenre = genreAndSortKey.Item1;
+        SortKey = genreAndSortKey.Item2 ?? quest.SortKey;
+
         IsMainScenarioQuest = quest.JournalGenre.ValueNullable?.Icon == 61412;
         CompletesInstantly = quest.TodoParams[0].ToDoCompleteSeq == 0;
         PreviousInstanceContent = quest.InstanceContent.Select(x => (ushort)x.RowId).Where(x => x != 0).ToList();