--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1001028,
+ "Position": {
+ "X": -39.84137,
+ "Y": 19.999994,
+ "Z": -4.9592285
+ },
+ "TerritoryId": 181,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1002732,
+ "Position": {
+ "X": 11.184814,
+ "Y": 20.999336,
+ "Z": 13.321045
+ },
+ "TerritoryId": 181,
+ "InteractionType": "Interact",
+ "DialogueChoices": [
+ {
+ "Type": "YesNo",
+ "Prompt": "TEXT_MANSEA001_00107_Q1_000_1",
+ "Yes": true
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1002697,
+ "Position": {
+ "X": 20.279175,
+ "Y": 40.19993,
+ "Z": -6.1189575
+ },
+ "TerritoryId": 181,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1002697,
+ "Position": {
+ "X": 20.279175,
+ "Y": 40.19993,
+ "Z": -6.1189575
+ },
+ "TerritoryId": 181,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1002698,
+ "Position": {
+ "X": 8.499207,
+ "Y": 39.505493,
+ "Z": 3.5552979
+ },
+ "TerritoryId": 181,
+ "InteractionType": "Interact",
+ "Comment": "Required to accept this Quest; should link to a QuestId"
+ },
+ {
+ "DataId": 1000969,
+ "Position": {
+ "X": 7.9193726,
+ "Y": 40.000175,
+ "Z": 17.471558
+ },
+ "TerritoryId": 181,
+ "InteractionType": "Interact",
+ "DialogueChoices": [
+ {
+ "Type": "YesNo",
+ "ExcelSheet": "quest/001/ManSea001_00107",
+ "Prompt": "TEXT_MANSEA001_00107_Q1_000_1",
+ "Yes": true
+ }
+ ]
+ },
+ {
+ "DataId": 2001563,
+ "Position": {
+ "X": 3.616333,
+ "Y": 20.004517,
+ "Z": 9.750427
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "$": "Making a Name: can't abandon quest; the next few entries should be run as part of a separate quest"
+ },
+ {
+ "DataId": 2001564,
+ "Position": {
+ "X": -3.0671387,
+ "Y": 20.004517,
+ "Z": 9.964111
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "$": "Making a Name: can't abandon quest"
+ },
+ {
+ "DataId": 2001565,
+ "Position": {
+ "X": -11.39856,
+ "Y": 19.97406,
+ "Z": 6.6376343
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "$": "Making a Name: can't abandon quest"
+ },
+ {
+ "DataId": 2001566,
+ "Position": {
+ "X": -18.32611,
+ "Y": 20.004517,
+ "Z": 1.7241821
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "$": "Making a Name: can't abandon quest"
+ },
+ {
+ "DataId": 2001567,
+ "Position": {
+ "X": -30.47229,
+ "Y": 19.97406,
+ "Z": 0.8086548
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "$": "Making a Name: can't abandon quest"
+ },
+ {
+ "DataId": 2001568,
+ "Position": {
+ "X": -44.724243,
+ "Y": 20.004517,
+ "Z": -0.5036011
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "$": "Making a Name: can't abandon quest"
+ },
+ {
+ "DataId": 1003604,
+ "Position": {
+ "X": -60.44104,
+ "Y": 18.00033,
+ "Z": -4.348877
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "Comment": "Quest Turn-In (Making a Name)"
+ },
+ {
+ "DataId": 8,
+ "Position": {
+ "X": -84.031494,
+ "Y": 20.767456,
+ "Z": 0.015197754
+ },
+ "StopDistance": 10,
+ "TerritoryId": 129,
+ "InteractionType": "AttuneAetheryte",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ },
+ {
+ "DataId": 1001217,
+ "Position": {
+ "X": -140.85602,
+ "Y": 18.199999,
+ "Z": 17.013733
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ },
+ {
+ "DataId": 49,
+ "Position": {
+ "X": -213.61108,
+ "Y": 16.739136,
+ "Z": 51.80432
+ },
+ "TerritoryId": 129,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Hawkers' Alley"
+ },
+ {
+ "DataId": 43,
+ "Position": {
+ "X": -335.1645,
+ "Y": 12.619202,
+ "Z": 56.381958
+ },
+ "TerritoryId": 129,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Arcanists' Guild"
+ },
+ {
+ "DataId": 44,
+ "Position": {
+ "X": -179.40033,
+ "Y": 4.8065186,
+ "Z": 182.97095
+ },
+ "TerritoryId": 129,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Fishermens' Guild",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Arcanists' Guild",
+ "[Limsa Lominsa] Hawkers' Alley"
+ ]
+ },
+ {
+ "Position": {
+ "X": -83.8817,
+ "Y": 18.475962,
+ "Z": -29.903847
+ },
+ "TerritoryId": 129,
+ "InteractionType": "WalkTo",
+ "TargetTerritoryId": 128,
+ "Comment": "Walk to Culinarians' Guild",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Fishermens' Guild",
+ "[Limsa Lominsa] Aetheryte Plaza"
+ ]
+ },
+ {
+ "DataId": 42,
+ "Position": {
+ "X": -56.50421,
+ "Y": 44.47998,
+ "Z": -131.45648
+ },
+ "TerritoryId": 128,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Culinarians' Guild"
+ },
+ {
+ "DataId": 48,
+ "Position": {
+ "X": -5.1728516,
+ "Y": 44.63257,
+ "Z": -218.06671
+ },
+ "TerritoryId": 128,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Marauders' Guild"
+ },
+ {
+ "DataId": 1000926,
+ "Position": {
+ "X": -10.055725,
+ "Y": 44.999794,
+ "Z": -245.80762
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "Comment": "MRD Receptionist",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1000926,
+ "Position": {
+ "X": -10.055725,
+ "Y": 44.999794,
+ "Z": -245.80762
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "Comment": "Pick up Class Quest"
+ },
+ {
+ "DataId": 1000972,
+ "Position": {
+ "X": 20.279175,
+ "Y": 40.19993,
+ "Z": -6.1189575
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1002697,
+ "Position": {
+ "X": 20.279175,
+ "Y": 40.19993,
+ "Z": -6.1189575
+ },
+ "TerritoryId": 181,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1002698,
+ "Position": {
+ "X": 8.499207,
+ "Y": 39.505493,
+ "Z": 3.5552979
+ },
+ "TerritoryId": 181,
+ "InteractionType": "Interact",
+ "Comment": "Required to accept this Quest; should link to a QuestId"
+ },
+ {
+ "DataId": 1000969,
+ "Position": {
+ "X": 7.9193726,
+ "Y": 40.000175,
+ "Z": 17.471558
+ },
+ "TerritoryId": 181,
+ "InteractionType": "Interact",
+ "DialogueChoices": [
+ {
+ "Type": "YesNo",
+ "ExcelSheet": "quest/001/ManSea001_00107",
+ "Prompt": "TEXT_MANSEA001_00107_Q1_000_1",
+ "Yes": true
+ }
+ ]
+ },
+ {
+ "DataId": 2001563,
+ "Position": {
+ "X": 3.616333,
+ "Y": 20.004517,
+ "Z": 9.750427
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "$": "Making a Name: can't abandon quest; the next few entries should be run as part of a separate quest"
+ },
+ {
+ "DataId": 2001564,
+ "Position": {
+ "X": -3.0671387,
+ "Y": 20.004517,
+ "Z": 9.964111
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "$": "Making a Name: can't abandon quest"
+ },
+ {
+ "DataId": 2001565,
+ "Position": {
+ "X": -11.39856,
+ "Y": 19.97406,
+ "Z": 6.6376343
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "$": "Making a Name: can't abandon quest"
+ },
+ {
+ "DataId": 2001566,
+ "Position": {
+ "X": -18.32611,
+ "Y": 20.004517,
+ "Z": 1.7241821
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "$": "Making a Name: can't abandon quest"
+ },
+ {
+ "DataId": 2001567,
+ "Position": {
+ "X": -30.47229,
+ "Y": 19.97406,
+ "Z": 0.8086548
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "$": "Making a Name: can't abandon quest"
+ },
+ {
+ "DataId": 2001568,
+ "Position": {
+ "X": -44.724243,
+ "Y": 20.004517,
+ "Z": -0.5036011
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "$": "Making a Name: can't abandon quest"
+ },
+ {
+ "DataId": 1003604,
+ "Position": {
+ "X": -60.44104,
+ "Y": 18.00033,
+ "Z": -4.348877
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "Comment": "Quest Turn-In (Making a Name)"
+ },
+ {
+ "DataId": 8,
+ "Position": {
+ "X": -84.031494,
+ "Y": 20.767456,
+ "Z": 0.015197754
+ },
+ "StopDistance": 10,
+ "TerritoryId": 129,
+ "InteractionType": "AttuneAetheryte",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ },
+ {
+ "DataId": 1001217,
+ "Position": {
+ "X": -140.85602,
+ "Y": 18.199999,
+ "Z": 17.013733
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ },
+ {
+ "DataId": 49,
+ "Position": {
+ "X": -213.61108,
+ "Y": 16.739136,
+ "Z": 51.80432
+ },
+ "TerritoryId": 129,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Hawkers' Alley"
+ },
+ {
+ "DataId": 43,
+ "Position": {
+ "X": -335.1645,
+ "Y": 12.619202,
+ "Z": 56.381958
+ },
+ "TerritoryId": 129,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Arcanists' Guild"
+ },
+ {
+ "DataId": 1000895,
+ "Position": {
+ "X": -335.74432,
+ "Y": 12.899764,
+ "Z": 1.3884888
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "Comment": "ACN Receptionist",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1000895,
+ "Position": {
+ "X": -335.74432,
+ "Y": 12.899764,
+ "Z": 1.3884888
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "Comment": "Pick up Class Quest"
+ },
+ {
+ "DataId": 44,
+ "Position": {
+ "X": -179.40033,
+ "Y": 4.8065186,
+ "Z": 182.97095
+ },
+ "TerritoryId": 129,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Fishermens' Guild",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Arcanists' Guild",
+ "[Limsa Lominsa] Hawkers' Alley"
+ ]
+ },
+ {
+ "Position": {
+ "X": -83.8817,
+ "Y": 18.475962,
+ "Z": -29.903847
+ },
+ "TerritoryId": 129,
+ "InteractionType": "WalkTo",
+ "TargetTerritoryId": 128,
+ "Comment": "Walk to Culinarians' Guild",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Fishermens' Guild",
+ "[Limsa Lominsa] Aetheryte Plaza"
+ ]
+ },
+ {
+ "DataId": 42,
+ "Position": {
+ "X": -56.50421,
+ "Y": 44.47998,
+ "Z": -131.45648
+ },
+ "TerritoryId": 128,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Culinarians' Guild"
+ },
+ {
+ "DataId": 48,
+ "Position": {
+ "X": -5.1728516,
+ "Y": 44.63257,
+ "Z": -218.06671
+ },
+ "TerritoryId": 128,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Marauders' Guild"
+ },
+ {
+ "DataId": 1000972,
+ "Position": {
+ "X": 20.279175,
+ "Y": 40.19993,
+ "Z": -6.1189575
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1000972,
+ "Position": {
+ "X": 20.279175,
+ "Y": 40.19993,
+ "Z": -6.1189575
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1003239,
+ "Position": {
+ "X": -283.68048,
+ "Y": 10.593393,
+ "Z": -249.34778
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] The Aftcastle",
+ "[Limsa Lominsa] Zephyr Gate (Middle La Noscea)"
+ ]
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1003239,
+ "Position": {
+ "X": -283.68048,
+ "Y": 10.593393,
+ "Z": -249.34778
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 2001255,
+ "Position": {
+ "X": -320.57678,
+ "Y": 25.833496,
+ "Z": -527.5502
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact",
+ "Comment": "Technically triggers combat, but can be ignored"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "Position": {
+ "X": -380.10605,
+ "Y": 32.598312,
+ "Z": -608.40186
+ },
+ "TerritoryId": 134,
+ "InteractionType": "WalkTo",
+ "TargetTerritoryId": 138
+ },
+ {
+ "DataId": 13,
+ "Position": {
+ "X": 651.5449,
+ "Y": 11.734131,
+ "Z": 513.35913
+ },
+ "StopDistance": 10,
+ "TerritoryId": 138,
+ "InteractionType": "AttuneAetheryte"
+ },
+ {
+ "Position": {
+ "X": 652.74164,
+ "Y": 8.129893,
+ "Z": 522.6646
+ },
+ "TerritoryId": 138,
+ "InteractionType": "WalkTo"
+ },
+ {
+ "DataId": 1003244,
+ "Position": {
+ "X": 650.72095,
+ "Y": 7.856781,
+ "Z": 527.21436
+ },
+ "StopDistance": 6,
+ "TerritoryId": 138,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1003245,
+ "Position": {
+ "X": 655.75635,
+ "Y": 8.316303,
+ "Z": 521.1719
+ },
+ "StopDistance": 7,
+ "TerritoryId": 138,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1003246,
+ "Position": {
+ "X": 443.22876,
+ "Y": 14.645099,
+ "Z": 452.84204
+ },
+ "TerritoryId": 138,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 2001260,
+ "Position": {
+ "X": 602.50244,
+ "Y": 28.94629,
+ "Z": 361.01306
+ },
+ "TerritoryId": 138,
+ "InteractionType": "UseItem",
+ "ItemId": 2000343
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 2001261,
+ "Position": {
+ "X": 602.50244,
+ "Y": 28.976807,
+ "Z": 361.0437
+ },
+ "TerritoryId": 138,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AfterInteraction",
+ "KillEnemyDataIds": [
+ 17
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1003246,
+ "Position": {
+ "X": 443.22876,
+ "Y": 14.645099,
+ "Z": 452.84204
+ },
+ "TerritoryId": 138,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "DataId": 1003245,
+ "Position": {
+ "X": 655.75635,
+ "Y": 8.316303,
+ "Z": 521.1719
+ },
+ "TerritoryId": 138,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1001000,
+ "Position": {
+ "X": -32.028687,
+ "Y": 41.499985,
+ "Z": 208.39233
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Limsa Lominsa",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Aetheryte Plaza",
+ "[Limsa Lominsa] The Aftcastle"
+ ]
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1001000,
+ "Position": {
+ "X": -32.028687,
+ "Y": 41.499985,
+ "Z": 208.39233
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "Position": {
+ "X": 24.438343,
+ "Y": 44.499928,
+ "Z": 183.94363
+ },
+ "TerritoryId": 128,
+ "InteractionType": "WalkTo",
+ "TargetTerritoryId": 135
+ },
+ {
+ "DataId": 10,
+ "Position": {
+ "X": 156.11499,
+ "Y": 15.518433,
+ "Z": 673.21277
+ },
+ "StopDistance": 10,
+ "TerritoryId": 135,
+ "InteractionType": "AttuneAetheryte"
+ },
+ {
+ "DataId": 1002238,
+ "Position": {
+ "X": 247.36401,
+ "Y": 14.02301,
+ "Z": 611.9325
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1002238,
+ "Position": {
+ "X": 247.36401,
+ "Y": 14.02301,
+ "Z": 611.9325
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1002274,
+ "Position": {
+ "X": -34.65332,
+ "Y": 8.921356,
+ "Z": 861.4479
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Emote",
+ "Emote": "doubt"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1002238,
+ "Position": {
+ "X": 247.36401,
+ "Y": 14.02301,
+ "Z": 611.9325
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1002237,
+ "Position": {
+ "X": 167.55933,
+ "Y": 14.095915,
+ "Z": 683.92444
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1002240,
+ "Position": {
+ "X": 118.51672,
+ "Y": 23.000835,
+ "Z": 735.6831
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1002463,
+ "Position": {
+ "X": 249.89697,
+ "Y": 6.194409,
+ "Z": 773.12866
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1002237,
+ "Position": {
+ "X": 167.55933,
+ "Y": 14.095915,
+ "Z": 683.92444
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "TerritoryBlacklist": [
+ 249
+ ],
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1002237,
+ "Position": {
+ "X": 167.55933,
+ "Y": 14.095915,
+ "Z": 683.92444
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1002240,
+ "Position": {
+ "X": 118.51672,
+ "Y": 23.000835,
+ "Z": 735.6831
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "Position": {
+ "X": 106.18569,
+ "Y": 53.59632,
+ "Z": 674.99817
+ },
+ "TerritoryId": 135,
+ "InteractionType": "WalkTo"
+ },
+ {
+ "DataId": 1002651,
+ "Position": {
+ "X": 107.65234,
+ "Y": 54.64395,
+ "Z": 674.9523
+ },
+ "StopDistance": 5,
+ "TerritoryId": 135,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1002237,
+ "Position": {
+ "X": 167.55933,
+ "Y": 14.095915,
+ "Z": 683.92444
+ },
+ "TerritoryId": 135,
+ "InteractionType": "SinglePlayerDuty",
+ "AetheryteShortcut": "Lower La Noscea - Moraby Drydocks"
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1002238,
+ "Position": {
+ "X": 247.36401,
+ "Y": 14.02301,
+ "Z": 611.9325
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1002237,
+ "Position": {
+ "X": 167.55933,
+ "Y": 14.095915,
+ "Z": 683.92444
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1002274,
+ "Position": {
+ "X": -34.65332,
+ "Y": 8.921356,
+ "Z": 861.4479
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1002456,
+ "Position": {
+ "X": -94.86542,
+ "Y": 2.3717625,
+ "Z": 734.2793
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 2000769,
+ "Position": {
+ "X": -145.09808,
+ "Y": 1.0527954,
+ "Z": 709.10205
+ },
+ "StopDistance": 4,
+ "TerritoryId": 135,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ },
+ {
+ "DataId": 2000770,
+ "Position": {
+ "X": -185.68707,
+ "Y": -0.13739014,
+ "Z": 694.6669
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ },
+ {
+ "DataId": 2000771,
+ "Position": {
+ "X": -168.84113,
+ "Y": 1.9683228,
+ "Z": 659.327
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1002456,
+ "Position": {
+ "X": -94.86542,
+ "Y": 2.3717625,
+ "Z": 734.2793
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1002238,
+ "Position": {
+ "X": 247.36401,
+ "Y": 14.02301,
+ "Z": 611.9325
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Lower La Noscea - Moraby Drydocks"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1000972,
+ "Position": {
+ "X": 20.279175,
+ "Y": 40.19993,
+ "Z": -6.1189575
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 41,
+ "Position": {
+ "X": 16.067688,
+ "Y": 40.787354,
+ "Z": 68.80286
+ },
+ "TerritoryId": 128,
+ "InteractionType": "AttuneAethernetShard"
+ },
+ {
+ "DataId": 52,
+ "Position": {
+ "X": 227.98499,
+ "Y": 115.526,
+ "Z": -257.0382
+ },
+ "StopDistance": 10,
+ "TerritoryId": 134,
+ "InteractionType": "AttuneAetheryte",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] The Aftcastle",
+ "[Limsa Lominsa] Zephyr Gate (Middle La Noscea)"
+ ]
+ },
+ {
+ "DataId": 1002626,
+ "Position": {
+ "X": 207.2633,
+ "Y": 112.860374,
+ "Z": -222.43079
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1002626,
+ "Position": {
+ "X": 207.2633,
+ "Y": 112.860374,
+ "Z": -222.43079
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1002626,
+ "Position": {
+ "X": 207.2633,
+ "Y": 112.860374,
+ "Z": -222.43079
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact",
+ "Comment": "All starting gear (except the hat) is ilvl 5 already"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1002626,
+ "Position": {
+ "X": 207.2633,
+ "Y": 112.860374,
+ "Z": -222.43079
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "Position": {
+ "X": 200.59262,
+ "Y": 109.63514,
+ "Z": -268.2013
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Jump",
+ "JumpDestination": {
+ "Position": {
+ "X": 198.45822,
+ "Y": 101.082535,
+ "Z": -274.90256
+ },
+ "StopDistance": 3
+ },
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ -8
+ ]
+ },
+ {
+ "DataId": 1002639,
+ "Position": {
+ "X": 197.16174,
+ "Y": 101.098366,
+ "Z": -273.57898
+ },
+ "StopDistance": 5,
+ "TerritoryId": 134,
+ "InteractionType": "Interact",
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_SUBSEA053_00465_Q4_000_1",
+ "Answer": "TEXT_SUBSEA053_00465_A4_000_2"
+ }
+ ],
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 8
+ ]
+ },
+ {
+ "DataId": 1002638,
+ "Position": {
+ "X": 169.35986,
+ "Y": 93.96625,
+ "Z": -191.36346
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact",
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_SUBSEA053_00465_Q3_000_1",
+ "Answer": "TEXT_SUBSEA053_00465_A3_000_1"
+ }
+ ],
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 16
+ ]
+ },
+ {
+ "DataId": 1002637,
+ "Position": {
+ "X": 94.46863,
+ "Y": 66.13388,
+ "Z": -257.52655
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact",
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_SUBSEA053_00465_Q2_000_1",
+ "Answer": "TEXT_SUBSEA053_00465_A2_000_1"
+ }
+ ],
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
+ },
+ {
+ "DataId": 1002636,
+ "Position": {
+ "X": 17.746216,
+ "Y": 60.791252,
+ "Z": -269.91687
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact",
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_SUBSEA053_00465_Q1_000_1",
+ "Answer": "TEXT_SUBSEA053_00465_A1_000_1"
+ }
+ ],
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ },
+ {
+ "DataId": 1002635,
+ "Position": {
+ "X": 33.829224,
+ "Y": 54.646034,
+ "Z": -150.31665
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1002626,
+ "Position": {
+ "X": 207.2633,
+ "Y": 112.860374,
+ "Z": -222.43079
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1002626,
+ "Position": {
+ "X": 207.2633,
+ "Y": 112.860374,
+ "Z": -222.43079
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1002640,
+ "Position": {
+ "X": 131.09021,
+ "Y": 45.70909,
+ "Z": 134.44714
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Emote",
+ "Emote": "doubt"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "Position": {
+ "X": 189.7694,
+ "Y": 46.25815,
+ "Z": 121.13219
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [
+ 52
+ ]
+ },
+ {
+ "DataId": 1002643,
+ "Position": {
+ "X": 194.44568,
+ "Y": 46.41682,
+ "Z": 119.21863
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
+ },
+ {
+ "DataId": 1002642,
+ "Position": {
+ "X": 192.52307,
+ "Y": 46.299305,
+ "Z": 122.11792
+ },
+ "StopDistance": 7,
+ "TerritoryId": 134,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ },
+ {
+ "DataId": 1002641,
+ "Position": {
+ "X": 190.875,
+ "Y": 46.324783,
+ "Z": 118.30322
+ },
+ "StopDistance": 7,
+ "TerritoryId": 134,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1002640,
+ "Position": {
+ "X": 131.09021,
+ "Y": 45.70909,
+ "Z": 134.44714
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 2001279,
+ "Position": {
+ "X": 132.7992,
+ "Y": 45.76172,
+ "Z": 134.93542
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "DataId": 1002630,
+ "Position": {
+ "X": 179.85803,
+ "Y": 64.61002,
+ "Z": 294.75854
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "Position": {
+ "X": 205.08835,
+ "Y": 111.9045,
+ "Z": -245.44336
+ },
+ "TerritoryId": 134,
+ "InteractionType": "WalkTo",
+ "AetheryteShortcut": "Middle La Noscea - Summerford Farms"
+ },
+ {
+ "DataId": 1002626,
+ "Position": {
+ "X": 207.2633,
+ "Y": 112.860374,
+ "Z": -222.43079
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1002627,
+ "Position": {
+ "X": 203.32642,
+ "Y": 111.72371,
+ "Z": -213.91626
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "Position": {
+ "X": 202.80931,
+ "Y": 111.89438,
+ "Z": -216.29411
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Jump",
+ "JumpDestination": {
+ "Position": {
+ "X": 192.77504,
+ "Y": 98.07924,
+ "Z": -211.47052
+ },
+ "StopDistance": 5
+ }
+ },
+ {
+ "DataId": 1002629,
+ "Position": {
+ "X": 52.750366,
+ "Y": 64.48143,
+ "Z": -185.71759
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 2001239,
+ "Position": {
+ "X": -132.9519,
+ "Y": 45.365112,
+ "Z": -228.93109
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
+ },
+ {
+ "DataId": 2001238,
+ "Position": {
+ "X": -121.78229,
+ "Y": 45.97534,
+ "Z": -210.83392
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ],
+ "DisableNavmesh": true
+ },
+ {
+ "DataId": 2001237,
+ "Position": {
+ "X": -129.38129,
+ "Y": 46.67737,
+ "Z": -192.52313
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ],
+ "DisableNavmesh": true
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1002631,
+ "Position": {
+ "X": 0.045776367,
+ "Y": 57.85028,
+ "Z": -308.76636
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1002631,
+ "Position": {
+ "X": 0.045776367,
+ "Y": 57.85028,
+ "Z": -308.76636
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "Position": {
+ "X": -42.099247,
+ "Y": 54.599857,
+ "Z": -262.0961
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "OverworldEnemies",
+ "KillEnemyDataIds": [
+ 348,
+ 349
+ ],
+ "Comment": "Kill Pirates/Raiders manually",
+ "$": "These flags don't exist, just want this step to not-finish",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1002631,
+ "Position": {
+ "X": 0.045776367,
+ "Y": 57.85028,
+ "Z": -308.76636
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "Position": {
+ "X": 205.08835,
+ "Y": 111.9045,
+ "Z": -245.44336
+ },
+ "TerritoryId": 134,
+ "InteractionType": "WalkTo",
+ "AetheryteShortcut": "Middle La Noscea - Summerford Farms"
+ },
+ {
+ "DataId": 1002626,
+ "Position": {
+ "X": 207.2633,
+ "Y": 112.860374,
+ "Z": -222.43079
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "TerritoryBlacklist": [
+ 272
+ ],
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1002626,
+ "Position": {
+ "X": 207.2633,
+ "Y": 112.860374,
+ "Z": -222.43079
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1002633,
+ "Position": {
+ "X": 232.56274,
+ "Y": 113.07393,
+ "Z": -240.2533
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1002645,
+ "Position": {
+ "X": -144.27411,
+ "Y": 20.32,
+ "Z": -336.32416
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1002646,
+ "Position": {
+ "X": -58.762512,
+ "Y": 12.537111,
+ "Z": -410.94073
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1002647,
+ "Position": {
+ "X": -34.866882,
+ "Y": 10.902258,
+ "Z": -432.15082
+ },
+ "TerritoryId": 134,
+ "InteractionType": "SinglePlayerDuty"
+ }
+ ]
+ },
+ {
+ "Sequence": 6,
+ "Steps": [
+ {
+ "Position": {
+ "X": 205.08835,
+ "Y": 111.9045,
+ "Z": -245.44336
+ },
+ "TerritoryId": 134,
+ "InteractionType": "WalkTo",
+ "AetheryteShortcut": "Middle La Noscea - Summerford Farms"
+ },
+ {
+ "DataId": 1002626,
+ "Position": {
+ "X": 207.2633,
+ "Y": 112.860374,
+ "Z": -222.43079
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 7,
+ "Steps": [
+ {
+ "DataId": 1002626,
+ "Position": {
+ "X": 207.2633,
+ "Y": 112.860374,
+ "Z": -222.43079
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1000972,
+ "Position": {
+ "X": 20.279175,
+ "Y": 40.19993,
+ "Z": -6.1189575
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Limsa Lominsa",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Aetheryte Plaza",
+ "[Limsa Lominsa] The Aftcastle"
+ ]
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "TerritoryBlacklist": [
+ 252
+ ],
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1002626,
+ "Position": {
+ "X": 207.2633,
+ "Y": 112.860374,
+ "Z": -222.43079
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 2001582,
+ "Position": {
+ "X": -58.640503,
+ "Y": 27.145752,
+ "Z": -141.7716
+ },
+ "TerritoryId": 134,
+ "InteractionType": "SinglePlayerDuty"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1002626,
+ "Position": {
+ "X": 207.2633,
+ "Y": 112.860374,
+ "Z": -222.43079
+ },
+ "TerritoryId": 134,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "TerritoryBlacklist": [
+ 280
+ ],
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1000972,
+ "Position": {
+ "X": 20.279175,
+ "Y": 40.19993,
+ "Z": -6.1189575
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "Position": {
+ "X": -1.9166679,
+ "Y": 44.999886,
+ "Z": -256.1519
+ },
+ "TerritoryId": 128,
+ "InteractionType": "WalkTo",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] The Aftcastle",
+ "[Limsa Lominsa] Marauders' Guild"
+ ]
+ },
+ {
+ "DataId": 1003282,
+ "Position": {
+ "X": -3.03656,
+ "Y": 48.168007,
+ "Z": -261.70752
+ },
+ "StopDistance": 7,
+ "TerritoryId": 128,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1003283,
+ "Position": {
+ "X": 668.0552,
+ "Y": 7.297715,
+ "Z": 533.1654
+ },
+ "TerritoryId": 138,
+ "InteractionType": "SinglePlayerDuty",
+ "AetheryteShortcut": "Western La Noscea - Swiftperch"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "Position": {
+ "X": -1.9166679,
+ "Y": 44.999886,
+ "Z": -256.1519
+ },
+ "TerritoryId": 128,
+ "InteractionType": "WalkTo",
+ "AetheryteShortcut": "Limsa Lominsa",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Aetheryte Plaza",
+ "[Limsa Lominsa] Marauders' Guild"
+ ]
+ },
+ {
+ "DataId": 1003282,
+ "Position": {
+ "X": -3.03656,
+ "Y": 48.168007,
+ "Z": -261.70752
+ },
+ "StopDistance": 7,
+ "TerritoryId": 128,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1000972,
+ "Position": {
+ "X": 20.279175,
+ "Y": 40.19993,
+ "Z": -6.1189575
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "TerritoryId": 128,
+ "InteractionType": "EquipItem",
+ "ItemId": 3760
+ },
+ {
+ "DataId": 1003597,
+ "Position": {
+ "X": 8.194031,
+ "Y": 39.999973,
+ "Z": 17.746216
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 129,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "ExcelSheet": "Warp",
+ "Prompt": null,
+ "Answer": 131094
+ }
+ ]
+ },
+ {
+ "DataId": 1001029,
+ "Position": {
+ "X": 9.170593,
+ "Y": 20.999403,
+ "Z": -15.213318
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 2001010,
+ "Position": {
+ "X": -0.015319824,
+ "Y": 1.449585,
+ "Z": 7.522644
+ },
+ "TerritoryId": 177,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 128
+ },
+ {
+ "DataId": 1003597,
+ "Position": {
+ "X": 8.194031,
+ "Y": 39.999973,
+ "Z": 17.746216
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 129,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "ExcelSheet": "Warp",
+ "Prompt": null,
+ "Answer": 131094
+ }
+ ]
+ },
+ {
+ "DataId": 1001029,
+ "Position": {
+ "X": 9.170593,
+ "Y": 20.999403,
+ "Z": -15.213318
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 198,
+ "DialogueChoices": [
+ {
+ "Type": "YesNo",
+ "Prompt": "TEXT_MANSEA009_00545_Q1_000_1",
+ "Yes": true
+ }
+ ]
+ },
+ {
+ "DataId": 1002694,
+ "Position": {
+ "X": -0.045776367,
+ "Y": 1.6001425,
+ "Z": -7.0039062
+ },
+ "TerritoryId": 198,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1002694,
+ "Position": {
+ "X": -0.045776367,
+ "Y": 1.6001425,
+ "Z": -7.0039062
+ },
+ "TerritoryId": 198,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 2001835,
+ "Position": {
+ "X": 0.0235393,
+ "Y": 2.330988,
+ "Z": 9.8216
+ },
+ "TerritoryId": 198,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 129
+ },
+ {
+ "DataId": 1003611,
+ "Position": {
+ "X": 9.781006,
+ "Y": 20.999247,
+ "Z": 15.0911255
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 128,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "ExcelSheet": "Warp",
+ "Prompt": null,
+ "Answer": 131093
+ }
+ ]
+ },
+ {
+ "DataId": 1000972,
+ "Position": {
+ "X": 20.279175,
+ "Y": 40.19993,
+ "Z": -6.1189575
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1003597,
+ "Position": {
+ "X": 8.194031,
+ "Y": 39.999973,
+ "Z": 17.746216
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 128,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "ExcelSheet": "Warp",
+ "Prompt": null,
+ "Answer": 131092
+ }
+ ]
+ },
+ {
+ "DataId": 1002695,
+ "Position": {
+ "X": -25.92511,
+ "Y": 91.999954,
+ "Z": -3.6774292
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "DialogueChoices": [
+ {
+ "Type": "YesNo",
+ "Prompt": "TEXT_MANSEA200_00546_Q1_000_1",
+ "Yes": true
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 2001668,
+ "Position": {
+ "X": -11.10527,
+ "Y": 92.04318,
+ "Z": 17.18466
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "DialogueChoices": [
+ {
+ "Type": "YesNo",
+ "Prompt": "TEXT_MANSEA200_00546_Q3_000_1",
+ "Yes": true
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1000109,
+ "Position": {
+ "X": 29.770264,
+ "Y": -19.000002,
+ "Z": 114.12219
+ },
+ "TerritoryId": 132,
+ "InteractionType": "Interact",
+ "DialogueChoices": [
+ {
+ "Type": "YesNo",
+ "Prompt": "TEXT_MANSEA200_00546_Q7_000_1",
+ "Yes": true
+ }
+ ],
+ "Comment": "Gridania Arrivals Attendant"
+ },
+ {
+ "DataId": 1002830,
+ "Position": {
+ "X": 36.63684,
+ "Y": -18.800003,
+ "Z": 89.64673
+ },
+ "TerritoryId": 132,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "DataId": 2,
+ "Position": {
+ "X": 32.913696,
+ "Y": 2.670288,
+ "Z": 30.014404
+ },
+ "StopDistance": 10,
+ "TerritoryId": 132,
+ "InteractionType": "AttuneAetheryte"
+ },
+ {
+ "DataId": 25,
+ "Position": {
+ "X": 166.58276,
+ "Y": -1.7243042,
+ "Z": 86.13721
+ },
+ "TerritoryId": 132,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Archers' Guild"
+ },
+ {
+ "Position": {
+ "X": 12.761639,
+ "Y": 1.2659149,
+ "Z": -18.021421
+ },
+ "TerritoryId": 132,
+ "InteractionType": "WalkTo",
+ "TargetTerritoryId": 133,
+ "AethernetShortcut": [
+ "[Gridania] Archers' Guild",
+ "[Gridania] Aetheryte Plaza"
+ ]
+ },
+ {
+ "DataId": 26,
+ "Position": {
+ "X": 101.27405,
+ "Y": 9.018005,
+ "Z": -111.31464
+ },
+ "TerritoryId": 133,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Leatherworkers' Guild"
+ },
+ {
+ "DataId": 27,
+ "Position": {
+ "X": 121.23291,
+ "Y": 12.649658,
+ "Z": -229.63306
+ },
+ "TerritoryId": 133,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Lancers' Guild"
+ },
+ {
+ "DataId": 30,
+ "Position": {
+ "X": -73.92999,
+ "Y": 7.9804688,
+ "Z": -140.15417
+ },
+ "TerritoryId": 133,
+ "InteractionType": "AttuneAethernetShard",
+ "AethernetShortcut": [
+ "[Gridania] Lancers' Guild",
+ "[Gridania] Leatherworkers' Guild & Shaded Bower"
+ ],
+ "Comment": "Mih Khetto's Amphitheatre"
+ },
+ {
+ "Position": {
+ "X": -174.09056,
+ "Y": 10.91981,
+ "Z": -162.12527
+ },
+ "TerritoryId": 133,
+ "InteractionType": "WalkTo"
+ },
+ {
+ "DataId": 29,
+ "Position": {
+ "X": -311.0857,
+ "Y": 7.94989,
+ "Z": -177.05048
+ },
+ "TerritoryId": 133,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Botanists' Guild"
+ },
+ {
+ "DataId": 28,
+ "Position": {
+ "X": -145.15906,
+ "Y": 4.9591064,
+ "Z": -11.7647705
+ },
+ "TerritoryId": 133,
+ "InteractionType": "AttuneAethernetShard",
+ "AethernetShortcut": [
+ "[Gridania] Botanists' Guild",
+ "[Gridania] Mih Khetto's Amphitheatre"
+ ],
+ "Comment": "Conjurers' Guild"
+ },
+ {
+ "DataId": 1000460,
+ "Position": {
+ "X": -159.41101,
+ "Y": 4.054107,
+ "Z": -4.1047363
+ },
+ "TerritoryId": 133,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 6,
+ "Steps": [
+ {
+ "DataId": 1000106,
+ "Position": {
+ "X": 29.007324,
+ "Y": -19.000002,
+ "Z": 105.485596
+ },
+ "TerritoryId": 132,
+ "InteractionType": "Interact",
+ "AethernetShortcut": [
+ "[Gridania] Conjurers' Guild",
+ "[Gridania] Airship Landing"
+ ],
+ "DialogueChoices": [
+ {
+ "Type": "YesNo",
+ "Prompt": "TEXT_MANSEA200_00546_Q5_000_1",
+ "Yes": true
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 7,
+ "Steps": [
+ {
+ "DataId": 2001671,
+ "Position": {
+ "X": 7.156433,
+ "Y": -21.957764,
+ "Z": 123.73535
+ },
+ "TerritoryId": 132,
+ "InteractionType": "Interact",
+ "DialogueChoices": [
+ {
+ "Type": "YesNo",
+ "Prompt": "TEXT_MANSEA200_00546_Q3_000_1",
+ "Yes": true
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 8,
+ "Steps": [
+ {
+ "DataId": 1004434,
+ "Position": {
+ "X": -27.17633,
+ "Y": 83.19998,
+ "Z": 2.304016
+ },
+ "TerritoryId": 130,
+ "InteractionType": "Interact",
+ "DialogueChoices": [
+ {
+ "Type": "YesNo",
+ "Prompt": "TEXT_MANSEA200_00546_Q7_000_1",
+ "Yes": true
+ }
+ ],
+ "Comment": "Ul'dah Arrivals Attendant"
+ },
+ {
+ "DataId": 1004336,
+ "Position": {
+ "X": -12.619263,
+ "Y": 82.99987,
+ "Z": 4.562378
+ },
+ "TerritoryId": 130,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1004339,
+ "Position": {
+ "X": -25.986206,
+ "Y": 81.799995,
+ "Z": -31.99823
+ },
+ "TerritoryId": 130,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 131,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "ExcelSheet": "Warp",
+ "Prompt": null,
+ "Answer": 131096
+ }
+ ]
+ },
+ {
+ "DataId": 51,
+ "Position": {
+ "X": 6.6376343,
+ "Y": 30.655273,
+ "Z": -24.826477
+ },
+ "TerritoryId": 131,
+ "InteractionType": "AttuneAethernetShard"
+ },
+ {
+ "DataId": 1001821,
+ "Position": {
+ "X": -24.124573,
+ "Y": 38.000004,
+ "Z": 85.31323
+ },
+ "TerritoryId": 131,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "$": "This is the follow-up quest for both Lominsan Envoy & Gridanian Envoy (Ul'dahn Envoy has a quest with the same name, but different id)",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1001821,
+ "Position": {
+ "X": -24.124573,
+ "Y": 38.000004,
+ "Z": 85.31323
+ },
+ "TerritoryId": 131,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 37,
+ "Position": {
+ "X": -98.22869,
+ "Y": 42.37336,
+ "Z": 88.46719
+ },
+ "TerritoryId": 131,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Alchemists' Guild"
+ },
+ {
+ "Position": {
+ "X": 5.7796226,
+ "Y": 30,
+ "Z": -21.571625
+ },
+ "TerritoryId": 131,
+ "InteractionType": "Jump",
+ "JumpDestination": {
+ "Position": {
+ "X": 3.6504946,
+ "Y": 14.688499,
+ "Z": -13.443354
+ },
+ "StopDistance": 5
+ },
+ "AethernetShortcut": [
+ "[Ul'dah] Alchemists' Guild",
+ "[Ul'dah] The Chamber of Rule"
+ ]
+ },
+ {
+ "DataId": 35,
+ "Position": {
+ "X": -53.8269,
+ "Y": 10.72502,
+ "Z": 12.24082
+ },
+ "TerritoryId": 131,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Gladiators' Guild"
+ },
+ {
+ "DataId": 50,
+ "Position": {
+ "X": -19.31449,
+ "Y": 14.63075,
+ "Z": 72.0533
+ },
+ "TerritoryId": 131,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Goldsmiths' Guild"
+ },
+ {
+ "DataId": 36,
+ "Position": {
+ "X": 33.52188,
+ "Y": 13.23228,
+ "Z": 113.2191
+ },
+ "TerritoryId": 131,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Miners' Guild"
+ },
+ {
+ "DataId": 47,
+ "Position": {
+ "X": 89.67633,
+ "Y": 12.93493,
+ "Z": 58.2767
+ },
+ "TerritoryId": 131,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Weavers' Guild"
+ },
+ {
+ "DataId": 125,
+ "Position": {
+ "X": 131.9447,
+ "Y": 4.714966,
+ "Z": -29.800903
+ },
+ "TerritoryId": 131,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Sapphire Avenue Exchange"
+ },
+ {
+ "Position": {
+ "X": 88.335236,
+ "Y": 4,
+ "Z": -110.905876
+ },
+ "TerritoryId": 131,
+ "InteractionType": "WalkTo",
+ "TargetTerritoryId": 130
+ },
+ {
+ "DataId": 33,
+ "Position": {
+ "X": 64.22522,
+ "Y": 4.5318604,
+ "Z": -115.31244
+ },
+ "TerritoryId": 130,
+ "InteractionType": "AttuneAethernetShard",
+ "Comment": "Adventurers' Guild"
+ },
+ {
+ "DataId": 9,
+ "Position": {
+ "X": -144.51825,
+ "Y": -1.3580933,
+ "Z": -169.6651
+ },
+ "StopDistance": 10,
+ "TerritoryId": 130,
+ "InteractionType": "AttuneAetheryte"
+ },
+ {
+ "DataId": 34,
+ "Position": {
+ "X": -154.83331,
+ "Y": 14.633362,
+ "Z": 73.07532
+ },
+ "TerritoryId": 130,
+ "InteractionType": "AttuneAethernetShard"
+ },
+ {
+ "DataId": 1000972,
+ "Position": {
+ "X": 20.279175,
+ "Y": 40.19993,
+ "Z": -6.1189575
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Limsa Lominsa",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Aetheryte Plaza",
+ "[Limsa Lominsa] The Aftcastle"
+ ]
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1002237,
+ "Position": {
+ "X": 167.55933,
+ "Y": 14.095915,
+ "Z": 683.92444
+ },
+ "TerritoryId": 135,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1000972,
+ "Position": {
+ "X": 20.279175,
+ "Y": 40.19993,
+ "Z": -6.1189575
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Limsa Lominsa",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Aetheryte Plaza",
+ "[Limsa Lominsa] The Aftcastle"
+ ]
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1003282,
+ "Position": {
+ "X": -3.03656,
+ "Y": 48.168007,
+ "Z": -261.70752
+ },
+ "StopDistance": 7,
+ "TerritoryId": 128,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1000972,
+ "Position": {
+ "X": 20.279175,
+ "Y": 40.19993,
+ "Z": -6.1189575
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Marauders' Guild",
+ "[Limsa Lominsa] The Aftcastle"
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1003597,
+ "Position": {
+ "X": 8.194031,
+ "Y": 39.999973,
+ "Z": 17.746216
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 129,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "ExcelSheet": "Warp",
+ "Prompt": null,
+ "Answer": 131094
+ }
+ ]
+ },
+ {
+ "DataId": 1003355,
+ "Position": {
+ "X": -60.868286,
+ "Y": 18.000334,
+ "Z": 7.4921875
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1003611,
+ "Position": {
+ "X": 9.781006,
+ "Y": 20.999247,
+ "Z": 15.0911255
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 128,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "ExcelSheet": "Warp",
+ "Prompt": null,
+ "Answer": 131093
+ }
+ ]
+ },
+ {
+ "DataId": 1000972,
+ "Position": {
+ "X": 20.279175,
+ "Y": 40.19993,
+ "Z": -6.1189575
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "TerritoryBlacklist": [
+ 1036
+ ],
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1000972,
+ "Position": {
+ "X": 20.279175,
+ "Y": 40.19993,
+ "Z": -6.1189575
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1005411,
+ "Position": {
+ "X": 13.412659,
+ "Y": 40.2,
+ "Z": -13.260071
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "Comment": "Accepting 'Rising to the Challenge'"
+ },
+ {
+ "DataId": 1003598,
+ "Position": {
+ "X": -12.069946,
+ "Y": 40.00053,
+ "Z": 11.459534
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "Comment": "'Rising to the Challenge'"
+ },
+ {
+ "DataId": 1005410,
+ "Position": {
+ "X": -182.45215,
+ "Y": 1.9999955,
+ "Z": 208.75867
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "Comment": "'Rising to the Challenge'",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] The Aftcastle",
+ "[Limsa Lominsa] Fishermens' Guild"
+ ]
+ },
+ {
+ "DataId": 1003621,
+ "Position": {
+ "X": -192.0653,
+ "Y": 0.9999907,
+ "Z": 208.66711
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1000868,
+ "Position": {
+ "X": -192.00433,
+ "Y": 0.9999907,
+ "Z": 211.68835
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 138,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "ExcelSheet": "Warp",
+ "Prompt": null,
+ "Answer": 131109
+ }
+ ]
+ },
+ {
+ "DataId": 14,
+ "Position": {
+ "X": 260.94446,
+ "Y": -19.60791,
+ "Z": 218.52441
+ },
+ "StopDistance": 10,
+ "TerritoryId": 138,
+ "InteractionType": "AttuneAetheryte"
+ },
+ {
+ "DataId": 1017075,
+ "Position": {
+ "X": 356.5575,
+ "Y": -15.97664,
+ "Z": 136.73608
+ },
+ "TerritoryId": 138,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1004472,
+ "Position": {
+ "X": 335.40857,
+ "Y": 9.635179,
+ "Z": 17.135864
+ },
+ "TerritoryId": 138,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "TerritoryId": 138,
+ "InteractionType": "Duty",
+ "ContentFinderConditionId": 4
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1000972,
+ "Position": {
+ "X": 20.279175,
+ "Y": 40.19993,
+ "Z": -6.1189575
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Limsa Lominsa",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Aetheryte Plaza",
+ "[Limsa Lominsa] The Aftcastle"
+ ]
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1005116,
+ "Position": {
+ "X": 39.29187,
+ "Y": 1.2148079,
+ "Z": 0.8086548
+ },
+ "TerritoryId": 212,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1001426,
+ "Position": {
+ "X": 123.33862,
+ "Y": 30.999996,
+ "Z": -384.9394
+ },
+ "TerritoryId": 141,
+ "InteractionType": "Interact",
+ "Comment": "'Forging the Spirit'"
+ },
+ {
+ "DataId": 1001426,
+ "Position": {
+ "X": 123.33862,
+ "Y": 30.999996,
+ "Z": -384.9394
+ },
+ "TerritoryId": 141,
+ "InteractionType": "Interact",
+ "Comment": "Quest Turn-In 'Forging the Spirit'"
+ },
+ {
+ "DataId": 1001425,
+ "Position": {
+ "X": 115.12927,
+ "Y": 31.876099,
+ "Z": -392.2027
+ },
+ "TerritoryId": 141,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "TerritoryId": 145,
+ "InteractionType": "UseItem",
+ "ItemId": 30362,
+ "TargetTerritoryId": 140
+ },
+ {
+ "Position": {
+ "X": -492.96475,
+ "Y": 20.999884,
+ "Z": -380.82272
+ },
+ "TerritoryId": 140,
+ "InteractionType": "WalkTo"
+ },
+ {
+ "DataId": 2001711,
+ "Position": {
+ "X": -480.9181,
+ "Y": 18.00103,
+ "Z": -386.862
+ },
+ "TerritoryId": 140,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 212
+ },
+ {
+ "DataId": 2001715,
+ "Position": {
+ "X": 23.23944,
+ "Y": 2.090454,
+ "Z": -0.015319824
+ },
+ "TerritoryId": 212,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 212
+ },
+ {
+ "DataId": 1005116,
+ "Position": {
+ "X": 39.29187,
+ "Y": 1.2148079,
+ "Z": 0.8086548
+ },
+ "TerritoryId": 212,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "TerritoryBlacklist": [
+ 275,
+ 1045
+ ],
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1005116,
+ "Position": {
+ "X": 39.29187,
+ "Y": 1.2148079,
+ "Z": 0.8086548
+ },
+ "TerritoryId": 212,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1004584,
+ "Position": {
+ "X": -360.83014,
+ "Y": -55.35,
+ "Z": 145.49475
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Eastern Thanalan - Camp Drybone"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 2001592,
+ "Position": {
+ "X": -356.71014,
+ "Y": -10.421997,
+ "Z": -242.51166
+ },
+ "TerritoryId": 145,
+ "InteractionType": "SinglePlayerDuty"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1005017,
+ "Position": {
+ "X": -63.157104,
+ "Y": -25.215523,
+ "Z": -554.6502
+ },
+ "TerritoryId": 146,
+ "InteractionType": "Interact",
+ "DisableNavmesh": true,
+ "$": "Fun fact: This is underground in Southern Thanalan (including mobs, fates, etc.), and will build the navmesh for the entire zone"
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "TerritoryId": 146,
+ "InteractionType": "Duty",
+ "ContentFinderConditionId": 56
+ }
+ ]
+ },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "DataId": 1005156,
+ "Position": {
+ "X": -372.73218,
+ "Y": -57.07999,
+ "Z": 151.04907
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "TerritoryId": 145,
+ "InteractionType": "UseItem",
+ "ItemId": 30362,
+ "TargetTerritoryId": 140
+ },
+ {
+ "Position": {
+ "X": -492.96475,
+ "Y": 20.999884,
+ "Z": -380.82272
+ },
+ "TerritoryId": 140,
+ "InteractionType": "WalkTo"
+ },
+ {
+ "DataId": 2001711,
+ "Position": {
+ "X": -480.9181,
+ "Y": 18.00103,
+ "Z": -386.862
+ },
+ "TerritoryId": 140,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 212
+ },
+ {
+ "DataId": 1005012,
+ "Position": {
+ "X": 22.507019,
+ "Y": 0.9999986,
+ "Z": -2.02948
+ },
+ "TerritoryId": 212,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1001353,
+ "Position": {
+ "X": 21.072632,
+ "Y": 7.45,
+ "Z": -78.78235
+ },
+ "TerritoryId": 130,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1004603,
+ "Position": {
+ "X": -489.8299,
+ "Y": 21.48999,
+ "Z": -381.97913
+ },
+ "TerritoryId": 140,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Western Thanalan - Horizon"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 2001711,
+ "Position": {
+ "X": -480.9181,
+ "Y": 18.00103,
+ "Z": -386.862
+ },
+ "TerritoryId": 140,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 212
+ },
+ {
+ "DataId": 1005012,
+ "Position": {
+ "X": 22.507019,
+ "Y": 0.9999986,
+ "Z": -2.02948
+ },
+ "TerritoryId": 212,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1003783,
+ "Position": {
+ "X": 39.29187,
+ "Y": 1.2148079,
+ "Z": 0.8086548
+ },
+ "StopDistance": 5,
+ "TerritoryId": 212,
+ "InteractionType": "Interact",
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_MANFST207_00510_Q1_000_1",
+ "Answer": "TEXT_MANFST207_00510_A1_000_1"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1005119,
+ "Position": {
+ "X": 33.37146,
+ "Y": 1.1999971,
+ "Z": 6.454529
+ },
+ "TerritoryId": 212,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 53,
+ "Position": {
+ "X": -16.159302,
+ "Y": 0.32037354,
+ "Z": -166.58276
+ },
+ "TerritoryId": 141,
+ "InteractionType": "AttuneAetheryte",
+ "AetheryteShortcut": "Ul'dah",
+ "AethernetShortcut": [
+ "[Ul'dah] Aetheryte Plaza",
+ "[Ul'dah] Gate of Nald (Central Thanalan)"
+ ]
+ },
+ {
+ "Position": {
+ "X": 454.0109,
+ "Y": -17.999832,
+ "Z": -183.1808
+ },
+ "TerritoryId": 141,
+ "InteractionType": "WalkTo",
+ "TargetTerritoryId": 145
+ },
+ {
+ "DataId": 18,
+ "Position": {
+ "X": -386.3432,
+ "Y": -57.1756,
+ "Z": 142.59558
+ },
+ "TerritoryId": 145,
+ "InteractionType": "AttuneAetheryte"
+ },
+ {
+ "DataId": 1003929,
+ "Position": {
+ "X": -378.65265,
+ "Y": -55.75492,
+ "Z": 106.79785
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1005116,
+ "Position": {
+ "X": 39.29187,
+ "Y": 1.2148079,
+ "Z": 0.8086548
+ },
+ "TerritoryId": 212,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 2001717,
+ "Position": {
+ "X": 25.497803,
+ "Y": 2.090454,
+ "Z": -0.015319824
+ },
+ "TerritoryId": 212,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 212
+ },
+ {
+ "DataId": 2001716,
+ "Position": {
+ "X": -15.701599,
+ "Y": 1.083313,
+ "Z": -0.015319824
+ },
+ "TerritoryId": 212,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 140
+ },
+ {
+ "DataId": 1003785,
+ "Position": {
+ "X": -489.8299,
+ "Y": 21.48999,
+ "Z": -381.97913
+ },
+ "TerritoryId": 140,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 2001691,
+ "Position": {
+ "X": -5.294922,
+ "Y": 29.984009,
+ "Z": 20.675903
+ },
+ "TerritoryId": 131,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Ul'dah",
+ "AethernetShortcut": [
+ "[Ul'dah] Aetheryte Plaza",
+ "[Ul'dah] The Chamber of Rule"
+ ],
+ "$.0": "QuestVariables if done first: 16 1 0 64 0 0",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ 64,
+ null,
+ null
+ ]
+ },
+ {
+ "DataId": 1001029,
+ "Position": {
+ "X": 9.170593,
+ "Y": 20.999403,
+ "Z": -15.213318
+ },
+ "TerritoryId": 129,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Limsa Lominsa",
+ "DialogueChoices": [
+ {
+ "Type": "YesNo",
+ "Prompt": "TEXT_MANFST300_00511_Q1_000_1",
+ "Yes": true
+ }
+ ],
+ "$.0": "QuestVariables if done after Ul'dah: 33 1 0 96 0 0",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ 32,
+ null,
+ null
+ ]
+ },
+ {
+ "DataId": 2001690,
+ "Position": {
+ "X": -49.759705,
+ "Y": 7.003784,
+ "Z": -114.82416
+ },
+ "TerritoryId": 133,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Gridania",
+ "AethernetShortcut": [
+ "[Gridania] Aetheryte Plaza",
+ "[Gridania] Mih Khetto's Amphitheatre"
+ ],
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ 128,
+ null,
+ null
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "TerritoryId": 145,
+ "InteractionType": "UseItem",
+ "ItemId": 30362,
+ "TargetTerritoryId": 140
+ },
+ {
+ "Position": {
+ "X": -492.96475,
+ "Y": 20.999884,
+ "Z": -380.82272
+ },
+ "TerritoryId": 140,
+ "InteractionType": "WalkTo"
+ },
+ {
+ "DataId": 2001711,
+ "Position": {
+ "X": -480.9181,
+ "Y": 18.00103,
+ "Z": -386.862
+ },
+ "TerritoryId": 140,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 212
+ },
+ {
+ "DataId": 2001715,
+ "Position": {
+ "X": 23.23944,
+ "Y": 2.090454,
+ "Z": -0.015319824
+ },
+ "TerritoryId": 212,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 212
+ },
+ {
+ "DataId": 1005122,
+ "Position": {
+ "X": 39.29187,
+ "Y": 1.2148079,
+ "Z": 0.8086548
+ },
+ "TerritoryId": 212,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1005128,
+ "Position": {
+ "X": 39.29187,
+ "Y": 1.2148079,
+ "Z": 0.8086548
+ },
+ "TerritoryId": 212,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1000168,
+ "Position": {
+ "X": -75.48645,
+ "Y": -0.5013741,
+ "Z": -5.081299
+ },
+ "TerritoryId": 132,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Gridania"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1003929,
+ "Position": {
+ "X": -378.65265,
+ "Y": -55.75492,
+ "Z": 106.79785
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "TerritoryId": 145,
+ "InteractionType": "EquipItem",
+ "ItemId": 2995
+ },
+ {
+ "TerritoryId": 145,
+ "InteractionType": "EquipItem",
+ "ItemId": 3306
+ },
+ {
+ "DataId": 1004327,
+ "Position": {
+ "X": -412.03937,
+ "Y": -48.15,
+ "Z": 102.61682
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
+ },
+ {
+ "Position": {
+ "X": -409.44067,
+ "Y": -48.15,
+ "Z": 101.391624
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Jump",
+ "JumpDestination": {
+ "Position": {
+ "X": -408.8825,
+ "Y": -55.764168,
+ "Z": 110.76053
+ },
+ "StopDistance": 5
+ },
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ -16
+ ]
+ },
+ {
+ "DataId": 1004506,
+ "Position": {
+ "X": -416.64764,
+ "Y": -54.15,
+ "Z": 96.42175
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 16
+ ]
+ },
+ {
+ "DataId": 1004325,
+ "Position": {
+ "X": -402.45673,
+ "Y": -57.07999,
+ "Z": 131.82263
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ },
+ {
+ "DataId": 1004556,
+ "Position": {
+ "X": -394.85773,
+ "Y": -57.30005,
+ "Z": 173.32715
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 8
+ ]
+ },
+ {
+ "DataId": 1003947,
+ "Position": {
+ "X": -369.19202,
+ "Y": -57.079987,
+ "Z": 140.0625
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1004324,
+ "Position": {
+ "X": -377.6761,
+ "Y": -55.754112,
+ "Z": 108.17114
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1004330,
+ "Position": {
+ "X": -221.45422,
+ "Y": -30.074055,
+ "Z": 200.15259
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "TerritoryId": 145,
+ "InteractionType": "UseItem",
+ "ItemId": 30362,
+ "TargetTerritoryId": 140
+ },
+ {
+ "Position": {
+ "X": -492.96475,
+ "Y": 20.999884,
+ "Z": -380.82272
+ },
+ "TerritoryId": 140,
+ "InteractionType": "WalkTo"
+ },
+ {
+ "DataId": 2001711,
+ "Position": {
+ "X": -480.9181,
+ "Y": 18.00103,
+ "Z": -386.862
+ },
+ "TerritoryId": 140,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 212
+ },
+ {
+ "DataId": 2001715,
+ "Position": {
+ "X": 23.23944,
+ "Y": 2.090454,
+ "Z": -0.015319824
+ },
+ "TerritoryId": 212,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 212
+ },
+ {
+ "DataId": 1005116,
+ "Position": {
+ "X": 39.29187,
+ "Y": 1.2148079,
+ "Z": 0.8086548
+ },
+ "TerritoryId": 212,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1003929,
+ "Position": {
+ "X": -378.65265,
+ "Y": -55.75492,
+ "Z": 106.79785
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "Position": {
+ "X": -338.71124,
+ "Y": -37.497707,
+ "Z": 243.90338
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [
+ 166
+ ]
+ },
+ {
+ "DataId": 1003943,
+ "Position": {
+ "X": -335.1645,
+ "Y": -37.195824,
+ "Z": 242.20642
+ },
+ "StopDistance": 7,
+ "TerritoryId": 145,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ },
+ {
+ "DataId": 1003944,
+ "Position": {
+ "X": -335.71375,
+ "Y": -37.370598,
+ "Z": 245.31921
+ },
+ "StopDistance": 7,
+ "TerritoryId": 145,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
+ },
+ {
+ "DataId": 1003942,
+ "Position": {
+ "X": -341.81738,
+ "Y": -37.60504,
+ "Z": 243.42712
+ },
+ "StopDistance": 7,
+ "TerritoryId": 145,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1003929,
+ "Position": {
+ "X": -378.65265,
+ "Y": -55.75492,
+ "Z": 106.79785
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1003929,
+ "Position": {
+ "X": -378.65265,
+ "Y": -55.75492,
+ "Z": 106.79785
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1003964,
+ "Position": {
+ "X": -378.53058,
+ "Y": -59.3,
+ "Z": 164.23279
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1003967,
+ "Position": {
+ "X": -392.87408,
+ "Y": -59,
+ "Z": 131.67004
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
+ },
+ {
+ "DataId": 1003966,
+ "Position": {
+ "X": -373.22046,
+ "Y": -56.798405,
+ "Z": 121.99585
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ },
+ {
+ "DataId": 1003965,
+ "Position": {
+ "X": -373.89185,
+ "Y": -55.898407,
+ "Z": 97.795044
+ },
+ "StopDistance": 7,
+ "TerritoryId": 145,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1003964,
+ "Position": {
+ "X": -378.53058,
+ "Y": -59.3,
+ "Z": 164.23279
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1003929,
+ "Position": {
+ "X": -378.65265,
+ "Y": -55.75492,
+ "Z": 106.79785
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1003929,
+ "Position": {
+ "X": -378.65265,
+ "Y": -55.75492,
+ "Z": 106.79785
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1005136,
+ "Position": {
+ "X": -522.20953,
+ "Y": -17.077162,
+ "Z": 18.966919
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 2001657,
+ "Position": {
+ "X": -541.16125,
+ "Y": -5.2644043,
+ "Z": 46.097534
+ },
+ "TerritoryId": 145,
+ "InteractionType": "UseItem",
+ "ItemId": 2000517
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 2001658,
+ "Position": {
+ "X": -541.1918,
+ "Y": -5.1728516,
+ "Z": 46.036377
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1005136,
+ "Position": {
+ "X": -522.20953,
+ "Y": -17.077162,
+ "Z": 18.966919
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "DataId": 1003969,
+ "Position": {
+ "X": -504.9363,
+ "Y": -16.22,
+ "Z": -3.7080078
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1003929,
+ "Position": {
+ "X": -378.65265,
+ "Y": -55.75492,
+ "Z": 106.79785
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1003929,
+ "Position": {
+ "X": -378.65265,
+ "Y": -55.75492,
+ "Z": 106.79785
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1003976,
+ "Position": {
+ "X": -549.0349,
+ "Y": 4.824463,
+ "Z": -266.77356
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "Position": {
+ "X": -421.59717,
+ "Y": -0.48849356,
+ "Z": -278.41507
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [
+ 18,
+ 19
+ ]
+ },
+ {
+ "DataId": 1003975,
+ "Position": {
+ "X": -418.57025,
+ "Y": -0.17093202,
+ "Z": -280.38452
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1003929,
+ "Position": {
+ "X": -378.65265,
+ "Y": -55.75492,
+ "Z": 106.79785
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Eastern Thanalan - Camp Drybone"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1003929,
+ "Position": {
+ "X": -378.65265,
+ "Y": -55.75492,
+ "Z": 106.79785
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1003977,
+ "Position": {
+ "X": -200.27472,
+ "Y": -28.350327,
+ "Z": 324.75757
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 2001410,
+ "Position": {
+ "X": -95.17059,
+ "Y": -27.023743,
+ "Z": 274.00623
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1003977,
+ "Position": {
+ "X": -200.27472,
+ "Y": -28.350327,
+ "Z": 324.75757
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1004323,
+ "Position": {
+ "X": -444.72424,
+ "Y": -55.558167,
+ "Z": 92.088135
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Eastern Thanalan - Camp Drybone"
+ }
+ ]
+ },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "DataId": 1003978,
+ "Position": {
+ "X": -442.6795,
+ "Y": -55.694504,
+ "Z": 90.92847
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1003929,
+ "Position": {
+ "X": -378.65265,
+ "Y": -55.75492,
+ "Z": 106.79785
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "TerritoryBlacklist": [
+ 1038,
+ 274
+ ],
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1001353,
+ "Position": {
+ "X": 21.072632,
+ "Y": 7.45,
+ "Z": -78.78235
+ },
+ "TerritoryId": 130,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1004621,
+ "Position": {
+ "X": 23.11737,
+ "Y": 6.9999914,
+ "Z": -86.533936
+ },
+ "TerritoryId": 130,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 17,
+ "Position": {
+ "X": 68.0094,
+ "Y": 48.203125,
+ "Z": -227.039
+ },
+ "TerritoryId": 140,
+ "InteractionType": "AttuneAetheryte",
+ "AethernetShortcut": [
+ "[Ul'dah] Adventurers' Guild",
+ "[Ul'dah] Gate of the Sultana (Western Thanalan)"
+ ]
+ },
+ {
+ "DataId": 1002285,
+ "Position": {
+ "X": 326.46667,
+ "Y": 63,
+ "Z": -231.64728
+ },
+ "TerritoryId": 140,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "TerritoryId": 140,
+ "InteractionType": "Duty",
+ "ContentFinderConditionId": 3
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1004621,
+ "Position": {
+ "X": 23.11737,
+ "Y": 6.9999914,
+ "Z": -86.533936
+ },
+ "TerritoryId": 130,
+ "InteractionType": "SinglePlayerDuty",
+ "AetheryteShortcut": "Ul'dah",
+ "AethernetShortcut": [
+ "[Ul'dah] Aetheryte Plaza",
+ "[Ul'dah] Adventurers' Guild"
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1001353,
+ "Position": {
+ "X": 21.072632,
+ "Y": 7.45,
+ "Z": -78.78235
+ },
+ "TerritoryId": 130,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1000972,
+ "Position": {
+ "X": 20.279175,
+ "Y": 40.19993,
+ "Z": -6.1189575
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1003597,
+ "Position": {
+ "X": 8.194031,
+ "Y": 39.999973,
+ "Z": 17.746216
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 128,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "ExcelSheet": "Warp",
+ "Prompt": null,
+ "Answer": 131092
+ }
+ ]
+ },
+ {
+ "DataId": 1002695,
+ "Position": {
+ "X": -25.92511,
+ "Y": 91.999954,
+ "Z": -3.6774292
+ },
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 132,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "ExcelSheet": "Warp",
+ "Prompt": null,
+ "Answer": 131106
+ }
+ ]
+ },
+ {
+ "DataId": 1000100,
+ "Position": {
+ "X": 23.819275,
+ "Y": -8,
+ "Z": 115.92273
+ },
+ "TerritoryId": 132,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "TerritoryBlacklist": [
+ 1037
+ ],
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1000100,
+ "Position": {
+ "X": 23.819275,
+ "Y": -8,
+ "Z": 115.92273
+ },
+ "TerritoryId": 132,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 3,
+ "Position": {
+ "X": 13.076904,
+ "Y": 0.56451416,
+ "Z": 35.90442
+ },
+ "StopDistance": 10,
+ "TerritoryId": 148,
+ "InteractionType": "AttuneAetheryte",
+ "AethernetShortcut": [
+ "[Gridania] Aetheryte Plaza",
+ "[Gridania] Blue Badger Gate (Central Shroud)"
+ ]
+ },
+ {
+ "DataId": 1004612,
+ "Position": {
+ "X": -114.94629,
+ "Y": -39.702168,
+ "Z": 335.46948
+ },
+ "TerritoryId": 148,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "TerritoryId": 148,
+ "InteractionType": "Duty",
+ "ContentFinderConditionId": 2
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1000100,
+ "Position": {
+ "X": 23.819275,
+ "Y": -8,
+ "Z": 115.92273
+ },
+ "TerritoryId": 132,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Gridania"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1000100,
+ "Position": {
+ "X": 23.819275,
+ "Y": -8,
+ "Z": 115.92273
+ },
+ "TerritoryId": 132,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1001353,
+ "Position": {
+ "X": 21.072632,
+ "Y": 7.45,
+ "Z": -78.78235
+ },
+ "TerritoryId": 130,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Ul'dah",
+ "AethernetShortcut": [
+ "[Ul'dah] Aetheryte Plaza",
+ "[Ul'dah] Adventurers' Guild"
+ ]
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [],
+ "Comment": "Quest start is intentionally empty, so you pick a Grand Company"
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1002388,
+ "Position": {
+ "X": 95.68933,
+ "Y": 40.250286,
+ "Z": 74.54028
+ },
+ "StopDistance": 5,
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Limsa Lominsa",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Aetheryte Plaza",
+ "[Limsa Lominsa] The Aftcastle"
+ ],
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_MANSEA302_00681_Q2_000_1",
+ "Answer": "TEXT_MANSEA302_00681_A2_000_2"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1004888,
+ "Position": {
+ "X": 389.2423,
+ "Y": 78.360275,
+ "Z": -349.05017
+ },
+ "TerritoryId": 135,
+ "InteractionType": "SinglePlayerDuty",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] The Aftcastle",
+ "[Limsa Lominsa] Tempest Gate (Lower La Noscea)"
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1002388,
+ "Position": {
+ "X": 95.68933,
+ "Y": 40.250286,
+ "Z": 74.54028
+ },
+ "StopDistance": 5,
+ "TerritoryId": 128,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Limsa Lominsa",
+ "AethernetShortcut": [
+ "[Limsa Lominsa] Aetheryte Plaza",
+ "[Limsa Lominsa] The Aftcastle"
+ ]
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1002388,
+ "Position": {
+ "X": 95.68933,
+ "Y": 40.250286,
+ "Z": 74.54028
+ },
+ "StopDistance": 5,
+ "TerritoryId": 128,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "TerritoryId": 145,
+ "InteractionType": "UseItem",
+ "ItemId": 30362,
+ "TargetTerritoryId": 140
+ },
+ {
+ "Position": {
+ "X": -492.96475,
+ "Y": 20.999884,
+ "Z": -380.82272
+ },
+ "TerritoryId": 140,
+ "InteractionType": "WalkTo"
+ },
+ {
+ "DataId": 2001711,
+ "Position": {
+ "X": -480.9181,
+ "Y": 18.00103,
+ "Z": -386.862
+ },
+ "TerritoryId": 140,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 212
+ },
+ {
+ "DataId": 1005012,
+ "Position": {
+ "X": 22.507019,
+ "Y": 0.9999986,
+ "Z": -2.02948
+ },
+ "TerritoryId": 212,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
"AetheryteShortcut": "Limsa Lominsa",
"AethernetShortcut": [
"[Limsa Lominsa] Aetheryte Plaza",
- "[Limsa Lominsa] Arcanist's Guild"
+ "[Limsa Lominsa] Arcanists' Guild"
]
}
]
{
"Sequence": 255,
"Steps": [
+ {
+ "Position": {
+ "X": -601.1813,
+ "Y": -24.48022,
+ "Z": 633.1958
+ },
+ "TerritoryId": 956,
+ "InteractionType": "WalkTo",
+ "Comment": "Avoids aggro + possible navmesh issue",
+ "Mount": true
+ },
+ {
+ "Position": {
+ "X": -596.4733,
+ "Y": -22.860794,
+ "Z": 666.64417
+ },
+ "TerritoryId": 956,
+ "InteractionType": "WalkTo",
+ "Comment": "Avoids aggro + possible navmesh issue"
+ },
{
"DataId": 2011985,
"Position": {
<PathMap Condition="$(SolutionDir) != ''">$(SolutionDir)=X:\</PathMap>
</PropertyGroup>
+ <Target Name="ZipARealmReborn" BeforeTargets="BeforeResGen" Condition="'$(Configuration)' == 'Release'">
+ <ZipDirectory SourceDirectory="$(ProjectDir)\ARealmReborn"
+ DestinationFile="$(TargetDir)\ARealmReborn.zip"
+ Overwrite="true"/>
+ </Target>
+
<Target Name="ZipShadowbringers" BeforeTargets="BeforeResGen" Condition="'$(Configuration)' == 'Release'">
<ZipDirectory SourceDirectory="$(ProjectDir)\Shadowbringers"
DestinationFile="$(TargetDir)\Shadowbringers.zip"
</Target>
<ItemGroup Condition="'$(Configuration)' == 'Release'">
+ <EmbeddedResource Include="$(TargetDir)\ARealmReborn.zip"/>
<EmbeddedResource Include="$(TargetDir)\Shadowbringers.zip"/>
<EmbeddedResource Include="$(TargetDir)\Endwalker.zip"/>
</ItemGroup>
--- /dev/null
+# Quest Paths
+
+## Folder Structure
+
+Generally, the folder name is derived from SE's classification of quests.
+
+### A Realm Reborn
+
+- `MSQ-1`: All Starting Cities quests up to `Sylph-management`
+ - Limsa: `ManSea[...]`
+ - Gridania: `ManFst[...]`, also includes some latter quests (e.g. Ifrit)
+ - Ul'dah: `ManWil[...]`
+ - Generally, each starting class quest should be in its own city folder, with all shared quests in the `Shared`
+ folder
+- `MSQ-2`: All quests from `We Come in Peace` until the end of ARR (incl. patches)
+ - original quests: `GaiUs@[...]`, with `@` being the letter used as part of the folder name
+ - reworked quests: `Xx[...]`, updated in 5.3 probabbly → see original quest
+
+### Heavensward
+
+### Stormblood
+
+### Shadowbringers
+
+- `MSQ`: `LucKm@` with `@` being the letter used as part of the folder name
+
+### Endwalker
+
+- `MSQ`: `AktKm@` with `@` being the letter used as part of the folder name
"InteractionType": "Interact",
"AethernetShortcut": [
"[Limsa Lominsa] Aetheryte Plaza",
- "[Limsa Lominsa] Marauder's Guild"
+ "[Limsa Lominsa] Marauders' Guild"
],
"$.1": "QuestVariables if done first: 1 0 0 0 0 128"
},
"TerritoryId": 128,
"InteractionType": "Interact",
"AethernetShortcut": [
- "[Limsa Lominsa] Marauder's Guild",
+ "[Limsa Lominsa] Marauders' Guild",
"[Limsa Lominsa] The Aftcastle"
]
}
"AetheryteShortcut": "Gridania",
"AethernetShortcut": [
"[Gridania] Aetheryte Plaza",
- "[Gridania] Lancer's Guild"
+ "[Gridania] Lancers' Guild"
]
}
]
"AetheryteShortcut": "Gridania",
"AethernetShortcut": [
"[Gridania] Aetheryte Plaza",
- "[Gridania] Conjurer's Guild"
+ "[Gridania] Conjurers' Guild"
]
}
]
]
}
},
+ {
+ "if": {
+ "properties": {
+ "InteractionType": {
+ "const": "UseItem"
+ },
+ "ItemId": {
+ "not": {
+ "const": 30362
+ }
+ }
+ }
+ },
+ "then": {
+ "required": [
+ "Position"
+ ]
+ }
+ },
{
"if": {
"properties": {
}
},
"required": [
- "Position",
"ItemId"
]
}
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
+using System.Text.RegularExpressions;
using Dalamud.Game.Addon.Lifecycle;
using Dalamud.Game.Addon.Lifecycle.AddonArgTypes;
using Dalamud.Game.ClientState.Objects;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.UI;
using FFXIVClientStructs.FFXIV.Component.GUI;
+using LLib;
using LLib.GameUI;
using Lumina.Excel.GeneratedSheets;
using Microsoft.Extensions.Logging;
private readonly IGameGui _gameGui;
private readonly ITargetManager _targetManager;
private readonly ILogger<GameUiController> _logger;
+ private readonly Regex _returnRegex;
public GameUiController(IAddonLifecycle addonLifecycle, IDataManager dataManager, GameFunctions gameFunctions,
- QuestController questController, IGameGui gameGui, ITargetManager targetManager,
+ QuestController questController, IGameGui gameGui, ITargetManager targetManager, IPluginLog pluginLog,
ILogger<GameUiController> logger)
{
_addonLifecycle = addonLifecycle;
_targetManager = targetManager;
_logger = logger;
+ _returnRegex = _dataManager.GetExcelSheet<Addon>()!.GetRow(196)!.GetRegex(addon => addon.Text, pluginLog)!;
+
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "SelectString", SelectStringPostSetup);
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "CutSceneSelectString", CutsceneSelectStringPostSetup);
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "SelectIconString", SelectIconStringPostSetup);
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "SelectYesno", SelectYesnoPostSetup);
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "Credit", CreditPostSetup);
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "AkatsukiNote", UnendingCodexPostSetup);
+ _addonLifecycle.RegisterListener(AddonEvent.PostSetup, "ContentsTutorial", ContentsTutorialPostSetup);
+ _addonLifecycle.RegisterListener(AddonEvent.PostSetup, "MultipleHelpWindow", MultipleHelpWindowPostSetup);
}
internal unsafe void HandleCurrentDialogueChoices()
int? answer = HandleListChoice(actualPrompt, answers, checkAllSteps);
if (answer != null)
- {
- if (!checkAllSteps)
- _questController.IncreaseDialogueChoicesSelected();
addonSelectString->AtkUnitBase.FireCallbackInt(answer.Value);
- }
}
private unsafe void CutsceneSelectStringPostSetup(AddonEvent type, AddonArgs args)
int? answer = HandleListChoice(actualPrompt, answers, checkAllSteps);
if (answer != null)
- {
- if (!checkAllSteps)
- _questController.IncreaseDialogueChoicesSelected();
addonCutSceneSelectString->AtkUnitBase.FireCallbackInt(answer.Value);
- }
}
private unsafe void SelectIconStringPostSetup(AddonEvent type, AddonArgs args)
int? answer = HandleListChoice(actualPrompt, answers, checkAllSteps);
if (answer != null)
{
- if (!checkAllSteps)
- _questController.IncreaseDialogueChoicesSelected();
addonSelectIconString->AtkUnitBase.FireCallbackInt(answer.Value);
+ return;
+ }
+
+ var currentQuest = _questController.CurrentQuest;
+ if (currentQuest != null && actualPrompt == null)
+ {
+ // it is possible for this to be a quest selection
+ string questName = currentQuest.Quest.Name;
+ int questSelection = answers.FindIndex(x => GameStringEquals(questName, x));
+ if (questSelection >= 0)
+ addonSelectIconString->AtkUnitBase.FireCallbackInt(questSelection);
+ return;
}
}
}
addonSelectYesno->AtkUnitBase.FireCallbackInt(dialogueChoice.Yes ? 0 : 1);
- if (!checkAllSteps)
- _questController.IncreaseDialogueChoicesSelected();
return true;
}
private unsafe void HandleTravelYesNo(AddonSelectYesno* addonSelectYesno,
QuestController.QuestProgress currentQuest, string actualPrompt)
{
+ if (_gameFunctions.ReturnRequestedAt >= DateTime.Now.AddSeconds(-2) && _returnRegex.IsMatch(actualPrompt))
+ {
+ _logger.LogInformation("Automatically confirming return...");
+ addonSelectYesno->AtkUnitBase.FireCallbackInt(0);
+ return;
+ }
+
// this can be triggered either manually (in which case we should increase the step counter), or automatically
// (in which case it is ~1 frame later, and the step counter has already been increased)
var sequence = currentQuest.Quest.FindSequence(currentQuest.Sequence);
}
var warps = _dataManager.GetExcelSheet<Warp>()!
- .Where(x => x.RowId > 0 && x.TerritoryType.Row == step.TargetTerritoryId)
- .Where(x => x.ConfirmEvent.Row == 0); // unsure if this is needed
+ .Where(x => x.RowId > 0 && x.TerritoryType.Row == step.TargetTerritoryId);
foreach (var entry in warps)
{
string? excelPrompt = entry.Question?.ToString();
}
}
+ private unsafe void ContentsTutorialPostSetup(AddonEvent type, AddonArgs args)
+ {
+ if (_questController.CurrentQuest?.Quest.QuestId == 245)
+ {
+ // TODO Test this
+ _logger.LogInformation("Closing ContentsTutorial");
+ AtkUnitBase* addon = (AtkUnitBase*)args.Addon;
+ //addon->FireCallbackInt(-2);
+ addon->FireCallbackInt(13);
+ }
+ }
+
+ private unsafe void MultipleHelpWindowPostSetup(AddonEvent type, AddonArgs args)
+ {
+ if (_questController.CurrentQuest?.Quest.QuestId == 245)
+ {
+ _logger.LogInformation("Closing MultipleHelpWindow");
+ AtkUnitBase* addon = (AtkUnitBase*)args.Addon;
+ addon->FireCallbackInt(-2);
+ addon->FireCallbackInt(-1);
+ }
+ }
+
/// <summary>
/// Ensures characters like '-' are handled equally in both strings.
/// </summary>
public void Dispose()
{
+ _addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "MultipleHelpWindow", MultipleHelpWindowPostSetup);
+ _addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "ContentsTutorial", ContentsTutorialPostSetup);
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "AkatsukiNote", UnendingCodexPostSetup);
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "Credit", CreditPostSetup);
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "SelectYesno", SelectYesnoPostSetup);
}
}
}
- else if (!Destination.IsFlying && !_condition[ConditionFlag.Mounted] && navPoints.Count > 0 &&
- !_gameFunctions.HasStatusPreventingSprintOrMount(true) && Destination.CanSprint)
- {
- float actualDistance = 0;
- foreach (Vector3 end in navPoints)
- {
- actualDistance += (start - end).Length();
- start = end;
- }
-
- unsafe
- {
- // 70 is ~10 seconds of sprint
- if (actualDistance > 100f &&
- ActionManager.Instance()->GetActionStatus(ActionType.GeneralAction, 4) == 0)
- {
- _logger.LogInformation("Triggering Sprint");
- ActionManager.Instance()->UseAction(ActionType.GeneralAction, 4);
- }
- }
- }
_navmeshIpc.MoveTo(navPoints, Destination.IsFlying);
MovementStartedAt = DateTime.Now;
else
Stop();
}
+ else if (!Destination.IsFlying && !_condition[ConditionFlag.Mounted] &&
+ !_gameFunctions.HasStatusPreventingSprint() && Destination.CanSprint)
+ {
+ List<Vector3> navPoints = _navmeshIpc.GetWaypoints();
+ Vector3? start = _clientState.LocalPlayer?.Position;
+ if (start != null)
+ {
+ float actualDistance = 0;
+ foreach (Vector3 end in navPoints)
+ {
+ actualDistance += (start.Value - end).Length();
+ start = end;
+ }
+
+ unsafe
+ {
+ // 70 is ~10 seconds of sprint
+ if (actualDistance > 100f &&
+ ActionManager.Instance()->GetActionStatus(ActionType.GeneralAction, 4) == 0)
+ {
+ _logger.LogInformation("Triggering Sprint");
+ ActionManager.Instance()->UseAction(ActionType.GeneralAction, 4);
+ }
+ }
+ }
+ }
}
}
private readonly Configuration _configuration;
private readonly IReadOnlyList<ITaskFactory> _taskFactories;
+ private readonly object _lock = new();
+
private readonly Queue<ITask> _taskQueue = new();
private ITask? _currentTask;
private bool _automatic;
public void Reload()
{
- CurrentQuest = null;
- DebugState = null;
+ lock (_lock)
+ {
+ CurrentQuest = null;
+ DebugState = null;
- _questRegistry.Reload();
+ _questRegistry.Reload();
+ }
}
public void Update()
&& CurrentQuest is { Sequence: 0, Step: 0 } or { Sequence: 0, Step: 255 }
&& DateTime.Now >= CurrentQuest.StepProgress.StartedAt.AddSeconds(15))
{
- _logger.LogWarning("Quest accept apparently didn't work out, resetting progress");
- CurrentQuest = CurrentQuest with
+ lock (_lock)
{
- Step = 0
- };
+ _logger.LogWarning("Quest accept apparently didn't work out, resetting progress");
+ CurrentQuest = CurrentQuest with
+ {
+ Step = 0
+ };
+ }
ExecuteNextStep(true);
return;
private void UpdateCurrentQuest()
{
- DebugState = null;
-
- (ushort currentQuestId, byte currentSequence) = _gameFunctions.GetCurrentQuest();
- if (currentQuestId == 0)
+ lock (_lock)
{
- if (CurrentQuest != null)
+ DebugState = null;
+
+ (ushort currentQuestId, byte currentSequence) = _gameFunctions.GetCurrentQuest();
+ if (currentQuestId == 0)
{
- _logger.LogInformation("No current quest, resetting data");
- CurrentQuest = null;
- Stop("Resetting current quest");
+ if (CurrentQuest != null)
+ {
+ _logger.LogInformation("No current quest, resetting data");
+ CurrentQuest = null;
+ Stop("Resetting current quest");
+ }
}
- }
- else if (CurrentQuest == null || CurrentQuest.Quest.QuestId != currentQuestId)
- {
- if (_questRegistry.TryGetQuest(currentQuestId, out var quest))
+ else if (CurrentQuest == null || CurrentQuest.Quest.QuestId != currentQuestId)
{
- _logger.LogInformation("New quest: {QuestName}", quest.Name);
- CurrentQuest = new QuestProgress(quest, currentSequence, 0);
+ if (_questRegistry.TryGetQuest(currentQuestId, out var quest))
+ {
+ _logger.LogInformation("New quest: {QuestName}", quest.Name);
+ CurrentQuest = new QuestProgress(quest, currentSequence, 0);
- bool continueAutomatically = _configuration.General.AutoAcceptNextQuest;
+ bool continueAutomatically = _configuration.General.AutoAcceptNextQuest;
- if (_clientState.LocalPlayer?.Level < quest.Level)
- continueAutomatically = false;
+ if (_clientState.LocalPlayer?.Level < quest.Level)
+ continueAutomatically = false;
+
+ Stop("Different Quest", continueAutomatically);
+ }
+ else if (CurrentQuest != null)
+ {
+ _logger.LogInformation("No active quest anymore? Not sure what happened...");
+ CurrentQuest = null;
+ Stop("No active Quest");
+ }
- Stop("Different Quest", continueAutomatically);
+ return;
}
- else if (CurrentQuest != null)
+
+ if (CurrentQuest == null)
{
- _logger.LogInformation("No active quest anymore? Not sure what happened...");
- CurrentQuest = null;
- Stop("No active Quest");
+ DebugState = "No quest active";
+ Comment = null;
+ Stop("No quest active");
+ return;
}
- return;
- }
-
- if (CurrentQuest == null)
- {
- DebugState = "No quest active";
- Comment = null;
- Stop("No quest active");
- return;
- }
+ if (_gameFunctions.IsOccupied())
+ {
+ DebugState = "Occupied";
+ return;
+ }
- if (_gameFunctions.IsOccupied())
- {
- DebugState = "Occupied";
- return;
- }
+ if (!_movementController.IsNavmeshReady)
+ {
+ DebugState = "Navmesh not ready";
+ return;
+ }
+ else if (_movementController.IsPathfinding || _movementController.IsPathRunning)
+ {
+ DebugState = "Path is running";
+ return;
+ }
- if (!_movementController.IsNavmeshReady)
- {
- DebugState = "Navmesh not ready";
- return;
- }
- else if (_movementController.IsPathfinding || _movementController.IsPathRunning)
- {
- DebugState = "Path is running";
- return;
- }
+ if (CurrentQuest.Sequence != currentSequence)
+ {
+ CurrentQuest = CurrentQuest with { Sequence = currentSequence, Step = 0 };
+ Stop("New sequence", continueIfAutomatic: true);
+ }
- if (CurrentQuest.Sequence != currentSequence)
- {
- CurrentQuest = CurrentQuest with { Sequence = currentSequence, Step = 0 };
- Stop("New sequence", continueIfAutomatic: true);
- }
+ var q = CurrentQuest.Quest;
+ var sequence = q.FindSequence(CurrentQuest.Sequence);
+ if (sequence == null)
+ {
+ DebugState = "Sequence not found";
+ Comment = null;
+ Stop("Unknown sequence");
+ return;
+ }
- var q = CurrentQuest.Quest;
- var sequence = q.FindSequence(CurrentQuest.Sequence);
- if (sequence == null)
- {
- DebugState = "Sequence not found";
- Comment = null;
- Stop("Unknown sequence");
- return;
- }
+ if (CurrentQuest.Step == 255)
+ {
+ DebugState = "Step completed";
+ Comment = null;
+ if (_currentTask != null || _taskQueue.Count > 0)
+ Stop("Step complete", continueIfAutomatic: true);
+ return;
+ }
- if (CurrentQuest.Step == 255)
- {
- DebugState = "Step completed";
- Comment = null;
- if (_currentTask != null || _taskQueue.Count > 0)
- Stop("Step complete", continueIfAutomatic: true);
- return;
- }
+ if (CurrentQuest.Step >= sequence.Steps.Count)
+ {
+ DebugState = "Step not found";
+ Comment = null;
+ Stop("Unknown step");
+ return;
+ }
- if (CurrentQuest.Step >= sequence.Steps.Count)
- {
- DebugState = "Step not found";
- Comment = null;
- Stop("Unknown step");
- return;
+ var step = sequence.Steps[CurrentQuest.Step];
+ DebugState = null;
+ Comment = step.Comment ?? sequence.Comment ?? q.Data.Comment;
}
-
- var step = sequence.Steps[CurrentQuest.Step];
- DebugState = null;
- Comment = step.Comment ?? sequence.Comment ?? q.Data.Comment;
}
public (QuestSequence? Sequence, QuestStep? Step) GetNextStep()
return (seq, seq.Steps[CurrentQuest.Step]);
}
- public void IncreaseStepCount(bool shouldContinue = false)
+ public void IncreaseStepCount(ushort? questId, int? sequence, bool shouldContinue = false)
{
- (QuestSequence? seq, QuestStep? step) = GetNextStep();
- if (CurrentQuest == null || seq == null || step == null)
- {
- _logger.LogWarning("Unable to retrieve next quest step, not increasing step count");
- return;
- }
-
- _logger.LogInformation("Increasing step count from {CurrentValue}", CurrentQuest.Step);
- if (CurrentQuest.Step + 1 < seq.Steps.Count)
- {
- CurrentQuest = CurrentQuest with
- {
- Step = CurrentQuest.Step + 1,
- StepProgress = new(DateTime.Now),
- };
- }
- else
+ lock (_lock)
{
- CurrentQuest = CurrentQuest with
+ (QuestSequence? seq, QuestStep? step) = GetNextStep();
+ if (CurrentQuest == null || seq == null || step == null)
{
- Step = 255,
- StepProgress = new(DateTime.Now),
- };
- }
-
+ _logger.LogWarning("Unable to retrieve next quest step, not increasing step count");
+ return;
+ }
- if (shouldContinue && _automatic)
- ExecuteNextStep(true);
- }
+ if (questId != null && CurrentQuest.Quest.QuestId != questId)
+ {
+ _logger.LogWarning(
+ "Ignoring 'increase step count' for different quest (expected {ExpectedQuestId}, but we are at {CurrentQuestId}",
+ questId, CurrentQuest.Quest.QuestId);
+ return;
+ }
- public void IncreaseDialogueChoicesSelected()
- {
- (QuestSequence? seq, QuestStep? step) = GetNextStep();
- if (CurrentQuest == null || seq == null || step == null)
- {
- _logger.LogWarning("Unable to retrieve next quest step, not increasing dialogue choice count");
- return;
- }
+ if (sequence != null && seq.Sequence != sequence.Value)
+ {
+ _logger.LogWarning(
+ "Ignoring 'increase step count' for different sequence (expected {ExpectedSequence}, but we are at {CurrentSequence}",
+ sequence, seq.Sequence);
+ }
- CurrentQuest = CurrentQuest with
- {
- StepProgress = CurrentQuest.StepProgress with
+ _logger.LogInformation("Increasing step count from {CurrentValue}", CurrentQuest.Step);
+ if (CurrentQuest.Step + 1 < seq.Steps.Count)
+ {
+ CurrentQuest = CurrentQuest with
+ {
+ Step = CurrentQuest.Step + 1,
+ StepProgress = new(DateTime.Now),
+ };
+ }
+ else
{
- DialogueChoicesSelected = CurrentQuest.StepProgress.DialogueChoicesSelected + 1
+ CurrentQuest = CurrentQuest with
+ {
+ Step = 255,
+ StepProgress = new(DateTime.Now),
+ };
}
- };
+ }
- /* TODO Is this required?
- if (CurrentQuest.StepProgress.DialogueChoicesSelected >= step.DialogueChoices.Count)
- IncreaseStepCount();
- */
+ if (shouldContinue && _automatic)
+ ExecuteNextStep(true);
}
private void ClearTasksInternal()
case ETaskResult.NextStep:
_logger.LogInformation("{Task} → {Result}", _currentTask, result);
+
+ var lastTask = (ILastTask)_currentTask;
_currentTask = null;
- IncreaseStepCount(true);
+ IncreaseStepCount(lastTask.QuestId, lastTask.Sequence, true);
return;
case ETaskResult.End:
public sealed record StepProgress(
DateTime StartedAt,
int DialogueChoicesSelected = 0);
+
+ public void Skip(ushort questQuestId, byte currentQuestSequence)
+ {
+ lock (_lock)
+ {
+ if (_currentTask is ISkippableTask)
+ _currentTask = null;
+ else if (_currentTask != null)
+ {
+ _currentTask = null;
+ while (_taskQueue.Count > 0)
+ {
+ var task = _taskQueue.Dequeue();
+ if (task is ISkippableTask)
+ return;
+ }
+
+ if (_taskQueue.Count == 0)
+ {
+ Stop("Skip");
+ IncreaseStepCount(questQuestId, currentQuestSequence);
+ }
+ }
+ else
+ {
+ Stop("SkipNx");
+ IncreaseStepCount(questQuestId, currentQuestSequence);
+ }
+ }
+ }
}
new DirectoryInfo(Path.Combine(solutionDirectory.FullName, "QuestPaths"));
if (pathProjectDirectory.Exists)
{
+ LoadFromDirectory(new DirectoryInfo(Path.Combine(pathProjectDirectory.FullName, "ARealmReborn")));
LoadFromDirectory(new DirectoryInfo(Path.Combine(pathProjectDirectory.FullName, "Shadowbringers")));
LoadFromDirectory(new DirectoryInfo(Path.Combine(pathProjectDirectory.FullName, "Endwalker")));
}
IClientState clientState,
AetheryteData aetheryteData,
LifestreamIpc lifestreamIpc,
- MovementController movementController) : ITask
+ MovementController movementController) : ISkippableTask
{
private bool _moving;
private bool _teleported;
else if (aetheryteData.IsCityAetheryte(To))
{
if (aetheryteData.CalculateDistance(clientState.LocalPlayer?.Position ?? Vector3.Zero,
- clientState.TerritoryType, To) > 11)
+ clientState.TerritoryType, To) > 20)
return ETaskResult.StillRunning;
}
else
GameFunctions gameFunctions,
IClientState clientState,
IChatGui chatGui,
- AetheryteData aetheryteData) : ITask
+ AetheryteData aetheryteData) : ISkippableTask
{
private DateTime _continueAt;
yield return new WaitConditionTask(() => clientState.TerritoryType == Step.TerritoryId,
$"Wait(territory: {Step.TerritoryId})");
- yield return new WaitConditionTask(() => movementController.IsNavmeshReady,
- "Wait(navmesh ready)");
+
+ if (!Step.DisableNavmesh)
+ yield return new WaitConditionTask(() => movementController.IsNavmeshReady,
+ "Wait(navmesh ready)");
float distance;
if (Step.InteractionType == EInteractionType.WalkTo)
];
case EInteractionType.Interact when step.TargetTerritoryId != null:
+ case EInteractionType.UseItem when step.TargetTerritoryId != null:
ITask waitInteraction;
if (step.TerritoryId != step.TargetTerritoryId)
{
// interaction moves to a different territory
- waitInteraction = new WaitConditionTask(() => clientState.TerritoryType == step.TerritoryId,
- $"Wait(tp to territory: {step.TerritoryId})");
+ waitInteraction = new WaitConditionTask(() => clientState.TerritoryType == step.TargetTerritoryId,
+ $"Wait(tp to territory: {step.TargetTerritoryId})");
}
else
{
return false;
// interaction moved to elsewhere in the zone
- return (lastPosition - currentPosition.Value).Length() > 20;
+ // the 'closest' locations are probably
+ // - waking sands' solar
+ // - rising stones' solar + dawn's respite
+ return (lastPosition - currentPosition.Value).Length() > 2;
}, $"Wait(tp away from {lastPosition.ToString("G", CultureInfo.InvariantCulture)})");
}
"Wait(questComplete)");
}
else
- return new NextStep();
+ return new NextStep(quest.QuestId, sequence.Sequence);
}
}
$"WaitObj({DataId} at {Destination.ToString("G", CultureInfo.InvariantCulture)})";
}
- internal sealed class NextStep : ILastTask
+ internal sealed class NextStep(ushort questId, int sequence) : ILastTask
{
+ public ushort QuestId { get; } = questId;
+ public int Sequence { get; } = sequence;
+
public bool Start() => true;
public ETaskResult Update() => ETaskResult.NextStep;
internal sealed class EndAutomation : ILastTask
{
+ public ushort QuestId => throw new InvalidOperationException();
+ public int Sequence => throw new InvalidOperationException();
+
public bool Start() => true;
public ETaskResult Update() => ETaskResult.End;
return false;
}
- if (gameFunctions.HasStatusPreventingSprintOrMount())
+ if (gameFunctions.HasStatusPreventingMount())
{
logger.LogInformation("Can't mount due to status preventing sprint or mount");
return false;
if (!_mountTriggered)
{
- if (gameFunctions.HasStatusPreventingSprintOrMount())
+ if (gameFunctions.HasStatusPreventingMount())
{
logger.LogInformation("Can't mount due to status preventing sprint or mount");
return ETaskResult.TaskComplete;
internal sealed class WaitConditionTask(Func<bool> predicate, string description) : ITask
{
- public bool Start() => predicate();
+ private DateTime _continueAt = DateTime.MaxValue;
- public ETaskResult Update() => predicate() ? ETaskResult.TaskComplete : ETaskResult.StillRunning;
+ public bool Start() => !predicate();
+
+ public ETaskResult Update()
+ {
+ if (_continueAt == DateTime.MaxValue)
+ {
+ if (predicate())
+ _continueAt = DateTime.Now.AddSeconds(0.5);
+ }
+
+ return DateTime.Now >= _continueAt ? ETaskResult.TaskComplete : ETaskResult.StillRunning;
+ }
public override string ToString() => description;
}
internal interface ILastTask : ITask
{
-
+ public ushort QuestId { get; }
+ public int Sequence { get; }
}
--- /dev/null
+namespace Questionable.Controller.Steps;
+
+internal interface ISkippableTask : ITask;
using System;
+using System.Collections.Generic;
using Dalamud.Game.ClientState.Conditions;
using Dalamud.Game.ClientState.Objects.Enums;
using Dalamud.Game.ClientState.Objects.Types;
using Dalamud.Plugin.Services;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
+using Questionable.Controller.Steps.BaseFactory;
using Questionable.Model;
using Questionable.Model.V1;
{
internal sealed class Factory(IServiceProvider serviceProvider) : ITaskFactory
{
- public ITask? CreateTask(Quest quest, QuestSequence sequence, QuestStep step)
+ public IEnumerable<ITask> CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step)
{
if (step.InteractionType != EInteractionType.Interact)
- return null;
+ yield break;
ArgumentNullException.ThrowIfNull(step.DataId);
- return serviceProvider.GetRequiredService<DoInteract>()
+ // if we're fast enough, it is possible to get the smalltalk prompt
+ if (sequence.Sequence == 0 && sequence.Steps.IndexOf(step) == 0)
+ yield return serviceProvider.GetRequiredService<WaitAtEnd.WaitDelay>();
+
+ yield return serviceProvider.GetRequiredService<DoInteract>()
.With(step.DataId.Value, step.TargetTerritoryId != null);
}
+
+ public ITask CreateTask(Quest quest, QuestSequence sequence, QuestStep step)
+ => throw new InvalidOperationException();
}
internal sealed class DoInteract(GameFunctions gameFunctions, ICondition condition, ILogger<DoInteract> logger)
private bool _usedItem;
private DateTime _continueAt;
+ public uint ItemId { get; set; }
+
protected abstract bool UseItem();
public bool Start()
{
_usedItem = UseItem();
- _continueAt = DateTime.Now.AddSeconds(2);
+ if (ItemId == 30362) // vesper bay aether ticket
+ _continueAt = DateTime.Now.AddSeconds(11);
+ else
+ _continueAt = DateTime.Now.AddSeconds(2);
return true;
}
public ETaskResult Update()
{
- if (DateTime.Now > _continueAt)
+ if (DateTime.Now <= _continueAt)
return ETaskResult.StillRunning;
if (!_usedItem)
internal sealed class UseOnGround(GameFunctions gameFunctions) : UseItemBase
{
public uint DataId { get; set; }
- public uint ItemId { get; set; }
public ITask With(uint dataId, uint itemId)
{
internal sealed class UseOnObject(GameFunctions gameFunctions) : UseItemBase
{
public uint DataId { get; set; }
- public uint ItemId { get; set; }
public ITask With(uint dataId, uint itemId)
{
internal sealed class Use(GameFunctions gameFunctions) : UseItemBase
{
- public uint ItemId { get; set; }
-
public ITask With(uint itemId)
{
ItemId = itemId;
private readonly ICallGateSubscriber<List<Vector3>, bool, object> _pathMoveTo;
private readonly ICallGateSubscriber<object> _pathStop;
private readonly ICallGateSubscriber<bool> _pathIsRunning;
+ private readonly ICallGateSubscriber<List<Vector3>> _pathListWaypoints;
private readonly ICallGateSubscriber<float> _pathGetTolerance;
private readonly ICallGateSubscriber<float, object> _pathSetTolerance;
private readonly ICallGateSubscriber<Vector3, bool, float, Vector3?> _queryPointOnFloor;
_pathMoveTo = pluginInterface.GetIpcSubscriber<List<Vector3>, bool, object>("vnavmesh.Path.MoveTo");
_pathStop = pluginInterface.GetIpcSubscriber<object>("vnavmesh.Path.Stop");
_pathIsRunning = pluginInterface.GetIpcSubscriber<bool>("vnavmesh.Path.IsRunning");
+ _pathListWaypoints = pluginInterface.GetIpcSubscriber<List<Vector3>>("vnavmesh.Path.ListWaypoints");
_pathGetTolerance = pluginInterface.GetIpcSubscriber<float>("vnavmesh.Path.GetTolerance");
_pathSetTolerance = pluginInterface.GetIpcSubscriber<float, object>("vnavmesh.Path.SetTolerance");
_queryPointOnFloor =
public Vector3? GetPointOnFloor(Vector3 position)
=> _queryPointOnFloor.InvokeFunc(position, true, 1);
+
+ public List<Vector3> GetWaypoints()
+ {
+ if (IsPathRunning)
+ return _pathListWaypoints.InvokeFunc();
+ else
+ return [];
+ }
}
.AsReadOnly();
}
+ public DateTime ReturnRequestedAt { get; set; } = DateTime.MinValue;
+
public (ushort CurrentQuest, byte Sequence) GetCurrentQuest()
{
ushort currentQuest;
currentQuest = scenarioTree->Data->CurrentScenarioQuest;
if (currentQuest == 0)
+ {
+ if (_clientState.TerritoryType == 181) // Starting Limsa
+ return (107, 0);
+
return default;
+ }
return (currentQuest, QuestManager.GetQuestSequence(currentQuest));
}
if (IsAetheryteUnlocked(aetheryteId, out var subIndex))
{
+ if (aetheryteId == PlayerState.Instance()->HomeAetheryteId &&
+ ActionManager.Instance()->GetActionStatus(ActionType.GeneralAction, 8) == 0)
+ {
+ ReturnRequestedAt = DateTime.Now;
+ if (ActionManager.Instance()->UseAction(ActionType.GeneralAction, 8))
+ return true;
+ }
+
+ // fallback if return isn't available or (more likely) on a different aetheryte
return Telepo.Instance()->Teleport(aetheryteId, subIndex);
}
public bool IsFlyingUnlocked(ushort territoryId)
{
+ if (_configuration.Advanced.NeverFly)
+ return false;
+
var playerState = PlayerState.Instance();
return playerState != null &&
_territoryToAetherCurrentCompFlgSet.TryGetValue(territoryId, out byte aetherCurrentCompFlgSet) &&
if (gameObject != null)
{
_logger.LogInformation("Setting target with {DataId} to {ObjectId}", dataId, gameObject.ObjectId);
+ _targetManager.Target = null;
_targetManager.Target = gameObject;
- ulong result = TargetSystem.Instance()->InteractWithObject(
+ long result = (long)TargetSystem.Instance()->InteractWithObject(
(FFXIVClientStructs.FFXIV.Client.Game.Object.GameObject*)gameObject.Address, false);
- return result != 0;
+
+ _logger.LogInformation("Interact result: {Result}", result);
+ return result > 0;
}
+ _logger.LogDebug("Game object is null");
return false;
}
public bool UseItem(uint itemId)
{
- return AgentInventoryContext.Instance()->UseItem(itemId) == 0;
+ long result = AgentInventoryContext.Instance()->UseItem(itemId);
+ _logger.LogInformation("UseItem result: {Result}", result);
+
+ return result == 0;
}
public bool UseItem(uint dataId, uint itemId)
if (gameObject != null)
{
_targetManager.Target = gameObject;
- return AgentInventoryContext.Instance()->UseItem(itemId) == 0;
+ long result = AgentInventoryContext.Instance()->UseItem(itemId);
+
+ _logger.LogInformation("UseItem result on {DataId}: {Result}", dataId, result);
+ return result == 0;
}
return false;
return gameObject != null && (gameObject.Position - position).Length() < 0.05f;
}
- public bool HasStatusPreventingSprintOrMount(bool skipConfigCheck = false)
+ public bool HasStatusPreventingMount()
{
- if (!skipConfigCheck && _configuration.Advanced.NeverFly)
- return true;
-
if (_condition[ConditionFlag.Swimming] && !IsFlyingUnlockedInCurrentZone())
return true;
if (playerState != null && !playerState->IsMountUnlocked(1))
return true;
+ return HasCharacterStatusPreventingMountOrSprint();
+ }
+
+ public bool HasStatusPreventingSprint() => HasCharacterStatusPreventingMountOrSprint();
+
+ private bool HasCharacterStatusPreventingMountOrSprint()
+ {
var gameObject = GameObjectManager.GetGameObjectByIndex(0);
if (gameObject != null && gameObject->ObjectKind == 1)
{
var questRow = _dataManager.GetExcelSheet<GimmickYesNo>()!.GetRow(rowId);
return questRow?.Unknown0?.ToString();
}
+ else if (excelSheet == "Warp")
+ {
+ var questRow = _dataManager.GetExcelSheet<Warp>()!.GetRow(rowId);
+ return questRow?.Name?.ToString();
+ }
else if (excelSheet is "ContentTalk" or null)
{
var questRow = _dataManager.GetExcelSheet<ContentTalk>()!.GetRow(rowId);
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-windows</TargetFramework>
- <Version>0.12</Version>
+ <Version>0.13</Version>
<LangVersion>12</LangVersion>
<Nullable>enable</Nullable>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
using Dalamud.Interface;
using Dalamud.Interface.Colors;
using Dalamud.Interface.Components;
-using Dalamud.Interface.Windowing;
using Dalamud.Plugin;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game;
using Microsoft.Extensions.Logging;
using Questionable.Controller;
using Questionable.Controller.Steps.BaseFactory;
+using Questionable.External;
using Questionable.Model;
using Questionable.Model.V1;
private readonly ITargetManager _targetManager;
private readonly GameUiController _gameUiController;
private readonly Configuration _configuration;
+ private readonly NavmeshIpc _navmeshIpc;
private readonly ILogger<DebugWindow> _logger;
public DebugWindow(DalamudPluginInterface pluginInterface,
ITargetManager targetManager,
GameUiController gameUiController,
Configuration configuration,
+ NavmeshIpc navmeshIpc,
ILogger<DebugWindow> logger)
: base("Questionable", ImGuiWindowFlags.AlwaysAutoResize)
{
_targetManager = targetManager;
_gameUiController = gameUiController;
_configuration = configuration;
+ _navmeshIpc = navmeshIpc;
_logger = logger;
IsOpen = true;
MinimumSize = new Vector2(200, 30),
MaximumSize = default
};
+ RespectCloseHotkey = false;
}
public WindowConfig WindowConfig => _configuration.DebugWindowConfig;
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.ArrowCircleRight, "Skip"))
{
_movementController.Stop();
- _questController.Stop("Manual");
- _questController.IncreaseStepCount();
+ _questController.Skip(currentQuest.Quest.QuestId, currentQuest.Sequence);
}
if (colored)
{
var map = AgentMap.Instance();
ImGui.BeginDisabled(map == null || map->IsFlagMarkerSet == 0 ||
- map->FlagMapMarker.TerritoryId != _clientState.TerritoryType);
+ map->FlagMapMarker.TerritoryId != _clientState.TerritoryType ||
+ !_navmeshIpc.IsReady);
if (ImGui.Button("Move to Flag"))
_gameFunctions.ExecuteCommand(
$"/vnav {(_gameFunctions.IsFlyingUnlockedInCurrentZone() ? "flyflag" : "moveflag")}");