diff --git a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3671_Word about Komra.json b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3671_Word about Komra.json index 4e46eb25..89d9d74e 100644 --- a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3671_Word about Komra.json +++ b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3671_Word about Komra.json @@ -13,7 +13,13 @@ "Z": -636.7438 }, "TerritoryId": 814, - "InteractionType": "AcceptQuest" + "InteractionType": "AcceptQuest", + "AetheryteShortcut": "Kholusia - Tomra", + "SkipConditions": { + "AetheryteShortcutIf": { + "InSameTerritory": true + } + } } ] }, diff --git a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3720_Tails, You Lose.json b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3720_Tails, You Lose.json index 3d9d3ca8..22f98486 100644 --- a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3720_Tails, You Lose.json +++ b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3720_Tails, You Lose.json @@ -123,7 +123,8 @@ "Z": -264.0879 }, "TerritoryId": 896, - "InteractionType": "Interact" + "InteractionType": "Interact", + "DelaySecondsAtStart": 5 } ] }, diff --git a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3721_Heads, I Win.json b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3721_Heads, I Win.json index ba6db5e5..dcc1a8d6 100644 --- a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3721_Heads, I Win.json +++ b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3721_Heads, I Win.json @@ -124,7 +124,8 @@ "Z": -264.0879 }, "TerritoryId": 896, - "InteractionType": "Interact" + "InteractionType": "Interact", + "DelaySecondsAtStart": 5 } ] }, diff --git a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3952_We Can Rebuild Her.json b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3952_We Can Rebuild Her.json index 7c7853d5..9f73fa53 100644 --- a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3952_We Can Rebuild Her.json +++ b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3952_We Can Rebuild Her.json @@ -174,7 +174,8 @@ "InteractionType": "Say", "ChatMessage": { "Key": "TEXT_LUCKTA301_03952_SAYTODO_000_220" - } + }, + "DelaySecondsAtStart": 5 } ] }, diff --git a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3953_Everything You Know Is Wrong.json b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3953_Everything You Know Is Wrong.json index c12c26f5..f0217cd8 100644 --- a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3953_Everything You Know Is Wrong.json +++ b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3953_Everything You Know Is Wrong.json @@ -53,7 +53,12 @@ "Z": 375.69226 }, "TerritoryId": 928, - "InteractionType": "Interact" + "InteractionType": "Interact", + "SkipConditions": { + "StepIf": { + "NotTargetable": true + } + } }, { "DataId": 2011155, diff --git a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3998_To Make Amends.json b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3998_To Make Amends.json index d5b6ce28..1eae4da6 100644 --- a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3998_To Make Amends.json +++ b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/3998_To Make Amends.json @@ -202,6 +202,23 @@ { "Sequence": 12, "Steps": [ + { + "Position": { + "X": 702.07294, + "Y": 293.53958, + "Z": -159.18176 + }, + "TerritoryId": 814, + "InteractionType": "WalkTo", + "Fly": true, + "SkipConditions": { + "StepIf": { + "InTerritory": [ + 928 + ] + } + } + }, { "DataId": 2011154, "Position": { @@ -212,7 +229,6 @@ "TerritoryId": 814, "InteractionType": "Interact", "TargetTerritoryId": 928, - "Fly": true, "SkipConditions": { "StepIf": { "InTerritory": [ @@ -239,7 +255,8 @@ "Z": 274.00623 }, "TerritoryId": 928, - "InteractionType": "Interact" + "InteractionType": "Interact", + "DelaySecondsAtStart": 5 } ] }, @@ -256,6 +273,11 @@ "InteractionType": "WalkTo", "RestartNavigationIfCancelled": false }, + { + "TerritoryId": 928, + "InteractionType": "None", + "DelaySecondsAtStart": 2 + }, { "DataId": 2011109, "Position": { @@ -271,6 +293,15 @@ } } }, + { + "Position": { + "X": -234.40671, + "Y": 30, + "Z": 168.78214 + }, + "TerritoryId": 928, + "InteractionType": "WalkTo" + }, { "Position": { "X": -237.90593, @@ -321,6 +352,11 @@ "InteractionType": "WalkTo", "RestartNavigationIfCancelled": false }, + { + "TerritoryId": 928, + "InteractionType": "None", + "DelaySecondsAtStart": 2 + }, { "DataId": 2011110, "Position": { @@ -379,7 +415,13 @@ }, "TerritoryId": 928, "InteractionType": "WalkTo", - "RestartNavigationIfCancelled": false + "RestartNavigationIfCancelled": false, + "DelaySecondsAtStart": 2 + }, + { + "TerritoryId": 928, + "InteractionType": "None", + "DelaySecondsAtStart": 2 }, { "DataId": 2011118, @@ -406,6 +448,11 @@ "InteractionType": "WalkTo", "RestartNavigationIfCancelled": false }, + { + "TerritoryId": 928, + "InteractionType": "None", + "DelaySecondsAtStart": 2 + }, { "DataId": 2011115, "Position": { diff --git a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4035_Brave New World.json b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4035_Brave New World.json index 3ebdc6af..60d858be 100644 --- a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4035_Brave New World.json +++ b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4035_Brave New World.json @@ -46,7 +46,18 @@ }, "TerritoryId": 928, "InteractionType": "WalkTo", - "RestartNavigationIfCancelled": false + "RestartNavigationIfCancelled": false, + "DelaySecondsAtStart": 2 + }, + { + "Position": { + "X": -234.40671, + "Y": 30, + "Z": 168.78214 + }, + "TerritoryId": 928, + "InteractionType": "WalkTo", + "DelaySecondsAtStart": 2 }, { "Position": { @@ -106,7 +117,8 @@ }, "TerritoryId": 928, "InteractionType": "WalkTo", - "DisableNavmesh": true + "DisableNavmesh": true, + "DelaySecondsAtStart": 2 }, { "Position": { @@ -116,7 +128,8 @@ }, "TerritoryId": 928, "InteractionType": "WalkTo", - "RestartNavigationIfCancelled": false + "RestartNavigationIfCancelled": false, + "DelaySecondsAtStart": 2 }, { "Position": { @@ -126,7 +139,8 @@ }, "TerritoryId": 928, "InteractionType": "WalkTo", - "RestartNavigationIfCancelled": false + "RestartNavigationIfCancelled": false, + "DelaySecondsAtStart": 2 }, { "Position": { @@ -144,7 +158,8 @@ "Y": -249.74661, "Z": -301.74612 } - } + }, + "DelaySecondsAtStart": 2 }, { "DataId": 2011269, diff --git a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4045_Dwarves of a Beard.json b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4045_Dwarves of a Beard.json new file mode 100644 index 00000000..65ec863d --- /dev/null +++ b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4045_Dwarves of a Beard.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1032227, + "Position": { + "X": 665.8884, + "Y": 297.47797, + "Z": -160.57074 + }, + "TerritoryId": 814, + "InteractionType": "AcceptQuest" + } + ] + } + ] +} diff --git a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4046_Strange Glagg.json b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4046_Strange Glagg.json new file mode 100644 index 00000000..65ec863d --- /dev/null +++ b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4046_Strange Glagg.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1032227, + "Position": { + "X": 665.8884, + "Y": 297.47797, + "Z": -160.57074 + }, + "TerritoryId": 814, + "InteractionType": "AcceptQuest" + } + ] + } + ] +} diff --git a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4047_Dwarves of a Beard Freshened.json b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4047_Dwarves of a Beard Freshened.json new file mode 100644 index 00000000..65ec863d --- /dev/null +++ b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4047_Dwarves of a Beard Freshened.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1032227, + "Position": { + "X": 665.8884, + "Y": 297.47797, + "Z": -160.57074 + }, + "TerritoryId": 814, + "InteractionType": "AcceptQuest" + } + ] + } + ] +} diff --git a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4048_Stranger Glagg.json b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4048_Stranger Glagg.json new file mode 100644 index 00000000..65ec863d --- /dev/null +++ b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4048_Stranger Glagg.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1032227, + "Position": { + "X": 665.8884, + "Y": 297.47797, + "Z": -160.57074 + }, + "TerritoryId": 814, + "InteractionType": "AcceptQuest" + } + ] + } + ] +} diff --git a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4049_All's Well That Ends with Ale.json b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4049_All's Well That Ends with Ale.json new file mode 100644 index 00000000..65ec863d --- /dev/null +++ b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4049_All's Well That Ends with Ale.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1032227, + "Position": { + "X": 665.8884, + "Y": 297.47797, + "Z": -160.57074 + }, + "TerritoryId": 814, + "InteractionType": "AcceptQuest" + } + ] + } + ] +} diff --git a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4050_All That Grinds Is Not Gloom.json b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4050_All That Grinds Is Not Gloom.json index 318f37c0..4c16a443 100644 --- a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4050_All That Grinds Is Not Gloom.json +++ b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4050_All That Grinds Is Not Gloom.json @@ -26,6 +26,11 @@ "Type": "List", "Prompt": "TEXT_LUCKTA521_04050_Q1_000_000", "Answer": "TEXT_LUCKTA521_04050_A1_000_002" + }, + { + "Type": "List", + "Prompt": "TEXT_LUCKTA521_04050_Q2_000_000", + "Answer": "TEXT_LUCKTA521_04050_A2_000_001" } ] } @@ -43,7 +48,8 @@ }, "TerritoryId": 814, "InteractionType": "Interact", - "TargetTerritoryId": 895 + "TargetTerritoryId": 895, + "Fly": true }, { "DataId": 2010830, @@ -93,6 +99,7 @@ }, "TerritoryId": 896, "InteractionType": "Interact", + "DelaySecondsAtStart": 2, "CompletionQuestVariablesFlags": [ null, null, diff --git a/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4053_Whence the Heart Leads.json b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4053_Whence the Heart Leads.json new file mode 100644 index 00000000..8480e069 --- /dev/null +++ b/QuestPaths/5.x - Shadowbringers/Alliance Raid Quests/4053_Whence the Heart Leads.json @@ -0,0 +1,61 @@ +{ + "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1032227, + "Position": { + "X": 665.8884, + "Y": 297.47797, + "Z": -160.57074 + }, + "TerritoryId": 814, + "InteractionType": "AcceptQuest", + "Fly": true, + "AetheryteShortcut": "Kholusia - Stilltide", + "SkipConditions": { + "AetheryteShortcutIf": { + "InSameTerritory": true + } + } + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1036045, + "Position": { + "X": 10.0251465, + "Y": 82.83513, + "Z": -53.60504 + }, + "TerritoryId": 820, + "InteractionType": "Interact", + "AetheryteShortcut": "Eulmore" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1032227, + "Position": { + "X": 665.8884, + "Y": 297.47797, + "Z": -160.57074 + }, + "TerritoryId": 814, + "InteractionType": "CompleteQuest", + "AetheryteShortcut": "Kholusia - Stilltide", + "Fly": true + } + ] + } + ] +} diff --git a/Questionable/Controller/Steps/Interactions/Interact.cs b/Questionable/Controller/Steps/Interactions/Interact.cs index b048b7ff..e233bfde 100644 --- a/Questionable/Controller/Steps/Interactions/Interact.cs +++ b/Questionable/Controller/Steps/Interactions/Interact.cs @@ -16,7 +16,10 @@ namespace Questionable.Controller.Steps.Interactions; internal static class Interact { - internal sealed class Factory(GameFunctions gameFunctions, Configuration configuration, ICondition condition, + internal sealed class Factory( + GameFunctions gameFunctions, + Configuration configuration, + ICondition condition, ILoggerFactory loggerFactory) : ITaskFactory { @@ -54,14 +57,14 @@ internal static class Interact yield return Interact(step.DataId.Value, quest, step.InteractionType, step.TargetTerritoryId != null || quest.Id is SatisfactionSupplyNpcId || - step.SkipConditions is { StepIf.Never: true }, step.PickUpItemId); + step.SkipConditions is { StepIf.Never: true }, step.PickUpItemId, step.SkipConditions?.StepIf); } internal ITask Interact(uint dataId, Quest? quest, EInteractionType interactionType, - bool skipMarkerCheck = false, uint? pickUpItemId = null) + bool skipMarkerCheck = false, uint? pickUpItemId = null, SkipStepConditions? skipConditions = null) { - return new DoInteract(dataId, quest, interactionType, skipMarkerCheck, pickUpItemId, gameFunctions, - condition, loggerFactory.CreateLogger()); + return new DoInteract(dataId, quest, interactionType, skipMarkerCheck, pickUpItemId, skipConditions, + gameFunctions, condition, loggerFactory.CreateLogger()); } } @@ -71,6 +74,7 @@ internal static class Interact EInteractionType interactionType, bool skipMarkerCheck, uint? pickUpItemId, + SkipStepConditions? skipConditions, GameFunctions gameFunctions, ICondition condition, ILogger logger) @@ -97,6 +101,13 @@ internal static class Interact return false; } + if (!gameObject.IsTargetable && skipConditions is { Never: false, NotTargetable: true }) + { + logger.LogInformation("Not interacting with {DataId} because it is not targetable (but skippable)", + dataId); + return false; + } + // this is only relevant for followers on quests if (!gameObject.IsTargetable && condition[ConditionFlag.Mounted] && gameObject.ObjectKind != ObjectKind.GatheringPoint) diff --git a/Questionable/Windows/QuestComponents/QuestTooltipComponent.cs b/Questionable/Windows/QuestComponents/QuestTooltipComponent.cs index 702541b6..3f426f6c 100644 --- a/Questionable/Windows/QuestComponents/QuestTooltipComponent.cs +++ b/Questionable/Windows/QuestComponents/QuestTooltipComponent.cs @@ -117,7 +117,7 @@ internal sealed class QuestTooltipComponent else { using var _ = ImRaii.Disabled(); - _uiUtils.ChecklistItem($"Unknown Quest ({q})", ImGuiColors.DalamudGrey, FontAwesomeIcon.Question); + _uiUtils.ChecklistItem($"Unknown Quest ({q.QuestId})", ImGuiColors.DalamudGrey, FontAwesomeIcon.Question); } } } @@ -180,7 +180,7 @@ internal sealed class QuestTooltipComponent _ => "None", }; - GrandCompany currentGrandCompany = ~_questFunctions.GetGrandCompany(); + GrandCompany currentGrandCompany = _questFunctions.GetGrandCompany(); _uiUtils.ChecklistItem($"Grand Company: {gcName}", actualQuestInfo.GrandCompany == currentGrandCompany); } }