Compare commits

..

No commits in common. "17cfda172b8c819a5cc8485c7f15a3c5f7e9c22b" and "c6739b3cced6c441d1246ac41835b2dcb787065f" have entirely different histories.

23 changed files with 46 additions and 1467 deletions

View File

@ -1,160 +0,0 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 956,
"InteractionType": "None"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 34281,
"Locations": [
{
"Position": {
"X": -510.2663,
"Y": -20.72923,
"Z": -119.9257
},
"MinimumAngle": -120,
"MaximumAngle": 10
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34283,
"Locations": [
{
"Position": {
"X": -502.4525,
"Y": -18.55583,
"Z": -139.683
},
"MinimumAngle": -95,
"MaximumAngle": -35,
"MinimumDistance": 1,
"MaximumDistance": 1.8
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34284,
"Locations": [
{
"Position": {
"X": -499.3535,
"Y": -18.75164,
"Z": -141.9256
},
"MinimumAngle": -75,
"MaximumAngle": 15,
"MinimumDistance": 1,
"MaximumDistance": 2.3
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34285,
"Locations": [
{
"Position": {
"X": -495.1168,
"Y": -18.65139,
"Z": -142.5636
},
"MinimumAngle": -85,
"MaximumAngle": 45
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34286,
"Locations": [
{
"Position": {
"X": -491.4826,
"Y": -19.44574,
"Z": -144.2088
},
"MinimumAngle": -105,
"MaximumAngle": 25
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34287,
"Locations": [
{
"Position": {
"X": -488.8665,
"Y": -19.70717,
"Z": -147.403
},
"MinimumAngle": 230,
"MaximumAngle": 340
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34289,
"Locations": [
{
"Position": {
"X": -489.1829,
"Y": -19.91622,
"Z": -153.7781
},
"MinimumAngle": 200,
"MaximumAngle": 320
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34291,
"Locations": [
{
"Position": {
"X": -490.1324,
"Y": -18.06493,
"Z": -164.4281
},
"MinimumAngle": 210,
"MaximumAngle": 310
}
]
}
]
}
]
}

View File

@ -1,76 +0,0 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1005550,
"Position": {
"X": 105.27197,
"Y": 15.359643,
"Z": -357.3816
},
"TerritoryId": 146,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": -84.12953,
"Y": -14.744684,
"Z": -148.0814
},
"TerritoryId": 146,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 134,
"MinimumKillCount": 2
}
],
"Fly": true
},
{
"Position": {
"X": -253.56975,
"Y": 6.8785334,
"Z": 162.0949
},
"TerritoryId": 146,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 358,
"MinimumKillCount": 1
}
],
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1005550,
"Position": {
"X": 105.27197,
"Y": 15.359643,
"Z": -357.3816
},
"TerritoryId": 146,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -1,114 +0,0 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1005550,
"Position": {
"X": 105.27197,
"Y": 15.359643,
"Z": -357.3816
},
"TerritoryId": 146,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 2003169,
"Position": {
"X": -191.18036,
"Y": 3.6774292,
"Z": -162.00513
},
"TerritoryId": 146,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [80],
"Fly": true
},
{
"DataId": 80,
"Position": {
"X": -198.6194,
"Y": 4.4395595,
"Z": -156.7357
},
"TerritoryId": 146,
"InteractionType": "UseItem",
"ItemId": 2001191
},
{
"DataId": 2003168,
"Position": {
"X": -155.44366,
"Y": 3.8604736,
"Z": -132.21948
},
"TerritoryId": 146,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [80],
"Fly": true
},
{
"DataId": 80,
"Position": {
"X": -159.83832,
"Y": 4.2440715,
"Z": -136.43097
},
"TerritoryId": 146,
"InteractionType": "UseItem",
"ItemId": 2001191
},
{
"DataId": 2003172,
"Position": {
"X": -19.36377,
"Y": 0.47296143,
"Z": 15.182739
},
"TerritoryId": 146,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [80],
"Fly": true
},
{
"DataId": 81,
"Position": {
"X": -19.760498,
"Y": 0.97421986,
"Z": 19.790894
},
"TerritoryId": 146,
"InteractionType": "UseItem",
"ItemId": 2001191
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1005550,
"Position": {
"X": 105.27197,
"Y": 15.359643,
"Z": -357.3816
},
"TerritoryId": 146,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -1,68 +0,0 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1005550,
"Position": {
"X": 105.27197,
"Y": 15.359643,
"Z": -357.3816
},
"TerritoryId": 146,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": -9.631764,
"Y": 4.530592,
"Z": -52.115612
},
"TerritoryId": 146,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 2452,
"MinimumKillCount": 2
}
],
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": -74.8761,
"Y": -1.9533517,
"Z": -51.731575
},
"TerritoryId": 146,
"InteractionType": "WalkTo"
},
{
"DataId": 1005550,
"Position": {
"X": 105.27197,
"Y": 15.359643,
"Z": -357.3816
},
"TerritoryId": 146,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -269,8 +269,7 @@
"Z": -353.6584 "Z": -353.6584
}, },
"TerritoryId": 140, "TerritoryId": 140,
"InteractionType": "Interact", "InteractionType": "Interact"
"DisableNavmesh": true
} }
] ]
}, },

View File

@ -1,5 +1,5 @@
{ {
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json", "$schema": "https://git.carvel.li/plogon_enjoyer/Questionable/raw/branch/temp/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer", "Author": "plogon_enjoyer",
"QuestSequence": [ "QuestSequence": [
{ {
@ -100,7 +100,7 @@
"Z": -404.1352 "Z": -404.1352
}, },
"TerritoryId": 401, "TerritoryId": 401,
"InteractionType": "CompleteQuest", "InteractionType": "Interact",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu", "AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true "Fly": true
} }

View File

@ -84,16 +84,6 @@
{ {
"Sequence": 255, "Sequence": 255,
"Steps": [ "Steps": [
{
"Position": {
"X": 317.41415,
"Y": 110.85538,
"Z": -34.527588
},
"TerritoryId": 401,
"InteractionType": "WalkTo",
"$": "Run away from the enemy to TP"
},
{ {
"DataId": 1016092, "DataId": 1016092,
"Position": { "Position": {

View File

@ -1,138 +0,0 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1016088,
"Position": {
"X": -818.143,
"Y": -129.93259,
"Z": -414.02307
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1016228,
"Position": {
"X": -547.7836,
"Y": -57.646603,
"Z": -549.76733
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 2006684,
"Position": {
"X": -357.29004,
"Y": -56.565247,
"Z": -598.9929
},
"TerritoryId": 401,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [5243],
"Fly": true
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1016229,
"Position": {
"X": -369.31415,
"Y": -54.222214,
"Z": -605.3407
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 5,
"Steps": [
{
"DataId": 2006685,
"Position": {
"X": -107.07257,
"Y": -13.5043335,
"Z": -655.6039
},
"TerritoryId": 401,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [5243],
"Fly": true
}
]
},
{
"Sequence": 6,
"Steps": [
{
"DataId": 1016230,
"Position": {
"X": -114.85474,
"Y": -13.978999,
"Z": -652.8878
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1016088,
"Position": {
"X": -818.143,
"Y": -129.93259,
"Z": -414.02307
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"Fly": true,
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu"
}
]
}
]
}

View File

@ -1,86 +0,0 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1016088,
"Position": {
"X": -818.143,
"Y": -129.93259,
"Z": -414.02307
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 2006707,
"Position": {
"X": 72.92273,
"Y": -88.39557,
"Z": 428.82422
},
"TerritoryId": 401,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [5244],
"Fly": true,
"AetheryteShortcut": "The Sea of Clouds - Camp Cloudtop"
},
{
"DataId": 2006686,
"Position": {
"X": 167.58984,
"Y": -97.428955,
"Z": 455.71057
},
"TerritoryId": 401,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [5244],
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1016088,
"Position": {
"X": -818.143,
"Y": -129.93259,
"Z": -414.02307
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"Fly": true,
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu"
}
]
}
]
}

View File

@ -1,104 +0,0 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1016088,
"Position": {
"X": -818.143,
"Y": -129.93259,
"Z": -414.02307
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 2006690,
"Position": {
"X": -857.6333,
"Y": 4.6539917,
"Z": -218.67706
},
"TerritoryId": 401,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [5246],
"Fly": true
},
{
"DataId": 2006689,
"Position": {
"X": -830.3197,
"Y": -14.358765,
"Z": -131.82275
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
},
{
"DataId": 2006687,
"Position": {
"X": -553.97876,
"Y": -58.42682,
"Z": -271.10706
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
},
{
"DataId": 2006688,
"Position": {
"X": -715.1446,
"Y": -58.640503,
"Z": -342.30566
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1016088,
"Position": {
"X": -818.143,
"Y": -129.93259,
"Z": -414.02307
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -1,120 +0,0 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1016092,
"Position": {
"X": -792.6299,
"Y": -133.32184,
"Z": -425.5589
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1016375,
"Position": {
"X": -627.89355,
"Y": -149.95285,
"Z": 480.15564
},
"TerritoryId": 401,
"InteractionType": "UseItem",
"ItemId": 2001934,
"Fly": true,
"AetheryteShortcut": "The Sea of Clouds - Camp Cloudtop"
},
{
"DataId": 1016232,
"Position": {
"X": -452.10956,
"Y": -187.396,
"Z": 734.18774
},
"TerritoryId": 401,
"InteractionType": "UseItem",
"ItemId": 2001934,
"Fly": true
},
{
"DataId": 1016233,
"Position": {
"X": -359.823,
"Y": -184.95448,
"Z": 796.71924
},
"TerritoryId": 401,
"InteractionType": "UseItem",
"ItemId": 2001934,
"Fly": true
},
{
"DataId": 1016374,
"Position": {
"X": -343.00757,
"Y": -161.8661,
"Z": 770.01587
},
"TerritoryId": 401,
"InteractionType": "UseItem",
"ItemId": 2001934,
"Fly": true
},
{
"DataId": 1016231,
"Position": {
"X": -333.79114,
"Y": -184.97446,
"Z": 625.1162
},
"TerritoryId": 401,
"InteractionType": "UseItem",
"ItemId": 2001934,
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1016092,
"Position": {
"X": -792.6299,
"Y": -133.32184,
"Z": -425.5589
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]
}
]
}

View File

@ -1,104 +0,0 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1016091,
"Position": {
"X": -804.25726,
"Y": -133.2695,
"Z": -390.89038
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1016508,
"Position": {
"X": -261.8601,
"Y": -132.0669,
"Z": 388.66248
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true,
"AetheryteShortcut": "The Sea of Clouds - Camp Cloudtop"
},
{
"DataId": 1016235,
"Position": {
"X": -229.48047,
"Y": -129.59497,
"Z": 418.44812
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
},
{
"DataId": 1016236,
"Position": {
"X": -196.2768,
"Y": -131.82275,
"Z": 333.9436
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
},
{
"DataId": 1016216,
"Position": {
"X": -253.62024,
"Y": -130.38837,
"Z": 340.3219
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1016091,
"Position": {
"X": -804.25726,
"Y": -133.2695,
"Z": -390.89038
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"Fly": true,
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu"
}
]
}
]
}

View File

@ -1,116 +0,0 @@
{
"$schema": "https://git.carvel.li/plogon_enjoyer/Questionable/raw/branch/temp/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1016088,
"Position": {
"X": -818.143,
"Y": -129.93259,
"Z": -414.02307
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Position": {
"X": 650.37317,
"Y": -41.15606,
"Z": -302.4378
},
"TerritoryId": 401,
"InteractionType": "WalkTo",
"Fly": true
},
{
"DataId": 1016362,
"Position": {
"X": 647.57764,
"Y": -41.156067,
"Z": -301.47253
},
"TerritoryId": 401,
"InteractionType": "Emote",
"Emote": "sundropdance"
},
{
"DataId": 1016365,
"Position": {
"X": 682.36804,
"Y": -11.396843,
"Z": -400.6256
},
"TerritoryId": 401,
"InteractionType": "Emote",
"Emote": "sundropdance",
"Fly": true
},
{
"DataId": 1016364,
"Position": {
"X": 799.9846,
"Y": -11.396843,
"Z": -416.98334
},
"TerritoryId": 401,
"InteractionType": "Emote",
"Emote": "sundropdance",
"Fly": true
},
{
"DataId": 1016363,
"Position": {
"X": 776.9131,
"Y": -39.97968,
"Z": -540.24567
},
"TerritoryId": 401,
"InteractionType": "Emote",
"Emote": "sundropdance",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1016088,
"Position": {
"X": -818.143,
"Y": -129.93259,
"Z": -414.02307
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]
}
]
}

View File

@ -1,98 +0,0 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1024771,
"Position": {
"X": 12.008789,
"Y": 55.97821,
"Z": 237.96448
},
"TerritoryId": 612,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1023142,
"Position": {
"X": -642.9083,
"Y": 130.25946,
"Z": -538.29254
},
"TerritoryId": 612,
"InteractionType": "Interact",
"Fly": true,
"AetheryteShortcut": "Fringes - Castrum Oriens"
},
{
"DataId": 1024937,
"Position": {
"X": 450.88867,
"Y": 114.36421,
"Z": 235.91968
},
"TerritoryId": 612,
"InteractionType": "Interact",
"Fly": true,
"AetheryteShortcut": "Fringes - Peering Stones"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1024952,
"Position": {
"X": 12.008789,
"Y": 55.97821,
"Z": 237.96448
},
"TerritoryId": 612,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1025235,
"Position": {
"X": -155.2301,
"Y": 39.096687,
"Z": 159.0448
},
"TerritoryId": 612,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1024952,
"Position": {
"X": 12.008789,
"Y": 55.97821,
"Z": 237.96448
},
"TerritoryId": 612,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -1,147 +0,0 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "kaiser",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"Position": {
"X": -193.89642,
"Y": -49.19972,
"Z": -262.13477
},
"TerritoryId": 959,
"InteractionType": "None",
"AetheryteShortcut": "Mare Lamentorum - Bestways Burrow",
"Fly": true,
"StopDistance": 5,
"SkipConditions": {
"AetheryteShortcutIf": {
"NearPosition": {
"Position": {
"X": -193.89642,
"Y": -49.19972,
"Z": -262.13477
},
"TerritoryId": 959,
"MaximumDistance": 100
}
}
}
}
,
{
"DataId": 1044402,
"Position": {
"X": -193.89642,
"Y": -49.19972,
"Z": -262.13477
},
"TerritoryId": 959,
"InteractionType": "AcceptQuest",
"StopDistance": 5,
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1044924,
"Position": {
"X": 344.625,
"Y": -168.00002,
"Z": -403.89105
},
"TerritoryId": 959,
"InteractionType": "Interact",
"StopDistance": 5,
"AetheryteShortcut": "Mare Lamentorum - Bestways Burrow",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1044926,
"Position": {
"X": 500.96887,
"Y": -164.43474,
"Z": -698.3902
},
"TerritoryId": 959,
"InteractionType": "Interact",
"StopDistance": 5,
"AetheryteShortcut": "Mare Lamentorum - Bestways Burrow",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1044928,
"Position": {
"X": -172.74744,
"Y": -49.199722,
"Z": -250.8736
},
"TerritoryId": 959,
"InteractionType": "Interact",
"StopDistance": 5,
"AetheryteShortcut": "Mare Lamentorum - Bestways Burrow",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 255,
"Steps": [
{
"TerritoryId": 959,
"InteractionType": "Craft",
"ItemId": 38845,
"ItemCount": 2
},
{
"DataId": 1044928,
"Position": {
"X": -172.74744,
"Y": -49.199722,
"Z": -250.8736
},
"TerritoryId": 959,
"InteractionType": "CompleteQuest",
"StopDistance": 5,
"AetheryteShortcut": "Mare Lamentorum - Bestways Burrow",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
}
]
}

View File

@ -1,38 +0,0 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": -506.1484,
"Y": -22.671598,
"Z": -116.16144
},
"TerritoryId": 956,
"InteractionType": "InitiateLeve",
"AetheryteShortcut": "Labyrinthos - Aporia",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
},
{
"TerritoryId": 956,
"InteractionType": "Gather",
"ItemsToGather": [
{
"ItemId": 2003172,
"AlternativeItemId": 2003173,
"ItemCount": 999
}
]
}
]
}
]
}

View File

@ -51,7 +51,7 @@ internal sealed unsafe class GatheringController : MiniTaskController<GatheringC
IServiceProvider serviceProvider, IServiceProvider serviceProvider,
IDataManager dataManager, IDataManager dataManager,
IPluginLog pluginLog) IPluginLog pluginLog)
: base(chatGui, condition, serviceProvider, dataManager, logger) : base(chatGui, condition, serviceProvider, logger)
{ {
_movementController = movementController; _movementController = movementController;
_gatheringPointRegistry = gatheringPointRegistry; _gatheringPointRegistry = gatheringPointRegistry;

View File

@ -2,18 +2,14 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Dalamud.Game.ClientState.Conditions; using Dalamud.Game.ClientState.Conditions;
using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using LLib;
using Lumina.Excel.GeneratedSheets;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Questionable.Controller.Steps; using Questionable.Controller.Steps;
using Questionable.Controller.Steps.Common;
using Questionable.Controller.Steps.Interactions; using Questionable.Controller.Steps.Interactions;
using Questionable.Controller.Steps.Shared; using Questionable.Controller.Steps.Shared;
using Questionable.Functions;
using Questionable.Model.Questing; using Questionable.Model.Questing;
using Mount = Questionable.Controller.Steps.Common.Mount;
namespace Questionable.Controller; namespace Questionable.Controller;
@ -26,17 +22,13 @@ internal abstract class MiniTaskController<T>
private readonly IServiceProvider _serviceProvider; private readonly IServiceProvider _serviceProvider;
private readonly ILogger<T> _logger; private readonly ILogger<T> _logger;
private readonly string _actionCanceledText;
protected MiniTaskController(IChatGui chatGui, ICondition condition, IServiceProvider serviceProvider, protected MiniTaskController(IChatGui chatGui, ICondition condition, IServiceProvider serviceProvider,
IDataManager dataManager, ILogger<T> logger) ILogger<T> logger)
{ {
_chatGui = chatGui; _chatGui = chatGui;
_logger = logger; _logger = logger;
_serviceProvider = serviceProvider; _serviceProvider = serviceProvider;
_condition = condition; _condition = condition;
_actionCanceledText = dataManager.GetString<LogMessage>(1314, x => x.Text)!;
} }
protected virtual void UpdateCurrentTask() protected virtual void UpdateCurrentTask()
@ -180,22 +172,4 @@ internal abstract class MiniTaskController<T>
foreach (ITask task in _taskQueue.RemainingTasks) foreach (ITask task in _taskQueue.RemainingTasks)
_logger.LogInformation("- {TaskName}", task); _logger.LogInformation("- {TaskName}", task);
} }
public void OnErrorToast(ref SeString message, ref bool isHandled)
{
if (_taskQueue.CurrentTaskExecutor is IToastAware toastAware)
{
if (toastAware.OnErrorToast(message))
{
isHandled = true;
}
}
if (!isHandled)
{
if (GameFunctions.GameStringEquals(_actionCanceledText, message.TextValue) &&
!_condition[ConditionFlag.InFlight])
InterruptQueueWithCombat();
}
}
} }

View File

@ -43,6 +43,8 @@ internal sealed class QuestController : MiniTaskController<QuestController>, IDi
private readonly TaskCreator _taskCreator; private readonly TaskCreator _taskCreator;
private readonly ILogger<QuestController> _logger; private readonly ILogger<QuestController> _logger;
private readonly string _actionCanceledText;
private readonly object _progressLock = new(); private readonly object _progressLock = new();
private QuestProgress? _startedQuest; private QuestProgress? _startedQuest;
@ -82,7 +84,7 @@ internal sealed class QuestController : MiniTaskController<QuestController>, IDi
TaskCreator taskCreator, TaskCreator taskCreator,
IServiceProvider serviceProvider, IServiceProvider serviceProvider,
IDataManager dataManager) IDataManager dataManager)
: base(chatGui, condition, serviceProvider, dataManager, logger) : base(chatGui, condition, serviceProvider, logger)
{ {
_clientState = clientState; _clientState = clientState;
_gameFunctions = gameFunctions; _gameFunctions = gameFunctions;
@ -103,6 +105,8 @@ internal sealed class QuestController : MiniTaskController<QuestController>, IDi
_condition.ConditionChange += OnConditionChange; _condition.ConditionChange += OnConditionChange;
_toastGui.Toast += OnNormalToast; _toastGui.Toast += OnNormalToast;
_toastGui.ErrorToast += OnErrorToast; _toastGui.ErrorToast += OnErrorToast;
_actionCanceledText = dataManager.GetString<LogMessage>(1314, x => x.Text)!;
} }
public EAutomationType AutomationType public EAutomationType AutomationType
@ -805,6 +809,24 @@ internal sealed class QuestController : MiniTaskController<QuestController>, IDi
_gatheringController.OnNormalToast(message); _gatheringController.OnNormalToast(message);
} }
private void OnErrorToast(ref SeString message, ref bool isHandled)
{
if (_taskQueue.CurrentTaskExecutor is IToastAware toastAware)
{
if (toastAware.OnErrorToast(message))
{
isHandled = true;
}
}
if (!isHandled)
{
if (GameFunctions.GameStringEquals(_actionCanceledText, message.TextValue) &&
!_condition[ConditionFlag.InFlight])
InterruptQueueWithCombat();
}
}
public void Dispose() public void Dispose()
{ {
_toastGui.ErrorToast -= OnErrorToast; _toastGui.ErrorToast -= OnErrorToast;

View File

@ -92,24 +92,17 @@ internal sealed class QuestRegistry
foreach ((ElementId questId, QuestRoot questRoot) in AssemblyQuestLoader.GetQuests()) foreach ((ElementId questId, QuestRoot questRoot) in AssemblyQuestLoader.GetQuests())
{ {
try var questInfo = _questData.GetQuestInfo(questId);
if (questInfo is LeveInfo leveInfo)
_leveData.AddQuestSteps(leveInfo, questRoot);
Quest quest = new()
{ {
var questInfo = _questData.GetQuestInfo(questId); Id = questId,
if (questInfo is LeveInfo leveInfo) Root = questRoot,
_leveData.AddQuestSteps(leveInfo, questRoot); Info = questInfo,
Quest quest = new() Source = Quest.ESource.Assembly,
{ };
Id = questId, _quests[quest.Id] = quest;
Root = questRoot,
Info = questInfo,
Source = Quest.ESource.Assembly,
};
_quests[quest.Id] = quest;
}
catch (Exception e)
{
_logger.LogWarning("Not loading unknown quest {QuestId} from assembly: {Message}", questId, e.Message);
}
} }
_logger.LogInformation("Loaded {Count} quests from assembly", _quests.Count); _logger.LogInformation("Loaded {Count} quests from assembly", _quests.Count);

View File

@ -2,7 +2,6 @@
using System.Linq; using System.Linq;
using System.Numerics; using System.Numerics;
using Dalamud.Game.ClientState.Objects.Enums; using Dalamud.Game.ClientState.Objects.Enums;
using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Questionable.Controller.Steps.Shared; using Questionable.Controller.Steps.Shared;
@ -27,7 +26,7 @@ internal static class MoveToLandingLocation
MoveTo.MoveExecutor moveExecutor, MoveTo.MoveExecutor moveExecutor,
GameFunctions gameFunctions, GameFunctions gameFunctions,
IObjectTable objectTable, IObjectTable objectTable,
ILogger<MoveToLandingLocationExecutor> logger) : TaskExecutor<Task>, IToastAware ILogger<MoveToLandingLocationExecutor> logger) : TaskExecutor<Task>
{ {
private ITask _moveTask = null!; private ITask _moveTask = null!;
@ -58,6 +57,5 @@ internal static class MoveToLandingLocation
} }
public override ETaskResult Update() => moveExecutor.Update(); public override ETaskResult Update() => moveExecutor.Update();
public bool OnErrorToast(SeString message) => moveExecutor.OnErrorToast(message);
} }
} }

View File

@ -2,7 +2,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Dalamud.Game.Text; using Dalamud.Game.Text;
using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Application.Network.WorkDefinitions; using FFXIVClientStructs.FFXIV.Application.Network.WorkDefinitions;
using FFXIVClientStructs.FFXIV.Client.Game; using FFXIVClientStructs.FFXIV.Client.Game;
@ -125,8 +124,7 @@ internal static class Gather
} }
} }
internal sealed class StartGathering(GatheringController gatheringController) : TaskExecutor<GatheringTask>, internal sealed class StartGathering(GatheringController gatheringController) : TaskExecutor<GatheringTask>
IToastAware
{ {
protected override bool Start() protected override bool Start()
{ {
@ -142,13 +140,6 @@ internal static class Gather
return ETaskResult.StillRunning; return ETaskResult.StillRunning;
} }
public bool OnErrorToast(SeString message)
{
bool isHandled = false;
gatheringController.OnErrorToast(ref message, ref isHandled);
return isHandled;
}
} }
/// <summary> /// <summary>

View File

@ -13,16 +13,7 @@ internal sealed class LeveData
{ {
private static readonly List<LeveStepData> Leves = private static readonly List<LeveStepData> Leves =
[ [
new( new(EAetheryteLocation.Tuliyollal, 1048390, new(15.243713f, -14.000001f, 85.83191f)),
aetheryteLocation: EAetheryteLocation.OldSharlayan,
aethernetShortcut: new AethernetShortcut
{ From = EAetheryteLocation.OldSharlayan, To = EAetheryteLocation.OldSharlayanScholarsHarbor },
issuerDataId: 1037263,
issuerPosition: new(45.818386f, -15.646993f, 109.40509f)),
new(aetheryteLocation: EAetheryteLocation.Tuliyollal,
aethernetShortcut: null,
issuerDataId: 1048390,
issuerPosition: new(15.243713f, -14.000001f, 85.83191f)),
]; ];
private readonly AetheryteData _aetheryteData; private readonly AetheryteData _aetheryteData;
@ -53,7 +44,6 @@ internal sealed class LeveData
TerritoryId = _aetheryteData.TerritoryIds[leveStepData.AetheryteLocation], TerritoryId = _aetheryteData.TerritoryIds[leveStepData.AetheryteLocation],
InteractionType = EInteractionType.AcceptLeve, InteractionType = EInteractionType.AcceptLeve,
AetheryteShortcut = leveStepData.AetheryteLocation, AetheryteShortcut = leveStepData.AetheryteLocation,
AethernetShortcut = leveStepData.AethernetShortcut,
SkipConditions = new() SkipConditions = new()
{ {
AetheryteShortcutIf = new() AetheryteShortcutIf = new()
@ -81,7 +71,6 @@ internal sealed class LeveData
TerritoryId = _aetheryteData.TerritoryIds[leveStepData.AetheryteLocation], TerritoryId = _aetheryteData.TerritoryIds[leveStepData.AetheryteLocation],
InteractionType = EInteractionType.CompleteLeve, InteractionType = EInteractionType.CompleteLeve,
AetheryteShortcut = leveStepData.AetheryteLocation, AetheryteShortcut = leveStepData.AetheryteLocation,
AethernetShortcut = leveStepData.AethernetShortcut,
SkipConditions = new() SkipConditions = new()
{ {
AetheryteShortcutIf = new() AetheryteShortcutIf = new()
@ -104,16 +93,10 @@ internal sealed class LeveData
private readonly uint? _crafterTurnInDataId; private readonly uint? _crafterTurnInDataId;
private readonly Vector3? _crafterTurnInPosition; private readonly Vector3? _crafterTurnInPosition;
public LeveStepData(EAetheryteLocation aetheryteLocation, public LeveStepData(EAetheryteLocation aetheryteLocation, uint issuerDataId, Vector3 issuerPosition,
AethernetShortcut? aethernetShortcut, uint? turnInDataId = null, Vector3? turnInPosition = null,
uint issuerDataId, uint? gathererTurnInDataId = null, Vector3? gathererTurnInPosition = null,
Vector3 issuerPosition, uint? crafterTurnInDataId = null, Vector3? crafterTurnInPosition = null)
uint? turnInDataId = null,
Vector3? turnInPosition = null,
uint? gathererTurnInDataId = null,
Vector3? gathererTurnInPosition = null,
uint? crafterTurnInDataId = null,
Vector3? crafterTurnInPosition = null)
{ {
_turnInDataId = turnInDataId; _turnInDataId = turnInDataId;
_turnInPosition = turnInPosition; _turnInPosition = turnInPosition;
@ -122,13 +105,11 @@ internal sealed class LeveData
_crafterTurnInDataId = crafterTurnInDataId; _crafterTurnInDataId = crafterTurnInDataId;
_crafterTurnInPosition = crafterTurnInPosition; _crafterTurnInPosition = crafterTurnInPosition;
AetheryteLocation = aetheryteLocation; AetheryteLocation = aetheryteLocation;
AethernetShortcut = aethernetShortcut;
IssuerDataId = issuerDataId; IssuerDataId = issuerDataId;
IssuerPosition = issuerPosition; IssuerPosition = issuerPosition;
} }
public EAetheryteLocation AetheryteLocation { get; } public EAetheryteLocation AetheryteLocation { get; }
public AethernetShortcut? AethernetShortcut { get; }
public uint IssuerDataId { get; } public uint IssuerDataId { get; }
public Vector3 IssuerPosition { get; } public Vector3 IssuerPosition { get; }