Add Kurenai unlock quests
authorLiza Carvelli <liza@carvel.li>
Mon, 19 Aug 2024 20:57:12 +0000 (22:57 +0200)
committerLiza Carvelli <liza@carvel.li>
Mon, 19 Aug 2024 21:12:43 +0000 (23:12 +0200)
QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2704_Fathoms Below.json [new file with mode: 0644]
QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2705_A Part of Your World.json [new file with mode: 0644]
QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2706_The Elixir of Life.json [new file with mode: 0644]
QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2707_The Two Princesses of Sui-no-Sato.json [new file with mode: 0644]
QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/3139_The Seaweed Is Always Greener.json [new file with mode: 0644]
QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/S3_Kurenai.json
Questionable/Controller/Steps/Shared/AetheryteShortcut.cs
Questionable/Controller/Steps/Shared/WaitAtEnd.cs

diff --git a/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2704_Fathoms Below.json b/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2704_Fathoms Below.json
new file mode 100644 (file)
index 0000000..ef57761
--- /dev/null
@@ -0,0 +1,75 @@
+{
+  "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+  "Author": "liza",
+  "QuestSequence": [
+    {
+      "Sequence": 0,
+      "Steps": [
+        {
+          "Position": {
+            "X": 322.1539,
+            "Y": -121.22571,
+            "Z": -314.2446
+          },
+          "TerritoryId": 613,
+          "InteractionType": "WalkTo",
+          "AetheryteShortcut": "Ruby Sea - Tamamizu"
+        },
+        {
+          "Position": {
+            "X": 22.288645,
+            "Y": -196.2301,
+            "Z": -155.5739
+          },
+          "TerritoryId": 613,
+          "InteractionType": "WalkTo",
+          "$": "Sui-no-Sato, NE outside"
+        },
+        {
+          "DataId": 1023280,
+          "Position": {
+            "X": -62.790894,
+            "Y": -198.96509,
+            "Z": -64.34735
+          },
+          "TerritoryId": 613,
+          "InteractionType": "AcceptQuest",
+          "Fly": true
+        }
+      ]
+    },
+    {
+      "Sequence": 1,
+      "Steps": [
+        {
+          "DataId": 1023281,
+          "Position": {
+            "X": -9.597961,
+            "Y": -196.98103,
+            "Z": -82.383545
+          },
+          "TerritoryId": 613,
+          "InteractionType": "Interact",
+          "Fly": true
+        }
+      ]
+    },
+    {
+      "Sequence": 255,
+      "Steps": [
+        {
+          "DataId": 1023280,
+          "Position": {
+            "X": -62.790894,
+            "Y": -198.96509,
+            "Z": -64.34735
+          },
+          "TerritoryId": 613,
+          "InteractionType": "CompleteQuest",
+          "Fly": true,
+          "NextQuestId": 2705
+        }
+      ]
+    }
+  ]
+}
diff --git a/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2705_A Part of Your World.json b/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2705_A Part of Your World.json
new file mode 100644 (file)
index 0000000..834a2cc
--- /dev/null
@@ -0,0 +1,105 @@
+{
+  "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+  "Author": "liza",
+  "QuestSequence": [
+    {
+      "Sequence": 0,
+      "Steps": [
+        {
+          "DataId": 1023280,
+          "Position": {
+            "X": -62.790894,
+            "Y": -198.96509,
+            "Z": -64.34735
+          },
+          "TerritoryId": 613,
+          "InteractionType": "AcceptQuest"
+        }
+      ]
+    },
+    {
+      "Sequence": 1,
+      "Steps": [
+        {
+          "DataId": 1023282,
+          "Position": {
+            "X": -32.791687,
+            "Y": 0.5718597,
+            "Z": -554.7723
+          },
+          "TerritoryId": 613,
+          "InteractionType": "Interact",
+          "AetheryteShortcut": "Ruby Sea - Onokoro",
+          "Fly": true,
+          "DialogueChoices": [
+            {
+              "Type": "List",
+              "Prompt": "TEXT_STMBDZ309_02705_Q1_100_091",
+              "Answer": "TEXT_STMBDZ309_02705_A1_101_091"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "Sequence": 2,
+      "Steps": [
+        {
+          "DataId": 1023285,
+          "Position": {
+            "X": 119.493286,
+            "Y": 5.006782,
+            "Z": -862.6078
+          },
+          "TerritoryId": 613,
+          "InteractionType": "Interact",
+          "Fly": true,
+          "DialogueChoices": [
+            {
+              "Type": "List",
+              "Prompt": "TEXT_STMBDZ309_02705_Q2_100_151",
+              "Answer": "TEXT_STMBDZ309_02705_A2_101_151"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "Sequence": 255,
+      "Steps": [
+        {
+          "Position": {
+            "X": 322.1539,
+            "Y": -121.22571,
+            "Z": -314.2446
+          },
+          "TerritoryId": 613,
+          "InteractionType": "WalkTo",
+          "AetheryteShortcut": "Ruby Sea - Tamamizu"
+        },
+        {
+          "Position": {
+            "X": 22.288645,
+            "Y": -196.2301,
+            "Z": -155.5739
+          },
+          "TerritoryId": 613,
+          "InteractionType": "WalkTo",
+          "$": "Sui-no-Sato, NE outside"
+        },
+        {
+          "DataId": 1023280,
+          "Position": {
+            "X": -62.790894,
+            "Y": -198.96509,
+            "Z": -64.34735
+          },
+          "TerritoryId": 613,
+          "InteractionType": "CompleteQuest",
+          "Fly": true,
+          "NextQuestId": 2706
+        }
+      ]
+    }
+  ]
+}
diff --git a/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2706_The Elixir of Life.json b/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2706_The Elixir of Life.json
new file mode 100644 (file)
index 0000000..fed711a
--- /dev/null
@@ -0,0 +1,183 @@
+{
+  "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+  "Author": "liza",
+  "QuestSequence": [
+    {
+      "Sequence": 0,
+      "Steps": [
+        {
+          "DataId": 1023280,
+          "Position": {
+            "X": -62.790894,
+            "Y": -198.96509,
+            "Z": -64.34735
+          },
+          "TerritoryId": 613,
+          "InteractionType": "AcceptQuest"
+        }
+      ]
+    },
+    {
+      "Sequence": 1,
+      "Steps": [
+        {
+          "DataId": 1023287,
+          "Position": {
+            "X": 422.11023,
+            "Y": -98.96063,
+            "Z": -223.22424
+          },
+          "TerritoryId": 613,
+          "InteractionType": "Interact",
+          "AetheryteShortcut": "Ruby Sea - Tamamizu",
+          "Fly": true,
+          "DialogueChoices": [
+            {
+              "Type": "List",
+              "Prompt": "TEXT_STMBDZ310_02706_Q1_000_100",
+              "Answer": "TEXT_STMBDZ310_02706_A1_000_102"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "Sequence": 2,
+      "Steps": [
+        {
+          "DataId": 1023288,
+          "Position": {
+            "X": 350.515,
+            "Y": -120.581055,
+            "Z": -316.76202
+          },
+          "TerritoryId": 613,
+          "InteractionType": "Interact",
+          "Fly": true,
+          "DialogueChoices": [
+            {
+              "Type": "List",
+              "Prompt": "TEXT_STMBDZ310_02706_Q2_000_160",
+              "Answer": "TEXT_STMBDZ310_02706_A2_000_161"
+            },
+            {
+              "Type": "List",
+              "Prompt": "TEXT_STMBDZ310_02706_Q3_000_200",
+              "Answer": "TEXT_STMBDZ310_02706_A3_000_201"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "Sequence": 3,
+      "Steps": [
+        {
+          "Position": {
+            "X": 322.1539,
+            "Y": -121.22571,
+            "Z": -314.2446
+          },
+          "TerritoryId": 613,
+          "InteractionType": "WalkTo",
+          "Mount": true
+        },
+        {
+          "Position": {
+            "X": 198.4342,
+            "Y": -162.28119,
+            "Z": 115.91883
+          },
+          "TerritoryId": 613,
+          "InteractionType": "WalkTo",
+          "$": "Exile, outside",
+          "Fly": true
+        },
+        {
+          "DataId": 1023290,
+          "Position": {
+            "X": 222.33911,
+            "Y": -165.19557,
+            "Z": 137.89575
+          },
+          "TerritoryId": 613,
+          "InteractionType": "Interact"
+        }
+      ]
+    },
+    {
+      "Sequence": 4,
+      "Steps": [
+        {
+          "DataId": 2008809,
+          "Position": {
+            "X": 163.43933,
+            "Y": -172.01501,
+            "Z": 262.0736
+          },
+          "TerritoryId": 613,
+          "InteractionType": "Combat",
+          "EnemySpawnType": "AfterItemUse",
+          "ItemId": 2002332,
+          "KillEnemyDataIds": [
+            7824
+          ],
+          "Fly": true
+        }
+      ]
+    },
+    {
+      "Sequence": 5,
+      "Steps": [
+        {
+          "DataId": 1023290,
+          "Position": {
+            "X": 222.33911,
+            "Y": -165.19557,
+            "Z": 137.89575
+          },
+          "TerritoryId": 613,
+          "InteractionType": "Interact",
+          "Fly": true
+        }
+      ]
+    },
+    {
+      "Sequence": 255,
+      "Steps": [
+        {
+          "Position": {
+            "X": 200.64441,
+            "Y": -165.55836,
+            "Z": 116.97804
+          },
+          "TerritoryId": 613,
+          "InteractionType": "WalkTo",
+          "Mount": true
+        },
+        {
+          "Position": {
+            "X": -96.41638,
+            "Y": -199.01863,
+            "Z": -68.85027
+          },
+          "TerritoryId": 613,
+          "InteractionType": "WalkTo",
+          "$": "Sui-no-Sato, SW outside",
+          "Fly": true
+        },
+        {
+          "DataId": 1023280,
+          "Position": {
+            "X": -62.790894,
+            "Y": -198.96509,
+            "Z": -64.34735
+          },
+          "TerritoryId": 613,
+          "InteractionType": "CompleteQuest",
+          "NextQuestId": 2707
+        }
+      ]
+    }
+  ]
+}
diff --git a/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2707_The Two Princesses of Sui-no-Sato.json b/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/2707_The Two Princesses of Sui-no-Sato.json
new file mode 100644 (file)
index 0000000..6bad83b
--- /dev/null
@@ -0,0 +1,61 @@
+{
+  "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+  "Author": "liza",
+  "QuestSequence": [
+    {
+      "Sequence": 0,
+      "Steps": [
+        {
+          "DataId": 1023280,
+          "Position": {
+            "X": -62.790894,
+            "Y": -198.96509,
+            "Z": -64.34735
+          },
+          "TerritoryId": 613,
+          "InteractionType": "AcceptQuest"
+        }
+      ]
+    },
+    {
+      "Sequence": 1,
+      "Steps": [
+        {
+          "DataId": 1023281,
+          "Position": {
+            "X": -9.597961,
+            "Y": -196.98103,
+            "Z": -82.383545
+          },
+          "TerritoryId": 613,
+          "InteractionType": "Interact",
+          "Fly": true
+        }
+      ]
+    },
+    {
+      "Sequence": 255,
+      "Steps": [
+        {
+          "DataId": 1023291,
+          "Position": {
+            "X": 8.46875,
+            "Y": -198.34206,
+            "Z": -157.15265
+          },
+          "TerritoryId": 613,
+          "InteractionType": "CompleteQuest",
+          "Fly": true,
+          "DialogueChoices": [
+            {
+              "Type": "List",
+              "Prompt": "TEXT_STMBDZ311_02707_Q1_000_160",
+              "Answer": "TEXT_STMBDZ311_02707_A1_000_162"
+            }
+          ],
+          "NextQuestId": 3139
+        }
+      ]
+    }
+  ]
+}
diff --git a/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/3139_The Seaweed Is Always Greener.json b/QuestPaths/4.x - Stormblood/Custom Deliveries/Kurenai/3139_The Seaweed Is Always Greener.json
new file mode 100644 (file)
index 0000000..19389c5
--- /dev/null
@@ -0,0 +1,42 @@
+{
+  "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+  "Author": "liza",
+  "QuestSequence": [
+    {
+      "Sequence": 0,
+      "Steps": [
+        {
+          "DataId": 1025965,
+          "Position": {
+            "X": -52.0791,
+            "Y": -2.9,
+            "Z": -64.4389
+          },
+          "TerritoryId": 628,
+          "InteractionType": "AcceptQuest",
+          "AetheryteShortcut": "Kugane",
+          "AethernetShortcut": [
+            "[Kugane] Aetheryte Plaza",
+            "[Kugane] Shiokaze Hostelry"
+          ]
+        }
+      ]
+    },
+    {
+      "Sequence": 255,
+      "Steps": [
+        {
+          "DataId": 1025878,
+          "Position": {
+            "X": 343.984,
+            "Y": -120.32947,
+            "Z": -306.0197
+          },
+          "TerritoryId": 613,
+          "InteractionType": "CompleteQuest",
+          "AetheryteShortcut": "Ruby Sea - Tamamizu"
+        }
+      ]
+    }
+  ]
+}
index 3fef30bea71c37e36291f0b15322164200e274f9..93d55255e444d5677ea7f8e13e68fafb6531333e 100644 (file)
@@ -5,6 +5,17 @@
     {
       "Sequence": 0,
       "Steps": [
+        {
+          "Position": {
+            "X": 344.12048,
+            "Y": -120.3312,
+            "Z": -303.85397
+          },
+          "TerritoryId": 613,
+          "InteractionType": "WalkTo",
+          "AetheryteShortcut": "Ruby Sea - Tamamizu",
+          "RequiredGatheredItems": []
+        },
         {
           "DataId": 1025878,
           "Position": {
@@ -14,8 +25,6 @@
           },
           "TerritoryId": 613,
           "InteractionType": "Interact",
-          "RequiredGatheredItems": [],
-          "AetheryteShortcut": "Ruby Sea - Tamamizu",
           "DialogueChoices": [
             {
               "Type": "List",
index e48aaec63bef660bc7931253b780846bde9c51e5..52bb26b69462ec653092dff4e29c6309519f8418 100644 (file)
@@ -19,16 +19,18 @@ internal static class AetheryteShortcut
 {
     internal sealed class Factory(
         IServiceProvider serviceProvider,
-        AetheryteData aetheryteData) : SimpleTaskFactory
+        AetheryteData aetheryteData) : ITaskFactory
     {
-        public override ITask? CreateTask(Quest quest, QuestSequence sequence, QuestStep step)
+        public IEnumerable<ITask> CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step)
         {
             if (step.AetheryteShortcut == null)
-                return null;
+                yield break;
 
-            return serviceProvider.GetRequiredService<UseAetheryteShortcut>()
+            yield return serviceProvider.GetRequiredService<UseAetheryteShortcut>()
                 .With(step, quest.Id, step.AetheryteShortcut.Value,
                     aetheryteData.TerritoryIds[step.AetheryteShortcut.Value]);
+            yield return serviceProvider.GetRequiredService<WaitAtEnd.WaitDelay>()
+                .With(TimeSpan.FromSeconds(0.5));
         }
     }
 
index a1d29c4232e555edfab6375306d436837ba9a00e..faa36e004a38fe6154e3810181caec81d573c188 100644 (file)
@@ -144,6 +144,12 @@ internal static class WaitAtEnd
 
     internal sealed class WaitDelay() : AbstractDelayedTask(TimeSpan.FromSeconds(1))
     {
+        public ITask With(TimeSpan delay)
+        {
+            Delay = delay;
+            return this;
+        }
+
         protected override bool StartInternal() => true;
 
         public override string ToString() => $"Wait(seconds: {Delay.TotalSeconds})";