Compare commits

..

27 Commits

Author SHA1 Message Date
7734692b0f
Throw an exception if using aethernet doesn't work and the destination is in another territory 2025-01-16 22:55:22 +01:00
16b62316c5
Leave TextAdvance active if waiting for a new quest sequence from the server 2025-01-13 18:38:53 +01:00
a2a36c5156
Version bump 2025-01-12 17:59:10 +01:00
10b8c1ddc2
Set minimum StopDistance to navmesh step size (0.25) 2025-01-12 11:35:46 +01:00
76e8ac4995
Set minimum StopDistance to navmesh step size (0.25) 2025-01-12 02:40:09 +01:00
2ffedfa72c
Specify loop count for AD 2025-01-12 02:36:17 +01:00
a111a4f75b
Optimize combat for overworld enemies 2025-01-12 02:28:31 +01:00
97cbeada2a
Minor Azys Lla adjustments 2025-01-12 02:13:23 +01:00
a1d02cceea Merge pull request '[HW][Side Quests][Azys Lla] 14/14 remaining Azys Lla side quests' (#127) from goatzone/Questionable:azys-lla into master
Reviewed-on: liza/Questionable#127
2025-01-11 16:09:44 +00:00
ad76ccf057
Make 'CompleteQuest' work with ItemId → UseItem 2025-01-11 17:00:04 +01:00
108d103fd8
Add some extra flight steps to avoid vnav issues; fix bad NextQuestId 2025-01-11 16:54:55 +01:00
eeebebb28c Merge pull request 'New set of sidequests for Triple Triad NPCs' (#125) from Thaksin/Questionable:master into master
Reviewed-on: liza/Questionable#125
2025-01-11 14:29:34 +00:00
93e6b6ec02
+1992 2025-01-10 15:42:38 +00:00
ec813ce9f4
+1991 2025-01-10 15:20:27 +00:00
7fe5acbaca
+1990 2025-01-10 15:07:11 +00:00
250cb44f48
+1989 2025-01-10 14:30:20 +00:00
8d4b2320fb
+1988 2025-01-10 13:58:21 +00:00
880082da0e
+1987 2025-01-10 13:35:19 +00:00
9c5fd2d3fe
+1986 2025-01-09 20:50:18 +00:00
8d18b24352
+1985 2025-01-09 16:52:15 +00:00
6e19630e60
+1984 2025-01-09 11:39:45 +00:00
8d64475f0a
+1983 2025-01-09 06:34:20 +00:00
ba5975e6ff
+1982 2025-01-09 06:15:46 +00:00
b917cd4e90
+1981 2025-01-09 06:03:06 +00:00
3889fbfb69
+1980, de-rust 1979 2025-01-09 05:51:09 +00:00
65df686329
+1979 2025-01-08 14:02:05 +00:00
Gwen
2503d1897f
New set of sidequests for Triple Triad NPCs 2025-01-04 17:22:24 +01:00
39 changed files with 2982 additions and 28 deletions

View File

@ -1,5 +1,5 @@
<Project>
<PropertyGroup Condition="$(MSBuildProjectName) != 'GatheringPathRenderer'">
<Version>4.13</Version>
<Version>4.14</Version>
</PropertyGroup>
</Project>

View File

@ -57,7 +57,7 @@
},
"TerritoryId": 152,
"InteractionType": "Interact",
"StopDistance": 0.1,
"StopDistance": 0.25,
"AetheryteShortcut": "East Shroud - Hawthorne Hut",
"Fly": true,
"SkipConditions": {
@ -83,7 +83,7 @@
},
"TerritoryId": 152,
"InteractionType": "Interact",
"StopDistance": 0.1,
"StopDistance": 0.25,
"AetheryteShortcut": "East Shroud - Hawthorne Hut",
"Fly": true,
"SkipConditions": {
@ -109,7 +109,7 @@
},
"TerritoryId": 152,
"InteractionType": "Interact",
"StopDistance": 0.1,
"StopDistance": 0.25,
"AetheryteShortcut": "East Shroud - Hawthorne Hut",
"Fly": true,
"SkipConditions": {

View File

@ -0,0 +1,61 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "goatzone",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1012145,
"Position": {
"X": -607.7516,
"Y": -176.4502,
"Z": -527.5502
},
"TerritoryId": 402,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": -441.42657,
"Y": -167.25401,
"Z": -432.4462
},
"TerritoryId": 402,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 4093,
"MinimumKillCount": 5
}
],
"Fly": true,
"$": "5 in close range here, so if any dead it might be a little slower.",
"$.1": "this is the area the quest suggests; there /are/ spinner-rooks sooner, and walking there at level w/o flying might cause interruption, but they're more spread out everywhere else - YMMV."
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1012145,
"Position": {
"X": -607.7516,
"Y": -176.4502,
"Z": -527.5502
},
"TerritoryId": 402,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,60 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "goatzone",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1012146,
"Position": {
"X": -643.76294,
"Y": -176.4502,
"Z": -527.3976
},
"TerritoryId": 402,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": -439.6144,
"Y": -186.3405,
"Z": -617.2911
},
"TerritoryId": 402,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 4092,
"MinimumKillCount": 5
}
],
"Fly": true,
"$": "by starting here we can guarantee a more sane straightline progression instead of starting in the middle, going all the way to one side, then running all the way to the other side."
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1012146,
"Position": {
"X": -643.76294,
"Y": -176.4502,
"Z": -527.3976
},
"TerritoryId": 402,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Azys Lla - Helix"
}
]
}
]
}

View File

@ -0,0 +1,55 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "goatzone",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1012147,
"Position": {
"X": -426.627,
"Y": -162.1281,
"Z": -328.6031
},
"TerritoryId": 402,
"InteractionType": "AcceptQuest",
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": -528.74396,
"Y": -143.65883,
"Z": -580.686
},
"TerritoryId": 402,
"InteractionType": "Combat",
"EnemySpawnType": "AutoOnEnterArea",
"KillEnemyDataIds": [4503],
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1012147,
"Position": {
"X": -426.627,
"Y": -162.1281,
"Z": -328.6031
},
"TerritoryId": 402,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,65 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "goatzone",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1012148,
"Position": {
"X": -173.2663,
"Y": -162.03395,
"Z": -510.39905
},
"TerritoryId": 402,
"InteractionType": "AcceptQuest",
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": -189.43037,
"Y": -160.1837,
"Z": -499.3027
},
"TerritoryId": 402,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 4091,
"MinimumKillCount": 3,
"$": "Slay clockwork paladins."
},
{
"DataId": 4090,
"MinimumKillCount": 3,
"$": "Slay clockwork engineers."
}
],
"$": "they're all around so we can just start here. possible issue with a FATE spawning here, YMMV."
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1012148,
"Position": {
"X": -173.2663,
"Y": -162.03395,
"Z": -510.39905
},
"TerritoryId": 402,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,61 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "goatzone",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1012289,
"Position": {
"X": 231.18933,
"Y": -72.92926,
"Z": -603.1434
},
"TerritoryId": 402,
"InteractionType": "AcceptQuest",
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": 517.51276,
"Y": -40.378292,
"Z": -785.99677
},
"TerritoryId": 402,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 4141,
"MinimumKillCount": 2
}
],
"Fly": true,
"$": "FATE spawns on top of the suggested area, so we move a bit east."
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1012289,
"Position": {
"X": 231.18933,
"Y": -72.92926,
"Z": -603.1434
},
"TerritoryId": 402,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,60 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "goatzone",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1012290,
"Position": {
"X": 760.5248,
"Y": -30.307041,
"Z": -579.67505
},
"TerritoryId": 402,
"InteractionType": "AcceptQuest",
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": 668.9029,
"Y": -86.006,
"Z": -775.5664
},
"TerritoryId": 402,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 4046,
"MinimumKillCount": 4
}
],
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1012290,
"Position": {
"X": 760.5248,
"Y": -30.307041,
"Z": -579.67505
},
"TerritoryId": 402,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,60 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "goatzone",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1012291,
"Position": {
"X": 804.074,
"Y": -26.326342,
"Z": -527.48914
},
"TerritoryId": 402,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": 355.31863,
"Y": -46.22946,
"Z": -507.70428
},
"TerritoryId": 402,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 4072,
"MinimumKillCount": 4
}
],
"Fly": true,
"$": "we go to the west of the marked area to avoid idling in the FATE that spawns on the east of it; we'll still path through it when we expend all the westward mobs, but that's just how they spawn, shrugging emoji."
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1012291,
"Position": {
"X": 804.074,
"Y": -26.326342,
"Z": -527.48914
},
"TerritoryId": 402,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,55 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "goatzone",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1012292,
"Position": {
"X": 583.9779,
"Y": 10.93506,
"Z": 100.02283
},
"TerritoryId": 402,
"InteractionType": "AcceptQuest",
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": 773.4017,
"Y": -0.06258035,
"Z": 147.04689
},
"TerritoryId": 402,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"KillEnemyDataIds": [4669, 4970, 4671, 4672, 4673],
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1012292,
"Position": {
"X": 583.9779,
"Y": 10.93506,
"Z": 100.02283
},
"TerritoryId": 402,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,60 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "goatzone",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1012293,
"Position": {
"X": 573.4187,
"Y": 13.072888,
"Z": 329.2439
},
"TerritoryId": 402,
"InteractionType": "AcceptQuest",
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": 495.16974,
"Y": 31.67624,
"Z": 517.37463
},
"TerritoryId": 402,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 4083,
"MinimumKillCount": 4
}
],
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1012293,
"Position": {
"X": 573.4187,
"Y": 13.072888,
"Z": 329.2439
},
"TerritoryId": 402,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,156 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "goatzone",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1012294,
"Position": {
"X": 366.4148,
"Y": 20.214104,
"Z": 756.7101
},
"TerritoryId": 402,
"InteractionType": "AcceptQuest",
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": 505.4667,
"Y": 16.87959,
"Z": 751.14856
},
"TerritoryId": 402,
"InteractionType": "WalkTo",
"Fly": true,
"$": "can get stuck on the spire structure when trying to land. could land elsewhere but we want to start with this one because it's the first on foot, so if done before flying unlocked that would necessitate walking directly past it.",
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 2005900,
"Position": {
"X": 506.76733,
"Y": 16.861145,
"Z": 750.24023
},
"TerritoryId": 402,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 2005903,
"Position": {
"X": 544.64014,
"Y": 15.945618,
"Z": 760.61633
},
"TerritoryId": 402,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
8
]
},
{
"DataId": 2005899,
"Position": {
"X": 545.4031,
"Y": 20.2182,
"Z": 802.8534
},
"TerritoryId": 402,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 2005902,
"Position": {
"X": 614.6791,
"Y": 20.2182,
"Z": 758.938
},
"TerritoryId": 402,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
},
{
"DataId": 2005901,
"Position": {
"X": 605.3406,
"Y": 15.945618,
"Z": 708.06433
},
"TerritoryId": 402,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1012294,
"Position": {
"X": 366.4148,
"Y": 20.214104,
"Z": 756.7101
},
"TerritoryId": 402,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,60 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "goatzone",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1012295,
"Position": {
"X": 214.64856,
"Y": 13.75853,
"Z": 536.9801
},
"TerritoryId": 402,
"InteractionType": "AcceptQuest",
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": 144.31177,
"Y": 5.9740877,
"Z": 387.8086
},
"TerritoryId": 402,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 4630,
"MinimumKillCount": 3
}
],
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1012295,
"Position": {
"X": 214.64856,
"Y": 13.75853,
"Z": 536.9801
},
"TerritoryId": 402,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,85 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "goatzone",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1012296,
"Position": {
"X": -658.32,
"Y": -75.48534,
"Z": 699.1531
},
"TerritoryId": 402,
"InteractionType": "AcceptQuest",
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": -345.30673,
"Y": -89.61499,
"Z": 353.53
},
"TerritoryId": 402,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 4075,
"MinimumKillCount": 3
}
],
"CompletionQuestVariablesFlags": [
{ "Low": 3 },
null,
null,
null,
null,
null
],
"Fly": true
},
{
"Position": {
"X": -553.4664,
"Y": -104.895905,
"Z": 175.68343
},
"TerritoryId": 402,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 4668,
"MinimumKillCount": 3
}
],
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1012296,
"Position": {
"X": -658.32,
"Y": -75.48534,
"Z": 699.1531
},
"TerritoryId": 402,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,60 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "goatzone",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1012297,
"Position": {
"X": -554.95544,
"Y": -89.69182,
"Z": 771.87756
},
"TerritoryId": 402,
"InteractionType": "AcceptQuest",
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": -679.16223,
"Y": -48.151093,
"Z": 542.7097
},
"TerritoryId": 402,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 4095,
"MinimumKillCount": 4
}
],
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1012297,
"Position": {
"X": -554.95544,
"Y": -89.69182,
"Z": 771.87756
},
"TerritoryId": 402,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,116 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "goatzone",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1012298,
"Position": {
"X": -192.67572,
"Y": -102.749916,
"Z": 476.9817
},
"TerritoryId": 402,
"InteractionType": "AcceptQuest",
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": -375.98807,
"Y": -106.10026,
"Z": 710.48956
},
"TerritoryId": 402,
"InteractionType": "Combat",
"EnemySpawnType": "AutoOnEnterArea",
"ComplexCombatData": [
{
"DataId": 4493,
"MinimumKillCount": 1
}
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
],
"Fly": true
},
{
"Position": {
"X": -372.88766,
"Y": -105.78837,
"Z": 746.95245
},
"TerritoryId": 402,
"InteractionType": "Combat",
"EnemySpawnType": "AutoOnEnterArea",
"ComplexCombatData": [
{
"DataId": 4493,
"MinimumKillCount": 1
}
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"Position": {
"X": -321.94852,
"Y": -106.57244,
"Z": 716.5662
},
"TerritoryId": 402,
"InteractionType": "Combat",
"EnemySpawnType": "AutoOnEnterArea",
"ComplexCombatData": [
{
"DataId": 4493,
"MinimumKillCount": 1
}
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1012298,
"Position": {
"X": -192.67572,
"Y": -102.749916,
"Z": 476.9817
},
"TerritoryId": 402,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,126 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Thaksin",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1013710,
"Position": {
"X": -294.6975,
"Y": 126.84874,
"Z": 4.5318604
},
"TerritoryId": 397,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1014133,
"Position": {
"X": -259.84595,
"Y": 126.44779,
"Z": 1.9073486
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 2006005,
"Position": {
"X": -157.70203,
"Y": 110.73462,
"Z": -52.414795
},
"TerritoryId": 397,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 2006006,
"Position": {
"X": -228.25977,
"Y": 112.47424,
"Z": -127.55017
},
"TerritoryId": 397,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 2006007,
"Position": {
"X": -348.10413,
"Y": 116.50256,
"Z": -91.93567
},
"TerritoryId": 397,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1014133,
"Position": {
"X": -259.84595,
"Y": 126.44779,
"Z": 1.9073486
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1013710,
"Position": {
"X": -294.6975,
"Y": 126.84874,
"Z": 4.5318604
},
"TerritoryId": 397,
"InteractionType": "CompleteQuest",
"NextQuestId": 1764
}
]
}
]
}

View File

@ -0,0 +1,98 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Thaksin",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1013710,
"Position": {
"X": -294.6975,
"Y": 126.84874,
"Z": 4.5318604
},
"TerritoryId": 397,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1014134,
"Position": {
"X": -293.23267,
"Y": 126.85495,
"Z": 5.2643433
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Fly": true,
"DataId": 1014136,
"Position": {
"X": 292.74426,
"Y": 132.44626,
"Z": -244.73944
},
"TerritoryId": 397,
"InteractionType": "Interact"
},
{
"Position": {
"X": 289.0053,
"Y": 132.30807,
"Z": -233.57523
},
"DataId": 4041,
"TerritoryId": 397,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [
4041
]
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1014136,
"Position": {
"X": 292.74426,
"Y": 132.44626,
"Z": -244.73944
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"Fly": true,
"DataId": 1013710,
"Position": {
"X": -294.6975,
"Y": 126.84874,
"Z": 4.5318604
},
"TerritoryId": 397,
"InteractionType": "CompleteQuest",
"NextQuestId": 1765
}
]
}
]
}

View File

@ -0,0 +1,99 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Thaksin",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1013710,
"Position": {
"X": -294.6975,
"Y": 126.84874,
"Z": 4.5318604
},
"TerritoryId": 397,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1014138,
"Position": {
"X": -219.19586,
"Y": 112.21238,
"Z": -244.1596
},
"TerritoryId": 397,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Fly": true,
"DataId": 4470,
"Position": {
"X": -468.44992,
"Y": 93.85853,
"Z": -506.40417
},
"TerritoryId": 397,
"InteractionType": "Combat",
"EnemySpawnType": "AutoOnEnterArea",
"KillEnemyDataIds": [
4470
]
}
]
},
{
"Sequence": 3,
"Steps": [
{
"Position": {
"X": -219.1624,
"Y": 112.29031,
"Z": -239.88861
},
"TerritoryId": 397,
"InteractionType": "WalkTo",
"Fly": true
},
{
"DataId": 1014138,
"Position": {
"X": -219.19586,
"Y": 112.21238,
"Z": -244.1596
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1013710,
"Position": {
"X": -294.6975,
"Y": 126.84874,
"Z": 4.5318604
},
"TerritoryId": 397,
"InteractionType": "CompleteQuest",
"NextQuestId": 1766,
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,107 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Thaksin",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1013710,
"Position": {
"X": -294.6975,
"Y": 126.84874,
"Z": 4.5318604
},
"TerritoryId": 397,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1014138,
"Position": {
"X": -219.19586,
"Y": 112.21238,
"Z": -244.1596
},
"TerritoryId": 397,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Fly": true,
"DataId": 1014140,
"Position": {
"X": -472.19043,
"Y": 93.87282,
"Z": -503.7156
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 4468,
"Position": {
"X": -696.8278,
"Y": 100.08534,
"Z": -603.926
},
"StopDistance": 0.5,
"TerritoryId": 397,
"InteractionType": "Combat",
"KillEnemyDataIds": [
4468
],
"EnemySpawnType": "AutoOnEnterArea",
"Fly": true
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1014140,
"Position": {
"X": -472.19043,
"Y": 93.87282,
"Z": -503.7156
},
"TerritoryId": 397,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"Fly": true,
"DataId": 1013710,
"Position": {
"X": -294.6975,
"Y": 126.84874,
"Z": 4.5318604
},
"TerritoryId": 397,
"InteractionType": "CompleteQuest",
"NextQuestId": 1769
}
]
}
]
}

View File

@ -0,0 +1,185 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Thaksin",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1013710,
"Position": {
"X": -294.6975,
"Y": 126.84874,
"Z": 4.5318604
},
"TerritoryId": 397,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Fly": true,
"DataId": 1014142,
"Position": {
"X": -290.33344,
"Y": 76.98337,
"Z": -259.93744
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 2006013,
"Position": {
"X": -287.76996,
"Y": 77.74463,
"Z": -278.00415
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1014142,
"Position": {
"X": -290.33344,
"Y": 76.98337,
"Z": -259.93744
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 2006014,
"Position": {
"X": -291.8593,
"Y": 76.98169,
"Z": -261.0056
},
"TerritoryId": 397,
"InteractionType": "Interact"
},
{
"DataId": 4037,
"Position": {
"X": -285.1214,
"Y": 76.98337,
"Z": -275.5287
},
"TerritoryId": 397,
"InteractionType": "Combat",
"KillEnemyDataIds": [4037],
"EnemySpawnType": "AfterInteraction"
}
]
},
{
"Sequence": 5,
"Steps": [
{
"DataId": 1014142,
"Position": {
"X": -290.33344,
"Y": 76.98337,
"Z": -259.93744
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 6,
"Steps": [
{
"Fly": true,
"DataId": 1013710,
"Position": {
"X": -294.6975,
"Y": 126.84874,
"Z": 4.5318604
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 7,
"Steps": [
{
"DataId": 1014144,
"Position": {
"X": -258.16742,
"Y": 126.98671,
"Z": 12.77179
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 8,
"Steps": [
{
"DataId": 2006015,
"Position": {
"X": -252.33844,
"Y": 127.00073,
"Z": 11.093262
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 9,
"Steps": [
{
"DataId": 1014144,
"Position": {
"X": -258.16742,
"Y": 126.98671,
"Z": 12.77179
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1013710,
"Position": {
"X": -294.6975,
"Y": 126.84874,
"Z": 4.5318604
},
"TerritoryId": 397,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,121 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Thaksin",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1014146,
"Position": {
"X": -258.74725,
"Y": 126.98546,
"Z": 12.649658
},
"TerritoryId": 397,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1014147,
"Position": {
"X": -256.97723,
"Y": 126.99508,
"Z": 13.168518
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Fly": true,
"Position": {
"X": -298.8484,
"Y": 221.68138,
"Z": 548.0529
},
"TerritoryId": 397,
"InteractionType": "WalkTo"
},
{
"Land": true,
"DataId": 1014149,
"Position": {
"X": -294.5144,
"Y": 221.58685,
"Z": 545.922
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 2006017,
"Position": {
"X": -253.34558,
"Y": 221.36255,
"Z": 528.92346
},
"TerritoryId": 397,
"InteractionType": "Interact"
},
{
"DataId": 4076,
"Position": {
"X": -257.5558,
"Y": 221.35532,
"Z": 520.9053
},
"TerritoryId": 397,
"InteractionType": "Combat",
"KillEnemyDataIds": [4076],
"EnemySpawnType": "AfterInteraction"
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1014149,
"Position": {
"X": -294.5144,
"Y": 221.58685,
"Z": 545.922
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"Fly": true,
"DataId": 1014146,
"Position": {
"X": -258.74725,
"Y": 126.98546,
"Z": 12.649658
},
"TerritoryId": 397,
"InteractionType": "CompleteQuest",
"NextQuestId": 1890
}
]
}
]
}

View File

@ -0,0 +1,92 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Thaksin",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1014146,
"Position": {
"X": -258.74725,
"Y": 126.98546,
"Z": 12.649658
},
"TerritoryId": 397,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": -297.49585,
"Y": 219.87524,
"Z": 281.65045
},
"TerritoryId": 397,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 3992,
"MinimumKillCount": 5
}
],
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Fly": true,
"DataId": 1014150,
"Position": {
"X": 507.13354,
"Y": 217.95148,
"Z": 791.37854
},
"TerritoryId": 397,
"InteractionType": "Interact",
"AetheryteShortcut": "Coerthas Western Highlands - Falcon's Nest"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": -110.26132,
"Y": 153.61101,
"Z": 10.394781
},
"TerritoryId": 397,
"InteractionType": "WalkTo",
"Fly": true,
"SkipConditions": {
"StepIf": {
"Flying": "Locked"
}
}
},
{
"Fly": true,
"DataId": 1014146,
"Position": {
"X": -258.74725,
"Y": 126.98546,
"Z": 12.649658
},
"TerritoryId": 397,
"InteractionType": "CompleteQuest",
"NextQuestId": 1891
}
]
}
]
}

View File

@ -0,0 +1,98 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Thaksin",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1014146,
"Position": {
"X": -258.74725,
"Y": 126.98546,
"Z": 12.649658
},
"TerritoryId": 397,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Fly": true,
"DataId": 1014151,
"Position": {
"X": -156.08453,
"Y": 219.14235,
"Z": 669.7031
},
"TerritoryId": 397,
"InteractionType": "Interact"
},
{
"DataId": 732,
"Position": {
"X": -151.29321,
"Y": 218.95082,
"Z": 669.4895
},
"TerritoryId": 397,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [
732
]
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1014151,
"Position": {
"X": -156.08453,
"Y": 219.14235,
"Z": 669.7031
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1014151,
"Position": {
"X": -156.08453,
"Y": 219.14235,
"Z": 669.7031
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"Fly": true,
"DataId": 1014146,
"Position": {
"X": -258.74725,
"Y": 126.98546,
"Z": 12.649658
},
"TerritoryId": 397,
"InteractionType": "CompleteQuest",
"NextQuestId": 1892
}
]
}
]
}

View File

@ -0,0 +1,83 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Thaksin",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1014146,
"Position": {
"X": -258.74725,
"Y": 126.98546,
"Z": 12.649658
},
"TerritoryId": 397,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Fly": true,
"DataId": 2006019,
"Position": {
"X": -152.42242,
"Y": 219.62305,
"Z": 669.94727
},
"TerritoryId": 397,
"InteractionType": "Interact"
},
{
"DataId": 4782,
"Position": {
"X": -158.97404,
"Y": 219.45131,
"Z": 672.79553
},
"TerritoryId": 397,
"KillEnemyDataIds": [
4782
],
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 2006181,
"Position": {
"X": -152.42242,
"Y": 219.62305,
"Z": 669.94727
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"Fly": true,
"DataId": 1014146,
"Position": {
"X": -258.74725,
"Y": 126.98546,
"Z": 12.649658
},
"TerritoryId": 397,
"InteractionType": "CompleteQuest",
"NextQuestId": 1893
}
]
}
]
}

View File

@ -0,0 +1,113 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Thaksin",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1014146,
"Position": {
"X": -258.74725,
"Y": 126.98546,
"Z": 12.649658
},
"TerritoryId": 397,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1011907,
"Position": {
"X": -288.8686,
"Y": 127.06639,
"Z": 13.199036
},
"TerritoryId": 397,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 1011910,
"Position": {
"X": -298.26813,
"Y": 126.67049,
"Z": -1.4191895
},
"TerritoryId": 397,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 1014133,
"Position": {
"X": -259.84595,
"Y": 126.44779,
"Z": 1.9073486
},
"TerritoryId": 397,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Fly": true,
"DataId": 1014152,
"Position": {
"X": 496.1776,
"Y": 133.93082,
"Z": -862.2416
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"Fly": true,
"DataId": 1014153,
"Position": {
"X": -295.82666,
"Y": 126.83744,
"Z": 3.829956
},
"TerritoryId": 397,
"InteractionType": "CompleteQuest",
"NextQuestId": 1898
}
]
}
]
}

View File

@ -0,0 +1,229 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Thaksin",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1013710,
"Position": {
"X": -294.6975,
"Y": 126.84874,
"Z": 4.5318604
},
"TerritoryId": 397,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1014153,
"Position": {
"X": -295.82666,
"Y": 126.83744,
"Z": 3.829956
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1013710,
"Position": {
"X": -294.6975,
"Y": 126.84874,
"Z": 4.5318604
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"Fly": true,
"DataId": 1014154,
"Position": {
"X": -519.1577,
"Y": 119.39417,
"Z": -161.24213
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1014155,
"Position": {
"X": -527.245,
"Y": 118.94699,
"Z": -163.13422
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 5,
"Steps": [
{
"DataId": 2006026,
"Position": {
"X": -525.7191,
"Y": 119.06604,
"Z": -165.72827
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 6,
"Steps": [
{
"Fly": true,
"DataId": 1013710,
"Position": {
"X": -294.6975,
"Y": 126.84874,
"Z": 4.5318604
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 7,
"Steps": [
{
"Fly": true,
"Position": {
"X": -92.57648,
"Y": 96.33008,
"Z": -645.1057
},
"TerritoryId": 397,
"InteractionType": "WalkTo"
},
{
"DataId": 2006027,
"Position": {
"X": -92.57648,
"Y": 96.33008,
"Z": -645.1057
},
"TerritoryId": 397,
"InteractionType": "UseItem",
"ItemId": 2001751
}
]
},
{
"Sequence": 8,
"Steps": [
{
"DataId": 2006028,
"Position": {
"X": -92.5155,
"Y": 93.52246,
"Z": -623.621
},
"TerritoryId": 397,
"InteractionType": "Interact"
},
{
"DataId": 4621,
"Position": {
"X": -92.37683,
"Y": 95.76039,
"Z": -640.7043
},
"TerritoryId": 397,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [
4621
]
}
]
},
{
"Sequence": 9,
"Steps": [
{
"DataId": 2006460,
"Position": {
"X": -92.57648,
"Y": 96.33008,
"Z": -645.1057
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 10,
"Steps": [
{
"Fly": true,
"DataId": 1013710,
"Position": {
"X": -294.6975,
"Y": 126.84874,
"Z": 4.5318604
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 11,
"Steps": [
{
"DataId": 1014147,
"Position": {
"X": -256.97723,
"Y": 126.99508,
"Z": 13.168518
},
"TerritoryId": 397,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1013710,
"Position": {
"X": -294.6975,
"Y": 126.84874,
"Z": 4.5318604
},
"TerritoryId": 397,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,140 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Thaksin",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1012170,
"Position": {
"X": 102.92212,
"Y": 3.6299734,
"Z": 65.56799
},
"TerritoryId": 418,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1012162,
"Position": {
"X": 135.97314,
"Y": 24.376427,
"Z": 12.619202
},
"TerritoryId": 418,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1012170,
"Position": {
"X": 102.92212,
"Y": 3.6299734,
"Z": 65.56799
},
"TerritoryId": 418,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1014711,
"Position": {
"X": 58.03003,
"Y": -7.146736,
"Z": 82.41394
},
"TerritoryId": 418,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 1014712,
"Position": {
"X": 93.91919,
"Y": -19.941168,
"Z": 78.20239
},
"TerritoryId": 418,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 1014713,
"Position": {
"X": 131.9447,
"Y": -20.000105,
"Z": 62.027832
},
"TerritoryId": 418,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1014714,
"Position": {
"X": 23.178406,
"Y": -12.020877,
"Z": 35.294067
},
"TerritoryId": 418,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1012170,
"Position": {
"X": 102.92212,
"Y": 3.6299734,
"Z": 65.56799
},
"TerritoryId": 418,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,149 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Thaksin",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1012180,
"Position": {
"X": -174.18176,
"Y": -12.555469,
"Z": -21.561035
},
"TerritoryId": 419,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 2006246,
"Position": {
"X": -218.40247,
"Y": -16.037292,
"Z": -34.683777
},
"TerritoryId": 419,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 2006247,
"Position": {
"X": -229.23633,
"Y": -20.035156,
"Z": -83.05487
},
"TerritoryId": 419,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 2006248,
"Position": {
"X": -252.1554,
"Y": -20.035156,
"Z": -57.66388
},
"TerritoryId": 419,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1012180,
"Position": {
"X": -174.18176,
"Y": -12.555469,
"Z": -21.561035
},
"TerritoryId": 419,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1014721,
"Position": {
"X": 119.31018,
"Y": -12.634913,
"Z": -13.626343
},
"TerritoryId": 419,
"InteractionType": "Interact",
"AethernetShortcut": [
"[Ishgard] The Jeweled Crozier",
"[Ishgard] Athenaeum Astrologicum"
]
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 2006330,
"Position": {
"X": 118.791504,
"Y": -11.6427,
"Z": -13.351685
},
"TerritoryId": 419,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1012180,
"Position": {
"X": -174.18176,
"Y": -12.555469,
"Z": -21.561035
},
"TerritoryId": 419,
"InteractionType": "CompleteQuest",
"AethernetShortcut": [
"[Ishgard] Athenaeum Astrologicum",
"[Ishgard] The Jeweled Crozier"
]
}
]
}
]
}

View File

@ -0,0 +1,68 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Thaksin",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1014718,
"Position": {
"X": -29.526245,
"Y": 11.965078,
"Z": 48.355713
},
"TerritoryId": 419,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1011231,
"Position": {
"X": 503.1051,
"Y": 217.95148,
"Z": 790.2189
},
"TerritoryId": 397,
"InteractionType": "Interact",
"AetheryteShortcut": "Coerthas Western Highlands - Falcon's Nest"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": -110.26132,
"Y": 153.61101,
"Z": 10.394781
},
"TerritoryId": 397,
"InteractionType": "WalkTo",
"Fly": true,
"SkipConditions": {
"StepIf": {
"Flying": "Locked"
}
}
},
{
"DataId": 1014719,
"Position": {
"X": -293.6294,
"Y": 125.4389,
"Z": -19.058533
},
"TerritoryId": 397,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,134 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Thaksin",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1012085,
"Position": {
"X": 286.88477,
"Y": 14.36517,
"Z": 645.1666
},
"TerritoryId": 400,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Fly": true,
"DataId": 2005720,
"Position": {
"X": 565.9419,
"Y": -9.445435,
"Z": -14.328308
},
"TerritoryId": 400,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
],
"InteractionType": "Interact"
},
{
"DataId": 2005718,
"Position": {
"X": 664.39294,
"Y": -0.4730835,
"Z": -3.2807007
},
"Fly": true,
"TerritoryId": 400,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 2005721,
"Position": {
"X": 653.83374,
"Y": -0.7172241,
"Z": -70.02368
},
"TerritoryId": 400,
"Fly": true,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null, null,
null, null,
null, 8
]
},
{
"DataId": 2005717,
"Position": {
"X": 639.00195,
"Y": 46.463623,
"Z": -113.05414
},
"TerritoryId": 400,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 2005719,
"Position": {
"X": 527.0923,
"Y": -4.287842,
"Z": -84.916504
},
"Fly": true,
"TerritoryId": 400,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"Fly": true,
"DataId": 1012085,
"Position": {
"X": 286.88477,
"Y": 14.36517,
"Z": 645.1666
},
"TerritoryId": 400,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -80,7 +80,7 @@
"null"
],
"description": "Set if pathfinding should stop closer or further away from the default stop distance",
"exclusiveMinimum": 0
"minimum": 0.25
},
"IgnoreDistanceToObject": {
"type": "boolean",

View File

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Numerics;
using Dalamud.Game.ClientState.Conditions;
using Dalamud.Game.ClientState.Objects;
using Dalamud.Game.ClientState.Objects.Enums;
@ -10,7 +11,8 @@ using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game;
using FFXIVClientStructs.FFXIV.Client.Game.Object;
using FFXIVClientStructs.FFXIV.Client.Game.UI;
using FFXIVClientStructs.FFXIV.Common.Math;
using FFXIVClientStructs.FFXIV.Client.System.Framework;
using FFXIVClientStructs.FFXIV.Common.Component.BGCollision;
using Microsoft.Extensions.Logging;
using Questionable.Controller.CombatModules;
using Questionable.Controller.Steps;
@ -38,6 +40,7 @@ internal sealed class CombatController : IDisposable
private CurrentFight? _currentFight;
private bool _wasInCombat;
private ulong? _lastTargetId;
private List<byte>? _previousQuestVariables;
public CombatController(
IEnumerable<ICombatModule> combatModules,
@ -79,7 +82,9 @@ internal sealed class CombatController : IDisposable
Data = combatData,
LastDistanceCheck = DateTime.Now,
};
_wasInCombat = combatData.SpawnType is EEnemySpawnType.QuestInterruption or EEnemySpawnType.FinishCombatIfAny;
_wasInCombat =
combatData.SpawnType is EEnemySpawnType.QuestInterruption or EEnemySpawnType.FinishCombatIfAny;
UpdateLastTargetAndQuestVariables(null);
return true;
}
else
@ -115,7 +120,31 @@ internal sealed class CombatController : IDisposable
{
// wait until the game cleans up the target
if (lastTarget.IsDead)
return EStatus.InCombat;
{
ElementId? elementId = _currentFight.Data.ElementId;
QuestProgressInfo? questProgressInfo = elementId != null
? _questFunctions.GetQuestProgressInfo(elementId)
: null;
if (questProgressInfo != null &&
questProgressInfo.Sequence == _currentFight.Data.Sequence &&
QuestWorkUtils.HasCompletionFlags(_currentFight.Data.CompletionQuestVariablesFlags) &&
QuestWorkUtils.MatchesQuestWork(_currentFight.Data.CompletionQuestVariablesFlags,
questProgressInfo))
{
// would be the final enemy of the bunch
return EStatus.InCombat;
}
else if (questProgressInfo != null &&
questProgressInfo.Sequence == _currentFight.Data.Sequence &&
_previousQuestVariables != null &&
!questProgressInfo.Variables.SequenceEqual(_previousQuestVariables))
{
UpdateLastTargetAndQuestVariables(null);
}
else
return EStatus.InCombat;
}
}
else
_lastTargetId = null;
@ -372,9 +401,18 @@ internal sealed class CombatController : IDisposable
float hitboxOffset = player.HitboxRadius + gameObject.HitboxRadius;
float actualDistance = Vector3.Distance(player.Position, gameObject.Position);
float maxDistance = player.ClassJob.ValueNullable?.Role is 3 or 4 ? 20f : 2.9f;
if (actualDistance - hitboxOffset >= maxDistance)
bool outOfRange = actualDistance - hitboxOffset >= maxDistance;
bool isInLineOfSight = IsInLineOfSight(gameObject);
if (outOfRange || !isInLineOfSight)
{
if (actualDistance - hitboxOffset <= 5)
bool useNavmesh = actualDistance - hitboxOffset > 5f;
if (!outOfRange && !isInLineOfSight)
{
maxDistance = Math.Min(maxDistance, actualDistance) / 2;
useNavmesh = true;
}
if (!useNavmesh)
{
_logger.LogInformation("Moving to {TargetName} ({DataId}) to attack", gameObject.Name,
gameObject.DataId);
@ -391,6 +429,44 @@ internal sealed class CombatController : IDisposable
}
}
internal unsafe bool IsInLineOfSight(IGameObject target)
{
Vector3 sourcePos = _clientState.LocalPlayer!.Position;
sourcePos.Y += 2;
Vector3 targetPos = target.Position;
targetPos.Y += 2;
Vector3 direction = targetPos - sourcePos;
float distance = direction.Length();
direction = Vector3.Normalize(direction);
Vector3 originVect = new Vector3(sourcePos.X, sourcePos.Y, sourcePos.Z);
Vector3 directionVect = new Vector3(direction.X, direction.Y, direction.Z);
RaycastHit hit;
var flags = stackalloc int[] { 0x4000, 0, 0x4000, 0 };
var isLoSBlocked =
Framework.Instance()->BGCollisionModule->RaycastMaterialFilter(&hit, &originVect, &directionVect, distance,
1, flags);
return isLoSBlocked == false;
}
private void UpdateLastTargetAndQuestVariables(IGameObject? target)
{
_lastTargetId = target?.GameObjectId;
_previousQuestVariables = _currentFight!.Data.ElementId != null
? _questFunctions.GetQuestProgressInfo(_currentFight.Data.ElementId)?.Variables
: null;
/*
_logger.LogTrace("UpdateTargetData: {TargetId}; {QuestVariables}",
target?.GameObjectId.ToString("X8", CultureInfo.InvariantCulture) ?? "null",
_previousQuestVariables != null ? string.Join(", ", _previousQuestVariables) : "null");
*/
}
public void Stop(string label)
{
using var scope = _logger.BeginScope(label);
@ -422,6 +498,8 @@ internal sealed class CombatController : IDisposable
public sealed class CombatData
{
public required ElementId? ElementId { get; init; }
public required int Sequence { get; init; }
public required IList<QuestWorkValue?> CompletionQuestVariablesFlags { get; init; }
public required EEnemySpawnType SpawnType { get; init; }
public required List<uint> KillEnemyDataIds { get; init; }
public required List<ComplexCombatData> ComplexCombatDatas { get; init; }

View File

@ -173,7 +173,7 @@ internal abstract class MiniTaskController<T>
if (_condition[ConditionFlag.Mounted])
tasks.Add(new Mount.UnmountTask());
tasks.Add(Combat.Factory.CreateTask(null, false, EEnemySpawnType.QuestInterruption, [], [], [], null));
tasks.Add(Combat.Factory.CreateTask(null, -1, false, EEnemySpawnType.QuestInterruption, [], [], [], null));
tasks.Add(new WaitAtEnd.WaitDelay());
_taskQueue.InterruptWith(tasks);
}

View File

@ -102,17 +102,30 @@ internal static class Combat
ArgumentNullException.ThrowIfNull(step.EnemySpawnType);
bool isLastStep = sequence.Steps.Last() == step;
return CreateTask(quest.Id, isLastStep, step.EnemySpawnType.Value, step.KillEnemyDataIds,
step.CompletionQuestVariablesFlags, step.ComplexCombatData, step.CombatItemUse);
return CreateTask(quest.Id,
sequence.Sequence,
isLastStep,
step.EnemySpawnType.Value,
step.KillEnemyDataIds,
step.CompletionQuestVariablesFlags,
step.ComplexCombatData,
step.CombatItemUse);
}
internal static Task CreateTask(ElementId? elementId, bool isLastStep, EEnemySpawnType enemySpawnType,
IList<uint> killEnemyDataIds, IList<QuestWorkValue?> completionQuestVariablesFlags,
IList<ComplexCombatData> complexCombatData, CombatItemUse? combatItemUse)
internal static Task CreateTask(ElementId? elementId,
int sequence,
bool isLastStep,
EEnemySpawnType enemySpawnType,
IList<uint> killEnemyDataIds,
IList<QuestWorkValue?> completionQuestVariablesFlags,
IList<ComplexCombatData> complexCombatData,
CombatItemUse? combatItemUse)
{
return new Task(new CombatController.CombatData
{
ElementId = elementId,
Sequence = sequence,
CompletionQuestVariablesFlags = completionQuestVariablesFlags,
SpawnType = enemySpawnType,
KillEnemyDataIds = killEnemyDataIds.ToList(),
ComplexCombatDatas = complexCombatData.ToList(),

View File

@ -29,7 +29,7 @@ internal static class UseItem
{
public IEnumerable<ITask> CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step)
{
if (step.InteractionType is EInteractionType.SinglePlayerDuty)
if (step.InteractionType is EInteractionType.SinglePlayerDuty or EInteractionType.CompleteQuest)
{
if (step.ItemId == null)
return [];

View File

@ -179,10 +179,12 @@ internal static class AethernetShortcut
}
}
}
else
else if (clientState.TerritoryType == aetheryteData.TerritoryIds[Task.To])
logger.LogWarning(
"Aethernet shortcut not unlocked (from: {FromAetheryte}, to: {ToAetheryte}), walking manually",
"Aethernet shortcut not unlocked (from: {FromAetheryte}, to: {ToAetheryte}), skipping as we are already in the destination territory",
Task.From, Task.To);
else
throw new TaskException($"Aethernet shortcut not unlocked (from: {Task.From}, to: {Task.To})");
return false;
}

View File

@ -67,7 +67,7 @@ internal sealed class AutoDutyIpc
try
{
_run.InvokeAction(cfcData.TerritoryId, 0, true);
_run.InvokeAction(cfcData.TerritoryId, 1, true);
}
catch (IpcError e)
{

View File

@ -22,13 +22,16 @@ internal sealed class TextAdvanceIpc : IDisposable
private readonly string _pluginName;
private readonly ExternalTerritoryConfig _externalTerritoryConfig = new();
public TextAdvanceIpc(IDalamudPluginInterface pluginInterface, IFramework framework, QuestController questController, Configuration configuration)
public TextAdvanceIpc(IDalamudPluginInterface pluginInterface, IFramework framework,
QuestController questController, Configuration configuration)
{
_framework = framework;
_questController = questController;
_configuration = configuration;
_isInExternalControl = pluginInterface.GetIpcSubscriber<bool>("TextAdvance.IsInExternalControl");
_enableExternalControl = pluginInterface.GetIpcSubscriber<string, ExternalTerritoryConfig, bool>("TextAdvance.EnableExternalControl");
_enableExternalControl =
pluginInterface.GetIpcSubscriber<string, ExternalTerritoryConfig, bool>(
"TextAdvance.EnableExternalControl");
_disableExternalControl = pluginInterface.GetIpcSubscriber<string, bool>("TextAdvance.DisableExternalControl");
_pluginName = pluginInterface.InternalName;
_framework.Update += OnUpdate;
@ -37,7 +40,7 @@ internal sealed class TextAdvanceIpc : IDisposable
public void Dispose()
{
_framework.Update -= OnUpdate;
if(_isExternalControlActivated)
if (_isExternalControlActivated)
{
_disableExternalControl.InvokeFunc(_pluginName);
}
@ -45,11 +48,13 @@ internal sealed class TextAdvanceIpc : IDisposable
private void OnUpdate(IFramework framework)
{
if(_configuration.General.ConfigureTextAdvance && _questController.IsRunning)
bool hasActiveQuest = _questController.IsRunning ||
_questController.AutomationType != QuestController.EAutomationType.Manual;
if (_configuration.General.ConfigureTextAdvance && hasActiveQuest)
{
if(!_isInExternalControl.InvokeFunc())
if (!_isInExternalControl.InvokeFunc())
{
if(_enableExternalControl.InvokeFunc(_pluginName, _externalTerritoryConfig))
if (_enableExternalControl.InvokeFunc(_pluginName, _externalTerritoryConfig))
{
_isExternalControlActivated = true;
}
@ -57,9 +62,9 @@ internal sealed class TextAdvanceIpc : IDisposable
}
else
{
if(_isExternalControlActivated)
if (_isExternalControlActivated)
{
if(_disableExternalControl.InvokeFunc(_pluginName) || !_isInExternalControl.InvokeFunc())
if (_disableExternalControl.InvokeFunc(_pluginName) || !_isInExternalControl.InvokeFunc())
{
_isExternalControlActivated = false;
}