Daily quest updates
authorLiza Carvelli <liza@carvel.li>
Sat, 20 Jul 2024 17:09:51 +0000 (19:09 +0200)
committerLiza Carvelli <liza@carvel.li>
Sat, 20 Jul 2024 17:09:51 +0000 (19:09 +0200)
33 files changed:
QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Dailies/3689_Where There's Wool, There's a Way.json
QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Dailies/3691_Sharing Is Caring.json
QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Dailies/3691_Sharing Is Caring.md
QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Dailies/3692_The Aesthetician of Il Mheg.json
QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Dailies/3692_The Aesthetician of Il Mheg.md
QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Dailies/3694_I Dream of Shinies.json
QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Dailies/3694_I Dream of Shinies.md [new file with mode: 0644]
QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Dailies/3698_Porxine Perfection.json
QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Dailies/3698_Porxine Perfection.md [new file with mode: 0644]
QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Dailies/3703_Raiders of the Lost Pork.json
QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Dailies/3703_Raiders of the Lost Pork.md
QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Dailies/3704_Pebble without a Cause.json
QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Dailies/3705_There's Always a Stupider Fish.json
QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Dailies/3710_What the Phooka.json
QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Story/3684_Sustenance for the Soul.json [new file with mode: 0644]
QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Dailies/4551_Ridin' Flyers for Flyin' Riders.json
QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Dailies/4556_Anxious Rookie.json
QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Dailies/4556_Anxious Rookie.md [new file with mode: 0644]
QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Dailies/4558_Essential Eggredients.json
QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Dailies/4559_Darling Defender.json
QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Dailies/4560_Bloomin' Ocean.json
QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Dailies/4560_Bloomin' Ocean.md [new file with mode: 0644]
QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Dailies/4562_Waste Not, Want None of That.json
QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Dailies/4562_Waste Not, Want None of That.md [deleted file]
QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Story/4546_A Pachyderm's Promptitude.json [new file with mode: 0644]
QuestPaths/quest-v1.json
Questionable.Model/V1/Converter/ActionConverter.cs
Questionable.Model/V1/Converter/QuestWorkConfigConverter.cs [new file with mode: 0644]
Questionable.Model/V1/EAction.cs
Questionable.Model/V1/QuestStep.cs
Questionable.Model/V1/QuestWorkValue.cs [new file with mode: 0644]
Questionable/Controller/Steps/Shared/SkipCondition.cs
Questionable/Controller/Utils/QuestWorkUtils.cs

index b068dc265a9f27ec6248fb2f2e6fb0f022b1ad23..f05e70bc7fd0bda2d1e1b6a7ae09b0df29a5395e 100644 (file)
     {
       "Sequence": 1,
       "Steps": [
-
+        {
+          "Position": {
+            "X": -246.48618,
+            "Y": 54.663364,
+            "Z": 605.60834
+          },
+          "TerritoryId": 816,
+          "InteractionType": "WalkTo",
+          "Fly": true,
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            -128
+          ]
+        },
+        {
+          "DataId": 2010856,
+          "Position": {
+            "X": -271.29016,
+            "Y": 52.96399,
+            "Z": 605.9204
+          },
+          "TerritoryId": 816,
+          "InteractionType": "Interact",
+          "DisableNavmesh": true,
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            128
+          ]
+        },
+        {
+          "DataId": 2010858,
+          "Position": {
+            "X": -250.62946,
+            "Y": 50.94983,
+            "Z": 597.7416
+          },
+          "TerritoryId": 816,
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            32
+          ]
+        },
+        {
+          "Position": {
+            "X": -261.1694,
+            "Y": 50.977943,
+            "Z": 589.3572
+          },
+          "TerritoryId": 816,
+          "InteractionType": "WalkTo",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            -64
+          ]
+        },
+        {
+          "DataId": 2010857,
+          "Position": {
+            "X": -261.1277,
+            "Y": 50.94983,
+            "Z": 585.2903
+          },
+          "StopDistance": 4.5,
+          "TerritoryId": 816,
+          "InteractionType": "Interact",
+          "DisableNavmesh": true,
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            64
+          ]
+        }
       ]
     },
     {
index 0d300612edc2310e43d7f217641bc5ad805ca7bb..2207c88b44b57ca96690693028398e575f5ea4eb 100644 (file)
@@ -1,7 +1,6 @@
 {
   "$schema": "https://carvel.li/questionable/quest-1.0",
   "Author": "liza",
-  "Disabled": true,
   "QuestSequence": [
     {
       "Sequence": 0,
     {
       "Sequence": 1,
       "Steps": [
-        {
-          "Position": {
-            "X": -466.72015,
-            "Y": 44.63006,
-            "Z": -310.0618
-          },
-          "TerritoryId": 816,
-          "InteractionType": "WalkTo",
-          "Fly": true
-        },
         {
           "DataId": 1032140,
           "Position": {
           "ChatMessage": {
             "Key": "TEXT_BANPIX103_03691_SAYTODO_000_030"
           },
-          "SkipIf": [
-            "NotTargetable"
+          "$": "QW: 0 0 0 1 0 0",
+          "Fly": true,
+          "RequiredQuestVariables": [
+            null,
+            null,
+            null,
+            [
+              1
+            ],
+            null,
+            null
           ]
         },
         {
           "ChatMessage": {
             "Key": "TEXT_BANPIX103_03691_SAYTODO_000_030"
           },
-          "SkipIf": [
-            "NotTargetable"
+          "$": "QW: 0 0 0 3 0 0",
+          "Fly": true,
+          "RequiredQuestVariables": [
+            null,
+            null,
+            null,
+            [
+              3
+            ],
+            null,
+            null
           ]
         },
         {
             "Y": 50.10258,
             "Z": -328.26733
           },
+          "$": "QW: 0 0 0 2 0 0",
           "TerritoryId": 816,
           "InteractionType": "Say",
           "ChatMessage": {
             "Key": "TEXT_BANPIX103_03691_SAYTODO_000_030"
           },
-          "SkipIf": [
-            "NotTargetable"
+          "Fly": true,
+          "RequiredQuestVariables": [
+            null,
+            null,
+            null,
+            [
+              2
+            ],
+            null,
+            null
           ]
         }
       ]
index 0f2ea2b5dd861d305f5b168687b3321fbfa70c00..b265144d9ce21082afc194c1642d8b75ca137070 100644 (file)
@@ -3,9 +3,7 @@
 QuestWork:
 ```
 0 0 0 x 0 0
+      1     → 1032140
       2     → 1032142
       3     → 1032141
-
-unknown
-      ?     → 1032140
 ```
index 9429e2109388c7bbe285163cc15fa04be54ca21d..0935c8f80264301e09a882ab2e435637be963ff2 100644 (file)
@@ -1,7 +1,6 @@
 {
   "$schema": "https://carvel.li/questionable/quest-1.0",
   "Author": "liza",
-  "Disabled": true,
   "QuestSequence": [
     {
       "Sequence": 0,
     },
     {
       "Sequence": 1,
-      "Comment": "TODO Has multiple possible targets, unsure if QW works",
       "Steps": [
         {
           "Position": {
-            "X": -342.05676,
-            "Y": 37.5036,
-            "Z": 434.53723
+            "X": -344.05838,
+            "Y": 45.450672,
+            "Z": 456.10266
           },
           "TerritoryId": 816,
           "InteractionType": "WalkTo",
-          "Fly": true
+          "Fly": true,
+          "SkipIf": [
+            "FlyingLocked"
+          ]
         },
         {
           "DataId": 2010860,
           },
           "TerritoryId": 816,
           "InteractionType": "Interact",
-          "SkipIf": [
-            "NotTargetable"
+          "RequiredQuestVariables": [
+            null,
+            [
+              {
+                "Low": 1
+              },
+              {
+                "Low": 2
+              },
+              {
+                "Low": 3
+              }
+            ],
+            null,
+            null,
+            null,
+            null
           ]
         },
         {
           },
           "TerritoryId": 816,
           "InteractionType": "Interact",
-          "SkipIf": [
-            "NotTargetable"
+          "RequiredQuestVariables": [
+            null,
+            [
+              {
+                "Low": 3
+              },
+              {
+                "Low": 4
+              },
+              {
+                "Low": 5
+              }
+            ],
+            null,
+            null,
+            null,
+            null
           ]
         },
         {
           },
           "TerritoryId": 816,
           "InteractionType": "Interact",
-          "SkipIf": [
-            "NotTargetable"
+          "RequiredQuestVariables": [
+            null,
+            [
+              {
+                "Low": 1
+              },
+              {
+                "Low": 4
+              },
+              {
+                "Low": 6
+              }
+            ],
+            null,
+            null,
+            null,
+            null
           ],
           "IgnoreDistanceToObject": true
         },
           },
           "TerritoryId": 816,
           "InteractionType": "Interact",
-          "SkipIf": [
-            "NotTargetable"
+          "RequiredQuestVariables": [
+            null,
+            [
+              {
+                "Low": 2
+              },
+              {
+                "Low": 5
+              },
+              {
+                "Low": 6
+              }
+            ],
+            null,
+            null,
+            null,
+            null
           ],
           "IgnoreDistanceToObject": true
         }
index b3776681a24dc038033c37fe61f15cfef18eb8d6..5192727eb4fd5b085192f02704e86313220c7de0 100644 (file)
@@ -2,7 +2,11 @@
 
 QuestWork:
 ```
-0 x 0 0 0 0
-  4         → 2010861, 2010863
-  5         → 2010861, 2010862
+0 x 0 0 0 0                                   | QW after first
+  1         → 2010860                 2010863 | 1 18 0 0 0 128
+  2         → 2010860         2010862         | 1 18 0 0 0 128
+  3         → 2010860 2010861                 | 1 19 0 0 0 128
+  4         →         2010861         2010863 | 
+  5         →         2010861 2010862         |
+  6         →                 2010862 2010863 | 1 22 0 0 0 128
 ```
index bd3cf85cd51233af1caf3371f78841e7406ac547..5e8bb8f1aa916d2918cab2e8f9dedd418cca77b2 100644 (file)
           "Fly": true,
           "DisableNavmesh": true
         },
+        {
+          "DataId": 2010865,
+          "Position": {
+            "X": -335.59174,
+            "Y": -53.75763,
+            "Z": -277.9126
+          },
+          "TerritoryId": 816,
+          "InteractionType": "Interact",
+          "Fly": true,
+          "RequiredQuestVariables": [
+            null,
+            null,
+            null,
+            [1],
+            null,
+            null
+          ]
+        },
         {
           "DataId": 2010866,
           "Position": {
           },
           "TerritoryId": 816,
           "InteractionType": "Interact",
-          "Fly": true
+          "Fly": true,
+          "RequiredQuestVariables": [
+            null,
+            null,
+            null,
+            [2],
+            null,
+            null
+          ]
+        },
+        {
+          "DataId": 2010867,
+          "Position": {
+            "X": -351.64417,
+            "Y": -53.635498,
+            "Z": -295.73517
+          },
+          "TerritoryId": 816,
+          "InteractionType": "Interact",
+          "Fly": true,
+          "RequiredQuestVariables": [
+            null,
+            null,
+            null,
+            [3],
+            null,
+            null
+          ]
         }
       ]
     },
diff --git a/QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Dailies/3694_I Dream of Shinies.md b/QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Dailies/3694_I Dream of Shinies.md
new file mode 100644 (file)
index 0000000..fd4810d
--- /dev/null
@@ -0,0 +1,10 @@
+## I Dream of Shinies
+
+QuestWork:
+
+```
+0 0 0 x 0 0
+      1     → 2010865
+      2     → 2010866
+      3     → 2010867
+```
index b068dc265a9f27ec6248fb2f2e6fb0f022b1ad23..76b562bf52861e280ae974f58bfb809666b7b724 100644 (file)
@@ -1,7 +1,6 @@
 {
   "$schema": "https://carvel.li/questionable/quest-1.0",
   "Author": "liza",
-  "Disabled": true,
   "QuestSequence": [
     {
       "Sequence": 0,
     {
       "Sequence": 1,
       "Steps": [
-
+        {
+          "DataId": 1031811,
+          "Position": {
+            "X": -442.46588,
+            "Y": 70.686165,
+            "Z": 573.69336
+          },
+          "TerritoryId": 816,
+          "InteractionType": "Interact"
+        }
+      ]
+    },
+    {
+      "Sequence": 2,
+      "Steps": [
+        {
+          "DataId": 2010891,
+          "Position": {
+            "X": -852.0485,
+            "Y": 37.67456,
+            "Z": 298.11548
+          },
+          "TerritoryId": 816,
+          "InteractionType": "Action",
+          "Action": "Siphon Snout",
+          "Fly": true,
+          "RequiredQuestVariables": [
+            null,
+            null,
+            [
+              {
+                "High": 1
+              },
+              {
+                "High": 2
+              }
+            ],
+            null,
+            null,
+            null
+          ]
+        },
+        {
+          "DataId": 2010892,
+          "Position": {
+            "X": -774.44116,
+            "Y": 54.520386,
+            "Z": 102.61682
+          },
+          "TerritoryId": 816,
+          "InteractionType": "Action",
+          "Action": "Siphon Snout",
+          "Fly": true,
+          "RequiredQuestVariables": [
+            null,
+            null,
+            [
+              {
+                "High": 1
+              },
+              {
+                "High": 3
+              }
+            ],
+            null,
+            null,
+            null
+          ]
+        },
+        {
+          "DataId": 2010893,
+          "Position": {
+            "X": -802.30414,
+            "Y": 27.115234,
+            "Z": -108.44586
+          },
+          "TerritoryId": 816,
+          "InteractionType": "Action",
+          "Action": "Siphon Snout",
+          "Fly": true,
+          "RequiredQuestVariables": [
+            null,
+            null,
+            [
+              {
+                "High": 2
+              },
+              {
+                "High": 3
+              }
+            ],
+            null,
+            null,
+            null
+          ]
+        }
       ]
     },
     {
           },
           "TerritoryId": 816,
           "InteractionType": "CompleteQuest",
+          "AetheryteShortcut": "Il Mheg - Lydha Lran",
           "Fly": true
         }
       ]
diff --git a/QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Dailies/3698_Porxine Perfection.md b/QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Dailies/3698_Porxine Perfection.md
new file mode 100644 (file)
index 0000000..28af2d6
--- /dev/null
@@ -0,0 +1,9 @@
+## Sharing is Caring
+
+QuestWork:
+```
+0 0 xx 0 0 0
+    16       → 2010891 2010892
+    32       → 2010891         2010893 | unverified
+    48       →         2010892 2010893
+```
index f8e2bd26cb46de118af49c53e903490656b35b32..493b63bf2e07ea663710fa7ceb406c458be826b5 100644 (file)
@@ -1,7 +1,6 @@
 {
   "$schema": "https://carvel.li/questionable/quest-1.0",
   "Author": "liza",
-  "Disabled": true,
   "QuestSequence": [
     {
       "Sequence": 0,
           "TerritoryId": 816,
           "InteractionType": "Interact",
           "Fly": true,
-          "SkipIf": [
-            "NotTargetable"
-          ],
-          "$": "Only if QW: 0 48 0 0 0 0"
+          "RequiredQuestVariables": [
+            null,
+            [
+              48
+            ],
+            null,
+            null,
+            null,
+            null
+          ]
         },
         {
           "DataId": 1032168,
           "TerritoryId": 816,
           "InteractionType": "Interact",
           "Fly": true,
-          "SkipIf": [
-            "NotTargetable"
-          ],
-          "$": "Only if QW: 0 32 0 0 0 0"
+          "RequiredQuestVariables": [
+            null,
+            [
+              32
+            ],
+            null,
+            null,
+            null,
+            null
+          ]
         },
         {
           "DataId": 1032167,
           "TerritoryId": 816,
           "InteractionType": "Interact",
           "Fly": true,
-          "SkipIf": [
-            "NotTargetable"
+          "RequiredQuestVariables": [
+            null,
+            [
+              16
+            ],
+            null,
+            null,
+            null,
+            null
           ]
         }
       ]
index 493ab110194cad2c4d62c517ae41d95f033741f2..fd1f8a873fcdf798f23a4507d8b41f4d6ea3e78b 100644 (file)
@@ -3,7 +3,7 @@
 QuestWork:
 ```
 0 x  0 0 0 0
-  32         → 1032168
+  16         → Tall Fuath (1032167)
+  32         → Trembling Scavenger (1032168)
   48         → Elegant Eulmoran (1032169)
-  ??         → 1032167
 ```
index 5c1ca655be4f96c6758539c6edb2f03c4a10f6b5..2a3aad7432d82cd7cc77dcda601d36feed211b71 100644 (file)
@@ -31,7 +31,7 @@
           "TerritoryId": 816,
           "InteractionType": "Interact",
           "Fly": true,
-          "$": "Only if QW: 0 0 ??? 0 0 0",
+          "$": "Only if QW: 0 0 3 0 0 0",
           "SkipIf": ["NotTargetable"]
         },
         {
@@ -43,7 +43,7 @@
           },
           "TerritoryId": 816,
           "InteractionType": "Interact",
-          "$": "Only if QW: 0 0 1 0 0 0 → if complete, 0 16 0 0 0 0",
+          "$": "Only if QW: 0 0 1 0 0 0",
           "SkipIf": ["NotTargetable"]
         }
       ]
index a71e2c27910809170a7f9e5d9098a2a92a44b0c3..1ca9189d2c1a8a5161f8c109099e7b59b8d7fc6c 100644 (file)
           "TerritoryId": 816,
           "InteractionType": "Interact",
           "DisableNavmesh": true,
-          "$": "QW: 0 2 0 0 0 0"
+          "$": "QW: 0 2 0 0 0 0",
+          "SkipIf": [
+            "NotTargetable"
+          ]
+        },
+        {
+          "DataId": 2010904,
+          "Position": {
+            "X": -164.93481,
+            "Y": -50.919373,
+            "Z": 71.15283
+          },
+          "TerritoryId": 816,
+          "InteractionType": "Interact",
+          "$": "QW: 0 3 0 0 0 0",
+          "SkipIf": [
+            "NotTargetable"
+          ]
+        },
+        {
+          "DataId": 2010910,
+          "Position": {
+            "X": -189.86804,
+            "Y": -66.941345,
+            "Z": 13.046387
+          },
+          "TerritoryId": 816,
+          "InteractionType": "Interact",
+          "DisableNavmesh": true,
+          "$": "QW: 0 1 0 0 0 0",
+          "SkipIf": [
+            "NotTargetable"
+          ]
         }
       ]
     },
index b068dc265a9f27ec6248fb2f2e6fb0f022b1ad23..d9cd1c2122d0cda11c11ede0abcefeb80a10bfcf 100644 (file)
@@ -1,7 +1,6 @@
 {
   "$schema": "https://carvel.li/questionable/quest-1.0",
   "Author": "liza",
-  "Disabled": true,
   "QuestSequence": [
     {
       "Sequence": 0,
     {
       "Sequence": 1,
       "Steps": [
-
+        {
+          "DataId": 1032204,
+          "Position": {
+            "X": -81.864685,
+            "Y": 88.12085,
+            "Z": -175.06683
+          },
+          "TerritoryId": 816,
+          "InteractionType": "UseItem",
+          "ItemId": 2002945,
+          "$": "QW 0 32 0 0 0 0",
+          "Fly": true
+        }
+      ]
+    },
+    {
+      "Sequence": 2,
+      "Steps": [
+        {
+          "DataId": 1032205,
+          "Position": {
+            "X": -114.21387,
+            "Y": 112.903015,
+            "Z": -350.57605
+          },
+          "TerritoryId": 816,
+          "InteractionType": "UseItem",
+          "ItemId": 2002945,
+          "$": "QW 0 17 0 0 0 0",
+          "Fly": true
+        }
       ]
     },
     {
           },
           "TerritoryId": 816,
           "InteractionType": "CompleteQuest",
-          "Fly": true
+          "AetheryteShortcut": "Il Mheg - Lydha Lran",
+          "Fly": true,
+          "DialogueChoices": [
+            {
+              "Type": "List",
+              "Prompt": "TEXT_BANPIX122_03710_Q1_000_000",
+              "Answer": "TEXT_BANPIX122_03710_A1_000_002"
+            }
+          ]
         }
       ]
     }
diff --git a/QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Story/3684_Sustenance for the Soul.json b/QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Story/3684_Sustenance for the Soul.json
new file mode 100644 (file)
index 0000000..9621a63
--- /dev/null
@@ -0,0 +1,236 @@
+{
+  "$schema": "https://carvel.li/questionable/quest-1.0",
+  "Author": "liza",
+  "QuestSequence": [
+    {
+      "Sequence": 0,
+      "Steps": [
+        {
+          "DataId": 1031806,
+          "Position": {
+            "X": -464.59143,
+            "Y": 71.76874,
+            "Z": 573.8766
+          },
+          "TerritoryId": 816,
+          "InteractionType": "AcceptQuest"
+        }
+      ]
+    },
+    {
+      "Sequence": 1,
+      "Steps": [
+        {
+          "DataId": 1031891,
+          "Position": {
+            "X": -461.53967,
+            "Y": 72.51729,
+            "Z": 586.48047
+          },
+          "TerritoryId": 816,
+          "InteractionType": "Interact",
+          "TargetTerritoryId": 890
+        },
+        {
+          "DataId": 1031853,
+          "Position": {
+            "X": 60.471436,
+            "Y": -1.6051313,
+            "Z": 53.543823
+          },
+          "TerritoryId": 890,
+          "InteractionType": "Interact"
+        }
+      ]
+    },
+    {
+      "Sequence": 2,
+      "Steps": [
+        {
+          "DataId": 1031852,
+          "Position": {
+            "X": 59.03711,
+            "Y": -1.7997739,
+            "Z": 56.565186
+          },
+          "TerritoryId": 890,
+          "InteractionType": "Interact"
+        }
+      ]
+    },
+    {
+      "Sequence": 3,
+      "Steps": [
+        {
+          "DataId": 1031855,
+          "Position": {
+            "X": 74.784424,
+            "Y": 98.85967,
+            "Z": -820.88965
+          },
+          "TerritoryId": 816,
+          "InteractionType": "Interact",
+          "AetheryteShortcut": "Il Mheg - Pia Enni",
+          "Fly": true
+        }
+      ]
+    },
+    {
+      "Sequence": 4,
+      "Steps": [
+        {
+          "DataId": 1031858,
+          "Position": {
+            "X": -211.35272,
+            "Y": 16.63259,
+            "Z": 427.32886
+          },
+          "TerritoryId": 814,
+          "InteractionType": "Interact",
+          "AetheryteShortcut": "Kholusia - Wright",
+          "Fly": true
+        }
+      ]
+    },
+    {
+      "Sequence": 5,
+      "Steps": [
+        {
+          "DataId": 1031860,
+          "Position": {
+            "X": -217.45636,
+            "Y": 21.481304,
+            "Z": 356.9237
+          },
+          "TerritoryId": 814,
+          "InteractionType": "Interact",
+          "Fly": true
+        }
+      ]
+    },
+    {
+      "Sequence": 6,
+      "Steps": [
+        {
+          "Position": {
+            "X": -137.7369,
+            "Y": 11.939666,
+            "Z": 336.4078
+          },
+          "TerritoryId": 814,
+          "InteractionType": "Combat",
+          "EnemySpawnType": "AutoOnEnterArea",
+          "KillEnemyDataIds": [
+            11438
+          ]
+        }
+      ]
+    },
+    {
+      "Sequence": 7,
+      "Steps": [
+        {
+          "DataId": 1031861,
+          "Position": {
+            "X": -149.85895,
+            "Y": 13.084818,
+            "Z": 341.1764
+          },
+          "TerritoryId": 814,
+          "InteractionType": "Interact"
+        }
+      ]
+    },
+    {
+      "Sequence": 8,
+      "Steps": [
+        {
+          "DataId": 1031860,
+          "Position": {
+            "X": -217.45636,
+            "Y": 21.481304,
+            "Z": 356.9237
+          },
+          "TerritoryId": 814,
+          "InteractionType": "Interact",
+          "Fly": true
+        }
+      ]
+    },
+    {
+      "Sequence": 9,
+      "Steps": [
+        {
+          "DataId": 1031891,
+          "Position": {
+            "X": -461.53967,
+            "Y": 72.51729,
+            "Z": 586.48047
+          },
+          "TerritoryId": 816,
+          "InteractionType": "Interact",
+          "AetheryteShortcut": "Il Mheg - Lydha Lran",
+          "Fly": true,
+          "TargetTerritoryId": 890
+        },
+        {
+          "DataId": 1031863,
+          "Position": {
+            "X": 60.379883,
+            "Y": 31.0353,
+            "Z": -110.76526
+          },
+          "TerritoryId": 890,
+          "InteractionType": "Interact"
+        }
+      ]
+    },
+    {
+      "Sequence": 10,
+      "Steps": [
+        {
+          "Position": {
+            "X": 0,
+            "Y": 0,
+            "Z": 0
+          },
+          "TerritoryId": 1,
+          "InteractionType": "WalkTo",
+          "Comment": "Filler"
+        }
+      ]
+    },
+    {
+      "Sequence": 11,
+      "Steps": [
+        {
+          "DataId": 1032350,
+          "Position": {
+            "X": 63.797974,
+            "Y": 30.266184,
+            "Z": -103.4715
+          },
+          "TerritoryId": 891,
+          "InteractionType": "Interact"
+        }
+      ]
+    },
+    {
+      "Sequence": 255,
+      "Steps": [
+        {
+          "DataId": 1031806,
+          "Position": {
+            "X": -464.59143,
+            "Y": 71.76874,
+            "Z": 573.8766
+          },
+          "TerritoryId": 816,
+          "InteractionType": "CompleteQuest",
+          "AetheryteShortcut": "Il Mheg - Lydha Lran",
+          "Fly": true
+        }
+      ]
+    }
+  ]
+}
index 2fcc3eba2bf8ee80d1125601805ce21192def1ff..dae22d7bf547bc63fcf441c59158b612a1c704eb 100644 (file)
@@ -1,7 +1,6 @@
 {
   "$schema": "https://carvel.li/questionable/quest-1.0",
   "Author": "liza",
-  "Disabled": true,
   "QuestSequence": [
     {
       "Sequence": 0,
     {
       "Sequence": 1,
       "Steps": [
-
+        {
+          "DataId": 1042363,
+          "Position": {
+            "X": 227.58826,
+            "Y": 4.933288,
+            "Z": 644.4037
+          },
+          "TerritoryId": 957,
+          "InteractionType": "Interact",
+          "AetheryteShortcut": "Thavnair - Yedlihmad",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            128
+          ]
+        },
+        {
+          "DataId": 1042364,
+          "Position": {
+            "X": 198.93188,
+            "Y": 1.7699993,
+            "Z": 707.1183
+          },
+          "TerritoryId": 957,
+          "InteractionType": "Interact",
+          "Fly": true,
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            64
+          ]
+        },
+        {
+          "DataId": 1042365,
+          "Position": {
+            "X": 177.66077,
+            "Y": 5.331657,
+            "Z": 651.27026
+          },
+          "TerritoryId": 957,
+          "InteractionType": "Interact",
+          "Fly": true,
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            32
+          ]
+        }
       ]
     },
     {
index 40ffbca8cf9d7e92a6485f82d332208e8bbe71d9..8b6a3af2a14bbf709c6eab97fd97b8197f7ac10b 100644 (file)
     },
     {
       "Sequence": 1,
-      "Comment": "There are more NPC/dialogue choices",
       "Steps": [
+        {
+          "DataId": 1042368,
+          "Position": {
+            "X": -485.771,
+            "Y": 39.62969,
+            "Z": 114.213745
+          },
+          "TerritoryId": 957,
+          "InteractionType": "Interact",
+          "AetheryteShortcut": "Thavnair - Great Work",
+          "Fly": true,
+          "DialogueChoices": [
+            {
+              "Type": "List",
+              "Prompt": "TEXT_BANARK106_04556_Q1_000_000",
+              "Answer": "TEXT_BANARK106_04556_A1_000_001"
+            }
+          ],
+          "RequiredQuestVariables": [
+            null,
+            null,
+            [
+              48
+            ],
+            null,
+            null,
+            null
+          ]
+        },
+        {
+          "DataId": 1042369,
+          "Position": {
+            "X": -561.2726,
+            "Y": 11.802609,
+            "Z": 128.95398
+          },
+          "TerritoryId": 957,
+          "InteractionType": "Interact",
+          "Fly": true,
+          "DialogueChoices": [
+            {
+              "Type": "List",
+              "Prompt": "TEXT_BANARK106_04556_Q2_000_000",
+              "Answer": "TEXT_BANARK106_04556_A2_000_001"
+            }
+          ],
+          "RequiredQuestVariables": [
+            null,
+            null,
+            [
+              16
+            ],
+            null,
+            null,
+            null
+          ]
+        },
         {
           "DataId": 1042370,
           "Position": {
               "Answer": "TEXT_BANARK106_04556_A3_000_001"
             }
           ],
-          "SkipIf": [
-            "NotTargetable"
+          "RequiredQuestVariables": [
+            null,
+            null,
+            [
+              32
+            ],
+            null,
+            null,
+            null
           ]
         }
       ]
diff --git a/QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Dailies/4556_Anxious Rookie.md b/QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Dailies/4556_Anxious Rookie.md
new file mode 100644 (file)
index 0000000..bd2d48c
--- /dev/null
@@ -0,0 +1,8 @@
+## Bloomin' Ocean
+
+```
+0 0 ?? 0 0 0
+    16       → 1042369
+    32       → 1042370
+    48       → 1042368
+```
index 92f8f295391848f8607117c528daa744ca0b4a4a..f13e087b64e6712401d299b9dfa9778b87845bb9 100644 (file)
           },
           "TerritoryId": 957,
           "InteractionType": "Interact",
-          "AetheryteShortcut": "Thavnair - Palaka's Stand",
+          "AetheryteShortcut": "Radz-at-Han",
+          "AethernetShortcut": [
+            "[Radz-at-Han] Aetheryte Plaza",
+            "[Radz-at-Han] The Gate of First Sight (Thavnair)"
+          ],
           "Fly": true
         }
       ]
index 44068d32a788348042b1502826c6d5ed22472cba..94f73ef0e327e4e23edfe1a8316cc4dbc70179ca 100644 (file)
@@ -32,7 +32,9 @@
           "EnemySpawnType": "AutoOnEnterArea",
           "KillEnemyDataIds": [
             14676
-          ]
+          ],
+          "Fly": true,
+          "AetheryteShortcut": "Thavnair - Great Work"
         }
       ]
     },
index 2fcc3eba2bf8ee80d1125601805ce21192def1ff..b5c32eef1dcca79682f0d24704b229bd4c57e1e7 100644 (file)
@@ -1,7 +1,6 @@
 {
   "$schema": "https://carvel.li/questionable/quest-1.0",
   "Author": "liza",
-  "Disabled": true,
   "QuestSequence": [
     {
       "Sequence": 0,
     {
       "Sequence": 1,
       "Steps": [
-
+        {
+          "Position": {
+            "X": -611.4443,
+            "Y": 4.030203,
+            "Z": 520.76807
+          },
+          "TerritoryId": 957,
+          "InteractionType": "WalkTo",
+          "Fly": true
+        },
+        {
+          "DataId": 2012880,
+          "Position": {
+            "X": -669.4896,
+            "Y": -36.42328,
+            "Z": 522.6367
+          },
+          "TerritoryId": 957,
+          "InteractionType": "Interact",
+          "Fly": true,
+          "DisableNavmesh": true,
+          "RequiredQuestVariables": [
+            null,
+            [
+              {
+                "Low": 1
+              },
+              {
+                "Low": 4
+              }
+            ],
+            null,
+            null,
+            null,
+            null
+          ]
+        },
+        {
+          "DataId": 2012881,
+          "Position": {
+            "X": -652.4605,
+            "Y": -31.784546,
+            "Z": 554.46704
+          },
+          "TerritoryId": 957,
+          "InteractionType": "Interact",
+          "Fly": true,
+          "DisableNavmesh": true,
+          "RequiredQuestVariables": [
+            null,
+            [
+              {
+                "Low": 2
+              },
+              {
+                "Low": 3
+              }
+            ],
+            null,
+            null,
+            null,
+            null
+          ]
+        },
+        {
+          "DataId": 2012882,
+          "Position": {
+            "X": -729.9458,
+            "Y": -38.864807,
+            "Z": 600.5187
+          },
+          "TerritoryId": 957,
+          "InteractionType": "Interact",
+          "Fly": true,
+          "RequiredQuestVariables": [
+            null,
+            [
+              {
+                "Low": 1
+              },
+              {
+                "Low": 3
+              }
+            ],
+            null,
+            null,
+            null,
+            null
+          ]
+        },
+        {
+          "DataId": 2012883,
+          "Position": {
+            "X": -746.0593,
+            "Y": -38.92578,
+            "Z": 597.0397
+          },
+          "TerritoryId": 957,
+          "InteractionType": "Interact",
+          "Fly": true,
+          "RequiredQuestVariables": [
+            null,
+            [
+              {
+                "Low": 2
+              },
+              {
+                "Low": 4
+              }
+            ],
+            null,
+            null,
+            null,
+            null
+          ]
+        }
       ]
     },
     {
           },
           "TerritoryId": 957,
           "InteractionType": "CompleteQuest",
+          "AetheryteShortcut": "Thavnair - Yedlihmad",
           "Fly": true
         }
       ]
diff --git a/QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Dailies/4560_Bloomin' Ocean.md b/QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Dailies/4560_Bloomin' Ocean.md
new file mode 100644 (file)
index 0000000..b1971f6
--- /dev/null
@@ -0,0 +1,9 @@
+## Bloomin' Ocean
+
+```
+0 ? 0 0 0 0
+  1         → 2012880         2012882
+  2         →         2012881         2012883
+  3         →         2012881 2012882
+  4         → 2012880                 2012883
+```
index 20ee2a3d3288c0fb8e96444eebb37487ee8320a7..391185dc01821eb7f09dfa4a9bdd2d2d1c0b56ee 100644 (file)
@@ -1,7 +1,6 @@
 {
   "$schema": "https://carvel.li/questionable/quest-1.0",
   "Author": "liza",
-  "Disabled": true,
   "QuestSequence": [
     {
       "Sequence": 0,
diff --git a/QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Dailies/4562_Waste Not, Want None of That.md b/QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Dailies/4562_Waste Not, Want None of That.md
deleted file mode 100644 (file)
index 0568195..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-## Seedy Affair
-
-First NPC:
-```
-0 ?? 0 0 0 0
-  32          → 1042390
-```
-
-Second NPC:
-```
-1 16 0 0 0 64 → 1042389
-```
diff --git a/QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Story/4546_A Pachyderm's Promptitude.json b/QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Story/4546_A Pachyderm's Promptitude.json
new file mode 100644 (file)
index 0000000..1c16188
--- /dev/null
@@ -0,0 +1,214 @@
+{
+  "$schema": "https://carvel.li/questionable/quest-1.0",
+  "Author": "liza",
+  "QuestSequence": [
+    {
+      "Sequence": 0,
+      "Steps": [
+        {
+          "DataId": 1042300,
+          "Position": {
+            "X": -76.82922,
+            "Y": 39.986862,
+            "Z": 309.98706
+          },
+          "TerritoryId": 957,
+          "InteractionType": "AcceptQuest"
+        }
+      ]
+    },
+    {
+      "Sequence": 1,
+      "Steps": [
+        {
+          "DataId": 2012919,
+          "Position": {
+            "X": -464.22522,
+            "Y": 5.3864136,
+            "Z": 22.445984
+          },
+          "TerritoryId": 957,
+          "InteractionType": "Interact",
+          "AetheryteShortcut": "Thavnair - Great Work"
+        }
+      ]
+    },
+    {
+      "Sequence": 2,
+      "Steps": [
+        {
+          "Position": {
+            "X": -363.06543,
+            "Y": 55.300343,
+            "Z": -108.32965
+          },
+          "StopDistance": 0.25,
+          "TerritoryId": 957,
+          "InteractionType": "Combat",
+          "EnemySpawnType": "AutoOnEnterArea",
+          "KillEnemyDataIds": [
+            14681
+          ],
+          "Fly": true
+        }
+      ]
+    },
+    {
+      "Sequence": 3,
+      "Steps": [
+        {
+          "DataId": 1042318,
+          "Position": {
+            "X": -360.49445,
+            "Y": 54.680054,
+            "Z": -102.9527
+          },
+          "StopDistance": 7,
+          "TerritoryId": 957,
+          "InteractionType": "Interact"
+        }
+      ]
+    },
+    {
+      "Sequence": 4,
+      "Steps": [
+        {
+          "DataId": 1042321,
+          "Position": {
+            "X": -522.9725,
+            "Y": 11.61713,
+            "Z": 88.97534
+          },
+          "TerritoryId": 957,
+          "InteractionType": "Interact",
+          "AetheryteShortcut": "Thavnair - Great Work"
+        }
+      ]
+    },
+    {
+      "Sequence": 5,
+      "Steps": [
+        {
+          "DataId": 1042322,
+          "Position": {
+            "X": -523.36926,
+            "Y": 10.9199,
+            "Z": 85.34363
+          },
+          "TerritoryId": 957,
+          "InteractionType": "Interact"
+        }
+      ]
+    },
+    {
+      "Sequence": 6,
+      "Steps": [
+        {
+          "DataId": 1042324,
+          "Position": {
+            "X": -558.0072,
+            "Y": 11.802552,
+            "Z": 114.03064
+          },
+          "TerritoryId": 957,
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            64
+          ]
+        },
+        {
+          "DataId": 1042325,
+          "Position": {
+            "X": -552.75806,
+            "Y": 1.120665,
+            "Z": 23.392029
+          },
+          "StopDistance": 0.5,
+          "TerritoryId": 957,
+          "InteractionType": "Interact",
+          "Fly": true,
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            32
+          ]
+        },
+        {
+          "DataId": 1042323,
+          "Position": {
+            "X": -480.33875,
+            "Y": 1.9096844,
+            "Z": -13.53479
+          },
+          "TerritoryId": 957,
+          "InteractionType": "Interact",
+          "Fly": true,
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            128
+          ]
+        }
+      ]
+    },
+    {
+      "Sequence": 7,
+      "Steps": [
+        {
+          "DataId": 1042321,
+          "Position": {
+            "X": -522.9725,
+            "Y": 11.61713,
+            "Z": 88.97534
+          },
+          "TerritoryId": 957,
+          "InteractionType": "Interact"
+        }
+      ]
+    },
+    {
+      "Sequence": 8,
+      "Steps": [
+        {
+          "DataId": 1041397,
+          "Position": {
+            "X": 402.30408,
+            "Y": 3.0506973,
+            "Z": -212.35986
+          },
+          "TerritoryId": 957,
+          "InteractionType": "Interact",
+          "AetheryteShortcut": "Thavnair - Palaka's Stand"
+        }
+      ]
+    },
+    {
+      "Sequence": 255,
+      "Steps": [
+        {
+          "DataId": 1042300,
+          "Position": {
+            "X": -76.82922,
+            "Y": 39.986862,
+            "Z": 309.98706
+          },
+          "TerritoryId": 957,
+          "InteractionType": "CompleteQuest",
+          "AetheryteShortcut": "Thavnair - Yedlihmad",
+          "Fly": true
+        }
+      ]
+    }
+  ]
+}
index 124677a92b18865cd1facc45b3aeb6bf7bd3e4d4..da4f6ab0f4727cd1e875a7525d2b581a8b2cfcb4 100644 (file)
                 "CompletionQuestVariablesFlags": {
                   "$ref": "#/$defs/CompletionFlags"
                 },
+                "RequiredQuestVariables": {
+                  "type": "array",
+                  "description": "Certain quests (primarily beast tribes/allied societies) have a RNG element to spawning targets, and the step should be skipped in its entirety if none of the sets below match",
+                  "minItems": 6,
+                  "maxItems": 6,
+                  "items": {
+                    "type": ["array", "null"],
+                    "items": {
+                      "type": [
+                        "number",
+                        "object"
+                      ],
+                      "properties": {
+                        "High": {
+                          "type": [
+                            "number",
+                            "null"
+                          ],
+                          "minimum": 0,
+                          "maximum": 15
+                        },
+                        "Low": {
+                          "type": [
+                            "number",
+                            "null"
+                          ],
+                          "minimum": 0,
+                          "maximum": 15
+                        }
+                      },
+                      "minimum": 0,
+                      "maximum": 255
+                    }
+                  }
+                },
                 "DelaySecondsAtStart": {
                   "description": "Time to wait before starting",
                   "type": [
                         "description": "The action to use",
                         "enum": [
                           "Esuna",
+                          "Siphon Snout",
                           "Red Gulal",
                           "Yellow Gulal",
                           "Blue Gulal"
index 1624c18f5646bc3ce6cec134179d1b83d4311f14..216a255197c01a1c6cd35c2b5bf60cd06bea326f 100644 (file)
@@ -7,6 +7,7 @@ public sealed class ActionConverter() : EnumConverter<EAction>(Values)
     private static readonly Dictionary<EAction, string> Values = new()
     {
         { EAction.Esuna, "Esuna" },
+        { EAction.SiphonSnout, "Siphon Snout" },
         { EAction.RedGulal, "Red Gulal" },
         { EAction.YellowGulal, "Yellow Gulal" },
         { EAction.BlueGulal, "Blue Gulal" },
diff --git a/Questionable.Model/V1/Converter/QuestWorkConfigConverter.cs b/Questionable.Model/V1/Converter/QuestWorkConfigConverter.cs
new file mode 100644 (file)
index 0000000..9f6b0e7
--- /dev/null
@@ -0,0 +1,58 @@
+using System;
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
+namespace Questionable.Model.V1.Converter;
+
+public sealed class QuestWorkConfigConverter : JsonConverter<QuestWorkValue>
+{
+    public override QuestWorkValue Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+    {
+        if (reader.TokenType == JsonTokenType.Number)
+            return new QuestWorkValue(reader.GetByte());
+
+        if (reader.TokenType != JsonTokenType.StartObject)
+            throw new JsonException();
+
+        byte? high = null, low = null;
+        while (reader.Read())
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.PropertyName:
+                    string? propertyName = reader.GetString();
+                    if (propertyName == null || !reader.Read())
+                        throw new JsonException();
+
+                    switch (propertyName)
+                    {
+                        case nameof(QuestWorkValue.High):
+                            high = reader.GetByte();
+                            break;
+
+                        case nameof(QuestWorkValue.Low):
+                            low = reader.GetByte();
+                            break;
+
+                        default:
+                            throw new JsonException();
+                    }
+
+                    break;
+
+                case JsonTokenType.EndObject:
+                    return new QuestWorkValue(high, low);
+
+                default:
+                    throw new JsonException();
+            }
+        }
+
+        throw new JsonException();
+    }
+
+    public override void Write(Utf8JsonWriter writer, QuestWorkValue value, JsonSerializerOptions options)
+    {
+        throw new NotImplementedException();
+    }
+}
index c9bb2493346f3eaa8a7ea63b6e535aa30131b998..9b266f072f06bfd21b9effd076ef04a00cf21788 100644 (file)
@@ -7,6 +7,7 @@ namespace Questionable.Model.V1;
 public enum EAction
 {
     Esuna = 7568,
+    SiphonSnout = 18187,
     RedGulal = 29382,
     YellowGulal = 29383,
     BlueGulal = 29384,
@@ -16,6 +17,6 @@ public static class EActionExtensions
 {
     public static bool RequiresMount(this EAction action)
     {
-        return action is EAction.RedGulal or EAction.YellowGulal or EAction.BlueGulal;
+        return action is EAction.SiphonSnout or EAction.RedGulal or EAction.YellowGulal or EAction.BlueGulal;
     }
 }
index 52793959634349b42b99cfc7ebb124ed9d45e274..337f146ae923e715d827e936bc2461b9c500f9b2 100644 (file)
@@ -64,6 +64,7 @@ public sealed class QuestStep
     public uint? ContentFinderConditionId { get; set; }
 
     public IList<ESkipCondition> SkipIf { get; set; } = new List<ESkipCondition>();
+    public List<List<QuestWorkValue>?> RequiredQuestVariables { get; set; } = new();
     public IList<short?> CompletionQuestVariablesFlags { get; set; } = new List<short?>();
     public IList<DialogueChoice> DialogueChoices { get; set; } = new List<DialogueChoice>();
     public IList<uint> PointMenuChoices { get; set; } = new List<uint>();
diff --git a/Questionable.Model/V1/QuestWorkValue.cs b/Questionable.Model/V1/QuestWorkValue.cs
new file mode 100644 (file)
index 0000000..7321b2b
--- /dev/null
@@ -0,0 +1,16 @@
+using System.Text.Json.Serialization;
+using Questionable.Model.V1.Converter;
+
+namespace Questionable.Model.V1;
+
+[JsonConverter(typeof(QuestWorkConfigConverter))]
+public sealed class QuestWorkValue(byte? high, byte? low)
+{
+    public QuestWorkValue(byte value)
+        : this((byte)(value >> 4), (byte)(value & 0xF))
+    {
+    }
+
+    public byte? High { get; set; } = high;
+    public byte? Low { get; set; } = low;
+}
index edd2b6127c522f2086f5a82b3ac5ed76faf4946b..b509c9c6736095e24c996d556fa8e8b89139f20d 100644 (file)
@@ -26,7 +26,9 @@ internal static class SkipCondition
 
             var relevantConditions =
                 step.SkipIf.Where(x => x != ESkipCondition.AetheryteShortcutIfInSameTerritory).ToList();
-            if (relevantConditions.Count == 0 && step.CompletionQuestVariablesFlags.Count == 0)
+            if (relevantConditions.Count == 0 &&
+                step.CompletionQuestVariablesFlags.Count == 0 &&
+                step.RequiredQuestVariables.Count == 0)
                 return null;
 
             return serviceProvider.GetRequiredService<CheckTask>()
@@ -100,7 +102,8 @@ internal static class SkipCondition
                 InventoryManager* inventoryManager = InventoryManager.Instance();
                 if (inventoryManager->GetInventoryItemCount(Step.ItemId.Value) == 0)
                 {
-                    logger.LogInformation("Skipping step, no item with itemId {ItemId} in inventory", Step.ItemId.Value);
+                    logger.LogInformation("Skipping step, no item with itemId {ItemId} in inventory",
+                        Step.ItemId.Value);
                     return true;
                 }
             }
@@ -124,11 +127,20 @@ internal static class SkipCondition
             }
 
             QuestWork? questWork = gameFunctions.GetQuestEx(QuestId);
-            if (questWork != null &&
-                QuestWorkUtils.MatchesQuestWork(Step.CompletionQuestVariablesFlags, questWork.Value, true))
+            if (questWork != null)
             {
-                logger.LogInformation("Skipping step, as quest variables match");
-                return true;
+                if (QuestWorkUtils.MatchesQuestWork(Step.CompletionQuestVariablesFlags, questWork.Value, true))
+                {
+                    logger.LogInformation("Skipping step, as quest variables match");
+                    return true;
+                }
+
+                if (!QuestWorkUtils.MatchesRequiredQuestWorkConfig(Step.RequiredQuestVariables, questWork.Value,
+                        logger))
+                {
+                    logger.LogInformation("Skipping step, as required variables do not match");
+                    return true;
+                }
             }
 
             return false;
index 03ddced0f63134fd8174e722b14576a60657b823..360007ed34995028cbad956bae54b1ae332fbc6a 100644 (file)
@@ -2,6 +2,9 @@
 using System.Collections.Generic;
 using System.Linq;
 using FFXIVClientStructs.FFXIV.Application.Network.WorkDefinitions;
+using Microsoft.Extensions.Logging;
+using Questionable.Controller.Steps.Shared;
+using Questionable.Model.V1;
 
 namespace Questionable.Controller.Utils;
 
@@ -45,4 +48,42 @@ internal static class QuestWorkUtils
 
         return true;
     }
+
+    public static bool MatchesRequiredQuestWorkConfig(List<List<QuestWorkValue>?> requiredQuestVariables,
+        QuestWork questWork, ILogger<SkipCondition.CheckTask> logger)
+    {
+        if (requiredQuestVariables.Count != 6 || requiredQuestVariables.All(x => x == null || x.Count == 0))
+        {
+            logger.LogInformation("No RQW defined");
+            return true;
+        }
+
+        for (int i = 0; i < 6; ++i)
+        {
+            if (requiredQuestVariables[i] == null)
+            {
+                logger.LogInformation("No RQW {Index} defined", i);
+                continue;
+            }
+
+            byte high = (byte)(questWork.Variables[i] >> 4);
+            byte low = (byte)(questWork.Variables[i] & 0xF);
+
+            foreach (QuestWorkValue expectedValue in requiredQuestVariables[i]!)
+            {
+                logger.LogInformation("H: {ExpectedHigh} - {ActualHigh}, L: {ExpectedLow} - {ActualLow}",
+                    expectedValue.High, high, expectedValue.Low, low);
+                if (expectedValue.High != null && expectedValue.High != high)
+                    continue;
+
+                if (expectedValue.Low != null && expectedValue.Low != low)
+                    continue;
+
+                return true;
+            }
+        }
+
+        logger.LogInformation("Should execute step");
+        return false;
+    }
 }