Rough Hildibrand pass
authorLiza Carvelli <liza@carvel.li>
Wed, 11 Sep 2024 21:17:39 +0000 (23:17 +0200)
committerLiza Carvelli <liza@carvel.li>
Wed, 11 Sep 2024 21:17:46 +0000 (23:17 +0200)
28 files changed:
QuestPathGenerator/RoslynElements/DialogueChoiceExtensions.cs
QuestPaths/2.x - A Realm Reborn/Hildibrand Quests/1204_The Rise and Fall of a Gentlemen.json
QuestPaths/2.x - A Realm Reborn/Hildibrand Quests/1205_Back in the Saddle.json
QuestPaths/2.x - A Realm Reborn/Hildibrand Quests/1206_After Her Own Heart.json
QuestPaths/2.x - A Realm Reborn/Hildibrand Quests/1207_The Immaculate Deception.json
QuestPaths/2.x - A Realm Reborn/Hildibrand Quests/1315_The Science of Deduction.json
QuestPaths/2.x - A Realm Reborn/Hildibrand Quests/1316_The Hammer.json
QuestPaths/2.x - A Realm Reborn/Hildibrand Quests/1317_Manderville Men.json
QuestPaths/2.x - A Realm Reborn/Hildibrand Quests/1318_The Three Collectors.json
QuestPaths/2.x - A Realm Reborn/Hildibrand Quests/1438_The Business of Betrothal.json
QuestPaths/2.x - A Realm Reborn/Hildibrand Quests/1439_A Burst of Inspiration.json
QuestPaths/2.x - A Realm Reborn/Hildibrand Quests/1440_Seeds of Rebellion.json
QuestPaths/2.x - A Realm Reborn/Hildibrand Quests/1441_A Case of Indecency.json
QuestPaths/2.x - A Realm Reborn/Hildibrand Quests/166_Eight-armed and Dangerous.json
QuestPaths/2.x - A Realm Reborn/Hildibrand Quests/202_What Price Victory.json
QuestPaths/2.x - A Realm Reborn/Hildibrand Quests/203_The Trouble with Truffles.json
QuestPaths/2.x - A Realm Reborn/Hildibrand Quests/204_The Coliseum Conundrum.json
QuestPaths/2.x - A Realm Reborn/Hildibrand Quests/490_Shades of Sil'dih.json
QuestPaths/2.x - A Realm Reborn/Hildibrand Quests/491_Sibling Strife.json
QuestPaths/2.x - A Realm Reborn/Hildibrand Quests/492_Beneath the Mask.json
QuestPaths/2.x - A Realm Reborn/Hildibrand Quests/493_Truths Untold.json
QuestPaths/quest-v1.json
Questionable.Model/Questing/Converter/EnemySpawnTypeConverter.cs
Questionable.Model/Questing/DialogueChoice.cs
Questionable.Model/Questing/EEnemySpawnType.cs
Questionable/Controller/CombatController.cs
Questionable/Controller/GameUi/InteractionUiController.cs
Questionable/Controller/Steps/Interactions/Combat.cs

index 18de00c17ed9257e6dbe5f1e7edb0d8f7d335ec2..92f6ab8747947bb56200a88bd60ccb2e6519b6e2 100644 (file)
@@ -32,6 +32,10 @@ internal static class DialogueChoiceExtensions
                             Assignment(nameof(DialogueChoice.Answer), dialogueChoice.Answer,
                                     emptyChoice.Answer)
                                 .AsSyntaxNodeOrToken(),
+                            Assignment(nameof(DialogueChoice.PromptIsRegularExpression),
+                                    dialogueChoice.PromptIsRegularExpression,
+                                    emptyChoice.PromptIsRegularExpression)
+                                .AsSyntaxNodeOrToken(),
                             Assignment(nameof(DialogueChoice.AnswerIsRegularExpression),
                                     dialogueChoice.AnswerIsRegularExpression,
                                     emptyChoice.AnswerIsRegularExpression)
index 5e7b072fbf22d2f2e0e025e7d7747f54de7f1e99..32dc374c1734d9584c629dc8e9dcfb9b515024d3 100644 (file)
           },
           "TerritoryId": 146,
           "InteractionType": "Combat",
-          "EnemySpawnType": "OverworldEnemies",
-          "KillEnemyDataIds": []
+          "EnemySpawnType": "FateEnemies",
+          "KillEnemyDataIds": [
+            2390
+          ]
         }
       ]
     },
               "Prompt": "TEXT_CHRHDB101_01204_Q2_000_1",
               "Answer": "TEXT_CHRHDB101_01204_Q2A2_000_2"
             }
-          ]
+          ],
+          "NextQuestId": 1205
         }
       ]
     }
index 5cecd971d6e77219c5fe81aae85b2476c44f19d2..77cd80090b296b808b1eaeb6ead3b1008e6110fa 100644 (file)
             "Y": 4.0131226,
             "Z": -98.95477
           },
+          "StopDistance": 7,
           "TerritoryId": 130,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            32
+          ]
         },
         {
           "DataId": 1004331,
             "Z": -133.22656
           },
           "TerritoryId": 130,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            128
+          ]
         },
         {
           "DataId": 1001313,
             "Z": -106.21808
           },
           "TerritoryId": 130,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            64
+          ]
         }
       ]
     },
@@ -64,7 +89,8 @@
             "Z": -126.51257
           },
           "TerritoryId": 130,
-          "InteractionType": "CompleteQuest"
+          "InteractionType": "CompleteQuest",
+          "NextQuestId": 1206
         }
       ]
     }
index c2722df69a6cb488e2c5889cca7976c6e850489b..39548b263465b56730632b54a57ee68935f8a798 100644 (file)
             "Y": 12,
             "Z": 0.99176025
           },
+          "StopDistance": 4,
           "TerritoryId": 130,
-          "InteractionType": "CompleteQuest"
+          "InteractionType": "CompleteQuest",
+          "NextQuestId": 1207
         }
       ]
     }
index c71f1ca228b0611bf48603c361a10e3cfbb6cbbc..1cad0dd09642151bb202f645d536d91d29c41c78 100644 (file)
@@ -18,6 +18,7 @@
             "Y": 12,
             "Z": -5.5390625
           },
+          "StopDistance": 4,
           "TerritoryId": 130,
           "InteractionType": "AcceptQuest"
         }
             "Z": -221.27112
           },
           "TerritoryId": 145,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            32
+          ]
         },
         {
           "DataId": 1003940,
             "Z": -241.07733
           },
           "TerritoryId": 145,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            64
+          ]
         },
         {
           "DataId": 1003939,
             "Y": 4.137387,
             "Z": -240.98578
           },
+          "StopDistance": 4,
           "TerritoryId": 145,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            128
+          ]
         }
       ]
     },
             "Z": 151.87305
           },
           "TerritoryId": 145,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            32
+          ]
         },
         {
           "DataId": 2003005,
             "Z": 166.0028
           },
           "TerritoryId": 145,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            64
+          ]
         },
         {
           "DataId": 2003004,
             "Z": 187.36548
           },
           "TerritoryId": 145,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            128
+          ]
         }
       ]
     },
       "Sequence": 255,
       "Steps": [
         {
-          "Mount": true,
-          "Fly": true,
+          "Position": {
+            "X": -535.8004,
+            "Y": 5.3931885,
+            "Z": -252.96324
+          },
+          "TerritoryId": 145,
+          "InteractionType": "WalkTo",
+          "Fly": true
+        },
+        {
           "DataId": 1005731,
           "Position": {
             "X": -526.8788,
             "Z": -246.50952
           },
           "TerritoryId": 145,
-          "InteractionType": "CompleteQuest"
+          "InteractionType": "CompleteQuest",
+          "NextQuestId": 1315
         }
       ]
     }
index 24ca8f723a3b4f2c73dd69be0ed90283d8e0da84..92e45cfe0a982e0e8d658c5defbc0173e0822c4b 100644 (file)
@@ -18,6 +18,7 @@
             "Y": 5.4049973,
             "Z": -249.25616
           },
+          "StopDistance": 4,
           "TerritoryId": 145,
           "InteractionType": "AcceptQuest"
         }
       "Sequence": 2,
       "Steps": [
         {
-          "AetheryteShortcut": "Western Thanalan - Horizon",
+          "TerritoryId": 145,
+          "InteractionType": "UseItem",
+          "ItemId": 30362,
+          "TargetTerritoryId": 140
+        },
+        {
           "Mount": true,
           "DataId": 1008709,
           "Position": {
             "Z": 12.191956
           },
           "TerritoryId": 140,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            128
+          ]
         },
         {
           "Mount": true,
             "Z": 65.384766
           },
           "TerritoryId": 140,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            64
+          ]
         },
         {
           "Mount": true,
             "Z": 158.73962
           },
           "TerritoryId": 140,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            32
+          ]
         }
       ]
     },
             "Z": 155.9624
           },
           "TerritoryId": 140,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            32
+          ]
         },
         {
           "DataId": 2003656,
             "Z": 159.19727
           },
           "TerritoryId": 140,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            128
+          ]
         },
         {
           "DataId": 2003659,
             "Z": 155.90137
           },
           "TerritoryId": 140,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            16
+          ]
         },
         {
           "DataId": 2003657,
             "Z": 158.12915
           },
           "TerritoryId": 140,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            64
+          ]
         }
       ]
     },
             "Z": 157.5188
           },
           "TerritoryId": 140,
-          "InteractionType": "CompleteQuest"
+          "InteractionType": "CompleteQuest",
+          "NextQuestId": 1316
         }
       ]
     }
index 926b05fe732548120026b4e796dfbe38d533965c..2d1bdd04fdc1eadf6ebf726957e92f4f4a04f067 100644 (file)
@@ -47,7 +47,8 @@
             "Z": 254.13892
           },
           "TerritoryId": 147,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "Fly": true
         }
       ]
     },
             "Z": 121.20239
           },
           "TerritoryId": 147,
-          "InteractionType": "Interact"
-        },
-        {
-          "TerritoryId": 147,
-          "InteractionType": "CompleteQuest"
+          "InteractionType": "CompleteQuest",
+          "Fly": true,
+          "NextQuestId": 1317
         }
       ]
     }
index ea824bb201b4fd5aa4c4cb93a7f4fe6fae696781..89a9660db151a86da90dd9f350ab340a1c78bf12 100644 (file)
       "Sequence": 2,
       "Steps": [
         {
-          "AetheryteShortcut": "Western Thanalan - Horizon",
+          "TerritoryId": 145,
+          "InteractionType": "UseItem",
+          "ItemId": 30362,
+          "TargetTerritoryId": 140
+        },
+        {
           "Mount": true,
-          "Fly": true,
           "DataId": 1008730,
           "Position": {
             "X": -431.26575,
@@ -61,7 +65,8 @@
             "Z": -367.17786
           },
           "TerritoryId": 140,
-          "InteractionType": "CompleteQuest"
+          "InteractionType": "CompleteQuest",
+          "NextQuestId": 1318
         }
       ]
     }
index ae735c2a10e7c5aac6ba2999bb15a18c557c7857..aca0ffc476553b1f9b99197b8e926f3736f0d029 100644 (file)
@@ -12,6 +12,7 @@
             "Y": 23.113976,
             "Z": -367.8188
           },
+          "StopDistance": 5,
           "TerritoryId": 140,
           "InteractionType": "AcceptQuest"
         }
@@ -77,7 +78,8 @@
             "Z": 378.80518
           },
           "TerritoryId": 155,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "Fly": true
         }
       ]
     },
             "Z": 479.69775
           },
           "TerritoryId": 155,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "Fly": true
         }
       ]
     },
     {
       "Sequence": 6,
       "Steps": [
-        {
-          "DataId": 2003671,
-          "Position": {
-            "X": 489.181,
-            "Y": 206.8937,
-            "Z": 479.662
-          },
-          "TerritoryId": 155,
-          "InteractionType": "Interact"
-        },
         {
           "TerritoryId": 155,
           "InteractionType": "Duty",
             "Y": 207.33582,
             "Z": 475.33374
           },
+          "StopDistance": 7,
           "TerritoryId": 155,
           "InteractionType": "Interact"
         }
       "Sequence": 255,
       "Steps": [
         {
-          "AetheryteShortcut": "Western Thanalan - Horizon",
+          "TerritoryId": 145,
+          "InteractionType": "UseItem",
+          "ItemId": 30362,
+          "TargetTerritoryId": 140
+        },
+        {
           "Mount": true,
           "Fly": true,
           "DataId": 1008788,
             "Z": -367.57465
           },
           "TerritoryId": 140,
-          "InteractionType": "CompleteQuest"
+          "InteractionType": "CompleteQuest",
+          "NextQuestId": 1438
         }
       ]
     }
index a210caa34582786e4900c3b9f544c1e82ee51e68..b14136e8738f448c3eb13653a0c38b48e6bc284d 100644 (file)
             "Z": 525.81055
           },
           "TerritoryId": 137,
-          "InteractionType": "Interact"
-        },
-        {
-          "TerritoryId": 137,
-          "InteractionType": "CompleteQuest"
+          "InteractionType": "CompleteQuest",
+          "NextQuestId": 1439
         }
       ]
     }
index 0ee913ab50b9d00731c9b49d7cb6be738211f893..73d05f99023386fcbaff27e0062fc793f7af1995 100644 (file)
     {
       "Sequence": 2,
       "Steps": [
+        {
+          "Position": {
+            "X": 581.1095,
+            "Y": 14.587067,
+            "Z": 394.20828
+          },
+          "TerritoryId": 137,
+          "InteractionType": "WalkTo",
+          "Fly": true
+        },
         {
           "DataId": 1009319,
           "Position": {
@@ -75,7 +85,8 @@
             "Z": 344.71655
           },
           "TerritoryId": 138,
-          "InteractionType": "CompleteQuest"
+          "InteractionType": "CompleteQuest",
+          "NextQuestId": 1440
         }
       ]
     }
index 8e1968e8f8a0204ac6f8aaf1d2c5281cd7061661..45f4a820c429a4c9bec23b8c4572267741337db8 100644 (file)
             "Z": 425.58936
           },
           "TerritoryId": 138,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            128
+          ]
         },
         {
           "DataId": 2004325,
             "Z": 514.7324
           },
           "TerritoryId": 138,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            64
+          ]
         },
         {
           "DataId": 2004326,
             "Z": 596.765
           },
           "TerritoryId": 138,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            32
+          ]
         }
       ]
     },
             "Z": 684.1992
           },
           "TerritoryId": 138,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "DialogueChoices": [
+            {
+              "Type": "YesNo",
+              "ExcelSheet": "Addon",
+              "Prompt": 102445,
+              "PromptIsRegularExpression": true,
+              "Yes": true
+            }
+          ]
         },
         {
           "Comment": "Fight some Mandragoras",
           },
           "TerritoryId": 138,
           "InteractionType": "Combat",
-          "EnemySpawnType": "OverworldEnemies",
+          "EnemySpawnType": "FateEnemies",
           "KillEnemyDataIds": [
             2950,
             2951,
       "Steps": [
         {
           "AetheryteShortcut": "Eastern La Noscea - Costa Del Sol",
-          "Mount": true,
           "Fly": true,
+          "Position": {
+            "X": 581.46533,
+            "Y": 14.587067,
+            "Z": 393.86594
+          },
+          "TerritoryId": 137,
+          "InteractionType": "WalkTo"
+        },
+        {
           "DataId": 1009319,
           "Position": {
             "X": 581.3534,
             "Z": 10.879639
           },
           "TerritoryId": 137,
-          "InteractionType": "CompleteQuest"
+          "InteractionType": "CompleteQuest",
+          "NextQuestId": 1441
         }
       ]
     }
index 28200b4df86b6ccf7d29f3e23bfb036803878fce..36c6a8664d756de70227460f3b782689c24fdd05 100644 (file)
             "Z": 455.2528
           },
           "TerritoryId": 137,
-          "InteractionType": "Interact"
-        },
-        {
-          "TerritoryId": 137,
-          "InteractionType": "CompleteQuest"
+          "InteractionType": "CompleteQuest",
+          "NextQuestId": 166
         }
       ]
     }
index 3884020a24976b8431eb96e69b914d99cb1d764f..f191b9fc859f66fe64e0ec3261c024cf22039ee6 100644 (file)
             "[Ul'dah] Aetheryte Plaza",
             "[Ul'dah] Gladiators' Guild"
           ],
+          "Position": {
+            "X": -71.1609,
+            "Y": 6.9845705,
+            "Z": 9.066199
+          },
+          "TerritoryId": 131,
+          "InteractionType": "WalkTo"
+        },
+        {
           "DataId": 1010281,
           "Position": {
             "X": -70.96979,
             "Z": 3.982544
           },
           "TerritoryId": 131,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "DisableNavmesh": true
         }
       ]
     },
             "Z": -3.9215698
           },
           "TerritoryId": 130,
-          "InteractionType": "CompleteQuest"
+          "InteractionType": "CompleteQuest",
+          "NextQuestId": 202
         }
       ]
     }
index 2552df26545ddef273511146aa84aa264c60ac73..be98277af4bed743c87d26c208d5341b6f31a2de 100644 (file)
     {
       "Sequence": 1,
       "Steps": [
+        {
+          "Position": {
+            "X": -153.18225,
+            "Y": 14.005,
+            "Z": 43.458076
+          },
+          "TerritoryId": 130,
+          "InteractionType": "WalkTo"
+        },
         {
           "AethernetShortcut": [
             "[Ul'dah] Thaumaturges' Guild",
             "Z": 260.57825
           },
           "TerritoryId": 141,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "AetheryteShortcut": "Ul'dah",
+          "AethernetShortcut": [
+            "[Ul'dah] Aetheryte Plaza",
+            "[Ul'dah] Gate of Nald (Central Thanalan)"
+          ]
         }
       ]
     },
             "Z": -5.661133
           },
           "TerritoryId": 130,
-          "InteractionType": "CompleteQuest"
+          "InteractionType": "CompleteQuest",
+          "NextQuestId": 203
         }
       ]
     }
index cda4ab0c85a8db0e79bfb8cd1d107b3f3d70e854..56522def5c8d3359f389280d87df66c600d3b279 100644 (file)
     {
       "Sequence": 1,
       "Steps": [
+        {
+          "Position": {
+            "X": -153.18225,
+            "Y": 14.005,
+            "Z": 43.458076
+          },
+          "TerritoryId": 130,
+          "InteractionType": "WalkTo"
+        },
         {
           "AethernetShortcut": [
             "[Ul'dah] Thaumaturges' Guild",
             "Z": 8.255066
           },
           "TerritoryId": 131,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            32
+          ]
+        },
+        {
+          "Position": {
+            "X": 109.42333,
+            "Y": 8,
+            "Z": 8.92655
+          },
+          "TerritoryId": 131,
+          "InteractionType": "WalkTo"
         },
         {
           "DataId": 2004900,
             "Z": -35.233154
           },
           "TerritoryId": 131,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            64
+          ]
         },
         {
           "DataId": 2004899,
             "Z": -74.05206
           },
           "TerritoryId": 131,
-          "InteractionType": "Interact"
+          "InteractionType": "Interact",
+          "CompletionQuestVariablesFlags": [
+            null,
+            null,
+            null,
+            null,
+            null,
+            128
+          ]
         }
       ]
     },
             "[Ul'dah] Gladiators' Guild",
             "[Ul'dah] Sapphire Avenue Exchange"
           ],
+          "Position": {
+            "X": 137.68585,
+            "Y": 3.9999998,
+            "Z": -58.555218
+          },
+          "TerritoryId": 131,
+          "InteractionType": "WalkTo"
+        },
+        {
           "DataId": 1001679,
           "Position": {
             "X": 140.48975,
             "Y": 4.0099983,
             "Z": -59.80017
           },
+          "StopDistance": 5,
           "TerritoryId": 131,
-          "InteractionType": "CompleteQuest"
+          "InteractionType": "CompleteQuest",
+          "NextQuestId": 204
         }
       ]
     }
index 1dcb542416d48208171e6fa35c0c550049799723..c74829154b0042079e240f5bb2deccd525453860 100644 (file)
             "[Ul'dah] Sapphire Avenue Exchange",
             "[Ul'dah] Gladiators' Guild"
           ],
+          "Position": {
+            "X": -71.1609,
+            "Y": 6.9845705,
+            "Z": 9.066199
+          },
+          "TerritoryId": 131,
+          "InteractionType": "WalkTo"
+        },
+        {
           "DataId": 1010330,
           "Position": {
             "X": -69.5354,
@@ -33,6 +42,7 @@
           },
           "TerritoryId": 131,
           "InteractionType": "Interact",
+          "DisableNavmesh": true,
           "DialogueChoices": [
             {
               "Type": "YesNo",
@@ -53,6 +63,7 @@
             "Y": 6.9839687,
             "Z": -0.045776367
           },
+          "StopDistance": 5,
           "TerritoryId": 131,
           "InteractionType": "Interact"
         }
             "Z": 0.07623291
           },
           "TerritoryId": 131,
-          "InteractionType": "CompleteQuest"
+          "InteractionType": "CompleteQuest",
+          "NextQuestId": 490
         }
       ]
     }
index 195aca4d8906f7cc36ca953311d0415dab6b45e5..7a67a92850370b29982cd776eae1f56b31e1eaa5 100644 (file)
@@ -86,7 +86,8 @@
             "Z": 171.12988
           },
           "TerritoryId": 140,
-          "InteractionType": "CompleteQuest"
+          "InteractionType": "CompleteQuest",
+          "NextQuestId": 491
         }
       ]
     }
index b5559847baa806f6f25cc8bdba554c91a47ab4d4..6faca6922a13b05a55799b7392995b42f561074c 100644 (file)
             "Z": 96.29968
           },
           "TerritoryId": 131,
-          "InteractionType": "CompleteQuest"
+          "InteractionType": "CompleteQuest",
+          "NextQuestId": 492
         }
       ]
     }
index 2c07c416b2642c27bf5e0477391205073fb3f06d..8ec8a564b404c2b05fe5bc0100e56ec85987018d 100644 (file)
             "Z": 27.237305
           },
           "TerritoryId": 131,
-          "InteractionType": "CompleteQuest"
+          "InteractionType": "CompleteQuest",
+          "NextQuestId": 493
         }
       ]
     }
index d1ae76f6c6d84073f125a2638ec113389fc6dc9d..b494762bd01c6d67f4e0f492bad05f7032cace7c 100644 (file)
@@ -81,7 +81,8 @@
             "Z": 29.343018
           },
           "TerritoryId": 131,
-          "InteractionType": "CompleteQuest"
+          "InteractionType": "CompleteQuest",
+          "NextQuestId": 502
         }
       ]
     }
index a3bfd6f98cc61f8c7f013d05eaa4236fc317f6ff..6a00bb26f6350e688b94b2b85d8497723fdc10f3 100644 (file)
                   "AfterInteraction",
                   "AfterItemUse",
                   "AfterAction",
-                  "OverworldEnemies"
+                  "OverworldEnemies",
+                  "FateEnemies"
                 ]
               },
               "KillEnemyDataIds": {
                               "integer"
                             ]
                           },
+                          "PromptIsRegularExpression": {
+                            "type": "boolean"
+                          },
                           "Yes": {
                             "type": "boolean",
                             "default": true
                               "null"
                             ]
                           },
+                          "PromptIsRegularExpression": {
+                            "type": "boolean"
+                          },
                           "Answer": {
                             "type": [
                               "string",
                               "integer"
                             ]
+                          },
+                          "AnswerIsRegularExpression": {
+                            "type": "boolean"
                           }
                         },
                         "required": [
index d37c5b7c270550dd8b259d1d27b14983110ab7cd..4abc273950fc97ed0e2f3d0d8464ce06b9614260 100644 (file)
@@ -12,5 +12,6 @@ public sealed class EnemySpawnTypeConverter() : EnumConverter<EEnemySpawnType>(V
         { EEnemySpawnType.AfterAction, "AfterAction" },
         { EEnemySpawnType.AutoOnEnterArea, "AutoOnEnterArea" },
         { EEnemySpawnType.OverworldEnemies, "OverworldEnemies" },
+        { EEnemySpawnType.FateEnemies, "FateEnemies" },
     };
 }
index 41cb25192d4593c9597baa2bf4201df363ec6e01..a43a335c0d8bb98b5ded32b95daec08fffcc4a6a 100644 (file)
@@ -16,6 +16,7 @@ public sealed class DialogueChoice
 
     [JsonConverter(typeof(ExcelRefConverter))]
     public ExcelRef? Answer { get; set; }
+    public bool PromptIsRegularExpression { get; set; }
     public bool AnswerIsRegularExpression { get; set; }
 
     /// <summary>
index f119ea08a368298539461ecc7545bad81d95d8c7..aaf9d789734c97f4cf07d660bc3920a91bb579e6 100644 (file)
@@ -12,4 +12,5 @@ public enum EEnemySpawnType
     AfterAction,
     AutoOnEnterArea,
     OverworldEnemies,
+    FateEnemies,
 }
index d1ff66bea67cf34a1b92b0ecb98468953eb983bf..821dcf027fe9543aa7c837f34caae9908cc639b5 100644 (file)
@@ -196,8 +196,9 @@ internal sealed class CombatController : IDisposable
 
             // TODO this works as somewhat of a delay between killing enemies if certain items/flags are checked
             // but also delays killing the next enemy a little
-            if (_currentFight == null || _currentFight.Data.SpawnType != EEnemySpawnType.OverworldEnemies ||
-                _currentFight.Data.ComplexCombatDatas.Count == 0)
+            if (_currentFight == null ||
+                _currentFight.Data.SpawnType == EEnemySpawnType.OverworldEnemies ||
+                (_currentFight.Data.SpawnType != EEnemySpawnType.FateEnemies && _currentFight.Data.KillEnemyDataIds.Count > 0))
             {
                 if (battleNpc.IsDead)
                     return 0;
@@ -262,6 +263,13 @@ internal sealed class CombatController : IDisposable
                 }
             }
 
+            if (_currentFight?.Data.SpawnType == EEnemySpawnType.FateEnemies)
+            {
+                var gameObjectStruct = (GameObject*)gameObject.Address;
+                if (gameObjectStruct->FateId != 0)
+                    return 15;
+            }
+
             // stuff trying to kill us
             if (battleNpc.TargetObjectId == _clientState.LocalPlayer?.GameObjectId)
                 return 10;
index 21c95d29de58c5e3a35ebba5746a01e1016fcc09..35f89d06632bd76db8c590f904f881aa7b2db902 100644 (file)
@@ -428,19 +428,19 @@ internal sealed class InteractionUiController : IDisposable
                 continue;
             }
 
-            string? excelPrompt = ResolveReference(quest, dialogueChoice.ExcelSheet, dialogueChoice.Prompt, false)
-                ?.GetString();
+            StringOrRegex? excelPrompt = ResolveReference(quest, dialogueChoice.ExcelSheet, dialogueChoice.Prompt,
+                    dialogueChoice.PromptIsRegularExpression);
             StringOrRegex? excelAnswer = ResolveReference(quest, dialogueChoice.ExcelSheet, dialogueChoice.Answer,
                 dialogueChoice.AnswerIsRegularExpression);
 
-            if (actualPrompt == null && !string.IsNullOrEmpty(excelPrompt))
+            if (actualPrompt == null && excelPrompt != null)
             {
                 _logger.LogInformation("Unexpected excelPrompt: {ExcelPrompt}", excelPrompt);
                 continue;
             }
 
             if (actualPrompt != null &&
-                (excelPrompt == null || !GameFunctions.GameStringEquals(actualPrompt, excelPrompt)))
+                (excelPrompt == null || !IsMatch(actualPrompt, excelPrompt)))
             {
                 _logger.LogInformation("Unexpected excelPrompt: {ExcelPrompt}, actualPrompt: {ActualPrompt}",
                     excelPrompt, actualPrompt);
@@ -597,9 +597,9 @@ internal sealed class InteractionUiController : IDisposable
                 continue;
             }
 
-            string? excelPrompt = ResolveReference(quest, dialogueChoice.ExcelSheet, dialogueChoice.Prompt, false)
-                ?.GetString();
-            if (excelPrompt == null || !GameFunctions.GameStringEquals(actualPrompt, excelPrompt))
+            StringOrRegex? excelPrompt = ResolveReference(quest, dialogueChoice.ExcelSheet, dialogueChoice.Prompt,
+                    dialogueChoice.PromptIsRegularExpression);
+            if (excelPrompt == null || !IsMatch(actualPrompt, excelPrompt))
             {
                 _logger.LogInformation("Unexpected excelPrompt: {ExcelPrompt}, actualPrompt: {ActualPrompt}",
                     excelPrompt, actualPrompt);
index eab500dde30de63a4df4cb37bd347633fc3cbd39..38b62286035e07cd65882a8cb459546e04b16d66 100644 (file)
@@ -83,6 +83,7 @@ internal static class Combat
                     break;
 
                 case EEnemySpawnType.OverworldEnemies:
+                case EEnemySpawnType.FateEnemies:
                     yield return CreateTask(quest, sequence, step);
                     break;