Minor cleanup for HW part 2
This commit is contained in:
parent
bfc107dc6d
commit
fd62d925e4
@ -270,6 +270,10 @@ public static class RoslynShortcuts
|
||||
skipStepConditions.NotInTerritory).AsSyntaxNodeOrToken(),
|
||||
Assignment(nameof(SkipStepConditions.Item), skipStepConditions.Item, emptyStep.Item)
|
||||
.AsSyntaxNodeOrToken(),
|
||||
AssignmentList(nameof(SkipStepConditions.QuestsAccepted),
|
||||
skipStepConditions.QuestsAccepted).AsSyntaxNodeOrToken(),
|
||||
AssignmentList(nameof(SkipStepConditions.QuestsCompleted),
|
||||
skipStepConditions.QuestsCompleted).AsSyntaxNodeOrToken(),
|
||||
Assignment(nameof(SkipStepConditions.ExtraCondition),
|
||||
skipStepConditions.ExtraCondition, emptyStep.ExtraCondition)
|
||||
.AsSyntaxNodeOrToken()))));
|
||||
|
@ -20,6 +20,58 @@
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -526.363,
|
||||
"Y": 50.165375,
|
||||
"Z": 407.25165
|
||||
},
|
||||
"TerritoryId": 400,
|
||||
"InteractionType": "WalkTo",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
-64
|
||||
]
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": -533.25507,
|
||||
"Y": 53.07081,
|
||||
"Z": 414.5445
|
||||
},
|
||||
"TerritoryId": 400,
|
||||
"InteractionType": "WalkTo",
|
||||
"DisableNavmesh": true,
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
-64
|
||||
]
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": -515.5652,
|
||||
"Y": 57.261906,
|
||||
"Z": 444.5247
|
||||
},
|
||||
"TerritoryId": 400,
|
||||
"InteractionType": "WalkTo",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
-64
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1013424,
|
||||
"Position": {
|
||||
@ -29,7 +81,15 @@
|
||||
},
|
||||
"TerritoryId": 400,
|
||||
"InteractionType": "Interact",
|
||||
"$": "0 0 0 0 0 0 -> 17 0 0 0 0 64"
|
||||
"$": "0 0 0 0 0 0 -> 17 0 0 0 0 64",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1013425,
|
||||
@ -40,7 +100,58 @@
|
||||
},
|
||||
"TerritoryId": 400,
|
||||
"InteractionType": "Interact",
|
||||
"$": "17 0 0 0 0 64 -> 33 16 0 0 0 96"
|
||||
"$": "17 0 0 0 0 64 -> 33 16 0 0 0 96",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": -456.7709,
|
||||
"Y": 43.310535,
|
||||
"Z": 387.23517
|
||||
},
|
||||
"TerritoryId": 400,
|
||||
"InteractionType": "WalkTo",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
-128
|
||||
]
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": -445.09866,
|
||||
"Y": 51.348675,
|
||||
"Z": 390.17886
|
||||
},
|
||||
"StopDistance": 0.25,
|
||||
"TerritoryId": 400,
|
||||
"InteractionType": "Jump",
|
||||
"DisableNavmesh": true,
|
||||
"JumpDestination": {
|
||||
"Position": {
|
||||
"X": -441.6318,
|
||||
"Y": 53.80215,
|
||||
"Z": 380.9018
|
||||
}
|
||||
},
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
-128
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1013421,
|
||||
@ -50,7 +161,15 @@
|
||||
"Z": 379.3545
|
||||
},
|
||||
"TerritoryId": 400,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -65,7 +184,8 @@
|
||||
"Z": 347.0968
|
||||
},
|
||||
"TerritoryId": 400,
|
||||
"InteractionType": "CompleteQuest"
|
||||
"InteractionType": "CompleteQuest",
|
||||
"DisableNavmesh": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -39,7 +39,15 @@
|
||||
},
|
||||
"TerritoryId": 399,
|
||||
"InteractionType": "Interact",
|
||||
"$": "0 0 0 0 0 0 -> 16 16 16 0 0 64"
|
||||
"$": "0 0 0 0 0 0 -> 16 16 16 0 0 64",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2005879,
|
||||
@ -50,7 +58,15 @@
|
||||
},
|
||||
"TerritoryId": 399,
|
||||
"InteractionType": "Interact",
|
||||
"$": "16 16 16 0 0 64 -> 32 17 32 0 0 96"
|
||||
"$": "16 16 16 0 0 64 -> 32 17 32 0 0 96",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2005877,
|
||||
@ -60,7 +76,15 @@
|
||||
"Z": 34.74475
|
||||
},
|
||||
"TerritoryId": 399,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -52,17 +52,27 @@
|
||||
"Z": 82.59637
|
||||
},
|
||||
"TerritoryId": 399,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AutoOnEnterArea",
|
||||
"KillEnemyDataIds": [
|
||||
5042
|
||||
]
|
||||
"InteractionType": "WalkTo"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -403.42465,
|
||||
"Y": 154.8542,
|
||||
"Z": 82.59637
|
||||
},
|
||||
"TerritoryId": 399,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AutoOnEnterArea",
|
||||
"KillEnemyDataIds": [
|
||||
5042
|
||||
],
|
||||
"CombatDelaySecondsAtStart": 1
|
||||
},
|
||||
{
|
||||
"DataId": 2005885,
|
||||
"Position": {
|
||||
|
@ -29,7 +29,14 @@
|
||||
},
|
||||
"TerritoryId": 463,
|
||||
"InteractionType": "Interact",
|
||||
"TargetTerritoryId": 399
|
||||
"TargetTerritoryId": 399,
|
||||
"SkipConditions": {
|
||||
"StepIf": {
|
||||
"NotInTerritory": [
|
||||
463
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 2006061,
|
||||
@ -44,7 +51,15 @@
|
||||
"KillEnemyDataIds": [
|
||||
44
|
||||
],
|
||||
"$": "0 0 0 0 0 0 -> 16 1 0 0 0 128"
|
||||
"$": "0 0 0 0 0 0 -> 16 1 0 0 0 128",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2006062,
|
||||
@ -59,7 +74,15 @@
|
||||
"KillEnemyDataIds": [
|
||||
44
|
||||
],
|
||||
"$": "16 1 0 0 0 128 -> 33 1 0 0 0 192"
|
||||
"$": "16 1 0 0 0 128 -> 33 1 0 0 0 192",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2006063,
|
||||
@ -73,6 +96,14 @@
|
||||
"EnemySpawnType": "AfterInteraction",
|
||||
"KillEnemyDataIds": [
|
||||
44
|
||||
],
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
}
|
||||
]
|
||||
|
@ -29,7 +29,15 @@
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"$": "0 0 0 0 0 0 -> 16 1 16 0 0 128"
|
||||
"$": "0 0 0 0 0 0 -> 16 1 16 0 0 128",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2005826,
|
||||
@ -40,7 +48,15 @@
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"$": "16 1 16 0 0 128 -> 32 17 32 0 0 160"
|
||||
"$": "16 1 16 0 0 128 -> 32 17 32 0 0 160",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2005825,
|
||||
@ -50,7 +66,15 @@
|
||||
"Z": -564.3549
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -29,7 +29,15 @@
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"$": "0 0 0 0 0 0 -> 16 16 0 0 0 64"
|
||||
"$": "0 0 0 0 0 0 -> 16 16 0 0 0 64",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1012071,
|
||||
@ -40,7 +48,15 @@
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact",
|
||||
"$": "16 16 0 0 0 64 -> 32 17 0 0 0 96"
|
||||
"$": "16 16 0 0 0 64 -> 32 17 0 0 0 96",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1012069,
|
||||
@ -50,7 +66,15 @@
|
||||
"Z": -417.74628
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -19,7 +19,8 @@
|
||||
"AetheryteShortcutIf": {
|
||||
"InSameTerritory": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -26,6 +26,17 @@
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 465.77087,
|
||||
"Y": 367.76678,
|
||||
"Z": -658.1668
|
||||
},
|
||||
"TerritoryId": 155,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead"
|
||||
},
|
||||
{
|
||||
"DataId": 1014199,
|
||||
"Position": {
|
||||
@ -35,8 +46,7 @@
|
||||
},
|
||||
"TerritoryId": 155,
|
||||
"InteractionType": "SinglePlayerDuty",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead"
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -26,6 +26,34 @@
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1011920,
|
||||
"Position": {
|
||||
"X": 519.8595,
|
||||
"Y": -51.071976,
|
||||
"Z": 88.24292
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Tailfeather",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 502.8876,
|
||||
"Y": -48.989826,
|
||||
"Z": 34.93356
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"DataId": 1011919,
|
||||
"Position": {
|
||||
@ -35,7 +63,15 @@
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"$": "0 0 0 0 0 0 -> 1 0 0 0 0 128"
|
||||
"$": "0 0 0 0 0 0 -> 1 0 0 0 0 128",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1011921,
|
||||
@ -46,17 +82,15 @@
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"$": "1 0 0 0 0 128 -> 2 0 0 0 0 160"
|
||||
},
|
||||
{
|
||||
"DataId": 1011920,
|
||||
"Position": {
|
||||
"X": 519.8595,
|
||||
"Y": -51.071976,
|
||||
"Z": 88.24292
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact"
|
||||
"$": "1 0 0 0 0 128 -> 2 0 0 0 0 160",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -78,7 +78,8 @@
|
||||
"TerritoryId": 138,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true,
|
||||
"StopDistance": 1
|
||||
"StopDistance": 1,
|
||||
"AetheryteShortcut": "Western La Noscea - Aleport"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -47,6 +47,7 @@
|
||||
"Y": 37.760002,
|
||||
"Z": 78.812744
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 131,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
@ -12,6 +12,7 @@
|
||||
"Y": 37.760002,
|
||||
"Z": 78.812744
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 131,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
@ -44,6 +45,7 @@
|
||||
"Y": 0,
|
||||
"Z": -9.079163
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 351,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
@ -12,6 +12,7 @@
|
||||
"Y": 0,
|
||||
"Z": -9.079163
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 351,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
@ -62,6 +63,7 @@
|
||||
"Y": -9.313226E-10,
|
||||
"Z": 5.9052124
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 433,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
@ -77,6 +79,7 @@
|
||||
"Y": 1.1443481,
|
||||
"Z": 13.199036
|
||||
},
|
||||
"StopDistance": 4,
|
||||
"TerritoryId": 433,
|
||||
"InteractionType": "Interact",
|
||||
"TargetTerritoryId": 419
|
@ -56,6 +56,7 @@
|
||||
"Y": -1.1916885,
|
||||
"Z": -354.94012
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 400,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
@ -12,6 +12,7 @@
|
||||
"Y": -1.1916885,
|
||||
"Z": -354.94012
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 400,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
@ -29,6 +30,7 @@
|
||||
},
|
||||
"TerritoryId": 400,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"AetheryteShortcut": "The Churning Mists - Zenith",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
@ -27,6 +27,7 @@
|
||||
"Y": 27.979128,
|
||||
"Z": -116.41113
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 418,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
@ -12,6 +12,7 @@
|
||||
"Y": 27.979128,
|
||||
"Z": -116.41113
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 418,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
@ -47,6 +48,7 @@
|
||||
"Y": -9.313226E-10,
|
||||
"Z": 7.6447144
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 433,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
@ -12,6 +12,7 @@
|
||||
"Y": -9.313226E-10,
|
||||
"Z": 6.362976
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 433,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
@ -20,17 +21,6 @@
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2005334,
|
||||
"Position": {
|
||||
"X": -0.015319824,
|
||||
"Y": 1.1443481,
|
||||
"Z": 13.199036
|
||||
},
|
||||
"TerritoryId": 433,
|
||||
"InteractionType": "Interact",
|
||||
"TargetTerritoryId": 419
|
||||
},
|
||||
{
|
||||
"DataId": 1013381,
|
||||
"Position": {
|
||||
@ -59,7 +49,15 @@
|
||||
},
|
||||
"TerritoryId": 418,
|
||||
"InteractionType": "Interact",
|
||||
"$": "0 0 0 0 0 0 -> 1 0 0 0 0 32"
|
||||
"$": "0 0 0 0 0 0 -> 1 0 0 0 0 32",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1013341,
|
||||
@ -70,7 +68,15 @@
|
||||
},
|
||||
"TerritoryId": 418,
|
||||
"InteractionType": "Interact",
|
||||
"$": "1 0 0 0 0 32 -> 2 0 0 0 0 96"
|
||||
"$": "1 0 0 0 0 32 -> 2 0 0 0 0 96",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1013340,
|
||||
@ -80,7 +86,15 @@
|
||||
"Z": 54.276245
|
||||
},
|
||||
"TerritoryId": 418,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
@ -57,6 +57,7 @@
|
||||
"Y": -12.020914,
|
||||
"Z": 48.41687
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 418,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
@ -87,6 +88,7 @@
|
||||
"Y": 23.979128,
|
||||
"Z": 12.802246
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 418,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
@ -12,6 +12,7 @@
|
||||
"Y": 23.979128,
|
||||
"Z": 12.802246
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 418,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
@ -27,6 +28,7 @@
|
||||
"Y": 23.979126,
|
||||
"Z": 10.452393
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 418,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
@ -62,7 +64,19 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 4
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 0,
|
||||
"Y": 0,
|
||||
"Z": 0
|
||||
},
|
||||
"TerritoryId": 1,
|
||||
"InteractionType": "WalkTo",
|
||||
"Comment": "Filler"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 5,
|
||||
@ -74,6 +88,7 @@
|
||||
"Y": 42.34489,
|
||||
"Z": -207.04968
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 419,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
@ -105,6 +120,7 @@
|
||||
"Y": 16.009666,
|
||||
"Z": -4.196289
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 419,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
@ -12,6 +12,7 @@
|
||||
"Y": 16.009666,
|
||||
"Z": -4.196289
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 419,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
@ -20,6 +20,25 @@
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 90.44213,
|
||||
"Y": -3.7030487,
|
||||
"Z": 76.662605
|
||||
},
|
||||
"TerritoryId": 418,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 101.28695,
|
||||
"Y": -20.020874,
|
||||
"Z": 76.39896
|
||||
},
|
||||
"TerritoryId": 418,
|
||||
"InteractionType": "WalkTo",
|
||||
"DisableNavmesh": true
|
||||
},
|
||||
{
|
||||
"DataId": 1012169,
|
||||
"Position": {
|
@ -20,6 +20,25 @@
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 90.44213,
|
||||
"Y": -3.7030487,
|
||||
"Z": 76.662605
|
||||
},
|
||||
"TerritoryId": 418,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 101.28695,
|
||||
"Y": -20.020874,
|
||||
"Z": 76.39896
|
||||
},
|
||||
"TerritoryId": 418,
|
||||
"InteractionType": "WalkTo",
|
||||
"DisableNavmesh": true
|
||||
},
|
||||
{
|
||||
"DataId": 1013340,
|
||||
"Position": {
|
@ -12,6 +12,7 @@
|
||||
"Y": 24.390423,
|
||||
"Z": -4.4709473
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 418,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
@ -28,7 +28,11 @@
|
||||
"Z": -26.199768
|
||||
},
|
||||
"TerritoryId": 419,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"AethernetShortcut": [
|
||||
"[Ishgard] Skysteel Manufactory",
|
||||
"[Ishgard] Athenaeum Astrologicum"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
@ -38,7 +38,7 @@
|
||||
"Z": 113.54166
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Emote",
|
||||
"InteractionType": "SinglePlayerDuty",
|
||||
"Emote": "lookout",
|
||||
"StopDistance": 0.25
|
||||
}
|
||||
@ -71,6 +71,7 @@
|
||||
"Y": -35.95642,
|
||||
"Z": 18.722778
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
@ -12,6 +12,7 @@
|
||||
"Y": -35.95642,
|
||||
"Z": 18.722778
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
@ -35,6 +36,22 @@
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -756.4804,
|
||||
"Y": -13.877342,
|
||||
"Z": -121.33485
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "Jump",
|
||||
"JumpDestination": {
|
||||
"Position": {
|
||||
"X": -759.4263,
|
||||
"Y": -9.201294,
|
||||
"Z": -110.85681
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 2006229,
|
||||
"Position": {
|
||||
@ -44,7 +61,17 @@
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "AttuneAetherCurrent",
|
||||
"AetherCurrentId": 2818117
|
||||
"AetherCurrentId": 2818117,
|
||||
"DisableNavmesh": true
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": -755.9033,
|
||||
"Y": -14.112402,
|
||||
"Z": -177.06593
|
||||
},
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"DataId": 1013090,
|
@ -100,6 +100,7 @@
|
||||
"Y": -14.153766,
|
||||
"Z": -543.0228
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
@ -12,6 +12,7 @@
|
||||
"Y": -14.153766,
|
||||
"Z": -543.0228
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
@ -12,6 +12,7 @@
|
||||
"Y": -14.153783,
|
||||
"Z": -541.558
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 401,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
@ -27,6 +28,7 @@
|
||||
"Y": -15.134373,
|
||||
"Z": 37.094604
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 419,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
@ -12,6 +12,7 @@
|
||||
"Y": -15.134371,
|
||||
"Z": 38.52893
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 419,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
@ -29,6 +29,7 @@
|
||||
},
|
||||
"TerritoryId": 133,
|
||||
"InteractionType": "Interact",
|
||||
"TargetTerritoryId": 205,
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
@ -93,6 +94,7 @@
|
||||
"Y": -8,
|
||||
"Z": 98.13074
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 132,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
@ -12,6 +12,7 @@
|
||||
"Y": -8,
|
||||
"Z": 98.13074
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 132,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
@ -33,6 +34,14 @@
|
||||
"AethernetShortcut": [
|
||||
"[Gridania] Aetheryte Plaza",
|
||||
"[Gridania] Leatherworkers' Guild & Shaded Bower"
|
||||
],
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -47,6 +56,14 @@
|
||||
"AethernetShortcut": [
|
||||
"[Gridania] Leatherworkers' Guild & Shaded Bower",
|
||||
"[Gridania] Conjurers' Guild"
|
||||
],
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
}
|
||||
]
|
@ -67,6 +67,11 @@
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"TerritoryId": 478,
|
||||
"InteractionType": "AttuneAethernetShard",
|
||||
"AethernetShard": "[Idyllshire] West Idyllshire"
|
||||
},
|
||||
{
|
||||
"DataId": 1012097,
|
||||
"Position": {
|
||||
@ -75,7 +80,11 @@
|
||||
"Z": 23.483582
|
||||
},
|
||||
"TerritoryId": 478,
|
||||
"InteractionType": "CompleteQuest"
|
||||
"InteractionType": "CompleteQuest",
|
||||
"AethernetShortcut": [
|
||||
"[Idyllshire] West Idyllshire",
|
||||
"[Idyllshire] Aetheryte Plaza"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -20,16 +20,6 @@
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 148.52824,
|
||||
"Y": 207,
|
||||
"Z": 117.84323
|
||||
},
|
||||
"TerritoryId": 478,
|
||||
"InteractionType": "WalkTo",
|
||||
"TargetTerritoryId": 399
|
||||
},
|
||||
{
|
||||
"DataId": 1012416,
|
||||
"Position": {
|
||||
@ -38,7 +28,11 @@
|
||||
"Z": 6.3324585
|
||||
},
|
||||
"TerritoryId": 399,
|
||||
"InteractionType": "SinglePlayerDuty"
|
||||
"InteractionType": "SinglePlayerDuty",
|
||||
"AethernetShortcut": [
|
||||
"[Idyllshire] Aetheryte Plaza",
|
||||
"[Idyllshire] Epilogue Gate (Eastern Hinterlands)"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -52,6 +46,7 @@
|
||||
"Y": 77.859474,
|
||||
"Z": -5.9052734
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 399,
|
||||
"InteractionType": "Interact"
|
||||
}
|
@ -42,6 +42,7 @@
|
||||
"Y": 203.98,
|
||||
"Z": 127.91626
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 478,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
@ -12,6 +12,7 @@
|
||||
"Y": 203.98,
|
||||
"Z": 127.91626
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 478,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
@ -12,6 +12,7 @@
|
||||
"Y": 38.43,
|
||||
"Z": 15.854065
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 463,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
@ -27,6 +28,7 @@
|
||||
"Y": 38.43,
|
||||
"Z": 15.854065
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 463,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
@ -42,6 +44,7 @@
|
||||
"Y": 38.43,
|
||||
"Z": 3.5552979
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 463,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
@ -59,7 +62,23 @@
|
||||
},
|
||||
"TerritoryId": 463,
|
||||
"InteractionType": "Interact",
|
||||
"TargetTerritoryId": 399
|
||||
"TargetTerritoryId": 399,
|
||||
"SkipConditions": {
|
||||
"StepIf": {
|
||||
"NotInTerritory": [
|
||||
463
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 228.06944,
|
||||
"Y": 228.11594,
|
||||
"Z": 767.1184
|
||||
},
|
||||
"TerritoryId": 399,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"DataId": 1012427,
|
||||
@ -69,7 +88,8 @@
|
||||
"Z": 767.87964
|
||||
},
|
||||
"TerritoryId": 399,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DisableNavmesh": true
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -86,6 +106,16 @@
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 228.06944,
|
||||
"Y": 228.11594,
|
||||
"Z": 767.1184
|
||||
},
|
||||
"TerritoryId": 399,
|
||||
"InteractionType": "WalkTo",
|
||||
"DisableNavmesh": true
|
||||
},
|
||||
{
|
||||
"DataId": 2005336,
|
||||
"Position": {
|
@ -27,6 +27,7 @@
|
||||
"Y": 137.42972,
|
||||
"Z": 701.4724
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 399,
|
||||
"InteractionType": "Interact"
|
||||
}
|
@ -12,6 +12,7 @@
|
||||
"Y": -14.34896,
|
||||
"Z": 51.651733
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 419,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
@ -48,6 +49,14 @@
|
||||
"AethernetShortcut": [
|
||||
"[Ishgard] Athenaeum Astrologicum",
|
||||
"[Ishgard] The Forgotten Knight"
|
||||
],
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -59,7 +68,50 @@
|
||||
},
|
||||
"TerritoryId": 418,
|
||||
"InteractionType": "Interact",
|
||||
"$": "16 1 0 0 0 128 -> 33 1 0 0 0 192"
|
||||
"$": "16 1 0 0 0 128 -> 33 1 0 0 0 192",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 89.00678,
|
||||
"Y": 1.6069314,
|
||||
"Z": 67.770386
|
||||
},
|
||||
"TerritoryId": 418,
|
||||
"InteractionType": "WalkTo",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
-32
|
||||
]
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 74.918564,
|
||||
"Y": -13.879314,
|
||||
"Z": 68.86857
|
||||
},
|
||||
"TerritoryId": 418,
|
||||
"InteractionType": "WalkTo",
|
||||
"DisableNavmesh": true,
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
-32
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1012251,
|
||||
@ -69,7 +121,15 @@
|
||||
"Z": 40.268433
|
||||
},
|
||||
"TerritoryId": 418,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -98,6 +158,7 @@
|
||||
"Y": -9.313226E-10,
|
||||
"Z": 5.661072
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 433,
|
||||
"InteractionType": "Interact"
|
||||
}
|
@ -29,7 +29,15 @@
|
||||
},
|
||||
"TerritoryId": 402,
|
||||
"InteractionType": "Interact",
|
||||
"$": "0 0 0 0 0 0 -> 17 0 0 0 0 64"
|
||||
"$": "0 0 0 0 0 0 -> 17 0 0 0 0 64",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2006236,
|
||||
@ -40,7 +48,15 @@
|
||||
},
|
||||
"TerritoryId": 402,
|
||||
"InteractionType": "Interact",
|
||||
"$": "17 0 0 0 0 64 -> 33 1 0 0 0 192"
|
||||
"$": "17 0 0 0 0 64 -> 33 1 0 0 0 192",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2006238,
|
||||
@ -50,7 +66,15 @@
|
||||
"Z": -477.92786
|
||||
},
|
||||
"TerritoryId": 402,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
@ -12,6 +12,7 @@
|
||||
"Y": -176.4502,
|
||||
"Z": -579.3393
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 402,
|
||||
"InteractionType": "AcceptQuest",
|
||||
"DialogueChoices": [
|
||||
@ -34,6 +35,7 @@
|
||||
"Y": -176.4502,
|
||||
"Z": -577.5082
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 402,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
@ -57,6 +59,24 @@
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -138.06377,
|
||||
"Y": -158.1412,
|
||||
"Z": -496.24612
|
||||
},
|
||||
"TerritoryId": 402,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": -147.24174,
|
||||
"Y": -154.81604,
|
||||
"Z": -498.42224
|
||||
},
|
||||
"TerritoryId": 402,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"DataId": 2006363,
|
||||
"Position": {
|
||||
@ -80,7 +100,8 @@
|
||||
"Z": -619.8978
|
||||
},
|
||||
"TerritoryId": 402,
|
||||
"InteractionType": "CompleteQuest"
|
||||
"InteractionType": "CompleteQuest",
|
||||
"DisableNavmesh": true
|
||||
}
|
||||
]
|
||||
}
|
@ -48,7 +48,15 @@
|
||||
"KillEnemyDataIds": [
|
||||
4942
|
||||
],
|
||||
"$": "0 0 0 0 0 0 -> 18 0 0 0 0 64"
|
||||
"$": "0 0 0 0 0 0 -> 18 0 0 0 0 64",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2005569,
|
||||
@ -64,7 +72,15 @@
|
||||
4943,
|
||||
4623
|
||||
],
|
||||
"$": "18 0 0 0 0 64 -> 34 48 0 0 0 96"
|
||||
"$": "18 0 0 0 0 64 -> 34 48 0 0 0 96",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2005567,
|
||||
@ -79,6 +95,14 @@
|
||||
"KillEnemyDataIds": [
|
||||
4614,
|
||||
4942
|
||||
],
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
}
|
||||
]
|
||||
@ -101,6 +125,24 @@
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 780.2551,
|
||||
"Y": -21.268166,
|
||||
"Z": -478.28162
|
||||
},
|
||||
"TerritoryId": 402,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 778.6274,
|
||||
"Y": -17.943024,
|
||||
"Z": -487.80676
|
||||
},
|
||||
"TerritoryId": 402,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"DataId": 2006364,
|
||||
"Position": {
|
@ -1,6 +1,9 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "JerryWester",
|
||||
"TerritoryBlacklist": [
|
||||
459
|
||||
],
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
@ -12,6 +15,7 @@
|
||||
"Y": 10.474376,
|
||||
"Z": 77.50049
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 402,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
@ -82,7 +86,8 @@
|
||||
"Z": 456.53467
|
||||
},
|
||||
"TerritoryId": 402,
|
||||
"InteractionType": "CompleteQuest"
|
||||
"InteractionType": "CompleteQuest",
|
||||
"DisableNavmesh": true
|
||||
}
|
||||
]
|
||||
}
|
@ -13,7 +13,8 @@
|
||||
"Z": -5.2339478
|
||||
},
|
||||
"TerritoryId": 402,
|
||||
"InteractionType": "AcceptQuest"
|
||||
"InteractionType": "AcceptQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -66,7 +67,19 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 4
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 0,
|
||||
"Y": 0,
|
||||
"Z": 0
|
||||
},
|
||||
"TerritoryId": 1,
|
||||
"InteractionType": "WalkTo",
|
||||
"Comment": "Filler"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 5,
|
||||
@ -88,6 +101,7 @@
|
||||
"Y": 0.022254243,
|
||||
"Z": 4.623413
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 433,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
@ -325,14 +325,24 @@
|
||||
"if": {
|
||||
"properties": {
|
||||
"InteractionType": {
|
||||
"anyOf": [
|
||||
{
|
||||
"const": "Interact"
|
||||
}
|
||||
}
|
||||
},
|
||||
"then": {
|
||||
"required": [
|
||||
"DataId"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"properties": {
|
||||
"InteractionType": {
|
||||
"const": "SinglePlayerDuty"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Emote": {
|
||||
"not": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -607,6 +617,9 @@
|
||||
},
|
||||
{
|
||||
"const": "CompleteQuest"
|
||||
},
|
||||
{
|
||||
"const": "SinglePlayerDuty"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -1009,7 +1022,9 @@
|
||||
"not": {
|
||||
"anyOf": [
|
||||
{
|
||||
"required": ["SkipIf"]
|
||||
"required": [
|
||||
"SkipIf"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -19,6 +19,12 @@ public sealed class SkipStepConditions
|
||||
{
|
||||
if (Never)
|
||||
return false;
|
||||
return Flying != null || Chocobo != null || InTerritory.Count > 0 || NotInTerritory.Count > 0 || Item != null;
|
||||
return Flying != null ||
|
||||
Chocobo != null ||
|
||||
InTerritory.Count > 0 ||
|
||||
NotInTerritory.Count > 0 ||
|
||||
Item != null ||
|
||||
QuestsAccepted.Count > 0 ||
|
||||
QuestsCompleted.Count > 0;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
@ -110,8 +111,24 @@ internal sealed class MovementController : IDisposable
|
||||
}
|
||||
|
||||
if (!Destination.IsFlying)
|
||||
_movementOverrideController.AdjustPath(navPoints);
|
||||
{
|
||||
(navPoints, bool recalculateNavmesh) = _movementOverrideController.AdjustPath(navPoints);
|
||||
if (recalculateNavmesh && Destination.NavmeshCalculations < 10)
|
||||
{
|
||||
Destination.NavmeshCalculations++;
|
||||
Destination.PartialRoute.AddRange(navPoints);
|
||||
_logger.LogInformation("Running navmesh recalculation with fudged point ({From} to {To})", navPoints.Last(), Destination.Position);
|
||||
|
||||
_cancellationTokenSource = new();
|
||||
_cancellationTokenSource.CancelAfter(TimeSpan.FromSeconds(30));
|
||||
_pathfindTask =
|
||||
_navmeshIpc.Pathfind(navPoints.Last(), Destination.Position, Destination.IsFlying,
|
||||
_cancellationTokenSource.Token);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
navPoints = Destination.PartialRoute.Concat(navPoints).ToList();
|
||||
_logger.LogInformation("Navigating via route: [{Route}]",
|
||||
string.Join(" → ",
|
||||
_pathfindTask.Result.Select(x => x.ToString("G", CultureInfo.InvariantCulture))));
|
||||
@ -245,6 +262,7 @@ internal sealed class MovementController : IDisposable
|
||||
return pointOnFloor != null && Math.Abs(pointOnFloor.Value.Y - p.Y) > 0.5f;
|
||||
}
|
||||
|
||||
[MemberNotNull(nameof(Destination))]
|
||||
private void PrepareNavigation(EMovementType type, uint? dataId, Vector3 to, bool fly, bool sprint,
|
||||
float? stopDistance, bool ignoreDistanceToObject, bool land, bool useNavmesh)
|
||||
{
|
||||
@ -271,6 +289,7 @@ internal sealed class MovementController : IDisposable
|
||||
PrepareNavigation(type, dataId, to, fly, sprint, stopDistance, ignoreDistanceToObject, land, true);
|
||||
_logger.LogInformation("Pathfinding to {Destination}", Destination);
|
||||
|
||||
Destination.NavmeshCalculations++;
|
||||
_cancellationTokenSource = new();
|
||||
_cancellationTokenSource.CancelAfter(TimeSpan.FromSeconds(30));
|
||||
_pathfindTask =
|
||||
@ -336,7 +355,11 @@ internal sealed class MovementController : IDisposable
|
||||
bool CanSprint,
|
||||
bool IgnoreDistanceToObject,
|
||||
bool Land,
|
||||
bool UseNavmesh);
|
||||
bool UseNavmesh)
|
||||
{
|
||||
public int NavmeshCalculations { get; set; }
|
||||
public List<Vector3> PartialRoute { get; } = [];
|
||||
}
|
||||
|
||||
public sealed class PathfindingFailedException : Exception
|
||||
{
|
||||
|
@ -0,0 +1,13 @@
|
||||
using System.Globalization;
|
||||
using System.Numerics;
|
||||
|
||||
namespace Questionable.Controller.NavigationOverrides;
|
||||
|
||||
public sealed record AlternateLocation(Vector3 Point, bool RecalculateNavmesh)
|
||||
{
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Create(CultureInfo.InvariantCulture,
|
||||
$"{nameof(Point)}: {Point:G}, {nameof(RecalculateNavmesh)}: {RecalculateNavmesh}");
|
||||
}
|
||||
}
|
@ -6,14 +6,15 @@ internal sealed record BlacklistedArea(
|
||||
ushort TerritoryId,
|
||||
Vector3 Center,
|
||||
float MinDistance,
|
||||
float MaxDistance) : IBlacklistedLocation
|
||||
float MaxDistance,
|
||||
bool RecalculateNavmesh = false) : IBlacklistedLocation
|
||||
{
|
||||
public Vector3? AdjustPoint(Vector3 point)
|
||||
public AlternateLocation? AdjustPoint(Vector3 point)
|
||||
{
|
||||
float distance = (point - Center).Length();
|
||||
if (distance < MinDistance || distance > MaxDistance)
|
||||
return null;
|
||||
|
||||
return Center + Vector3.Normalize(point - Center) * MaxDistance;
|
||||
return new AlternateLocation(Center + Vector3.Normalize(point - Center) * MaxDistance, RecalculateNavmesh);
|
||||
}
|
||||
}
|
||||
|
@ -6,14 +6,15 @@ public sealed record BlacklistedPoint(
|
||||
ushort TerritoryId,
|
||||
Vector3 Original,
|
||||
Vector3 Replacement,
|
||||
float CheckDistance = 0.05f) : IBlacklistedLocation
|
||||
float CheckDistance = 0.05f,
|
||||
bool RecalculateNavmesh = false) : IBlacklistedLocation
|
||||
{
|
||||
public Vector3? AdjustPoint(Vector3 point)
|
||||
public AlternateLocation? AdjustPoint(Vector3 point)
|
||||
{
|
||||
float distance = (point - Original).Length();
|
||||
if (distance > CheckDistance)
|
||||
return null;
|
||||
|
||||
return Replacement;
|
||||
return new AlternateLocation(Replacement, RecalculateNavmesh);
|
||||
}
|
||||
}
|
||||
|
@ -6,5 +6,5 @@ internal interface IBlacklistedLocation
|
||||
{
|
||||
ushort TerritoryId { get; }
|
||||
|
||||
Vector3? AdjustPoint(Vector3 point);
|
||||
AlternateLocation? AdjustPoint(Vector3 point);
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using Dalamud.Plugin.Services;
|
||||
using Microsoft.Extensions.Logging;
|
||||
@ -25,6 +26,7 @@ internal sealed class MovementOverrideController
|
||||
|
||||
// New Gridania Navmesh workaround - planter box outside the Carline Canopy
|
||||
new BlacklistedPoint(132, new(45.5f, -8f, 101f), new(50.53978f, -8.046954f, 101.06045f)),
|
||||
new BlacklistedPoint(132, new(48.5f, -8f, 98.25f), new(50.53978f, -8.046954f, 101.06045f)),
|
||||
|
||||
// ul'dah lamp near adventuer's guild
|
||||
new BlacklistedPoint(130, new(59.5f, 4.25f, -118f), new(60.551353f, 4f, -119.76446f)),
|
||||
@ -53,6 +55,9 @@ internal sealed class MovementOverrideController
|
||||
// moghome, mogmug's trial
|
||||
new BlacklistedPoint(400, new(384, -74, 648.75f), new(386.0543f, -72.409454f, 652.0184f), 3),
|
||||
|
||||
// leaving idyllshiret through the west gate attempts to run into this wall
|
||||
new BlacklistedPoint(399, new(-514.4851f, 149.63762f, -480.58087f), new(-528.78656f, 151.17374f, -473.07077f), 5, true),
|
||||
|
||||
new BlacklistedPoint(1189, new(574f, -142.25f, 504.25f), new(574.44183f, -142.12766f, 507.60065f)),
|
||||
|
||||
// kholusia, random rocks
|
||||
@ -84,7 +89,7 @@ internal sealed class MovementOverrideController
|
||||
/// walked on without jumping, but if you teleport to the wrong side you're fucked otherwise.
|
||||
/// </summary>
|
||||
/// <param name="navPoints">list of points to check</param>
|
||||
public void AdjustPath(List<Vector3> navPoints)
|
||||
public (List<Vector3>, bool) AdjustPath(List<Vector3> navPoints)
|
||||
{
|
||||
foreach (var blacklistedArea in BlacklistedLocations)
|
||||
{
|
||||
@ -93,17 +98,21 @@ internal sealed class MovementOverrideController
|
||||
|
||||
for (int i = 0; i < navPoints.Count; ++i)
|
||||
{
|
||||
Vector3? updatedPoint = blacklistedArea.AdjustPoint(navPoints[i]);
|
||||
AlternateLocation? alternateLocation = blacklistedArea.AdjustPoint(navPoints[i]);
|
||||
|
||||
if (updatedPoint != null)
|
||||
if (alternateLocation != null)
|
||||
{
|
||||
_logger.LogInformation("Fudging navmesh point from {Original} to {Replacement} in blacklisted area",
|
||||
navPoints[i].ToString("G", CultureInfo.InvariantCulture),
|
||||
updatedPoint.Value.ToString("G", CultureInfo.InvariantCulture));
|
||||
alternateLocation);
|
||||
|
||||
navPoints[i] = updatedPoint.Value;
|
||||
navPoints[i] = alternateLocation.Point;
|
||||
if (alternateLocation.RecalculateNavmesh)
|
||||
return (navPoints.Take(i + 1).ToList(), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (navPoints, false);
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ using System.Linq;
|
||||
using Dalamud.Game.ClientState.Conditions;
|
||||
using Dalamud.Game.ClientState.Keys;
|
||||
using Dalamud.Plugin.Services;
|
||||
using FFXIVClientStructs.FFXIV.Client.Game;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Questionable.Controller.Steps;
|
||||
using Questionable.Controller.Steps.Shared;
|
||||
@ -28,7 +29,7 @@ internal sealed class QuestController
|
||||
private readonly YesAlreadyIpc _yesAlreadyIpc;
|
||||
private readonly IReadOnlyList<ITaskFactory> _taskFactories;
|
||||
|
||||
private readonly object _lock = new();
|
||||
private readonly object _progressLock = new();
|
||||
|
||||
private QuestProgress? _startedQuest;
|
||||
private QuestProgress? _nextQuest;
|
||||
@ -37,6 +38,13 @@ internal sealed class QuestController
|
||||
private ITask? _currentTask;
|
||||
private bool _automatic;
|
||||
|
||||
/// <summary>
|
||||
/// Some combat encounters finish relatively early (i.e. they're done as part of progressing the quest, but not
|
||||
/// technically necessary to progress the quest if we'd just run away and back). We add some slight delay, as
|
||||
/// talking to NPCs, teleporting etc. won't successfully execute.
|
||||
/// </summary>
|
||||
private DateTime _safeAnimationEnd = DateTime.MinValue;
|
||||
|
||||
public QuestController(
|
||||
IClientState clientState,
|
||||
GameFunctions gameFunctions,
|
||||
@ -90,13 +98,14 @@ internal sealed class QuestController
|
||||
|
||||
public void Reload()
|
||||
{
|
||||
lock (_lock)
|
||||
lock (_progressLock)
|
||||
{
|
||||
_logger.LogInformation("Reload, resetting curent quest progress");
|
||||
|
||||
_startedQuest = null;
|
||||
_nextQuest = null;
|
||||
_simulatedQuest = null;
|
||||
_safeAnimationEnd = DateTime.MinValue;
|
||||
|
||||
DebugState = null;
|
||||
|
||||
@ -106,6 +115,20 @@ internal sealed class QuestController
|
||||
|
||||
public void Update()
|
||||
{
|
||||
unsafe
|
||||
{
|
||||
ActionManager* actionManager = ActionManager.Instance();
|
||||
if (actionManager != null)
|
||||
{
|
||||
float animationLock = Math.Max(actionManager->AnimationLock,
|
||||
actionManager->CastTimeElapsed > 0
|
||||
? actionManager->CastTimeTotal - actionManager->CastTimeElapsed
|
||||
: 0);
|
||||
if (animationLock > 0)
|
||||
_safeAnimationEnd = DateTime.Now.AddSeconds(1 + animationLock);
|
||||
}
|
||||
}
|
||||
|
||||
UpdateCurrentQuest();
|
||||
|
||||
if (!_clientState.IsLoggedIn || _condition[ConditionFlag.Unconscious])
|
||||
@ -116,7 +139,8 @@ internal sealed class QuestController
|
||||
_movementController.Stop();
|
||||
_combatController.Stop();
|
||||
}
|
||||
} else if (_keyState[VirtualKey.ESCAPE])
|
||||
}
|
||||
else if (_keyState[VirtualKey.ESCAPE])
|
||||
{
|
||||
if (_currentTask != null || _taskQueue.Count > 0)
|
||||
{
|
||||
@ -134,7 +158,7 @@ internal sealed class QuestController
|
||||
&& CurrentQuest is { Sequence: 0, Step: 0 } or { Sequence: 0, Step: 255 }
|
||||
&& DateTime.Now >= CurrentQuest.StepProgress.StartedAt.AddSeconds(15))
|
||||
{
|
||||
lock (_lock)
|
||||
lock (_progressLock)
|
||||
{
|
||||
_logger.LogWarning("Quest accept apparently didn't work out, resetting progress");
|
||||
CurrentQuest.SetStep(0);
|
||||
@ -149,7 +173,7 @@ internal sealed class QuestController
|
||||
|
||||
private void UpdateCurrentQuest()
|
||||
{
|
||||
lock (_lock)
|
||||
lock (_progressLock)
|
||||
{
|
||||
DebugState = null;
|
||||
|
||||
@ -249,6 +273,12 @@ internal sealed class QuestController
|
||||
return;
|
||||
}
|
||||
|
||||
if (DateTime.Now < _safeAnimationEnd)
|
||||
{
|
||||
DebugState = "Waiting for Animation";
|
||||
return;
|
||||
}
|
||||
|
||||
if (questToRun.Sequence != currentSequence)
|
||||
{
|
||||
questToRun.SetSequence(currentSequence);
|
||||
@ -302,7 +332,7 @@ internal sealed class QuestController
|
||||
|
||||
public void IncreaseStepCount(ushort? questId, int? sequence, bool shouldContinue = false)
|
||||
{
|
||||
lock (_lock)
|
||||
lock (_progressLock)
|
||||
{
|
||||
(QuestSequence? seq, QuestStep? step) = GetNextStep();
|
||||
if (CurrentQuest == null || seq == null || step == null)
|
||||
@ -587,7 +617,7 @@ internal sealed class QuestController
|
||||
|
||||
public void Skip(ushort questQuestId, byte currentQuestSequence)
|
||||
{
|
||||
lock (_lock)
|
||||
lock (_progressLock)
|
||||
{
|
||||
if (_currentTask is ISkippableTask)
|
||||
_currentTask = null;
|
||||
|
@ -79,6 +79,20 @@ internal static class SkipCondition
|
||||
return true;
|
||||
}
|
||||
|
||||
if (SkipConditions.InTerritory.Count > 0 &&
|
||||
SkipConditions.InTerritory.Contains(clientState.TerritoryType))
|
||||
{
|
||||
logger.LogInformation("Skipping step, as in a skip.InTerritory");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (SkipConditions.NotInTerritory.Count > 0 &&
|
||||
!SkipConditions.NotInTerritory.Contains(clientState.TerritoryType))
|
||||
{
|
||||
logger.LogInformation("Skipping step, as not in a skip.NotInTerritory");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (SkipConditions.QuestsCompleted.Count > 0 &&
|
||||
SkipConditions.QuestsCompleted.All(gameFunctions.IsQuestComplete))
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user