Update quest battle metadata
authorLiza Carvelli <liza@carvel.li>
Sat, 22 Feb 2025 21:28:04 +0000 (22:28 +0100)
committerLiza Carvelli <liza@carvel.li>
Sat, 22 Feb 2025 21:28:04 +0000 (22:28 +0100)
43 files changed:
QuestPaths/2.x - A Realm Reborn/Class Quests/MNK/558_The Spirit Is Willing.json
QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/1054_How to Quit You.json
QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/147_Trial by Wind.json
QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/91_Trial by Wind.json
QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/92_Trial by Water.json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Gridania/129_Spirithold Broken.json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Gridania/161_Leia's Legacy.json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Gridania/445_Chasing Shadows.json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Gridania/447_To Guard a Guardian.json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Limsa/414_Victory in Peril.json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Limsa/469_Just Deserts.json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Limsa/543_Lurkers in the Grotto.json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Limsa/544_Feint and Strike.json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/343_Lord of the Inferno.json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/660_Into a Copper Hell.json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/680_The Company You Keep (Twin Adders).json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/681_The Company You Keep (Maelstrom).json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/682_The Company You Keep (Immortal Flames).json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Ul'dah/320_Way Down in the Hole.json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Ul'dah/336_Oh Captain, My Captain.json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Ul'dah/550_Underneath the Sultantree.json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Ul'dah/551_Duty, Honor, Country.json
QuestPaths/2.x - A Realm Reborn/MSQ-2/A2-East Shroud to South Shroud/724_Brotherly Love.json
QuestPaths/2.x - A Realm Reborn/MSQ-2/A3-South Shroud, Buscarron’s Druthers/3862_Nouveau Riche.json
QuestPaths/2.x - A Realm Reborn/MSQ-2/C9-Ultimate Weapon/4521_Operation Archon.json
QuestPaths/2.x - A Realm Reborn/MSQ-2/C9-Ultimate Weapon/4522_The Ultimate Weapon.json
QuestPaths/2.x - A Realm Reborn/MSQ-2/E1-2.1/1190_You Have Selected Regicide.json
QuestPaths/2.x - A Realm Reborn/MSQ-2/E3-2.3/1456_Guardian of Eorzea.json
QuestPaths/2.x - A Realm Reborn/MSQ-2/E4-2.4/88_The Reason Roaille.json
QuestPaths/3.x - Heavensward/Class Quests/WAR/601_And My Axe.json
QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1595_A Series of Unfortunate Events.json
QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1597_Divine Intervention.json
QuestPaths/3.x - Heavensward/MSQ/A2-Raubahn/1601_Keeping the Flame Alive.json
QuestPaths/3.x - Heavensward/MSQ/A3.1-Coerthas Western Highlands 2/1606_Sounding Out the Amphitheatre.json
QuestPaths/3.x - Heavensward/MSQ/A4-Ishgard/1639_Fire and Blood.json
QuestPaths/3.x - Heavensward/MSQ/A5-Sea of Clouds/1644_Familiar Faces.json
QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1657_An Illuminati Incident.json
QuestPaths/3.x - Heavensward/MSQ/A7-Azys Lla/1667_Close Encounters of the VIth Kind.json
QuestPaths/5.x - Shadowbringers/MSQ/G-5.1/3682_Vows of Virtue, Deeds of Cruelty.json
QuestPaths/5.x - Shadowbringers/MSQ/H-5.2/3765_A Sleep Disturbed.json
QuestPaths/quest-v1.json
Questionable/Validation/Validators/UniqueStartStopValidator.cs
Questionable/Windows/ConfigComponents/SinglePlayerDutyConfigComponent.cs

index f45e4e6..ebee0ed 100644 (file)
           "TerritoryId": 141,
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           },
           "Fly": true
         }
index 6abfe26..ce4bc55 100644 (file)
@@ -36,7 +36,8 @@
           "TerritoryId": 137,
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           },
           "AetheryteShortcut": "Eastern La Noscea - Wineport",
           "Fly": true
index b54256d..02e891b 100644 (file)
           "TerritoryId": 152,
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           },
           "Fly": true
         }
index c110a64..1348cd3 100644 (file)
           "TerritoryId": 152,
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           }
         }
       ]
index aebc913..7a06c84 100644 (file)
           "TerritoryId": 152,\r
           "InteractionType": "SinglePlayerDuty",\r
           "SinglePlayerDutyOptions": {\r
-            "Enabled": true\r
+            "Enabled": true,\r
+            "TestedBossModVersion": 292\r
           },\r
           "Fly": true\r
         }\r
index 3bc3081..bbe0471 100644 (file)
           "TerritoryId": 148,
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           }
         }
       ]
index 981c73c..8706b50 100644 (file)
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
             "Enabled": true,
+            "TestedBossModVersion": 292,
             "Notes": [
               "Healer NPC is only killed after the boss dies; all NPCs need to be killed for the duty to complete"
             ]
index 769e2f5..be848e3 100644 (file)
@@ -31,6 +31,7 @@
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
             "Enabled": false,
+            "TestedBossModVersion": 292,
             "Notes": [
               "AI doesn't automatically target newly spawning adds until after the boss died, and dies (tested on CNJ)"
             ]
index d8b6848..0c1c2e8 100644 (file)
@@ -79,6 +79,7 @@
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
             "Enabled": true,
+            "TestedBossModVersion": 292,
             "Notes": [
               "(Phase 1) Healer NPCs are only killed after the boss dies - allied NPCs will kill them eventually; all NPCs need to be killed for the duty to complete"
             ]
index 236b0f9..be519bb 100644 (file)
@@ -71,6 +71,7 @@
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
             "Enabled": false,
+            "TestedBossModVersion": 292,
             "Notes": [
               "(Phase 1, second enemy group) Stuck with enemy being out of sight -- but still able to attack you (tested on ACN)"
             ]
index 54199db..ffd07a9 100644 (file)
@@ -75,7 +75,8 @@
           "TerritoryId": 134,
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           }
         }
       ]
index 901d407..bb1e80d 100644 (file)
@@ -31,6 +31,7 @@
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
             "Enabled": false,
+            "TestedBossModVersion": 292,
             "Notes": [
               "AI doesn't automatically target newly spawning adds until after the boss died (requires healing luck on ACN)"
             ]
index 6ffa3d5..527a161 100644 (file)
@@ -60,6 +60,7 @@
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
             "Enabled": true,
+            "TestedBossModVersion": 292,
             "Notes": [
               "(Phase 1) Kills PGL NPCs and then the boss - allied NPCs will kill most other NPCs eventually; all NPCs need to be killed for the duty to complete"
             ]
index c236b60..ea9fd4b 100644 (file)
@@ -46,7 +46,8 @@
           "TerritoryId": 145,
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           }
         }
       ]
index 4141d32..ba1604a 100644 (file)
@@ -80,7 +80,8 @@
           "TerritoryId": 130,
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           },
           "AetheryteShortcut": "Ul'dah",
           "AethernetShortcut": [
index 310b20c..7afc73a 100644 (file)
@@ -90,7 +90,8 @@
           "TerritoryId": 152,
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           },
           "AetheryteShortcut": "East Shroud - Hawthorne Hut",
           "SkipConditions": {
index dae94b3..87ab602 100644 (file)
@@ -65,7 +65,8 @@
           "TerritoryId": 135,
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           },
           "AethernetShortcut": [
             "[Limsa Lominsa] The Aftcastle",
index 9bcf368..2696f1a 100644 (file)
@@ -60,7 +60,8 @@
           "TerritoryId": 140,
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           },
           "AetheryteShortcut": "Western Thanalan - Horizon"
         }
index a61bf97..29b7f66 100644 (file)
           "TerritoryId": 141,
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           }
         }
       ]
index 0b89ddc..d69bd0e 100644 (file)
@@ -39,7 +39,8 @@
           "TerritoryId": 140,
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           }
         }
       ]
index c211fef..91ccee4 100644 (file)
@@ -30,7 +30,8 @@
           "TerritoryId": 141,
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           }
         }
       ]
index 841ded1..3622d62 100644 (file)
@@ -67,6 +67,7 @@
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
             "Enabled": true,
+            "TestedBossModVersion": 292,
             "Notes": [
               "(Phase 1) Healer NPCs are only killed after the boss dies - allied NPCs will kill them eventually; all NPCs need to be killed for the duty to complete"
             ]
index 0a54ca7..0f85662 100644 (file)
@@ -66,7 +66,8 @@
           "TerritoryId": 152,
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           }
         }
       ]
index 3b41378..88e38d6 100644 (file)
@@ -86,6 +86,7 @@
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
             "Enabled": true,
+            "TestedBossModVersion": 292,
             "Notes": [
               "AI will kill initial adds before the boss, but not switch target whenever new enemies spawn; all NPCs need to be killed for the duty to complete"
             ]
index 2f33376..3af001c 100644 (file)
             "Z": -805.478
           },
           "TerritoryId": 140,
-          "InteractionType": "SinglePlayerDuty"
+          "InteractionType": "SinglePlayerDuty",
+          "SinglePlayerDutyOptions": {
+            "Enabled": true,
+            "TestedBossModVersion": 292
+          }
         }
       ]
     },
index ffa07f4..e9c6206 100644 (file)
           "TerritoryId": 1053,
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           }
         }
       ]
index bf6395c..18ccd2d 100644 (file)
     {
       "Sequence": 3,
       "Steps": [
+        {
+          "Position": {
+            "X": -561.9863,
+            "Y": 9.919454,
+            "Z": 66.29564
+          },
+          "TerritoryId": 152,
+          "InteractionType": "WalkTo"
+        },
         {
           "DataId": 1008276,
           "Position": {
index 4f6424b..977457f 100644 (file)
           "StopDistance": 1,
           "TerritoryId": 156,
           "InteractionType": "SinglePlayerDuty",
+          "SinglePlayerDutyOptions": {
+            "Enabled": true,
+            "TestedBossModVersion": 292
+          },
           "Fly": true
         }
       ]
index 49bf11b..ef6c354 100644 (file)
           },
           "TerritoryId": 147,
           "InteractionType": "SinglePlayerDuty",
+          "SinglePlayerDutyOptions": {
+            "Enabled": true,
+            "TestedBossModVersion": 292,
+            "Notes": [
+              "Will target Eline first (other NPCs later), and move to some -other- group of NPCs; only re-targets once they're at 1 HP (for Eline) or die",
+              "If the target isn't in melee range but other NPCs are, whether any AOEs are used for nearby enemies seems random"
+            ]
+          },
           "Fly": true,
           "AetheryteShortcut": "Northern Thanalan - Ceruleum Processing Plant"
         }
index b4f8094..14cf5ec 100644 (file)
@@ -97,7 +97,8 @@
           "InteractionType": "SinglePlayerDuty",
           "Fly": true,
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           }
         }
       ]
index a72b233..39e74a0 100644 (file)
@@ -60,7 +60,8 @@
           "TerritoryId": 401,
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           }
         }
       ]
index d1e8cd4..e03080c 100644 (file)
@@ -80,7 +80,8 @@
             "[Ishgard] The Tribunal"
           ],
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           }
         }
       ]
index 92b63e2..2ab1b1a 100644 (file)
@@ -30,7 +30,8 @@
           "TerritoryId": 145,
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           }
         }
       ]
index c7fd5ed..8cec31a 100644 (file)
@@ -80,7 +80,8 @@
           "InteractionType": "SinglePlayerDuty",
           "DisableNavmesh": true,
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           }
         }
       ]
index 15f79ef..66c6232 100644 (file)
@@ -76,7 +76,8 @@
           "TerritoryId": 418,
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           }
         }
       ]
index 30809e0..d47363b 100644 (file)
@@ -58,7 +58,8 @@
           "Emote": "lookout",
           "StopDistance": 0.25,
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           }
         }
       ]
index 0b5e5d4..799f242 100644 (file)
@@ -49,7 +49,8 @@
             "[Idyllshire] Epilogue Gate (Eastern Hinterlands)"
           ],
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           }
         }
       ]
index 18809a5..56776f2 100644 (file)
@@ -70,7 +70,8 @@
           "TerritoryId": 402,
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
-            "Enabled": true
+            "Enabled": true,
+            "TestedBossModVersion": 292
           }
         }
       ]
index 2465f30..cf937a6 100644 (file)
@@ -87,6 +87,7 @@
           "Comment": "Estinien vs. Arch Ultima",
           "SinglePlayerDutyOptions": {
             "Enabled": false,
+            "TestedBossModVersion": 292,
             "Notes": [
               "AI doesn't move automatically for the first boss",
               "AI doesn't move automatically for the dialogue with gaius on the bridge",
index 4fab775..0255c32 100644 (file)
@@ -48,6 +48,7 @@
           "InteractionType": "SinglePlayerDuty",
           "SinglePlayerDutyOptions": {
             "Enabled": false,
+            "TestedBossModVersion": 292,
             "Notes": [
               "Doesn't walk to the teleporter to finish the duty"
             ]
index 40204b3..ede8e6c 100644 (file)
                     "maximum": 1,
                     "description": "If a quest has multiple solo instances (which affects 5 quests total), indicates which one this is"
                   },
+                  "TestedBossModVersion": {
+                    "type": "number",
+                    "minimum": 292
+                  },
                   "$": {
                     "type": "string"
                   }
index b7e0881..3c9651f 100644 (file)
@@ -9,7 +9,7 @@ internal sealed class UniqueStartStopValidator : IQuestValidator
 {
     public IEnumerable<ValidationIssue> Validate(Quest quest)
     {
-        if (quest.Id is SatisfactionSupplyNpcId)
+        if (quest.Id is SatisfactionSupplyNpcId or AlliedSocietyDailyId)
             yield break;
 
         var questAccepts =
index c49a2c8..18f7012 100644 (file)
@@ -34,7 +34,9 @@ internal sealed class SinglePlayerDutyConfigComponent : ConfigComponent
         (EClassJob.BlackMage, "Magical Ranged Role Quests"),
     ];
 
+#if false
     private readonly string[] _retryDifficulties = ["Normal", "Easy", "Very Easy"];
+#endif
 
     private readonly TerritoryData _territoryData;
     private readonly QuestRegistry _questRegistry;
@@ -263,12 +265,19 @@ internal sealed class SinglePlayerDutyConfigComponent : ConfigComponent
 
         using (ImRaii.PushIndent(ImGui.GetFrameHeight() + ImGui.GetStyle().ItemInnerSpacing.X))
         {
-            ImGui.AlignTextToFramePadding();
-            ImGui.TextColored(ImGuiColors.DalamudRed,
-                "Work in Progress: For now, this will always use BossMod for combat.");
+            using (_ = ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudRed))
+            {
+                ImGui.TextUnformatted("Work in Progress:");
+                ImGui.BulletText("Will always use BossMod for combat (ignoring the configured combat module).");
+                ImGui.BulletText("Only a small subset of quest battles have been tested - most of which are in the MSQ.");
+                ImGui.BulletText("When retrying a failed battle, it will always start at 'Normal' difficulty.");
+                ImGui.BulletText("Please don't enable this option when using a BossMod fork (such as Reborn);\nwith the combat changes, it is unlikely to be compatible.");
+            }
 
+#if false
             using (ImRaii.Disabled(!runSoloInstancesWithBossMod))
             {
+                ImGui.Spacing();
                 int retryDifficulty = Configuration.SinglePlayerDuties.RetryDifficulty;
                 if (ImGui.Combo("Difficulty when retrying a quest battle", ref retryDifficulty, _retryDifficulties,
                         _retryDifficulties.Length))
@@ -277,6 +286,7 @@ internal sealed class SinglePlayerDutyConfigComponent : ConfigComponent
                     Save();
                 }
             }
+#endif
         }
 
         ImGui.Separator();