From 26e881abc3f7768d3d30e6d388e9e5e227457470 Mon Sep 17 00:00:00 2001 From: Liza Carvelli Date: Sun, 21 Jul 2024 21:33:38 +0200 Subject: [PATCH] Minor cleanup for ARR part 5/CT raids/primals --- QuestPathGenerator/QuestSourceGenerator.cs | 3 + QuestPathGenerator/RoslynShortcuts.cs | 15 +- .../WAR/1050_Embracing the Beast.json | 2 +- .../WAR/1054_How to Quit You.json | 1 - .../MSQ-2/1175_The Price of Principles.json | 70 +++++++- .../1190_You Have Selected Regicide.json | 154 +++++++++++++++++- .../MSQ-2/1192_The Gifted.json | 76 +++------ .../MSQ-2/1346_A Final Temptation.json | 16 +- .../MSQ-2/1347_The Mother of Exiles.json | 23 ++- .../MSQ-2/1352_Why We Adventure.json | 33 +--- .../MSQ-2/1358_Scouts in Distress.json | 42 +++-- .../MSQ-2/1359_The Gift of Eternity.json | 57 ++----- .../1360_Into the Heart of the Whorl.json | 9 +- .../MSQ-2/1361_Lord of the Whorl.json | 5 +- .../MSQ-2/1363_Through the Maelstrom.json | 3 +- .../MSQ-2/1442_The Great Divide.json | 3 +- .../MSQ-2/1443_Desperate Times.json | 34 ++-- .../MSQ-2/1448_Lord of Levin.json | 17 +- .../MSQ-2/1456_Guardian of Eorzea.json | 34 ++-- .../MSQ-2/1457_Recruiting the Realm.json | 26 ++- .../MSQ-2/1458_Heretical Harassment.json | 3 +- .../MSQ-2/1459_When the Cold Sets In.json | 38 ++--- .../MSQ-2/1460_Brave New Companions.json | 153 +++++++++-------- .../MSQ-2/3874_Moving On.json | 13 +- .../MSQ-2/3883_Shock and Awe.json | 15 +- .../MSQ-2/3885_Levin an Impression.json | 72 ++------ .../1201_A Performance for the Ages.json | 3 +- .../Raid Quests/1474_Syrcus Tower.json | 4 +- .../Raid Quests/1709_Legacy of Allag.json | 104 ++++++++++-- .../494_The World of Darkness.json | 6 +- .../1129_Shadows Uncast (Twin Adder).json | 70 ++++++++ ...1130_Shadows Uncast (Immortal Flames).json | 66 ++++++++ .../PvP/1104_A Pup No Longer (Maelstrom).json | 25 ++- .../1105_A Pup No Longer (Twin Adder).json | 72 ++++++++ ...106_A Pup No Longer (Immortal Flames).json | 72 ++++++++ .../Trials/1047_A Recurring Problem.json | 4 +- .../1048_Ifrit Bleeds, We Can Kill It.json | 5 +- .../Trials/1157_In for Garuda Awakening.json | 5 +- .../Unlocks/Trials/1158_In a Titan Spot.json | 5 +- .../3279_The Syrcus Trench.json | 3 +- QuestPaths/quest-v1.json | 6 + Questionable.Model/V1/ComplexCombatData.cs | 1 + Questionable.Model/V1/QuestStep.cs | 1 + Questionable/Controller/CombatController.cs | 25 ++- .../MovementOverrideController.cs | 6 + .../Controller/Steps/Interactions/Combat.cs | 28 +++- Questionable/Questionable.csproj | 2 +- .../QuestComponents/ARealmRebornComponent.cs | 9 +- 48 files changed, 995 insertions(+), 444 deletions(-) create mode 100644 QuestPaths/2.x - A Realm Reborn/Unlocks/Dungeons/1129_Shadows Uncast (Twin Adder).json create mode 100644 QuestPaths/2.x - A Realm Reborn/Unlocks/Dungeons/1130_Shadows Uncast (Immortal Flames).json create mode 100644 QuestPaths/2.x - A Realm Reborn/Unlocks/PvP/1105_A Pup No Longer (Twin Adder).json create mode 100644 QuestPaths/2.x - A Realm Reborn/Unlocks/PvP/1106_A Pup No Longer (Immortal Flames).json diff --git a/QuestPathGenerator/QuestSourceGenerator.cs b/QuestPathGenerator/QuestSourceGenerator.cs index 5eb62a88..7184ebb0 100644 --- a/QuestPathGenerator/QuestSourceGenerator.cs +++ b/QuestPathGenerator/QuestSourceGenerator.cs @@ -357,6 +357,9 @@ public class QuestSourceGenerator : ISourceGenerator .AsSyntaxNodeOrToken(), AssignmentList(nameof(QuestStep.ComplexCombatData), step.ComplexCombatData) .AsSyntaxNodeOrToken(), + Assignment(nameof(QuestStep.CombatDelaySecondsAtStart), step.CombatDelaySecondsAtStart, + emptyStep.CombatDelaySecondsAtStart) + .AsSyntaxNodeOrToken(), Assignment(nameof(QuestStep.JumpDestination), step.JumpDestination, emptyStep.JumpDestination) .AsSyntaxNodeOrToken(), diff --git a/QuestPathGenerator/RoslynShortcuts.cs b/QuestPathGenerator/RoslynShortcuts.cs index 6364dca9..ecc3dd51 100644 --- a/QuestPathGenerator/RoslynShortcuts.cs +++ b/QuestPathGenerator/RoslynShortcuts.cs @@ -166,6 +166,7 @@ public static class RoslynShortcuts } else if (value is ComplexCombatData complexCombatData) { + var emptyData = new ComplexCombatData(); return ObjectCreationExpression( IdentifierName(nameof(ComplexCombatData))) .WithInitializer( @@ -173,18 +174,22 @@ public static class RoslynShortcuts SyntaxKind.ObjectInitializerExpression, SeparatedList( SyntaxNodeList( - Assignment(nameof(ComplexCombatData.DataId), complexCombatData.DataId, default(uint)) + Assignment(nameof(ComplexCombatData.DataId), complexCombatData.DataId, emptyData.DataId) .AsSyntaxNodeOrToken(), Assignment(nameof(ComplexCombatData.MinimumKillCount), - complexCombatData.MinimumKillCount, null) + complexCombatData.MinimumKillCount, emptyData.MinimumKillCount) .AsSyntaxNodeOrToken(), - Assignment(nameof(ComplexCombatData.RewardItemId), complexCombatData.RewardItemId, null) + Assignment(nameof(ComplexCombatData.RewardItemId), complexCombatData.RewardItemId, + emptyData.RewardItemId) .AsSyntaxNodeOrToken(), Assignment(nameof(ComplexCombatData.RewardItemCount), complexCombatData.RewardItemCount, - null) + emptyData.RewardItemCount) .AsSyntaxNodeOrToken(), AssignmentList(nameof(ComplexCombatData.CompletionQuestVariablesFlags), - complexCombatData.CompletionQuestVariablesFlags) + complexCombatData.CompletionQuestVariablesFlags), + Assignment(nameof(ComplexCombatData.IgnoreQuestMarker), + complexCombatData.IgnoreQuestMarker, + emptyData.IgnoreQuestMarker) .AsSyntaxNodeOrToken())))); } else if (value is QuestWorkValue qwv) diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/1050_Embracing the Beast.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/1050_Embracing the Beast.json index 19b4c4c8..c9e5fa05 100644 --- a/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/1050_Embracing the Beast.json +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/1050_Embracing the Beast.json @@ -116,7 +116,7 @@ "TerritoryId": 137, "InteractionType": "CompleteQuest", "AetheryteShortcut": "Eastern La Noscea - Costa Del Sol", - "NextQuestId": 1050 + "NextQuestId": 1051 } ] } diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/1054_How to Quit You.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/1054_How to Quit You.json index 8ccb2041..0938ae42 100644 --- a/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/1054_How to Quit You.json +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/1054_How to Quit You.json @@ -62,7 +62,6 @@ "TerritoryId": 137, "InteractionType": "CompleteQuest", "AetheryteShortcut": "Eastern La Noscea - Costa Del Sol", - "NextQuestId": 1054, "Fly": true } ] diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1175_The Price of Principles.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1175_The Price of Principles.json index b56feede..6ce9de3d 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1175_The Price of Principles.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1175_The Price of Principles.json @@ -20,6 +20,17 @@ { "Sequence": 1, "Steps": [ + { + "DataId": 1006693, + "Position": { + "X": 39.29187, + "Y": 1.2148079, + "Z": 0.8086548 + }, + "TerritoryId": 212, + "InteractionType": "AcceptQuest", + "PickUpQuestId": 1047 + }, { "DataId": 2001717, "Position": { @@ -29,7 +40,10 @@ }, "TerritoryId": 212, "InteractionType": "Interact", - "TargetTerritoryId": 212 + "TargetTerritoryId": 212, + "SkipIf": [ + "WakingSandsMainArea" + ] }, { "DataId": 1007533, @@ -40,7 +54,15 @@ }, "TerritoryId": 212, "InteractionType": "Interact", - "$": "0 0 0 0 0 0 -> 17 0 0 0 0 128" + "$": "0 0 0 0 0 0 -> 17 0 0 0 0 128", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] }, { "DataId": 1007534, @@ -51,7 +73,15 @@ }, "TerritoryId": 212, "InteractionType": "Interact", - "$": "17 0 0 0 0 128 -> 33 16 0 0 0 192" + "$": "17 0 0 0 0 128 -> 33 16 0 0 0 192", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] }, { "DataId": 1007531, @@ -60,9 +90,18 @@ "Y": -3.0000012, "Z": -52.71997 }, + "StopDistance": 7, "TerritoryId": 212, "InteractionType": "Interact", - "$": "33 16 0 0 0 192 -> 49 17 0 0 0 224" + "$": "33 16 0 0 0 192 -> 49 17 0 0 0 224", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] }, { "DataId": 1007530, @@ -71,9 +110,18 @@ "Y": -3.0000012, "Z": -52.262207 }, + "StopDistance": 7, "TerritoryId": 212, "InteractionType": "Interact", - "$": "49 17 0 0 0 224 -> 65 17 16 0 0 240" + "$": "49 17 0 0 0 224 -> 65 17 16 0 0 240", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 16 + ] }, { "DataId": 1007478, @@ -83,7 +131,15 @@ "Z": -56.229553 }, "TerritoryId": 212, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 8 + ] } ] }, @@ -103,4 +159,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1190_You Have Selected Regicide.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1190_You Have Selected Regicide.json index 4a134e87..3a86ab3b 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1190_You Have Selected Regicide.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1190_You Have Selected Regicide.json @@ -1,6 +1,6 @@ { "$schema": "https://carvel.li/questionable/quest-1.0", - "Author": "JerryWester", + "Author": ["JerryWester", "liza"], "QuestSequence": [ { "Sequence": 0, @@ -46,6 +46,7 @@ "Y": -2.3519497, "Z": -240.40594 }, + "StopDistance": 7, "TerritoryId": 133, "InteractionType": "Interact", "TargetTerritoryId": 152 @@ -80,9 +81,149 @@ "Sequence": 4, "Steps": [ { + "Position": { + "X": -496.3975, + "Y": 7.8566074, + "Z": 71.93724 + }, + "StopDistance": 0.5, "TerritoryId": 152, - "InteractionType": "WaitForManualProgress", - "Comment": "Yeah, no idea how to automate this, sorry :/" + "InteractionType": "Combat", + "EnemySpawnType": "AutoOnEnterArea", + "ComplexCombatData": [ + { + "DataId": 47, + "IgnoreQuestMarker": true, + "MinimumKillCount": 1 + } + ], + "Mount": false, + "Sprint": false + }, + { + "Position": { + "X": -393.63492, + "Y": -0.28167063, + "Z": 72.2678 + }, + "StopDistance": 0.5, + "TerritoryId": 152, + "InteractionType": "Combat", + "EnemySpawnType": "AutoOnEnterArea", + "ComplexCombatData": [ + { + "DataId": 2483, + "IgnoreQuestMarker": true, + "MinimumKillCount": 3 + } + ], + "Mount": false, + "Sprint": false + }, + { + "Position": { + "X": -359.14633, + "Y": 4.4168873, + "Z": 63.1877 + }, + "StopDistance": 0.5, + "TerritoryId": 152, + "InteractionType": "Combat", + "EnemySpawnType": "AutoOnEnterArea", + "ComplexCombatData": [ + { + "DataId": 2484, + "IgnoreQuestMarker": true, + "MinimumKillCount": 1 + } + ], + "Mount": false, + "Sprint": false + }, + { + "Position": { + "X": -324.51694, + "Y": 8.511529, + "Z": 69.76721 + }, + "StopDistance": 0.5, + "TerritoryId": 152, + "InteractionType": "Combat", + "EnemySpawnType": "AutoOnEnterArea", + "ComplexCombatData": [ + { + "DataId": 2485, + "IgnoreQuestMarker": true, + "MinimumKillCount": 2 + } + ], + "Mount": false, + "Sprint": false + }, + { + "DataId": 2482, + "Position": { + "X": -238.72742, + "Y": 7.8999486, + "Z": 64.43884 + }, + "StopDistance": 0.25, + "TerritoryId": 152, + "InteractionType": "WaitForNpcAtPosition", + "NpcWaitDistance": 5, + "Mount": false, + "Sprint": false + }, + { + "Position": { + "X": -242.57193, + "Y": 11.837363, + "Z": 19.533478 + }, + "StopDistance": 0.5, + "TerritoryId": 152, + "InteractionType": "Combat", + "EnemySpawnType": "AutoOnEnterArea", + "ComplexCombatData": [ + { + "DataId": 2487, + "IgnoreQuestMarker": true, + "MinimumKillCount": 2 + }, + { + "DataId": 2488, + "IgnoreQuestMarker": true, + "MinimumKillCount": 1 + } + ], + "Mount": false, + "Sprint": false, + "CombatDelaySecondsAtStart": 3 + }, + { + "DataId": 2482, + "Position": { + "X": -315.8217, + "Y": 11.905772, + "Z": -34.105675 + }, + "StopDistance": 0.25, + "TerritoryId": 152, + "InteractionType": "WaitForNpcAtPosition", + "Mount": false, + "Sprint": false, + "NpcWaitDistance": 5 + }, + { + "DataId": 2003347, + "Position": { + "X": -318.62366, + "Y": 12.25293, + "Z": -35.05005 + }, + "StopDistance": 4, + "TerritoryId": 152, + "InteractionType": "Interact" } ] }, @@ -96,6 +237,7 @@ "Y": 12.293127, "Z": -37.30841 }, + "StopDistance": 4, "TerritoryId": 152, "InteractionType": "Interact" } @@ -111,8 +253,10 @@ "Y": 12.25293, "Z": -35.080566 }, + "StopDistance": 4, "TerritoryId": 152, - "InteractionType": "Interact" + "InteractionType": "Interact", + "DelaySecondsAtStart": 3 } ] }, @@ -153,4 +297,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1192_The Gifted.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1192_The Gifted.json index 032341e6..77ef99ac 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1192_The Gifted.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1192_The Gifted.json @@ -84,26 +84,18 @@ "Steps": [ { "Position": { - "X": -467.98248, - "Y": 23.0508, - "Z": -430.49655 - }, - "TerritoryId": 140, - "InteractionType": "WalkTo", - "Fly": true - }, - { - "Position": { - "X": -469.5506, - "Y": 22.867796, - "Z": -435.02985 + "X": -470.87872, + "Y": 22.698383, + "Z": -439.40274 }, + "StopDistance": 0.25, "TerritoryId": 140, "InteractionType": "Combat", "EnemySpawnType": "AutoOnEnterArea", "KillEnemyDataIds": [ 2477 - ] + ], + "Fly": true } ] }, @@ -112,26 +104,18 @@ "Steps": [ { "Position": { - "X": -394.05176, - "Y": 25.249037, - "Z": -491.6281 - }, - "TerritoryId": 140, - "InteractionType": "WalkTo", - "Fly": true - }, - { - "Position": { - "X": -388.88654, - "Y": 24.894493, - "Z": -498.07654 + "X": -386.44818, + "Y": 24.74541, + "Z": -501.20456 }, + "StopDistance": 0.25, "TerritoryId": 140, "InteractionType": "Combat", "EnemySpawnType": "AutoOnEnterArea", "KillEnemyDataIds": [ 2478 - ] + ], + "Fly": true } ] }, @@ -140,55 +124,39 @@ "Steps": [ { "Position": { - "X": -376.08395, - "Y": 19.192884, - "Z": -619.2925 - }, - "TerritoryId": 140, - "InteractionType": "WalkTo", - "Fly": true - }, - { - "Position": { - "X": -370.34174, - "Y": 17.37921, - "Z": -625.1368 + "X": -366.75403, + "Y": 16.426182, + "Z": -628.9341 }, + "StopDistance": 0.25, "TerritoryId": 140, "InteractionType": "Combat", "EnemySpawnType": "AutoOnEnterArea", "KillEnemyDataIds": [ 2479 - ] + ], + "Fly": true } ] }, { "Sequence": 6, "Steps": [ - { - "Position": { - "X": -326.49905, - "Y": 14.853391, - "Z": -775.70575 - }, - "TerritoryId": 140, - "InteractionType": "WalkTo", - "Fly": true - }, { "Position": { "X": -327.01913, "Y": 14.785374, "Z": -780.03625 }, + "StopDistance": 0.25, "TerritoryId": 140, "InteractionType": "Combat", "EnemySpawnType": "AutoOnEnterArea", "KillEnemyDataIds": [ 2480, 2481 - ] + ], + "Fly": true } ] }, @@ -260,4 +228,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1346_A Final Temptation.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1346_A Final Temptation.json index 499b3187..f1c8a3d9 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1346_A Final Temptation.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1346_A Final Temptation.json @@ -31,6 +31,7 @@ "Y": 45.157562, "Z": -215.89996 }, + "StopDistance": 7, "TerritoryId": 140, "InteractionType": "Interact" } @@ -84,16 +85,6 @@ { "Sequence": 255, "Steps": [ - { - "Position": { - "X": 62.218567, - "Y": 44.999996, - "Z": -214.81116 - }, - "TerritoryId": 140, - "InteractionType": "WalkTo", - "Fly": true - }, { "DataId": 1002058, "Position": { @@ -102,9 +93,10 @@ "Z": -215.89996 }, "TerritoryId": 140, - "InteractionType": "CompleteQuest" + "InteractionType": "CompleteQuest", + "Fly": true } ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1347_The Mother of Exiles.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1347_The Mother of Exiles.json index 0fcb15f7..199c7af1 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1347_The Mother of Exiles.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1347_The Mother of Exiles.json @@ -12,6 +12,7 @@ "Y": 44.999996, "Z": -220.93542 }, + "StopDistance": 7, "TerritoryId": 140, "InteractionType": "AcceptQuest", "AetheryteShortcut": "Western Thanalan - Horizon", @@ -127,7 +128,15 @@ "[Ul'dah] Adventurers' Guild", "[Ul'dah] Sapphire Avenue Exchange" ], - "$": "0 1 16 0 0 0 -> 17 1 0 0 0 64" + "$": "0 1 16 0 0 0 -> 17 1 0 0 0 64", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] }, { "DataId": 1001966, @@ -137,7 +146,15 @@ "Z": -83.84839 }, "TerritoryId": 131, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] } ] }, @@ -195,4 +212,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1352_Why We Adventure.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1352_Why We Adventure.json index ea350e02..c4d8eed2 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1352_Why We Adventure.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1352_Why We Adventure.json @@ -49,17 +49,6 @@ { "Sequence": 2, "Steps": [ - { - "Position": { - "X": 182.90273, - "Y": 52.023964, - "Z": 29.854843 - }, - "TerritoryId": 140, - "InteractionType": "WalkTo", - "Fly": true, - "AetheryteShortcut": "Western Thanalan - Horizon" - }, { "DataId": 2003573, "Position": { @@ -67,29 +56,21 @@ "Y": 52.140015, "Z": 29.06836 }, + "StopDistance": 0.25, "TerritoryId": 140, "InteractionType": "Combat", "EnemySpawnType": "AfterInteraction", "KillEnemyDataIds": [ 2848 - ] + ], + "Fly": true, + "AetheryteShortcut": "Western Thanalan - Horizon" } ] }, { "Sequence": 3, "Steps": [ - { - "Position": { - "X": 125.38452, - "Y": 49.281586, - "Z": -172.1297 - }, - "TerritoryId": 140, - "InteractionType": "WalkTo", - "Fly": true, - "AetheryteShortcut": "Western Thanalan - Horizon" - }, { "DataId": 1008640, "Position": { @@ -98,7 +79,9 @@ "Z": -173.23572 }, "TerritoryId": 140, - "InteractionType": "Interact" + "InteractionType": "Interact", + "Fly": true, + "AetheryteShortcut": "Western Thanalan - Horizon" } ] }, @@ -123,4 +106,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1358_Scouts in Distress.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1358_Scouts in Distress.json index 0f7184be..58878a1c 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1358_Scouts in Distress.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1358_Scouts in Distress.json @@ -48,19 +48,9 @@ "Steps": [ { "Position": { - "X": -444.11835, - "Y": -40.95807, - "Z": -242.13676 - }, - "TerritoryId": 138, - "InteractionType": "WalkTo", - "Fly": true - }, - { - "Position": { - "X": -448.5728, - "Y": -41.56529, - "Z": -240.29225 + "X": -450.67154, + "Y": -41.88713, + "Z": -238.96031 }, "TerritoryId": 138, "InteractionType": "Combat", @@ -69,7 +59,8 @@ 2861, 2862, 2863 - ] + ], + "Fly": true } ] }, @@ -83,9 +74,18 @@ "Y": -41.985073, "Z": -237.72034 }, + "StopDistance": 0.25, "TerritoryId": 138, "InteractionType": "Interact", - "$": "0 0 0 0 0 0 -> 1 16 0 0 0 128" + "$": "0 0 0 0 0 0 -> 1 16 0 0 0 128", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] }, { "DataId": 1008685, @@ -95,7 +95,15 @@ "Z": -240.13129 }, "TerritoryId": 138, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] } ] }, @@ -125,4 +133,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1359_The Gift of Eternity.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1359_The Gift of Eternity.json index 107e872a..df7ce9d7 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1359_The Gift of Eternity.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1359_The Gift of Eternity.json @@ -20,29 +20,21 @@ { "Sequence": 1, "Steps": [ - { - "Position": { - "X": -214.06451, - "Y": -41.955135, - "Z": -249.15605 - }, - "TerritoryId": 138, - "InteractionType": "WalkTo", - "Fly": true - }, { "Position": { "X": -209.9414, "Y": -42.109043, "Z": -248.07559 }, + "StopDistance": 0.25, "TerritoryId": 138, "InteractionType": "Combat", "EnemySpawnType": "AutoOnEnterArea", "KillEnemyDataIds": [ 2890, 2891 - ] + ], + "Fly": true } ] }, @@ -51,20 +43,11 @@ "Steps": [ { "Position": { - "X": -187.2772, - "Y": -41.886265, - "Z": -318.27036 - }, - "TerritoryId": 138, - "InteractionType": "WalkTo", - "Fly": true - }, - { - "Position": { - "X": -188.59572, - "Y": -41.69931, - "Z": -318.9667 + "X": -194.26031, + "Y": -40.771305, + "Z": -323.02054 }, + "StopDistance": 0.25, "TerritoryId": 138, "InteractionType": "Combat", "EnemySpawnType": "AutoOnEnterArea", @@ -73,7 +56,8 @@ 2893, 2894, 2895 - ] + ], + "Fly": true } ] }, @@ -82,20 +66,11 @@ "Steps": [ { "Position": { - "X": -299.29233, - "Y": -41.884323, - "Z": -336.04984 - }, - "TerritoryId": 138, - "InteractionType": "WalkTo", - "Fly": true - }, - { - "Position": { - "X": -297.88797, - "Y": -41.872128, - "Z": -334.79858 + "X": -301.09625, + "Y": -41.52895, + "Z": -327.2867 }, + "StopDistance": 0.25, "TerritoryId": 138, "InteractionType": "Combat", "EnemySpawnType": "AutoOnEnterArea", @@ -103,7 +78,8 @@ 2896, 2897, 2898 - ] + ], + "Fly": true } ] }, @@ -142,10 +118,11 @@ "Y": -35.708496, "Z": -400.50354 }, + "StopDistance": 5, "TerritoryId": 138, "InteractionType": "CompleteQuest" } ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1360_Into the Heart of the Whorl.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1360_Into the Heart of the Whorl.json index aa33b386..467fc6f8 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1360_Into the Heart of the Whorl.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1360_Into the Heart of the Whorl.json @@ -12,6 +12,7 @@ "Y": -35.708496, "Z": -400.50354 }, + "StopDistance": 5, "TerritoryId": 138, "InteractionType": "AcceptQuest" } @@ -115,7 +116,8 @@ "Z": -286.78662 }, "TerritoryId": 135, - "InteractionType": "WalkTo" + "InteractionType": "WalkTo", + "Mount": true }, { "Position": { @@ -130,8 +132,7 @@ { "TerritoryId": 135, "InteractionType": "AttuneAetheryte", - "Aetheryte": "Lower La Noscea - Moraby Drydocks", - "StopDistance": 5 + "Aetheryte": "Lower La Noscea - Moraby Drydocks" }, { "Position": { @@ -156,4 +157,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1361_Lord of the Whorl.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1361_Lord of the Whorl.json index dcf6b3cd..675d0f97 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1361_Lord of the Whorl.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1361_Lord of the Whorl.json @@ -1,6 +1,9 @@ { "$schema": "https://carvel.li/questionable/quest-1.0", "Author": "JerryWester", + "TerritoryBlacklist": [ + 281 + ], "QuestSequence": [ { "Sequence": 0, @@ -65,4 +68,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1363_Through the Maelstrom.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1363_Through the Maelstrom.json index 0138aff0..b4b5d40d 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1363_Through the Maelstrom.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1363_Through the Maelstrom.json @@ -12,6 +12,7 @@ "Y": 9.999781, "Z": 156.08447 }, + "StopDistance": 5, "TerritoryId": 129, "InteractionType": "AcceptQuest", "AetheryteShortcut": "Limsa Lominsa", @@ -60,4 +61,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1442_The Great Divide.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1442_The Great Divide.json index dd69c5b3..e71b3d2f 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1442_The Great Divide.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1442_The Great Divide.json @@ -49,6 +49,7 @@ "Y": 21.252728, "Z": -639.7345 }, + "StopDistance": 7, "TerritoryId": 156, "InteractionType": "Interact" } @@ -75,4 +76,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1443_Desperate Times.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1443_Desperate Times.json index 52a3faab..310ab67a 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1443_Desperate Times.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1443_Desperate Times.json @@ -59,15 +59,24 @@ "Sequence": 3, "Steps": [ { + "DataId": 1001484, "Position": { - "X": 94.5531, - "Y": 0.3407526, - "Z": -270.22217 + "X": 93.247925, + "Y": 0.34075317, + "Z": -272.60242 }, "TerritoryId": 141, - "InteractionType": "WalkTo", + "InteractionType": "Interact", "AetheryteShortcut": "Central Thanalan - Black Brush Station", - "Fly": true + "Fly": true, + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] }, { "DataId": 1001605, @@ -85,18 +94,7 @@ null, null, 64 - ], - "$": "0 0 0 0 0 0 -> 1 0 0 0 0 64" - }, - { - "DataId": 1001484, - "Position": { - "X": 93.247925, - "Y": 0.34075317, - "Z": -272.60242 - }, - "TerritoryId": 141, - "InteractionType": "Interact" + ] } ] }, @@ -157,4 +155,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1448_Lord of Levin.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1448_Lord of Levin.json index 12e5deb3..263c6e62 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1448_Lord of Levin.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1448_Lord of Levin.json @@ -72,17 +72,6 @@ { "Sequence": 255, "Steps": [ - { - "Position": { - "X": 21.35542, - "Y": -3.9001584, - "Z": 211.87386 - }, - "TerritoryId": 152, - "InteractionType": "WalkTo", - "Fly": true, - "AetheryteShortcut": "East Shroud - Hawthorne Hut" - }, { "DataId": 1009097, "Position": { @@ -91,9 +80,11 @@ "Z": 211.16956 }, "TerritoryId": 152, - "InteractionType": "CompleteQuest" + "InteractionType": "CompleteQuest", + "Fly": true, + "AetheryteShortcut": "East Shroud - Hawthorne Hut" } ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1456_Guardian of Eorzea.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1456_Guardian of Eorzea.json index b368cf6f..9112ad0b 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1456_Guardian of Eorzea.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1456_Guardian of Eorzea.json @@ -59,23 +59,14 @@ }, { "Position": { - "X": 30.79747, - "Y": 22.704006, - "Z": -655.94745 + "X": 30.917934, + "Y": 20.495003, + "Z": -656.1909 }, "TerritoryId": 156, "InteractionType": "WalkTo", - "Fly": true - }, - { - "Position": { - "X": 131.74095, - "Y": -2.513662, - "Z": -555.5502 - }, - "TerritoryId": 156, - "InteractionType": "WalkTo", - "Fly": true + "Mount": true, + "$": "Rising Stones Door" }, { "DataId": 1009282, @@ -84,8 +75,10 @@ "Y": -2.2044632, "Z": -556.2372 }, + "StopDistance": 1, "TerritoryId": 156, - "InteractionType": "SinglePlayerDuty" + "InteractionType": "SinglePlayerDuty", + "Fly": true } ] }, @@ -94,13 +87,14 @@ "Steps": [ { "Position": { - "X": 29.987108, - "Y": 21.187704, - "Z": -654.1839 + "X": 30.917934, + "Y": 20.495003, + "Z": -656.1909 }, "TerritoryId": 156, "InteractionType": "WalkTo", - "Fly": true + "Fly": true, + "$": "Rising Stones Door" }, { "TerritoryId": 156, @@ -137,4 +131,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1457_Recruiting the Realm.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1457_Recruiting the Realm.json index 1d40e03f..f2a47585 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1457_Recruiting the Realm.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1457_Recruiting the Realm.json @@ -128,7 +128,15 @@ "Z": 179.40027 }, "TerritoryId": 128, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] } ] }, @@ -144,8 +152,9 @@ }, "TerritoryId": 128, "InteractionType": "Interact", + "AetheryteShortcut": "Limsa Lominsa", "AethernetShortcut": [ - "[Limsa Lominsa] The Aftcastle", + "[Limsa Lominsa] Aetheryte Plaza", "[Limsa Lominsa] Airship Landing" ] } @@ -174,6 +183,7 @@ }, "TerritoryId": 133, "InteractionType": "Interact", + "AetheryteShortcut": "Gridania", "AethernetShortcut": [ "[Gridania] Aetheryte Plaza", "[Gridania] Conjurers' Guild" @@ -264,7 +274,15 @@ "Z": -262.68408 }, "TerritoryId": 133, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] } ] }, @@ -486,4 +504,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1458_Heretical Harassment.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1458_Heretical Harassment.json index a3dffbba..e47f40a7 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1458_Heretical Harassment.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1458_Heretical Harassment.json @@ -12,6 +12,7 @@ "Y": -1.9957249, "Z": -45.700806 }, + "StopDistance": 7, "TerritoryId": 351, "InteractionType": "AcceptQuest" } @@ -81,4 +82,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1459_When the Cold Sets In.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1459_When the Cold Sets In.json index 74736d8a..fcf2efb3 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1459_When the Cold Sets In.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1459_When the Cold Sets In.json @@ -129,7 +129,8 @@ "Z": -288.4794 }, "TerritoryId": 155, - "InteractionType": "WalkTo" + "InteractionType": "WalkTo", + "Mount": true }, { "Position": { @@ -142,43 +143,25 @@ }, { "Position": { - "X": -693.89417, - "Y": 223.63544, - "Z": -36.510162 - }, - "TerritoryId": 155, - "InteractionType": "WalkTo", - "Fly": true - }, - { - "Position": { - "X": -696.762, - "Y": 223.81946, - "Z": -34.89058 + "X": -701.3538, + "Y": 224.22969, + "Z": -31.912737 }, + "StopDistance": 0.25, "TerritoryId": 155, "InteractionType": "Combat", "EnemySpawnType": "AutoOnEnterArea", "KillEnemyDataIds": [ 3119, 3120 - ] + ], + "Fly": true } ] }, { "Sequence": 4, "Steps": [ - { - "Position": { - "X": -866.228, - "Y": 225.90123, - "Z": 9.295383 - }, - "TerritoryId": 155, - "InteractionType": "WalkTo", - "Fly": true - }, { "DataId": 1009087, "Position": { @@ -187,7 +170,8 @@ "Z": 8.132996 }, "TerritoryId": 155, - "InteractionType": "Interact" + "InteractionType": "Interact", + "Fly": true } ] }, @@ -274,4 +258,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1460_Brave New Companions.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1460_Brave New Companions.json index 52d417ce..cbe89597 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/1460_Brave New Companions.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/1460_Brave New Companions.json @@ -66,11 +66,11 @@ "TargetTerritoryId": 156, "CompletionQuestVariablesFlags": [ null, - 128, null, null, null, - null + null, + -2 ] }, { @@ -82,17 +82,15 @@ }, "TerritoryId": 156, "InteractionType": "Interact", - "$": "0 128 0 0 0 0 -> 1 112 0 0 0 2" - }, - { - "Position": { - "X": 84.4848, - "Y": 29.529366, - "Z": -625.9231 - }, - "TerritoryId": 156, - "InteractionType": "WalkTo", - "Fly": true + "$": "0 128 0 0 0 0 -> 1 112 0 0 0 2", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 2 + ] }, { "DataId": 1009143, @@ -103,17 +101,16 @@ }, "TerritoryId": 156, "InteractionType": "Interact", - "$": "1 112 0 0 0 2 -> 2 96 0 0 0 34" - }, - { - "Position": { - "X": 70.21658, - "Y": 33.066517, - "Z": -697.55524 - }, - "TerritoryId": 156, - "InteractionType": "WalkTo", - "Fly": true + "Fly": true, + "$": "1 112 0 0 0 2 -> 2 96 0 0 0 34", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] }, { "DataId": 1009148, @@ -124,17 +121,16 @@ }, "TerritoryId": 156, "InteractionType": "Interact", - "$": "2 96 0 0 0 34 -> 3 80 0 0 0 35" - }, - { - "Position": { - "X": 54.462944, - "Y": 25.628618, - "Z": -704.24084 - }, - "TerritoryId": 156, - "InteractionType": "WalkTo", - "Fly": true + "Fly": true, + "$": "2 96 0 0 0 34 -> 3 80 0 0 0 35", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 1 + ] }, { "DataId": 1009145, @@ -145,17 +141,16 @@ }, "TerritoryId": 156, "InteractionType": "Interact", - "$": "3 80 0 0 0 35 -> 4 64 0 0 0 43" - }, - { - "Position": { - "X": 45.96064, - "Y": 31.175581, - "Z": -745.2635 - }, - "TerritoryId": 156, - "InteractionType": "WalkTo", - "Fly": true + "Fly": true, + "$": "3 80 0 0 0 35 -> 4 64 0 0 0 43", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 8 + ] }, { "DataId": 1009146, @@ -164,19 +159,19 @@ "Y": 31.164318, "Z": -744.9912 }, + "StopDistance": 0.5, "TerritoryId": 156, "InteractionType": "Interact", - "$": "4 64 0 0 0 43 -> 5 48 0 0 0 47" - }, - { - "Position": { - "X": 23.477123, - "Y": 28.999966, - "Z": -734.3218 - }, - "TerritoryId": 156, - "InteractionType": "WalkTo", - "Fly": true + "Fly": true, + "$": "4 64 0 0 0 43 -> 5 48 0 0 0 47", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 4 + ] }, { "DataId": 1009142, @@ -187,7 +182,16 @@ }, "TerritoryId": 156, "InteractionType": "Interact", - "$": "5 48 0 0 0 47 -> 6 32 0 0 0 111" + "Mount": true, + "$": "5 48 0 0 0 47 -> 6 32 0 0 0 111", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] }, { "Position": { @@ -208,7 +212,15 @@ }, "TerritoryId": 156, "InteractionType": "Interact", - "$": "6 32 0 0 0 111 -> 7 16 0 0 0 239" + "$": "6 32 0 0 0 111 -> 7 16 0 0 0 239", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] }, { "Position": { @@ -228,7 +240,15 @@ "Z": -688.38025 }, "TerritoryId": 156, - "InteractionType": "Interact" + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 16 + ] } ] }, @@ -237,13 +257,14 @@ "Steps": [ { "Position": { - "X": 29.328543, - "Y": 21.232033, - "Z": -652.5289 + "X": 30.917934, + "Y": 20.495003, + "Z": -656.1909 }, "TerritoryId": 156, "InteractionType": "WalkTo", - "Fly": true + "Fly": true, + "$": "Rising Stones Door" }, { "TerritoryId": 156, @@ -274,6 +295,7 @@ "Y": -1.9957249, "Z": -42.130188 }, + "StopDistance": 7, "TerritoryId": 351, "InteractionType": "Interact" } @@ -289,10 +311,11 @@ "Y": -1.9957249, "Z": -45.700806 }, + "StopDistance": 7, "TerritoryId": 351, "InteractionType": "CompleteQuest" } ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/3874_Moving On.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/3874_Moving On.json index c4cedaf7..d9807d0a 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/3874_Moving On.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/3874_Moving On.json @@ -46,6 +46,17 @@ { "Sequence": 2, "Steps": [ + { + "DataId": 1007534, + "Position": { + "X": 1.4800415, + "Y": -3.0000014, + "Z": -48.722107 + }, + "TerritoryId": 212, + "InteractionType": "AcceptQuest", + "PickUpQuestId": 1048 + }, { "Position": { "X": 618.9289, @@ -201,4 +212,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/3883_Shock and Awe.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/3883_Shock and Awe.json index 85ad2657..549f11b5 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/3883_Shock and Awe.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/3883_Shock and Awe.json @@ -24,16 +24,6 @@ { "Sequence": 1, "Steps": [ - { - "Position": { - "X": 58.081802, - "Y": -5.4142065, - "Z": -3.134228 - }, - "TerritoryId": 141, - "InteractionType": "WalkTo", - "Fly": true - }, { "DataId": 1009050, "Position": { @@ -50,7 +40,8 @@ 3115, 3116, 3117 - ] + ], + "Fly": true } ] }, @@ -95,4 +86,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/MSQ-2/3885_Levin an Impression.json b/QuestPaths/2.x - A Realm Reborn/MSQ-2/3885_Levin an Impression.json index 5e214f30..ef336e51 100644 --- a/QuestPaths/2.x - A Realm Reborn/MSQ-2/3885_Levin an Impression.json +++ b/QuestPaths/2.x - A Realm Reborn/MSQ-2/3885_Levin an Impression.json @@ -1,6 +1,9 @@ { "$schema": "https://carvel.li/questionable/quest-1.0", "Author": "JerryWester", + "TerritoryBlacklist": [ + 374 + ], "QuestSequence": [ { "Sequence": 0, @@ -24,16 +27,6 @@ { "Sequence": 1, "Steps": [ - { - "Position": { - "X": 263.44794, - "Y": -8.98996, - "Z": -79.589424 - }, - "TerritoryId": 152, - "InteractionType": "WalkTo", - "Fly": true - }, { "DataId": 1009098, "Position": { @@ -42,23 +35,14 @@ "Z": -77.92786 }, "TerritoryId": 152, - "InteractionType": "Interact" + "InteractionType": "Interact", + "Fly": true } ] }, { "Sequence": 2, "Steps": [ - { - "Position": { - "X": 194.81087, - "Y": -22.105244, - "Z": -399.81537 - }, - "TerritoryId": 152, - "InteractionType": "WalkTo", - "Fly": true - }, { "DataId": 1033555, "Position": { @@ -67,23 +51,14 @@ "Z": -399.8932 }, "TerritoryId": 152, - "InteractionType": "Interact" + "InteractionType": "Interact", + "Fly": true } ] }, { "Sequence": 3, "Steps": [ - { - "Position": { - "X": 106.51002, - "Y": -27.645441, - "Z": -368.2198 - }, - "TerritoryId": 152, - "InteractionType": "WalkTo", - "Fly": true - }, { "DataId": 1009119, "Position": { @@ -92,32 +67,24 @@ "Z": -366.3844 }, "TerritoryId": 152, - "InteractionType": "Interact" + "InteractionType": "Interact", + "Fly": true } ] }, { "Sequence": 4, "Steps": [ - { - "Position": { - "X": 170.76953, - "Y": -30.99653, - "Z": -213.92703 - }, - "TerritoryId": 152, - "InteractionType": "WalkTo", - "Fly": true - }, { "Position": { "X": 190.23474, "Y": -31.415636, "Z": -218.26653 }, + "StopDistance": 0.25, "TerritoryId": 152, "InteractionType": "WalkTo", - "Fly": false + "Fly": true } ] }, @@ -134,17 +101,6 @@ { "Sequence": 255, "Steps": [ - { - "Position": { - "X": 21.611284, - "Y": -3.9309695, - "Z": 212.53413 - }, - "TerritoryId": 152, - "InteractionType": "WalkTo", - "Fly": true, - "AetheryteShortcut": "East Shroud - Hawthorne Hut" - }, { "DataId": 1009097, "Position": { @@ -153,9 +109,11 @@ "Z": 211.16956 }, "TerritoryId": 152, - "InteractionType": "CompleteQuest" + "InteractionType": "CompleteQuest", + "Fly": true, + "AetheryteShortcut": "East Shroud - Hawthorne Hut" } ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/Raid Quests/1201_A Performance for the Ages.json b/QuestPaths/2.x - A Realm Reborn/Raid Quests/1201_A Performance for the Ages.json index 8c058df9..7885937d 100644 --- a/QuestPaths/2.x - A Realm Reborn/Raid Quests/1201_A Performance for the Ages.json +++ b/QuestPaths/2.x - A Realm Reborn/Raid Quests/1201_A Performance for the Ages.json @@ -87,6 +87,7 @@ "Y": -9.645816, "Z": -74.48335 }, + "StopDistance": 0.5, "TerritoryId": 154, "InteractionType": "Combat", "EnemySpawnType": "AutoOnEnterArea", @@ -162,4 +163,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/Raid Quests/1474_Syrcus Tower.json b/QuestPaths/2.x - A Realm Reborn/Raid Quests/1474_Syrcus Tower.json index c856fc84..b483da54 100644 --- a/QuestPaths/2.x - A Realm Reborn/Raid Quests/1474_Syrcus Tower.json +++ b/QuestPaths/2.x - A Realm Reborn/Raid Quests/1474_Syrcus Tower.json @@ -67,6 +67,7 @@ "Y": 15.330521, "Z": -55.832825 }, + "StopDistance": 7, "TerritoryId": 156, "InteractionType": "Interact" } @@ -82,6 +83,7 @@ "Y": 15.428448, "Z": -56.168518 }, + "StopDistance": 7, "TerritoryId": 156, "InteractionType": "Interact" } @@ -125,4 +127,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/Raid Quests/1709_Legacy of Allag.json b/QuestPaths/2.x - A Realm Reborn/Raid Quests/1709_Legacy of Allag.json index 70f6f5af..8cac950f 100644 --- a/QuestPaths/2.x - A Realm Reborn/Raid Quests/1709_Legacy of Allag.json +++ b/QuestPaths/2.x - A Realm Reborn/Raid Quests/1709_Legacy of Allag.json @@ -73,7 +73,15 @@ "TerritoryId": 139, "InteractionType": "WalkTo", "Fly": true, - "AetheryteShortcut": "Upper La Noscea - Camp Bronze Lake" + "AetheryteShortcut": "Upper La Noscea - Camp Bronze Lake", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + -128 + ] }, { "Position": { @@ -83,7 +91,15 @@ }, "TerritoryId": 139, "InteractionType": "WalkTo", - "TargetTerritoryId": 180 + "TargetTerritoryId": 180, + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + -128 + ] }, { "Position": { @@ -93,13 +109,28 @@ }, "TerritoryId": 180, "InteractionType": "WalkTo", - "Fly": true + "Fly": true, + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + -128 + ] }, { "TerritoryId": 180, "InteractionType": "AttuneAetheryte", "Aetheryte": "Outer La Noscea - Camp Overlook", - "StopDistance": 5 + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + -128 + ] }, { "Position": { @@ -109,7 +140,15 @@ }, "TerritoryId": 180, "InteractionType": "WalkTo", - "Fly": true + "Fly": true, + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + -128 + ] }, { "Position": { @@ -119,7 +158,15 @@ }, "TerritoryId": 180, "InteractionType": "WalkTo", - "Fly": true + "Fly": true, + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + -128 + ] }, { "Position": { @@ -129,7 +176,15 @@ }, "TerritoryId": 180, "InteractionType": "WalkTo", - "Fly": true + "Fly": true, + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + -128 + ] }, { "DataId": 2000075, @@ -144,7 +199,15 @@ "KillEnemyDataIds": [ 9487 ], - "$": "0 0 0 0 0 0 -> 16 17 0 0 0 128" + "$": "0 0 0 0 0 0 -> 16 17 0 0 0 128", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] }, { "Position": { @@ -155,7 +218,15 @@ "TerritoryId": 138, "InteractionType": "WalkTo", "Fly": true, - "AetheryteShortcut": "Western La Noscea - Aleport" + "AetheryteShortcut": "Western La Noscea - Aleport", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + -64 + ] }, { "DataId": 2000076, @@ -170,7 +241,15 @@ "KillEnemyDataIds": [ 9488 ], - "$": "16 17 0 0 0 128 -> 0 17 0 0 0 0" + "$": "16 17 0 0 0 128 -> 0 17 0 0 0 0", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] } ] }, @@ -299,9 +378,10 @@ "Z": -465.72064 }, "TerritoryId": 156, - "InteractionType": "CompleteQuest","NextQuestId": 1200 + "InteractionType": "CompleteQuest", + "NextQuestId": 1200 } ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/Raid Quests/494_The World of Darkness.json b/QuestPaths/2.x - A Realm Reborn/Raid Quests/494_The World of Darkness.json index 8b77a608..a095b136 100644 --- a/QuestPaths/2.x - A Realm Reborn/Raid Quests/494_The World of Darkness.json +++ b/QuestPaths/2.x - A Realm Reborn/Raid Quests/494_The World of Darkness.json @@ -1,6 +1,9 @@ { "$schema": "https://carvel.li/questionable/quest-1.0", "Author": "JerryWester", + "TerritoryBlacklist": [ + 151 + ], "QuestSequence": [ { "Sequence": 0, @@ -67,6 +70,7 @@ "Y": 15.33271, "Z": -68.65039 }, + "StopDistance": 7, "TerritoryId": 156, "InteractionType": "Interact" } @@ -110,4 +114,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/Unlocks/Dungeons/1129_Shadows Uncast (Twin Adder).json b/QuestPaths/2.x - A Realm Reborn/Unlocks/Dungeons/1129_Shadows Uncast (Twin Adder).json new file mode 100644 index 00000000..1896a8f1 --- /dev/null +++ b/QuestPaths/2.x - A Realm Reborn/Unlocks/Dungeons/1129_Shadows Uncast (Twin Adder).json @@ -0,0 +1,70 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "TerritoryBlacklist": [ + 171 + ], + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1000168, + "Position": { + "X": -75.48645, + "Y": -0.5013741, + "Z": -5.081299 + }, + "TerritoryId": 132, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1006516, + "Position": { + "X": -82.68872, + "Y": 233.23743, + "Z": 317.1892 + }, + "TerritoryId": 155, + "InteractionType": "Interact", + "AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "TerritoryId": 155, + "InteractionType": "Duty", + "ContentFinderConditionId": 13 + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1003281, + "Position": { + "X": 97.520386, + "Y": 40.248554, + "Z": 81.1322 + }, + "TerritoryId": 128, + "InteractionType": "CompleteQuest", + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] The Aftcastle" + ] + } + ] + } + ] +} diff --git a/QuestPaths/2.x - A Realm Reborn/Unlocks/Dungeons/1130_Shadows Uncast (Immortal Flames).json b/QuestPaths/2.x - A Realm Reborn/Unlocks/Dungeons/1130_Shadows Uncast (Immortal Flames).json new file mode 100644 index 00000000..4f408ce6 --- /dev/null +++ b/QuestPaths/2.x - A Realm Reborn/Unlocks/Dungeons/1130_Shadows Uncast (Immortal Flames).json @@ -0,0 +1,66 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "TerritoryBlacklist": [ + 171 + ], + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1004576, + "Position": { + "X": -141.64954, + "Y": 4.1, + "Z": -114.67157 + }, + "TerritoryId": 130, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1006516, + "Position": { + "X": -82.68872, + "Y": 233.23743, + "Z": 317.1892 + }, + "TerritoryId": 155, + "InteractionType": "Interact", + "AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "TerritoryId": 155, + "InteractionType": "Duty", + "ContentFinderConditionId": 13 + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1004576, + "Position": { + "X": -141.64954, + "Y": 4.1, + "Z": -114.67157 + }, + "TerritoryId": 128, + "InteractionType": "CompleteQuest", + "AetheryteShortcut": "Ul'dah" + } + ] + } + ] +} diff --git a/QuestPaths/2.x - A Realm Reborn/Unlocks/PvP/1104_A Pup No Longer (Maelstrom).json b/QuestPaths/2.x - A Realm Reborn/Unlocks/PvP/1104_A Pup No Longer (Maelstrom).json index 51352849..3ad221ac 100644 --- a/QuestPaths/2.x - A Realm Reborn/Unlocks/PvP/1104_A Pup No Longer (Maelstrom).json +++ b/QuestPaths/2.x - A Realm Reborn/Unlocks/PvP/1104_A Pup No Longer (Maelstrom).json @@ -20,6 +20,25 @@ { "Sequence": 255, "Steps": [ + { + "Position": { + "X": 152.25397, + "Y": 14.095841, + "Z": 668.4288 + }, + "TerritoryId": 135, + "InteractionType": "WalkTo", + "Fly": true, + "AethernetShortcut": [ + "[Limsa Lominsa] The Aftcastle", + "[Limsa Lominsa] Tempest Gate (Lower La Noscea)" + ] + }, + { + "TerritoryId": 135, + "InteractionType": "AttuneAetheryte", + "Aetheryte": "Lower La Noscea - Moraby Drydocks" + }, { "DataId": 1002484, "Position": { @@ -29,11 +48,7 @@ }, "TerritoryId": 135, "InteractionType": "Interact", - "TargetTerritoryId": 250, - "AetheryteShortcut": "Lower La Noscea - Moraby Drydocks", - "SkipIf": [ - "AetheryteShortcutIfInSameTerritory" - ] + "TargetTerritoryId": 250 }, { "TerritoryId": 250, diff --git a/QuestPaths/2.x - A Realm Reborn/Unlocks/PvP/1105_A Pup No Longer (Twin Adder).json b/QuestPaths/2.x - A Realm Reborn/Unlocks/PvP/1105_A Pup No Longer (Twin Adder).json new file mode 100644 index 00000000..dfb69ccd --- /dev/null +++ b/QuestPaths/2.x - A Realm Reborn/Unlocks/PvP/1105_A Pup No Longer (Twin Adder).json @@ -0,0 +1,72 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1000168, + "Position": { + "X": -75.48645, + "Y": -0.5013741, + "Z": -5.081299 + }, + "TerritoryId": 132, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "Position": { + "X": 152.25397, + "Y": 14.095841, + "Z": 668.4288 + }, + "TerritoryId": 135, + "InteractionType": "WalkTo", + "Fly": true, + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Tempest Gate (Lower La Noscea)" + ] + }, + { + "TerritoryId": 135, + "InteractionType": "AttuneAetheryte", + "Aetheryte": "Lower La Noscea - Moraby Drydocks" + }, + { + "DataId": 1002484, + "Position": { + "X": 270.71033, + "Y": 4.4031205, + "Z": 719.9968 + }, + "TerritoryId": 135, + "InteractionType": "Interact", + "TargetTerritoryId": 250 + }, + { + "TerritoryId": 250, + "InteractionType": "AttuneAetheryte", + "Aetheryte": "Wolves' Den Pier" + }, + { + "DataId": 1005184, + "Position": { + "X": 0.015197754, + "Y": 3.5836844, + "Z": -30.380737 + }, + "TerritoryId": 250, + "InteractionType": "CompleteQuest" + } + ] + } + ] +} diff --git a/QuestPaths/2.x - A Realm Reborn/Unlocks/PvP/1106_A Pup No Longer (Immortal Flames).json b/QuestPaths/2.x - A Realm Reborn/Unlocks/PvP/1106_A Pup No Longer (Immortal Flames).json new file mode 100644 index 00000000..20c05611 --- /dev/null +++ b/QuestPaths/2.x - A Realm Reborn/Unlocks/PvP/1106_A Pup No Longer (Immortal Flames).json @@ -0,0 +1,72 @@ +{ + "$schema": "https://carvel.li/questionable/quest-1.0", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1004576, + "Position": { + "X": -141.64954, + "Y": 4.1, + "Z": -114.67157 + }, + "TerritoryId": 130, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "Position": { + "X": 152.25397, + "Y": 14.095841, + "Z": 668.4288 + }, + "TerritoryId": 135, + "InteractionType": "WalkTo", + "Fly": true, + "AetheryteShortcut": "Limsa Lominsa", + "AethernetShortcut": [ + "[Limsa Lominsa] Aetheryte Plaza", + "[Limsa Lominsa] Tempest Gate (Lower La Noscea)" + ] + }, + { + "TerritoryId": 135, + "InteractionType": "AttuneAetheryte", + "Aetheryte": "Lower La Noscea - Moraby Drydocks" + }, + { + "DataId": 1002484, + "Position": { + "X": 270.71033, + "Y": 4.4031205, + "Z": 719.9968 + }, + "TerritoryId": 135, + "InteractionType": "Interact", + "TargetTerritoryId": 250 + }, + { + "TerritoryId": 250, + "InteractionType": "AttuneAetheryte", + "Aetheryte": "Wolves' Den Pier" + }, + { + "DataId": 1005184, + "Position": { + "X": 0.015197754, + "Y": 3.5836844, + "Z": -30.380737 + }, + "TerritoryId": 250, + "InteractionType": "CompleteQuest" + } + ] + } + ] +} diff --git a/QuestPaths/2.x - A Realm Reborn/Unlocks/Trials/1047_A Recurring Problem.json b/QuestPaths/2.x - A Realm Reborn/Unlocks/Trials/1047_A Recurring Problem.json index 0ab8398b..668b3787 100644 --- a/QuestPaths/2.x - A Realm Reborn/Unlocks/Trials/1047_A Recurring Problem.json +++ b/QuestPaths/2.x - A Realm Reborn/Unlocks/Trials/1047_A Recurring Problem.json @@ -40,9 +40,9 @@ }, "TerritoryId": 212, "InteractionType": "CompleteQuest", - "NextQuestId": 1048 + "Comment": "Next quest is picked up as part of 'Moving On'" } ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/Unlocks/Trials/1048_Ifrit Bleeds, We Can Kill It.json b/QuestPaths/2.x - A Realm Reborn/Unlocks/Trials/1048_Ifrit Bleeds, We Can Kill It.json index 86e19fea..3a35d216 100644 --- a/QuestPaths/2.x - A Realm Reborn/Unlocks/Trials/1048_Ifrit Bleeds, We Can Kill It.json +++ b/QuestPaths/2.x - A Realm Reborn/Unlocks/Trials/1048_Ifrit Bleeds, We Can Kill It.json @@ -87,10 +87,9 @@ "TerritoryId": 146, "Mount": false, "InteractionType": "CompleteQuest", - "StopDistance": 5, - "NextQuestId": 1157 + "StopDistance": 5 } ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/Unlocks/Trials/1157_In for Garuda Awakening.json b/QuestPaths/2.x - A Realm Reborn/Unlocks/Trials/1157_In for Garuda Awakening.json index 68a2e9d1..cff17c74 100644 --- a/QuestPaths/2.x - A Realm Reborn/Unlocks/Trials/1157_In for Garuda Awakening.json +++ b/QuestPaths/2.x - A Realm Reborn/Unlocks/Trials/1157_In for Garuda Awakening.json @@ -81,10 +81,9 @@ "Z": 175.34143 }, "TerritoryId": 155, - "InteractionType": "CompleteQuest", - "NextQuestId": 1158 + "InteractionType": "CompleteQuest" } ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/2.x - A Realm Reborn/Unlocks/Trials/1158_In a Titan Spot.json b/QuestPaths/2.x - A Realm Reborn/Unlocks/Trials/1158_In a Titan Spot.json index 24efc941..c827b7f8 100644 --- a/QuestPaths/2.x - A Realm Reborn/Unlocks/Trials/1158_In a Titan Spot.json +++ b/QuestPaths/2.x - A Realm Reborn/Unlocks/Trials/1158_In a Titan Spot.json @@ -100,8 +100,7 @@ { "TerritoryId": 180, "InteractionType": "AttuneAetheryte", - "Aetheryte": "Outer La Noscea - Camp Overlook", - "StopDistance": 5 + "Aetheryte": "Outer La Noscea - Camp Overlook" }, { "Position": { @@ -176,4 +175,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/QuestPaths/5.x - Shadowbringers/MSQ/A1-Crystarium 1/3279_The Syrcus Trench.json b/QuestPaths/5.x - Shadowbringers/MSQ/A1-Crystarium 1/3279_The Syrcus Trench.json index a8182726..ec812663 100644 --- a/QuestPaths/5.x - Shadowbringers/MSQ/A1-Crystarium 1/3279_The Syrcus Trench.json +++ b/QuestPaths/5.x - Shadowbringers/MSQ/A1-Crystarium 1/3279_The Syrcus Trench.json @@ -40,7 +40,8 @@ }, "TerritoryId": 156, "InteractionType": "WalkTo", - "Mount": true + "Mount": true, + "$": "Rising Stones Door" }, { "DataId": 1029791, diff --git a/QuestPaths/quest-v1.json b/QuestPaths/quest-v1.json index d49f4864..4ed21953 100644 --- a/QuestPaths/quest-v1.json +++ b/QuestPaths/quest-v1.json @@ -417,12 +417,18 @@ }, "CompletionQuestVariablesFlags": { "$ref": "#/$defs/CompletionFlags" + }, + "IgnoreQuestMarker": { + "type": "boolean" } }, "required": [ "DataId" ] } + }, + "CombatDelaySecondsAtStart": { + "type": "number" } }, "required": [ diff --git a/Questionable.Model/V1/ComplexCombatData.cs b/Questionable.Model/V1/ComplexCombatData.cs index 69949ef7..93a0d9d4 100644 --- a/Questionable.Model/V1/ComplexCombatData.cs +++ b/Questionable.Model/V1/ComplexCombatData.cs @@ -12,4 +12,5 @@ public sealed class ComplexCombatData public uint? RewardItemId { get; set; } public int? RewardItemCount { get; set; } public IList CompletionQuestVariablesFlags { get; set; } = new List(); + public bool IgnoreQuestMarker { get; } } diff --git a/Questionable.Model/V1/QuestStep.cs b/Questionable.Model/V1/QuestStep.cs index 337f146a..3ecb8f39 100644 --- a/Questionable.Model/V1/QuestStep.cs +++ b/Questionable.Model/V1/QuestStep.cs @@ -59,6 +59,7 @@ public sealed class QuestStep public EEnemySpawnType? EnemySpawnType { get; set; } public IList KillEnemyDataIds { get; set; } = new List(); public IList ComplexCombatData { get; set; } = new List(); + public float? CombatDelaySecondsAtStart { get; set; } public JumpDestination? JumpDestination { get; set; } public uint? ContentFinderConditionId { get; set; } diff --git a/Questionable/Controller/CombatController.cs b/Questionable/Controller/CombatController.cs index bb85caff..d269a061 100644 --- a/Questionable/Controller/CombatController.cs +++ b/Questionable/Controller/CombatController.cs @@ -1,5 +1,5 @@ -using System.Collections.Generic; -using System.Collections.ObjectModel; +using System; +using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; using Dalamud.Game.ClientState.Conditions; @@ -16,7 +16,7 @@ using Questionable.Model.V1; namespace Questionable.Controller; -internal sealed class CombatController +internal sealed class CombatController : IDisposable { private readonly List _combatModules; private readonly ITargetManager _targetManager; @@ -39,6 +39,8 @@ internal sealed class CombatController _clientState = clientState; _gameFunctions = gameFunctions; _logger = logger; + + _clientState.TerritoryChanged += TerritoryChanged; } public bool IsRunning => _currentFight != null; @@ -198,7 +200,14 @@ internal sealed class CombatController if (battleNpc.BattleNpcKind is BattleNpcSubKind.BattleNpcPart or BattleNpcSubKind.Enemy) { var gameObjectStruct = (GameObject*)gameObject.Address; - return gameObjectStruct->NamePlateIconId != 0; + if (gameObjectStruct->NamePlateIconId is 60093 or 60732) // npc that starts a fate or does turn-ins + return false; + + var enemyData = _currentFight?.Data.ComplexCombatDatas.FirstOrDefault(x => x.DataId == battleNpc.DataId); + if (enemyData is { IgnoreQuestMarker: true }) + return battleNpc.StatusFlags.HasFlag(StatusFlags.InCombat); + else + return gameObjectStruct->NamePlateIconId != 0; } else return false; @@ -218,6 +227,14 @@ internal sealed class CombatController _currentFight = null; } + private void TerritoryChanged(ushort territoryId) => Stop(); + + public void Dispose() + { + _clientState.TerritoryChanged -= TerritoryChanged; + Stop(); + } + private sealed class CurrentFight { public required ICombatModule Module { get; init; } diff --git a/Questionable/Controller/NavigationOverrides/MovementOverrideController.cs b/Questionable/Controller/NavigationOverrides/MovementOverrideController.cs index 0cb2b4f3..ee46f639 100644 --- a/Questionable/Controller/NavigationOverrides/MovementOverrideController.cs +++ b/Questionable/Controller/NavigationOverrides/MovementOverrideController.cs @@ -20,6 +20,9 @@ internal sealed class MovementOverrideController new BlacklistedPoint(132, new(45.5f, -8f, 101f), new(50.53978f, -8.046954f, 101.06045f)), + // ul'dah lamp near adventuer's guild + new BlacklistedPoint(130, new(59.5f, 4.25f, -118f), new(60.551353f, 4f, -119.76446f)), + // eastern thanalan new BlacklistedPoint(145, new(-139.75f, -32.25f, 75.25f), new(-139.57748f, -33.785175f, 77.87906f)), @@ -32,6 +35,9 @@ internal sealed class MovementOverrideController // coerthas central highlands new BlacklistedPoint(155, new(-478.75f, 149.25f, -305.75f), new(-476.1802f, 149.06573f, -304.7811f)), + // rising stones, plant boxes + new BlacklistedPoint(351, new(3.25f, 0.75f, 8.5f),new(4f, 0f, 9.5f)), + new BlacklistedPoint(1189, new(574f, -142.25f, 504.25f), new(574.44183f, -142.12766f, 507.60065f)), // heritage found: yyupye's halo (farm, npc: Mahuwsa) diff --git a/Questionable/Controller/Steps/Interactions/Combat.cs b/Questionable/Controller/Steps/Interactions/Combat.cs index f52579c0..a2627248 100644 --- a/Questionable/Controller/Steps/Interactions/Combat.cs +++ b/Questionable/Controller/Steps/Interactions/Combat.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using Microsoft.Extensions.DependencyInjection; using Questionable.Controller.Steps.Common; +using Questionable.Controller.Steps.Shared; using Questionable.Controller.Utils; using Questionable.Model; using Questionable.Model.V1; @@ -16,20 +17,28 @@ internal static class Combat public IEnumerable CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step) { if (step.InteractionType != EInteractionType.Combat) - return []; + yield break; ArgumentNullException.ThrowIfNull(step.EnemySpawnType); - var unmount = serviceProvider.GetRequiredService(); + yield return serviceProvider.GetRequiredService(); + + if (step.CombatDelaySecondsAtStart != null) + { + yield return serviceProvider.GetRequiredService() + .With(TimeSpan.FromSeconds(step.CombatDelaySecondsAtStart.Value)); + } + switch (step.EnemySpawnType) { case EEnemySpawnType.AfterInteraction: { ArgumentNullException.ThrowIfNull(step.DataId); - var interaction = serviceProvider.GetRequiredService() + yield return serviceProvider.GetRequiredService() .With(step.DataId.Value, true); - return [unmount, interaction, CreateTask(quest, sequence, step)]; + yield return CreateTask(quest, sequence, step); + break; } case EEnemySpawnType.AfterItemUse: @@ -37,17 +46,20 @@ internal static class Combat ArgumentNullException.ThrowIfNull(step.DataId); ArgumentNullException.ThrowIfNull(step.ItemId); - var useItem = serviceProvider.GetRequiredService() + yield return serviceProvider.GetRequiredService() .With(step.DataId.Value, step.ItemId.Value); - return [unmount, useItem, CreateTask(quest, sequence, step)]; + yield return CreateTask(quest, sequence, step); + break; } case EEnemySpawnType.AutoOnEnterArea: // automatically triggered when entering area, i.e. only unmount - return [unmount, CreateTask(quest, sequence, step)]; + yield return CreateTask(quest, sequence, step); + break; case EEnemySpawnType.OverworldEnemies: - return [unmount, CreateTask(quest, sequence, step)]; + yield return CreateTask(quest, sequence, step); + break; default: throw new ArgumentOutOfRangeException(nameof(step), $"Unknown spawn type {step.EnemySpawnType}"); diff --git a/Questionable/Questionable.csproj b/Questionable/Questionable.csproj index 61be9589..c6b79adf 100644 --- a/Questionable/Questionable.csproj +++ b/Questionable/Questionable.csproj @@ -1,6 +1,6 @@  - 1.13 + 1.14 dist $(SolutionDir)=X:\ diff --git a/Questionable/Windows/QuestComponents/ARealmRebornComponent.cs b/Questionable/Windows/QuestComponents/ARealmRebornComponent.cs index a3b7e069..a8232905 100644 --- a/Questionable/Windows/QuestComponents/ARealmRebornComponent.cs +++ b/Questionable/Windows/QuestComponents/ARealmRebornComponent.cs @@ -1,10 +1,8 @@ using System.Linq; using Dalamud.Interface; -using Dalamud.Interface.Colors; using Dalamud.Interface.Utility.Raii; using FFXIVClientStructs.FFXIV.Client.Game.UI; using FFXIVClientStructs.FFXIV.Common.Math; -using ImGuiNET; using Questionable.Data; namespace Questionable.Windows.QuestComponents; @@ -13,6 +11,7 @@ internal sealed class ARealmRebornComponent { private const ushort ATimeForEveryPurpose = 425; private const ushort TheUltimateWeapon = 524; + private const ushort GoodIntentions = 363; private static readonly ushort[] RequiredPrimalInstances = [20004, 20006, 20005]; private static readonly ushort[] RequiredAllianceRaidQuests = [1709, 1200, 1201, 1202, 1203, 1474, 494, 495]; @@ -30,12 +29,14 @@ internal sealed class ARealmRebornComponent _uiUtils = uiUtils; } - public bool ShouldDraw => !_gameFunctions.IsQuestComplete(ATimeForEveryPurpose) && + public bool ShouldDraw => !_gameFunctions.IsQuestAcceptedOrComplete(ATimeForEveryPurpose) && _gameFunctions.IsQuestComplete(TheUltimateWeapon); public void Draw() { - DrawPrimals(); + if (!_gameFunctions.IsQuestAcceptedOrComplete(GoodIntentions)) + DrawPrimals(); + DrawAllianceRaids(); }