diff --git a/QuestPathGenerator/RoslynElements/SkipConditionsExtensions.cs b/QuestPathGenerator/RoslynElements/SkipConditionsExtensions.cs index 6307020..02084db 100644 --- a/QuestPathGenerator/RoslynElements/SkipConditionsExtensions.cs +++ b/QuestPathGenerator/RoslynElements/SkipConditionsExtensions.cs @@ -109,6 +109,9 @@ internal static class SkipConditionsExtensions .AsSyntaxNodeOrToken(), Assignment(nameof(NearPositionCondition.MaximumDistance), nearPositionCondition.MaximumDistance, emptyCondition.MaximumDistance) + .AsSyntaxNodeOrToken(), + Assignment(nameof(NearPositionCondition.TerritoryId), + nearPositionCondition.TerritoryId, emptyCondition.TerritoryId) .AsSyntaxNodeOrToken())))); } diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1080_Only You Can Prevent Forest Ire.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1080_Only You Can Prevent Forest Ire.json index 729b4b3..7ebd65e 100644 --- a/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1080_Only You Can Prevent Forest Ire.json +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1080_Only You Can Prevent Forest Ire.json @@ -35,7 +35,8 @@ "Y": 8.712891, "Z": 281.69678 }, - "MaximumDistance": 3 + "MaximumDistance": 3, + "TerritoryId": 153 } } } @@ -150,7 +151,8 @@ "Y": 8.712891, "Z": 281.69678 }, - "MaximumDistance": 3 + "MaximumDistance": 3, + "TerritoryId": 153 } } } diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1082_Following in His Footsteps.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1082_Following in His Footsteps.json index 4be0c9d..5b4cd82 100644 --- a/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1082_Following in His Footsteps.json +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1082_Following in His Footsteps.json @@ -35,7 +35,8 @@ "Y": 8.712891, "Z": 281.69678 }, - "MaximumDistance": 3 + "MaximumDistance": 3, + "TerritoryId": 153 } } } @@ -202,7 +203,8 @@ "Y": 8.712891, "Z": 281.69678 }, - "MaximumDistance": 3 + "MaximumDistance": 3, + "TerritoryId": 153 } } } @@ -293,7 +295,8 @@ "Y": 8.712891, "Z": 281.69678 }, - "MaximumDistance": 3 + "MaximumDistance": 3, + "TerritoryId": 153 } } } @@ -409,7 +412,8 @@ "Y": 8.712891, "Z": 281.69678 }, - "MaximumDistance": 3 + "MaximumDistance": 3, + "TerritoryId": 153 } } } diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1083_Yearn for the Urn.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1083_Yearn for the Urn.json index c71f25c..af43809 100644 --- a/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1083_Yearn for the Urn.json +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1083_Yearn for the Urn.json @@ -35,7 +35,8 @@ "Y": 8.712891, "Z": 281.69678 }, - "MaximumDistance": 3 + "MaximumDistance": 3, + "TerritoryId": 153 } } } @@ -194,7 +195,8 @@ "Y": 8.712891, "Z": 281.69678 }, - "MaximumDistance": 3 + "MaximumDistance": 3, + "TerritoryId": 153 } } } diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1084_Heart of the Forest.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1084_Heart of the Forest.json index 727f168..77a1c61 100644 --- a/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1084_Heart of the Forest.json +++ b/QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/1084_Heart of the Forest.json @@ -35,7 +35,8 @@ "Y": 8.712891, "Z": 281.69678 }, - "MaximumDistance": 3 + "MaximumDistance": 3, + "TerritoryId": 153 } } } @@ -117,7 +118,8 @@ "Y": 8.712891, "Z": 281.69678 }, - "MaximumDistance": 3 + "MaximumDistance": 3, + "TerritoryId": 153 } } } diff --git a/QuestPaths/3.x - Heavensward/Class Quests/WHM/1719_Taint Misbehaving.json b/QuestPaths/3.x - Heavensward/Class Quests/WHM/1719_Taint Misbehaving.json index fe8075f..7843c2c 100644 --- a/QuestPaths/3.x - Heavensward/Class Quests/WHM/1719_Taint Misbehaving.json +++ b/QuestPaths/3.x - Heavensward/Class Quests/WHM/1719_Taint Misbehaving.json @@ -35,7 +35,8 @@ "Y": 8.712891, "Z": 281.69678 }, - "MaximumDistance": 3 + "MaximumDistance": 3, + "TerritoryId": 153 } } } diff --git a/QuestPaths/3.x - Heavensward/Class Quests/WHM/1724_Trials of the Padjals.json b/QuestPaths/3.x - Heavensward/Class Quests/WHM/1724_Trials of the Padjals.json index 637c7e4..a109c03 100644 --- a/QuestPaths/3.x - Heavensward/Class Quests/WHM/1724_Trials of the Padjals.json +++ b/QuestPaths/3.x - Heavensward/Class Quests/WHM/1724_Trials of the Padjals.json @@ -56,7 +56,8 @@ "Y": 8.712891, "Z": 281.69678 }, - "MaximumDistance": 3 + "MaximumDistance": 3, + "TerritoryId": 153 } } } diff --git a/QuestPaths/3.x - Heavensward/Class Quests/WHM/1725_Hands of Healing.json b/QuestPaths/3.x - Heavensward/Class Quests/WHM/1725_Hands of Healing.json index 1a7b66c..e5222ca 100644 --- a/QuestPaths/3.x - Heavensward/Class Quests/WHM/1725_Hands of Healing.json +++ b/QuestPaths/3.x - Heavensward/Class Quests/WHM/1725_Hands of Healing.json @@ -35,7 +35,8 @@ "Y": 8.712891, "Z": 281.69678 }, - "MaximumDistance": 3 + "MaximumDistance": 3, + "TerritoryId": 153 } } } @@ -116,7 +117,8 @@ "Y": 8.712891, "Z": 281.69678 }, - "MaximumDistance": 3 + "MaximumDistance": 3, + "TerritoryId": 153 } } } @@ -244,7 +246,8 @@ "Y": 8.712891, "Z": 281.69678 }, - "MaximumDistance": 3 + "MaximumDistance": 3, + "TerritoryId": 153 } } } diff --git a/QuestPaths/4.x - Stormblood/Class Quests/WAR/2904_The Heart of the Problem.json b/QuestPaths/4.x - Stormblood/Class Quests/WAR/2904_The Heart of the Problem.json index c4710dc..f3cb71d 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/WAR/2904_The Heart of the Problem.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/WAR/2904_The Heart of the Problem.json @@ -13,7 +13,21 @@ "Z": 403.3722 }, "TerritoryId": 622, - "InteractionType": "AcceptQuest" + "InteractionType": "AcceptQuest", + "AetheryteShortcut": "Azim Steppe - Reunion", + "SkipConditions": { + "AetheryteShortcutIf": { + "NearPosition": { + "Position": { + "X": 525.10876, + "Y": -19.50681, + "Z": 403.3722 + }, + "MaximumDistance": 100, + "TerritoryId": 622 + } + } + } } ] }, diff --git a/QuestPaths/4.x - Stormblood/Class Quests/WHM/2414_Unease in East End.json b/QuestPaths/4.x - Stormblood/Class Quests/WHM/2414_Unease in East End.json index 35041f7..c7385a0 100644 --- a/QuestPaths/4.x - Stormblood/Class Quests/WHM/2414_Unease in East End.json +++ b/QuestPaths/4.x - Stormblood/Class Quests/WHM/2414_Unease in East End.json @@ -35,7 +35,8 @@ "Y": 8.712891, "Z": 281.69678 }, - "MaximumDistance": 3 + "MaximumDistance": 3, + "TerritoryId": 153 } } } diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3624_A Voice from the Void.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3624_A Voice from the Void.json index c2dced2..5d58303 100644 --- a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3624_A Voice from the Void.json +++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3624_A Voice from the Void.json @@ -23,7 +23,8 @@ "Y": 7.1558266, "Z": -249.1341 }, - "MaximumDistance": 100 + "MaximumDistance": 100, + "TerritoryId": 815 } } } diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3625_Echoes of the Past.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3625_Echoes of the Past.json index 9b7b8dd..2eeb073 100644 --- a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3625_Echoes of the Past.json +++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3625_Echoes of the Past.json @@ -23,7 +23,8 @@ "Y": 7.1558266, "Z": -249.1341 }, - "MaximumDistance": 100 + "MaximumDistance": 100, + "TerritoryId": 815 } } } diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3626_Nyelbert's Lament.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3626_Nyelbert's Lament.json index 43368db..ca1f720 100644 --- a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3626_Nyelbert's Lament.json +++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3626_Nyelbert's Lament.json @@ -23,7 +23,8 @@ "Y": 7.1558266, "Z": -249.1341 }, - "MaximumDistance": 100 + "MaximumDistance": 100, + "TerritoryId": 815 } } } diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3627_Taynor's Training Day.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3627_Taynor's Training Day.json index 370c4fc..45c3f67 100644 --- a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3627_Taynor's Training Day.json +++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3627_Taynor's Training Day.json @@ -23,7 +23,8 @@ "Y": 7.1558266, "Z": -249.1341 }, - "MaximumDistance": 100 + "MaximumDistance": 100, + "TerritoryId": 815 } } } diff --git a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3628_A Tearful Reunion.json b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3628_A Tearful Reunion.json index 1895ba1..f5e70ec 100644 --- a/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3628_A Tearful Reunion.json +++ b/QuestPaths/5.x - Shadowbringers/Role Quests/Magical Ranged/3628_A Tearful Reunion.json @@ -23,7 +23,8 @@ "Y": 7.1558266, "Z": -249.1341 }, - "MaximumDistance": 100 + "MaximumDistance": 100, + "TerritoryId": 815 } } } diff --git a/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4610_A Brewing Reputation.json b/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4610_A Brewing Reputation.json index 1e9036a..8834ff3 100644 --- a/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4610_A Brewing Reputation.json +++ b/QuestPaths/6.x - Endwalker/Allied Societies/Omicrons/Dailies/4610_A Brewing Reputation.json @@ -157,7 +157,8 @@ "Y": 437.5829, "Z": 333.63843 }, - "MaximumDistance": 100 + "MaximumDistance": 100, + "TerritoryId": 960 } } } diff --git a/QuestPaths/quest-v1.json b/QuestPaths/quest-v1.json index 69b6c85..ad911e7 100644 --- a/QuestPaths/quest-v1.json +++ b/QuestPaths/quest-v1.json @@ -261,11 +261,15 @@ }, "MaximumDistance": { "type": "number" + }, + "TerritoryId": { + "type": "number" } }, "required": [ "Position", - "MaximumDistance" + "MaximumDistance", + "TerritoryId" ], "additionalProperties": false }, @@ -323,11 +327,15 @@ }, "MaximumDistance": { "type": "number" + }, + "TerritoryId": { + "type": "number" } }, "required": [ "Position", - "MaximumDistance" + "MaximumDistance", + "TerritoryId" ], "additionalProperties": false } diff --git a/Questionable.Model/Questing/NearPositionCondition.cs b/Questionable.Model/Questing/NearPositionCondition.cs index 7c5885e..ecfba87 100644 --- a/Questionable.Model/Questing/NearPositionCondition.cs +++ b/Questionable.Model/Questing/NearPositionCondition.cs @@ -9,4 +9,5 @@ public sealed class NearPositionCondition [JsonConverter(typeof(VectorConverter))] public Vector3 Position { get; set; } public float MaximumDistance { get; set; } + public ushort TerritoryId { get; set; } } diff --git a/Questionable/Validation/Validators/ClassQuestShouldHaveShortcutValidator.cs b/Questionable/Validation/Validators/ClassQuestShouldHaveShortcutValidator.cs new file mode 100644 index 0000000..405c8f8 --- /dev/null +++ b/Questionable/Validation/Validators/ClassQuestShouldHaveShortcutValidator.cs @@ -0,0 +1,6 @@ +namespace Questionable.Validation.Validators; + +public class ClassQuestShouldHaveShortcut +{ + +}