1
0
forked from liza/Questionable

Minor cleanup for ARR part 3

This commit is contained in:
Liza 2024-07-19 21:16:40 +02:00
parent a6e8aa1ced
commit 4ce89b7693
Signed by: liza
GPG Key ID: 7199F8D727D55F67
53 changed files with 1297 additions and 199 deletions

View File

@ -368,7 +368,7 @@ public class QuestSourceGenerator : ISourceGenerator
.AsSyntaxNodeOrToken(), .AsSyntaxNodeOrToken(),
AssignmentList(nameof(QuestStep.PointMenuChoices), step.PointMenuChoices) AssignmentList(nameof(QuestStep.PointMenuChoices), step.PointMenuChoices)
.AsSyntaxNodeOrToken(), .AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.PickupQuestId), step.PickupQuestId, emptyStep.PickupQuestId) Assignment(nameof(QuestStep.PickUpQuestId), step.PickUpQuestId, emptyStep.PickUpQuestId)
.AsSyntaxNodeOrToken(), .AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.TurnInQuestId), step.TurnInQuestId, emptyStep.TurnInQuestId) Assignment(nameof(QuestStep.TurnInQuestId), step.TurnInQuestId, emptyStep.TurnInQuestId)
.AsSyntaxNodeOrToken(), .AsSyntaxNodeOrToken(),

View File

@ -0,0 +1,83 @@
{
"$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
}
]
}
]
}

View File

@ -0,0 +1,123 @@
{
"$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"
}
]
}
]
}

View File

@ -0,0 +1,198 @@
{
"$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
}
]
}
]
}

View File

@ -48,6 +48,7 @@
}, },
"TerritoryId": 135, "TerritoryId": 135,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"AetheryteShortcut": "Lower La Noscea - Moraby Drydocks",
"Fly": true "Fly": true
} }
] ]
@ -68,7 +69,8 @@
"AethernetShortcut": [ "AethernetShortcut": [
"[Limsa Lominsa] Aetheryte Plaza", "[Limsa Lominsa] Aetheryte Plaza",
"[Limsa Lominsa] Marauders' Guild" "[Limsa Lominsa] Marauders' Guild"
] ],
"NextQuestId": 319
} }
] ]
} }

View File

@ -0,0 +1,237 @@
{
"$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
}
]
}
]
}

View File

@ -71,7 +71,8 @@
"Z": -380.82272 "Z": -380.82272
}, },
"TerritoryId": 140, "TerritoryId": 140,
"InteractionType": "WalkTo" "InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
}, },
{ {
"DataId": 2001711, "DataId": 2001711,

View File

@ -110,7 +110,8 @@
"Z": -380.82272 "Z": -380.82272
}, },
"TerritoryId": 140, "TerritoryId": 140,
"InteractionType": "WalkTo" "InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
}, },
{ {
"DataId": 2001711, "DataId": 2001711,

View File

@ -149,7 +149,8 @@
"Z": -380.82272 "Z": -380.82272
}, },
"TerritoryId": 140, "TerritoryId": 140,
"InteractionType": "WalkTo" "InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
}, },
{ {
"DataId": 2001711, "DataId": 2001711,

View File

@ -193,7 +193,8 @@
"Z": -380.82272 "Z": -380.82272
}, },
"TerritoryId": 140, "TerritoryId": 140,
"InteractionType": "WalkTo" "InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
}, },
{ {
"DataId": 2001711, "DataId": 2001711,

View File

@ -33,7 +33,8 @@
"Z": -380.82272 "Z": -380.82272
}, },
"TerritoryId": 140, "TerritoryId": 140,
"InteractionType": "WalkTo" "InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
}, },
{ {
"DataId": 2001711, "DataId": 2001711,

View File

@ -34,7 +34,8 @@
"Z": -380.82272 "Z": -380.82272
}, },
"TerritoryId": 140, "TerritoryId": 140,
"InteractionType": "WalkTo" "InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
}, },
{ {
"DataId": 2001711, "DataId": 2001711,

View File

@ -28,7 +28,8 @@
"Z": -0.015319824 "Z": -0.015319824
}, },
"TerritoryId": 212, "TerritoryId": 212,
"InteractionType": "Interact" "InteractionType": "Interact",
"TargetTerritoryId": 212
}, },
{ {
"DataId": 1007417, "DataId": 1007417,

View File

@ -21,21 +21,25 @@
"Sequence": 1, "Sequence": 1,
"Steps": [ "Steps": [
{ {
"DataId": 7,
"Position": {
"X": -41.58087,
"Y": -38.55963,
"Z": 233.7528
},
"TerritoryId": 154, "TerritoryId": 154,
"InteractionType": "AttuneAetheryte", "InteractionType": "AttuneAetheryte",
"StopDistance": 5 "StopDistance": 5,
"Aetheryte": "North Shroud - Fallgourd Float"
}, },
{ {
"Position": { "Position": {
"X": -220.29037, "X": -214.10292,
"Y": -28.43536, "Y": -56.837837,
"Z": 283.79355 "Z": 295.99493
},
"TerritoryId": 154,
"InteractionType": "WalkTo"
},
{
"Position": {
"X": -276.81464,
"Y": -56.335888,
"Z": 302.93182
}, },
"TerritoryId": 154, "TerritoryId": 154,
"InteractionType": "Combat", "InteractionType": "Combat",

View File

@ -74,16 +74,22 @@
"Sequence": 255, "Sequence": 255,
"Steps": [ "Steps": [
{ {
"DataId": 20, "DataId": 1004596,
"Position": { "Position": {
"X": -326.6194, "X": -471.27496,
"Y": 10.696533, "Y": -2.650424,
"Z": 406.63757 "Z": 95.628296
}, },
"TerritoryId": 146,
"InteractionType": "Interact",
"TargetTerritoryId": 146,
"AetheryteShortcut": "Southern Thanalan - Little Ala Mhigo"
},
{
"TerritoryId": 146, "TerritoryId": 146,
"InteractionType": "AttuneAetheryte", "InteractionType": "AttuneAetheryte",
"StopDistance": 5, "StopDistance": 5,
"AetheryteShortcut": "Southern Thanalan - Little Ala Mhigo" "Aetheryte": "Southern Thanalan - Forgotten Springs"
}, },
{ {
"DataId": 1004917, "DataId": 1004917,

View File

@ -57,7 +57,8 @@
"Z": -380.82272 "Z": -380.82272
}, },
"TerritoryId": 140, "TerritoryId": 140,
"InteractionType": "WalkTo" "InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
}, },
{ {
"DataId": 2001711, "DataId": 2001711,

View File

@ -34,7 +34,8 @@
"Z": -380.82272 "Z": -380.82272
}, },
"TerritoryId": 140, "TerritoryId": 140,
"InteractionType": "WalkTo" "InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
}, },
{ {
"DataId": 2001711, "DataId": 2001711,

View File

@ -53,7 +53,8 @@
"Z": -380.82272 "Z": -380.82272
}, },
"TerritoryId": 140, "TerritoryId": 140,
"InteractionType": "WalkTo" "InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
}, },
{ {
"DataId": 2001711, "DataId": 2001711,

View File

@ -37,7 +37,8 @@
"Z": -380.82272 "Z": -380.82272
}, },
"TerritoryId": 140, "TerritoryId": 140,
"InteractionType": "WalkTo" "InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
}, },
{ {
"DataId": 2001711, "DataId": 2001711,

View File

@ -32,7 +32,15 @@
"Z": -58.854065 "Z": -58.854065
}, },
"TerritoryId": 145, "TerritoryId": 145,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}, },
{ {
"DataId": 1006204, "DataId": 1006204,
@ -42,7 +50,15 @@
"Z": -7.5532227 "Z": -7.5532227
}, },
"TerritoryId": 145, "TerritoryId": 145,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}, },
{ {
"DataId": 1006205, "DataId": 1006205,
@ -52,7 +68,15 @@
"Z": 7.4310913 "Z": 7.4310913
}, },
"TerritoryId": 145, "TerritoryId": 145,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
} }
] ]
}, },

View File

@ -24,6 +24,15 @@
{ {
"Sequence": 1, "Sequence": 1,
"Steps": [ "Steps": [
{
"Position": {
"X": 318.09802,
"Y": 20.949646,
"Z": -263.94977
},
"TerritoryId": 145,
"InteractionType": "WalkTo"
},
{ {
"DataId": 2001965, "DataId": 2001965,
"Position": { "Position": {
@ -37,7 +46,8 @@
"ItemId": 2000604, "ItemId": 2000604,
"KillEnemyDataIds": [ "KillEnemyDataIds": [
363 363
] ],
"DisableNavmesh": true
} }
] ]
}, },

View File

@ -35,15 +35,10 @@
"TargetTerritoryId": 146 "TargetTerritoryId": 146
}, },
{ {
"DataId": 19,
"Position": {
"X": -159.3805,
"Y": 30.105957,
"Z": -415.45746
},
"TerritoryId": 146, "TerritoryId": 146,
"InteractionType": "AttuneAetheryte", "InteractionType": "AttuneAetheryte",
"StopDistance": 7 "StopDistance": 7,
"Aetheryte": "Southern Thanalan - Little Ala Mhigo"
}, },
{ {
"DataId": 1006211, "DataId": 1006211,

View File

@ -32,7 +32,15 @@
"Z": -247.82184 "Z": -247.82184
}, },
"TerritoryId": 146, "TerritoryId": 146,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}, },
{ {
"DataId": 1006704, "DataId": 1006704,
@ -42,7 +50,15 @@
"Z": -165.45361 "Z": -165.45361
}, },
"TerritoryId": 146, "TerritoryId": 146,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}, },
{ {
"DataId": 1006703, "DataId": 1006703,
@ -52,7 +68,15 @@
"Z": -133.22656 "Z": -133.22656
}, },
"TerritoryId": 146, "TerritoryId": 146,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
} }
] ]
}, },
@ -67,7 +91,8 @@
"Z": -402.02948 "Z": -402.02948
}, },
"TerritoryId": 146, "TerritoryId": 146,
"InteractionType": "CompleteQuest" "InteractionType": "CompleteQuest",
"AetheryteShortcut": "Southern Thanalan - Little Ala Mhigo"
} }
] ]
} }

View File

@ -29,6 +29,16 @@
"InteractionType": "UseItem", "InteractionType": "UseItem",
"ItemId": 30362 "ItemId": 30362
}, },
{
"Position": {
"X": -492.96475,
"Y": 20.999884,
"Z": -380.82272
},
"TerritoryId": 140,
"InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
},
{ {
"DataId": 2001711, "DataId": 2001711,
"Position": { "Position": {
@ -37,7 +47,8 @@
"Z": -386.862 "Z": -386.862
}, },
"TerritoryId": 140, "TerritoryId": 140,
"InteractionType": "Interact" "InteractionType": "Interact",
"TargetTerritoryId": 212
}, },
{ {
"DataId": 2001715, "DataId": 2001715,
@ -47,7 +58,8 @@
"Z": -0.015319824 "Z": -0.015319824
}, },
"TerritoryId": 212, "TerritoryId": 212,
"InteractionType": "Interact" "InteractionType": "Interact",
"TargetTerritoryId": 212
}, },
{ {
"DataId": 1006688, "DataId": 1006688,

View File

@ -28,7 +28,8 @@
"Z": -0.015319824 "Z": -0.015319824
}, },
"TerritoryId": 212, "TerritoryId": 212,
"InteractionType": "Interact" "InteractionType": "Interact",
"TargetTerritoryId": 212
}, },
{ {
"DataId": 1007418, "DataId": 1007418,

View File

@ -26,15 +26,26 @@
"Steps": [ "Steps": [
{ {
"Position": { "Position": {
"X": 260.3064, "X": 262.89966,
"Y": 3.8526046, "Y": 11.363011,
"Z": 15.633602 "Z": -143.02156
}, },
"TerritoryId": 153, "TerritoryId": 153,
"InteractionType": "Combat", "InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies", "EnemySpawnType": "OverworldEnemies",
"KillEnemyDataIds": [ "ComplexCombatData": [
4 {
"DataId": 4,
"MinimumKillCount": 4,
"CompletionQuestVariablesFlags": [
null,
64,
null,
null,
null,
null
]
}
] ]
} }
] ]
@ -80,7 +91,8 @@
"Z": -39.932922 "Z": -39.932922
}, },
"TerritoryId": 153, "TerritoryId": 153,
"InteractionType": "CompleteQuest" "InteractionType": "CompleteQuest",
"AetheryteShortcut": "South Shroud - Quarrymill"
} }
] ]
} }

View File

@ -32,7 +32,15 @@
"Z": -337.789 "Z": -337.789
}, },
"TerritoryId": 146, "TerritoryId": 146,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}, },
{ {
"DataId": 1006222, "DataId": 1006222,
@ -42,7 +50,16 @@
"Z": -331.34973 "Z": -331.34973
}, },
"TerritoryId": 146, "TerritoryId": 146,
"InteractionType": "Interact" "InteractionType": "Interact",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}, },
{ {
"DataId": 1006223, "DataId": 1006223,
@ -52,7 +69,15 @@
"Z": -348.50085 "Z": -348.50085
}, },
"TerritoryId": 146, "TerritoryId": 146,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}, },
{ {
"DataId": 1006224, "DataId": 1006224,
@ -62,7 +87,15 @@
"Z": -325.42914 "Z": -325.42914
}, },
"TerritoryId": 146, "TerritoryId": 146,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
} }
] ]
}, },

View File

@ -67,7 +67,8 @@
"Z": -352.98694 "Z": -352.98694
}, },
"TerritoryId": 146, "TerritoryId": 146,
"InteractionType": "CompleteQuest" "InteractionType": "CompleteQuest",
"AetheryteShortcut": "Southern Thanalan - Little Ala Mhigo"
} }
] ]
} }

View File

@ -32,7 +32,15 @@
"Z": -318.5016 "Z": -318.5016
}, },
"TerritoryId": 146, "TerritoryId": 146,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
}, },
{ {
"DataId": 1006225, "DataId": 1006225,
@ -42,7 +50,15 @@
"Z": -333.69952 "Z": -333.69952
}, },
"TerritoryId": 146, "TerritoryId": 146,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}, },
{ {
"DataId": 1007617, "DataId": 1007617,
@ -52,7 +68,15 @@
"Z": -339.71167 "Z": -339.71167
}, },
"TerritoryId": 146, "TerritoryId": 146,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}, },
{ {
"DataId": 2001981, "DataId": 2001981,
@ -62,7 +86,15 @@
"Z": -350.08777 "Z": -350.08777
}, },
"TerritoryId": 146, "TerritoryId": 146,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
8
]
}, },
{ {
"DataId": 1007616, "DataId": 1007616,
@ -72,7 +104,15 @@
"Z": -341.3291 "Z": -341.3291
}, },
"TerritoryId": 146, "TerritoryId": 146,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
} }
] ]
}, },

View File

@ -29,6 +29,16 @@
"InteractionType": "UseItem", "InteractionType": "UseItem",
"ItemId": 30362 "ItemId": 30362
}, },
{
"Position": {
"X": -492.96475,
"Y": 20.999884,
"Z": -380.82272
},
"TerritoryId": 140,
"InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
},
{ {
"DataId": 2001711, "DataId": 2001711,
"Position": { "Position": {
@ -37,7 +47,8 @@
"Z": -386.862 "Z": -386.862
}, },
"TerritoryId": 140, "TerritoryId": 140,
"InteractionType": "Interact" "InteractionType": "Interact",
"TargetTerritoryId": 212
}, },
{ {
"DataId": 2001715, "DataId": 2001715,
@ -47,7 +58,8 @@
"Z": -0.015319824 "Z": -0.015319824
}, },
"TerritoryId": 212, "TerritoryId": 212,
"InteractionType": "Interact" "InteractionType": "Interact",
"TargetTerritoryId": 212
}, },
{ {
"DataId": 1006688, "DataId": 1006688,

View File

@ -12,6 +12,7 @@
"Y": -44.865616, "Y": -44.865616,
"Z": 264.54565 "Z": 264.54565
}, },
"StopDistance": 7,
"TerritoryId": 154, "TerritoryId": 154,
"InteractionType": "AcceptQuest", "InteractionType": "AcceptQuest",
"AetheryteShortcut": "North Shroud - Fallgourd Float", "AetheryteShortcut": "North Shroud - Fallgourd Float",

View File

@ -24,6 +24,15 @@
{ {
"Sequence": 1, "Sequence": 1,
"Steps": [ "Steps": [
{
"Position": {
"X": -195.16211,
"Y": -63.65229,
"Z": 370.28903
},
"TerritoryId": 154,
"InteractionType": "WalkTo"
},
{ {
"Position": { "Position": {
"X": -222.67735, "X": -222.67735,
@ -31,8 +40,9 @@
"Z": 396.86935 "Z": 396.86935
}, },
"TerritoryId": 154, "TerritoryId": 154,
"InteractionType": "WaitForManualProgress", "InteractionType": "UseItem",
"Comment": "Use Firesand Stick on glowing spot" "ItemId": 2000616,
"GroundTarget": true
} }
] ]
}, },
@ -47,7 +57,15 @@
"Z": 389.9137 "Z": 389.9137
}, },
"TerritoryId": 154, "TerritoryId": 154,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
8
]
}, },
{ {
"DataId": 2001986, "DataId": 2001986,
@ -57,7 +75,15 @@
"Z": 383.3523 "Z": 383.3523
}, },
"TerritoryId": 154, "TerritoryId": 154,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}, },
{ {
"DataId": 2001987, "DataId": 2001987,
@ -67,7 +93,15 @@
"Z": 376.3026 "Z": 376.3026
}, },
"TerritoryId": 154, "TerritoryId": 154,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
}, },
{ {
"DataId": 2001985, "DataId": 2001985,
@ -77,7 +111,15 @@
"Z": 378.95776 "Z": 378.95776
}, },
"TerritoryId": 154, "TerritoryId": 154,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}, },
{ {
"DataId": 2001984, "DataId": 2001984,
@ -87,7 +129,15 @@
"Z": 388.93713 "Z": 388.93713
}, },
"TerritoryId": 154, "TerritoryId": 154,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
} }
] ]
}, },

View File

@ -12,6 +12,7 @@
"Y": -44.86571, "Y": -44.86571,
"Z": 262.65344 "Z": 262.65344
}, },
"StopDistance": 7,
"TerritoryId": 154, "TerritoryId": 154,
"InteractionType": "AcceptQuest", "InteractionType": "AcceptQuest",
"AetheryteShortcut": "North Shroud - Fallgourd Float", "AetheryteShortcut": "North Shroud - Fallgourd Float",

View File

@ -20,6 +20,29 @@
{ {
"Sequence": 1, "Sequence": 1,
"Steps": [ "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, "DataId": 2001999,
"Position": { "Position": {
@ -28,8 +51,7 @@
"Z": 69.41321 "Z": 69.41321
}, },
"TerritoryId": 148, "TerritoryId": 148,
"InteractionType": "Interact", "InteractionType": "Interact"
"AetheryteShortcut": "Central Shroud - Bentbranch Meadows"
} }
] ]
}, },
@ -37,18 +59,27 @@
"Sequence": 2, "Sequence": 2,
"Steps": [ "Steps": [
{ {
"DataId": 2002701,
"Position": {
"X": -574.4259,
"Y": 67.00232,
"Z": 71.39697
},
"TerritoryId": 148, "TerritoryId": 148,
"InteractionType": "Duty", "InteractionType": "Duty",
"ContentFinderConditionId": 6 "ContentFinderConditionId": 6
} }
] ]
}, },
{
"Sequence": 3,
"Steps": [
{
"Position": {
"X": 0,
"Y": 0,
"Z": 0
},
"TerritoryId": 1,
"InteractionType": "WalkTo",
"Comment": "Filler"
}
]
},
{ {
"Sequence": 4, "Sequence": 4,
"Steps": [ "Steps": [
@ -77,6 +108,16 @@
"InteractionType": "UseItem", "InteractionType": "UseItem",
"ItemId": 30362 "ItemId": 30362
}, },
{
"Position": {
"X": -492.96475,
"Y": 20.999884,
"Z": -380.82272
},
"TerritoryId": 140,
"InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
},
{ {
"DataId": 2001711, "DataId": 2001711,
"Position": { "Position": {
@ -85,7 +126,8 @@
"Z": -386.862 "Z": -386.862
}, },
"TerritoryId": 140, "TerritoryId": 140,
"InteractionType": "Interact" "InteractionType": "Interact",
"TargetTerritoryId": 212
}, },
{ {
"DataId": 2001715, "DataId": 2001715,
@ -95,7 +137,8 @@
"Z": -0.015319824 "Z": -0.015319824
}, },
"TerritoryId": 212, "TerritoryId": 212,
"InteractionType": "Interact" "InteractionType": "Interact",
"TargetTerritoryId": 212
}, },
{ {
"DataId": 1006688, "DataId": 1006688,

View File

@ -27,6 +27,7 @@
"Y": 64.37781, "Y": 64.37781,
"Z": -205.24915 "Z": -205.24915
}, },
"StopDistance": 0.25,
"TerritoryId": 135, "TerritoryId": 135,
"InteractionType": "Combat", "InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction", "EnemySpawnType": "AfterInteraction",

View File

@ -46,15 +46,20 @@
"TargetTerritoryId": 137 "TargetTerritoryId": 137
}, },
{ {
"DataId": 11,
"Position": { "Position": {
"X": 489.15845, "X": 378.54834,
"Y": 20.828491, "Y": 21.81276,
"Z": 468.80298 "Z": 478.4722
}, },
"TerritoryId": 137,
"InteractionType": "WalkTo",
"$": "Avoids the beach due to rocks, doesn't even look like a faster path"
},
{
"TerritoryId": 137, "TerritoryId": 137,
"InteractionType": "AttuneAetheryte", "InteractionType": "AttuneAetheryte",
"StopDistance": 5 "StopDistance": 5,
"Aetheryte": "Eastern La Noscea - Costa Del Sol"
}, },
{ {
"DataId": 1006266, "DataId": 1006266,

View File

@ -24,18 +24,6 @@
{ {
"Sequence": 255, "Sequence": 255,
"Steps": [ "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, "DataId": 1006279,
"Position": { "Position": {
@ -44,7 +32,8 @@
"Z": 339.49792 "Z": 339.49792
}, },
"TerritoryId": 153, "TerritoryId": 153,
"InteractionType": "CompleteQuest" "InteractionType": "CompleteQuest",
"AetheryteShortcut": "South Shroud - Camp Tranquil"
} }
] ]
} }

View File

@ -1,6 +1,9 @@
{ {
"$schema": "https://carvel.li/questionable/quest-1.0", "$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "JerryWester", "Author": "JerryWester",
"TerritoryBlacklist": [
1041
],
"QuestSequence": [ "QuestSequence": [
{ {
"Sequence": 0, "Sequence": 0,
@ -47,18 +50,23 @@
"Z": 89.37195 "Z": 89.37195
}, },
"TerritoryId": 137, "TerritoryId": 137,
"InteractionType": "Interact" "InteractionType": "Interact",
"TargetTerritoryId": 137
}, },
{ {
"DataId": 12,
"Position": {
"X": -18.387146,
"Y": 72.67859,
"Z": 3.829956
},
"TerritoryId": 137, "TerritoryId": 137,
"InteractionType": "AttuneAetheryte", "InteractionType": "AttuneAetheryte",
"StopDistance": 5 "StopDistance": 5,
"Aetheryte": "Eastern La Noscea - Wineport"
},
{
"Position": {
"X": -272.5533,
"Y": 59.7689,
"Z": 176.81541
},
"TerritoryId": 137,
"InteractionType": "WalkTo"
}, },
{ {
"DataId": 1006268, "DataId": 1006268,
@ -76,12 +84,6 @@
"Sequence": 3, "Sequence": 3,
"Steps": [ "Steps": [
{ {
"DataId": 2002702,
"Position": {
"X": -338.61298,
"Y": 69.01648,
"Z": 159.65515
},
"TerritoryId": 137, "TerritoryId": 137,
"InteractionType": "Duty", "InteractionType": "Duty",
"ContentFinderConditionId": 8 "ContentFinderConditionId": 8

View File

@ -32,7 +32,15 @@
"Z": 299.39722 "Z": 299.39722
}, },
"TerritoryId": 137, "TerritoryId": 137,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}, },
{ {
"DataId": 2002059, "DataId": 2002059,
@ -42,7 +50,15 @@
"Z": 308.24744 "Z": 308.24744
}, },
"TerritoryId": 137, "TerritoryId": 137,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}, },
{ {
"DataId": 2002060, "DataId": 2002060,
@ -52,7 +68,15 @@
"Z": 276.53918 "Z": 276.53918
}, },
"TerritoryId": 137, "TerritoryId": 137,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
} }
] ]
}, },

View File

@ -62,7 +62,15 @@
"Z": 454.5509 "Z": 454.5509
}, },
"TerritoryId": 137, "TerritoryId": 137,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
8,
null
]
}, },
{ {
"DataId": 1006318, "DataId": 1006318,
@ -72,7 +80,15 @@
"Z": 451.0719 "Z": 451.0719
}, },
"TerritoryId": 137, "TerritoryId": 137,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
16,
null
]
}, },
{ {
"DataId": 1006317, "DataId": 1006317,
@ -82,7 +98,15 @@
"Z": 450.43103 "Z": 450.43103
}, },
"TerritoryId": 137, "TerritoryId": 137,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
64,
null
]
}, },
{ {
"DataId": 1006316, "DataId": 1006316,
@ -92,7 +116,15 @@
"Z": 457.02295 "Z": 457.02295
}, },
"TerritoryId": 137, "TerritoryId": 137,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
32,
null
]
}, },
{ {
"DataId": 1006266, "DataId": 1006266,
@ -102,7 +134,15 @@
"Z": 455.89368 "Z": 455.89368
}, },
"TerritoryId": 137, "TerritoryId": 137,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
128,
null
]
} }
] ]
}, },
@ -116,6 +156,7 @@
"Y": 20.706482, "Y": 20.706482,
"Z": 451.13293 "Z": 451.13293
}, },
"StopDistance": 7,
"TerritoryId": 137, "TerritoryId": 137,
"InteractionType": "CompleteQuest" "InteractionType": "CompleteQuest"
} }

View File

@ -36,15 +36,28 @@
"AetheryteShortcut": "Eastern La Noscea - Wineport" "AetheryteShortcut": "Eastern La Noscea - Wineport"
}, },
{ {
"DataId": 15, "DataId": 2002085,
"Position": { "Position": {
"X": 437.4303, "X": 404.86768,
"Y": 5.508484, "Y": 4.3182373,
"Z": 94.590576 "Z": 88.45642
}, },
"TerritoryId": 139,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"TerritoryId": 139, "TerritoryId": 139,
"InteractionType": "AttuneAetheryte", "InteractionType": "AttuneAetheryte",
"StopDistance": 5 "StopDistance": 5,
"Aetheryte": "Upper La Noscea - Camp Bronze Lake"
}, },
{ {
"DataId": 2002084, "DataId": 2002084,
@ -54,17 +67,15 @@
"Z": 133.04333 "Z": 133.04333
}, },
"TerritoryId": 139, "TerritoryId": 139,
"InteractionType": "Interact" "InteractionType": "Interact",
}, "CompletionQuestVariablesFlags": [
{ null,
"DataId": 2002085, null,
"Position": { null,
"X": 404.86768, null,
"Y": 4.3182373, null,
"Z": 88.45642 64
}, ]
"TerritoryId": 139,
"InteractionType": "Interact"
}, },
{ {
"DataId": 2002083, "DataId": 2002083,
@ -74,7 +85,15 @@
"Z": 47.196045 "Z": 47.196045
}, },
"TerritoryId": 139, "TerritoryId": 139,
"InteractionType": "Interact" "InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
} }
] ]
}, },
@ -88,6 +107,7 @@
"Y": 16.258692, "Y": 16.258692,
"Z": 128.37415 "Z": 128.37415
}, },
"StopDistance": 7,
"TerritoryId": 139, "TerritoryId": 139,
"InteractionType": "CompleteQuest" "InteractionType": "CompleteQuest"
} }

View File

@ -1,6 +1,9 @@
{ {
"$schema": "https://carvel.li/questionable/quest-1.0", "$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "JerryWester", "Author": "JerryWester",
"TerritoryBlacklist": [
1046
],
"QuestSequence": [ "QuestSequence": [
{ {
"Sequence": 0, "Sequence": 0,
@ -12,6 +15,7 @@
"Y": 16.258692, "Y": 16.258692,
"Z": 128.37415 "Z": 128.37415
}, },
"StopDistance": 7,
"TerritoryId": 139, "TerritoryId": 139,
"InteractionType": "AcceptQuest", "InteractionType": "AcceptQuest",
"AetheryteShortcut": "Upper La Noscea - Camp Bronze Lake", "AetheryteShortcut": "Upper La Noscea - Camp Bronze Lake",
@ -40,15 +44,9 @@
"Sequence": 2, "Sequence": 2,
"Steps": [ "Steps": [
{ {
"DataId": 2002690,
"Position": {
"X": 381.39917,
"Y": 23.727722,
"Z": -140.79504
},
"TerritoryId": 139, "TerritoryId": 139,
"InteractionType": "Duty", "InteractionType": "Duty",
"ContentFinderConditionId": 20002 "ContentFinderConditionId": 57
} }
] ]
}, },

View File

@ -21,12 +21,12 @@
"Sequence": 1, "Sequence": 1,
"Steps": [ "Steps": [
{ {
"DataId": 1006731,
"Position": { "Position": {
"X": 52.231567, "X": 48.65701,
"Y": 235.30933, "Y": 234.78163,
"Z": 347.85986 "Z": 348.13953
}, },
"StopDistance": 1,
"TerritoryId": 155, "TerritoryId": 155,
"InteractionType": "Combat", "InteractionType": "Combat",
"EnemySpawnType": "AutoOnEnterArea", "EnemySpawnType": "AutoOnEnterArea",

View File

@ -0,0 +1,36 @@
{
"$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"
}
]
}
]
}

View File

@ -69,7 +69,7 @@ public sealed class QuestStep
public IList<uint> PointMenuChoices { get; set; } = new List<uint>(); public IList<uint> PointMenuChoices { get; set; } = new List<uint>();
// TODO: Not implemented // TODO: Not implemented
public ushort? PickupQuestId { get; set; } public ushort? PickUpQuestId { get; set; }
public ushort? TurnInQuestId { get; set; } public ushort? TurnInQuestId { get; set; }
public ushort? NextQuestId { get; set; } public ushort? NextQuestId { get; set; }

View File

@ -157,21 +157,21 @@ internal sealed class CombatController
private unsafe bool IsEnemyToKill(IGameObject gameObject) 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 // 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 // but also delays killing the next enemy a little
if (_currentFight == null || _currentFight.Data.SpawnType != EEnemySpawnType.OverworldEnemies || if (_currentFight == null || _currentFight.Data.SpawnType != EEnemySpawnType.OverworldEnemies ||
_currentFight.Data.ComplexCombatDatas.Count == 0) _currentFight.Data.ComplexCombatDatas.Count == 0)
{ {
if (battleChara.IsDead) if (battleNpc.IsDead)
return false; return false;
} }
if (!battleChara.IsTargetable) if (!battleNpc.IsTargetable)
return false; return false;
if (battleChara.TargetObjectId == _clientState.LocalPlayer?.GameObjectId) if (battleNpc.TargetObjectId == _clientState.LocalPlayer?.GameObjectId)
return true; return true;
if (_currentFight != null) if (_currentFight != null)
@ -184,18 +184,18 @@ internal sealed class CombatController
if (_currentFight.Data.CompletedComplexDatas.Contains(i)) if (_currentFight.Data.CompletedComplexDatas.Contains(i))
continue; continue;
if (complexCombatData[i].DataId == battleChara.DataId) if (complexCombatData[i].DataId == battleNpc.DataId)
return true; return true;
} }
} }
else else
{ {
if (_currentFight.Data.KillEnemyDataIds.Contains(battleChara.DataId)) if (_currentFight.Data.KillEnemyDataIds.Contains(battleNpc.DataId))
return true; return true;
} }
} }
if (battleChara.StatusFlags.HasFlag(StatusFlags.Hostile)) if (battleNpc.BattleNpcKind is BattleNpcSubKind.BattleNpcPart or BattleNpcSubKind.Enemy)
{ {
var gameObjectStruct = (GameObject*)gameObject.Address; var gameObjectStruct = (GameObject*)gameObject.Address;
return gameObjectStruct->NamePlateIconId != 0; return gameObjectStruct->NamePlateIconId != 0;

View File

@ -16,6 +16,13 @@ internal sealed class MovementOverrideController
new BlacklistedPoint(128, new(2f, 40.25f, 36.5f), new(0.25f, 40.25f, 36.5f)), 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)), 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)), new BlacklistedPoint(1189, new(574f, -142.25f, 504.25f), new(574.44183f, -142.12766f, 507.60065f)),
// heritage found: yyupye's halo (farm, npc: Mahuwsa) // heritage found: yyupye's halo (farm, npc: Mahuwsa)

View File

@ -44,6 +44,8 @@ internal static class EquipItem
InventoryType.ArmoryWrist, InventoryType.ArmoryWrist,
InventoryType.ArmoryRings, InventoryType.ArmoryRings,
InventoryType.ArmorySoulCrystal,
InventoryType.Inventory1, InventoryType.Inventory1,
InventoryType.Inventory2, InventoryType.Inventory2,
InventoryType.Inventory3, InventoryType.Inventory3,
@ -81,9 +83,12 @@ internal static class EquipItem
if (inventoryManager == null) if (inventoryManager == null)
return ETaskResult.StillRunning; return ETaskResult.StillRunning;
if (_targetSlots.Any(x => foreach (ushort x in _targetSlots)
inventoryManager->GetInventorySlot(InventoryType.EquippedItems, x)->ItemId == _itemId)) {
var itemSlot = inventoryManager->GetInventorySlot(InventoryType.EquippedItems, x);
if (itemSlot != null && itemSlot->ItemId == _itemId)
return ETaskResult.TaskComplete; return ETaskResult.TaskComplete;
}
Equip(); Equip();
_continueAt = DateTime.Now.AddSeconds(1); _continueAt = DateTime.Now.AddSeconds(1);
@ -100,11 +105,15 @@ internal static class EquipItem
if (equippedContainer == null) if (equippedContainer == null)
return; return;
if (_targetSlots.Any(slot => equippedContainer->GetInventorySlot(slot)->ItemId == _itemId)) foreach (ushort slot in _targetSlots)
{
var itemSlot = equippedContainer->GetInventorySlot(slot);
if (itemSlot != null && itemSlot->ItemId == _itemId)
{ {
logger.LogInformation("Already equipped {Item}, skipping step", _item.Name?.ToString()); logger.LogInformation("Already equipped {Item}, skipping step", _item.Name?.ToString());
return; return;
} }
}
foreach (InventoryType sourceInventoryType in SourceInventoryTypes) foreach (InventoryType sourceInventoryType in SourceInventoryTypes)
{ {
@ -124,7 +133,11 @@ internal static class EquipItem
// Move the item to the first available slot // Move the item to the first available slot
ushort targetSlot = _targetSlots 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(); .Concat(_targetSlots).First();
logger.LogInformation( logger.LogInformation(
@ -146,7 +159,7 @@ internal static class EquipItem
>= 1 and <= 11 => [(ushort)(item.EquipSlotCategory.Row - 1)], >= 1 and <= 11 => [(ushort)(item.EquipSlotCategory.Row - 1)],
12 => [11, 12], // rings 12 => [11, 12], // rings
13 => [0], 13 => [0],
17 => [14], // soul crystal 17 => [13], // soul crystal
_ => null _ => null
}; };
} }

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization;
using System.Numerics; using System.Numerics;
using FFXIVClientStructs.FFXIV.Client.Game; using FFXIVClientStructs.FFXIV.Client.Game;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
@ -38,10 +39,17 @@ internal static class UseItem
var unmount = serviceProvider.GetRequiredService<UnmountTask>(); var unmount = serviceProvider.GetRequiredService<UnmountTask>();
if (step.GroundTarget == true) if (step.GroundTarget == true)
{ {
ArgumentNullException.ThrowIfNull(step.DataId); ITask task;
if (step.DataId != null)
var task = serviceProvider.GetRequiredService<UseOnGround>() task = serviceProvider.GetRequiredService<UseOnGround>()
.With(step.DataId.Value, step.ItemId.Value); .With(step.DataId.Value, step.ItemId.Value);
else
{
ArgumentNullException.ThrowIfNull(step.Position);
task = serviceProvider.GetRequiredService<UseOnPosition>()
.With(step.Position.Value, step.ItemId.Value);
}
return [unmount, task]; return [unmount, task];
} }
else if (step.DataId != null) else if (step.DataId != null)
@ -161,6 +169,24 @@ internal static class UseItem
public override string ToString() => $"UseItem({ItemId} on ground at {DataId})"; 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) internal sealed class UseOnObject(GameFunctions gameFunctions, ILogger<UseOnObject> logger) : UseItemBase(logger)
{ {
public uint DataId { get; set; } public uint DataId { get; set; }

View File

@ -111,7 +111,7 @@ internal static class WaitAtEnd
return return
[ [
serviceProvider.GetRequiredService<WaitQuestAccepted>() serviceProvider.GetRequiredService<WaitQuestAccepted>()
.With(step.PickupQuestId ?? quest.QuestId), .With(step.PickUpQuestId ?? quest.QuestId),
serviceProvider.GetRequiredService<WaitDelay>() serviceProvider.GetRequiredService<WaitDelay>()
]; ];

View File

@ -128,6 +128,13 @@ internal sealed unsafe class GameFunctions
if (chocoboQuest != 0 && !QuestManager.IsQuestComplete(chocoboQuest)) if (chocoboQuest != 0 && !QuestManager.IsQuestComplete(chocoboQuest))
return (chocoboQuest, QuestManager.GetQuestSequence(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 (currentQuest, sequence);
} }
@ -443,6 +450,11 @@ internal sealed unsafe class GameFunctions
return false; return false;
} }
public bool UseItemOnPosition(Vector3 position, uint itemId)
{
return ActionManager.Instance()->UseActionLocation(ActionType.KeyItem, itemId, location: &position);
}
public bool UseAction(EAction action) public bool UseAction(EAction action)
{ {
if (ActionManager.Instance()->GetActionStatus(ActionType.Action, (uint)action) == 0) if (ActionManager.Instance()->GetActionStatus(ActionType.Action, (uint)action) == 0)

View File

@ -121,7 +121,7 @@ public sealed class QuestionablePlugin : IDalamudPlugin
serviceCollection.AddTaskWithFactory<Interact.Factory, Interact.DoInteract>(); serviceCollection.AddTaskWithFactory<Interact.Factory, Interact.DoInteract>();
serviceCollection.AddTaskWithFactory<Jump.Factory, Jump.DoJump>(); serviceCollection.AddTaskWithFactory<Jump.Factory, Jump.DoJump>();
serviceCollection.AddTaskWithFactory<Say.Factory, Say.UseChat>(); 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<EquipItem.Factory, EquipItem.DoEquip>();
serviceCollection serviceCollection
.AddTaskWithFactory<SinglePlayerDuty.Factory, SinglePlayerDuty.DisableYesAlready, .AddTaskWithFactory<SinglePlayerDuty.Factory, SinglePlayerDuty.DisableYesAlready,

View File

@ -10,7 +10,7 @@ internal sealed class UniqueStartStopValidator : IQuestValidator
public IEnumerable<ValidationIssue> Validate(Quest quest) public IEnumerable<ValidationIssue> Validate(Quest quest)
{ {
var questAccepts = FindQuestStepsWithInteractionType(quest, EInteractionType.AcceptQuest) var questAccepts = FindQuestStepsWithInteractionType(quest, EInteractionType.AcceptQuest)
.Where(x => x.Step.PickupQuestId == null) .Where(x => x.Step.PickUpQuestId == null)
.ToList(); .ToList();
foreach (var accept in questAccepts) foreach (var accept in questAccepts)
{ {