forked from liza/Questionable
Compare commits
40 Commits
7453f9269e
...
4767af7cc5
Author | SHA1 | Date | |
---|---|---|---|
4767af7cc5 | |||
01c88ecb84 | |||
07286839cf | |||
4aa4032cd1 | |||
361a3ff5f8 | |||
0ac2e36afd | |||
26ad97c9e2 | |||
09f8cb9078 | |||
3b6dc2e03b | |||
7d7a4d32e8 | |||
88a4310028 | |||
e7a2bb0cba | |||
411b121f62 | |||
|
19aa2e90fd | ||
|
27663c765d | ||
|
eba0902bd1 | ||
|
565022589d | ||
|
c2a16e1ec1 | ||
|
1d3b9a9426 | ||
|
f30b6792bf | ||
|
189087a85b | ||
|
d9d95f17a8 | ||
|
f1698d4652 | ||
0c36dd324f | |||
4b75388ddc | |||
e72a57fff4 | |||
8c77cb7e95 | |||
cd16cf93a3 | |||
f7d56663d2 | |||
4f4ad144a0 | |||
e1cbdbf951 | |||
2f8c72cbea | |||
3f6a6cd8a9 | |||
66e9a71847 | |||
d4a9bb5f9b | |||
2aa14db916 | |||
e54732e798 | |||
|
798160c250 | ||
d3e0bba06c | |||
|
a45bf3f950 |
@ -1,5 +1,5 @@
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<Version>3.5</Version>
|
||||
<Version>3.6</Version>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
@ -45,8 +45,10 @@
|
||||
"Y": 58.56588,
|
||||
"Z": -533.6083
|
||||
},
|
||||
"MinimumAngle": 155,
|
||||
"MaximumAngle": 325
|
||||
"MinimumAngle": 185,
|
||||
"MaximumAngle": 225,
|
||||
"MinimumDistance": 2,
|
||||
"MaximumDistance": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -131,4 +133,4 @@
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
2
LLib
2
LLib
@ -1 +1 @@
|
||||
Subproject commit 43c3dba112c202e2d0ff1a6909020c2b83e20dc3
|
||||
Subproject commit 6dfc18ee6a187138036ee2d51ba2257741c1e568
|
@ -127,6 +127,8 @@ internal static class QuestStepExtensions
|
||||
.AsSyntaxNodeOrToken(),
|
||||
AssignmentList(nameof(QuestStep.PointMenuChoices), step.PointMenuChoices)
|
||||
.AsSyntaxNodeOrToken(),
|
||||
Assignment(nameof(QuestStep.PurchaseMenu), step.PurchaseMenu, emptyStep.PurchaseMenu)
|
||||
.AsSyntaxNodeOrToken(),
|
||||
Assignment(nameof(QuestStep.PickUpQuestId), step.PickUpQuestId,
|
||||
emptyStep.PickUpQuestId)
|
||||
.AsSyntaxNodeOrToken(),
|
||||
|
@ -65,6 +65,8 @@ internal static class SkipConditionsExtensions
|
||||
skipStepConditions.QuestsAccepted).AsSyntaxNodeOrToken(),
|
||||
AssignmentList(nameof(SkipStepConditions.QuestsCompleted),
|
||||
skipStepConditions.QuestsCompleted).AsSyntaxNodeOrToken(),
|
||||
AssignmentList(nameof(SkipStepConditions.NotNamePlateIconId),
|
||||
skipStepConditions.NotNamePlateIconId).AsSyntaxNodeOrToken(),
|
||||
Assignment(nameof(SkipStepConditions.AetheryteLocked),
|
||||
skipStepConditions.AetheryteLocked, emptyStep.AetheryteLocked)
|
||||
.AsSyntaxNodeOrToken(),
|
||||
|
@ -57,13 +57,12 @@
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 49.65071,
|
||||
"Y": -8.046952,
|
||||
"Z": 102.32186
|
||||
"X": 40.596844,
|
||||
"Y": -8,
|
||||
"Z": 103.85207
|
||||
},
|
||||
"TerritoryId": 132,
|
||||
"InteractionType": "WalkTo",
|
||||
"$": "New Gridania Navmesh workaround"
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"DataId": 1000460,
|
||||
|
@ -0,0 +1,130 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "plogon_enjoyer",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016089,
|
||||
"Position": {
|
||||
"X": -799.46594,
|
||||
"Y": -133.2695,
|
||||
"Z": -404.1352
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016091,
|
||||
"Position": {
|
||||
"X": -804.25726,
|
||||
"Y": -133.2695,
|
||||
"Z": -390.89038
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016093,
|
||||
"Position": {
|
||||
"X": -776.0281,
|
||||
"Y": -133.35559,
|
||||
"Z": -414.32825
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -850.9607,
|
||||
"Y": 2.3374987,
|
||||
"Z": -234.1339
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1016222,
|
||||
"Position": {
|
||||
"X": -853.8186,
|
||||
"Y": 7.7667847,
|
||||
"Z": -223.92621
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Action",
|
||||
"Action": "Buffet (Sanuwa)",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1016221,
|
||||
"Position": {
|
||||
"X": -576.40955,
|
||||
"Y": -51.59082,
|
||||
"Z": -543.8773
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Action",
|
||||
"Action": "Buffet (Sanuwa)",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1016220,
|
||||
"Position": {
|
||||
"X": -455.7718,
|
||||
"Y": -20.828613,
|
||||
"Z": -610.8644
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Action",
|
||||
"Action": "Buffet (Sanuwa)",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -660.26556,
|
||||
"Y": -49.27812,
|
||||
"Z": -403.1036
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "WalkTo",
|
||||
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1016091,
|
||||
"Position": {
|
||||
"X": -804.25726,
|
||||
"Y": -133.2695,
|
||||
"Z": -390.89038
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,106 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "plogon_enjoyer",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016089,
|
||||
"Position": {
|
||||
"X": -799.46594,
|
||||
"Y": -133.2695,
|
||||
"Z": -404.1352
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016090,
|
||||
"Position": {
|
||||
"X": -836.51483,
|
||||
"Y": -133.26949,
|
||||
"Z": -386.61786
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 833.7674,
|
||||
"Y": -97.81962,
|
||||
"Z": -735.3544
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1016223,
|
||||
"Position": {
|
||||
"X": 834.37854,
|
||||
"Y": -97.83405,
|
||||
"Z": -738.18567
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AfterInteraction",
|
||||
"KillEnemyDataIds": [5239]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016223,
|
||||
"Position": {
|
||||
"X": 834.37854,
|
||||
"Y": -97.83405,
|
||||
"Z": -738.18567
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -660.26556,
|
||||
"Y": -49.27812,
|
||||
"Z": -403.1036
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "WalkTo",
|
||||
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1016090,
|
||||
"Position": {
|
||||
"X": -836.51483,
|
||||
"Y": -133.26949,
|
||||
"Z": -386.61786
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,109 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "plogon_enjoyer",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016089,
|
||||
"Position": {
|
||||
"X": -799.46594,
|
||||
"Y": -133.2695,
|
||||
"Z": -404.1352
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016090,
|
||||
"Position": {
|
||||
"X": -836.51483,
|
||||
"Y": -133.26949,
|
||||
"Z": -386.61786
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016093,
|
||||
"Position": {
|
||||
"X": -776.0281,
|
||||
"Y": -133.35559,
|
||||
"Z": -414.32825
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016227,
|
||||
"Position": {
|
||||
"X": 473.1975,
|
||||
"Y": -98.03464,
|
||||
"Z": -527.7333
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Action",
|
||||
"Action": "Buffet (Sanuwa)",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1016226,
|
||||
"Position": {
|
||||
"X": 710.9331,
|
||||
"Y": -98.032555,
|
||||
"Z": -741.0239
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Action",
|
||||
"Action": "Buffet (Sanuwa)",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -660.26556,
|
||||
"Y": -49.27812,
|
||||
"Z": -403.1036
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "WalkTo",
|
||||
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1016090,
|
||||
"Position": {
|
||||
"X": -836.51483,
|
||||
"Y": -133.26949,
|
||||
"Z": -386.61786
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,129 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "plogon_enjoyer",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016089,
|
||||
"Position": {
|
||||
"X": -799.46594,
|
||||
"Y": -133.2695,
|
||||
"Z": -404.1352
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016092,
|
||||
"Position": {
|
||||
"X": -792.6299,
|
||||
"Y": -133.32184,
|
||||
"Z": -425.5589
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006676,
|
||||
"Position": {
|
||||
"X": -717.0062,
|
||||
"Y": -13.901062,
|
||||
"Z": -101.487854
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true,
|
||||
"RequiredQuestVariables": [null, null, [16], null, null, null]
|
||||
},
|
||||
{
|
||||
"DataId": 2006762,
|
||||
"Position": {
|
||||
"X": -781.52136,
|
||||
"Y": -13.931519,
|
||||
"Z": -114.30542
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true,
|
||||
"RequiredQuestVariables": [null, null, [32], null, null, null]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006675,
|
||||
"Position": {
|
||||
"X": -642.298,
|
||||
"Y": -207.29382,
|
||||
"Z": 211.10852
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AfterItemUse",
|
||||
"ItemId": 2001912,
|
||||
"KillEnemyDataIds": [5240],
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1012054,
|
||||
"Position": {
|
||||
"X": -640.1007,
|
||||
"Y": -119.56208,
|
||||
"Z": 469.5963
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "The Sea of Clouds - Camp Cloudtop"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -660.26556,
|
||||
"Y": -49.27812,
|
||||
"Z": -403.1036
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "WalkTo",
|
||||
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1016092,
|
||||
"Position": {
|
||||
"X": -792.6299,
|
||||
"Y": -133.32184,
|
||||
"Z": -425.5589
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,95 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "plogon_enjoyer",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016089,
|
||||
"Position": {
|
||||
"X": -799.46594,
|
||||
"Y": -133.2695,
|
||||
"Z": -404.1352
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016092,
|
||||
"Position": {
|
||||
"X": -792.6299,
|
||||
"Y": -133.32184,
|
||||
"Z": -425.5589
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006677,
|
||||
"Position": {
|
||||
"X": 117.96753,
|
||||
"Y": 12.25293,
|
||||
"Z": -412.92444
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AfterInteraction",
|
||||
"KillEnemyDataIds": [5241],
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006678,
|
||||
"Position": {
|
||||
"X": 160.54016,
|
||||
"Y": 11.856201,
|
||||
"Z": -507.65244
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AfterInteraction",
|
||||
"KillEnemyDataIds": [5241],
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -660.26556,
|
||||
"Y": -49.27812,
|
||||
"Z": -403.1036
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "WalkTo",
|
||||
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1016092,
|
||||
"Position": {
|
||||
"X": -792.6299,
|
||||
"Y": -133.32184,
|
||||
"Z": -425.5589
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,101 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "plogon_enjoyer",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016089,
|
||||
"Position": {
|
||||
"X": -799.46594,
|
||||
"Y": -133.2695,
|
||||
"Z": -404.1352
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016092,
|
||||
"Position": {
|
||||
"X": -792.6299,
|
||||
"Y": -133.32184,
|
||||
"Z": -425.5589
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006679,
|
||||
"Position": {
|
||||
"X": -401.175,
|
||||
"Y": -202.65509,
|
||||
"Z": 432.39478
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AfterInteraction",
|
||||
"KillEnemyDataIds": [5242],
|
||||
"AetheryteShortcut": "The Sea of Clouds - Camp Cloudtop",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006680,
|
||||
"Position": {
|
||||
"X": -280.8728,
|
||||
"Y": -202.01422,
|
||||
"Z": 390.7987
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AfterInteraction",
|
||||
"KillEnemyDataIds": [5242],
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -660.26556,
|
||||
"Y": -49.27812,
|
||||
"Z": -403.1036
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "WalkTo",
|
||||
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1016092,
|
||||
"Position": {
|
||||
"X": -792.6299,
|
||||
"Y": -133.32184,
|
||||
"Z": -425.5589
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,121 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "plogon_enjoyer",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016089,
|
||||
"Position": {
|
||||
"X": -799.46594,
|
||||
"Y": -133.2695,
|
||||
"Z": -404.1352
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016092,
|
||||
"Position": {
|
||||
"X": -792.6299,
|
||||
"Y": -133.32184,
|
||||
"Z": -425.5589
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006682,
|
||||
"Position": {
|
||||
"X": 25.711426,
|
||||
"Y": 150.46924,
|
||||
"Z": -133.56226
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006681,
|
||||
"Position": {
|
||||
"X": 237.07935,
|
||||
"Y": 163.95813,
|
||||
"Z": -46.433228
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 237.02913,
|
||||
"Y": 169.13622,
|
||||
"Z": -44.168194
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006683,
|
||||
"Position": {
|
||||
"X": 332.5094,
|
||||
"Y": 106.79785,
|
||||
"Z": -68.2536
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 297.20715,
|
||||
"Y": 106.011185,
|
||||
"Z": -25.524097
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": -660.26556,
|
||||
"Y": -49.27812,
|
||||
"Z": -403.1036
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "WalkTo",
|
||||
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1016092,
|
||||
"Position": {
|
||||
"X": -792.6299,
|
||||
"Y": -133.32184,
|
||||
"Z": -425.5589
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,173 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "plogon_enjoyer",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016087,
|
||||
"Position": {
|
||||
"X": -796.7498,
|
||||
"Y": -133.2695,
|
||||
"Z": -410.6966
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1012064,
|
||||
"Position": {
|
||||
"X": -542.7787,
|
||||
"Y": -37.11544,
|
||||
"Z": -386.7094
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016174,
|
||||
"Position": {
|
||||
"X": -606.4088,
|
||||
"Y": -51.071037,
|
||||
"Z": -370.87054
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -589.2831,
|
||||
"Y": -1.0348412,
|
||||
"Z": -340.14413
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true,
|
||||
"Land": true
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": -589.2831,
|
||||
"Y": -1.0348412,
|
||||
"Z": -340.14413
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Emote",
|
||||
"Emote": "dance",
|
||||
"Mount": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016174,
|
||||
"Position": {
|
||||
"X": -606.4088,
|
||||
"Y": -51.071037,
|
||||
"Z": -370.87054
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 5,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016175,
|
||||
"Position": {
|
||||
"X": 657.557,
|
||||
"Y": -125.6886,
|
||||
"Z": 307.60657
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 6,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 702.4233,
|
||||
"Y": -60.78939,
|
||||
"Z": 145.91805
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true,
|
||||
"Land": true
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 702.4233,
|
||||
"Y": -60.78939,
|
||||
"Z": 145.91805
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Emote",
|
||||
"Emote": "dance",
|
||||
"Mount": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 7,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016175,
|
||||
"Position": {
|
||||
"X": 657.557,
|
||||
"Y": -125.6886,
|
||||
"Z": 307.60657
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016174,
|
||||
"Position": {
|
||||
"X": -606.4088,
|
||||
"Y": -51.071037,
|
||||
"Z": -370.87054
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,79 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "plogon_enjoyer",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006883,
|
||||
"Position": {
|
||||
"X": 31.418213,
|
||||
"Y": -65.32391,
|
||||
"Z": 111.74182
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Combat",
|
||||
"Fly": true,
|
||||
"EnemySpawnType": "AfterInteraction",
|
||||
"KillEnemyDataIds": [5550]
|
||||
},
|
||||
{
|
||||
"DataId": 2006882,
|
||||
"Position": {
|
||||
"X": 307.05725,
|
||||
"Y": -66.54462,
|
||||
"Z": 163.43933
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Combat",
|
||||
"Fly": true,
|
||||
"EnemySpawnType": "AfterInteraction",
|
||||
"KillEnemyDataIds": [5550]
|
||||
},
|
||||
{
|
||||
"DataId": 2006881,
|
||||
"Position": {
|
||||
"X": 352.25452,
|
||||
"Y": -51.07196,
|
||||
"Z": -46.982605
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,119 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "plogon_enjoyer",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006886,
|
||||
"Position": {
|
||||
"X": 237.65918,
|
||||
"Y": -71.45807,
|
||||
"Z": 99.01575
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006885,
|
||||
"Position": {
|
||||
"X": 284.5349,
|
||||
"Y": -67.61273,
|
||||
"Z": 83.878784
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006884,
|
||||
"Position": {
|
||||
"X": 294.94165,
|
||||
"Y": -68.92505,
|
||||
"Z": 129.19812
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1011917,
|
||||
"Position": {
|
||||
"X": 535.30164,
|
||||
"Y": -51.340645,
|
||||
"Z": 65.293335
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Tailfeather"
|
||||
},
|
||||
{
|
||||
"DataId": 1011922,
|
||||
"Position": {
|
||||
"X": 448.56934,
|
||||
"Y": -51.141407,
|
||||
"Z": 108.93408
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,80 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "plogon_enjoyer",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006872,
|
||||
"Position": {
|
||||
"X": 333.82153,
|
||||
"Y": -47.53192,
|
||||
"Z": -331.53284
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AfterInteraction",
|
||||
"KillEnemyDataIds": [5546],
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006871,
|
||||
"Position": {
|
||||
"X": 559.71606,
|
||||
"Y": -41.24518,
|
||||
"Z": -333.1808
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006873,
|
||||
"Position": {
|
||||
"X": 707.7285,
|
||||
"Y": -50.095398,
|
||||
"Z": -151.47632
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AfterInteraction",
|
||||
"KillEnemyDataIds": [5546],
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,109 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "plogon_enjoyer",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006897,
|
||||
"Position": {
|
||||
"X": 88.48706,
|
||||
"Y": -123.43024,
|
||||
"Z": 561.7914
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006899,
|
||||
"Position": {
|
||||
"X": 137.1023,
|
||||
"Y": -120.01227,
|
||||
"Z": 586.08374
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006898,
|
||||
"Position": {
|
||||
"X": 111.86377,
|
||||
"Y": -119.035645,
|
||||
"Z": 617.4868
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006894,
|
||||
"Position": {
|
||||
"X": 223.22424,
|
||||
"Y": -123.6134,
|
||||
"Z": 697.6272
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006892,
|
||||
"Position": {
|
||||
"X": 209.1554,
|
||||
"Y": -123.12512,
|
||||
"Z": 767.91016
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006893,
|
||||
"Position": {
|
||||
"X": 291.03528,
|
||||
"Y": -119.40192,
|
||||
"Z": 664.6676
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,109 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "plogon_enjoyer",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006903,
|
||||
"Position": {
|
||||
"X": 20.004517,
|
||||
"Y": -84.00098,
|
||||
"Z": 282.15454
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006904,
|
||||
"Position": {
|
||||
"X": 52.68933,
|
||||
"Y": -100.572266,
|
||||
"Z": 317.1283
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Mount": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006905,
|
||||
"Position": {
|
||||
"X": 6.301941,
|
||||
"Y": -100.206055,
|
||||
"Z": 351.43042
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Mount": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006902,
|
||||
"Position": {
|
||||
"X": -317.49445,
|
||||
"Y": -80.55243,
|
||||
"Z": 632.59326
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006901,
|
||||
"Position": {
|
||||
"X": -336.96503,
|
||||
"Y": -80.55243,
|
||||
"Z": 655.08496
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Mount": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006900,
|
||||
"Position": {
|
||||
"X": -379.75128,
|
||||
"Y": -75.21173,
|
||||
"Z": 669.2759
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,91 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "plogon_enjoyer",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006909,
|
||||
"Position": {
|
||||
"X": -124.37634,
|
||||
"Y": -86.07617,
|
||||
"Z": 763.6987
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AfterInteraction",
|
||||
"KillEnemyDataIds": [5548],
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006906,
|
||||
"Position": {
|
||||
"X": -178.51532,
|
||||
"Y": -86.167725,
|
||||
"Z": 775.845
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006908,
|
||||
"Position": {
|
||||
"X": -305.745,
|
||||
"Y": -68.13159,
|
||||
"Z": 812.7717
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AfterInteraction",
|
||||
"KillEnemyDataIds": [5548],
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006907,
|
||||
"Position": {
|
||||
"X": -303.36462,
|
||||
"Y": -80.52191,
|
||||
"Z": 734.15735
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,91 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "plogon_enjoyer",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006913,
|
||||
"Position": {
|
||||
"X": 566.7964,
|
||||
"Y": -20.553955,
|
||||
"Z": -530.2052
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006914,
|
||||
"Position": {
|
||||
"X": 595.3917,
|
||||
"Y": -20.187744,
|
||||
"Z": -547.4785
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006912,
|
||||
"Position": {
|
||||
"X": 639.8259,
|
||||
"Y": -19.60791,
|
||||
"Z": -588.098
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016855,
|
||||
"Position": {
|
||||
"X": 74.906494,
|
||||
"Y": -48,
|
||||
"Z": -175.67712
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,96 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "plogon_enjoyer",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1017031,
|
||||
"Position": {
|
||||
"X": 74.20459,
|
||||
"Y": -48.533592,
|
||||
"Z": -171.12994
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -190.26477,
|
||||
"Y": -104.73892,
|
||||
"Z": 512.932
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Action",
|
||||
"Action": "Fumigate",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -13.443237,
|
||||
"Y": -129.2623,
|
||||
"Z": 712.21484
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Action",
|
||||
"Action": "Fumigate",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 45.151367,
|
||||
"Y": -132.12938,
|
||||
"Z": 685.7556
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Action",
|
||||
"Action": "Fumigate",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,72 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "plogon_enjoyer",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006930,
|
||||
"Position": {
|
||||
"X": 510.3684,
|
||||
"Y": -26.077698,
|
||||
"Z": -592.3705
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006931,
|
||||
"Position": {
|
||||
"X": 358.81592,
|
||||
"Y": -51.98755,
|
||||
"Z": -137.89581
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AfterItemUse",
|
||||
"ItemId": 2001963,
|
||||
"KillEnemyDataIds": [5552],
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,124 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "plogon_enjoyer",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006937,
|
||||
"Position": {
|
||||
"X": -42.282776,
|
||||
"Y": -32.73065,
|
||||
"Z": 183.30652
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006935,
|
||||
"Position": {
|
||||
"X": -46.189087,
|
||||
"Y": -47.257202,
|
||||
"Z": 241.93176
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006936,
|
||||
"Position": {
|
||||
"X": -83.57367,
|
||||
"Y": -48.17273,
|
||||
"Z": 231.89136
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006934,
|
||||
"Position": {
|
||||
"X": -105.02789,
|
||||
"Y": -69.68799,
|
||||
"Z": 350.63696
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006933,
|
||||
"Position": {
|
||||
"X": -80.03363,
|
||||
"Y": -71.67163,
|
||||
"Z": 412.46655
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2006932,
|
||||
"Position": {
|
||||
"X": -155.41315,
|
||||
"Y": -71.122375,
|
||||
"Z": 387.28918
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016863,
|
||||
"Position": {
|
||||
"X": 67.948364,
|
||||
"Y": -48.43746,
|
||||
"Z": -168.23071
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,118 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "plogon_enjoyer",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016879,
|
||||
"Position": {
|
||||
"X": -412.16144,
|
||||
"Y": 2.644555,
|
||||
"Z": -145.1286
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006950,
|
||||
"Position": {
|
||||
"X": -450.9499,
|
||||
"Y": -7.7058716,
|
||||
"Z": -222.61395
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true,
|
||||
"Land": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016879,
|
||||
"Position": {
|
||||
"X": -412.16144,
|
||||
"Y": 2.644555,
|
||||
"Z": -145.1286
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006951,
|
||||
"Position": {
|
||||
"X": -388.35742,
|
||||
"Y": -10.238831,
|
||||
"Z": -268.5741
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true,
|
||||
"Land": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 5,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016879,
|
||||
"Position": {
|
||||
"X": -412.16144,
|
||||
"Y": 2.644555,
|
||||
"Z": -145.1286
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -13,7 +13,13 @@
|
||||
"Z": 42.98462
|
||||
},
|
||||
"TerritoryId": 478,
|
||||
"InteractionType": "AcceptQuest"
|
||||
"InteractionType": "AcceptQuest",
|
||||
"AetheryteShortcut": "Idyllshire",
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"InSameTerritory": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -5,6 +5,22 @@
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"InteractionType": "None",
|
||||
"TerritoryId": 886,
|
||||
"AetheryteShortcut": "Ishgard",
|
||||
"AethernetShortcut": [
|
||||
"[Ishgard] Aetheryte Plaza",
|
||||
"[Ishgard] Firmament"
|
||||
],
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"InTerritory": [
|
||||
886
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 1031681,
|
||||
"Position": {
|
||||
@ -13,7 +29,14 @@
|
||||
"Z": 146.34924
|
||||
},
|
||||
"TerritoryId": 886,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"SkipConditions": {
|
||||
"StepIf": {
|
||||
"NotNamePlateIconId": [
|
||||
60091
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 1031677,
|
||||
@ -23,7 +46,14 @@
|
||||
"Z": 168.9325
|
||||
},
|
||||
"TerritoryId": 886,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"SkipConditions": {
|
||||
"StepIf": {
|
||||
"NotNamePlateIconId": [
|
||||
60091
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 1031692,
|
||||
@ -34,7 +64,14 @@
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 886,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"SkipConditions": {
|
||||
"StepIf": {
|
||||
"NotNamePlateIconId": [
|
||||
60091
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
@ -53,7 +90,14 @@
|
||||
"Z": 138.47559
|
||||
},
|
||||
"TerritoryId": 886,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"SkipConditions": {
|
||||
"StepIf": {
|
||||
"NotNamePlateIconId": [
|
||||
60091
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 1031693,
|
||||
@ -63,7 +107,14 @@
|
||||
"Z": 138.93335
|
||||
},
|
||||
"TerritoryId": 886,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"SkipConditions": {
|
||||
"StepIf": {
|
||||
"NotNamePlateIconId": [
|
||||
60091
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 1031694,
|
||||
@ -74,7 +125,14 @@
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 886,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"SkipConditions": {
|
||||
"StepIf": {
|
||||
"NotNamePlateIconId": [
|
||||
60091
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 1031695,
|
||||
@ -84,7 +142,14 @@
|
||||
"Z": 169.9397
|
||||
},
|
||||
"TerritoryId": 886,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"SkipConditions": {
|
||||
"StepIf": {
|
||||
"NotNamePlateIconId": [
|
||||
60091
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 1031681,
|
||||
@ -94,7 +159,14 @@
|
||||
"Z": 146.34924
|
||||
},
|
||||
"TerritoryId": 886,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"SkipConditions": {
|
||||
"StepIf": {
|
||||
"NotNamePlateIconId": [
|
||||
60091
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 1031992,
|
||||
|
@ -43,7 +43,14 @@
|
||||
"Z": 150.92688
|
||||
},
|
||||
"TerritoryId": 886,
|
||||
"InteractionType": "Instruction",
|
||||
"InteractionType": "PurchaseItem",
|
||||
"PurchaseMenu": {
|
||||
"ExcelSheet": "GilShop",
|
||||
"Key": 262151,
|
||||
"$": "This isn't the correct shop id, but it's also unclear how you'd find out"
|
||||
},
|
||||
"ItemId": 5768,
|
||||
"ItemCount": 2,
|
||||
"Comment": "Buy cream yellow dye",
|
||||
"AethernetShortcut": [
|
||||
"[Firmament] The New Nest",
|
||||
|
@ -22,14 +22,13 @@
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2009333,
|
||||
"Position": {
|
||||
"X": 180.4989,
|
||||
"Y": 45.609253,
|
||||
"Z": 452.78088
|
||||
"X": 178.82968,
|
||||
"Y": 45.361248,
|
||||
"Z": 453.55005
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact",
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true,
|
||||
"RequiredQuestVariables": [
|
||||
null,
|
||||
@ -48,6 +47,54 @@
|
||||
null,
|
||||
null,
|
||||
null
|
||||
],
|
||||
"SkipConditions": {
|
||||
"StepIf": {
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 2009333,
|
||||
"Position": {
|
||||
"X": 180.4989,
|
||||
"Y": 45.609253,
|
||||
"Z": 452.78088
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact",
|
||||
"RequiredQuestVariables": [
|
||||
null,
|
||||
[
|
||||
{
|
||||
"Low": 1
|
||||
},
|
||||
{
|
||||
"Low": 2
|
||||
},
|
||||
{
|
||||
"Low": 4
|
||||
}
|
||||
],
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null
|
||||
],
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -0,0 +1,88 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "liza",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1021565,
|
||||
"Position": {
|
||||
"X": 440.11584,
|
||||
"Y": 114.254425,
|
||||
"Z": 212.84802
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "AcceptQuest",
|
||||
"AetheryteShortcut": "Fringes - Peering Stones",
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"InSameTerritory": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1020817,
|
||||
"Position": {
|
||||
"X": 327.5348,
|
||||
"Y": 83.45977,
|
||||
"Z": -103.07471
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1024894,
|
||||
"Position": {
|
||||
"X": 21.744019,
|
||||
"Y": -0.05840592,
|
||||
"Z": 13.01593
|
||||
},
|
||||
"TerritoryId": 635,
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Rhalgr's Reach"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1024771,
|
||||
"Position": {
|
||||
"X": 12.008789,
|
||||
"Y": 55.97821,
|
||||
"Z": 237.96448
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"AetheryteShortcut": "Fringes - Peering Stones",
|
||||
"Fly": true,
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_BANANA001_03036_Q2_000_000",
|
||||
"Answer": "TEXT_BANANA001_03036_A2_000_001"
|
||||
},
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_BANANA001_03036_Q3_000_000",
|
||||
"Answer": "TEXT_BANANA001_03036_A3_000_001"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -13,7 +13,13 @@
|
||||
"Z": 285.60303
|
||||
},
|
||||
"TerritoryId": 622,
|
||||
"InteractionType": "AcceptQuest"
|
||||
"InteractionType": "AcceptQuest",
|
||||
"AetheryteShortcut": "Azim Steppe - Reunion",
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"InSameTerritory": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -13,7 +13,13 @@
|
||||
"Z": 42.98462
|
||||
},
|
||||
"TerritoryId": 478,
|
||||
"InteractionType": "AcceptQuest"
|
||||
"InteractionType": "AcceptQuest",
|
||||
"AetheryteShortcut": "Idyllshire",
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"InSameTerritory": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -155,7 +155,8 @@
|
||||
},
|
||||
"TerritoryId": 613,
|
||||
"InteractionType": "WalkTo",
|
||||
"Mount": true
|
||||
"Mount": true,
|
||||
"RestartNavigationIfCancelled": false
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
@ -164,7 +165,9 @@
|
||||
"Z": 79.0077
|
||||
},
|
||||
"TerritoryId": 613,
|
||||
"InteractionType": "WalkTo"
|
||||
"InteractionType": "WalkTo",
|
||||
"DisableNavmesh": true,
|
||||
"DelaySecondsAtStart": 2
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
|
@ -0,0 +1,120 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "liza",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1023754,
|
||||
"Position": {
|
||||
"X": -429.4652,
|
||||
"Y": 75.3867,
|
||||
"Z": -124.712036
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "AcceptQuest",
|
||||
"AetheryteShortcut": "Fringes - Castrum Oriens",
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"InSameTerritory": true
|
||||
}
|
||||
},
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2008756,
|
||||
"Position": {
|
||||
"X": -417.8073,
|
||||
"Y": 76.8291,
|
||||
"Z": -98.46649
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2008758,
|
||||
"Position": {
|
||||
"X": -411.88678,
|
||||
"Y": 71.82422,
|
||||
"Z": -85.46582
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2008757,
|
||||
"Position": {
|
||||
"X": -423.6057,
|
||||
"Y": 66.056274,
|
||||
"Z": -33.463074
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2008759,
|
||||
"Position": {
|
||||
"X": -426.50494,
|
||||
"Y": 75.028564,
|
||||
"Z": -121.90442
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1019519,
|
||||
"Position": {
|
||||
"X": -613.1228,
|
||||
"Y": 130,
|
||||
"Z": -529.839
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"AetheryteShortcut": "Fringes - Castrum Oriens",
|
||||
"NextQuestId": 2663
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,102 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "liza",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1019519,
|
||||
"Position": {
|
||||
"X": -613.1228,
|
||||
"Y": 130,
|
||||
"Z": -529.839
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1023142,
|
||||
"Position": {
|
||||
"X": -642.9083,
|
||||
"Y": 130.25946,
|
||||
"Z": -538.29254
|
||||
},
|
||||
"StopDistance": 1,
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1019519,
|
||||
"Position": {
|
||||
"X": -613.1228,
|
||||
"Y": 130,
|
||||
"Z": -529.839
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1023153,
|
||||
"Position": {
|
||||
"X": -680.10986,
|
||||
"Y": 120.11875,
|
||||
"Z": -241.13837
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1023154,
|
||||
"Position": {
|
||||
"X": -736.56824,
|
||||
"Y": 110.02372,
|
||||
"Z": -176.13495
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1019519,
|
||||
"Position": {
|
||||
"X": -613.1228,
|
||||
"Y": 130,
|
||||
"Z": -529.839
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"AetheryteShortcut": "Fringes - Castrum Oriens",
|
||||
"Fly": true,
|
||||
"NextQuestId": 2664
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,161 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "liza",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1019519,
|
||||
"Position": {
|
||||
"X": -613.1228,
|
||||
"Y": 130,
|
||||
"Z": -529.839
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1023144,
|
||||
"Position": {
|
||||
"X": -631.7998,
|
||||
"Y": 130.39117,
|
||||
"Z": -467.67383
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2008786,
|
||||
"Position": {
|
||||
"X": -630.45703,
|
||||
"Y": 130.3883,
|
||||
"Z": -466.75824
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1023144,
|
||||
"Position": {
|
||||
"X": -631.7998,
|
||||
"Y": 130.39117,
|
||||
"Z": -467.67383
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1023157,
|
||||
"Position": {
|
||||
"X": -427.26788,
|
||||
"Y": 74.15582,
|
||||
"Z": -103.56299
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 5,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -397.5847,
|
||||
"Y": 73.92399,
|
||||
"Z": -104.41468
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2008761,
|
||||
"Position": {
|
||||
"X": -398.30627,
|
||||
"Y": 74.23511,
|
||||
"Z": -106.70636
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 6,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -391.48306,
|
||||
"Y": 73.52123,
|
||||
"Z": -100.069016
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "WalkTo",
|
||||
"Mount": true
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": -424.38403,
|
||||
"Y": 62.880836,
|
||||
"Z": -28.616083
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1023158,
|
||||
"Position": {
|
||||
"X": -426.71857,
|
||||
"Y": 63.23476,
|
||||
"Z": -28.82434
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1019519,
|
||||
"Position": {
|
||||
"X": -613.1228,
|
||||
"Y": 130,
|
||||
"Z": -529.839
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"AetheryteShortcut": "Fringes - Castrum Oriens",
|
||||
"Fly": true,
|
||||
"NextQuestId": 2824
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,74 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "liza",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1021565,
|
||||
"Position": {
|
||||
"X": 440.11584,
|
||||
"Y": 114.254425,
|
||||
"Z": 212.84802
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "AcceptQuest",
|
||||
"AetheryteShortcut": "Fringes - Peering Stones"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1023160,
|
||||
"Position": {
|
||||
"X": 303.12048,
|
||||
"Y": 46.087757,
|
||||
"Z": 493.0647
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2008763,
|
||||
"Position": {
|
||||
"X": 465.7511,
|
||||
"Y": 77.56152,
|
||||
"Z": 118.08948
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AfterInteraction",
|
||||
"KillEnemyDataIds": [
|
||||
7545
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1023161,
|
||||
"Position": {
|
||||
"X": 465.62903,
|
||||
"Y": 77.67306,
|
||||
"Z": 114.854614
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"NextQuestId": 2825
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "liza",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1023161,
|
||||
"Position": {
|
||||
"X": 465.62903,
|
||||
"Y": 77.67306,
|
||||
"Z": 114.854614
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1023162,
|
||||
"Position": {
|
||||
"X": 403.8911,
|
||||
"Y": 114.18445,
|
||||
"Z": 212.32922
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Fringes - Peering Stones"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1023163,
|
||||
"Position": {
|
||||
"X": 305.16516,
|
||||
"Y": 45.654415,
|
||||
"Z": 491.59985
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true,
|
||||
"NextQuestId": 2826
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,120 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "liza",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1023163,
|
||||
"Position": {
|
||||
"X": 305.16516,
|
||||
"Y": 45.654415,
|
||||
"Z": 491.59985
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1019531,
|
||||
"Position": {
|
||||
"X": -70.2984,
|
||||
"Y": 56.0216,
|
||||
"Z": 210.22351
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact",
|
||||
"TargetTerritoryId": 612,
|
||||
"SkipConditions": {
|
||||
"StepIf": {
|
||||
"Flying": "Unlocked"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 1023164,
|
||||
"Position": {
|
||||
"X": -127.45862,
|
||||
"Y": 41.197662,
|
||||
"Z": 7.248047
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1023164,
|
||||
"Position": {
|
||||
"X": -127.45862,
|
||||
"Y": 41.197662,
|
||||
"Z": 7.248047
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "UseItem",
|
||||
"ItemId": 2002274,
|
||||
"GroundTarget": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1023164,
|
||||
"Position": {
|
||||
"X": -127.45862,
|
||||
"Y": 41.197662,
|
||||
"Z": 7.248047
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "UseItem",
|
||||
"ItemId": 2002274,
|
||||
"GroundTarget": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1023164,
|
||||
"Position": {
|
||||
"X": -127.45862,
|
||||
"Y": 41.197662,
|
||||
"Z": 7.248047
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "UseItem",
|
||||
"ItemId": 2002274,
|
||||
"GroundTarget": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1023164,
|
||||
"Position": {
|
||||
"X": -127.45862,
|
||||
"Y": 41.197662,
|
||||
"Z": 7.248047
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"NextQuestId": 2827
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,86 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "liza",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1023164,
|
||||
"Position": {
|
||||
"X": -127.45862,
|
||||
"Y": 41.197662,
|
||||
"Z": 7.248047
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1021565,
|
||||
"Position": {
|
||||
"X": 440.11584,
|
||||
"Y": 114.254425,
|
||||
"Z": 212.84802
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Fringes - Peering Stones"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2008764,
|
||||
"Position": {
|
||||
"X": 608.1482,
|
||||
"Y": 48.02002,
|
||||
"Z": 362.6306
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1023166,
|
||||
"Position": {
|
||||
"X": 607.3242,
|
||||
"Y": 48.087296,
|
||||
"Z": 364.79736
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1021565,
|
||||
"Position": {
|
||||
"X": 440.11584,
|
||||
"Y": 114.254425,
|
||||
"Z": 212.84802
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"AetheryteShortcut": "Fringes - Peering Stones",
|
||||
"NextQuestId": 2828
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,105 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "liza",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1021565,
|
||||
"Position": {
|
||||
"X": 440.11584,
|
||||
"Y": 114.254425,
|
||||
"Z": 212.84802
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1019531,
|
||||
"Position": {
|
||||
"X": -70.2984,
|
||||
"Y": 56.0216,
|
||||
"Z": 210.22351
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact",
|
||||
"TargetTerritoryId": 612,
|
||||
"SkipConditions": {
|
||||
"StepIf": {
|
||||
"Flying": "Unlocked"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": -641.61725,
|
||||
"Y": 78.03014,
|
||||
"Z": 118.72834
|
||||
},
|
||||
"StopDistance": 0.5,
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AutoOnEnterArea",
|
||||
"KillEnemyDataIds": [
|
||||
7825,
|
||||
7826,
|
||||
7827
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1023409,
|
||||
"Position": {
|
||||
"X": -642.7558,
|
||||
"Y": 77.98847,
|
||||
"Z": 117.631714
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2008893,
|
||||
"Position": {
|
||||
"X": -648.49316,
|
||||
"Y": 48.41687,
|
||||
"Z": 245.89917
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1021565,
|
||||
"Position": {
|
||||
"X": 440.11584,
|
||||
"Y": 114.254425,
|
||||
"Z": 212.84802
|
||||
},
|
||||
"TerritoryId": 612,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"AetheryteShortcut": "Fringes - Peering Stones"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -96,7 +96,8 @@
|
||||
"Z": -197.58272
|
||||
},
|
||||
"TerritoryId": 815,
|
||||
"InteractionType": "WalkTo"
|
||||
"InteractionType": "WalkTo",
|
||||
"AetheryteShortcut": "Amh Araeng - Mord Souq"
|
||||
},
|
||||
{
|
||||
"DataId": 1029898,
|
||||
@ -106,8 +107,7 @@
|
||||
"Z": -196.30737
|
||||
},
|
||||
"TerritoryId": 815,
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Amh Araeng - Mord Souq"
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -1,7 +1,6 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "liza",
|
||||
"Disabled": true,
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
|
@ -0,0 +1,149 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "plogon_enjoyer",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1043951,
|
||||
"Position": {
|
||||
"X": 303.8529,
|
||||
"Y": 481.99442,
|
||||
"Z": 154.83325
|
||||
},
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1043865,
|
||||
"Position": {
|
||||
"X": 301.8081,
|
||||
"Y": 482.13644,
|
||||
"Z": 165.02625
|
||||
},
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Interact",
|
||||
"TargetTerritoryId": 960,
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Prompt": "TEXT_BANOMI006_04606_Q5_000_000",
|
||||
"Type": "YesNo",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1043586,
|
||||
"Position": {
|
||||
"X": 205.3711,
|
||||
"Y": 567.4998,
|
||||
"Z": 246.72314
|
||||
},
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1043424,
|
||||
"Position": {
|
||||
"X": 197.07019,
|
||||
"Y": 567.49976,
|
||||
"Z": 246.23486
|
||||
},
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Interact"
|
||||
},
|
||||
{
|
||||
"DataId": 1043423,
|
||||
"Position": {
|
||||
"X": 200.67139,
|
||||
"Y": 567.4998,
|
||||
"Z": 236.10278
|
||||
},
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Interact"
|
||||
},
|
||||
{
|
||||
"DataId": 1043592,
|
||||
"Position": {
|
||||
"X": 206.43921,
|
||||
"Y": 567.49976,
|
||||
"Z": 236.89624
|
||||
},
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Interact"
|
||||
},
|
||||
{
|
||||
"DataId": 1043593,
|
||||
"Position": {
|
||||
"X": 218.4939,
|
||||
"Y": 565.99994,
|
||||
"Z": 247.18079
|
||||
},
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1043585,
|
||||
"Position": {
|
||||
"X": 203.84521,
|
||||
"Y": 567.4998,
|
||||
"Z": 246.87573
|
||||
},
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1043864,
|
||||
"Position": {
|
||||
"X": 244.83093,
|
||||
"Y": 564.8203,
|
||||
"Z": 261.76843
|
||||
},
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true,
|
||||
"TargetTerritoryId": 960,
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Prompt": "TEXT_BANOMI006_04606_Q6_000_000",
|
||||
"Type": "YesNo",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1043951,
|
||||
"Position": {
|
||||
"X": 303.8529,
|
||||
"Y": 481.99442,
|
||||
"Z": 154.83325
|
||||
},
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -13,7 +13,13 @@
|
||||
"Z": 6.8207397
|
||||
},
|
||||
"TerritoryId": 819,
|
||||
"InteractionType": "AcceptQuest"
|
||||
"InteractionType": "AcceptQuest",
|
||||
"AetheryteShortcut": "Crystarium",
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"InSameTerritory": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -20,11 +20,6 @@
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"TerritoryId": 963,
|
||||
"InteractionType": "AttuneAethernetShard",
|
||||
"AethernetShard": "[Radz-at-Han] The High Crucible of Al-Kimiya"
|
||||
},
|
||||
{
|
||||
"DataId": 1039589,
|
||||
"Position": {
|
||||
|
@ -36,6 +36,17 @@
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 10.0736885,
|
||||
"Y": 27.10196,
|
||||
"Z": 448.53668
|
||||
},
|
||||
"TerritoryId": 959,
|
||||
"InteractionType": "WalkTo",
|
||||
"AetheryteShortcut": "Mare Lamentorum - Sinus Lacrimarum",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1041559,
|
||||
"Position": {
|
||||
@ -44,9 +55,7 @@
|
||||
"Z": 447.74548
|
||||
},
|
||||
"TerritoryId": 959,
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Mare Lamentorum - Sinus Lacrimarum",
|
||||
"Fly": true
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -105,6 +114,16 @@
|
||||
{
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 10.0736885,
|
||||
"Y": 27.10196,
|
||||
"Z": 448.53668
|
||||
},
|
||||
"TerritoryId": 959,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1041559,
|
||||
"Position": {
|
||||
@ -113,8 +132,7 @@
|
||||
"Z": 447.74548
|
||||
},
|
||||
"TerritoryId": 959,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -0,0 +1,90 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "liza",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1041155,
|
||||
"Position": {
|
||||
"X": -57.51129,
|
||||
"Y": -2.000002,
|
||||
"Z": 129.77795
|
||||
},
|
||||
"TerritoryId": 963,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1041154,
|
||||
"Position": {
|
||||
"X": 112.01648,
|
||||
"Y": 26.99999,
|
||||
"Z": 53.81848
|
||||
},
|
||||
"TerritoryId": 963,
|
||||
"InteractionType": "Interact",
|
||||
"AethernetShortcut": [
|
||||
"[Radz-at-Han] Alzadaal's Peace",
|
||||
"[Radz-at-Han] Kama"
|
||||
],
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1037354,
|
||||
"Position": {
|
||||
"X": 109.33081,
|
||||
"Y": 1.8631814,
|
||||
"Z": -100.1145
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 963,
|
||||
"InteractionType": "Interact",
|
||||
"AethernetShortcut": [
|
||||
"[Radz-at-Han] Kama",
|
||||
"[Radz-at-Han] Aetheryte Plaza"
|
||||
],
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1041155,
|
||||
"Position": {
|
||||
"X": -57.51129,
|
||||
"Y": -2.000002,
|
||||
"Z": 129.77795
|
||||
},
|
||||
"TerritoryId": 963,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"AethernetShortcut": [
|
||||
"[Radz-at-Han] Aetheryte Plaza",
|
||||
"[Radz-at-Han] Alzadaal's Peace"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,146 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "liza",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1041144,
|
||||
"Position": {
|
||||
"X": -63.34027,
|
||||
"Y": 14,
|
||||
"Z": 125.62744
|
||||
},
|
||||
"TerritoryId": 963,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -48.856667,
|
||||
"Y": 13.068996,
|
||||
"Z": 118.292465
|
||||
},
|
||||
"TerritoryId": 963,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"DataId": 194,
|
||||
"Position": {
|
||||
"X": 6.6071167,
|
||||
"Y": -2.02948,
|
||||
"Z": 110.55151
|
||||
},
|
||||
"StopDistance": 3,
|
||||
"TerritoryId": 963,
|
||||
"InteractionType": "WalkTo",
|
||||
"DisableNavmesh": true
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": -21.53136,
|
||||
"Y": 1.7999926,
|
||||
"Z": -182.28082
|
||||
},
|
||||
"TerritoryId": 963,
|
||||
"InteractionType": "WalkTo",
|
||||
"AethernetShortcut": [
|
||||
"[Radz-at-Han] Alzadaal's Peace",
|
||||
"[Radz-at-Han] Mehryde's Meyhane"
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1037381,
|
||||
"Position": {
|
||||
"X": -23.697266,
|
||||
"Y": 1.7999947,
|
||||
"Z": -180.07172
|
||||
},
|
||||
"StopDistance": 4,
|
||||
"TerritoryId": 963,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2012387,
|
||||
"Position": {
|
||||
"X": -58.27423,
|
||||
"Y": 0.9613037,
|
||||
"Z": -199.42017
|
||||
},
|
||||
"TerritoryId": 963,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2012388,
|
||||
"Position": {
|
||||
"X": -65.62909,
|
||||
"Y": 13.992493,
|
||||
"Z": 129.1676
|
||||
},
|
||||
"TerritoryId": 963,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1041144,
|
||||
"Position": {
|
||||
"X": -63.34027,
|
||||
"Y": 14,
|
||||
"Z": 125.62744
|
||||
},
|
||||
"TerritoryId": 963,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 5,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1037466,
|
||||
"Position": {
|
||||
"X": -205.31018,
|
||||
"Y": 36,
|
||||
"Z": 135.39331
|
||||
},
|
||||
"TerritoryId": 963,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1041145,
|
||||
"Position": {
|
||||
"X": -63.34027,
|
||||
"Y": 14,
|
||||
"Z": 126.207275
|
||||
},
|
||||
"TerritoryId": 963,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -20,15 +20,89 @@
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
|
||||
{
|
||||
"DataId": 2013960,
|
||||
"Position": {
|
||||
"X": 380.30054,
|
||||
"Y": -16.983276,
|
||||
"Z": -508.17123
|
||||
},
|
||||
"TerritoryId": 1190,
|
||||
"InteractionType": "AttuneAetherCurrent",
|
||||
"AetherCurrentId": 2818452
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 323.5058,
|
||||
"Y": -16.330368,
|
||||
"Z": -254.18399
|
||||
"X": 616.9261,
|
||||
"Y": -17.458832,
|
||||
"Z": -435.18936
|
||||
},
|
||||
"TerritoryId": 1190,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"DataId": 2013961,
|
||||
"Position": {
|
||||
"X": 645.5939,
|
||||
"Y": -11.7647705,
|
||||
"Z": -417.65472
|
||||
},
|
||||
"TerritoryId": 1190,
|
||||
"InteractionType": "AttuneAetherCurrent",
|
||||
"AetherCurrentId": 2818456
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 659.8994,
|
||||
"Y": -16.525915,
|
||||
"Z": -173.6375
|
||||
},
|
||||
"TerritoryId": 1190,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"DataId": 2013963,
|
||||
"Position": {
|
||||
"X": 658.2893,
|
||||
"Y": 21.011597,
|
||||
"Z": 82.993774
|
||||
},
|
||||
"TerritoryId": 1190,
|
||||
"InteractionType": "AttuneAetherCurrent",
|
||||
"AetherCurrentId": 2818458
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 198.9425,
|
||||
"Y": 6.210067,
|
||||
"Z": -53.1092
|
||||
},
|
||||
"TerritoryId": 1190,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"DataId": 2013962,
|
||||
"Position": {
|
||||
"X": 183.88635,
|
||||
"Y": 11.917236,
|
||||
"Z": -59.342346
|
||||
},
|
||||
"TerritoryId": 1190,
|
||||
"InteractionType": "AttuneAetherCurrent",
|
||||
"AetherCurrentId": 2818457,
|
||||
"DisableNavmesh": true
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 290.40674,
|
||||
"Y": -11.14023,
|
||||
"Z": -126.13759
|
||||
},
|
||||
"TerritoryId": 1190,
|
||||
"InteractionType": "WalkTo",
|
||||
"DisableNavmesh": true
|
||||
},
|
||||
{
|
||||
"DataId": 1050656,
|
||||
"Position": {
|
||||
|
@ -59,7 +59,8 @@
|
||||
},
|
||||
"TerritoryId": 1190,
|
||||
"InteractionType": "WalkTo",
|
||||
"$": "Shaaloani Hhusatahwi Saloon Stairs (top)"
|
||||
"$": "Shaaloani Hhusatahwi Saloon Stairs (top)",
|
||||
"Mount": true
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
|
@ -56,78 +56,6 @@
|
||||
"InteractionType": "AttuneAetheryte",
|
||||
"Aetheryte": "Shaaloani - Mehwahhetsoan"
|
||||
},
|
||||
{
|
||||
"DataId": 2013960,
|
||||
"Position": {
|
||||
"X": 380.30054,
|
||||
"Y": -16.983276,
|
||||
"Z": -508.17123
|
||||
},
|
||||
"TerritoryId": 1190,
|
||||
"InteractionType": "AttuneAetherCurrent",
|
||||
"AetherCurrentId": 2818452
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 616.9261,
|
||||
"Y": -17.458832,
|
||||
"Z": -435.18936
|
||||
},
|
||||
"TerritoryId": 1190,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"DataId": 2013961,
|
||||
"Position": {
|
||||
"X": 645.5939,
|
||||
"Y": -11.7647705,
|
||||
"Z": -417.65472
|
||||
},
|
||||
"TerritoryId": 1190,
|
||||
"InteractionType": "AttuneAetherCurrent",
|
||||
"AetherCurrentId": 2818456
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 659.8994,
|
||||
"Y": -16.525915,
|
||||
"Z": -173.6375
|
||||
},
|
||||
"TerritoryId": 1190,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"DataId": 2013963,
|
||||
"Position": {
|
||||
"X": 658.2893,
|
||||
"Y": 21.011597,
|
||||
"Z": 82.993774
|
||||
},
|
||||
"TerritoryId": 1190,
|
||||
"InteractionType": "AttuneAetherCurrent",
|
||||
"AetherCurrentId": 2818458
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 198.9425,
|
||||
"Y": 6.210067,
|
||||
"Z": -53.1092
|
||||
},
|
||||
"TerritoryId": 1190,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"DataId": 2013962,
|
||||
"Position": {
|
||||
"X": 183.88635,
|
||||
"Y": 11.917236,
|
||||
"Z": -59.342346
|
||||
},
|
||||
"TerritoryId": 1190,
|
||||
"InteractionType": "AttuneAetherCurrent",
|
||||
"AetherCurrentId": 2818457,
|
||||
"DisableNavmesh": true
|
||||
},
|
||||
{
|
||||
"DataId": 1046988,
|
||||
"Position": {
|
||||
@ -136,8 +64,7 @@
|
||||
"Z": -514.6716
|
||||
},
|
||||
"TerritoryId": 1190,
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Shaaloani - Mehwahhetsoan"
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -137,6 +137,15 @@
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -163.63573,
|
||||
"Y": 45.171337,
|
||||
"Z": 12.003954
|
||||
},
|
||||
"TerritoryId": 1185,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"DataId": 1047026,
|
||||
"Position": {
|
||||
|
@ -55,7 +55,8 @@
|
||||
"Z": 0.6866455
|
||||
},
|
||||
"TerritoryId": 1171,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DelaySecondsAtStart": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -44,12 +44,14 @@
|
||||
"Z": -117.162285
|
||||
},
|
||||
"TerritoryId": 1186,
|
||||
"InteractionType": "WalkTo"
|
||||
"InteractionType": "WalkTo",
|
||||
"RestartNavigationIfCancelled": false
|
||||
},
|
||||
{
|
||||
"TerritoryId": 1186,
|
||||
"InteractionType": "AttuneAethernetShard",
|
||||
"AethernetShard": "[Solution Nine] Resolution"
|
||||
"AethernetShard": "[Solution Nine] Resolution",
|
||||
"DelaySecondsAtStart": 2
|
||||
},
|
||||
{
|
||||
"DataId": 1048073,
|
||||
|
@ -27,7 +27,8 @@
|
||||
"Z": 5.1162424
|
||||
},
|
||||
"TerritoryId": 1186,
|
||||
"InteractionType": "WalkTo"
|
||||
"InteractionType": "WalkTo",
|
||||
"RestartNavigationIfCancelled": false
|
||||
},
|
||||
{
|
||||
"DataId": 1048172,
|
||||
@ -37,7 +38,8 @@
|
||||
"Z": 9.201172
|
||||
},
|
||||
"TerritoryId": 1186,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DelaySecondsAtStart": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -33,6 +33,7 @@
|
||||
},
|
||||
"TerritoryId": 1192,
|
||||
"InteractionType": "WalkTo",
|
||||
"AetheryteShortcut": "Living Memory - Leynode Mnemo",
|
||||
"$": "Leynode Mnemo to Meso Terminal waypoint",
|
||||
"SkipConditions": {
|
||||
"StepIf": {
|
||||
|
@ -13,7 +13,17 @@
|
||||
"Z": 231.37244
|
||||
},
|
||||
"TerritoryId": 1186,
|
||||
"InteractionType": "AcceptQuest"
|
||||
"InteractionType": "AcceptQuest",
|
||||
"AetheryteShortcut": "Solution Nine",
|
||||
"AethernetShortcut": [
|
||||
"[Solution Nine] Aetheryte Plaza",
|
||||
"[Solution Nine] The Arcadion"
|
||||
],
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"InSameTerritory": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -8,6 +8,41 @@
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1049793,
|
||||
"Position": {
|
||||
"X": 364.3396,
|
||||
"Y": 60.125,
|
||||
"Z": 357.1068
|
||||
},
|
||||
"TerritoryId": 1186,
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Solution Nine",
|
||||
"AethernetShortcut": [
|
||||
"[Solution Nine] Aetheryte Plaza",
|
||||
"[Solution Nine] The Arcadion"
|
||||
],
|
||||
"TargetTerritoryId": 1224,
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"InTerritory": [1224]
|
||||
},
|
||||
"StepIf": {
|
||||
"NearPosition": {
|
||||
"Position": {
|
||||
"X": 1.6021729,
|
||||
"Y": 0,
|
||||
"Z": -6.088379
|
||||
},
|
||||
"MaximumDistance": 100,
|
||||
"TerritoryId": 1224
|
||||
},
|
||||
"InTerritory": [
|
||||
1224
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 1049788,
|
||||
"Position": {
|
||||
|
@ -13,7 +13,13 @@
|
||||
"Z": 75.66943
|
||||
},
|
||||
"TerritoryId": 1185,
|
||||
"InteractionType": "AcceptQuest"
|
||||
"InteractionType": "AcceptQuest",
|
||||
"AetheryteShortcut": "Tuliyollal",
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"InSameTerritory": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -77,7 +83,12 @@
|
||||
},
|
||||
"TerritoryId": 1187,
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Urqopacha - Worlar's Echo"
|
||||
"AetheryteShortcut": "Urqopacha - Worlar's Echo",
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"InSameTerritory": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -92,7 +103,14 @@
|
||||
"Z": 145.00647
|
||||
},
|
||||
"TerritoryId": 1187,
|
||||
"InteractionType": "CompleteQuest"
|
||||
"InteractionType": "CompleteQuest",
|
||||
"AetheryteShortcut": "Urqopacha - Worlar's Echo",
|
||||
"Fly": true,
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"InSameTerritory": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -16,7 +16,17 @@
|
||||
"Z": 198.07727
|
||||
},
|
||||
"TerritoryId": 1186,
|
||||
"InteractionType": "AcceptQuest"
|
||||
"InteractionType": "AcceptQuest",
|
||||
"AetheryteShortcut": "Solution Nine",
|
||||
"AethernetShortcut": [
|
||||
"[Solution Nine] Aetheryte Plaza",
|
||||
"[Solution Nine] Neon Stein"
|
||||
],
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"InSameTerritory": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -31,7 +41,13 @@
|
||||
"Z": 761.68445
|
||||
},
|
||||
"TerritoryId": 1192,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Living Memory - Leynode Mnemo",
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"InSameTerritory": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -63,7 +79,13 @@
|
||||
},
|
||||
"TerritoryId": 1192,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "Living Memory - Leynode Mnemo",
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"InSameTerritory": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -90,7 +112,13 @@
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 1192,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "Living Memory - Leynode Mnemo",
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"InSameTerritory": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -119,6 +119,7 @@
|
||||
"Combat",
|
||||
"UseItem",
|
||||
"EquipItem",
|
||||
"PurchaseItem",
|
||||
"EquipRecommended",
|
||||
"Say",
|
||||
"Emote",
|
||||
@ -255,6 +256,12 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"NotNamePlateIconId": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"AetheryteLocked": {
|
||||
"$ref": "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Aetheryte"
|
||||
},
|
||||
@ -572,6 +579,7 @@
|
||||
"AfterInteraction",
|
||||
"AfterItemUse",
|
||||
"AfterAction",
|
||||
"AfterEmote",
|
||||
"OverworldEnemies",
|
||||
"FateEnemies"
|
||||
]
|
||||
@ -707,6 +715,44 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"properties": {
|
||||
"InteractionType": {
|
||||
"const": "PurchaseItem"
|
||||
}
|
||||
}
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"ItemCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"PurchaseMenu": {
|
||||
"type": "object",
|
||||
"description": "The text to use with /say",
|
||||
"properties": {
|
||||
"ExcelSheet": {
|
||||
"type": "string"
|
||||
},
|
||||
"Key": {
|
||||
"type": [
|
||||
"string",
|
||||
"integer"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"Key"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"ItemId",
|
||||
"ItemCount"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"properties": {
|
||||
|
@ -10,6 +10,7 @@ public sealed class EnemySpawnTypeConverter() : EnumConverter<EEnemySpawnType>(V
|
||||
{ EEnemySpawnType.AfterInteraction, "AfterInteraction" },
|
||||
{ EEnemySpawnType.AfterItemUse, "AfterItemUse" },
|
||||
{ EEnemySpawnType.AfterAction, "AfterAction" },
|
||||
{ EEnemySpawnType.AfterEmote, "AfterEmote" },
|
||||
{ EEnemySpawnType.AutoOnEnterArea, "AutoOnEnterArea" },
|
||||
{ EEnemySpawnType.OverworldEnemies, "OverworldEnemies" },
|
||||
{ EEnemySpawnType.FateEnemies, "FateEnemies" },
|
||||
|
@ -16,6 +16,7 @@ public sealed class InteractionTypeConverter() : EnumConverter<EInteractionType>
|
||||
{ EInteractionType.Combat, "Combat" },
|
||||
{ EInteractionType.UseItem, "UseItem" },
|
||||
{ EInteractionType.EquipItem, "EquipItem" },
|
||||
{ EInteractionType.PurchaseItem, "PurchaseItem" },
|
||||
{ EInteractionType.EquipRecommended, "EquipRecommended" },
|
||||
{ EInteractionType.Say, "Say" },
|
||||
{ EInteractionType.Emote, "Emote" },
|
||||
|
@ -10,6 +10,7 @@ public enum EEnemySpawnType
|
||||
AfterInteraction,
|
||||
AfterItemUse,
|
||||
AfterAction,
|
||||
AfterEmote,
|
||||
AutoOnEnterArea,
|
||||
OverworldEnemies,
|
||||
FateEnemies,
|
||||
|
@ -15,6 +15,7 @@ public enum EInteractionType
|
||||
Combat,
|
||||
UseItem,
|
||||
EquipItem,
|
||||
PurchaseItem,
|
||||
EquipRecommended,
|
||||
Say,
|
||||
Emote,
|
||||
|
12
Questionable.Model/Questing/PurchaseMenu.cs
Normal file
12
Questionable.Model/Questing/PurchaseMenu.cs
Normal file
@ -0,0 +1,12 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using Questionable.Model.Questing.Converter;
|
||||
|
||||
namespace Questionable.Model.Questing;
|
||||
|
||||
public sealed class PurchaseMenu
|
||||
{
|
||||
public string? ExcelSheet { get; set; }
|
||||
|
||||
[JsonConverter(typeof(ExcelRefConverter))]
|
||||
public ExcelRef? Key { get; set; }
|
||||
}
|
@ -78,6 +78,7 @@ public sealed class QuestStep
|
||||
public List<QuestWorkValue?> CompletionQuestVariablesFlags { get; set; } = [];
|
||||
public List<DialogueChoice> DialogueChoices { get; set; } = [];
|
||||
public List<uint> PointMenuChoices { get; set; } = [];
|
||||
public PurchaseMenu? PurchaseMenu { get; set; }
|
||||
|
||||
// TODO: Not implemented
|
||||
[JsonConverter(typeof(ElementIdConverter))]
|
||||
|
@ -13,15 +13,17 @@ public sealed class SkipStepConditions
|
||||
public ELockedSkipCondition? Flying { get; set; }
|
||||
public ELockedSkipCondition? Chocobo { get; set; }
|
||||
public bool NotTargetable { get; set; }
|
||||
public List<ushort> InTerritory { get; set; } = new();
|
||||
public List<ushort> NotInTerritory { get; set; } = new();
|
||||
public List<ushort> InTerritory { get; set; } = [];
|
||||
public List<ushort> NotInTerritory { get; set; } = [];
|
||||
public SkipItemConditions? Item { get; set; }
|
||||
|
||||
[JsonConverter(typeof(ElementIdListConverter))]
|
||||
public List<ElementId> QuestsAccepted { get; set; } = new();
|
||||
public List<ElementId> QuestsAccepted { get; set; } = [];
|
||||
|
||||
[JsonConverter(typeof(ElementIdListConverter))]
|
||||
public List<ElementId> QuestsCompleted { get; set; } = new();
|
||||
public List<ElementId> QuestsCompleted { get; set; } = [];
|
||||
|
||||
public List<uint> NotNamePlateIconId { get; set; } = [];
|
||||
|
||||
public EAetheryteLocation? AetheryteLocked { get; set; }
|
||||
public EAetheryteLocation? AetheryteUnlocked { get; set; }
|
||||
@ -41,6 +43,7 @@ public sealed class SkipStepConditions
|
||||
Item != null ||
|
||||
QuestsAccepted.Count > 0 ||
|
||||
QuestsCompleted.Count > 0 ||
|
||||
NotNamePlateIconId.Count > 0 ||
|
||||
AetheryteLocked != null ||
|
||||
AetheryteUnlocked != null ||
|
||||
NearPosition != null ||
|
||||
@ -50,6 +53,6 @@ public sealed class SkipStepConditions
|
||||
public override string ToString()
|
||||
{
|
||||
return
|
||||
$"{nameof(Never)}: {Never}, {nameof(CompletionQuestVariablesFlags)}: {CompletionQuestVariablesFlags}, {nameof(Flying)}: {Flying}, {nameof(Chocobo)}: {Chocobo}, {nameof(NotTargetable)}: {NotTargetable}, {nameof(InTerritory)}: {string.Join(" ", InTerritory)}, {nameof(NotInTerritory)}: {string.Join(" ", NotInTerritory)}, {nameof(Item)}: {Item}, {nameof(QuestsAccepted)}: {string.Join(" ", QuestsAccepted)}, {nameof(QuestsCompleted)}: {string.Join(" ", QuestsCompleted)}, {nameof(NearPosition)}: {NearPosition}, {nameof(ExtraCondition)}: {ExtraCondition}";
|
||||
$"{nameof(Never)}: {Never}, {nameof(CompletionQuestVariablesFlags)}: {CompletionQuestVariablesFlags}, {nameof(Flying)}: {Flying}, {nameof(Chocobo)}: {Chocobo}, {nameof(NotTargetable)}: {NotTargetable}, {nameof(InTerritory)}: {string.Join(" ", InTerritory)}, {nameof(NotInTerritory)}: {string.Join(" ", NotInTerritory)}, {nameof(Item)}: {Item}, {nameof(QuestsAccepted)}: {string.Join(" ", QuestsAccepted)}, {nameof(QuestsCompleted)}: {string.Join(" ", QuestsCompleted)}, {nameof(NotNamePlateIconId)}: {string.Join(" ", NotNamePlateIconId)}, {nameof(NearPosition)}: {NearPosition}, {nameof(ExtraCondition)}: {ExtraCondition}";
|
||||
}
|
||||
}
|
||||
|
@ -35,6 +35,7 @@ internal sealed class CombatController : IDisposable
|
||||
|
||||
private CurrentFight? _currentFight;
|
||||
private bool _wasInCombat;
|
||||
private ulong? _lastTargetId;
|
||||
|
||||
public CombatController(
|
||||
IEnumerable<ICombatModule> combatModules,
|
||||
@ -92,6 +93,33 @@ internal sealed class CombatController : IDisposable
|
||||
_movementController.MovementStartedAt > DateTime.Now.AddSeconds(-1))
|
||||
return EStatus.Moving;
|
||||
|
||||
// Overworld enemies typically means that if we want to kill 3 enemies, we could have anywhere from 0 to 20
|
||||
// enemies in the area (0 if someone else killed them before, like can happen with bots in Fools' Falls in
|
||||
// La Noscea).
|
||||
//
|
||||
// For all 'normal' types, e.g. auto-spawning on entering an area, there's a fixed number of enemies that you're
|
||||
// fighting with, and the enemies in the overworld aren't relevant.
|
||||
if (_currentFight.Data.SpawnType is EEnemySpawnType.OverworldEnemies)
|
||||
{
|
||||
if (_targetManager.Target != null)
|
||||
_lastTargetId = _targetManager.Target?.GameObjectId;
|
||||
else
|
||||
{
|
||||
if (_lastTargetId != null)
|
||||
{
|
||||
IGameObject? lastTarget = _objectTable.FirstOrDefault(x => x.GameObjectId == _lastTargetId);
|
||||
if (lastTarget != null)
|
||||
{
|
||||
// wait until the game cleans up the target
|
||||
if (lastTarget.IsDead)
|
||||
return EStatus.InCombat;
|
||||
}
|
||||
else
|
||||
_lastTargetId = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var target = _targetManager.Target;
|
||||
if (target != null)
|
||||
{
|
||||
@ -192,45 +220,37 @@ internal sealed class CombatController : IDisposable
|
||||
|
||||
public unsafe int GetKillPriority(IGameObject gameObject)
|
||||
{
|
||||
if (_currentFight == null)
|
||||
return 0;
|
||||
|
||||
if (gameObject is IBattleNpc battleNpc)
|
||||
{
|
||||
if (_currentFight != null && !_currentFight.Module.CanAttack(battleNpc))
|
||||
if (!_currentFight.Module.CanAttack(battleNpc))
|
||||
return 0;
|
||||
|
||||
// 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.SpawnType == EEnemySpawnType.FateEnemies ||
|
||||
_currentFight.Data.KillEnemyDataIds.Count > 0)
|
||||
{
|
||||
if (battleNpc.IsDead)
|
||||
return 0;
|
||||
}
|
||||
if (battleNpc.IsDead)
|
||||
return 0;
|
||||
|
||||
if (!battleNpc.IsTargetable)
|
||||
return 0;
|
||||
|
||||
if (_currentFight != null)
|
||||
var complexCombatData = _currentFight.Data.ComplexCombatDatas;
|
||||
if (complexCombatData.Count >= 0)
|
||||
{
|
||||
var complexCombatData = _currentFight.Data.ComplexCombatDatas;
|
||||
if (complexCombatData.Count >= 0)
|
||||
for (int i = 0; i < complexCombatData.Count; ++i)
|
||||
{
|
||||
for (int i = 0; i < complexCombatData.Count; ++i)
|
||||
{
|
||||
if (_currentFight.Data.CompletedComplexDatas.Contains(i))
|
||||
continue;
|
||||
if (_currentFight.Data.CompletedComplexDatas.Contains(i))
|
||||
continue;
|
||||
|
||||
if (complexCombatData[i].DataId == battleNpc.DataId)
|
||||
return 100;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_currentFight.Data.KillEnemyDataIds.Contains(battleNpc.DataId))
|
||||
return 90;
|
||||
if (complexCombatData[i].DataId == battleNpc.DataId)
|
||||
return 100;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_currentFight.Data.KillEnemyDataIds.Contains(battleNpc.DataId))
|
||||
return 90;
|
||||
}
|
||||
|
||||
// enemies that we have aggro on
|
||||
if (battleNpc.BattleNpcKind is BattleNpcSubKind.BattleNpcPart or BattleNpcSubKind.Enemy)
|
||||
@ -241,8 +261,7 @@ internal sealed class CombatController : IDisposable
|
||||
if (gameObjectStruct->NamePlateIconId is 60093 or 60732)
|
||||
return 0;
|
||||
|
||||
var enemyData =
|
||||
_currentFight?.Data.ComplexCombatDatas.FirstOrDefault(x => x.DataId == battleNpc.DataId);
|
||||
var enemyData = _currentFight.Data.ComplexCombatDatas.FirstOrDefault(x => x.DataId == battleNpc.DataId);
|
||||
if (enemyData is { IgnoreQuestMarker: true })
|
||||
{
|
||||
if (battleNpc.StatusFlags.HasFlag(StatusFlags.InCombat))
|
||||
@ -255,7 +274,8 @@ internal sealed class CombatController : IDisposable
|
||||
|
||||
// for enemies that are very far away, their nameplate doesn't render but they're in the object table
|
||||
if (_currentFight?.Data.SpawnType == EEnemySpawnType.OverworldEnemies &&
|
||||
Vector3.Distance(_clientState.LocalPlayer?.Position ?? Vector3.Zero, battleNpc.Position) > MaxNameplateRange)
|
||||
Vector3.Distance(_clientState.LocalPlayer?.Position ?? Vector3.Zero, battleNpc.Position) >
|
||||
MaxNameplateRange)
|
||||
return 25;
|
||||
}
|
||||
else
|
||||
@ -298,12 +318,14 @@ internal sealed class CombatController : IDisposable
|
||||
}
|
||||
else if (Vector3.Distance(_clientState.LocalPlayer!.Position, target.Position) > MaxTargetRange)
|
||||
{
|
||||
_logger.LogInformation("Moving to target, distance: {Distance:N2}", Vector3.Distance(_clientState.LocalPlayer!.Position, target.Position));
|
||||
_logger.LogInformation("Moving to target, distance: {Distance:N2}",
|
||||
Vector3.Distance(_clientState.LocalPlayer!.Position, target.Position));
|
||||
_currentFight!.Module.MoveToTarget(target);
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.LogInformation("Setting target to {TargetName} ({TargetId:X8})", target.Name.ToString(), target.GameObjectId);
|
||||
_logger.LogInformation("Setting target to {TargetName} ({TargetId:X8})", target.Name.ToString(),
|
||||
target.GameObjectId);
|
||||
_targetManager.Target = target;
|
||||
_currentFight!.Module.MoveToTarget(target);
|
||||
}
|
||||
|
@ -46,6 +46,7 @@ internal sealed class InteractionUiController : IDisposable
|
||||
private readonly IGameGui _gameGui;
|
||||
private readonly ITargetManager _targetManager;
|
||||
private readonly IClientState _clientState;
|
||||
private readonly ShopController _shopController;
|
||||
private readonly ILogger<InteractionUiController> _logger;
|
||||
private readonly Regex _returnRegex;
|
||||
|
||||
@ -67,6 +68,7 @@ internal sealed class InteractionUiController : IDisposable
|
||||
ITargetManager targetManager,
|
||||
IPluginLog pluginLog,
|
||||
IClientState clientState,
|
||||
ShopController shopController,
|
||||
ILogger<InteractionUiController> logger)
|
||||
{
|
||||
_addonLifecycle = addonLifecycle;
|
||||
@ -83,6 +85,7 @@ internal sealed class InteractionUiController : IDisposable
|
||||
_gameGui = gameGui;
|
||||
_targetManager = targetManager;
|
||||
_clientState = clientState;
|
||||
_shopController = shopController;
|
||||
_logger = logger;
|
||||
|
||||
_returnRegex = _dataManager.GetExcelSheet<Addon>()!.GetRow(196)!.GetRegex(addon => addon.Text, pluginLog)!;
|
||||
@ -334,7 +337,17 @@ internal sealed class InteractionUiController : IDisposable
|
||||
if (step == null)
|
||||
_logger.LogDebug("Ignoring current quest dialogue choices, no active step");
|
||||
else
|
||||
{
|
||||
dialogueChoices.AddRange(step.DialogueChoices.Select(x => new DialogueChoiceInfo(quest, x)));
|
||||
if (step.PurchaseMenu != null)
|
||||
dialogueChoices.Add(new DialogueChoiceInfo(quest, new DialogueChoice
|
||||
{
|
||||
Type = EDialogChoiceType.List,
|
||||
ExcelSheet = step.PurchaseMenu.ExcelSheet,
|
||||
Prompt = null,
|
||||
Answer = step.PurchaseMenu.Key,
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
// add all travel dialogue choices
|
||||
@ -516,9 +529,16 @@ internal sealed class InteractionUiController : IDisposable
|
||||
return;
|
||||
|
||||
_logger.LogTrace("Prompt: '{Prompt}'", actualPrompt);
|
||||
if (_shopController.IsAutoBuyEnabled && _shopController.IsAwaitingYesNo)
|
||||
{
|
||||
addonSelectYesno->AtkUnitBase.FireCallbackInt(0);
|
||||
_shopController.IsAwaitingYesNo = false;
|
||||
return;
|
||||
}
|
||||
|
||||
var director = UIState.Instance()->DirectorTodo.Director;
|
||||
if (director != null && director->EventHandlerInfo != null &&
|
||||
director->EventHandlerInfo->EventId.ContentId == EventHandlerType.GatheringLeveDirector &&
|
||||
if (director != null &&
|
||||
director->Info.EventId.ContentId == EventHandlerType.GatheringLeveDirector &&
|
||||
director->Sequence == 254)
|
||||
{
|
||||
// just close the dialogue for 'do you want to return to next settlement', should prolly be different for
|
||||
|
156
Questionable/Controller/GameUi/ShopController.cs
Normal file
156
Questionable/Controller/GameUi/ShopController.cs
Normal file
@ -0,0 +1,156 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using Dalamud.Plugin.Services;
|
||||
using FFXIVClientStructs.FFXIV.Component.GUI;
|
||||
using LLib.GameUI;
|
||||
using LLib.Shop;
|
||||
using LLib.Shop.Model;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Questionable.Model.Questing;
|
||||
using ValueType = FFXIVClientStructs.FFXIV.Component.GUI.ValueType;
|
||||
|
||||
namespace Questionable.Controller.GameUi;
|
||||
|
||||
internal sealed class ShopController : IDisposable, IShopWindow
|
||||
{
|
||||
private readonly QuestController _questController;
|
||||
private readonly IGameGui _gameGui;
|
||||
private readonly IFramework _framework;
|
||||
private readonly RegularShopBase _shop;
|
||||
private readonly ILogger<ShopController> _logger;
|
||||
|
||||
public ShopController(QuestController questController, IGameGui gameGui, IAddonLifecycle addonLifecycle,
|
||||
IFramework framework, ILogger<ShopController> logger, IPluginLog pluginLog)
|
||||
{
|
||||
_questController = questController;
|
||||
_gameGui = gameGui;
|
||||
_framework = framework;
|
||||
_shop = new RegularShopBase(this, "Shop", pluginLog, gameGui, addonLifecycle);
|
||||
_logger = logger;
|
||||
|
||||
_framework.Update += FrameworkUpdate;
|
||||
}
|
||||
|
||||
public bool IsEnabled => _questController.IsRunning;
|
||||
public bool IsOpen { get; set; }
|
||||
public bool IsAutoBuyEnabled => _shop.AutoBuyEnabled;
|
||||
|
||||
public bool IsAwaitingYesNo
|
||||
{
|
||||
get { return _shop.IsAwaitingYesNo; }
|
||||
set { _shop.IsAwaitingYesNo = value; }
|
||||
}
|
||||
|
||||
public Vector2? Position { get; set; } // actual implementation doesn't matter, not a real window
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_framework.Update -= FrameworkUpdate;
|
||||
_shop.Dispose();
|
||||
}
|
||||
|
||||
private void FrameworkUpdate(IFramework framework)
|
||||
{
|
||||
if (IsOpen && _shop.ItemForSale != null)
|
||||
{
|
||||
if (_shop.PurchaseState != null)
|
||||
{
|
||||
_shop.HandleNextPurchaseStep();
|
||||
}
|
||||
else
|
||||
{
|
||||
var currentStep = FindCurrentStep();
|
||||
if (currentStep == null || currentStep.InteractionType != EInteractionType.PurchaseItem)
|
||||
return;
|
||||
|
||||
int missingItems = Math.Max(0,
|
||||
currentStep.ItemCount.GetValueOrDefault() - (int)_shop.ItemForSale.OwnedItems);
|
||||
int toPurchase = Math.Min(_shop.GetMaxItemsToPurchase(), missingItems);
|
||||
if (toPurchase > 0)
|
||||
{
|
||||
_logger.LogDebug("Auto-buying {MissingItems} {ItemName}", missingItems, _shop.ItemForSale.ItemName);
|
||||
_shop.StartAutoPurchase(missingItems);
|
||||
_shop.HandleNextPurchaseStep();
|
||||
}
|
||||
else
|
||||
_shop.CancelAutoPurchase();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int GetCurrencyCount() => _shop.GetItemCount(1); // TODO: support other currencies
|
||||
|
||||
private QuestStep? FindCurrentStep()
|
||||
{
|
||||
var currentQuest = _questController.CurrentQuest;
|
||||
QuestSequence? currentSequence = currentQuest?.Quest.FindSequence(currentQuest.Sequence);
|
||||
return currentSequence?.FindStep(currentQuest?.Step ?? 0);
|
||||
}
|
||||
|
||||
public unsafe void UpdateShopStock(AtkUnitBase* addon)
|
||||
{
|
||||
var currentStep = FindCurrentStep();
|
||||
if (currentStep == null || currentStep.InteractionType != EInteractionType.PurchaseItem)
|
||||
{
|
||||
_shop.ItemForSale = null;
|
||||
return;
|
||||
}
|
||||
|
||||
if (addon->AtkValuesCount != 625)
|
||||
{
|
||||
_logger.LogError("Unexpected amount of atkvalues for Shop addon ({AtkValueCount})", addon->AtkValuesCount);
|
||||
_shop.ItemForSale = null;
|
||||
return;
|
||||
}
|
||||
|
||||
var atkValues = addon->AtkValues;
|
||||
|
||||
// Check if on 'Current Stock' tab?
|
||||
if (atkValues[0].UInt != 0)
|
||||
{
|
||||
_shop.ItemForSale = null;
|
||||
return;
|
||||
}
|
||||
|
||||
uint itemCount = atkValues[2].UInt;
|
||||
if (itemCount == 0)
|
||||
{
|
||||
_shop.ItemForSale = null;
|
||||
return;
|
||||
}
|
||||
|
||||
_shop.ItemForSale = Enumerable.Range(0, (int)itemCount)
|
||||
.Select(i => new ItemForSale
|
||||
{
|
||||
Position = i,
|
||||
ItemName = atkValues[14 + i].ReadAtkString(),
|
||||
Price = atkValues[75 + i].UInt,
|
||||
OwnedItems = atkValues[136 + i].UInt,
|
||||
ItemId = atkValues[441 + i].UInt,
|
||||
})
|
||||
.FirstOrDefault(x => x.ItemId == currentStep.ItemId);
|
||||
}
|
||||
|
||||
public unsafe void TriggerPurchase(AtkUnitBase* addonShop, int buyNow)
|
||||
{
|
||||
var buyItem = stackalloc AtkValue[]
|
||||
{
|
||||
new() { Type = ValueType.Int, Int = 0 },
|
||||
new() { Type = ValueType.Int, Int = _shop.ItemForSale!.Position },
|
||||
new() { Type = ValueType.Int, Int = buyNow },
|
||||
new() { Type = 0, Int = 0 }
|
||||
};
|
||||
addonShop->FireCallback(4, buyItem);
|
||||
}
|
||||
|
||||
public void SaveExternalPluginState()
|
||||
{
|
||||
}
|
||||
|
||||
public unsafe void RestoreExternalPluginState()
|
||||
{
|
||||
if (_gameGui.TryGetAddonByName("Shop", out AtkUnitBase* addonShop))
|
||||
addonShop->FireCallbackInt(-1);
|
||||
}
|
||||
}
|
@ -135,8 +135,7 @@ internal sealed unsafe class GatheringController : MiniTaskController<GatheringC
|
||||
return;
|
||||
|
||||
var director = UIState.Instance()->DirectorTodo.Director;
|
||||
if (director != null && director->EventHandlerInfo != null &&
|
||||
director->EventHandlerInfo->EventId.ContentId == EventHandlerType.GatheringLeveDirector)
|
||||
if (director != null && director->Info.EventId.ContentId == EventHandlerType.GatheringLeveDirector)
|
||||
{
|
||||
if (director->Sequence == 254)
|
||||
return;
|
||||
|
@ -80,8 +80,7 @@ internal sealed class GatheringPointRegistry : IDisposable
|
||||
{
|
||||
foreach (var expansionFolder in ExpansionData.ExpansionFolders.Values)
|
||||
LoadFromDirectory(
|
||||
new DirectoryInfo(Path.Combine(pathProjectDirectory.FullName, expansionFolder)),
|
||||
LogLevel.Trace);
|
||||
new DirectoryInfo(Path.Combine(pathProjectDirectory.FullName, expansionFolder)));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@ -102,7 +101,7 @@ internal sealed class GatheringPointRegistry : IDisposable
|
||||
_gatheringPoints[gatheringPointId] = JsonSerializer.Deserialize<GatheringRoot>(stream)!;
|
||||
}
|
||||
|
||||
private void LoadFromDirectory(DirectoryInfo directory, LogLevel logLevel = LogLevel.Information)
|
||||
private void LoadFromDirectory(DirectoryInfo directory)
|
||||
{
|
||||
if (!directory.Exists)
|
||||
{
|
||||
@ -110,7 +109,6 @@ internal sealed class GatheringPointRegistry : IDisposable
|
||||
return;
|
||||
}
|
||||
|
||||
//_logger.Log(logLevel, "Loading gathering points from {DirectoryName}", directory);
|
||||
foreach (FileInfo fileInfo in directory.GetFiles("*.json"))
|
||||
{
|
||||
try
|
||||
@ -125,7 +123,7 @@ internal sealed class GatheringPointRegistry : IDisposable
|
||||
}
|
||||
|
||||
foreach (DirectoryInfo childDirectory in directory.GetDirectories())
|
||||
LoadFromDirectory(childDirectory, logLevel);
|
||||
LoadFromDirectory(childDirectory);
|
||||
}
|
||||
|
||||
private static GatheringPointId? ExtractGatheringPointIdFromName(string resourceName)
|
||||
|
@ -167,5 +167,9 @@ internal abstract class MiniTaskController<T>
|
||||
}
|
||||
else
|
||||
_taskQueue.InterruptWith([new WaitAtEnd.WaitDelay()]);
|
||||
|
||||
_logger.LogInformation("Remaining tasks after interruption:");
|
||||
foreach (ITask task in _taskQueue.RemainingTasks)
|
||||
_logger.LogInformation("- {TaskName}", task);
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
namespace Questionable.Controller.Steps;
|
||||
|
||||
internal interface IRevisitAware : ITask
|
||||
internal interface IRevisitAware
|
||||
{
|
||||
void OnRevisit();
|
||||
}
|
||||
|
@ -33,17 +33,14 @@ internal static class Combat
|
||||
switch (step.EnemySpawnType)
|
||||
{
|
||||
case EEnemySpawnType.AfterInteraction:
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(step.DataId);
|
||||
|
||||
yield return new Interact.Task(step.DataId.Value, quest, EInteractionType.None, true);
|
||||
yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
|
||||
yield return CreateTask(quest, sequence, step);
|
||||
break;
|
||||
}
|
||||
|
||||
case EEnemySpawnType.AfterItemUse:
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(step.DataId);
|
||||
ArgumentNullException.ThrowIfNull(step.ItemId);
|
||||
|
||||
@ -52,10 +49,8 @@ internal static class Combat
|
||||
yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
|
||||
yield return CreateTask(quest, sequence, step);
|
||||
break;
|
||||
}
|
||||
|
||||
case EEnemySpawnType.AfterAction:
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(step.DataId);
|
||||
ArgumentNullException.ThrowIfNull(step.Action);
|
||||
|
||||
@ -65,7 +60,18 @@ internal static class Combat
|
||||
yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
|
||||
yield return CreateTask(quest, sequence, step);
|
||||
break;
|
||||
}
|
||||
|
||||
case EEnemySpawnType.AfterEmote:
|
||||
ArgumentNullException.ThrowIfNull(step.Emote);
|
||||
|
||||
yield return new Mount.UnmountTask();
|
||||
if (step.DataId != null)
|
||||
yield return new Emote.UseOnObject(step.Emote.Value, step.DataId.Value);
|
||||
else
|
||||
yield return new Emote.UseOnSelf(step.Emote.Value);
|
||||
yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
|
||||
yield return CreateTask(quest, sequence, step);
|
||||
break;
|
||||
|
||||
case EEnemySpawnType.AutoOnEnterArea:
|
||||
if (step.CombatDelaySecondsAtStart == null)
|
||||
|
@ -35,6 +35,11 @@ internal static class Interact
|
||||
if (step.DataId == null)
|
||||
yield break;
|
||||
}
|
||||
else if (step.InteractionType == EInteractionType.PurchaseItem)
|
||||
{
|
||||
if (step.DataId == null)
|
||||
yield break;
|
||||
}
|
||||
else if (step.InteractionType == EInteractionType.Snipe)
|
||||
{
|
||||
if (!configuration.General.AutomaticallyCompleteSnipeTasks)
|
||||
@ -51,7 +56,8 @@ internal static class Interact
|
||||
|
||||
yield return new Task(step.DataId.Value, quest, step.InteractionType,
|
||||
step.TargetTerritoryId != null || quest.Id is SatisfactionSupplyNpcId ||
|
||||
step.SkipConditions is { StepIf.Never: true }, step.PickUpItemId, step.SkipConditions?.StepIf);
|
||||
step.SkipConditions is { StepIf.Never: true } || step.InteractionType == EInteractionType.PurchaseItem,
|
||||
step.PickUpItemId, step.SkipConditions?.StepIf);
|
||||
}
|
||||
}
|
||||
|
||||
@ -72,9 +78,10 @@ internal static class Interact
|
||||
GameFunctions gameFunctions,
|
||||
ICondition condition,
|
||||
ILogger<DoInteract> logger)
|
||||
: TaskExecutor<Task>
|
||||
: TaskExecutor<Task>, IConditionChangeAware
|
||||
{
|
||||
private bool _needsUnmount;
|
||||
private EInteractionState _interactionState = EInteractionState.None;
|
||||
private DateTime _continueAt = DateTime.MinValue;
|
||||
|
||||
public Quest? Quest => Task.Quest;
|
||||
@ -111,9 +118,7 @@ internal static class Interact
|
||||
|
||||
if (gameObject.IsTargetable && HasAnyMarker(gameObject))
|
||||
{
|
||||
ProgressContext =
|
||||
InteractionProgressContext.FromActionUseOrDefault(() => gameFunctions.InteractWith(gameObject));
|
||||
_continueAt = DateTime.Now.AddSeconds(0.5);
|
||||
TriggerInteraction(gameObject);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -148,7 +153,8 @@ internal static class Interact
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ProgressContext != null && ProgressContext.WasSuccessful())
|
||||
if (ProgressContext != null && (ProgressContext.WasSuccessful() ||
|
||||
_interactionState == EInteractionState.InteractionConfirmed))
|
||||
return ETaskResult.TaskComplete;
|
||||
|
||||
if (InteractionType == EInteractionType.Gather && condition[ConditionFlag.Gathering])
|
||||
@ -159,12 +165,24 @@ internal static class Interact
|
||||
if (gameObject == null || !gameObject.IsTargetable || !HasAnyMarker(gameObject))
|
||||
return ETaskResult.StillRunning;
|
||||
|
||||
ProgressContext =
|
||||
InteractionProgressContext.FromActionUseOrDefault(() => gameFunctions.InteractWith(gameObject));
|
||||
_continueAt = DateTime.Now.AddSeconds(0.5);
|
||||
TriggerInteraction(gameObject);
|
||||
return ETaskResult.StillRunning;
|
||||
}
|
||||
|
||||
private void TriggerInteraction(IGameObject gameObject)
|
||||
{
|
||||
ProgressContext =
|
||||
InteractionProgressContext.FromActionUseOrDefault(() =>
|
||||
{
|
||||
if (gameFunctions.InteractWith(gameObject))
|
||||
_interactionState = EInteractionState.InteractionTriggered;
|
||||
else
|
||||
_interactionState = EInteractionState.None;
|
||||
return _interactionState != EInteractionState.None;
|
||||
});
|
||||
_continueAt = DateTime.Now.AddSeconds(0.5);
|
||||
}
|
||||
|
||||
private unsafe bool HasAnyMarker(IGameObject gameObject)
|
||||
{
|
||||
if (Task.SkipMarkerCheck || gameObject.ObjectKind != ObjectKind.EventNpc)
|
||||
@ -173,5 +191,27 @@ internal static class Interact
|
||||
var gameObjectStruct = (FFXIVClientStructs.FFXIV.Client.Game.Object.GameObject*)gameObject.Address;
|
||||
return gameObjectStruct->NamePlateIconId != 0;
|
||||
}
|
||||
|
||||
public void OnConditionChange(ConditionFlag flag, bool value)
|
||||
{
|
||||
if (ProgressContext != null && (ProgressContext.WasInterrupted() || ProgressContext.WasSuccessful()))
|
||||
return;
|
||||
|
||||
logger.LogDebug("Condition change: {Flag} = {Value}", flag, value);
|
||||
if (_interactionState == EInteractionState.InteractionTriggered &&
|
||||
flag is ConditionFlag.OccupiedInQuestEvent or ConditionFlag.OccupiedInEvent &&
|
||||
value)
|
||||
{
|
||||
logger.LogInformation("Interaction was most likely triggered");
|
||||
_interactionState = EInteractionState.InteractionConfirmed;
|
||||
}
|
||||
}
|
||||
|
||||
private enum EInteractionState
|
||||
{
|
||||
None,
|
||||
InteractionTriggered,
|
||||
InteractionConfirmed,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
22
Questionable/Controller/Steps/Interactions/PurchaseItem.cs
Normal file
22
Questionable/Controller/Steps/Interactions/PurchaseItem.cs
Normal file
@ -0,0 +1,22 @@
|
||||
using Questionable.Model;
|
||||
using Questionable.Model.Questing;
|
||||
|
||||
namespace Questionable.Controller.Steps.Interactions;
|
||||
|
||||
internal static class PurchaseItem
|
||||
{
|
||||
internal sealed class Factory : SimpleTaskFactory
|
||||
{
|
||||
public override ITask? CreateTask(Quest quest, QuestSequence sequence, QuestStep step)
|
||||
{
|
||||
if (step.InteractionType != EInteractionType.PurchaseItem)
|
||||
return null;
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class PurchaseRequest
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -44,8 +44,7 @@ internal static class InitiateLeve
|
||||
{
|
||||
var director = UIState.Instance()->DirectorTodo.Director;
|
||||
if (director != null &&
|
||||
director->EventHandlerInfo != null &&
|
||||
director->EventHandlerInfo->EventId.ContentId == EventHandlerType.GatheringLeveDirector &&
|
||||
director->Info.EventId.ContentId == EventHandlerType.GatheringLeveDirector &&
|
||||
director->ContentId == Task.ElementId.Value)
|
||||
return ETaskResult.SkipRemainingTasksForStep;
|
||||
|
||||
|
@ -19,7 +19,11 @@ namespace Questionable.Controller.Steps.Shared;
|
||||
|
||||
internal static class AethernetShortcut
|
||||
{
|
||||
internal sealed class Factory(MovementController movementController)
|
||||
internal sealed class Factory(
|
||||
MovementController movementController,
|
||||
AetheryteData aetheryteData,
|
||||
TerritoryData territoryData,
|
||||
IClientState clientState)
|
||||
: ITaskFactory
|
||||
{
|
||||
public IEnumerable<ITask> CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step)
|
||||
@ -31,6 +35,14 @@ internal static class AethernetShortcut
|
||||
"Wait(navmesh ready)");
|
||||
yield return new Task(step.AethernetShortcut.From, step.AethernetShortcut.To,
|
||||
step.SkipConditions?.AethernetShortcutIf ?? new());
|
||||
|
||||
if (AetheryteShortcut.MoveAwayFromAetheryteExecutor.AppliesTo(step.AethernetShortcut.To))
|
||||
{
|
||||
yield return new WaitCondition.Task(
|
||||
() => clientState.TerritoryType == aetheryteData.TerritoryIds[step.AethernetShortcut.To],
|
||||
$"Wait(territory: {territoryData.GetNameAndId(aetheryteData.TerritoryIds[step.AethernetShortcut.To])})");
|
||||
yield return new AetheryteShortcut.MoveAwayFromAetheryte(step.AethernetShortcut.To);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -142,7 +154,7 @@ internal static class AethernetShortcut
|
||||
new(0, 8.442986f, -9),
|
||||
];
|
||||
|
||||
Vector3 closestPoint = nearbyPoints.MinBy(x => (playerPosition - x).Length());
|
||||
Vector3 closestPoint = nearbyPoints.MinBy(x => Vector3.Distance(playerPosition, x));
|
||||
_moving = true;
|
||||
movementController.NavigateTo(EMovementType.Quest, (uint)Task.From, closestPoint, false, true,
|
||||
0.25f);
|
||||
|
@ -1,9 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using Dalamud.Plugin.Services;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Questionable.Controller.Steps.Common;
|
||||
using Questionable.Controller.Utils;
|
||||
using Questionable.Data;
|
||||
using Questionable.Functions;
|
||||
@ -15,7 +17,8 @@ namespace Questionable.Controller.Steps.Shared;
|
||||
|
||||
internal static class AetheryteShortcut
|
||||
{
|
||||
internal sealed class Factory(AetheryteData aetheryteData) : ITaskFactory
|
||||
internal sealed class Factory(AetheryteData aetheryteData, TerritoryData territoryData, IClientState clientState)
|
||||
: ITaskFactory
|
||||
{
|
||||
public IEnumerable<ITask> CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step)
|
||||
{
|
||||
@ -25,6 +28,15 @@ internal static class AetheryteShortcut
|
||||
yield return new Task(step, quest.Id, step.AetheryteShortcut.Value,
|
||||
aetheryteData.TerritoryIds[step.AetheryteShortcut.Value]);
|
||||
yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(0.5));
|
||||
|
||||
if (MoveAwayFromAetheryteExecutor.AppliesTo(step.AetheryteShortcut.Value) &&
|
||||
step.AethernetShortcut?.From != step.AetheryteShortcut.Value)
|
||||
{
|
||||
yield return new WaitCondition.Task(
|
||||
() => clientState.TerritoryType == aetheryteData.TerritoryIds[step.AetheryteShortcut.Value],
|
||||
$"Wait(territory: {territoryData.GetNameAndId(aetheryteData.TerritoryIds[step.AetheryteShortcut.Value])})");
|
||||
yield return new MoveAwayFromAetheryte(step.AetheryteShortcut.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -206,4 +218,47 @@ internal static class AetheryteShortcut
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed record MoveAwayFromAetheryte(EAetheryteLocation TargetAetheryte) : ITask
|
||||
{
|
||||
public override string ToString() => $"MoveAway({TargetAetheryte})";
|
||||
}
|
||||
|
||||
internal sealed class MoveAwayFromAetheryteExecutor(
|
||||
MoveTo.MoveExecutor moveExecutor,
|
||||
AetheryteData aetheryteData,
|
||||
IClientState clientState) : TaskExecutor<MoveAwayFromAetheryte>
|
||||
{
|
||||
private static readonly Dictionary<EAetheryteLocation, List<Vector3>> AetherytesToMoveFrom = new()
|
||||
{
|
||||
{
|
||||
EAetheryteLocation.SolutionNine,
|
||||
[
|
||||
new(0f, 8.8f, 15.5f),
|
||||
new(0f, 8.8f, -15.5f),
|
||||
new(15.5f, 8.8f, 0f),
|
||||
new(-15.5f, 8.8f, 0f)
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
public static bool AppliesTo(EAetheryteLocation location) => AetherytesToMoveFrom.ContainsKey(location);
|
||||
|
||||
protected override bool Start()
|
||||
{
|
||||
// only relevant if we're actually near the s9 aetheryte at the end
|
||||
Vector3 playerPosition = clientState.LocalPlayer!.Position;
|
||||
if (aetheryteData.CalculateDistance(playerPosition, clientState.TerritoryType, Task.TargetAetheryte) >= 20)
|
||||
return false;
|
||||
|
||||
Vector3 closestPoint = AetherytesToMoveFrom[Task.TargetAetheryte]
|
||||
.MinBy(x => Vector3.Distance(x, playerPosition));
|
||||
MoveTo.MoveTask task = new MoveTo.MoveTask(aetheryteData.TerritoryIds[Task.TargetAetheryte],
|
||||
closestPoint, Mount: false, StopDistance: 0.25f, DisableNavmesh: true,
|
||||
InteractionType: EInteractionType.None, RestartNavigation: false);
|
||||
return moveExecutor.Start(task);
|
||||
}
|
||||
|
||||
public override ETaskResult Update() => moveExecutor.Update();
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ using System.Numerics;
|
||||
using Dalamud.Game.ClientState.Objects.Types;
|
||||
using Dalamud.Plugin.Services;
|
||||
using FFXIVClientStructs.FFXIV.Client.Game;
|
||||
using FFXIVClientStructs.FFXIV.Client.Game.Object;
|
||||
using FFXIVClientStructs.FFXIV.Client.Game.UI;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Questionable.Controller.Utils;
|
||||
@ -125,6 +126,21 @@ internal static class SkipCondition
|
||||
}
|
||||
}
|
||||
|
||||
if (skipConditions.NotNamePlateIconId.Count > 0 &&
|
||||
step is { DataId: not null })
|
||||
{
|
||||
IGameObject? target = gameFunctions.FindObjectByDataId(step.DataId.Value);
|
||||
if (target != null)
|
||||
{
|
||||
GameObject* gameObject = (GameObject*)target.Address;
|
||||
if (!skipConditions.NotNamePlateIconId.Contains(gameObject->NamePlateIconId))
|
||||
{
|
||||
logger.LogInformation("Skipping step, object has icon id {IconId}", gameObject->NamePlateIconId);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (skipConditions.Item is { NotInInventory: true } && step is { ItemId: not null })
|
||||
{
|
||||
InventoryManager* inventoryManager = InventoryManager.Instance();
|
||||
|
@ -5,6 +5,7 @@ namespace Questionable.Controller.Steps;
|
||||
internal interface ITaskExecutor
|
||||
{
|
||||
ITask CurrentTask { get; }
|
||||
public InteractionProgressContext? ProgressContext { get; }
|
||||
|
||||
Type GetTaskType();
|
||||
|
||||
@ -19,7 +20,7 @@ internal abstract class TaskExecutor<T> : ITaskExecutor
|
||||
where T : class, ITask
|
||||
{
|
||||
protected T Task { get; set; } = null!;
|
||||
protected InteractionProgressContext? ProgressContext { get; set; }
|
||||
public InteractionProgressContext? ProgressContext { get; set; }
|
||||
ITask ITaskExecutor.CurrentTask => Task;
|
||||
|
||||
public bool WasInterrupted()
|
||||
|
@ -91,6 +91,11 @@ internal sealed class ExcelFunctions
|
||||
var questRow = _dataManager.GetExcelSheet<EventPathMove>()!.GetRow(rowId);
|
||||
return questRow?.Unknown10;
|
||||
}
|
||||
else if (excelSheet is "GilShop")
|
||||
{
|
||||
var questRow = _dataManager.GetExcelSheet<GilShop>()!.GetRow(rowId);
|
||||
return questRow?.Name;
|
||||
}
|
||||
else if (excelSheet is "ContentTalk" or null)
|
||||
{
|
||||
var questRow = _dataManager.GetExcelSheet<ContentTalk>()!.GetRow(rowId);
|
||||
|
@ -129,7 +129,8 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
||||
private static void AddTaskFactories(ServiceCollection serviceCollection)
|
||||
{
|
||||
// individual tasks
|
||||
serviceCollection.AddTaskExecutor<MoveToLandingLocation.Task, MoveToLandingLocation.MoveToLandingLocationExecutor>();
|
||||
serviceCollection
|
||||
.AddTaskExecutor<MoveToLandingLocation.Task, MoveToLandingLocation.MoveToLandingLocationExecutor>();
|
||||
serviceCollection.AddTaskExecutor<DoGather.Task, DoGather.GatherExecutor>();
|
||||
serviceCollection.AddTaskExecutor<DoGatherCollectable.Task, DoGatherCollectable.GatherCollectableExecutor>();
|
||||
serviceCollection.AddTaskExecutor<SwitchClassJob.Task, SwitchClassJob.SwitchClassJobExecutor>();
|
||||
@ -138,13 +139,16 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
||||
|
||||
// task factories
|
||||
serviceCollection
|
||||
.AddTaskFactoryAndExecutor<StepDisabled.SkipRemainingTasks, StepDisabled.Factory, StepDisabled.SkipDisabledStepsExecutor>();
|
||||
.AddTaskFactoryAndExecutor<StepDisabled.SkipRemainingTasks, StepDisabled.Factory,
|
||||
StepDisabled.SkipDisabledStepsExecutor>();
|
||||
serviceCollection.AddTaskFactory<EquipRecommended.BeforeDutyOrInstance>();
|
||||
serviceCollection.AddTaskFactoryAndExecutor<Gather.GatheringTask, Gather.Factory, Gather.StartGathering>();
|
||||
serviceCollection.AddTaskExecutor<Gather.SkipMarker, Gather.DoSkip>();
|
||||
serviceCollection
|
||||
.AddTaskFactoryAndExecutor<AetheryteShortcut.Task, AetheryteShortcut.Factory,
|
||||
AetheryteShortcut.UseAetheryteShortcut>();
|
||||
serviceCollection
|
||||
.AddTaskExecutor<AetheryteShortcut.MoveAwayFromAetheryte, AetheryteShortcut.MoveAwayFromAetheryteExecutor>();
|
||||
serviceCollection
|
||||
.AddTaskFactoryAndExecutor<SkipCondition.SkipTask, SkipCondition.Factory, SkipCondition.CheckSkip>();
|
||||
serviceCollection
|
||||
@ -156,7 +160,8 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
||||
serviceCollection.AddTaskExecutor<MoveTo.WaitForNearDataId, MoveTo.WaitForNearDataIdExecutor>();
|
||||
serviceCollection.AddTaskExecutor<MoveTo.LandTask, MoveTo.LandExecutor>();
|
||||
|
||||
serviceCollection.AddTaskFactoryAndExecutor<NextQuest.SetQuestTask, NextQuest.Factory, NextQuest.NextQuestExecutor>();
|
||||
serviceCollection
|
||||
.AddTaskFactoryAndExecutor<NextQuest.SetQuestTask, NextQuest.Factory, NextQuest.NextQuestExecutor>();
|
||||
serviceCollection
|
||||
.AddTaskFactoryAndExecutor<AetherCurrent.Attune, AetherCurrent.Factory, AetherCurrent.DoAttune>();
|
||||
serviceCollection
|
||||
@ -189,7 +194,8 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
||||
TurnInDelivery.SatisfactionSupplyTurnIn>();
|
||||
|
||||
serviceCollection.AddTaskFactory<InitiateLeve.Factory>();
|
||||
serviceCollection.AddTaskExecutor<InitiateLeve.SkipInitiateIfActive, InitiateLeve.SkipInitiateIfActiveExecutor>();
|
||||
serviceCollection
|
||||
.AddTaskExecutor<InitiateLeve.SkipInitiateIfActive, InitiateLeve.SkipInitiateIfActiveExecutor>();
|
||||
serviceCollection.AddTaskExecutor<InitiateLeve.OpenJournal, InitiateLeve.OpenJournalExecutor>();
|
||||
serviceCollection.AddTaskExecutor<InitiateLeve.Initiate, InitiateLeve.InitiateExecutor>();
|
||||
serviceCollection.AddTaskExecutor<InitiateLeve.SelectDifficulty, InitiateLeve.SelectDifficultyExecutor>();
|
||||
@ -218,6 +224,7 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
||||
serviceCollection.AddSingleton<CombatController>();
|
||||
serviceCollection.AddSingleton<GatheringController>();
|
||||
serviceCollection.AddSingleton<ContextMenuController>();
|
||||
serviceCollection.AddSingleton<ShopController>();
|
||||
|
||||
serviceCollection.AddSingleton<CraftworksSupplyController>();
|
||||
serviceCollection.AddSingleton<CreditsController>();
|
||||
@ -278,6 +285,7 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
||||
serviceProvider.GetRequiredService<CreditsController>();
|
||||
serviceProvider.GetRequiredService<HelpUiController>();
|
||||
serviceProvider.GetRequiredService<LeveUiController>();
|
||||
serviceProvider.GetRequiredService<ShopController>();
|
||||
serviceProvider.GetRequiredService<QuestionableIpc>();
|
||||
serviceProvider.GetRequiredService<DalamudInitializer>();
|
||||
serviceProvider.GetRequiredService<AutoSnipeHandler>().Enable();
|
||||
|
@ -72,6 +72,11 @@ internal sealed class PriorityWindow : LWindow
|
||||
ImGui.BeginDisabled(_questController.ManualPriorityQuests.Count == 0);
|
||||
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Upload, "Export to Clibpoard"))
|
||||
ExportToClipboard();
|
||||
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Check, "Remove finished Quests"))
|
||||
_questController.ManualPriorityQuests.RemoveAll(q => _questFunctions.IsQuestComplete(q.Id));
|
||||
ImGui.SameLine();
|
||||
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Trash, "Clear"))
|
||||
_questController.ManualPriorityQuests.Clear();
|
||||
ImGui.EndDisabled();
|
||||
|
||||
ImGui.Spacing();
|
||||
@ -112,7 +117,7 @@ internal sealed class PriorityWindow : LWindow
|
||||
|
||||
foreach (var quest in foundQuests)
|
||||
{
|
||||
if (quest.Info.IsMainScenarioQuest || _questController.ManualPriorityQuests.Contains(quest))
|
||||
if (quest.Info.IsMainScenarioQuest || _questController.ManualPriorityQuests.Any(x => x.Id == quest.Id))
|
||||
continue;
|
||||
|
||||
bool addThis = ImGui.Selectable(quest.Info.Name);
|
||||
|
@ -29,6 +29,7 @@ namespace Questionable.Windows.QuestComponents;
|
||||
|
||||
internal sealed class CreationUtilsComponent
|
||||
{
|
||||
private readonly QuestController _questController;
|
||||
private readonly MovementController _movementController;
|
||||
private readonly GameFunctions _gameFunctions;
|
||||
private readonly QuestFunctions _questFunctions;
|
||||
@ -43,6 +44,7 @@ internal sealed class CreationUtilsComponent
|
||||
private readonly ILogger<CreationUtilsComponent> _logger;
|
||||
|
||||
public CreationUtilsComponent(
|
||||
QuestController questController,
|
||||
MovementController movementController,
|
||||
GameFunctions gameFunctions,
|
||||
QuestFunctions questFunctions,
|
||||
@ -56,6 +58,7 @@ internal sealed class CreationUtilsComponent
|
||||
Configuration configuration,
|
||||
ILogger<CreationUtilsComponent> logger)
|
||||
{
|
||||
_questController = questController;
|
||||
_movementController = movementController;
|
||||
_gameFunctions = gameFunctions;
|
||||
_questFunctions = questFunctions;
|
||||
@ -120,7 +123,8 @@ internal sealed class CreationUtilsComponent
|
||||
#endif
|
||||
|
||||
#if false
|
||||
unsafe {
|
||||
unsafe
|
||||
{
|
||||
var questManager = QuestManager.Instance();
|
||||
if (questManager != null)
|
||||
{
|
||||
@ -134,7 +138,8 @@ internal sealed class CreationUtilsComponent
|
||||
#endif
|
||||
|
||||
#if false
|
||||
unsafe {
|
||||
unsafe
|
||||
{
|
||||
var director = UIState.Instance()->DirectorTodo.Director;
|
||||
if (director != null)
|
||||
{
|
||||
@ -143,15 +148,26 @@ internal sealed class CreationUtilsComponent
|
||||
ImGui.Text($"Ico: {director->IconId}");
|
||||
if (director->EventHandlerInfo != null)
|
||||
{
|
||||
ImGui.Text($" EHI CI: {director->EventHandlerInfo->EventId.ContentId}");
|
||||
ImGui.Text($" EHI EI: {director->EventHandlerInfo->EventId.Id}");
|
||||
ImGui.Text($" EHI EEI: {director->EventHandlerInfo->EventId.EntryId}");
|
||||
ImGui.Text($" EHI F: {director->EventHandlerInfo->Flags}");
|
||||
ImGui.Text($" EHI CI: {director->Info.EventId.ContentId}");
|
||||
ImGui.Text($" EHI EI: {director->Info.EventId.Id}");
|
||||
ImGui.Text($" EHI EEI: {director->Info.EventId.EntryId}");
|
||||
ImGui.Text($" EHI F: {director->Info.Flags}");
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if true
|
||||
unsafe
|
||||
{
|
||||
var actionManager = ActionManager.Instance();
|
||||
ImGui.Text(
|
||||
$"A1: {actionManager->CastActionId} ({actionManager->LastUsedActionSequence} → {actionManager->LastHandledActionSequence})");
|
||||
ImGui.Text($"A2: {actionManager->CastTimeElapsed} / {actionManager->CastTimeTotal}");
|
||||
ImGui.Text($"{_questController.TaskQueue.CurrentTaskExecutor?.ProgressContext}");
|
||||
}
|
||||
#endif
|
||||
|
||||
if (_targetManager.Target != null)
|
||||
{
|
||||
DrawTargetDetails(_targetManager.Target);
|
||||
|
Loading…
Reference in New Issue
Block a user