{
- "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
- "Author": "Censored",
- "Disabled": true,
- "Comment": "This is a FATE Allied Society Quest",
- "QuestSequence": [
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "Censored",
+ "Disabled": true,
+ "Comment": "This is a FATE Allied Society Quest",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
{
- "Sequence": 0,
- "Steps": [
- {
- "DataId": 1005561,
- "Position": {
- "X": 47.01306,
- "Y": 6.0734644,
- "Z": 254.01685
- },
- "TerritoryId": 152,
- "InteractionType": "AcceptQuest",
- "AetheryteShortcut": "East Shroud - Hawthorne Hut",
- "Fly": true,
- "SkipConditions": {
- "AetheryteShortcutIf": {
- "InSameTerritory": true
- }
- }
- }
- ]
- },
+ "DataId": 1005561,
+ "Position": {
+ "X": 47.01306,
+ "Y": 6.0734644,
+ "Z": 254.01685
+ },
+ "TerritoryId": 152,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "East Shroud - Hawthorne Hut",
+ "Fly": true,
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
{
- "Sequence": 1,
- "Steps": []
+ "Position": {
+ "X": 37.71168,
+ "Y": 4.7303743,
+ "Z": 250.62769
+ },
+ "TerritoryId": 152,
+ "InteractionType": "WalkTo",
+ "Fly": true,
+ "Land": true,
+ "SkipConditions": {
+ "StepIf": {
+ "NearPosition": {
+ "Position": {
+ "X": 37.71168,
+ "Y": 4.7303743,
+ "Z": 250.62769
+ },
+ "TerritoryId": 152,
+ "MaximumDistance": 10
+ }
+ }
+ }
},
{
- "Sequence": 255,
- "Steps": [
- {
- "Position": {
- "X": 37.71168,
- "Y": 4.7303743,
- "Z": 250.62769
- },
- "TerritoryId": 152,
- "InteractionType": "WalkTo",
- "Fly": true,
- "Land": true,
- "SkipConditions": {
- "StepIf": {
- "NearPosition": {
- "Position": {
- "X": 37.71168,
- "Y": 4.7303743,
- "Z": 250.62769
- },
- "TerritoryId": 152,
- "MaximumDistance": 10
- }
- }
- }
- },
- {
- "DataId": 1005561,
- "Position": {
- "X": 47.01306,
- "Y": 6.0734644,
- "Z": 254.01685
- },
- "TerritoryId": 152,
- "InteractionType": "CompleteQuest"
- }
- ]
+ "DataId": 1005561,
+ "Position": {
+ "X": 47.01306,
+ "Y": 6.0734644,
+ "Z": 254.01685
+ },
+ "TerritoryId": 152,
+ "InteractionType": "CompleteQuest"
}
- ]
+ ]
+ }
+ ]
}
]
},
{
- "Sequence": 4,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 4
},
{
"Sequence": 5,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 255,
]
},
{
- "Sequence": 5,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 5
},
{
"Sequence": 6,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 255,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 255,
]
},
{
- "Sequence": 5,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 5
},
{
"Sequence": 6,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 255,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 4,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 4,
]
},
{
- "Sequence": 5,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 5
},
{
"Sequence": 6,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 255,
]
},
{
- "Sequence": 4,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 4
},
{
"Sequence": 5,
]
},
{
- "Sequence": 4,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 4
},
{
"Sequence": 5,
]
},
{
- "Sequence": 4,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 4
},
{
"Sequence": 5,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 1,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 1
},
{
"Sequence": 2,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 2,
- "Steps": []
+ "Sequence": 2
},
{
"Sequence": 255,
]
}
]
-}
\ No newline at end of file
+}
]\r
},\r
{\r
- "Sequence": 3,\r
- "Steps": [\r
- ]\r
+ "Sequence": 3\r
},\r
{\r
"Sequence": 4,\r
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 7,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 7
},
{
"Sequence": 8,
]
},
{
- "Sequence": 9,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 9
},
{
"Sequence": 10,
]
},
{
- "Sequence": 10,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 10
},
{
"Sequence": 11,
]
},
{
- "Sequence": 6,
- "Steps": [
- ]
+ "Sequence": 6
},
{
"Sequence": 7,
]
},
{
- "Sequence": 3,
- "Steps": []
+ "Sequence": 3
},
{
"Sequence": 4,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 4,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 4,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 4,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 4
},
{
"Sequence": 5,
]
},
{
- "Sequence": 8,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 8
},
{
"Sequence": 9,
]
},
{
- "Sequence": 10,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 10
},
{
"Sequence": 11,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 255,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 255,
]
},
{
- "Sequence": 1,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 1
},
{
"Sequence": 2,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 4,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 4
},
{
"Sequence": 5,
]
},
{
- "Sequence": 1,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 1
},
{
"Sequence": 2,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 255,
]
},
{
- "Sequence": 5,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 5
},
{
"Sequence": 255,
]
},
{
- "Sequence": 4,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 4
},
{
"Sequence": 255,
{\r
- "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",\r
- "Author": "Censored",\r
- "QuestSequence": [\r
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",\r
+ "Author": "Censored",\r
+ "QuestSequence": [\r
+ {\r
+ "Sequence": 0,\r
+ "Steps": [\r
{\r
- "Sequence": 0,\r
- "Steps": [\r
- {\r
- "DataId": 1032868,\r
- "Position": {\r
- "X": -258.59473,\r
- "Y": 53.217506,\r
- "Z": -644.8616\r
- },\r
- "TerritoryId": 614,\r
- "InteractionType": "AcceptQuest",\r
- "AetheryteShortcut": "Yanxia - House of the Fierce",\r
- "Fly": true,\r
- "SkipConditions": {\r
- "AetheryteShortcutIf": {\r
- "InSameTerritory": true\r
- }\r
- }\r
- }\r
- ]\r
- },\r
- {\r
- "Sequence": 1,\r
- "Steps": [\r
- {\r
- "DataId": 1032869,\r
- "Position": {\r
- "X": 127.27539,\r
- "Y": -4.1787133,\r
- "Z": 98.68005\r
- },\r
- "TerritoryId": 759,\r
- "InteractionType": "Interact",\r
- "AetheryteShortcut": "Doman Enclave",\r
- "AethernetShortcut": [\r
- "[Doman Enclave] Aetheryte Plaza",\r
- "[Doman Enclave] Ferry Docks"\r
- ],\r
- "DialogueChoices": [\r
- {\r
- "Type": "YesNo",\r
- "Prompt": "TEXT_LUCKSA002_03835_Q1_000_031",\r
- "Yes": true\r
- }\r
- ]\r
- }\r
- ]\r
- },\r
+ "DataId": 1032868,\r
+ "Position": {\r
+ "X": -258.59473,\r
+ "Y": 53.217506,\r
+ "Z": -644.8616\r
+ },\r
+ "TerritoryId": 614,\r
+ "InteractionType": "AcceptQuest",\r
+ "AetheryteShortcut": "Yanxia - House of the Fierce",\r
+ "Fly": true,\r
+ "SkipConditions": {\r
+ "AetheryteShortcutIf": {\r
+ "InSameTerritory": true\r
+ }\r
+ }\r
+ }\r
+ ]\r
+ },\r
+ {\r
+ "Sequence": 1,\r
+ "Steps": [\r
{\r
- "Sequence": 2,\r
- "Steps": [\r
- {\r
- "Position": {\r
- "X": 0,\r
- "Y": 0,\r
- "Z": 0\r
- },\r
- "TerritoryId": 1,\r
- "InteractionType": "WalkTo",\r
- "Comment": "Filler"\r
- }\r
- ]\r
- },\r
+ "DataId": 1032869,\r
+ "Position": {\r
+ "X": 127.27539,\r
+ "Y": -4.1787133,\r
+ "Z": 98.68005\r
+ },\r
+ "TerritoryId": 759,\r
+ "InteractionType": "Interact",\r
+ "AetheryteShortcut": "Doman Enclave",\r
+ "AethernetShortcut": [\r
+ "[Doman Enclave] Aetheryte Plaza",\r
+ "[Doman Enclave] Ferry Docks"\r
+ ],\r
+ "DialogueChoices": [\r
+ {\r
+ "Type": "YesNo",\r
+ "Prompt": "TEXT_LUCKSA002_03835_Q1_000_031",\r
+ "Yes": true\r
+ }\r
+ ]\r
+ }\r
+ ]\r
+ },\r
+ {\r
+ "Sequence": 2\r
+ },\r
+ {\r
+ "Sequence": 3,\r
+ "Steps": [\r
{\r
- "Sequence": 3,\r
- "Steps": [\r
- {\r
- "DataId": 1032874,\r
- "Position": {\r
- "X": 13.168518,\r
- "Y": -0.23751694,\r
- "Z": 8.377136\r
- },\r
- "TerritoryId": 915,\r
- "InteractionType": "Interact"\r
- }\r
- ]\r
- },\r
+ "DataId": 1032874,\r
+ "Position": {\r
+ "X": 13.168518,\r
+ "Y": -0.23751694,\r
+ "Z": 8.377136\r
+ },\r
+ "TerritoryId": 915,\r
+ "InteractionType": "Interact"\r
+ }\r
+ ]\r
+ },\r
+ {\r
+ "Sequence": 4,\r
+ "Steps": [\r
{\r
- "Sequence": 4,\r
- "Steps": [\r
- {\r
- "DataId": 1032871,\r
- "Position": {\r
- "X": 22.323914,\r
- "Y": 0.09971012,\r
- "Z": -14.694458\r
- },\r
- "TerritoryId": 915,\r
- "InteractionType": "Interact"\r
- }\r
- ]\r
- },\r
+ "DataId": 1032871,\r
+ "Position": {\r
+ "X": 22.323914,\r
+ "Y": 0.09971012,\r
+ "Z": -14.694458\r
+ },\r
+ "TerritoryId": 915,\r
+ "InteractionType": "Interact"\r
+ }\r
+ ]\r
+ },\r
+ {\r
+ "Sequence": 5,\r
+ "Steps": [\r
{\r
- "Sequence": 5,\r
- "Steps": [\r
- {\r
- "DataId": 1032877,\r
- "Position": {\r
- "X": 29.43457,\r
- "Y": 0,\r
- "Z": 30.350098\r
- },\r
- "TerritoryId": 635,\r
- "InteractionType": "Interact",\r
- "AetheryteShortcut": "Rhalgr's Reach"\r
- }\r
- ]\r
- },\r
+ "DataId": 1032877,\r
+ "Position": {\r
+ "X": 29.43457,\r
+ "Y": 0,\r
+ "Z": 30.350098\r
+ },\r
+ "TerritoryId": 635,\r
+ "InteractionType": "Interact",\r
+ "AetheryteShortcut": "Rhalgr's Reach"\r
+ }\r
+ ]\r
+ },\r
+ {\r
+ "Sequence": 255,\r
+ "Steps": [\r
{\r
- "Sequence": 255,\r
- "Steps": [\r
- {\r
- "DataId": 1032877,\r
- "Position": {\r
- "X": 29.43457,\r
- "Y": 0,\r
- "Z": 30.350098\r
- },\r
- "TerritoryId": 635,\r
- "InteractionType": "CompleteQuest",\r
- "NextQuestId": 3836\r
- }\r
- ]\r
+ "DataId": 1032877,\r
+ "Position": {\r
+ "X": 29.43457,\r
+ "Y": 0,\r
+ "Z": 30.350098\r
+ },\r
+ "TerritoryId": 635,\r
+ "InteractionType": "CompleteQuest",\r
+ "NextQuestId": 3836\r
}\r
- ]\r
+ ]\r
+ }\r
+ ]\r
}\r
{\r
- "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",\r
- "Author": "Censored",\r
- "QuestSequence": [\r
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",\r
+ "Author": "Censored",\r
+ "QuestSequence": [\r
+ {\r
+ "Sequence": 0,\r
+ "Steps": [\r
{\r
- "Sequence": 0,\r
- "Steps": [\r
- {\r
- "DataId": 1032877,\r
- "Position": {\r
- "X": 29.43457,\r
- "Y": 0,\r
- "Z": 30.350098\r
- },\r
- "TerritoryId": 635,\r
- "InteractionType": "AcceptQuest",\r
- "AetheryteShortcut": "Rhalgr's Reach",\r
- "SkipConditions": {\r
- "AetheryteShortcutIf": {\r
- "InSameTerritory": true\r
- }\r
- }\r
- }\r
- ]\r
- },\r
- {\r
- "Sequence": 1,\r
- "Steps": [\r
- {\r
- "DataId": 1032869,\r
- "Position": {\r
- "X": 127.27539,\r
- "Y": -4.1787133,\r
- "Z": 98.68005\r
- },\r
- "TerritoryId": 759,\r
- "InteractionType": "Interact",\r
- "AetheryteShortcut": "Doman Enclave",\r
- "AethernetShortcut": [\r
- "[Doman Enclave] Aetheryte Plaza",\r
- "[Doman Enclave] Ferry Docks"\r
- ]\r
- }\r
- ]\r
- },\r
+ "DataId": 1032877,\r
+ "Position": {\r
+ "X": 29.43457,\r
+ "Y": 0,\r
+ "Z": 30.350098\r
+ },\r
+ "TerritoryId": 635,\r
+ "InteractionType": "AcceptQuest",\r
+ "AetheryteShortcut": "Rhalgr's Reach",\r
+ "SkipConditions": {\r
+ "AetheryteShortcutIf": {\r
+ "InSameTerritory": true\r
+ }\r
+ }\r
+ }\r
+ ]\r
+ },\r
+ {\r
+ "Sequence": 1,\r
+ "Steps": [\r
{\r
- "Sequence": 2,\r
- "Steps": [\r
- {\r
- "DataId": 1032901,\r
- "Position": {\r
- "X": 9.567322,\r
- "Y": -6.0169958E-05,\r
- "Z": -10.269409\r
- },\r
- "TerritoryId": 915,\r
- "InteractionType": "SinglePlayerDuty",\r
- "DialogueChoices": [\r
- {\r
- "Type": "YesNo",\r
- "Prompt": "TEXT_LUCKSA003_03836_Q1_100_098",\r
- "Yes": true\r
- }\r
- ]\r
- }\r
- ]\r
- },\r
+ "DataId": 1032869,\r
+ "Position": {\r
+ "X": 127.27539,\r
+ "Y": -4.1787133,\r
+ "Z": 98.68005\r
+ },\r
+ "TerritoryId": 759,\r
+ "InteractionType": "Interact",\r
+ "AetheryteShortcut": "Doman Enclave",\r
+ "AethernetShortcut": [\r
+ "[Doman Enclave] Aetheryte Plaza",\r
+ "[Doman Enclave] Ferry Docks"\r
+ ]\r
+ }\r
+ ]\r
+ },\r
+ {\r
+ "Sequence": 2,\r
+ "Steps": [\r
{\r
- "Sequence": 3,\r
- "Steps": [\r
- {\r
- "Position": {\r
- "X": 0,\r
- "Y": 0,\r
- "Z": 0\r
- },\r
- "TerritoryId": 1,\r
- "InteractionType": "WalkTo",\r
- "Comment": "Filler"\r
- }\r
- ]\r
- },\r
+ "DataId": 1032901,\r
+ "Position": {\r
+ "X": 9.567322,\r
+ "Y": -6.0169958E-05,\r
+ "Z": -10.269409\r
+ },\r
+ "TerritoryId": 915,\r
+ "InteractionType": "SinglePlayerDuty",\r
+ "DialogueChoices": [\r
+ {\r
+ "Type": "YesNo",\r
+ "Prompt": "TEXT_LUCKSA003_03836_Q1_100_098",\r
+ "Yes": true\r
+ }\r
+ ]\r
+ }\r
+ ]\r
+ },\r
+ {\r
+ "Sequence": 3\r
+ },\r
+ {\r
+ "Sequence": 255,\r
+ "Steps": [\r
{\r
- "Sequence": 255,\r
- "Steps": [\r
- {\r
- "DataId": 1032872,\r
- "Position": {\r
- "X": 16.67804,\r
- "Y": 0.03006095,\r
- "Z": -17.868408\r
- },\r
- "TerritoryId": 915,\r
- "InteractionType": "CompleteQuest"\r
- }\r
- ]\r
+ "DataId": 1032872,\r
+ "Position": {\r
+ "X": 16.67804,\r
+ "Y": 0.03006095,\r
+ "Z": -17.868408\r
+ },\r
+ "TerritoryId": 915,\r
+ "InteractionType": "CompleteQuest"\r
}\r
- ]\r
+ ]\r
+ }\r
+ ]\r
}\r
]
},
{
- "Sequence": 4,
- "Steps": []
+ "Sequence": 4
},
{
"Sequence": 5,
]
},
{
- "Sequence": 4,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 4
},
{
"Sequence": 5,
]
},
{
- "Sequence": 4,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 4
},
{
"Sequence": 255,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 5,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 5
},
{
"Sequence": 255,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 255,
]
},
{
- "Sequence": 5,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 5
},
{
"Sequence": 255,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 255,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 4,
]
},
{
- "Sequence": 5,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 5
},
{
"Sequence": 6,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 4,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 4
},
{
"Sequence": 5,
]
},
{
- "Sequence": 6,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 6
},
{
"Sequence": 7,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 255,
]
},
{
- "Sequence": 5,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 5
},
{
"Sequence": 255,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 4,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 4
},
{
"Sequence": 255,
]
},
{
- "Sequence": 4,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 4
},
{
"Sequence": 255,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 4,
]
},
{
- "Sequence": 5,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 5
},
{
"Sequence": 255,
]
},
{
- "Sequence": 8,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 8
},
{
"Sequence": 255,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 255,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 4,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 4
},
{
"Sequence": 5,
]
},
{
- "Sequence": 6,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 6
},
{
"Sequence": 255,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 5,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 5
},
{
"Sequence": 6,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 4,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 4,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 4,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 4
},
{
"Sequence": 5,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 255,
]
},
{
- "Sequence": 5,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 5
},
{
"Sequence": 255,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 6,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 6
},
{
"Sequence": 255,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 4,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 4
},
{
"Sequence": 255,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 4,
]
},
{
- "Sequence": 5,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 5
},
{
"Sequence": 6,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 4,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 4
},
{
"Sequence": 5,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 4,
]
},
{
- "Sequence": 5,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 5
},
{
"Sequence": 255,
]
},
{
- "Sequence": 2,
- "Steps": []
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 7,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 7
},
{
"Sequence": 255,
]
},
{
- "Sequence": 4,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 4
},
{
"Sequence": 255,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 4,
]
},
{
- "Sequence": 5,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 5
},
{
"Sequence": 6,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 4,
]
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 2
},
{
"Sequence": 3,
]
},
{
- "Sequence": 4,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 4
},
{
"Sequence": 5,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 4,
]
},
{
- "Sequence": 3,
- "Steps": [
- {
- "Position": {
- "X": 0,
- "Y": 0,
- "Z": 0
- },
- "TerritoryId": 1,
- "InteractionType": "WalkTo",
- "Comment": "Filler"
- }
- ]
+ "Sequence": 3
},
{
"Sequence": 4,
"type": "array",
"items": {
"$ref": "#/$defs/Step"
- }
+ },
+ "minItems": 1,
+ "description": "All steps necessary to complete the quest sequence. If a sequence has no steps (e.g. if it is cutscene-only), this element should not be used."
},
"Comment": {
"type": "string"
public sealed class QuestSequence
{
- public int Sequence { get; set; }
+ public byte Sequence { get; set; }
public string? Comment { get; set; }
public List<QuestStep> Steps { get; set; } = new();
return;
}
- if (questToRun.Step >= sequence.Steps.Count)
+ if (sequence.Steps.Count > 0 && questToRun.Step >= sequence.Steps.Count)
{
DebugState = "Step not found";
Stop("Unknown step");
}
}
- public (QuestSequence? Sequence, QuestStep? Step) GetNextStep()
+ public (QuestSequence? Sequence, QuestStep? Step, bool createTasks) GetNextStep()
{
if (CurrentQuest == null)
- return (null, null);
+ return (null, null, false);
var q = CurrentQuest.Quest;
var seq = q.FindSequence(CurrentQuest.Sequence);
if (seq == null)
- return (null, null);
+ return (null, null, true);
+
+ if (seq.Steps.Count == 0)
+ return (seq, null, true);
if (CurrentQuest.Step >= seq.Steps.Count)
- return (null, null);
+ return (null, null, false);
- return (seq, seq.Steps[CurrentQuest.Step]);
+ return (seq, seq.Steps[CurrentQuest.Step], true);
}
public void IncreaseStepCount(ElementId? questId, int? sequence, bool shouldContinue = false)
{
lock (_progressLock)
{
- (QuestSequence? seq, QuestStep? step) = GetNextStep();
+ (QuestSequence? seq, QuestStep? step, _) = GetNextStep();
if (CurrentQuest == null || seq == null || step == null)
{
_logger.LogWarning("Unable to retrieve next quest step, not increasing step count");
if (TryPickPriorityQuest())
_logger.LogInformation("Using priority quest over current quest");
- (QuestSequence? seq, QuestStep? step) = GetNextStep();
- if (CurrentQuest == null || seq == null || step == null)
+ (QuestSequence? seq, QuestStep? step, bool createTasks) = GetNextStep();
+ if (CurrentQuest == null || seq == null)
{
if (CurrentQuestDetails?.Progress.Quest.Id is SatisfactionSupplyNpcId &&
CurrentQuestDetails?.Progress.Sequence == 1 &&
CurrentQuest?.Quest.Id, CurrentQuest?.Sequence, CurrentQuest?.Step);
}
- return;
+ if (CurrentQuest == null || !createTasks)
+ return;
}
_movementController.Stop();
try
{
- foreach (var task in _taskCreator.CreateTasks(CurrentQuest.Quest, seq, step))
+ foreach (var task in _taskCreator.CreateTasks(CurrentQuest.Quest, CurrentQuest.Sequence, seq, step))
_taskQueue.Enqueue(task);
}
catch (Exception e)
foreach (var itemToGather in step.ItemsToGather)
{
- yield return new DelayedGatheringTask(itemToGather, quest);
+ yield return new DelayedGatheringTask(itemToGather, quest, (byte)sequence.Sequence);
}
}
}
- internal sealed record DelayedGatheringTask(GatheredItem GatheredItem, Quest Quest) : ITask
+ internal sealed record DelayedGatheringTask(GatheredItem GatheredItem, Quest Quest, byte Sequence) : ITask
{
public override string ToString() => $"Gathering(pending for {GatheredItem.ItemId})";
}
foreach (var gatheringStep in gatheringSequence.Steps)
{
foreach (var task in serviceProvider.GetRequiredService<TaskCreator>()
- .CreateTasks(Task.Quest, gatheringSequence, gatheringStep))
+ .CreateTasks(Task.Quest, Task.Sequence, gatheringSequence, gatheringStep))
if (task is WaitAtEnd.NextStep)
yield return new SkipMarker();
else
using Dalamud.Plugin.Services;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
+using Questionable.Controller.Steps.Common;
using Questionable.Controller.Steps.Interactions;
+using Questionable.Controller.Steps.Shared;
using Questionable.Data;
using Questionable.Model;
using Questionable.Model.Questing;
private readonly IServiceProvider _serviceProvider;
private readonly TerritoryData _territoryData;
private readonly IClientState _clientState;
+ private readonly IChatGui _chatGui;
private readonly ILogger<TaskCreator> _logger;
public TaskCreator(
IServiceProvider serviceProvider,
TerritoryData territoryData,
IClientState clientState,
+ IChatGui chatGui,
ILogger<TaskCreator> logger)
{
_serviceProvider = serviceProvider;
_territoryData = territoryData;
_clientState = clientState;
+ _chatGui = chatGui;
_logger = logger;
}
- public IReadOnlyList<ITask> CreateTasks(Quest quest, QuestSequence sequence, QuestStep step)
+ public IReadOnlyList<ITask> CreateTasks(Quest quest, byte sequenceNumber, QuestSequence? sequence, QuestStep? step)
{
- using var scope = _serviceProvider.CreateScope();
- var newTasks = scope.ServiceProvider.GetRequiredService<IEnumerable<ITaskFactory>>()
- .SelectMany(x =>
- {
- List<ITask> tasks = x.CreateAllTasks(quest, sequence, step).ToList();
-
- if (tasks.Count > 0 && _logger.IsEnabled(LogLevel.Trace))
+ List<ITask> newTasks;
+ if (sequence == null)
+ {
+ _chatGui.PrintError(
+ $"Path for quest '{quest.Info.Name}' ({quest.Id}) does not contain sequence {sequenceNumber}, please report this.",
+ CommandHandler.MessageTag, CommandHandler.TagColor);
+ newTasks = [new WaitAtEnd.WaitNextStepOrSequence()];
+ }
+ else if (step == null)
+ {
+ newTasks = [new WaitAtEnd.WaitNextStepOrSequence()];
+ }
+ else
+ {
+ using var scope = _serviceProvider.CreateScope();
+ newTasks = scope.ServiceProvider.GetRequiredService<IEnumerable<ITaskFactory>>()
+ .SelectMany(x =>
{
- string factoryName = x.GetType().FullName ?? x.GetType().Name;
- if (factoryName.Contains('.', StringComparison.Ordinal))
- factoryName = factoryName[(factoryName.LastIndexOf('.') + 1)..];
+ List<ITask> tasks = x.CreateAllTasks(quest, sequence, step).ToList();
- _logger.LogTrace("Factory {FactoryName} created Task {TaskNames}",
- factoryName, string.Join(", ", tasks.Select(y => y.ToString())));
- }
+ if (tasks.Count > 0 && _logger.IsEnabled(LogLevel.Trace))
+ {
+ string factoryName = x.GetType().FullName ?? x.GetType().Name;
+ if (factoryName.Contains('.', StringComparison.Ordinal))
+ factoryName = factoryName[(factoryName.LastIndexOf('.') + 1)..];
- return tasks;
- })
- .ToList();
+ _logger.LogTrace("Factory {FactoryName} created Task {TaskNames}",
+ factoryName, string.Join(", ", tasks.Select(y => y.ToString())));
+ }
- var singlePlayerDutyTask = newTasks
- .Where(y => y is SinglePlayerDuty.StartSinglePlayerDuty)
- .Cast<SinglePlayerDuty.StartSinglePlayerDuty>()
- .FirstOrDefault();
- if (singlePlayerDutyTask != null &&
- _territoryData.TryGetContentFinderCondition(singlePlayerDutyTask.ContentFinderConditionId,
- out var cfcData))
- {
- // if we have a single player duty in queue, we check if we're in the matching territory
- // if yes, skip all steps before (e.g. teleporting, waiting for navmesh, moving, interacting)
- if (_clientState.TerritoryType == cfcData.TerritoryId)
+ return tasks;
+ })
+ .ToList();
+
+ var singlePlayerDutyTask = newTasks
+ .Where(y => y is SinglePlayerDuty.StartSinglePlayerDuty)
+ .Cast<SinglePlayerDuty.StartSinglePlayerDuty>()
+ .FirstOrDefault();
+ if (singlePlayerDutyTask != null &&
+ _territoryData.TryGetContentFinderCondition(singlePlayerDutyTask.ContentFinderConditionId,
+ out var cfcData))
{
- int index = newTasks.IndexOf(singlePlayerDutyTask);
- _logger.LogWarning(
- "Skipping {SkippedTaskCount} out of {TotalCount} tasks, questionable was started while in single player duty",
- index + 1, newTasks.Count);
+ // if we have a single player duty in queue, we check if we're in the matching territory
+ // if yes, skip all steps before (e.g. teleporting, waiting for navmesh, moving, interacting)
+ if (_clientState.TerritoryType == cfcData.TerritoryId)
+ {
+ int index = newTasks.IndexOf(singlePlayerDutyTask);
+ _logger.LogWarning(
+ "Skipping {SkippedTaskCount} out of {TotalCount} tasks, questionable was started while in single player duty",
+ index + 1, newTasks.Count);
- newTasks.RemoveRange(0, index + 1);
- _logger.LogInformation("Next actual task: {NextTask}, total tasks left: {RemainingTaskCount}",
- newTasks.FirstOrDefault(),
- newTasks.Count);
+ newTasks.RemoveRange(0, index + 1);
+ _logger.LogInformation("Next actual task: {NextTask}, total tasks left: {RemainingTaskCount}",
+ newTasks.FirstOrDefault(),
+ newTasks.Count);
+ }
}
}
else
{
_logger.LogInformation("Tasks for {QuestId}, {Sequence}, {Step}: {Tasks}",
- quest.Id, sequence.Sequence, sequence.Steps.IndexOf(step),
+ quest.Id, sequenceNumber, step != null ? sequence?.Steps.IndexOf(step) : null,
string.Join(", ", newTasks.Select(x => x.ToString())));
}