1
0
forked from liza/Questionable

Diving; add more Shadowbringers MSQ

This commit is contained in:
Liza 2024-07-24 20:47:08 +02:00
parent 8feadf953f
commit deb426f81c
Signed by: liza
GPG Key ID: 7199F8D727D55F67
53 changed files with 3771 additions and 13 deletions

View File

@ -145,6 +145,8 @@ public static class RoslynShortcuts
Assignment(nameof(JumpDestination.StopDistance), jumpDestination.StopDistance, null) Assignment(nameof(JumpDestination.StopDistance), jumpDestination.StopDistance, null)
.AsSyntaxNodeOrToken(), .AsSyntaxNodeOrToken(),
Assignment(nameof(JumpDestination.DelaySeconds), jumpDestination.DelaySeconds, null) Assignment(nameof(JumpDestination.DelaySeconds), jumpDestination.DelaySeconds, null)
.AsSyntaxNodeOrToken(),
Assignment(nameof(JumpDestination.Type), jumpDestination.Type, default)
.AsSyntaxNodeOrToken())))); .AsSyntaxNodeOrToken()))));
} }
else if (value is ExcelRef excelRef) else if (value is ExcelRef excelRef)

View File

@ -0,0 +1,127 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1027872,
"Position": {
"X": 268.4519,
"Y": 4.0296993,
"Z": -144.1825
},
"TerritoryId": 815,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1027264,
"Position": {
"X": 60.593506,
"Y": 36.247692,
"Z": -171.80133
},
"StopDistance": 7,
"TerritoryId": 819,
"InteractionType": "Interact",
"AetheryteShortcut": "Crystarium",
"AethernetShortcut": [
"[Crystarium] Aetheryte Plaza",
"[Crystarium] The Amaro Launch"
],
"TargetTerritoryId": 815
},
{
"DataId": 1030391,
"Position": {
"X": 579.9801,
"Y": -46.38523,
"Z": -684.90125
},
"TerritoryId": 815,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 2010010,
"Position": {
"X": 651.8806,
"Y": -54.062744,
"Z": -594.5068
},
"TerritoryId": 815,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 2010011,
"Position": {
"X": 665.0338,
"Y": -58.9151,
"Z": -575.9518
},
"TerritoryId": 815,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 2010012,
"Position": {
"X": 674.5249,
"Y": -60.654602,
"Z": -566.03345
},
"TerritoryId": 815,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1030391,
"Position": {
"X": 579.9801,
"Y": -46.38523,
"Z": -684.90125
},
"TerritoryId": 815,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -27,8 +27,8 @@
"Z": -194.937 "Z": -194.937
}, },
"TerritoryId": 816, "TerritoryId": 816,
"InteractionType": "WaitForManualProgress", "InteractionType": "Dive",
"Comment": "Dive (manually)" "Comment": "TODO: Verify diving works here"
}, },
{ {
"DataId": 2010160, "DataId": 2010160,

View File

@ -0,0 +1,69 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1029023,
"Position": {
"X": -131.36493,
"Y": -16.477911,
"Z": 316.3042
},
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1029024,
"Position": {
"X": -301.5335,
"Y": 8.681433,
"Z": 711.2992
},
"TerritoryId": 817,
"InteractionType": "Say",
"ChatMessage": {
"Key": "TEXT_LUCKZE010_03444_SYSTEM_100_011"
}
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 2009776,
"Position": {
"X": -375.38727,
"Y": 10.0251465,
"Z": 451.65173
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029024,
"Position": {
"X": -301.5335,
"Y": 8.681433,
"Z": 711.2992
},
"TerritoryId": 817,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,96 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1027736,
"Position": {
"X": 396.38354,
"Y": 20.422523,
"Z": -179.12573
},
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1031383,
"Position": {
"X": 569.51245,
"Y": 27.331062,
"Z": 143.69421
},
"TerritoryId": 817,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"DataId": 1031381,
"Position": {
"X": 558.64795,
"Y": 27.378386,
"Z": 152.42236
},
"TerritoryId": 817,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 1031382,
"Position": {
"X": 575.1887,
"Y": 27.872107,
"Z": 161.39453
},
"TerritoryId": 817,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1027736,
"Position": {
"X": 396.38354,
"Y": 20.422523,
"Z": -179.12573
},
"TerritoryId": 817,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Rak'tika - Fanow"
}
]
}
]
}

View File

@ -0,0 +1,88 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1027716,
"Position": {
"X": 494.9873,
"Y": -6.555339,
"Z": -224.93329
},
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1031001,
"Position": {
"X": 167.71179,
"Y": -20,
"Z": -471.00024
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Position": {
"X": 168.35954,
"Y": -20,
"Z": -483.02176
},
"StopDistance": 0.5,
"TerritoryId": 817,
"InteractionType": "Combat",
"EnemySpawnType": "AutoOnEnterArea",
"KillEnemyDataIds": [
11163,
11164
]
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1031001,
"Position": {
"X": 167.71179,
"Y": -20,
"Z": -471.00024
},
"StopDistance": 7,
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1027716,
"Position": {
"X": 494.9873,
"Y": -6.555339,
"Z": -224.93329
},
"TerritoryId": 817,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Rak'tika - Fanow"
}
]
}
]
}

View File

@ -0,0 +1,66 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1030747,
"Position": {
"X": -81.28485,
"Y": -19.061882,
"Z": 307.20984
},
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1030818,
"Position": {
"X": -28.641174,
"Y": -24.631424,
"Z": 318.98987
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 2010348,
"Position": {
"X": -354.5739,
"Y": 7.3395386,
"Z": 266.65137
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1030821,
"Position": {
"X": -524.4679,
"Y": 0.08425587,
"Z": 227.00842
},
"TerritoryId": 817,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -28,8 +28,8 @@
"Z": -431.17603 "Z": -431.17603
}, },
"TerritoryId": 816, "TerritoryId": 816,
"InteractionType": "Instruction", "InteractionType": "Dive",
"Comment": "Dive (manually)" "Comment": "TODO: Verify diving works here"
}, },
{ {
"DataId": 2009837, "DataId": 2009837,

View File

@ -88,6 +88,7 @@
"Y": -18.920458, "Y": -18.920458,
"Z": 336.62915 "Z": 336.62915
}, },
"StopDistance": 5,
"TerritoryId": 817, "TerritoryId": 817,
"InteractionType": "CompleteQuest" "InteractionType": "CompleteQuest"
} }

View File

@ -0,0 +1,185 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1029194,
"Position": {
"X": -37.216797,
"Y": -18.920458,
"Z": 336.62915
},
"StopDistance": 5,
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1029212,
"Position": {
"X": -313.5882,
"Y": 5.156485,
"Z": 285.60303
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 2010066,
"Position": {
"X": -141.58856,
"Y": -0.9003296,
"Z": 49.759644
},
"TerritoryId": 817,
"InteractionType": "AttuneAetherCurrent",
"AetherCurrentId": 2818285
},
{
"DataId": 1029214,
"Position": {
"X": -157.64093,
"Y": 7.3982058,
"Z": -13.351685
},
"StopDistance": 2,
"TerritoryId": 817,
"InteractionType": "Combat",
"EnemySpawnType": "AutoOnEnterArea",
"KillEnemyDataIds": [
10879
]
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1029214,
"Position": {
"X": -157.64093,
"Y": 7.3982058,
"Z": -13.351685
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 2009874,
"Position": {
"X": -231.8609,
"Y": 21.713562,
"Z": -49.302002
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 5,
"Steps": [
{
"DataId": 2009875,
"Position": {
"X": -292.2561,
"Y": 23.5141,
"Z": -182.75739
},
"TerritoryId": 817,
"InteractionType": "Combat",
"EnemySpawnType": "AfterItemUse",
"ItemId": 2002547,
"KillEnemyDataIds": [
10880
]
}
]
},
{
"Sequence": 6,
"Steps": [
{
"DataId": 2010501,
"Position": {
"X": -292.28656,
"Y": 23.483582,
"Z": -182.78784
},
"TerritoryId": 817,
"InteractionType": "UseItem",
"ItemId": 2002548
}
]
},
{
"Sequence": 7,
"Steps": [
{
"DataId": 2009876,
"Position": {
"X": -190.44794,
"Y": 3.036438,
"Z": 2.5787354
},
"TerritoryId": 817,
"InteractionType": "Combat",
"EnemySpawnType": "AfterItemUse",
"ItemId": 2002547,
"KillEnemyDataIds": [
10881
]
}
]
},
{
"Sequence": 8,
"Steps": [
{
"DataId": 2010502,
"Position": {
"X": -190.44794,
"Y": 3.036438,
"Z": 2.5787354
},
"TerritoryId": 817,
"InteractionType": "UseItem",
"ItemId": 2002548
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029216,
"Position": {
"X": -235.09583,
"Y": 19.22425,
"Z": -70.72565
},
"TerritoryId": 817,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,109 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1029216,
"Position": {
"X": -235.09583,
"Y": 19.22425,
"Z": -70.72565
},
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1029218,
"Position": {
"X": -704.43274,
"Y": 14.656629,
"Z": -45.5177
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Position": {
"X": -761.0279,
"Y": 36.49958,
"Z": -337.04126
},
"TerritoryId": 817,
"InteractionType": "WalkTo",
"Comment": "Moves out of aggro range of the door guard"
},
{
"DataId": 1029764,
"Position": {
"X": -763.79034,
"Y": 36.49958,
"Z": -332.29572
},
"StopDistance": 7,
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1029220,
"Position": {
"X": -801.4496,
"Y": 40.021206,
"Z": -393.6065
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 2009877,
"Position": {
"X": -820.6455,
"Y": 38.376343,
"Z": -359.4873
},
"TerritoryId": 817,
"InteractionType": "WaitForManualProgress",
"Comment": "Click murals"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029221,
"Position": {
"X": -523.09454,
"Y": 2.9589303,
"Z": -35.629883
},
"StopDistance": 7,
"TerritoryId": 817,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,69 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1029221,
"Position": {
"X": -523.09454,
"Y": 2.9589303,
"Z": -35.629883
},
"StopDistance": 7,
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1029197,
"Position": {
"X": -87.87671,
"Y": -19.022131,
"Z": 298.20703
},
"TerritoryId": 817,
"InteractionType": "Interact",
"AetheryteShortcut": "Rak'tika - Slitherbough"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 2009878,
"Position": {
"X": -78.90448,
"Y": -19.272217,
"Z": 312.4895
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029195,
"Position": {
"X": -35.751892,
"Y": -18.919392,
"Z": 335.71375
},
"StopDistance": 5,
"TerritoryId": 817,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,197 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1029195,
"Position": {
"X": -35.751892,
"Y": -18.919392,
"Z": 335.71375
},
"StopDistance": 5,
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1029223,
"Position": {
"X": -470.96973,
"Y": 2.3035004,
"Z": 301.4724
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Position": {
"X": -528.96277,
"Y": -0.6,
"Z": 341.0297
},
"TerritoryId": 817,
"InteractionType": "Dive"
},
{
"DataId": 2009879,
"Position": {
"X": -591.97375,
"Y": -90.56238,
"Z": 291.6151
},
"TerritoryId": 817,
"InteractionType": "Interact",
"Fly": true,
"DialogueChoices": [
{
"Type": "YesNo",
"Prompt": "TEXT_LUCKMC111_03332_Q2_000_071",
"Yes": true
}
]
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 2009880,
"Position": {
"X": -670.25256,
"Y": -90.68439,
"Z": 449.94275
},
"TerritoryId": 817,
"InteractionType": "Interact",
"Fly": true,
"DialogueChoices": [
{
"Type": "YesNo",
"Prompt": "TEXT_LUCKMC111_03332_Q3_000_081",
"Yes": true
}
]
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 2009882,
"Position": {
"X": -880.15564,
"Y": -90.68439,
"Z": 289.99768
},
"TerritoryId": 817,
"InteractionType": "Interact",
"DialogueChoices": [
{
"Type": "YesNo",
"Prompt": "TEXT_LUCKMC111_03332_Q5_000_091",
"Yes": true
}
]
}
]
},
{
"Sequence": 5,
"Steps": [
{
"Position": {
"X": -591.7246,
"Y": -92.929955,
"Z": 279.56708
},
"TerritoryId": 817,
"InteractionType": "WalkTo",
"Fly": true
},
{
"DataId": 2009884,
"Position": {
"X": -593.164,
"Y": -95.23157,
"Z": 256.0005
},
"TerritoryId": 817,
"InteractionType": "Interact",
"Fly": true,
"DisableNavmesh": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": -591.7246,
"Y": -92.929955,
"Z": 279.56708
},
"TerritoryId": 817,
"InteractionType": "WalkTo",
"Fly": true,
"DisableNavmesh": true
},
{
"Position": {
"X": -594.93475,
"Y": -77.64466,
"Z": 341.04385
},
"TerritoryId": 817,
"InteractionType": "WalkTo",
"Fly": true
},
{
"Position": {
"X": -537.1801,
"Y": -0.6,
"Z": 340.31
},
"TerritoryId": 817,
"InteractionType": "WalkTo",
"DisableNavmesh": true
},
{
"Position": {
"X": -509.11002,
"Y": -0.3000083,
"Z": 324.28143
},
"TerritoryId": 817,
"InteractionType": "WalkTo",
"DisableNavmesh": true
},
{
"DataId": 1029223,
"Position": {
"X": -470.96973,
"Y": 2.3035004,
"Z": 301.4724
},
"TerritoryId": 817,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,109 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1029223,
"Position": {
"X": -470.96973,
"Y": 2.3035004,
"Z": 301.4724
},
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1029224,
"Position": {
"X": -7.4921875,
"Y": 0.74753714,
"Z": 205.40161
},
"TerritoryId": 817,
"InteractionType": "Interact",
"AetheryteShortcut": "Rak'tika - Slitherbough"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Position": {
"X": 66.71601,
"Y": 0.675326,
"Z": 231.57246
},
"TerritoryId": 817,
"InteractionType": "WalkTo",
"DisableNavmesh": true
},
{
"Position": {
"X": 252.46225,
"Y": -0.91537976,
"Z": 257.19345
},
"TerritoryId": 817,
"InteractionType": "WalkTo"
},
{
"Position": {
"X": 334.33804,
"Y": 23.86952,
"Z": 271.9542
},
"TerritoryId": 817,
"InteractionType": "WalkTo",
"DisableNavmesh": true
},
{
"DataId": 2010069,
"Position": {
"X": 338.6129,
"Y": 24.12439,
"Z": 203.17383
},
"TerritoryId": 817,
"InteractionType": "AttuneAetherCurrent",
"AetherCurrentId": 2818288
},
{
"DataId": 2009886,
"Position": {
"X": 288.19702,
"Y": -0.10687256,
"Z": 221.66772
},
"TerritoryId": 817,
"InteractionType": "Interact",
"DisableNavmesh": true,
"Mount": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029228,
"Position": {
"X": 454.88672,
"Y": 18.97871,
"Z": -57.14508
},
"TerritoryId": 817,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,134 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1030374,
"Position": {
"X": 452.93335,
"Y": 18.97871,
"Z": -56.961975
},
"StopDistance": 5,
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1029231,
"Position": {
"X": 453.05554,
"Y": 33.66181,
"Z": -156.9696
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1027711,
"Position": {
"X": 429.86182,
"Y": 34.051743,
"Z": -114.85474
},
"TerritoryId": 817,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 1027717,
"Position": {
"X": 334.18774,
"Y": 7.960762,
"Z": -141.46643
},
"TerritoryId": 817,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"TerritoryId": 817,
"InteractionType": "AttuneAetheryte",
"Aetheryte": "Rak'tika - Fanow"
},
{
"DataId": 1027719,
"Position": {
"X": 303.5172,
"Y": 34.242825,
"Z": -146.65448
},
"TerritoryId": 817,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
},
{
"DataId": 1027712,
"Position": {
"X": 454.1847,
"Y": 6.955061,
"Z": -193.07245
},
"TerritoryId": 817,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029231,
"Position": {
"X": 453.05554,
"Y": 33.66181,
"Z": -156.9696
},
"TerritoryId": 817,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,348 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1029231,
"Position": {
"X": 453.05554,
"Y": 33.66181,
"Z": -156.9696
},
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1029238,
"Position": {
"X": 206.56128,
"Y": -6.300962,
"Z": -352.4682
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Position": {
"X": 188.16484,
"Y": -19.576328,
"Z": -435.14563
},
"TerritoryId": 817,
"InteractionType": "WalkTo"
},
{
"DataId": 1030944,
"Position": {
"X": 169.604,
"Y": -19.98162,
"Z": -455.5276
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"Position": {
"X": 194.89655,
"Y": -18.734356,
"Z": -426.63055
},
"StopDistance": 0.25,
"TerritoryId": 817,
"InteractionType": "Jump",
"Comment": "Southeast",
"JumpDestination": {
"Position": {
"X": 215.55302,
"Y": 8.500989,
"Z": -426.5461
},
"DelaySeconds": 0.2,
"StopDistance": 2,
"Type": "RepeatedJumps"
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-16
]
},
{
"DataId": 2009890,
"Position": {
"X": 218.46338,
"Y": 10.574402,
"Z": -425.25372
},
"TerritoryId": 817,
"InteractionType": "UseItem",
"ItemId": 2002552,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
},
{
"Position": {
"X": 149.22699,
"Y": -19.278904,
"Z": -427.7278
},
"StopDistance": 0.25,
"TerritoryId": 817,
"InteractionType": "Jump",
"Comment": "Southwest",
"DisableNavmesh": true,
"JumpDestination": {
"Position": {
"X": 126.889496,
"Y": 8.974887,
"Z": -428.30518
},
"DelaySeconds": 0.2,
"StopDistance": 2,
"Type": "RepeatedJumps"
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
},
{
"DataId": 2009887,
"Position": {
"X": 124.37622,
"Y": 10.879639,
"Z": -429.43463
},
"TerritoryId": 817,
"InteractionType": "UseItem",
"ItemId": 2002552,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"Position": {
"X": 154.42946,
"Y": -19.372574,
"Z": -430.77545
},
"TerritoryId": 817,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"Mount": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
},
{
"Position": {
"X": 145.00993,
"Y": -20,
"Z": -509.06528
},
"StopDistance": 0.25,
"TerritoryId": 817,
"InteractionType": "Jump",
"Comment": "Northwest",
"DisableNavmesh": true,
"JumpDestination": {
"Position": {
"X": 123.35363,
"Y": 8.441412,
"Z": -509.28867
},
"DelaySeconds": 0.2,
"StopDistance": 2,
"Type": "RepeatedJumps"
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
},
{
"DataId": 2009888,
"Position": {
"X": 119.920654,
"Y": 10.696533,
"Z": -510.52112
},
"TerritoryId": 817,
"InteractionType": "UseItem",
"ItemId": 2002552,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"Position": {
"X": 195.20181,
"Y": -19.677738,
"Z": -516.0344
},
"StopDistance": 0.25,
"TerritoryId": 817,
"InteractionType": "Jump",
"Comment": "Northwest",
"DisableNavmesh": true,
"JumpDestination": {
"Position": {
"X": 215.5381,
"Y": 6.683917,
"Z": -515.7127
},
"DelaySeconds": 0.2,
"StopDistance": 2,
"Type": "RepeatedJumps"
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
},
{
"DataId": 2009889,
"Position": {
"X": 218.92114,
"Y": 8.957031,
"Z": -514.45795
},
"TerritoryId": 817,
"InteractionType": "UseItem",
"ItemId": 2002552,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
]
},
{
"Sequence": 4,
"Steps": [
{
"Position": {
"X": 192.24295,
"Y": -19.743376,
"Z": -515.7917
},
"TerritoryId": 817,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"Mount": true
},
{
"DataId": 1029241,
"Position": {
"X": 177.203,
"Y": -19.544508,
"Z": -533.53174
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 5,
"Steps": [
{
"DataId": 1030946,
"Position": {
"X": 175.37183,
"Y": -19.521969,
"Z": -536.0647
},
"StopDistance": 7,
"TerritoryId": 817,
"InteractionType": "Interact",
"DialogueChoices": [
{
"Type": "YesNo",
"Prompt": "TEXT_LUCKMC114_03335_Q1_000_000",
"Yes": true
},
{
"Type": "List",
"Prompt": "TEXT_LUCKMC114_03335_Q2_000_000",
"Answer": "TEXT_LUCKMC114_03335_A2_000_004"
}
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029240,
"Position": {
"X": 173.2356,
"Y": -19.585392,
"Z": -536.82764
},
"TerritoryId": 817,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,219 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1029240,
"Position": {
"X": 173.2356,
"Y": -19.585392,
"Z": -536.82764
},
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": 104.577484,
"Y": -18.78201,
"Z": -710.81934
},
"TerritoryId": 817,
"InteractionType": "WalkTo"
},
{
"Position": {
"X": 72.32005,
"Y": -11.506357,
"Z": -869.2572
},
"TerritoryId": 817,
"InteractionType": "WalkTo"
},
{
"DataId": 1029242,
"Position": {
"X": 122.697754,
"Y": -8.781986,
"Z": -891.4168
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Position": {
"X": 175.20982,
"Y": -4.4171376,
"Z": -842.7409
},
"TerritoryId": 817,
"InteractionType": "WalkTo"
},
{
"Position": {
"X": 176.5321,
"Y": 11.218012,
"Z": -713.26447
},
"TerritoryId": 817,
"InteractionType": "WalkTo",
"DisableNavmesh": true
},
{
"DataId": 2010218,
"Position": {
"X": 220.17236,
"Y": 12.436096,
"Z": -711.9707
},
"TerritoryId": 817,
"InteractionType": "Interact",
"DisableNavmesh": true
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 2010218,
"Position": {
"X": 220.17236,
"Y": 12.436096,
"Z": -711.9707
},
"TerritoryId": 817,
"InteractionType": "Interact",
"Comment": "Retry point",
"SkipIf": [
"NotTargetable"
]
},
{
"Position": {
"X": 179.29196,
"Y": 11.218012,
"Z": -716.2551
},
"TerritoryId": 817,
"InteractionType": "WalkTo"
},
{
"Position": {
"X": 178.56311,
"Y": 1.2180231,
"Z": -760.07153
},
"TerritoryId": 817,
"InteractionType": "WalkTo",
"DisableNavmesh": true
},
{
"Position": {
"X": 190.72441,
"Y": 1.2180231,
"Z": -774.9509
},
"TerritoryId": 817,
"InteractionType": "WalkTo"
},
{
"Position": {
"X": 182.27933,
"Y": 1.2180231,
"Z": -794.6802
},
"TerritoryId": 817,
"InteractionType": "WalkTo"
},
{
"Position": {
"X": 176.54279,
"Y": 0.4118718,
"Z": -831.1932
},
"TerritoryId": 817,
"InteractionType": "WalkTo",
"DisableNavmesh": true
},
{
"Position": {
"X": 170.7773,
"Y": -8.781983,
"Z": -864.8363
},
"TerritoryId": 817,
"InteractionType": "WalkTo",
"DisableNavmesh": true
},
{
"Position": {
"X": 128.05794,
"Y": -8.781985,
"Z": -861.96173
},
"TerritoryId": 817,
"InteractionType": "WalkTo"
},
{
"Position": {
"X": 104.804436,
"Y": -8.781986,
"Z": -852.4725
},
"TerritoryId": 817,
"InteractionType": "WalkTo"
},
{
"Position": {
"X": 104.83191,
"Y": -8.781986,
"Z": -882.98535
},
"TerritoryId": 817,
"InteractionType": "WalkTo",
"DisableNavmesh": true
},
{
"DataId": 2010217,
"Position": {
"X": 115.43445,
"Y": -7.400635,
"Z": -895.4757
},
"TerritoryId": 817,
"InteractionType": "Interact",
"DisableNavmesh": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029242,
"Position": {
"X": 122.697754,
"Y": -8.781986,
"Z": -891.4168
},
"TerritoryId": 817,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,51 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1029242,
"Position": {
"X": 122.697754,
"Y": -8.781986,
"Z": -891.4168
},
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1029243,
"Position": {
"X": 121.3855,
"Y": -8.781985,
"Z": -890.62335
},
"TerritoryId": 817,
"InteractionType": "SinglePlayerDuty"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029244,
"Position": {
"X": 171.19092,
"Y": -19.76173,
"Z": -534.05054
},
"TerritoryId": 817,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,99 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1029247,
"Position": {
"X": 166.91846,
"Y": -19.856256,
"Z": -535.1797
},
"StopDistance": 5,
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1029249,
"Position": {
"X": 449.8817,
"Y": 6.955061,
"Z": -208.75867
},
"StopDistance": 2,
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1029250,
"Position": {
"X": 448.2948,
"Y": 7.479239,
"Z": -208.14838
},
"TerritoryId": 817,
"InteractionType": "UseItem",
"ItemId": 2002553
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1029250,
"Position": {
"X": 448.2948,
"Y": 7.479239,
"Z": -208.14838
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1029250,
"Position": {
"X": 448.2948,
"Y": 7.479239,
"Z": -208.14838
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029249,
"Position": {
"X": 449.8817,
"Y": 6.955061,
"Z": -208.75867
},
"TerritoryId": 817,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,106 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1029249,
"Position": {
"X": 449.8817,
"Y": 6.955061,
"Z": -208.75867
},
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1029251,
"Position": {
"X": 450.00366,
"Y": 6.955061,
"Z": -202.38043
},
"StopDistance": 7,
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Position": {
"X": 580.9263,
"Y": 18.753235,
"Z": -43.01526
},
"StopDistance": 1,
"TerritoryId": 817,
"InteractionType": "UseItem",
"ItemId": 2002554
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 2009892,
"Position": {
"X": 580.9263,
"Y": 18.753235,
"Z": -43.01526
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1029554,
"Position": {
"X": 585.7174,
"Y": 18.386158,
"Z": -59.18976
},
"TerritoryId": 817,
"InteractionType": "Interact",
"DialogueChoices": [
{
"Type": "List",
"Prompt": "TEXT_LUCKMC118_03339_Q1_000_000",
"Answer": "TEXT_LUCKMC118_03339_A1_000_002"
}
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029555,
"Position": {
"X": 453.26917,
"Y": 6.955061,
"Z": -204.39465
},
"TerritoryId": 817,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Rak'tika - Fanow"
}
]
}
]
}

View File

@ -0,0 +1,77 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"TerritoryBlacklist": [
823
],
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1029255,
"Position": {
"X": 453.6964,
"Y": 6.955061,
"Z": -201.15973
},
"StopDistance": 7,
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 2010073,
"Position": {
"X": 681.1168,
"Y": -39.2005,
"Z": -262.77563
},
"TerritoryId": 817,
"InteractionType": "AttuneAetherCurrent",
"AetherCurrentId": 2818292
},
{
"DataId": 2009893,
"Position": {
"X": 854.39844,
"Y": -63.85907,
"Z": -394.43048
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"TerritoryId": 817,
"InteractionType": "Duty",
"ContentFinderConditionId": 651
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029557,
"Position": {
"X": 848.7831,
"Y": -65.42493,
"Z": -394.67462
},
"StopDistance": 5,
"TerritoryId": 817,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,55 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1029557,
"Position": {
"X": 848.7831,
"Y": -65.42493,
"Z": -394.67462
},
"StopDistance": 5,
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1029231,
"Position": {
"X": 453.05554,
"Y": 33.66181,
"Z": -156.9696
},
"TerritoryId": 817,
"InteractionType": "Interact",
"AetheryteShortcut": "Rak'tika - Fanow",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029197,
"Position": {
"X": -87.87671,
"Y": -19.022131,
"Z": 298.20703
},
"TerritoryId": 817,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Rak'tika - Slitherbough"
}
]
}
]
}

View File

@ -0,0 +1,106 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1029011,
"Position": {
"X": -88.822815,
"Y": -19.053196,
"Z": 296.65063
},
"StopDistance": 5,
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1029194,
"Position": {
"X": -37.216797,
"Y": -18.920458,
"Z": 336.62915
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Position": {
"X": -64.28227,
"Y": -19.16186,
"Z": 319.19778
},
"TerritoryId": 817,
"InteractionType": "WalkTo"
},
{
"DataId": 2009894,
"Position": {
"X": -259.51025,
"Y": -2.395752,
"Z": 332.81445
},
"TerritoryId": 817,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1029558,
"Position": {
"X": 28.732666,
"Y": 0,
"Z": 1.87677
},
"TerritoryId": 819,
"InteractionType": "Interact",
"AetheryteShortcut": "Crystarium",
"Sprint": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1030610,
"Position": {
"X": 65.11023,
"Y": 1.7160122,
"Z": 249.7749
},
"StopDistance": 7,
"TerritoryId": 819,
"InteractionType": "CompleteQuest",
"AethernetShortcut": [
"[Crystarium] The Dossal Gate",
"[Crystarium] The Pendants"
],
"DialogueChoices": [
{
"Type": "YesNo",
"Prompt": "TEXT_LUCKMC121_03342_Q1_000_000",
"Yes": true
}
]
}
]
}
]
}

View File

@ -0,0 +1,99 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1027231,
"Position": {
"X": 65.35437,
"Y": 1.7160122,
"Z": 249.83594
},
"StopDistance": 7,
"TerritoryId": 819,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 2009895,
"Position": {
"X": 26.04712,
"Y": -0.015319824,
"Z": 73.92993
},
"TerritoryId": 819,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 2009896,
"Position": {
"X": -224.445,
"Y": 21.377869,
"Z": -58.06067
},
"TerritoryId": 819,
"InteractionType": "Interact",
"AetheryteShortcut": "Crystarium"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 2009897,
"Position": {
"X": -224.47546,
"Y": 21.22528,
"Z": 58.03003
},
"TerritoryId": 819,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1029599,
"Position": {
"X": -107.0116,
"Y": 20,
"Z": 12.619202
},
"StopDistance": 5,
"TerritoryId": 819,
"InteractionType": "SinglePlayerDuty"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029601,
"Position": {
"X": -707.5456,
"Y": 51.501152,
"Z": -241.56561
},
"TerritoryId": 813,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,98 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1029601,
"Position": {
"X": -707.5456,
"Y": 51.501152,
"Z": -241.56561
},
"TerritoryId": 813,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1030314,
"Position": {
"X": -690.0587,
"Y": 52.7832,
"Z": -302.20496
},
"TerritoryId": 813,
"InteractionType": "Interact",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"DataId": 1030313,
"Position": {
"X": -649.13403,
"Y": 53.2081,
"Z": -178.08807
},
"TerritoryId": 813,
"InteractionType": "Interact",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 1030312,
"Position": {
"X": -694.0261,
"Y": 52.60457,
"Z": -124.74249
},
"TerritoryId": 813,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029606,
"Position": {
"X": -734.5541,
"Y": 52.60457,
"Z": -147.1123
},
"TerritoryId": 813,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,137 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1030587,
"Position": {
"X": -728.0537,
"Y": 52.604565,
"Z": -146.3493
},
"StopDistance": 5,
"TerritoryId": 813,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1029607,
"Position": {
"X": -32.791687,
"Y": -0.6250627,
"Z": -44.663208
},
"TerritoryId": 819,
"InteractionType": "Interact",
"AetheryteShortcut": "Crystarium"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1029608,
"Position": {
"X": -120.83624,
"Y": -47.55994,
"Z": -166.15558
},
"TerritoryId": 819,
"InteractionType": "Interact",
"AethernetShortcut": [
"[Crystarium] The Dossal Gate",
"[Crystarium] The Cabinet of Curiosity"
]
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1029608,
"Position": {
"X": -120.83624,
"Y": -47.55994,
"Z": -166.15558
},
"TerritoryId": 819,
"InteractionType": "Emote",
"Emote": "poke",
"DialogueChoices": [
{
"Type": "List",
"Prompt": "TEXT_LUCKMD103_03608_Q1_000_000",
"Answer": "TEXT_LUCKMD103_03608_A1_000_002"
}
]
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 2009900,
"Position": {
"X": -136.64453,
"Y": -46.00598,
"Z": -183.67291
},
"TerritoryId": 819,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 2009899,
"Position": {
"X": -140.97815,
"Y": -44.75476,
"Z": -156.66437
},
"TerritoryId": 819,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1027248,
"Position": {
"X": -30.807983,
"Y": -0.64999914,
"Z": -51.438232
},
"TerritoryId": 819,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Crystarium"
}
]
}
]
}

View File

@ -0,0 +1,142 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1029853,
"Position": {
"X": -30.991089,
"Y": -0.6499998,
"Z": -49.69867
},
"TerritoryId": 819,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1027230,
"Position": {
"X": 117.997925,
"Y": 14.649025,
"Z": 7.156433
},
"TerritoryId": 819,
"InteractionType": "Interact",
"TargetTerritoryId": 844
},
{
"DataId": 1028923,
"Position": {
"X": -0.015319824,
"Y": -1.0530548E-13,
"Z": -6.0273438
},
"TerritoryId": 844,
"InteractionType": "Interact",
"DialogueChoices": [
{
"Type": "List",
"Prompt": "TEXT_LUCKMD104_03609_Q1_000_000",
"Answer": "TEXT_LUCKMD104_03609_A1_000_002"
}
]
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1029597,
"Position": {
"X": 2.4871826,
"Y": 0,
"Z": 1.5106201
},
"StopDistance": 7,
"TerritoryId": 844,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 2009903,
"Position": {
"X": -177.56934,
"Y": -0.015319824,
"Z": -0.38153076
},
"TerritoryId": 819,
"InteractionType": "Interact",
"AetheryteShortcut": "Crystarium"
}
]
},
{
"Sequence": 4,
"Steps": [
{
"Position": {
"X": -246.00786,
"Y": -3.0897782,
"Z": -0.36405885
},
"TerritoryId": 819,
"InteractionType": "WalkTo"
},
{
"DataId": 1029611,
"Position": {
"X": 576.95886,
"Y": 6.6976085,
"Z": 636.71313
},
"TerritoryId": 813,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 5,
"Steps": [
{
"DataId": 1028305,
"Position": {
"X": 525.65796,
"Y": -5.2326922,
"Z": 854.2457
},
"TerritoryId": 813,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029614,
"Position": {
"X": -554.1314,
"Y": 35.800797,
"Z": -669.70325
},
"TerritoryId": 815,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,117 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1029615,
"Position": {
"X": -556.69495,
"Y": 36.586422,
"Z": -670.06946
},
"TerritoryId": 815,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1030438,
"Position": {
"X": -403.67743,
"Y": -20.21407,
"Z": -589.9901
},
"TerritoryId": 815,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1027918,
"Position": {
"X": -389.76123,
"Y": -17.724838,
"Z": -586.1448
},
"TerritoryId": 815,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 1027919,
"Position": {
"X": -404.50146,
"Y": -17.85281,
"Z": -549.95044
},
"TerritoryId": 815,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"DataId": 1027917,
"Position": {
"X": -448.3559,
"Y": -20.016521,
"Z": -554.6807
},
"TerritoryId": 815,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029617,
"Position": {
"X": -419.39423,
"Y": -20.145794,
"Z": -578.88153
},
"TerritoryId": 815,
"InteractionType": "CompleteQuest",
"DialogueChoices": [
{
"Type": "List",
"Prompt": "TEXT_LUCKMD105_03610_Q1_000_000",
"Answer": "TEXT_LUCKMD105_03610_A1_000_003"
}
]
}
]
}
]
}

View File

@ -0,0 +1,159 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1030438,
"Position": {
"X": -403.67743,
"Y": -20.21407,
"Z": -589.9901
},
"TerritoryId": 815,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1030947,
"Position": {
"X": -461.9364,
"Y": -1.2183915,
"Z": -372.06073
},
"TerritoryId": 815,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1029620,
"Position": {
"X": -2.0905762,
"Y": 45.61908,
"Z": -583.48975
},
"TerritoryId": 815,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 2009906,
"Position": {
"X": -0.7172241,
"Y": 48.722046,
"Z": -529.80853
},
"TerritoryId": 815,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"DataId": 2009904,
"Position": {
"X": 19.821411,
"Y": 46.189087,
"Z": -575.0973
},
"TerritoryId": 815,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 2009905,
"Position": {
"X": 13.443176,
"Y": 47.89807,
"Z": -618.12775
},
"TerritoryId": 815,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1029622,
"Position": {
"X": 80.338745,
"Y": 45.622585,
"Z": -641.5351
},
"TerritoryId": 815,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 5,
"Steps": [
{
"DataId": 1029623,
"Position": {
"X": -62.760437,
"Y": 45.619083,
"Z": -606.3783
},
"TerritoryId": 815,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [
10882
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029624,
"Position": {
"X": 90.196045,
"Y": 45.72853,
"Z": -598.90137
},
"TerritoryId": 815,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,142 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1029629,
"Position": {
"X": 88.48706,
"Y": 45.737045,
"Z": -595.9106
},
"StopDistance": 7,
"TerritoryId": 815,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1029631,
"Position": {
"X": -94.65173,
"Y": 41.257984,
"Z": -537.59064
},
"TerritoryId": 815,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1029632,
"Position": {
"X": -136.36993,
"Y": 28.480484,
"Z": -374.99048
},
"TerritoryId": 815,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"Position": {
"X": -158.38751,
"Y": 25.202963,
"Z": -285.0746
},
"TerritoryId": 815,
"InteractionType": "WalkTo",
"Sprint": true
},
{
"Position": {
"X": -276.48285,
"Y": 18.86909,
"Z": -244.22473
},
"StopDistance": 1,
"TerritoryId": 815,
"InteractionType": "Combat",
"EnemySpawnType": "AutoOnEnterArea",
"KillEnemyDataIds": [
11138
]
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1029633,
"Position": {
"X": -278.03473,
"Y": 19.067781,
"Z": -249.19507
},
"StopDistance": 7,
"TerritoryId": 815,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 5,
"Steps": [
{
"DataId": 1029634,
"Position": {
"X": -479.7895,
"Y": 45.16138,
"Z": -213.6416
},
"TerritoryId": 815,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 6,
"Steps": [
{
"DataId": 1029635,
"Position": {
"X": -479.45374,
"Y": 47.777702,
"Z": -189.77649
},
"TerritoryId": 815,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029637,
"Position": {
"X": -483.23798,
"Y": 45.473377,
"Z": -211.3222
},
"TerritoryId": 815,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,214 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1029637,
"Position": {
"X": -483.23798,
"Y": 45.473377,
"Z": -211.3222
},
"TerritoryId": 815,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"TerritoryId": 815,
"InteractionType": "AttuneAetheryte",
"Aetheryte": "Amh Araeng - Twine"
},
{
"DataId": 1029640,
"Position": {
"X": -545.31165,
"Y": 45.512848,
"Z": -230.6402
},
"TerritoryId": 815,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Position": {
"X": -410.60504,
"Y": 46.19129,
"Z": -245.38031
},
"StopDistance": 2,
"TerritoryId": 815,
"InteractionType": "UseItem",
"ItemId": 2002559,
"DialogueChoices": [
{
"Type": "List",
"Prompt": "TEXT_LUCKMD108_03613_Q1_000_000",
"Answer": "TEXT_LUCKMD108_03613_A1_000_002"
}
]
}
]
},
{
"Sequence": 3,
"Steps": [
{
"Position": {
"X": -341.64484,
"Y": 46.191288,
"Z": -244.7952
},
"TerritoryId": 815,
"InteractionType": "WalkTo"
},
{
"DataId": 2010050,
"Position": {
"X": -343.80103,
"Y": 46.98242,
"Z": -235.43152
},
"TerritoryId": 815,
"InteractionType": "AttuneAetherCurrent",
"AetherCurrentId": 2818259,
"DisableNavmesh": true
},
{
"Position": {
"X": -341.64484,
"Y": 46.191288,
"Z": -244.7952
},
"TerritoryId": 815,
"InteractionType": "WalkTo",
"DisableNavmesh": true
},
{
"Position": {
"X": -226.30658,
"Y": 46.19127,
"Z": -247.21143
},
"StopDistance": 2,
"TerritoryId": 815,
"InteractionType": "UseItem",
"ItemId": 2002559,
"DialogueChoices": [
{
"Type": "List",
"Prompt": "TEXT_LUCKMD108_03613_Q2_000_000",
"Answer": "TEXT_LUCKMD108_03613_A2_000_003"
}
]
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 2009910,
"Position": {
"X": -170.48907,
"Y": 46.189087,
"Z": -279.56055
},
"TerritoryId": 815,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [10883],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 2009911,
"Position": {
"X": -181.5061,
"Y": 46.189087,
"Z": -362.6917
},
"TerritoryId": 815,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [10883],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 2009912,
"Position": {
"X": -127.58075,
"Y": 45.914307,
"Z": -456.59576
},
"TerritoryId": 815,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [10883],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
]
},
{
"Sequence": 5,
"Steps": [
{
"DataId": 1029642,
"Position": {
"X": -226.30658,
"Y": 46.19127,
"Z": -247.21143
},
"TerritoryId": 815,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029643,
"Position": {
"X": -453.60498,
"Y": 45.48443,
"Z": -236.86578
},
"TerritoryId": 815,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Amh Araeng - Twine"
}
]
}
]
}

View File

@ -0,0 +1,75 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1029643,
"Position": {
"X": -453.60498,
"Y": 45.48443,
"Z": -236.86578
},
"TerritoryId": 815,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1029645,
"Position": {
"X": -503.16626,
"Y": 45.71098,
"Z": -258.32
},
"TerritoryId": 815,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Position": {
"X": -395.11795,
"Y": 24.01915,
"Z": -200.26707
},
"TerritoryId": 815,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 10347,
"MinimumKillCount": 3,
"RewardItemId": 2002560,
"RewardItemCount": 3
}
],
"Comment": "Probably needs manual movement (or waiting for enemies to respawn)"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1029761,
"Position": {
"X": -503.19678,
"Y": 45.72556,
"Z": -254.01697
},
"TerritoryId": 815,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,22 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1030569,
"Position": {
"X": -504.47852,
"Y": 45.822144,
"Z": -250.44635
},
"StopDistance": 5,
"TerritoryId": 815,
"InteractionType": "AcceptQuest"
}
]
}
]
}

View File

@ -117,6 +117,7 @@
"Duty", "Duty",
"SinglePlayerDuty", "SinglePlayerDuty",
"Jump", "Jump",
"Dive",
"Instruction", "Instruction",
"AcceptQuest", "AcceptQuest",
"CompleteQuest" "CompleteQuest"
@ -689,6 +690,14 @@
"number", "number",
"null" "null"
] ]
},
"Type": {
"type": "string",
"enum": [
"SingleJump",
"RepeatedJumps"
],
"default": "SingleJump"
} }
}, },
"required": [ "required": [
@ -724,6 +733,12 @@
}, },
{ {
"const": "Instruction" "const": "Instruction"
},
{
"const": "Emote"
},
{
"const": "UseItem"
} }
] ]
} }

View File

@ -22,6 +22,7 @@ public sealed class InteractionTypeConverter() : EnumConverter<EInteractionType>
{ EInteractionType.Duty, "Duty" }, { EInteractionType.Duty, "Duty" },
{ EInteractionType.SinglePlayerDuty, "SinglePlayerDuty" }, { EInteractionType.SinglePlayerDuty, "SinglePlayerDuty" },
{ EInteractionType.Jump, "Jump" }, { EInteractionType.Jump, "Jump" },
{ EInteractionType.Dive, "Dive" },
{ EInteractionType.Instruction, "Instruction" }, { EInteractionType.Instruction, "Instruction" },
{ EInteractionType.AcceptQuest, "AcceptQuest" }, { EInteractionType.AcceptQuest, "AcceptQuest" },
{ EInteractionType.CompleteQuest, "CompleteQuest" }, { EInteractionType.CompleteQuest, "CompleteQuest" },

View File

@ -0,0 +1,12 @@
using System.Collections.Generic;
namespace Questionable.Model.V1.Converter;
public sealed class JumpTypeConverter() : EnumConverter<EJumpType>(Values)
{
private static readonly Dictionary<EJumpType, string> Values = new()
{
{ EJumpType.SingleJump, "SingleJump" },
{ EJumpType.RepeatedJumps, "RepeatedJumps" },
};
}

View File

@ -22,6 +22,7 @@ public enum EInteractionType
Duty, Duty,
SinglePlayerDuty, SinglePlayerDuty,
Jump, Jump,
Dive,
/// <summary> /// <summary>
/// Needs to be manually continued. /// Needs to be manually continued.

View File

@ -0,0 +1,11 @@
using System.Text.Json.Serialization;
using Questionable.Model.V1.Converter;
namespace Questionable.Model.V1;
[JsonConverter(typeof(JumpTypeConverter))]
public enum EJumpType
{
SingleJump,
RepeatedJumps,
}

View File

@ -11,4 +11,7 @@ public sealed class JumpDestination
public float? StopDistance { get; set; } public float? StopDistance { get; set; }
public float? DelaySeconds { get; set; } public float? DelaySeconds { get; set; }
public EJumpType Type { get; set; } = EJumpType.SingleJump;
public float CalculateStopDistance() => StopDistance ?? 1f;
} }

View File

@ -26,7 +26,7 @@ internal abstract class AbstractDelayedTask : ITask
protected abstract bool StartInternal(); protected abstract bool StartInternal();
public ETaskResult Update() public virtual ETaskResult Update()
{ {
if (_continueAt >= DateTime.Now) if (_continueAt >= DateTime.Now)
return ETaskResult.StillRunning; return ETaskResult.StillRunning;

View File

@ -0,0 +1,143 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Runtime.InteropServices;
using Dalamud.Game.ClientState.Conditions;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Graphics.Kernel;
using FFXIVClientStructs.FFXIV.Client.System.String;
using FFXIVClientStructs.FFXIV.Client.UI;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Questionable.Controller.Steps.Common;
using Questionable.Model;
using Questionable.Model.V1;
namespace Questionable.Controller.Steps.Interactions;
internal static class Dive
{
internal sealed class Factory(IServiceProvider serviceProvider) : ITaskFactory
{
public ITask? CreateTask(Quest quest, QuestSequence sequence, QuestStep step)
{
if (step.InteractionType != EInteractionType.Dive)
return null;
return serviceProvider.GetRequiredService<DoDive>();
}
}
internal sealed class DoDive(ICondition condition, ILogger<DoDive> logger)
: AbstractDelayedTask(TimeSpan.FromSeconds(5))
{
private readonly Queue<(uint Type, nint Key)> _keysToPress = [];
private int _attempts;
protected override bool StartInternal()
{
if (condition[ConditionFlag.Diving])
return false;
if (condition[ConditionFlag.Mounted] || condition[ConditionFlag.Swimming])
{
Descend();
return true;
}
throw new TaskException("You aren't swimming, so we can't dive.");
}
public override unsafe ETaskResult Update()
{
if (_keysToPress.TryDequeue(out var definition))
{
if (definition.Type == 0)
return ETaskResult.StillRunning;
logger.LogDebug("{Action} key {KeyCode:X2}",
definition.Type == NativeMethods.WM_KEYDOWN ? "Pressing" : "Releasing", definition.Key);
NativeMethods.SendMessage((nint)Device.Instance()->hWnd, definition.Type, definition.Key, nint.Zero);
return ETaskResult.StillRunning;
}
return base.Update();
}
protected override ETaskResult UpdateInternal()
{
if (condition[ConditionFlag.Diving])
return ETaskResult.TaskComplete;
if (_attempts >= 3)
throw new TaskException("Please dive manually.");
Descend();
_attempts++;
return ETaskResult.StillRunning;
}
private unsafe void Descend()
{
var keybind = new UIInputData.Keybind();
var keyName = Utf8String.FromString("MOVE_DESCENT");
var inputData = UIInputData.Instance();
inputData->GetKeybind(keyName, &keybind);
logger.LogInformation("Dive keybind: {Key1} + {Modifier1}, {Key2} + {Modifier2}", keybind.Key,
keybind.Modifier, keybind.AltKey, keybind.AltModifier);
// find the shortest of the two key combinations to press
List<List<nint>?> availableKeys =
[GetKeysToPress(keybind.Key, keybind.Modifier), GetKeysToPress(keybind.AltKey, keybind.AltModifier)];
List<nint>? realKeys = availableKeys.Where(x => x != null).Select(x => x!).MinBy(x => x.Count);
if (realKeys == null || realKeys.Count == 0)
throw new TaskException("No useable keybind found for diving");
foreach (var key in realKeys)
{
_keysToPress.Enqueue((NativeMethods.WM_KEYDOWN, key));
_keysToPress.Enqueue((0, 0));
_keysToPress.Enqueue((0, 0));
}
for (int i = 0; i < 5; ++i)
_keysToPress.Enqueue((0, 0)); // do nothing
realKeys.Reverse();
foreach (var key in realKeys)
_keysToPress.Enqueue((NativeMethods.WM_KEYUP, key));
}
public override string ToString() => "Dive";
}
private static List<nint>? GetKeysToPress(SeVirtualKey key, ModifierFlag modifier)
{
List<nint> keys = [];
if (modifier.HasFlag(ModifierFlag.Ctrl))
keys.Add(0x11); // VK_CONTROL
if (modifier.HasFlag(ModifierFlag.Shift))
keys.Add(0x10); // VK_SHIFT
if (modifier.HasFlag(ModifierFlag.Alt))
keys.Add(0x12); // VK_MENU
nint mappedKey = (nint)key;
if (mappedKey == 0)
return null;
keys.Add(mappedKey);
return keys;
}
private static class NativeMethods
{
public const uint WM_KEYUP = 0x101;
public const uint WM_KEYDOWN = 0x100;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
[DefaultDllImportSearchPaths(DllImportSearchPath.System32)]
public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, nint wParam, nint lParam);
}
}

View File

@ -2,6 +2,7 @@
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game; using FFXIVClientStructs.FFXIV.Client.Game;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Questionable.Controller.Steps.Common; using Questionable.Controller.Steps.Common;
using Questionable.Model; using Questionable.Model;
using Questionable.Model.V1; using Questionable.Model.V1;
@ -19,12 +20,20 @@ internal static class Jump
ArgumentNullException.ThrowIfNull(step.JumpDestination); ArgumentNullException.ThrowIfNull(step.JumpDestination);
return serviceProvider.GetRequiredService<DoJump>() if (step.JumpDestination.Type == EJumpType.SingleJump)
{
return serviceProvider.GetRequiredService<SingleJump>()
.With(step.DataId, step.JumpDestination, step.Comment);
}
else
{
return serviceProvider.GetRequiredService<RepeatedJumps>()
.With(step.DataId, step.JumpDestination, step.Comment); .With(step.DataId, step.JumpDestination, step.Comment);
} }
} }
}
internal sealed class DoJump( internal class SingleJump(
MovementController movementController, MovementController movementController,
IClientState clientState, IClientState clientState,
IFramework framework) : ITask IFramework framework) : ITask
@ -41,9 +50,9 @@ internal static class Jump
return this; return this;
} }
public bool Start() public virtual bool Start()
{ {
float stopDistance = JumpDestination.StopDistance ?? 1f; float stopDistance = JumpDestination.CalculateStopDistance();
if ((clientState.LocalPlayer!.Position - JumpDestination.Position).Length() <= stopDistance) if ((clientState.LocalPlayer!.Position - JumpDestination.Position).Length() <= stopDistance)
return false; return false;
@ -60,7 +69,7 @@ internal static class Jump
return true; return true;
} }
public ETaskResult Update() public virtual ETaskResult Update()
{ {
if (movementController.IsPathfinding || movementController.IsPathRunning) if (movementController.IsPathfinding || movementController.IsPathRunning)
return ETaskResult.StillRunning; return ETaskResult.StillRunning;
@ -74,4 +83,48 @@ internal static class Jump
public override string ToString() => $"Jump({Comment})"; public override string ToString() => $"Jump({Comment})";
} }
internal sealed class RepeatedJumps(
MovementController movementController,
IClientState clientState,
IFramework framework,
ILogger<RepeatedJumps> logger) : SingleJump(movementController, clientState, framework)
{
private readonly IClientState _clientState = clientState;
private DateTime _continueAt = DateTime.MinValue;
private int _attempts;
public override bool Start()
{
_continueAt = DateTime.Now + TimeSpan.FromSeconds(2 * (JumpDestination.DelaySeconds ?? 0.5f));
return base.Start();
}
public override ETaskResult Update()
{
if (DateTime.Now < _continueAt)
return ETaskResult.StillRunning;
float stopDistance = JumpDestination.CalculateStopDistance();
if ((_clientState.LocalPlayer!.Position - JumpDestination.Position).Length() <= stopDistance ||
_clientState.LocalPlayer.Position.Y >= JumpDestination.Position.Y - 0.5f)
return ETaskResult.TaskComplete;
logger.LogTrace("Y-Heights for jumps: player={A}, target={B}", _clientState.LocalPlayer.Position.Y,
JumpDestination.Position.Y - 0.5f);
unsafe
{
ActionManager.Instance()->UseAction(ActionType.GeneralAction, 2);
}
++_attempts;
if (_attempts >= 50)
throw new TaskException("Tried to jump too many times, didn't reach the target");
_continueAt = DateTime.Now + TimeSpan.FromSeconds(JumpDestination.DelaySeconds ?? 0.5f);
return ETaskResult.StillRunning;
}
public override string ToString() => $"RepeatedJump({Comment})";
}
} }

View File

@ -120,7 +120,8 @@ public sealed class QuestionablePlugin : IDalamudPlugin
serviceCollection.AddTaskWithFactory<Emote.Factory, Emote.UseOnObject, Emote.Use>(); serviceCollection.AddTaskWithFactory<Emote.Factory, Emote.UseOnObject, Emote.Use>();
serviceCollection.AddTaskWithFactory<Action.Factory, Action.UseOnObject>(); serviceCollection.AddTaskWithFactory<Action.Factory, Action.UseOnObject>();
serviceCollection.AddTaskWithFactory<Interact.Factory, Interact.DoInteract>(); serviceCollection.AddTaskWithFactory<Interact.Factory, Interact.DoInteract>();
serviceCollection.AddTaskWithFactory<Jump.Factory, Jump.DoJump>(); serviceCollection.AddTaskWithFactory<Jump.Factory, Jump.SingleJump, Jump.RepeatedJumps>();
serviceCollection.AddTaskWithFactory<Dive.Factory, Dive.DoDive>();
serviceCollection.AddTaskWithFactory<Say.Factory, Say.UseChat>(); serviceCollection.AddTaskWithFactory<Say.Factory, Say.UseChat>();
serviceCollection.AddTaskWithFactory<UseItem.Factory, UseItem.UseOnGround, UseItem.UseOnObject, UseItem.Use, UseItem.UseOnPosition>(); serviceCollection.AddTaskWithFactory<UseItem.Factory, UseItem.UseOnGround, UseItem.UseOnObject, UseItem.Use, UseItem.UseOnPosition>();
serviceCollection.AddTaskWithFactory<EquipItem.Factory, EquipItem.DoEquip>(); serviceCollection.AddTaskWithFactory<EquipItem.Factory, EquipItem.DoEquip>();

View File

@ -115,7 +115,7 @@ internal sealed class CreationUtilsComponent
ImGui.BeginDisabled(!_movementController.IsNavmeshReady); ImGui.BeginDisabled(!_movementController.IsNavmeshReady);
if (!_movementController.IsPathfinding) if (!_movementController.IsPathfinding)
{ {
if (ImGui.Button("Move to Target")) if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Bullseye, "To Target"))
{ {
_movementController.NavigateTo(EMovementType.DebugWindow, _targetManager.Target.DataId, _movementController.NavigateTo(EMovementType.DebugWindow, _targetManager.Target.DataId,
_targetManager.Target.Position, _targetManager.Target.Position,