Override journal genre for some Radz-at-Han/Thavnair side quests
authorLiza Carvelli <liza@carvel.li>
Sun, 5 Jan 2025 13:23:38 +0000 (14:23 +0100)
committerLiza Carvelli <liza@carvel.li>
Sun, 5 Jan 2025 13:23:38 +0000 (14:23 +0100)
Questionable/Data/QuestData.cs
Questionable/Model/JournalGenreOverrides.cs [new file with mode: 0644]
Questionable/Model/QuestInfo.cs

index 7a3229a76a4208c3e5c40bff6846a5d41c2227ad..652258633e4658bdc1789c99bc83457d57162660 100644 (file)
@@ -40,6 +40,12 @@ internal sealed class QuestData
 
     public QuestData(IDataManager dataManager)
     {
+        JournalGenreOverrides journalGenreOverrides = new()
+        {
+            RadzAtHanSideQuests = dataManager.GetExcelSheet<Quest>().GetRow(69805).JournalGenre.RowId,
+            ThavnairSideQuests = dataManager.GetExcelSheet<Quest>().GetRow(70025).JournalGenre.RowId,
+        };
+
         Dictionary<uint, uint> questChapters =
             dataManager.GetExcelSheet<QuestChapter>()
                 .Where(x => x.RowId > 0 && x.Quest.RowId > 0)
@@ -59,7 +65,7 @@ internal sealed class QuestData
                 .Where(x => x.RowId > 0)
                 .Where(x => x.IssuerLocation.RowId > 0)
                 .Select(x => new QuestInfo(x, questChapters.GetValueOrDefault(x.RowId),
-                    startingCities.GetValueOrDefault(x.RowId))),
+                    startingCities.GetValueOrDefault(x.RowId), journalGenreOverrides)),
             ..dataManager.GetExcelSheet<SatisfactionNpc>()
                 .Where(x => x is { RowId: > 0, Npc.RowId: > 0 })
                 .Select(x => new SatisfactionSupplyInfo(x)),
diff --git a/Questionable/Model/JournalGenreOverrides.cs b/Questionable/Model/JournalGenreOverrides.cs
new file mode 100644 (file)
index 0000000..bafd728
--- /dev/null
@@ -0,0 +1,7 @@
+namespace Questionable.Model;
+
+internal sealed class JournalGenreOverrides
+{
+    public required uint ThavnairSideQuests { get; init; }
+    public required uint RadzAtHanSideQuests { get; init; }
+}
index 06c6dc34b99f7be976f1d35ce010b5adff4468f6..751470b55939fb2885cdde2a78083d201ced4001 100644 (file)
@@ -12,7 +12,7 @@ namespace Questionable.Model;
 
 internal sealed class QuestInfo : IQuestInfo
 {
-    public QuestInfo(ExcelQuest quest, uint newGamePlusChapter, byte startingCity)
+    public QuestInfo(ExcelQuest quest, uint newGamePlusChapter, byte startingCity, JournalGenreOverrides journalGenreOverrides)
     {
         QuestId = new QuestId((ushort)(quest.RowId & 0xFFFF));
 
@@ -53,7 +53,12 @@ internal sealed class QuestInfo : IQuestInfo
             .Where(x => x.Value != 0)
             .ToImmutableList();
         QuestLockJoin = (EQuestJoin)quest.QuestLockJoin;
-        JournalGenre = quest.JournalGenre.ValueNullable?.RowId;
+        JournalGenre = QuestId.Value switch
+        {
+            >= 4196 and <= 4209 => journalGenreOverrides.ThavnairSideQuests,
+            4173 => journalGenreOverrides.RadzAtHanSideQuests,
+            _ => quest.JournalGenre.ValueNullable?.RowId,
+        };
         SortKey = quest.SortKey;
         IsMainScenarioQuest = quest.JournalGenre.ValueNullable?.JournalCategory.ValueNullable?.JournalSection
             .ValueNullable?.RowId is 0 or 1;