"Z": -636.7438
},
"TerritoryId": 814,
- "InteractionType": "AcceptQuest"
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Kholusia - Tomra",
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
}
]
},
"Z": -264.0879
},
"TerritoryId": 896,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "DelaySecondsAtStart": 5
}
]
},
"Z": -264.0879
},
"TerritoryId": 896,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "DelaySecondsAtStart": 5
}
]
},
"InteractionType": "Say",
"ChatMessage": {
"Key": "TEXT_LUCKTA301_03952_SAYTODO_000_220"
- }
+ },
+ "DelaySecondsAtStart": 5
}
]
},
"Z": 375.69226
},
"TerritoryId": 928,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "SkipConditions": {
+ "StepIf": {
+ "NotTargetable": true
+ }
+ }
},
{
"DataId": 2011155,
{
"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": {
"TerritoryId": 814,
"InteractionType": "Interact",
"TargetTerritoryId": 928,
- "Fly": true,
"SkipConditions": {
"StepIf": {
"InTerritory": [
"Z": 274.00623
},
"TerritoryId": 928,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "DelaySecondsAtStart": 5
}
]
},
"InteractionType": "WalkTo",
"RestartNavigationIfCancelled": false
},
+ {
+ "TerritoryId": 928,
+ "InteractionType": "None",
+ "DelaySecondsAtStart": 2
+ },
{
"DataId": 2011109,
"Position": {
}
}
},
+ {
+ "Position": {
+ "X": -234.40671,
+ "Y": 30,
+ "Z": 168.78214
+ },
+ "TerritoryId": 928,
+ "InteractionType": "WalkTo"
+ },
{
"Position": {
"X": -237.90593,
"InteractionType": "WalkTo",
"RestartNavigationIfCancelled": false
},
+ {
+ "TerritoryId": 928,
+ "InteractionType": "None",
+ "DelaySecondsAtStart": 2
+ },
{
"DataId": 2011110,
"Position": {
},
"TerritoryId": 928,
"InteractionType": "WalkTo",
- "RestartNavigationIfCancelled": false
+ "RestartNavigationIfCancelled": false,
+ "DelaySecondsAtStart": 2
+ },
+ {
+ "TerritoryId": 928,
+ "InteractionType": "None",
+ "DelaySecondsAtStart": 2
},
{
"DataId": 2011118,
"InteractionType": "WalkTo",
"RestartNavigationIfCancelled": false
},
+ {
+ "TerritoryId": 928,
+ "InteractionType": "None",
+ "DelaySecondsAtStart": 2
+ },
{
"DataId": 2011115,
"Position": {
},
"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": {
},
"TerritoryId": 928,
"InteractionType": "WalkTo",
- "DisableNavmesh": true
+ "DisableNavmesh": true,
+ "DelaySecondsAtStart": 2
},
{
"Position": {
},
"TerritoryId": 928,
"InteractionType": "WalkTo",
- "RestartNavigationIfCancelled": false
+ "RestartNavigationIfCancelled": false,
+ "DelaySecondsAtStart": 2
},
{
"Position": {
},
"TerritoryId": 928,
"InteractionType": "WalkTo",
- "RestartNavigationIfCancelled": false
+ "RestartNavigationIfCancelled": false,
+ "DelaySecondsAtStart": 2
},
{
"Position": {
"Y": -249.74661,
"Z": -301.74612
}
- }
+ },
+ "DelaySecondsAtStart": 2
},
{
"DataId": 2011269,
--- /dev/null
+{
+ "$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"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$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"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$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"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$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"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$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"
+ }
+ ]
+ }
+ ]
+}
"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"
}
]
}
},
"TerritoryId": 814,
"InteractionType": "Interact",
- "TargetTerritoryId": 895
+ "TargetTerritoryId": 895,
+ "Fly": true
},
{
"DataId": 2010830,
},
"TerritoryId": 896,
"InteractionType": "Interact",
+ "DelaySecondsAtStart": 2,
"CompletionQuestVariablesFlags": [
null,
null,
--- /dev/null
+{
+ "$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
+ }
+ ]
+ }
+ ]
+}
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
{
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<DoInteract>());
+ return new DoInteract(dataId, quest, interactionType, skipMarkerCheck, pickUpItemId, skipConditions,
+ gameFunctions, condition, loggerFactory.CreateLogger<DoInteract>());
}
}
EInteractionType interactionType,
bool skipMarkerCheck,
uint? pickUpItemId,
+ SkipStepConditions? skipConditions,
GameFunctions gameFunctions,
ICondition condition,
ILogger<DoInteract> logger)
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)
else
{
using var _ = ImRaii.Disabled();
- _uiUtils.ChecklistItem($"Unknown Quest ({q})", ImGuiColors.DalamudGrey, FontAwesomeIcon.Question);
+ _uiUtils.ChecklistItem($"Unknown Quest ({q.QuestId})", ImGuiColors.DalamudGrey, FontAwesomeIcon.Question);
}
}
}
_ => "None",
};
- GrandCompany currentGrandCompany = ~_questFunctions.GetGrandCompany();
+ GrandCompany currentGrandCompany = _questFunctions.GetGrandCompany();
_uiUtils.ChecklistItem($"Grand Company: {gcName}", actualQuestInfo.GrandCompany == currentGrandCompany);
}
}