.AsSyntaxNodeOrToken(),
AssignmentList(nameof(QuestStep.PointMenuChoices), step.PointMenuChoices)
.AsSyntaxNodeOrToken(),
- Assignment(nameof(QuestStep.PickupQuestId), step.PickupQuestId, emptyStep.PickupQuestId)
+ Assignment(nameof(QuestStep.PickUpQuestId), step.PickUpQuestId, emptyStep.PickUpQuestId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.TurnInQuestId), step.TurnInQuestId, emptyStep.TurnInQuestId)
.AsSyntaxNodeOrToken(),
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1000927,
+ "Position": {
+ "X": -1.2055054,
+ "Y": 44.999886,
+ "Z": -255.8786
+ },
+ "TerritoryId": 128,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1006761,
+ "Position": {
+ "X": 520.2562,
+ "Y": 17.62488,
+ "Z": 470.51184
+ },
+ "TerritoryId": 137,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Eastern La Noscea - Costa Del Sol"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1006763,
+ "Position": {
+ "X": 494.9568,
+ "Y": 11.450662,
+ "Z": 329.76257
+ },
+ "TerritoryId": 137,
+ "InteractionType": "SinglePlayerDuty"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1006762,
+ "Position": {
+ "X": 494.16345,
+ "Y": 12.305895,
+ "Z": 337.27014
+ },
+ "TerritoryId": 137,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1006746,
+ "Position": {
+ "X": 460.65454,
+ "Y": 8.309061,
+ "Z": 74.47925
+ },
+ "TerritoryId": 137,
+ "InteractionType": "CompleteQuest",
+ "NextQuestId": 1050
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "TerritoryId": 137,
+ "InteractionType": "EquipItem",
+ "ItemId": 4544
+ },
+ {
+ "DataId": 1006746,
+ "Position": {
+ "X": 460.65454,
+ "Y": 8.309061,
+ "Z": 74.47925
+ },
+ "TerritoryId": 137,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1004962,
+ "Position": {
+ "X": -300.1908,
+ "Y": 7.2785034,
+ "Z": 410.94055
+ },
+ "TerritoryId": 146,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Southern Thanalan - Forgotten Springs",
+ "SkipIf": [
+ "AetheryteShortcutIfInSameTerritory"
+ ],
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ },
+ {
+ "DataId": 1006735,
+ "Position": {
+ "X": -316.1822,
+ "Y": 8.844355,
+ "Z": 433.82922
+ },
+ "TerritoryId": 146,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
+ },
+ {
+ "DataId": 1006288,
+ "Position": {
+ "X": -361.40997,
+ "Y": 8.46532,
+ "Z": 426.13855
+ },
+ "TerritoryId": 146,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "Position": {
+ "X": 156.89783,
+ "Y": 4.3410587,
+ "Z": 831.42926
+ },
+ "TerritoryId": 146,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [
+ 1917
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1006746,
+ "Position": {
+ "X": 460.65454,
+ "Y": 8.309061,
+ "Z": 74.47925
+ },
+ "TerritoryId": 137,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Eastern La Noscea - Costa Del Sol"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1000927,
+ "Position": {
+ "X": -1.2055054,
+ "Y": 44.999886,
+ "Z": -255.8786
+ },
+ "TerritoryId": 128,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1002682,
+ "Position": {
+ "X": -86.930725,
+ "Y": 40.999992,
+ "Z": -153.91785
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Marauders' Guild",
+ "[Limsa Lominsa] Culinarians' Guild"
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1002112,
+ "Position": {
+ "X": 561.6693,
+ "Y": 89.783,
+ "Z": -81.52899
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Culinarians' Guild",
+ "[Limsa Lominsa] Tempest Gate (Lower La Noscea)"
+ ],
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1002683,
+ "Position": {
+ "X": 559.6245,
+ "Y": 89.783,
+ "Z": -80.1557
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1002113,
+ "Position": {
+ "X": 312.45886,
+ "Y": -24.483091,
+ "Z": 212.84802
+ },
+ "TerritoryId": 138,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "DataId": 2000289,
+ "Position": {
+ "X": 348.34814,
+ "Y": -18.60083,
+ "Z": 168.3833
+ },
+ "TerritoryId": 138,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ },
+ {
+ "Position": {
+ "X": 297.38306,
+ "Y": -14.2977295,
+ "Z": 148.85168
+ },
+ "TerritoryId": 138,
+ "InteractionType": "WalkTo"
+ },
+ {
+ "DataId": 2000290,
+ "Position": {
+ "X": 297.38306,
+ "Y": -14.2977295,
+ "Z": 148.85168
+ },
+ "TerritoryId": 138,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ],
+ "DelaySecondsAtStart": 5
+ }
+ ]
+ },
+ {
+ "Sequence": 6,
+ "Steps": [
+ {
+ "DataId": 1002684,
+ "Position": {
+ "X": 299.1836,
+ "Y": 0.7139131,
+ "Z": 86.10657
+ },
+ "TerritoryId": 138,
+ "InteractionType": "SinglePlayerDuty"
+ }
+ ]
+ },
+ {
+ "Sequence": 7,
+ "Steps": [
+ {
+ "DataId": 1002112,
+ "Position": {
+ "X": 561.6693,
+ "Y": 89.783,
+ "Z": -81.52899
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Limsa Lominsa",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Aetheryte Plaza",
+ "[Limsa Lominsa] Tempest Gate (Lower La Noscea)"
+ ],
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1000927,
+ "Position": {
+ "X": -1.2055054,
+ "Y": 44.999886,
+ "Z": -255.8786
+ },
+ "TerritoryId": 128,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Limsa Lominsa",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Aetheryte Plaza",
+ "[Limsa Lominsa] Marauders' Guild"
+ ],
+ "NextQuestId": 318
+ }
+ ]
+ }
+ ]
+}
},
"TerritoryId": 135,
"InteractionType": "SinglePlayerDuty",
+ "AetheryteShortcut": "Lower La Noscea - Moraby Drydocks",
"Fly": true
}
]
"AethernetShortcut": [
"[Limsa Lominsa] Aetheryte Plaza",
"[Limsa Lominsa] Marauders' Guild"
- ]
+ ],
+ "NextQuestId": 319
}
]
}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1000927,
+ "Position": {
+ "X": -1.2055054,
+ "Y": 44.999886,
+ "Z": -255.8786
+ },
+ "TerritoryId": 128,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1002115,
+ "Position": {
+ "X": 562.3406,
+ "Y": 89.86035,
+ "Z": -80.216736
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Marauders' Guild",
+ "[Limsa Lominsa] Tempest Gate (Lower La Noscea)"
+ ],
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1002713,
+ "Position": {
+ "X": 554.4059,
+ "Y": 89.783,
+ "Z": -67.979004
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ },
+ {
+ "DataId": 1002686,
+ "Position": {
+ "X": 554.2838,
+ "Y": 89.78309,
+ "Z": -72.43463
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 2000296,
+ "Position": {
+ "X": 565.1482,
+ "Y": 66.666626,
+ "Z": -215.2591
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 2000297,
+ "Position": {
+ "X": 590.8141,
+ "Y": 72.40405,
+ "Z": -272.08368
+ },
+ "StopDistance": 1,
+ "TerritoryId": 135,
+ "InteractionType": "Interact",
+ "Mount": false
+ }
+ ]
+ },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "Position": {
+ "X": 565.94104,
+ "Y": 85.81174,
+ "Z": -322.61465
+ },
+ "TerritoryId": 135,
+ "InteractionType": "WalkTo",
+ "Mount": false
+ },
+ {
+ "DataId": 2000298,
+ "Position": {
+ "X": 566.8268,
+ "Y": 85.52673,
+ "Z": -320.82092
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 6,
+ "Steps": [
+ {
+ "DataId": 2000299,
+ "Position": {
+ "X": 574.0901,
+ "Y": 90.440186,
+ "Z": -429.06842
+ },
+ "TerritoryId": 135,
+ "InteractionType": "SinglePlayerDuty",
+ "Mount": false
+ }
+ ]
+ },
+ {
+ "Sequence": 7,
+ "Steps": [
+ {
+ "DataId": 1002689,
+ "Position": {
+ "X": 569.6345,
+ "Y": 86.253204,
+ "Z": -363.94293
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ },
+ {
+ "DataId": 1002714,
+ "Position": {
+ "X": 572.5946,
+ "Y": 86.366455,
+ "Z": -365.3468
+ },
+ "StopDistance": 5,
+ "TerritoryId": 135,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ },
+ {
+ "DataId": 1002715,
+ "Position": {
+ "X": 566.4302,
+ "Y": 86.2767,
+ "Z": -364.95007
+ },
+ "StopDistance": 5,
+ "TerritoryId": 135,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1000927,
+ "Position": {
+ "X": -1.2055054,
+ "Y": 44.999886,
+ "Z": -255.8786
+ },
+ "TerritoryId": 128,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Limsa Lominsa",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Aetheryte Plaza",
+ "[Limsa Lominsa] Marauders' Guild"
+ ],
+ "NextQuestId": 1049
+ }
+ ]
+ }
+ ]
+}
"Z": -380.82272
},
"TerritoryId": 140,
- "InteractionType": "WalkTo"
+ "InteractionType": "WalkTo",
+ "$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,
"Z": -380.82272
},
"TerritoryId": 140,
- "InteractionType": "WalkTo"
+ "InteractionType": "WalkTo",
+ "$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,
"Z": -380.82272
},
"TerritoryId": 140,
- "InteractionType": "WalkTo"
+ "InteractionType": "WalkTo",
+ "$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,
"Z": -380.82272
},
"TerritoryId": 140,
- "InteractionType": "WalkTo"
+ "InteractionType": "WalkTo",
+ "$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,
"Z": -380.82272
},
"TerritoryId": 140,
- "InteractionType": "WalkTo"
+ "InteractionType": "WalkTo",
+ "$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,
"Z": -380.82272
},
"TerritoryId": 140,
- "InteractionType": "WalkTo"
+ "InteractionType": "WalkTo",
+ "$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,
"Z": -0.015319824
},
"TerritoryId": 212,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 212
},
{
"DataId": 1007417,
]
}
]
-}
\ No newline at end of file
+}
"Sequence": 1,
"Steps": [
{
- "DataId": 7,
+ "TerritoryId": 154,
+ "InteractionType": "AttuneAetheryte",
+ "StopDistance": 5,
+ "Aetheryte": "North Shroud - Fallgourd Float"
+ },
+ {
"Position": {
- "X": -41.58087,
- "Y": -38.55963,
- "Z": 233.7528
+ "X": -214.10292,
+ "Y": -56.837837,
+ "Z": 295.99493
},
"TerritoryId": 154,
- "InteractionType": "AttuneAetheryte",
- "StopDistance": 5
+ "InteractionType": "WalkTo"
},
{
"Position": {
- "X": -220.29037,
- "Y": -28.43536,
- "Z": 283.79355
+ "X": -276.81464,
+ "Y": -56.335888,
+ "Z": 302.93182
},
"TerritoryId": 154,
"InteractionType": "Combat",
]
}
]
-}
\ No newline at end of file
+}
"Sequence": 255,
"Steps": [
{
- "DataId": 20,
+ "DataId": 1004596,
"Position": {
- "X": -326.6194,
- "Y": 10.696533,
- "Z": 406.63757
+ "X": -471.27496,
+ "Y": -2.650424,
+ "Z": 95.628296
},
+ "TerritoryId": 146,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 146,
+ "AetheryteShortcut": "Southern Thanalan - Little Ala Mhigo"
+ },
+ {
"TerritoryId": 146,
"InteractionType": "AttuneAetheryte",
"StopDistance": 5,
- "AetheryteShortcut": "Southern Thanalan - Little Ala Mhigo"
+ "Aetheryte": "Southern Thanalan - Forgotten Springs"
},
{
"DataId": 1004917,
]
}
]
-}
\ No newline at end of file
+}
"Z": -380.82272
},
"TerritoryId": 140,
- "InteractionType": "WalkTo"
+ "InteractionType": "WalkTo",
+ "$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,
"Z": -380.82272
},
"TerritoryId": 140,
- "InteractionType": "WalkTo"
+ "InteractionType": "WalkTo",
+ "$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,
"Z": -380.82272
},
"TerritoryId": 140,
- "InteractionType": "WalkTo"
+ "InteractionType": "WalkTo",
+ "$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,
"Z": -380.82272\r
},\r
"TerritoryId": 140,\r
- "InteractionType": "WalkTo"\r
+ "InteractionType": "WalkTo",\r
+ "$": "Avoid walking around Waking Sands table"\r
},\r
{\r
"DataId": 2001711,\r
]\r
}\r
]\r
-}
\ No newline at end of file
+}\r
"Z": -58.854065
},
"TerritoryId": 145,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
},
{
"DataId": 1006204,
"Z": -7.5532227
},
"TerritoryId": 145,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
},
{
"DataId": 1006205,
"Z": 7.4310913
},
"TerritoryId": 145,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
}
]
},
]
}
]
-}
\ No newline at end of file
+}
{
"Sequence": 1,
"Steps": [
+ {
+ "Position": {
+ "X": 318.09802,
+ "Y": 20.949646,
+ "Z": -263.94977
+ },
+ "TerritoryId": 145,
+ "InteractionType": "WalkTo"
+ },
{
"DataId": 2001965,
"Position": {
"ItemId": 2000604,
"KillEnemyDataIds": [
363
- ]
+ ],
+ "DisableNavmesh": true
}
]
},
]
}
]
-}
\ No newline at end of file
+}
"TargetTerritoryId": 146
},
{
- "DataId": 19,
- "Position": {
- "X": -159.3805,
- "Y": 30.105957,
- "Z": -415.45746
- },
"TerritoryId": 146,
"InteractionType": "AttuneAetheryte",
- "StopDistance": 7
+ "StopDistance": 7,
+ "Aetheryte": "Southern Thanalan - Little Ala Mhigo"
},
{
"DataId": 1006211,
]
}
]
-}
\ No newline at end of file
+}
"Z": -247.82184
},
"TerritoryId": 146,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
},
{
"DataId": 1006704,
"Z": -165.45361
},
"TerritoryId": 146,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
},
{
"DataId": 1006703,
"Z": -133.22656
},
"TerritoryId": 146,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
}
]
},
"Z": -402.02948
},
"TerritoryId": 146,
- "InteractionType": "CompleteQuest"
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Southern Thanalan - Little Ala Mhigo"
}
]
}
]
-}
\ No newline at end of file
+}
"InteractionType": "UseItem",
"ItemId": 30362
},
+ {
+ "Position": {
+ "X": -492.96475,
+ "Y": 20.999884,
+ "Z": -380.82272
+ },
+ "TerritoryId": 140,
+ "InteractionType": "WalkTo",
+ "$": "Avoid walking around Waking Sands table"
+ },
{
"DataId": 2001711,
"Position": {
"Z": -386.862
},
"TerritoryId": 140,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 212
},
{
"DataId": 2001715,
"Z": -0.015319824
},
"TerritoryId": 212,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 212
},
{
"DataId": 1006688,
]
}
]
-}
\ No newline at end of file
+}
"Z": -0.015319824
},
"TerritoryId": 212,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 212
},
{
"DataId": 1007418,
]
}
]
-}
\ No newline at end of file
+}
"Steps": [
{
"Position": {
- "X": 260.3064,
- "Y": 3.8526046,
- "Z": 15.633602
+ "X": 262.89966,
+ "Y": 11.363011,
+ "Z": -143.02156
},
"TerritoryId": 153,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
- "KillEnemyDataIds": [
- 4
+ "ComplexCombatData": [
+ {
+ "DataId": 4,
+ "MinimumKillCount": 4,
+ "CompletionQuestVariablesFlags": [
+ null,
+ 64,
+ null,
+ null,
+ null,
+ null
+ ]
+ }
]
}
]
"Z": -39.932922
},
"TerritoryId": 153,
- "InteractionType": "CompleteQuest"
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "South Shroud - Quarrymill"
}
]
}
]
-}
\ No newline at end of file
+}
"Z": -337.789
},
"TerritoryId": 146,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
},
{
"DataId": 1006222,
"Z": -331.34973
},
"TerritoryId": 146,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "DisableNavmesh": true,
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
},
{
"DataId": 1006223,
"Z": -348.50085
},
"TerritoryId": 146,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
},
{
"DataId": 1006224,
"Z": -325.42914
},
"TerritoryId": 146,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 16
+ ]
}
]
},
]
}
]
-}
\ No newline at end of file
+}
"Z": -352.98694
},
"TerritoryId": 146,
- "InteractionType": "CompleteQuest"
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Southern Thanalan - Little Ala Mhigo"
}
]
}
]
-}
\ No newline at end of file
+}
"Z": -318.5016
},
"TerritoryId": 146,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 16
+ ]
},
{
"DataId": 1006225,
"Z": -333.69952
},
"TerritoryId": 146,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
},
{
"DataId": 1007617,
"Z": -339.71167
},
"TerritoryId": 146,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
},
{
"DataId": 2001981,
"Z": -350.08777
},
"TerritoryId": 146,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 8
+ ]
},
{
"DataId": 1007616,
"Z": -341.3291
},
"TerritoryId": 146,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
}
]
},
]
}
]
-}
\ No newline at end of file
+}
"InteractionType": "UseItem",
"ItemId": 30362
},
+ {
+ "Position": {
+ "X": -492.96475,
+ "Y": 20.999884,
+ "Z": -380.82272
+ },
+ "TerritoryId": 140,
+ "InteractionType": "WalkTo",
+ "$": "Avoid walking around Waking Sands table"
+ },
{
"DataId": 2001711,
"Position": {
"Z": -386.862
},
"TerritoryId": 140,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 212
},
{
"DataId": 2001715,
"Z": -0.015319824
},
"TerritoryId": 212,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 212
},
{
"DataId": 1006688,
]
}
]
-}
\ No newline at end of file
+}
"Y": -44.865616,
"Z": 264.54565
},
+ "StopDistance": 7,
"TerritoryId": 154,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "North Shroud - Fallgourd Float",
]
}
]
-}
\ No newline at end of file
+}
{
"Sequence": 1,
"Steps": [
+ {
+ "Position": {
+ "X": -195.16211,
+ "Y": -63.65229,
+ "Z": 370.28903
+ },
+ "TerritoryId": 154,
+ "InteractionType": "WalkTo"
+ },
{
"Position": {
"X": -222.67735,
"Z": 396.86935
},
"TerritoryId": 154,
- "InteractionType": "WaitForManualProgress",
- "Comment": "Use Firesand Stick on glowing spot"
+ "InteractionType": "UseItem",
+ "ItemId": 2000616,
+ "GroundTarget": true
}
]
},
"Z": 389.9137
},
"TerritoryId": 154,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 8
+ ]
},
{
"DataId": 2001986,
"Z": 383.3523
},
"TerritoryId": 154,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
},
{
"DataId": 2001987,
"Z": 376.3026
},
"TerritoryId": 154,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 16
+ ]
},
{
"DataId": 2001985,
"Z": 378.95776
},
"TerritoryId": 154,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
},
{
"DataId": 2001984,
"Z": 388.93713
},
"TerritoryId": 154,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
}
]
},
]
}
]
-}
\ No newline at end of file
+}
"Y": -44.86571,
"Z": 262.65344
},
+ "StopDistance": 7,
"TerritoryId": 154,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "North Shroud - Fallgourd Float",
]
}
]
-}
\ No newline at end of file
+}
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 1006259,
+ "Position": {
+ "X": 43.808594,
+ "Y": 2.5499606,
+ "Z": 21.683044
+ },
+ "TerritoryId": 132,
+ "InteractionType": "AcceptQuest",
+ "PickUpQuestId": 802,
+ "AetheryteShortcut": "Gridania"
+ },
+ {
+ "DataId": 1000171,
+ "Position": {
+ "X": -114.366455,
+ "Y": -7.351947,
+ "Z": 94.52954
+ },
+ "TerritoryId": 132,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 148
+ },
{
"DataId": 2001999,
"Position": {
"Z": 69.41321
},
"TerritoryId": 148,
- "InteractionType": "Interact",
- "AetheryteShortcut": "Central Shroud - Bentbranch Meadows"
+ "InteractionType": "Interact"
}
]
},
"Sequence": 2,
"Steps": [
{
- "DataId": 2002701,
- "Position": {
- "X": -574.4259,
- "Y": 67.00232,
- "Z": 71.39697
- },
"TerritoryId": 148,
"InteractionType": "Duty",
"ContentFinderConditionId": 6
}
]
},
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "Position": {
+ "X": 0,
+ "Y": 0,
+ "Z": 0
+ },
+ "TerritoryId": 1,
+ "InteractionType": "WalkTo",
+ "Comment": "Filler"
+ }
+ ]
+ },
{
"Sequence": 4,
"Steps": [
"InteractionType": "UseItem",
"ItemId": 30362
},
+ {
+ "Position": {
+ "X": -492.96475,
+ "Y": 20.999884,
+ "Z": -380.82272
+ },
+ "TerritoryId": 140,
+ "InteractionType": "WalkTo",
+ "$": "Avoid walking around Waking Sands table"
+ },
{
"DataId": 2001711,
"Position": {
"Z": -386.862
},
"TerritoryId": 140,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 212
},
{
"DataId": 2001715,
"Z": -0.015319824
},
"TerritoryId": 212,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 212
},
{
"DataId": 1006688,
]
}
]
-}
\ No newline at end of file
+}
"Y": 64.37781,
"Z": -205.24915
},
+ "StopDistance": 0.25,
"TerritoryId": 135,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
]
}
]
-}
\ No newline at end of file
+}
"TargetTerritoryId": 137
},
{
- "DataId": 11,
"Position": {
- "X": 489.15845,
- "Y": 20.828491,
- "Z": 468.80298
+ "X": 378.54834,
+ "Y": 21.81276,
+ "Z": 478.4722
},
+ "TerritoryId": 137,
+ "InteractionType": "WalkTo",
+ "$": "Avoids the beach due to rocks, doesn't even look like a faster path"
+ },
+ {
"TerritoryId": 137,
"InteractionType": "AttuneAetheryte",
- "StopDistance": 5
+ "StopDistance": 5,
+ "Aetheryte": "Eastern La Noscea - Costa Del Sol"
},
{
"DataId": 1006266,
]
}
]
-}
\ No newline at end of file
+}
{
"Sequence": 255,
"Steps": [
- {
- "DataId": 6,
- "Position": {
- "X": -230.0603,
- "Y": 22.62909,
- "Z": 355.45886
- },
- "TerritoryId": 153,
- "InteractionType": "AttuneAetheryte",
- "StopDistance": 5,
- "AetheryteShortcut": "South Shroud - Quarrymill"
- },
{
"DataId": 1006279,
"Position": {
"Z": 339.49792
},
"TerritoryId": 153,
- "InteractionType": "CompleteQuest"
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "South Shroud - Camp Tranquil"
}
]
}
]
-}
\ No newline at end of file
+}
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "JerryWester",
+ "TerritoryBlacklist": [
+ 1041
+ ],
"QuestSequence": [
{
"Sequence": 0,
"Z": 89.37195
},
"TerritoryId": 137,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 137
+ },
+ {
+ "TerritoryId": 137,
+ "InteractionType": "AttuneAetheryte",
+ "StopDistance": 5,
+ "Aetheryte": "Eastern La Noscea - Wineport"
},
{
- "DataId": 12,
"Position": {
- "X": -18.387146,
- "Y": 72.67859,
- "Z": 3.829956
+ "X": -272.5533,
+ "Y": 59.7689,
+ "Z": 176.81541
},
"TerritoryId": 137,
- "InteractionType": "AttuneAetheryte",
- "StopDistance": 5
+ "InteractionType": "WalkTo"
},
{
"DataId": 1006268,
"Sequence": 3,
"Steps": [
{
- "DataId": 2002702,
- "Position": {
- "X": -338.61298,
- "Y": 69.01648,
- "Z": 159.65515
- },
"TerritoryId": 137,
"InteractionType": "Duty",
"ContentFinderConditionId": 8
]
}
]
-}
\ No newline at end of file
+}
"Z": 299.39722
},
"TerritoryId": 137,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
},
{
"DataId": 2002059,
"Z": 308.24744
},
"TerritoryId": 137,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
},
{
"DataId": 2002060,
"Z": 276.53918
},
"TerritoryId": 137,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
}
]
},
]
}
]
-}
\ No newline at end of file
+}
"Z": 454.5509
},
"TerritoryId": 137,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ 8,
+ null
+ ]
},
{
"DataId": 1006318,
"Z": 451.0719
},
"TerritoryId": 137,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ 16,
+ null
+ ]
},
{
"DataId": 1006317,
"Z": 450.43103
},
"TerritoryId": 137,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ 64,
+ null
+ ]
},
{
"DataId": 1006316,
"Z": 457.02295
},
"TerritoryId": 137,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ 32,
+ null
+ ]
},
{
"DataId": 1006266,
"Z": 455.89368
},
"TerritoryId": 137,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ 128,
+ null
+ ]
}
]
},
"Y": 20.706482,
"Z": 451.13293
},
+ "StopDistance": 7,
"TerritoryId": 137,
"InteractionType": "CompleteQuest"
}
]
}
]
-}
\ No newline at end of file
+}
"AetheryteShortcut": "Eastern La Noscea - Wineport"
},
{
- "DataId": 15,
+ "DataId": 2002085,
"Position": {
- "X": 437.4303,
- "Y": 5.508484,
- "Z": 94.590576
+ "X": 404.86768,
+ "Y": 4.3182373,
+ "Z": 88.45642
},
+ "TerritoryId": 139,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
+ },
+ {
"TerritoryId": 139,
"InteractionType": "AttuneAetheryte",
- "StopDistance": 5
+ "StopDistance": 5,
+ "Aetheryte": "Upper La Noscea - Camp Bronze Lake"
},
{
"DataId": 2002084,
"Z": 133.04333
},
"TerritoryId": 139,
- "InteractionType": "Interact"
- },
- {
- "DataId": 2002085,
- "Position": {
- "X": 404.86768,
- "Y": 4.3182373,
- "Z": 88.45642
- },
- "TerritoryId": 139,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
},
{
"DataId": 2002083,
"Z": 47.196045
},
"TerritoryId": 139,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
}
]
},
"Y": 16.258692,
"Z": 128.37415
},
+ "StopDistance": 7,
"TerritoryId": 139,
"InteractionType": "CompleteQuest"
}
]
}
]
-}
\ No newline at end of file
+}
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "JerryWester",
+ "TerritoryBlacklist": [
+ 1046
+ ],
"QuestSequence": [
{
"Sequence": 0,
"Y": 16.258692,
"Z": 128.37415
},
+ "StopDistance": 7,
"TerritoryId": 139,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "Upper La Noscea - Camp Bronze Lake",
"Sequence": 2,
"Steps": [
{
- "DataId": 2002690,
- "Position": {
- "X": 381.39917,
- "Y": 23.727722,
- "Z": -140.79504
- },
"TerritoryId": 139,
"InteractionType": "Duty",
- "ContentFinderConditionId": 20002
+ "ContentFinderConditionId": 57
}
]
},
]
}
]
-}
\ No newline at end of file
+}
"Sequence": 1,
"Steps": [
{
- "DataId": 1006731,
"Position": {
- "X": 52.231567,
- "Y": 235.30933,
- "Z": 347.85986
+ "X": 48.65701,
+ "Y": 234.78163,
+ "Z": 348.13953
},
+ "StopDistance": 1,
"TerritoryId": 155,
"InteractionType": "Combat",
"EnemySpawnType": "AutoOnEnterArea",
]
}
]
-}
\ No newline at end of file
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1006259,
+ "Position": {
+ "X": 43.808594,
+ "Y": 2.5499606,
+ "Z": 21.683044
+ },
+ "TerritoryId": 132,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1000171,
+ "Position": {
+ "X": -114.366455,
+ "Y": -7.351947,
+ "Z": 94.52954
+ },
+ "TerritoryId": 132,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
public IList<uint> PointMenuChoices { get; set; } = new List<uint>();
// TODO: Not implemented
- public ushort? PickupQuestId { get; set; }
+ public ushort? PickUpQuestId { get; set; }
public ushort? TurnInQuestId { get; set; }
public ushort? NextQuestId { get; set; }
private unsafe bool IsEnemyToKill(IGameObject gameObject)
{
- if (gameObject is IBattleChara battleChara)
+ if (gameObject is IBattleNpc battleNpc)
{
// TODO this works as somewhat of a delay between killing enemies if certain items/flags are checked
// but also delays killing the next enemy a little
if (_currentFight == null || _currentFight.Data.SpawnType != EEnemySpawnType.OverworldEnemies ||
_currentFight.Data.ComplexCombatDatas.Count == 0)
{
- if (battleChara.IsDead)
+ if (battleNpc.IsDead)
return false;
}
- if (!battleChara.IsTargetable)
+ if (!battleNpc.IsTargetable)
return false;
- if (battleChara.TargetObjectId == _clientState.LocalPlayer?.GameObjectId)
+ if (battleNpc.TargetObjectId == _clientState.LocalPlayer?.GameObjectId)
return true;
if (_currentFight != null)
if (_currentFight.Data.CompletedComplexDatas.Contains(i))
continue;
- if (complexCombatData[i].DataId == battleChara.DataId)
+ if (complexCombatData[i].DataId == battleNpc.DataId)
return true;
}
}
else
{
- if (_currentFight.Data.KillEnemyDataIds.Contains(battleChara.DataId))
+ if (_currentFight.Data.KillEnemyDataIds.Contains(battleNpc.DataId))
return true;
}
}
- if (battleChara.StatusFlags.HasFlag(StatusFlags.Hostile))
+ if (battleNpc.BattleNpcKind is BattleNpcSubKind.BattleNpcPart or BattleNpcSubKind.Enemy)
{
var gameObjectStruct = (GameObject*)gameObject.Address;
return gameObjectStruct->NamePlateIconId != 0;
new BlacklistedPoint(128, new(2f, 40.25f, 36.5f), new(0.25f, 40.25f, 36.5f)),
new BlacklistedPoint(132, new(45.5f, -8f, 101f), new(50.53978f, -8.046954f, 101.06045f)),
+
+ // eastern thanalan
+ new BlacklistedPoint(145, new(-139.75f, -32.25f, 75.25f), new(-139.57748f, -33.785175f, 77.87906f)),
+
+ // southern thanalan
+ new BlacklistedPoint(146, new(-201.75f, 10.5f, -265.5f), new(-203.75235f, 10.130764f, -265.15314f)),
+
new BlacklistedPoint(1189, new(574f, -142.25f, 504.25f), new(574.44183f, -142.12766f, 507.60065f)),
// heritage found: yyupye's halo (farm, npc: Mahuwsa)
InventoryType.ArmoryWrist,
InventoryType.ArmoryRings,
+ InventoryType.ArmorySoulCrystal,
+
InventoryType.Inventory1,
InventoryType.Inventory2,
InventoryType.Inventory3,
if (inventoryManager == null)
return ETaskResult.StillRunning;
- if (_targetSlots.Any(x =>
- inventoryManager->GetInventorySlot(InventoryType.EquippedItems, x)->ItemId == _itemId))
- return ETaskResult.TaskComplete;
+ foreach (ushort x in _targetSlots)
+ {
+ var itemSlot = inventoryManager->GetInventorySlot(InventoryType.EquippedItems, x);
+ if (itemSlot != null && itemSlot->ItemId == _itemId)
+ return ETaskResult.TaskComplete;
+ }
Equip();
_continueAt = DateTime.Now.AddSeconds(1);
if (equippedContainer == null)
return;
- if (_targetSlots.Any(slot => equippedContainer->GetInventorySlot(slot)->ItemId == _itemId))
+ foreach (ushort slot in _targetSlots)
{
- logger.LogInformation("Already equipped {Item}, skipping step", _item.Name?.ToString());
- return;
+ var itemSlot = equippedContainer->GetInventorySlot(slot);
+ if (itemSlot != null && itemSlot->ItemId == _itemId)
+ {
+ logger.LogInformation("Already equipped {Item}, skipping step", _item.Name?.ToString());
+ return;
+ }
}
foreach (InventoryType sourceInventoryType in SourceInventoryTypes)
// Move the item to the first available slot
ushort targetSlot = _targetSlots
- .Where(x => inventoryManager->GetInventorySlot(InventoryType.EquippedItems, x)->ItemId == 0)
+ .Where(x =>
+ {
+ var itemSlot = inventoryManager->GetInventorySlot(InventoryType.EquippedItems, x);
+ return itemSlot == null || itemSlot->ItemId == 0;
+ })
.Concat(_targetSlots).First();
logger.LogInformation(
>= 1 and <= 11 => [(ushort)(item.EquipSlotCategory.Row - 1)],
12 => [11, 12], // rings
13 => [0],
- 17 => [14], // soul crystal
+ 17 => [13], // soul crystal
_ => null
};
}
using System;
using System.Collections.Generic;
+using System.Globalization;
using System.Numerics;
using FFXIVClientStructs.FFXIV.Client.Game;
using Microsoft.Extensions.DependencyInjection;
var unmount = serviceProvider.GetRequiredService<UnmountTask>();
if (step.GroundTarget == true)
{
- ArgumentNullException.ThrowIfNull(step.DataId);
+ ITask task;
+ if (step.DataId != null)
+ task = serviceProvider.GetRequiredService<UseOnGround>()
+ .With(step.DataId.Value, step.ItemId.Value);
+ else
+ {
+ ArgumentNullException.ThrowIfNull(step.Position);
+ task = serviceProvider.GetRequiredService<UseOnPosition>()
+ .With(step.Position.Value, step.ItemId.Value);
+ }
- var task = serviceProvider.GetRequiredService<UseOnGround>()
- .With(step.DataId.Value, step.ItemId.Value);
return [unmount, task];
}
else if (step.DataId != null)
public override string ToString() => $"UseItem({ItemId} on ground at {DataId})";
}
+ internal sealed class UseOnPosition(GameFunctions gameFunctions, ILogger<UseOnPosition> logger)
+ : UseItemBase(logger)
+ {
+ public Vector3 Position { get; set; }
+
+ public ITask With(Vector3 position, uint itemId)
+ {
+ Position = position;
+ ItemId = itemId;
+ return this;
+ }
+
+ protected override bool UseItem() => gameFunctions.UseItemOnPosition(Position, ItemId);
+
+ public override string ToString() =>
+ $"UseItem({ItemId} on ground at {Position.ToString("G", CultureInfo.InvariantCulture)})";
+ }
+
internal sealed class UseOnObject(GameFunctions gameFunctions, ILogger<UseOnObject> logger) : UseItemBase(logger)
{
public uint DataId { get; set; }
return
[
serviceProvider.GetRequiredService<WaitQuestAccepted>()
- .With(step.PickupQuestId ?? quest.QuestId),
+ .With(step.PickUpQuestId ?? quest.QuestId),
serviceProvider.GetRequiredService<WaitDelay>()
];
if (chocoboQuest != 0 && !QuestManager.IsQuestComplete(chocoboQuest))
return (chocoboQuest, QuestManager.GetQuestSequence(chocoboQuest));
}
+ else if (currentQuest == 801)
+ {
+ // skeletons in her closet, finish 'broadening horizons' to unlock the white wolf gate
+ ushort broadeningHorizons = 802;
+ if (questManager->IsQuestAccepted(broadeningHorizons))
+ return (broadeningHorizons, QuestManager.GetQuestSequence(broadeningHorizons));
+ }
return (currentQuest, sequence);
}
return false;
}
+ public bool UseItemOnPosition(Vector3 position, uint itemId)
+ {
+ return ActionManager.Instance()->UseActionLocation(ActionType.KeyItem, itemId, location: &position);
+ }
+
public bool UseAction(EAction action)
{
if (ActionManager.Instance()->GetActionStatus(ActionType.Action, (uint)action) == 0)
serviceCollection.AddTaskWithFactory<Interact.Factory, Interact.DoInteract>();
serviceCollection.AddTaskWithFactory<Jump.Factory, Jump.DoJump>();
serviceCollection.AddTaskWithFactory<Say.Factory, Say.UseChat>();
- serviceCollection.AddTaskWithFactory<UseItem.Factory, UseItem.UseOnGround, UseItem.UseOnObject, UseItem.Use>();
+ serviceCollection.AddTaskWithFactory<UseItem.Factory, UseItem.UseOnGround, UseItem.UseOnObject, UseItem.Use, UseItem.UseOnPosition>();
serviceCollection.AddTaskWithFactory<EquipItem.Factory, EquipItem.DoEquip>();
serviceCollection
.AddTaskWithFactory<SinglePlayerDuty.Factory, SinglePlayerDuty.DisableYesAlready,
public IEnumerable<ValidationIssue> Validate(Quest quest)
{
var questAccepts = FindQuestStepsWithInteractionType(quest, EInteractionType.AcceptQuest)
- .Where(x => x.Step.PickupQuestId == null)
+ .Where(x => x.Step.PickUpQuestId == null)
.ToList();
foreach (var accept in questAccepts)
{