Limsa navmesh adjustments; add more role quests
This commit is contained in:
parent
8c49c0b273
commit
ef34c5b4f1
@ -13,7 +13,166 @@
|
||||
"Z": 198.68762
|
||||
},
|
||||
"TerritoryId": 1185,
|
||||
"InteractionType": "AcceptQuest"
|
||||
"InteractionType": "AcceptQuest",
|
||||
"AetheryteShortcut": "Tuliyollal",
|
||||
"SkipIf": [
|
||||
"AetheryteShortcutIfInSameTerritory"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1019038,
|
||||
"Position": {
|
||||
"X": -55.222473,
|
||||
"Y": -2.9000003,
|
||||
"Z": -65.65961
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Kugane",
|
||||
"AethernetShortcut": [
|
||||
"[Kugane] Aetheryte Plaza",
|
||||
"[Kugane] Shiokaze Hostelry"
|
||||
],
|
||||
"SkipIf": [
|
||||
"AetheryteShortcutIfInSameTerritory"
|
||||
],
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1019003,
|
||||
"Position": {
|
||||
"X": -41.24518,
|
||||
"Y": -3.0000017,
|
||||
"Z": -63.09613
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1019069,
|
||||
"Position": {
|
||||
"X": -62.119568,
|
||||
"Y": 8,
|
||||
"Z": -56.62628
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1051620,
|
||||
"Position": {
|
||||
"X": 111.40613,
|
||||
"Y": 11.997255,
|
||||
"Z": -52.048523
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048296,
|
||||
"Position": {
|
||||
"X": 111.40613,
|
||||
"Y": 11.997235,
|
||||
"Z": -52.018066
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2013689,
|
||||
"Position": {
|
||||
"X": 29.251465,
|
||||
"Y": 5.935669,
|
||||
"Z": -129.62543
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "Interact",
|
||||
"AethernetShortcut": [
|
||||
"[Kugane] Sekiseigumi Barracks",
|
||||
"[Kugane] Rakuza District"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 5,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2013690,
|
||||
"Position": {
|
||||
"X": 14.114502,
|
||||
"Y": 3.982544,
|
||||
"Z": 43.411865
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "Interact",
|
||||
"AethernetShortcut": [
|
||||
"[Kugane] Rakuza District",
|
||||
"[Kugane] Kogane Dori Markets"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048296,
|
||||
"Position": {
|
||||
"X": 111.40613,
|
||||
"Y": 11.997235,
|
||||
"Z": -52.018066
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"AethernetShortcut": [
|
||||
"[Kugane] Kogane Dori Markets",
|
||||
"[Kugane] Sekiseigumi Barracks"
|
||||
],
|
||||
"NextQuestId": 4831
|
||||
}
|
||||
]
|
||||
}
|
||||
|
153
QuestPaths/Dawntrail/Role Quests/Melee/4831_A Sea of Blood.json
Normal file
153
QuestPaths/Dawntrail/Role Quests/Melee/4831_A Sea of Blood.json
Normal file
@ -0,0 +1,153 @@
|
||||
{
|
||||
"$schema": "https://carvel.li/questionable/quest-1.0",
|
||||
"Author": "liza",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048296,
|
||||
"Position": {
|
||||
"X": 111.40613,
|
||||
"Y": 11.997235,
|
||||
"Z": -52.018066
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "AcceptQuest",
|
||||
"AetheryteShortcut": "Kugane",
|
||||
"SkipIf": [
|
||||
"AetheryteShortcutIfInSameTerritory"
|
||||
],
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_KINGBA311_04831_Q2_000_000",
|
||||
"Answer": "TEXT_KINGBA311_04831_A2_000_002"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1019154,
|
||||
"Position": {
|
||||
"X": 829.1294,
|
||||
"Y": 5.9230084,
|
||||
"Z": 859.739
|
||||
},
|
||||
"TerritoryId": 613,
|
||||
"InteractionType": "Interact",
|
||||
"AethernetShortcut": [
|
||||
"[Kugane] Sekiseigumi Barracks",
|
||||
"[Kugane] The Ruby Price"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1019169,
|
||||
"Position": {
|
||||
"X": 476.82898,
|
||||
"Y": 30.113333,
|
||||
"Z": 763.546
|
||||
},
|
||||
"TerritoryId": 613,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1019167,
|
||||
"Position": {
|
||||
"X": 447.56226,
|
||||
"Y": 34.29651,
|
||||
"Z": 732.66187
|
||||
},
|
||||
"TerritoryId": 613,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048299,
|
||||
"Position": {
|
||||
"X": 463.46216,
|
||||
"Y": 29.787891,
|
||||
"Z": 736.8428
|
||||
},
|
||||
"TerritoryId": 613,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 426.16245,
|
||||
"Y": 0.7213422,
|
||||
"Z": 195.08597
|
||||
},
|
||||
"TerritoryId": 613,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1048301,
|
||||
"Position": {
|
||||
"X": 427.78674,
|
||||
"Y": 0.5689501,
|
||||
"Z": 195.39172
|
||||
},
|
||||
"TerritoryId": 613,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048296,
|
||||
"Position": {
|
||||
"X": 111.40613,
|
||||
"Y": 11.997235,
|
||||
"Z": -52.018066
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"AetheryteShortcut": "Kugane",
|
||||
"AethernetShortcut": [
|
||||
"[Kugane] Aetheryte Plaza",
|
||||
"[Kugane] Sekiseigumi Barracks"
|
||||
],
|
||||
"NextQuestId": 4832
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
142
QuestPaths/Dawntrail/Role Quests/Melee/4832_Who's Who.json
Normal file
142
QuestPaths/Dawntrail/Role Quests/Melee/4832_Who's Who.json
Normal file
@ -0,0 +1,142 @@
|
||||
{
|
||||
"$schema": "https://carvel.li/questionable/quest-1.0",
|
||||
"Author": "liza",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048296,
|
||||
"Position": {
|
||||
"X": 111.40613,
|
||||
"Y": 11.997235,
|
||||
"Z": -52.018066
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "AcceptQuest",
|
||||
"AetheryteShortcut": "Kugane",
|
||||
"SkipIf": [
|
||||
"AetheryteShortcutIfInSameTerritory"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1019260,
|
||||
"Position": {
|
||||
"X": 417.5935,
|
||||
"Y": 68.02854,
|
||||
"Z": -110.24652
|
||||
},
|
||||
"TerritoryId": 614,
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Yanxia - Namai",
|
||||
"SkipIf": [
|
||||
"AetheryteShortcutIfInSameTerritory"
|
||||
],
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1019257,
|
||||
"Position": {
|
||||
"X": 468.55872,
|
||||
"Y": 68.02771,
|
||||
"Z": -93.21747
|
||||
},
|
||||
"TerritoryId": 614,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1019262,
|
||||
"Position": {
|
||||
"X": 445.76172,
|
||||
"Y": 58.67623,
|
||||
"Z": -155.62683
|
||||
},
|
||||
"TerritoryId": 614,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048302,
|
||||
"Position": {
|
||||
"X": 399.95422,
|
||||
"Y": 76.04927,
|
||||
"Z": -114.885254
|
||||
},
|
||||
"StopDistance": 0.5,
|
||||
"TerritoryId": 614,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048304,
|
||||
"Position": {
|
||||
"X": 421.3473,
|
||||
"Y": 1.7278045,
|
||||
"Z": -278.70605
|
||||
},
|
||||
"TerritoryId": 614,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048296,
|
||||
"Position": {
|
||||
"X": 111.40613,
|
||||
"Y": 11.997235,
|
||||
"Z": -52.018066
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"AetheryteShortcut": "Kugane",
|
||||
"AethernetShortcut": [
|
||||
"[Kugane] Aetheryte Plaza",
|
||||
"[Kugane] Sekiseigumi Barracks"
|
||||
],
|
||||
"NextQuestId": 4833
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
104
QuestPaths/Dawntrail/Role Quests/Melee/4833_Cornered Prey.json
Normal file
104
QuestPaths/Dawntrail/Role Quests/Melee/4833_Cornered Prey.json
Normal file
@ -0,0 +1,104 @@
|
||||
{
|
||||
"$schema": "https://carvel.li/questionable/quest-1.0",
|
||||
"Author": "liza",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048297,
|
||||
"Position": {
|
||||
"X": 111.40613,
|
||||
"Y": 11.997235,
|
||||
"Z": -52.018066
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "AcceptQuest",
|
||||
"AetheryteShortcut": "Kugane",
|
||||
"SkipIf": [
|
||||
"AetheryteShortcutIfInSameTerritory"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2013691,
|
||||
"Position": {
|
||||
"X": 203.8147,
|
||||
"Y": 12.069824,
|
||||
"Z": 773.0067
|
||||
},
|
||||
"TerritoryId": 613,
|
||||
"InteractionType": "Interact",
|
||||
"AethernetShortcut": [
|
||||
"[Kugane] Sekiseigumi Barracks",
|
||||
"[Kugane] The Ruby Price"
|
||||
],
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2013692,
|
||||
"Position": {
|
||||
"X": 138.59766,
|
||||
"Y": 9.292725,
|
||||
"Z": 676.6002
|
||||
},
|
||||
"TerritoryId": 613,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AfterInteraction",
|
||||
"KillEnemyDataIds": [
|
||||
17617,
|
||||
17618,
|
||||
17619
|
||||
],
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2013693,
|
||||
"Position": {
|
||||
"X": 167.89502,
|
||||
"Y": 2.1209717,
|
||||
"Z": 561.27246
|
||||
},
|
||||
"TerritoryId": 613,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048297,
|
||||
"Position": {
|
||||
"X": 111.40613,
|
||||
"Y": 11.997235,
|
||||
"Z": -52.018066
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"AetheryteShortcut": "Kugane",
|
||||
"AethernetShortcut": [
|
||||
"[Kugane] Aetheryte Plaza",
|
||||
"[Kugane] Sekiseigumi Barracks"
|
||||
],
|
||||
"NextQuestId": 4834
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,144 @@
|
||||
{
|
||||
"$schema": "https://carvel.li/questionable/quest-1.0",
|
||||
"Author": "liza",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048297,
|
||||
"Position": {
|
||||
"X": 111.40613,
|
||||
"Y": 11.997235,
|
||||
"Z": -52.018066
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "AcceptQuest",
|
||||
"AetheryteShortcut": "Kugane",
|
||||
"SkipIf": [
|
||||
"AetheryteShortcutIfInSameTerritory"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 42.052795,
|
||||
"Y": 4.000001,
|
||||
"Z": 71.14965
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "WalkTo",
|
||||
"AethernetShortcut": [
|
||||
"[Kugane] Sekiseigumi Barracks",
|
||||
"[Kugane] Kogane Dori Markets"
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1018984,
|
||||
"Position": {
|
||||
"X": 42.34375,
|
||||
"Y": 4.8365364,
|
||||
"Z": 73.83838
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1019065,
|
||||
"Position": {
|
||||
"X": 80.49133,
|
||||
"Y": 4,
|
||||
"Z": 56.443115
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2013694,
|
||||
"Position": {
|
||||
"X": 517.2654,
|
||||
"Y": 0.99176025,
|
||||
"Z": -692.10345
|
||||
},
|
||||
"TerritoryId": 613,
|
||||
"InteractionType": "UseItem",
|
||||
"ItemId": 2003492,
|
||||
"AetheryteShortcut": "Ruby Sea - Onokoro",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2013695,
|
||||
"Position": {
|
||||
"X": 519.76794,
|
||||
"Y": 0.99176025,
|
||||
"Z": -679.8352
|
||||
},
|
||||
"TerritoryId": 613,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AfterInteraction",
|
||||
"KillEnemyDataIds": [
|
||||
17620
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 5,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1019065,
|
||||
"Position": {
|
||||
"X": 80.49133,
|
||||
"Y": 4,
|
||||
"Z": 56.443115
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Kugane",
|
||||
"AethernetShortcut": [
|
||||
"[Kugane] Aetheryte Plaza",
|
||||
"[Kugane] Kogane Dori Markets"
|
||||
],
|
||||
"SkipIf": [
|
||||
"AetheryteShortcutIfInSameTerritory"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048298,
|
||||
"Position": {
|
||||
"X": 111.40613,
|
||||
"Y": 11.997235,
|
||||
"Z": -52.018066
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"NextQuestId": 4835
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
169
QuestPaths/Dawntrail/Role Quests/Melee/4835_A Hunter True.json
Normal file
169
QuestPaths/Dawntrail/Role Quests/Melee/4835_A Hunter True.json
Normal file
@ -0,0 +1,169 @@
|
||||
{
|
||||
"$schema": "https://carvel.li/questionable/quest-1.0",
|
||||
"Author": "liza",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048298,
|
||||
"Position": {
|
||||
"X": 111.40613,
|
||||
"Y": 11.997235,
|
||||
"Z": -52.018066
|
||||
},
|
||||
"TerritoryId": 628,
|
||||
"InteractionType": "AcceptQuest",
|
||||
"AetheryteShortcut": "Kugane",
|
||||
"SkipIf": [
|
||||
"AetheryteShortcutIfInSameTerritory"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1019350,
|
||||
"Position": {
|
||||
"X": 563.2562,
|
||||
"Y": -19.505632,
|
||||
"Z": 319.11182
|
||||
},
|
||||
"TerritoryId": 622,
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Azim Steppe - Reunion",
|
||||
"SkipIf": [
|
||||
"AetheryteShortcutIfInSameTerritory"
|
||||
],
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1019351,
|
||||
"Position": {
|
||||
"X": 548.8822,
|
||||
"Y": -19.505648,
|
||||
"Z": 295.1858
|
||||
},
|
||||
"TerritoryId": 622,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1019353,
|
||||
"Position": {
|
||||
"X": 544.0298,
|
||||
"Y": -19.505642,
|
||||
"Z": 391.68372
|
||||
},
|
||||
"TerritoryId": 622,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048305,
|
||||
"Position": {
|
||||
"X": 591.08875,
|
||||
"Y": -19.505634,
|
||||
"Z": 296.9253
|
||||
},
|
||||
"TerritoryId": 622,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048305,
|
||||
"Position": {
|
||||
"X": 591.08875,
|
||||
"Y": -19.505634,
|
||||
"Z": 296.9253
|
||||
},
|
||||
"TerritoryId": 622,
|
||||
"InteractionType": "SinglePlayerDuty"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 0,
|
||||
"Y": 0,
|
||||
"Z": 0
|
||||
},
|
||||
"TerritoryId": 1,
|
||||
"InteractionType": "WalkTo",
|
||||
"Comment": "Filler"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 5,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048307,
|
||||
"Position": {
|
||||
"X": -494.56018,
|
||||
"Y": 71.630486,
|
||||
"Z": -518.9441
|
||||
},
|
||||
"TerritoryId": 622,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048295,
|
||||
"Position": {
|
||||
"X": -74.143616,
|
||||
"Y": -19.32829,
|
||||
"Z": 198.68762
|
||||
},
|
||||
"TerritoryId": 1185,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"AetheryteShortcut": "Tuliyollal",
|
||||
"AethernetShortcut": [
|
||||
"[Tuliyollal] Aetheryte Plaza",
|
||||
"[Tuliyollal] Bayside Bevy Marketplace"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,113 @@
|
||||
{
|
||||
"$schema": "https://carvel.li/questionable/quest-1.0",
|
||||
"Author": "liza",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048650,
|
||||
"Position": {
|
||||
"X": 367.87964,
|
||||
"Y": -156.28014,
|
||||
"Z": -419.11957
|
||||
},
|
||||
"TerritoryId": 1187,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2014104,
|
||||
"Position": {
|
||||
"X": 374.77686,
|
||||
"Y": -154.07043,
|
||||
"Z": -373.52563
|
||||
},
|
||||
"TerritoryId": 1187,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2014106,
|
||||
"Position": {
|
||||
"X": 327.90112,
|
||||
"Y": -152.20874,
|
||||
"Z": -369.31415
|
||||
},
|
||||
"TerritoryId": 1187,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2014105,
|
||||
"Position": {
|
||||
"X": 330.6172,
|
||||
"Y": -158.06824,
|
||||
"Z": -399.8932
|
||||
},
|
||||
"TerritoryId": 1187,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2014107,
|
||||
"Position": {
|
||||
"X": 275.7152,
|
||||
"Y": -166.94897,
|
||||
"Z": -462.7909
|
||||
},
|
||||
"TerritoryId": 1187,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
16
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048650,
|
||||
"Position": {
|
||||
"X": 367.87964,
|
||||
"Y": -156.28014,
|
||||
"Z": -419.11957
|
||||
},
|
||||
"TerritoryId": 1187,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,82 @@
|
||||
{
|
||||
"$schema": "https://carvel.li/questionable/quest-1.0",
|
||||
"Author": "liza",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048649,
|
||||
"Position": {
|
||||
"X": 357.86987,
|
||||
"Y": -155.91757,
|
||||
"Z": -370.1076
|
||||
},
|
||||
"TerritoryId": 1187,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1050671,
|
||||
"Position": {
|
||||
"X": 191.97375,
|
||||
"Y": -87.10133,
|
||||
"Z": -277.39374
|
||||
},
|
||||
"TerritoryId": 1187,
|
||||
"InteractionType": "UseItem",
|
||||
"ItemId": 2003601,
|
||||
"Fly": true,
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1050670,
|
||||
"Position": {
|
||||
"X": 132.86023,
|
||||
"Y": -75.24902,
|
||||
"Z": -213.2143
|
||||
},
|
||||
"TerritoryId": 1187,
|
||||
"InteractionType": "UseItem",
|
||||
"ItemId": 2003601,
|
||||
"Fly": true,
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048649,
|
||||
"Position": {
|
||||
"X": 357.86987,
|
||||
"Y": -155.91757,
|
||||
"Z": -370.1076
|
||||
},
|
||||
"TerritoryId": 1187,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"AetheryteShortcut": "Urqopacha - Wachunpelo"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,116 @@
|
||||
{
|
||||
"$schema": "https://carvel.li/questionable/quest-1.0",
|
||||
"Author": "liza",
|
||||
"TerritoryBlacklist": [
|
||||
1204
|
||||
],
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1051440,
|
||||
"Position": {
|
||||
"X": 305.01257,
|
||||
"Y": 51.199978,
|
||||
"Z": 198.07727
|
||||
},
|
||||
"TerritoryId": 1186,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2014334,
|
||||
"Position": {
|
||||
"X": -6.9123535,
|
||||
"Y": 53.177612,
|
||||
"Z": 761.68445
|
||||
},
|
||||
"TerritoryId": 1192,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1048243,
|
||||
"Position": {
|
||||
"X": 57.87744,
|
||||
"Y": 53.200012,
|
||||
"Z": 772.03015
|
||||
},
|
||||
"TerritoryId": 1192,
|
||||
"InteractionType": "Interact",
|
||||
"TargetTerritoryId": 1192,
|
||||
"SkipIf": [
|
||||
"FlyingUnlocked"
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1051443,
|
||||
"Position": {
|
||||
"X": 614.28235,
|
||||
"Y": 9.022843,
|
||||
"Z": 610.13184
|
||||
},
|
||||
"TerritoryId": 1192,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"TerritoryId": 1192,
|
||||
"InteractionType": "Duty",
|
||||
"ContentFinderConditionId": 981
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1051442,
|
||||
"Position": {
|
||||
"X": 613.76355,
|
||||
"Y": 9.022844,
|
||||
"Z": 612.1156
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 1192,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1051440,
|
||||
"Position": {
|
||||
"X": 305.01257,
|
||||
"Y": 51.199978,
|
||||
"Z": 198.07727
|
||||
},
|
||||
"TerritoryId": 1186,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"AetheryteShortcut": "Solution Nine",
|
||||
"AethernetShortcut": [
|
||||
"[Solution Nine] Aetheryte Plaza",
|
||||
"[Solution Nine] Neon Stein"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -14,6 +14,7 @@ using Dalamud.Plugin.Services;
|
||||
using FFXIVClientStructs.FFXIV.Client.Game;
|
||||
using FFXIVClientStructs.FFXIV.Client.Game.Control;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Questionable.Controller.NavigationOverrides;
|
||||
using Questionable.External;
|
||||
using Questionable.Model;
|
||||
using Questionable.Model.V1;
|
||||
@ -23,28 +24,26 @@ namespace Questionable.Controller;
|
||||
|
||||
internal sealed class MovementController : IDisposable
|
||||
{
|
||||
private static readonly List<BlacklistedArea> BlacklistedAreas =
|
||||
[
|
||||
new(1191, new(-223.0412f, 31.937134f, -584.03906f), 5f, 7.75f),
|
||||
];
|
||||
|
||||
private readonly NavmeshIpc _navmeshIpc;
|
||||
private readonly IClientState _clientState;
|
||||
private readonly GameFunctions _gameFunctions;
|
||||
private readonly ChatFunctions _chatFunctions;
|
||||
private readonly ICondition _condition;
|
||||
private readonly MovementOverrideController _movementOverrideController;
|
||||
private readonly ILogger<MovementController> _logger;
|
||||
private CancellationTokenSource? _cancellationTokenSource;
|
||||
private Task<List<Vector3>>? _pathfindTask;
|
||||
|
||||
public MovementController(NavmeshIpc navmeshIpc, IClientState clientState, GameFunctions gameFunctions,
|
||||
ChatFunctions chatFunctions, ICondition condition, ILogger<MovementController> logger)
|
||||
ChatFunctions chatFunctions, ICondition condition, MovementOverrideController movementOverrideController,
|
||||
ILogger<MovementController> logger)
|
||||
{
|
||||
_navmeshIpc = navmeshIpc;
|
||||
_clientState = clientState;
|
||||
_gameFunctions = gameFunctions;
|
||||
_chatFunctions = chatFunctions;
|
||||
_condition = condition;
|
||||
_movementOverrideController = movementOverrideController;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
@ -112,29 +111,7 @@ internal sealed class MovementController : IDisposable
|
||||
}
|
||||
|
||||
if (!Destination.IsFlying)
|
||||
{
|
||||
// certain areas shouldn't have navmesh points in them, e.g. the aetheryte in HF Outskirts can't be
|
||||
// walked on without jumping, but if you teleport to the wrong side you're fucked otherwise.
|
||||
foreach (var blacklistedArea in BlacklistedAreas)
|
||||
{
|
||||
if (_clientState.TerritoryType != blacklistedArea.TerritoryId)
|
||||
continue;
|
||||
|
||||
for (int i = 0; i < navPoints.Count; ++i)
|
||||
{
|
||||
var point = navPoints[i];
|
||||
float distance = (point - blacklistedArea.Center).Length();
|
||||
if (distance < blacklistedArea.MinDistance || distance > blacklistedArea.MaxDistance)
|
||||
continue;
|
||||
|
||||
_logger.LogInformation("Fudging navmesh point {Point} in blacklisted area",
|
||||
point.ToString("G", CultureInfo.InvariantCulture));
|
||||
navPoints[i] = blacklistedArea.Center +
|
||||
Vector3.Normalize(point - blacklistedArea.Center) *
|
||||
blacklistedArea.MaxDistance;
|
||||
}
|
||||
}
|
||||
}
|
||||
_movementOverrideController.AdjustPath(navPoints);
|
||||
|
||||
_navmeshIpc.MoveTo(navPoints, Destination.IsFlying);
|
||||
MovementStartedAt = DateTime.Now;
|
||||
@ -175,7 +152,8 @@ internal sealed class MovementController : IDisposable
|
||||
{
|
||||
if (Destination.DataId
|
||||
is 2012173 or 2012174 or 2012175 or 2012176
|
||||
or 2014133 or 2014134 or 2014135)
|
||||
or 2014133 or 2014134 or 2014135
|
||||
or 2014105)
|
||||
{
|
||||
Stop();
|
||||
}
|
||||
@ -336,12 +314,6 @@ internal sealed class MovementController : IDisposable
|
||||
bool CanSprint,
|
||||
bool UseNavmesh);
|
||||
|
||||
public sealed record BlacklistedArea(
|
||||
ushort TerritoryId,
|
||||
Vector3 Center,
|
||||
float MinDistance,
|
||||
float MaxDistance);
|
||||
|
||||
public sealed class PathfindingFailedException : Exception
|
||||
{
|
||||
public PathfindingFailedException()
|
||||
|
@ -0,0 +1,19 @@
|
||||
using System.Numerics;
|
||||
|
||||
namespace Questionable.Controller.NavigationOverrides;
|
||||
|
||||
internal sealed record BlacklistedArea(
|
||||
ushort TerritoryId,
|
||||
Vector3 Center,
|
||||
float MinDistance,
|
||||
float MaxDistance) : IBlacklistedLocation
|
||||
{
|
||||
public Vector3? AdjustPoint(Vector3 point)
|
||||
{
|
||||
float distance = (point - Center).Length();
|
||||
if (distance < MinDistance || distance > MaxDistance)
|
||||
return null;
|
||||
|
||||
return Center + Vector3.Normalize(point - Center) * MaxDistance;
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
using System.Numerics;
|
||||
|
||||
namespace Questionable.Controller.NavigationOverrides;
|
||||
|
||||
public sealed record BlacklistedPoint(
|
||||
ushort TerritoryId,
|
||||
Vector3 Original,
|
||||
Vector3 Replacement,
|
||||
float CheckDistance = 0.05f) : IBlacklistedLocation
|
||||
{
|
||||
public Vector3? AdjustPoint(Vector3 point)
|
||||
{
|
||||
float distance = (point - Original).Length();
|
||||
if (distance > CheckDistance)
|
||||
return null;
|
||||
|
||||
return Replacement;
|
||||
}
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
using System.Numerics;
|
||||
|
||||
namespace Questionable.Controller.NavigationOverrides;
|
||||
|
||||
internal interface IBlacklistedLocation
|
||||
{
|
||||
ushort TerritoryId { get; }
|
||||
|
||||
Vector3? AdjustPoint(Vector3 point);
|
||||
}
|
@ -0,0 +1,52 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Numerics;
|
||||
using Dalamud.Plugin.Services;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Questionable.Controller.NavigationOverrides;
|
||||
|
||||
internal sealed class MovementOverrideController
|
||||
{
|
||||
private static readonly List<IBlacklistedLocation> BlacklistedLocations = [
|
||||
new BlacklistedArea(1191, new(-223.0412f, 31.937134f, -584.03906f), 5f, 7.75f),
|
||||
new BlacklistedPoint(128, new Vector3(2f, 40.25f, 36.5f), new Vector3(0.25f, 40.25f, 36.5f))
|
||||
];
|
||||
|
||||
private readonly IClientState _clientState;
|
||||
private readonly ILogger<MovementOverrideController> _logger;
|
||||
|
||||
public MovementOverrideController(IClientState clientState, ILogger<MovementOverrideController> logger)
|
||||
{
|
||||
_clientState = clientState;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Certain areas shouldn't have navmesh points in them, e.g. the aetheryte in HF Outskirts can't be
|
||||
/// walked on without jumping, but if you teleport to the wrong side you're fucked otherwise.
|
||||
/// </summary>
|
||||
/// <param name="navPoints">list of points to check</param>
|
||||
public void AdjustPath(List<Vector3> navPoints)
|
||||
{
|
||||
foreach (var blacklistedArea in BlacklistedLocations)
|
||||
{
|
||||
if (_clientState.TerritoryType != blacklistedArea.TerritoryId)
|
||||
continue;
|
||||
|
||||
for (int i = 0; i < navPoints.Count; ++i)
|
||||
{
|
||||
Vector3? updatedPoint = blacklistedArea.AdjustPoint(navPoints[i]);
|
||||
|
||||
if (updatedPoint != null)
|
||||
{
|
||||
_logger.LogInformation("Fudging navmesh point from {Original} to {Replacement} in blacklisted area",
|
||||
navPoints[i].ToString("G", CultureInfo.InvariantCulture),
|
||||
updatedPoint.Value.ToString("G", CultureInfo.InvariantCulture));
|
||||
|
||||
navPoints[i] = updatedPoint.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -9,6 +9,7 @@ using Dalamud.Plugin.Services;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Questionable.Controller;
|
||||
using Questionable.Controller.NavigationOverrides;
|
||||
using Questionable.Controller.Steps;
|
||||
using Questionable.Controller.Steps.BaseFactory;
|
||||
using Questionable.Controller.Steps.BaseTasks;
|
||||
@ -114,6 +115,7 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
||||
serviceCollection.AddTransient<WaitAtEnd.WaitQuestCompleted>();
|
||||
|
||||
serviceCollection.AddSingleton<MovementController>();
|
||||
serviceCollection.AddSingleton<MovementOverrideController>();
|
||||
serviceCollection.AddSingleton<QuestRegistry>();
|
||||
serviceCollection.AddSingleton<QuestController>();
|
||||
serviceCollection.AddSingleton<GameUiController>();
|
||||
|
Loading…
Reference in New Issue
Block a user