Add gathering for weekly custom deliveries (with paths for Zhloe, M'naago, Kurenai, Adkiragh; excluding underwater locations)

master
Liza 2024-08-05 07:36:52 +02:00
parent 09f11d1914
commit d63d372fe2
Signed by: liza
GPG Key ID: 7199F8D727D55F67
55 changed files with 5049 additions and 56 deletions

View File

@ -181,12 +181,14 @@ public sealed class RendererPlugin : IDalamudPlugin
group.Nodes.SelectMany(node => node.Locations group.Nodes.SelectMany(node => node.Locations
.SelectMany(x => .SelectMany(x =>
{ {
bool isUnsaved = false;
bool isCone = false; bool isCone = false;
int minimumAngle = 0; int minimumAngle = 0;
int maximumAngle = 0; int maximumAngle = 0;
if (_editorWindow.TryGetOverride(x.InternalId, out LocationOverride? locationOverride) && if (_editorWindow.TryGetOverride(x.InternalId, out LocationOverride? locationOverride) &&
locationOverride != null) locationOverride != null)
{ {
isUnsaved = locationOverride.NeedsSave();
if (locationOverride.IsCone()) if (locationOverride.IsCone())
{ {
isCone = true; isCone = true;
@ -232,6 +234,7 @@ public sealed class RendererPlugin : IDalamudPlugin
Enabled = true, Enabled = true,
overlayText = overlayText =
$"{location.Root.Groups.IndexOf(group)} // {node.DataId} / {node.Locations.IndexOf(x)}", $"{location.Root.Groups.IndexOf(group)} // {node.DataId} / {node.Locations.IndexOf(x)}",
overlayBGColor = isUnsaved ? 0xFF2020FF : 0,
}, },
new Element(ElementType.CircleAtFixedCoordinates) new Element(ElementType.CircleAtFixedCoordinates)
{ {

View File

@ -56,17 +56,19 @@ internal sealed class EditorWindow : Window
var gatheringLocations = _plugin.GetLocationsInTerritory(_clientState.TerritoryType); var gatheringLocations = _plugin.GetLocationsInTerritory(_clientState.TerritoryType);
var location = gatheringLocations.SelectMany(context => var location = gatheringLocations.SelectMany(context =>
context.Root.Groups.SelectMany(group => context.Root.Groups.SelectMany(group =>
group.Nodes group.Nodes.SelectMany(node => node.Locations
.SelectMany(node => node.Locations .Select(location =>
.Where(location => {
{ float distance;
if (_target != null) if (_target != null)
return Vector3.Distance(location.Position, _target.Position) < 0.1f; distance = Vector3.Distance(location.Position, _target.Position);
else else
return Vector3.Distance(location.Position, _clientState.LocalPlayer!.Position) < 3f; distance = Vector3.Distance(location.Position, _clientState.LocalPlayer!.Position);
})
.Select(location => new { Context = context, Node = node, Location = location })))) return new { Context = context, Node = node, Location = location, Distance = distance };
.FirstOrDefault(); })
.Where(location => location.Distance < (_target == null ? 3f : 0.1f)))))
.MinBy(x => x.Distance);
if (_target != null && _target.ObjectKind != ObjectKind.GatheringPoint) if (_target != null && _target.ObjectKind != ObjectKind.GatheringPoint)
{ {
_target = null; _target = null;
@ -80,10 +82,16 @@ internal sealed class EditorWindow : Window
return; return;
} }
_target ??= _objectTable.FirstOrDefault( _target ??= _objectTable.Where(x => x.ObjectKind == ObjectKind.GatheringPoint && x.DataId == location.Node.DataId)
x => x.ObjectKind == ObjectKind.GatheringPoint && .Select(x => new
x.DataId == location.Node.DataId && {
Vector3.Distance(location.Location.Position, _clientState.LocalPlayer!.Position) < 3f); Object = x,
Distance = Vector3.Distance(location.Location.Position, _clientState.LocalPlayer!.Position)
})
.Where(x => x.Distance < 3f)
.OrderBy(x => x.Distance)
.Select(x => x.Object)
.FirstOrDefault();
_targetLocation = (location.Context, location.Node, location.Location); _targetLocation = (location.Context, location.Node, location.Location);
} }
@ -103,7 +111,8 @@ internal sealed class EditorWindow : Window
ImGui.Indent(); ImGui.Indent();
ImGui.Text(context.File.Name); ImGui.Text(context.File.Name);
ImGui.Unindent(); ImGui.Unindent();
ImGui.Text($"{_target.DataId} +{node.Locations.Count-1} / {location.InternalId.ToString().Substring(0, 4)}"); ImGui.Text(
$"{_target.DataId} +{node.Locations.Count - 1} / {location.InternalId.ToString().Substring(0, 4)}");
ImGui.Text(string.Create(CultureInfo.InvariantCulture, $"{location.Position:G}")); ImGui.Text(string.Create(CultureInfo.InvariantCulture, $"{location.Position:G}"));
if (!_changes.TryGetValue(location.InternalId, out LocationOverride? locationOverride)) if (!_changes.TryGetValue(location.InternalId, out LocationOverride? locationOverride))
@ -128,7 +137,7 @@ internal sealed class EditorWindow : Window
_plugin.Redraw(); _plugin.Redraw();
} }
bool unsaved = locationOverride is { MinimumAngle: not null, MaximumAngle: not null }; bool unsaved = locationOverride.NeedsSave();
ImGui.BeginDisabled(!unsaved); ImGui.BeginDisabled(!unsaved);
if (unsaved) if (unsaved)
ImGui.PushStyleColor(ImGuiCol.Button, ImGuiColors.DalamudRed); ImGui.PushStyleColor(ImGuiCol.Button, ImGuiColors.DalamudRed);
@ -138,6 +147,7 @@ internal sealed class EditorWindow : Window
location.MaximumAngle = locationOverride.MaximumAngle; location.MaximumAngle = locationOverride.MaximumAngle;
_plugin.Save(context.File, context.Root); _plugin.Save(context.File, context.Root);
} }
if (unsaved) if (unsaved)
ImGui.PopStyleColor(); ImGui.PopStyleColor();
@ -223,4 +233,9 @@ internal sealed class LocationOverride
{ {
return MinimumAngle != null && MaximumAngle != null && MinimumAngle != MaximumAngle; return MinimumAngle != null && MaximumAngle != null && MinimumAngle != MaximumAngle;
} }
public bool NeedsSave()
{
return MinimumAngle != null && MaximumAngle != null;
}
} }

View File

@ -0,0 +1,144 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 397,
"AetheryteShortcut": "Coerthas Western Highlands - Falcon's Nest",
"Groups": [
{
"Nodes": [
{
"DataId": 31406,
"Locations": [
{
"Position": {
"X": -501.2244,
"Y": 118.0477,
"Z": -443.4114
}
}
]
},
{
"DataId": 31407,
"Locations": [
{
"Position": {
"X": -468.6656,
"Y": 120.7944,
"Z": -420.1442
}
},
{
"Position": {
"X": -523.499,
"Y": 117.4618,
"Z": -449.0883
},
"MinimumAngle": -160,
"MaximumAngle": 65
},
{
"Position": {
"X": -482.4585,
"Y": 120.3927,
"Z": -442.2994
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 31408,
"Locations": [
{
"Position": {
"X": -685.595,
"Y": 122.3003,
"Z": -379.202
}
}
]
},
{
"DataId": 31409,
"Locations": [
{
"Position": {
"X": -691.5064,
"Y": 123.4536,
"Z": -354.5497
},
"MinimumAngle": 95,
"MaximumAngle": 325
},
{
"Position": {
"X": -673.4897,
"Y": 122.1564,
"Z": -378.4789
}
},
{
"Position": {
"X": -664.5702,
"Y": 121.697,
"Z": -394.0817
},
"MinimumAngle": 0,
"MaximumAngle": 255
}
]
}
]
},
{
"Nodes": [
{
"DataId": 31410,
"Locations": [
{
"Position": {
"X": -496.1503,
"Y": 121.0539,
"Z": -272.0342
}
}
]
},
{
"DataId": 31411,
"Locations": [
{
"Position": {
"X": -459.1924,
"Y": 121.1919,
"Z": -280.8376
},
"MinimumAngle": -105,
"MaximumAngle": 55
},
{
"Position": {
"X": -472.298,
"Y": 121.4754,
"Z": -306.8053
},
"MinimumAngle": 30,
"MaximumAngle": 235
},
{
"Position": {
"X": -486.2957,
"Y": 120.9394,
"Z": -257.3133
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,158 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 397,
"AetheryteShortcut": "Coerthas Western Highlands - Falcon's Nest",
"Groups": [
{
"Nodes": [
{
"DataId": 31344,
"Locations": [
{
"Position": {
"X": 40.36132,
"Y": 217.3049,
"Z": 405.1829
},
"MinimumAngle": 100,
"MaximumAngle": 250
}
]
},
{
"DataId": 31345,
"Locations": [
{
"Position": {
"X": 20.19547,
"Y": 216.5585,
"Z": 412.4353
},
"MinimumAngle": 50,
"MaximumAngle": 165
},
{
"Position": {
"X": 17.58205,
"Y": 216.0664,
"Z": 421.5481
},
"MinimumAngle": 0,
"MaximumAngle": 145
},
{
"Position": {
"X": 51.50931,
"Y": 217.6516,
"Z": 408.2164
},
"MinimumAngle": 155,
"MaximumAngle": 225
}
]
}
]
},
{
"Nodes": [
{
"DataId": 31340,
"Locations": [
{
"Position": {
"X": 56.06712,
"Y": 216.6702,
"Z": 225.849
},
"MinimumAngle": -20,
"MaximumAngle": 105
}
]
},
{
"DataId": 31341,
"Locations": [
{
"Position": {
"X": 85.05425,
"Y": 218.7078,
"Z": 220.0463
},
"MinimumAngle": -110,
"MaximumAngle": 25
},
{
"Position": {
"X": 78.99079,
"Y": 215.9441,
"Z": 228.9527
},
"MinimumAngle": -110,
"MaximumAngle": 40
},
{
"Position": {
"X": 67.29195,
"Y": 216.4685,
"Z": 228.7955
},
"MinimumAngle": -35,
"MaximumAngle": 80
}
]
},
{
"DataId": 31342,
"Locations": [
{
"Position": {
"X": -124.1629,
"Y": 221.9654,
"Z": 197.8645
},
"MinimumAngle": -15,
"MaximumAngle": 20
}
]
}
]
},
{
"Nodes": [
{
"DataId": 31343,
"Locations": [
{
"Position": {
"X": -138.4112,
"Y": 220.679,
"Z": 204.6822
},
"MinimumAngle": -20,
"MaximumAngle": 20
},
{
"Position": {
"X": -90.40117,
"Y": 223.687,
"Z": 202.5069
},
"MinimumAngle": -90,
"MaximumAngle": 45
},
{
"Position": {
"X": -50.76083,
"Y": 222.9418,
"Z": 217.8322
},
"MinimumAngle": 50,
"MaximumAngle": 140
}
]
}
]
}
]
}

View File

@ -0,0 +1,131 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 397,
"AetheryteShortcut": "Coerthas Western Highlands - Falcon's Nest",
"Groups": [
{
"Nodes": [
{
"DataId": 32349,
"Locations": [
{
"Position": {
"X": 63.68,
"Y": 227.89,
"Z": 570.31
},
"MinimumAngle": 140,
"MaximumAngle": 275
},
{
"Position": {
"X": 100.3585,
"Y": 236.1064,
"Z": 551.248
},
"MinimumAngle": 110,
"MaximumAngle": 245
}
]
},
{
"DataId": 32348,
"Locations": [
{
"Position": {
"X": 68.42817,
"Y": 226.018,
"Z": 558.3953
},
"MinimumAngle": -15,
"MaximumAngle": 105
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32346,
"Locations": [
{
"Position": {
"X": -19.27065,
"Y": 219.13,
"Z": 618.5656
},
"MinimumAngle": 70,
"MaximumAngle": 205
}
]
},
{
"DataId": 32347,
"Locations": [
{
"Position": {
"X": -11.97839,
"Y": 222.4612,
"Z": 613.5499
},
"MinimumAngle": 80,
"MaximumAngle": 235
},
{
"Position": {
"X": -9.830506,
"Y": 220.8649,
"Z": 596.9268
},
"MinimumAngle": 70,
"MaximumAngle": 170
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32344,
"Locations": [
{
"Position": {
"X": -60.89,
"Y": 241.99,
"Z": 692.56
},
"MinimumAngle": 60,
"MaximumAngle": 220
}
]
},
{
"DataId": 32345,
"Locations": [
{
"Position": {
"X": -70.72009,
"Y": 242.5652,
"Z": 704.0363
},
"MinimumAngle": 70,
"MaximumAngle": 225
},
{
"Position": {
"X": -49.4545,
"Y": 241.67,
"Z": 686.183
},
"MinimumAngle": 100,
"MaximumAngle": 235
}
]
}
]
}
]
}

View File

@ -0,0 +1,119 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 397,
"AetheryteShortcut": "Coerthas Western Highlands - Falcon's Nest",
"Groups": [
{
"Nodes": [
{
"DataId": 32355,
"Locations": [
{
"Position": {
"X": 484.6112,
"Y": 160.7014,
"Z": -339.9558
}
},
{
"Position": {
"X": 479.6101,
"Y": 160.8177,
"Z": -328.4199
},
"MinimumAngle": 160,
"MaximumAngle": 335
}
]
},
{
"DataId": 32354,
"Locations": [
{
"Position": {
"X": 481.3153,
"Y": 160.57,
"Z": -339.8337
},
"MinimumAngle": -150,
"MaximumAngle": 45
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32351,
"Locations": [
{
"Position": {
"X": 602.9045,
"Y": 172.9519,
"Z": -376.0714
}
},
{
"Position": {
"X": 610.5079,
"Y": 174.6463,
"Z": -380.3387
}
}
]
},
{
"DataId": 32350,
"Locations": [
{
"Position": {
"X": 609.4385,
"Y": 174.6537,
"Z": -376.958
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32353,
"Locations": [
{
"Position": {
"X": 457.2875,
"Y": 160.5861,
"Z": -451.3749
}
},
{
"Position": {
"X": 471.3904,
"Y": 159.7412,
"Z": -441.1613
}
}
]
},
{
"DataId": 32352,
"Locations": [
{
"Position": {
"X": 478.0674,
"Y": 161.2902,
"Z": -449.485
},
"MinimumAngle": 0,
"MaximumAngle": 210
}
]
}
]
}
]
}

View File

@ -0,0 +1,108 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 400,
"AetheryteShortcut": "The Churning Mists - Moghome",
"Groups": [
{
"Nodes": [
{
"DataId": 31363,
"Locations": [
{
"Position": {
"X": 338.6716,
"Y": -29.70343,
"Z": -89.65448
},
"MinimumAngle": 145,
"MaximumAngle": 275
},
{
"Position": {
"X": 285.6898,
"Y": -32.99854,
"Z": -100.1466
},
"MinimumAngle": 115,
"MaximumAngle": 275
},
{
"Position": {
"X": 326.7051,
"Y": -27.26759,
"Z": -89.31528
},
"MinimumAngle": 110,
"MaximumAngle": 205
}
]
},
{
"DataId": 31362,
"Locations": [
{
"Position": {
"X": 299.2141,
"Y": -33.21008,
"Z": -103.5859
},
"MinimumAngle": 75,
"MaximumAngle": 295
}
]
}
]
},
{
"Nodes": [
{
"DataId": 31358,
"Locations": [
{
"Position": {
"X": 316.6238,
"Y": -30.77305,
"Z": -230.0326
},
"MinimumAngle": -35,
"MaximumAngle": 75
}
]
},
{
"DataId": 31359,
"Locations": [
{
"Position": {
"X": 297.7187,
"Y": -32.66696,
"Z": -234.9031
},
"MinimumAngle": 15,
"MaximumAngle": 135
},
{
"Position": {
"X": 288.7547,
"Y": -33.61605,
"Z": -239.764
},
"MinimumAngle": -30,
"MaximumAngle": 65
},
{
"Position": {
"X": 324.8526,
"Y": -28.45777,
"Z": -209.4378
},
"MinimumAngle": -5,
"MaximumAngle": 120
}
]
}
]
}
]
}

View File

@ -0,0 +1,144 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 400,
"AetheryteShortcut": "The Churning Mists - Zenith",
"Groups": [
{
"Nodes": [
{
"DataId": 31419,
"Locations": [
{
"Position": {
"X": -204.7827,
"Y": -18.18443,
"Z": 272.0514
}
},
{
"Position": {
"X": -187.8667,
"Y": -18.16559,
"Z": 260.4704
},
"MinimumAngle": -85,
"MaximumAngle": 105
},
{
"Position": {
"X": -219.7478,
"Y": -18.66556,
"Z": 279.3036
}
}
]
},
{
"DataId": 31418,
"Locations": [
{
"Position": {
"X": -216.0198,
"Y": -14.66686,
"Z": 263.2452
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 31423,
"Locations": [
{
"Position": {
"X": -125.676,
"Y": -13.40994,
"Z": 434.1913
},
"MinimumAngle": 25,
"MaximumAngle": 260
},
{
"Position": {
"X": -99.86462,
"Y": -11.67334,
"Z": 437.7415
},
"MinimumAngle": 85,
"MaximumAngle": 300
},
{
"Position": {
"X": -71.04668,
"Y": -8.40571,
"Z": 445.0867
},
"MinimumAngle": -40,
"MaximumAngle": 170
}
]
},
{
"DataId": 31422,
"Locations": [
{
"Position": {
"X": -88.15926,
"Y": -8.882813,
"Z": 447.7102
},
"MinimumAngle": 155,
"MaximumAngle": 360
}
]
}
]
},
{
"Nodes": [
{
"DataId": 31420,
"Locations": [
{
"Position": {
"X": 12.52414,
"Y": -14.81244,
"Z": 375.4579
}
}
]
},
{
"DataId": 31421,
"Locations": [
{
"Position": {
"X": -11.31142,
"Y": -19.80939,
"Z": 383.9503
}
},
{
"Position": {
"X": 4.771156,
"Y": -17.64155,
"Z": 386.0074
}
},
{
"Position": {
"X": 9.879506,
"Y": -13.13191,
"Z": 358.7252
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,131 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 400,
"AetheryteShortcut": "The Churning Mists - Moghome",
"Groups": [
{
"Nodes": [
{
"DataId": 32357,
"Locations": [
{
"Position": {
"X": 557.625,
"Y": 5.119438,
"Z": 180.6541
},
"MinimumAngle": -70,
"MaximumAngle": 55
},
{
"Position": {
"X": 570.8357,
"Y": 11.89507,
"Z": 164.9729
},
"MinimumAngle": 55,
"MaximumAngle": 130
}
]
},
{
"DataId": 32356,
"Locations": [
{
"Position": {
"X": 572.8384,
"Y": 11.68007,
"Z": 155.6572
},
"MinimumAngle": 70,
"MaximumAngle": 165
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32358,
"Locations": [
{
"Position": {
"X": 665.114,
"Y": 43.93011,
"Z": 151.3629
},
"MinimumAngle": -80,
"MaximumAngle": 40
}
]
},
{
"DataId": 32359,
"Locations": [
{
"Position": {
"X": 697.7376,
"Y": 41.87314,
"Z": 124.1553
},
"MinimumAngle": -125,
"MaximumAngle": 30
},
{
"Position": {
"X": 681.178,
"Y": 41.71732,
"Z": 147.9972
},
"MinimumAngle": -15,
"MaximumAngle": 85
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32360,
"Locations": [
{
"Position": {
"X": 755.3978,
"Y": 20.37826,
"Z": 201.3921
},
"MinimumAngle": -30,
"MaximumAngle": 70
}
]
},
{
"DataId": 32361,
"Locations": [
{
"Position": {
"X": 771.5975,
"Y": 20.41353,
"Z": 204.8761
},
"MinimumAngle": -45,
"MaximumAngle": 65
},
{
"Position": {
"X": 739.1428,
"Y": 23.87582,
"Z": 196.4766
},
"MinimumAngle": -40,
"MaximumAngle": 55
}
]
}
]
}
]
}

View File

@ -0,0 +1,127 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 400,
"AetheryteShortcut": "The Churning Mists - Zenith",
"Groups": [
{
"Nodes": [
{
"DataId": 32366,
"Locations": [
{
"Position": {
"X": -699.5319,
"Y": 91.18189,
"Z": -362.7602
}
}
]
},
{
"DataId": 32367,
"Locations": [
{
"Position": {
"X": -681.9284,
"Y": 91.30399,
"Z": -363.0468
}
},
{
"Position": {
"X": -709.8129,
"Y": 91.42828,
"Z": -361.5186
},
"MinimumAngle": 85,
"MaximumAngle": 285
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32364,
"Locations": [
{
"Position": {
"X": -680.1304,
"Y": 91.30952,
"Z": -479.2773
},
"MinimumAngle": 50,
"MaximumAngle": 275
}
]
},
{
"DataId": 32365,
"Locations": [
{
"Position": {
"X": -691.5847,
"Y": 91.2657,
"Z": -491.8746
},
"MinimumAngle": -115,
"MaximumAngle": 90
},
{
"Position": {
"X": -685.3473,
"Y": 91.26568,
"Z": -474.3657
},
"MinimumAngle": 0,
"MaximumAngle": 205
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32362,
"Locations": [
{
"Position": {
"X": -764.3091,
"Y": 91.5154,
"Z": -554.3649
},
"MinimumAngle": -125,
"MaximumAngle": 65
}
]
},
{
"DataId": 32363,
"Locations": [
{
"Position": {
"X": -763.1495,
"Y": 91.37257,
"Z": -542.7809
},
"MinimumAngle": 70,
"MaximumAngle": 305
},
{
"Position": {
"X": -776.5944,
"Y": 91.16921,
"Z": -566.8766
},
"MinimumAngle": -95,
"MaximumAngle": 110
}
]
}
]
}
]
}

View File

@ -0,0 +1,158 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 398,
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine",
"Groups": [
{
"Nodes": [
{
"DataId": 31350,
"Locations": [
{
"Position": {
"X": -115.4501,
"Y": -44.90735,
"Z": 211.8084
},
"MinimumAngle": -5,
"MaximumAngle": 65
}
]
},
{
"DataId": 31351,
"Locations": [
{
"Position": {
"X": -94.4983,
"Y": -46.65615,
"Z": 219.4642
},
"MinimumAngle": -90,
"MaximumAngle": 65
},
{
"Position": {
"X": -133.4304,
"Y": -45.47835,
"Z": 211.6268
},
"MinimumAngle": -50,
"MaximumAngle": 80
},
{
"Position": {
"X": -81.5194,
"Y": -52.42267,
"Z": 241.2021
},
"MinimumAngle": -35,
"MaximumAngle": 85
}
]
}
]
},
{
"Nodes": [
{
"DataId": 31346,
"Locations": [
{
"Position": {
"X": -154.299,
"Y": -70.63795,
"Z": 399.4617
},
"MinimumAngle": 110,
"MaximumAngle": 225
}
]
},
{
"DataId": 31347,
"Locations": [
{
"Position": {
"X": -167.7846,
"Y": -70.11265,
"Z": 418.7766
},
"MinimumAngle": 90,
"MaximumAngle": 235
},
{
"Position": {
"X": -152.9678,
"Y": -68.49996,
"Z": 365.0086
},
"MinimumAngle": -30,
"MaximumAngle": 70
},
{
"Position": {
"X": -189.6693,
"Y": -68.18973,
"Z": 377.6652
},
"MinimumAngle": 205,
"MaximumAngle": 335
}
]
}
]
},
{
"Nodes": [
{
"DataId": 31349,
"Locations": [
{
"Position": {
"X": -312.3143,
"Y": -54.81182,
"Z": 331.0543
},
"MinimumAngle": -145,
"MaximumAngle": 5
},
{
"Position": {
"X": -296.8107,
"Y": -51.96982,
"Z": 310.6086
},
"MinimumAngle": 235,
"MaximumAngle": 330
},
{
"Position": {
"X": -299.3094,
"Y": -46.30565,
"Z": 293.9169
},
"MinimumAngle": 165,
"MaximumAngle": 310
}
]
},
{
"DataId": 31348,
"Locations": [
{
"Position": {
"X": -311.9997,
"Y": -53.59439,
"Z": 326.8317
},
"MinimumAngle": -75,
"MaximumAngle": -20
}
]
}
]
}
]
}

View File

@ -0,0 +1,134 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 398,
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine",
"Groups": [
{
"Nodes": [
{
"DataId": 31413,
"Locations": [
{
"Position": {
"X": -513.1596,
"Y": -85.63485,
"Z": 434.7382
}
},
{
"Position": {
"X": -562.0517,
"Y": -89.33559,
"Z": 445.0961
}
},
{
"Position": {
"X": -523.4441,
"Y": -81.67991,
"Z": 408.9826
}
}
]
},
{
"DataId": 31412,
"Locations": [
{
"Position": {
"X": -553.9171,
"Y": -84.75874,
"Z": 419.2539
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 31416,
"Locations": [
{
"Position": {
"X": -569.6527,
"Y": -96.50298,
"Z": 547.1465
}
}
]
},
{
"DataId": 31417,
"Locations": [
{
"Position": {
"X": -623.1743,
"Y": -101.8206,
"Z": 574.6146
}
},
{
"Position": {
"X": -562.2545,
"Y": -95.6534,
"Z": 545.6004
}
},
{
"Position": {
"X": -601.669,
"Y": -100.0121,
"Z": 559.5313
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 31415,
"Locations": [
{
"Position": {
"X": -680.4672,
"Y": -103.4997,
"Z": 624.0101
}
},
{
"Position": {
"X": -700.5361,
"Y": -107.5581,
"Z": 597.0253
}
},
{
"Position": {
"X": -715.8123,
"Y": -105.2011,
"Z": 622.3116
}
}
]
},
{
"DataId": 31414,
"Locations": [
{
"Position": {
"X": -714.2946,
"Y": -113.8825,
"Z": 557.3662
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,162 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 399,
"AetheryteShortcut": "Idyllshire",
"AethernetShortcut": [
"[Idyllshire] Aetheryte Plaza",
"[Idyllshire] Epilogue Gate (Eastern Hinterlands)"
],
"Groups": [
{
"Nodes": [
{
"DataId": 31356,
"Locations": [
{
"Position": {
"X": 120.1556,
"Y": 70.42133,
"Z": 30.73328
},
"MinimumAngle": -95,
"MaximumAngle": 70
}
]
},
{
"DataId": 31357,
"Locations": [
{
"Position": {
"X": 137.7684,
"Y": 70.04282,
"Z": 64.77115
},
"MinimumAngle": 30,
"MaximumAngle": 130
},
{
"Position": {
"X": 132.1863,
"Y": 70.08203,
"Z": 57.67828
},
"MinimumAngle": -10,
"MaximumAngle": 105
},
{
"Position": {
"X": 145.684,
"Y": 70.47159,
"Z": 45.05047
},
"MinimumAngle": 80,
"MaximumAngle": 215
}
]
}
]
},
{
"Nodes": [
{
"DataId": 31355,
"Locations": [
{
"Position": {
"X": 59.4164,
"Y": 54.40149,
"Z": 160.6752
},
"MinimumAngle": 155,
"MaximumAngle": 285
},
{
"Position": {
"X": 66.6783,
"Y": 53.80389,
"Z": 177.1926
},
"MinimumAngle": -90,
"MaximumAngle": 0
},
{
"Position": {
"X": 47.04347,
"Y": 53.91698,
"Z": 164.1816
},
"MinimumAngle": 0,
"MaximumAngle": 185
}
]
},
{
"DataId": 31354,
"Locations": [
{
"Position": {
"X": 31.89844,
"Y": 54.71996,
"Z": 173.864
},
"MinimumAngle": 105,
"MaximumAngle": 235
}
]
}
]
},
{
"Nodes": [
{
"DataId": 31352,
"Locations": [
{
"Position": {
"X": 231.3517,
"Y": 74.23511,
"Z": 112.9807
},
"MinimumAngle": 130,
"MaximumAngle": 285
}
]
},
{
"DataId": 31353,
"Locations": [
{
"Position": {
"X": 239.051,
"Y": 80.42557,
"Z": 192.2325
},
"MinimumAngle": 140,
"MaximumAngle": 235
},
{
"Position": {
"X": 237.4622,
"Y": 74.67197,
"Z": 150.8143
},
"MinimumAngle": 60,
"MaximumAngle": 225
},
{
"Position": {
"X": 211.4673,
"Y": 75.37302,
"Z": 169.3396
},
"MinimumAngle": 145,
"MaximumAngle": 285
}
]
}
]
}
]
}

View File

@ -0,0 +1,148 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 399,
"AetheryteShortcut": "Idyllshire",
"AethernetShortcut": [
"[Idyllshire] Aetheryte Plaza",
"[Idyllshire] Prologue Gate (Western Hinterlands)"
],
"Groups": [
{
"Nodes": [
{
"DataId": 31431,
"Locations": [
{
"Position": {
"X": -494.1652,
"Y": 142.7381,
"Z": -287.4084
},
"MinimumAngle": 0,
"MaximumAngle": 270
},
{
"Position": {
"X": -485.4606,
"Y": 142.9737,
"Z": -290.856
},
"MinimumAngle": 65,
"MaximumAngle": 310
},
{
"Position": {
"X": -533.1213,
"Y": 142.5874,
"Z": -262.2948
},
"MinimumAngle": -255,
"MaximumAngle": 10
}
]
},
{
"DataId": 31430,
"Locations": [
{
"Position": {
"X": -510.6404,
"Y": 141.9014,
"Z": -280.1611
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 31434,
"Locations": [
{
"Position": {
"X": -562.8221,
"Y": 148.9451,
"Z": -104.9014
}
}
]
},
{
"DataId": 31435,
"Locations": [
{
"Position": {
"X": -520.0394,
"Y": 148.7521,
"Z": -97.8
}
},
{
"Position": {
"X": -570.4307,
"Y": 148.103,
"Z": -130.9921
}
},
{
"Position": {
"X": -573.738,
"Y": 148.4877,
"Z": -158.4798
},
"MinimumAngle": 130,
"MaximumAngle": 360
}
]
}
]
},
{
"Nodes": [
{
"DataId": 31432,
"Locations": [
{
"Position": {
"X": -388.4753,
"Y": 147.345,
"Z": -177.1972
}
}
]
},
{
"DataId": 31433,
"Locations": [
{
"Position": {
"X": -349.5501,
"Y": 144.6325,
"Z": -185.3442
}
},
{
"Position": {
"X": -398.145,
"Y": 145.7528,
"Z": -198.2334
},
"MinimumAngle": 155,
"MaximumAngle": 360
},
{
"Position": {
"X": -374.5566,
"Y": 145.3827,
"Z": -194.8224
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,140 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 401,
"AetheryteShortcut": "The Sea of Clouds - Camp Cloudtop",
"Groups": [
{
"Nodes": [
{
"DataId": 31366,
"Locations": [
{
"Position": {
"X": 529.0662,
"Y": -110.3256,
"Z": 434.3149
},
"MinimumAngle": 15,
"MaximumAngle": 135
}
]
},
{
"DataId": 31367,
"Locations": [
{
"Position": {
"X": 541.8505,
"Y": -111.128,
"Z": 452.5471
},
"MinimumAngle": -45,
"MaximumAngle": 40
},
{
"Position": {
"X": 517.9747,
"Y": -109.2984,
"Z": 417.9554
},
"MinimumAngle": -45,
"MaximumAngle": 55
},
{
"Position": {
"X": 499.3676,
"Y": -108.7323,
"Z": 410.8949
},
"MinimumAngle": -5,
"MaximumAngle": 85
}
]
}
]
},
{
"Nodes": [
{
"DataId": 31365,
"Locations": [
{
"Position": {
"X": 625.9688,
"Y": -115.6856,
"Z": 344.535
},
"MinimumAngle": 125,
"MaximumAngle": 185
},
{
"Position": {
"X": 678.5617,
"Y": -122.8687,
"Z": 356.7407
},
"MinimumAngle": 190,
"MaximumAngle": 290
},
{
"Position": {
"X": 644.1035,
"Y": -122.3688,
"Z": 334.0371
},
"MinimumAngle": 105,
"MaximumAngle": 235
}
]
},
{
"DataId": 31364,
"Locations": [
{
"Position": {
"X": 661.9959,
"Y": -122.6855,
"Z": 333.0707
},
"MinimumAngle": 140,
"MaximumAngle": 260
}
]
}
]
},
{
"Nodes": [
{
"DataId": 31369,
"Locations": [
{
"Position": {
"X": 730.9626,
"Y": -96.64706,
"Z": 449.485
},
"MinimumAngle": 45,
"MaximumAngle": 115
}
]
},
{
"DataId": 31368,
"Locations": [
{
"Position": {
"X": 727.2908,
"Y": -95.47571,
"Z": 460.3798
},
"MinimumAngle": 25,
"MaximumAngle": 180
}
]
}
]
}
]
}

View File

@ -0,0 +1,117 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 401,
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Groups": [
{
"Nodes": [
{
"DataId": 31425,
"Locations": [
{
"Position": {
"X": -63.97195,
"Y": 13.48263,
"Z": -559.9897
}
},
{
"Position": {
"X": -47.75371,
"Y": 13.66347,
"Z": -571.2774
},
"MinimumAngle": -80,
"MaximumAngle": 115
}
]
},
{
"DataId": 31424,
"Locations": [
{
"Position": {
"X": -26.91866,
"Y": 12.14502,
"Z": -554.869
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 31426,
"Locations": [
{
"Position": {
"X": -26.56338,
"Y": 12.41532,
"Z": -442.6965
}
}
]
},
{
"DataId": 31427,
"Locations": [
{
"Position": {
"X": 2.215849,
"Y": 12.32494,
"Z": -434.0038
}
},
{
"Position": {
"X": -18.38633,
"Y": 12.4451,
"Z": -427.6107
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 31429,
"Locations": [
{
"Position": {
"X": 70.59737,
"Y": 13.45543,
"Z": -599.2373
},
"MinimumAngle": -60,
"MaximumAngle": 125
},
{
"Position": {
"X": 50.8525,
"Y": 13.158,
"Z": -646.834
}
}
]
},
{
"DataId": 31428,
"Locations": [
{
"Position": {
"X": 85.6145,
"Y": 12.69149,
"Z": -629.3397
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,158 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 622,
"AetheryteShortcut": "Azim Steppe - Dawn Throne",
"Groups": [
{
"Nodes": [
{
"DataId": 32176,
"Locations": [
{
"Position": {
"X": 411.0592,
"Y": 2.207043,
"Z": -174.1382
},
"MinimumAngle": -45,
"MaximumAngle": 130
},
{
"Position": {
"X": 382.993,
"Y": 13.25345,
"Z": -207.7346
},
"MinimumAngle": 130,
"MaximumAngle": 295
},
{
"Position": {
"X": 361.387,
"Y": 14.51455,
"Z": -203.9765
},
"MinimumAngle": 90,
"MaximumAngle": 195
}
]
},
{
"DataId": 32175,
"Locations": [
{
"Position": {
"X": 364.0281,
"Y": 14.81319,
"Z": -208.0434
},
"MinimumAngle": 65,
"MaximumAngle": 200
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32177,
"Locations": [
{
"Position": {
"X": 326.783,
"Y": 27.22089,
"Z": -328.1715
},
"MinimumAngle": -130,
"MaximumAngle": -5
}
]
},
{
"DataId": 32178,
"Locations": [
{
"Position": {
"X": 352.0781,
"Y": 33.91527,
"Z": -369.394
},
"MinimumAngle": -55,
"MaximumAngle": 110
},
{
"Position": {
"X": 319.4689,
"Y": 30.05529,
"Z": -341.346
},
"MinimumAngle": 50,
"MaximumAngle": 215
},
{
"Position": {
"X": 340.3498,
"Y": 34.56527,
"Z": -374.391
},
"MinimumAngle": -90,
"MaximumAngle": 85
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32173,
"Locations": [
{
"Position": {
"X": 460.0648,
"Y": 32.44811,
"Z": -382.8145
},
"MinimumAngle": 30,
"MaximumAngle": 135
}
]
},
{
"DataId": 32174,
"Locations": [
{
"Position": {
"X": 488.255,
"Y": 26.08804,
"Z": -365.4641
},
"MinimumAngle": 0,
"MaximumAngle": 195
},
{
"Position": {
"X": 460.4979,
"Y": 30.90669,
"Z": -376.0688
},
"MinimumAngle": 55,
"MaximumAngle": 180
},
{
"Position": {
"X": 438.8477,
"Y": 38.51477,
"Z": -413.352
},
"MinimumAngle": -70,
"MaximumAngle": 115
}
]
}
]
}
]
}

View File

@ -0,0 +1,138 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 622,
"AetheryteShortcut": "Azim Steppe - Dawn Throne",
"Groups": [
{
"Nodes": [
{
"DataId": 32264,
"Locations": [
{
"Position": {
"X": -166.6597,
"Y": 3.616752,
"Z": 361.2099
},
"MinimumAngle": -95,
"MaximumAngle": 130
}
]
},
{
"DataId": 32265,
"Locations": [
{
"Position": {
"X": -191.0201,
"Y": 4.361521,
"Z": 354.6401
}
},
{
"Position": {
"X": -162.6655,
"Y": 3.441799,
"Z": 363.0803
},
"MinimumAngle": -95,
"MaximumAngle": 150
},
{
"Position": {
"X": -167.5898,
"Y": 2.5177,
"Z": 377.1267
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32267,
"Locations": [
{
"Position": {
"X": -271.2292,
"Y": 3.341675,
"Z": 401.9989
}
},
{
"Position": {
"X": -349.3433,
"Y": 11.88452,
"Z": 378.1435
}
},
{
"Position": {
"X": -298.7296,
"Y": 5.809261,
"Z": 414.3437
}
}
]
},
{
"DataId": 32266,
"Locations": [
{
"Position": {
"X": -317.19,
"Y": 7.863516,
"Z": 397.5005
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32262,
"Locations": [
{
"Position": {
"X": -350.0407,
"Y": 22.68479,
"Z": 230.4606
}
}
]
},
{
"DataId": 32263,
"Locations": [
{
"Position": {
"X": -352.7808,
"Y": 23.99817,
"Z": 203.1617
}
},
{
"Position": {
"X": -345.5888,
"Y": 22.30608,
"Z": 229.8253
}
},
{
"Position": {
"X": -377.2188,
"Y": 22.65303,
"Z": 221.3997
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,94 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 622,
"AetheryteShortcut": "Azim Steppe - Dawn Throne",
"Groups": [
{
"Nodes": [
{
"DataId": 33885,
"Locations": [
{
"Position": {
"X": 288.2408,
"Y": 23.61323,
"Z": -234.9867
}
}
]
},
{
"DataId": 33886,
"Locations": [
{
"Position": {
"X": 281.9221,
"Y": 23.03055,
"Z": -231.9227
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33887,
"Locations": [
{
"Position": {
"X": 407.1815,
"Y": 26.86968,
"Z": -325.3348
},
"MinimumAngle": -60,
"MaximumAngle": 170
}
]
},
{
"DataId": 33888,
"Locations": [
{
"Position": {
"X": 413.6349,
"Y": 25.90826,
"Z": -320.5389
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33889,
"Locations": [
{
"Position": {
"X": 451.9882,
"Y": 8.707673,
"Z": -136.5769
}
}
]
},
{
"DataId": 33890,
"Locations": [
{
"Position": {
"X": 458.5264,
"Y": 8.823095,
"Z": -132.5937
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,136 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 612,
"AetheryteShortcut": "Fringes - Castrum Oriens",
"Groups": [
{
"Nodes": [
{
"DataId": 32125,
"Locations": [
{
"Position": {
"X": -317.5445,
"Y": 80.03535,
"Z": -449.2276
},
"MinimumAngle": -80,
"MaximumAngle": 30
}
]
},
{
"DataId": 32126,
"Locations": [
{
"Position": {
"X": -301.3254,
"Y": 69.71587,
"Z": -485.7171
},
"MinimumAngle": -125,
"MaximumAngle": 30
},
{
"Position": {
"X": -311.9155,
"Y": 76.91404,
"Z": -467.1509
},
"MinimumAngle": 160,
"MaximumAngle": 290
},
{
"Position": {
"X": -311.1216,
"Y": 77.83449,
"Z": -454.2029
},
"MinimumAngle": -110,
"MaximumAngle": 30
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32124,
"Locations": [
{
"Position": {
"X": -262.2596,
"Y": 62.06842,
"Z": -550.8122
},
"MinimumAngle": 185,
"MaximumAngle": 335
},
{
"Position": {
"X": -266.0078,
"Y": 62.03654,
"Z": -564.1611
},
"MinimumAngle": 180,
"MaximumAngle": 340
},
{
"Position": {
"X": -255.8366,
"Y": 62.63577,
"Z": -588.0093
},
"MinimumAngle": 245,
"MaximumAngle": 345
}
]
},
{
"DataId": 32123,
"Locations": [
{
"Position": {
"X": -264.8189,
"Y": 62.61843,
"Z": -558.4091
},
"MinimumAngle": 175,
"MaximumAngle": 300
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32127,
"Locations": [
{
"Position": {
"X": -108.2628,
"Y": 64.1357,
"Z": -485.6675
}
}
]
},
{
"DataId": 32128,
"Locations": [
{
"Position": {
"X": -103.2401,
"Y": 59.26093,
"Z": -463.1485
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,158 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 612,
"AetheryteShortcut": "Fringes - Castrum Oriens",
"Groups": [
{
"Nodes": [
{
"DataId": 32132,
"Locations": [
{
"Position": {
"X": 101.0199,
"Y": 50.70325,
"Z": -410.8297
},
"MinimumAngle": -55,
"MaximumAngle": 25
},
{
"Position": {
"X": 78.0303,
"Y": 48.68632,
"Z": -401.5028
},
"MinimumAngle": -50,
"MaximumAngle": 5
},
{
"Position": {
"X": 115.4548,
"Y": 51.50989,
"Z": -415.8416
},
"MinimumAngle": -115,
"MaximumAngle": -40
}
]
},
{
"DataId": 32131,
"Locations": [
{
"Position": {
"X": 90.52106,
"Y": 49.82163,
"Z": -409.1239
},
"MinimumAngle": -35,
"MaximumAngle": 55
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32134,
"Locations": [
{
"Position": {
"X": 84.90259,
"Y": 44.58842,
"Z": -324.1541
},
"MinimumAngle": -10,
"MaximumAngle": 105
},
{
"Position": {
"X": 82.56047,
"Y": 44.08657,
"Z": -269.3104
},
"MinimumAngle": -5,
"MaximumAngle": 80
},
{
"Position": {
"X": 98.20293,
"Y": 43.59855,
"Z": -299.3164
},
"MinimumAngle": 95,
"MaximumAngle": 185
}
]
},
{
"DataId": 32133,
"Locations": [
{
"Position": {
"X": 82.94646,
"Y": 42.55737,
"Z": -292.9016
},
"MinimumAngle": 105,
"MaximumAngle": 165
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32129,
"Locations": [
{
"Position": {
"X": 240.5221,
"Y": 43.60987,
"Z": -301.7685
},
"MinimumAngle": 155,
"MaximumAngle": 255
}
]
},
{
"DataId": 32130,
"Locations": [
{
"Position": {
"X": 265.4354,
"Y": 43.19557,
"Z": -283.7873
},
"MinimumAngle": -155,
"MaximumAngle": -15
},
{
"Position": {
"X": 246.9251,
"Y": 43.54385,
"Z": -296.2532
},
"MinimumAngle": 170,
"MaximumAngle": 225
},
{
"Position": {
"X": 213.1443,
"Y": 43.26488,
"Z": -308.4924
},
"MinimumAngle": 110,
"MaximumAngle": 250
}
]
}
]
}
]
}

View File

@ -0,0 +1,150 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 612,
"AetheryteShortcut": "Fringes - Castrum Oriens",
"Groups": [
{
"Nodes": [
{
"DataId": 32193,
"Locations": [
{
"Position": {
"X": -249.9619,
"Y": 61.05618,
"Z": -604.3008
}
},
{
"Position": {
"X": -238.5267,
"Y": 60.51727,
"Z": -560.746
},
"MinimumAngle": -25,
"MaximumAngle": 120
},
{
"Position": {
"X": -263.4823,
"Y": 61.9943,
"Z": -566.3988
},
"MinimumAngle": 115,
"MaximumAngle": 360
}
]
},
{
"DataId": 32192,
"Locations": [
{
"Position": {
"X": -261.7163,
"Y": 61.86325,
"Z": -574.8586
},
"MinimumAngle": -140,
"MaximumAngle": 125
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32189,
"Locations": [
{
"Position": {
"X": -260.6172,
"Y": 70.60548,
"Z": -685.7728
},
"MinimumAngle": 55,
"MaximumAngle": 265
},
{
"Position": {
"X": -293.3862,
"Y": 75.88585,
"Z": -675.9405
},
"MinimumAngle": -235,
"MaximumAngle": 10
},
{
"Position": {
"X": -289.601,
"Y": 73.41101,
"Z": -659.3271
},
"MinimumAngle": 135,
"MaximumAngle": 350
}
]
},
{
"DataId": 32188,
"Locations": [
{
"Position": {
"X": -267.9963,
"Y": 75.16626,
"Z": -708.2614
},
"MinimumAngle": 150,
"MaximumAngle": 360
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32191,
"Locations": [
{
"Position": {
"X": -97.48006,
"Y": 61.31205,
"Z": -668.7775
},
"MinimumAngle": -50,
"MaximumAngle": 30
},
{
"Position": {
"X": -36.55207,
"Y": 61.9393,
"Z": -606.5457
}
},
{
"Position": {
"X": -79.96028,
"Y": 61.16011,
"Z": -625.305
}
}
]
},
{
"DataId": 32190,
"Locations": [
{
"Position": {
"X": -88.68313,
"Y": 61.06887,
"Z": -653.9121
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,131 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 612,
"AetheryteShortcut": "Fringes - Castrum Oriens",
"Groups": [
{
"Nodes": [
{
"DataId": 32217,
"Locations": [
{
"Position": {
"X": -492.6537,
"Y": 52.48105,
"Z": 114.5392
}
},
{
"Position": {
"X": -523.8553,
"Y": 58.91578,
"Z": 174.0902
},
"MinimumAngle": -185,
"MaximumAngle": 115
},
{
"Position": {
"X": -499.2416,
"Y": 54.9705,
"Z": 144.132
}
}
]
},
{
"DataId": 32216,
"Locations": [
{
"Position": {
"X": -510.2239,
"Y": 55.62017,
"Z": 137.6676
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32215,
"Locations": [
{
"Position": {
"X": -498.1188,
"Y": 57.86262,
"Z": 230.4597
}
},
{
"Position": {
"X": -513.0305,
"Y": 56.18323,
"Z": 239.2122
},
"MinimumAngle": -35,
"MaximumAngle": 235
},
{
"Position": {
"X": -506.6473,
"Y": 56.30998,
"Z": 258.2175
}
}
]
},
{
"DataId": 32214,
"Locations": [
{
"Position": {
"X": -509.9459,
"Y": 56.21313,
"Z": 252.2773
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32213,
"Locations": [
{
"Position": {
"X": -391.9599,
"Y": 50.21202,
"Z": 184.0853
}
},
{
"Position": {
"X": -419.9665,
"Y": 48.34329,
"Z": 125.2942
}
}
]
},
{
"DataId": 32212,
"Locations": [
{
"Position": {
"X": -391.2807,
"Y": 47.10617,
"Z": 153.422
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,131 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 612,
"AetheryteShortcut": "Fringes - Castrum Oriens",
"Groups": [
{
"Nodes": [
{
"DataId": 32236,
"Locations": [
{
"Position": {
"X": -590.3985,
"Y": 37.74836,
"Z": 392.8004
},
"MinimumAngle": 60,
"MaximumAngle": 260
}
]
},
{
"DataId": 32237,
"Locations": [
{
"Position": {
"X": -713.7814,
"Y": 51.18425,
"Z": 365.8188
},
"MinimumAngle": 145,
"MaximumAngle": 275
},
{
"Position": {
"X": -674.6958,
"Y": 44.06395,
"Z": 347.5866
},
"MinimumAngle": -70,
"MaximumAngle": 75
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32239,
"Locations": [
{
"Position": {
"X": -625.3124,
"Y": 36.73846,
"Z": 442.5669
},
"MinimumAngle": 140,
"MaximumAngle": 235
},
{
"Position": {
"X": -655.4194,
"Y": 40.51354,
"Z": 402.2708
},
"MinimumAngle": -95,
"MaximumAngle": 60
}
]
},
{
"DataId": 32238,
"Locations": [
{
"Position": {
"X": -628.1135,
"Y": 36.66908,
"Z": 480.3016
},
"MinimumAngle": 85,
"MaximumAngle": 250
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32240,
"Locations": [
{
"Position": {
"X": -575.3094,
"Y": 36.61243,
"Z": 500.9136
},
"MinimumAngle": 15,
"MaximumAngle": 180
}
]
},
{
"DataId": 32241,
"Locations": [
{
"Position": {
"X": -560.735,
"Y": 37.00333,
"Z": 439.5417
},
"MinimumAngle": -15,
"MaximumAngle": 95
},
{
"Position": {
"X": -586.5652,
"Y": 37.77999,
"Z": 459.6001
},
"MinimumAngle": 40,
"MaximumAngle": 200
}
]
}
]
}
]
}

View File

@ -0,0 +1,158 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 621,
"AetheryteShortcut": "Lochs - Porta Praetoria",
"Groups": [
{
"Nodes": [
{
"DataId": 32167,
"Locations": [
{
"Position": {
"X": -569.6677,
"Y": 17.29578,
"Z": -148.952
},
"MinimumAngle": 175,
"MaximumAngle": 300
},
{
"Position": {
"X": -575.41,
"Y": 18.57019,
"Z": -160.1905
},
"MinimumAngle": -90,
"MaximumAngle": 15
},
{
"Position": {
"X": -569.3643,
"Y": 15.97435,
"Z": -170.2152
},
"MinimumAngle": 225,
"MaximumAngle": 350
}
]
},
{
"DataId": 32166,
"Locations": [
{
"Position": {
"X": -578.1491,
"Y": 20.07928,
"Z": -153.1853
},
"MinimumAngle": 205,
"MaximumAngle": 355
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32170,
"Locations": [
{
"Position": {
"X": -542.444,
"Y": 15.60992,
"Z": -299.645
},
"MinimumAngle": 245,
"MaximumAngle": 360
}
]
},
{
"DataId": 32171,
"Locations": [
{
"Position": {
"X": -540.2715,
"Y": 16.96567,
"Z": -304.0383
},
"MinimumAngle": 220,
"MaximumAngle": 350
},
{
"Position": {
"X": -516.496,
"Y": 21.84032,
"Z": -346.177
},
"MinimumAngle": -55,
"MaximumAngle": 75
},
{
"Position": {
"X": -507.6519,
"Y": 9.185992,
"Z": -287.0281
},
"MinimumAngle": 30,
"MaximumAngle": 160
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32168,
"Locations": [
{
"Position": {
"X": -404.0753,
"Y": 14.02301,
"Z": -270.8308
},
"MinimumAngle": 195,
"MaximumAngle": 315
}
]
},
{
"DataId": 32169,
"Locations": [
{
"Position": {
"X": -393.6106,
"Y": 13.93396,
"Z": -262.3799
},
"MinimumAngle": 15,
"MaximumAngle": 130
},
{
"Position": {
"X": -406.0579,
"Y": 12.16138,
"Z": -255.3292
},
"MinimumAngle": -145,
"MaximumAngle": 20
},
{
"Position": {
"X": -394.2554,
"Y": 13.38954,
"Z": -275.8168
},
"MinimumAngle": 60,
"MaximumAngle": 135
}
]
}
]
}
]
}

View File

@ -0,0 +1,158 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 621,
"AetheryteShortcut": "Lochs - Ala Mhigan Quarter",
"Groups": [
{
"Nodes": [
{
"DataId": 32245,
"Locations": [
{
"Position": {
"X": 333.1211,
"Y": 20.88004,
"Z": -522.5363
},
"MinimumAngle": 160,
"MaximumAngle": 335
},
{
"Position": {
"X": 338.3687,
"Y": 21.54188,
"Z": -512.1134
},
"MinimumAngle": 120,
"MaximumAngle": 275
},
{
"Position": {
"X": 374.9138,
"Y": 25.00688,
"Z": -515.2723
},
"MinimumAngle": -85,
"MaximumAngle": 90
}
]
},
{
"DataId": 32244,
"Locations": [
{
"Position": {
"X": 368.5785,
"Y": 24.38493,
"Z": -507.3824
},
"MinimumAngle": 65,
"MaximumAngle": 240
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32243,
"Locations": [
{
"Position": {
"X": 426.1108,
"Y": 25.12664,
"Z": -607.2003
},
"MinimumAngle": -20,
"MaximumAngle": 145
},
{
"Position": {
"X": 400.1029,
"Y": 25.21572,
"Z": -648.0899
},
"MinimumAngle": 190,
"MaximumAngle": 325
},
{
"Position": {
"X": 463.1597,
"Y": 24.9486,
"Z": -602.0026
},
"MinimumAngle": 0,
"MaximumAngle": 150
}
]
},
{
"DataId": 32242,
"Locations": [
{
"Position": {
"X": 396.3124,
"Y": 25.41136,
"Z": -663.1417
},
"MinimumAngle": 20,
"MaximumAngle": 205
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32247,
"Locations": [
{
"Position": {
"X": 274.2476,
"Y": 18.49642,
"Z": -627.4052
},
"MinimumAngle": -95,
"MaximumAngle": 100
},
{
"Position": {
"X": 248.6237,
"Y": 10.63078,
"Z": -592.5243
},
"MinimumAngle": -145,
"MaximumAngle": 35
},
{
"Position": {
"X": 259.3484,
"Y": 11.24844,
"Z": -586.5854
},
"MinimumAngle": -120,
"MaximumAngle": 45
}
]
},
{
"DataId": 32246,
"Locations": [
{
"Position": {
"X": 266.4147,
"Y": 18.26739,
"Z": -620.2316
},
"MinimumAngle": 135,
"MaximumAngle": 305
}
]
}
]
}
]
}

View File

@ -0,0 +1,158 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 620,
"AetheryteShortcut": "Peaks - Ala Gannha",
"Groups": [
{
"Nodes": [
{
"DataId": 32147,
"Locations": [
{
"Position": {
"X": 112.743,
"Y": 115.1324,
"Z": -511.142
},
"MinimumAngle": -165,
"MaximumAngle": -20
}
]
},
{
"DataId": 32148,
"Locations": [
{
"Position": {
"X": 101.6789,
"Y": 114.9711,
"Z": -506.4506
},
"MinimumAngle": 20,
"MaximumAngle": 225
},
{
"Position": {
"X": 122.53,
"Y": 116.4095,
"Z": -533.6536
},
"MinimumAngle": -80,
"MaximumAngle": 75
},
{
"Position": {
"X": 108.0162,
"Y": 115.2875,
"Z": -509.5858
},
"MinimumAngle": -20,
"MaximumAngle": 110
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32152,
"Locations": [
{
"Position": {
"X": -6.542124,
"Y": 113.9997,
"Z": -406.9197
},
"MinimumAngle": 80,
"MaximumAngle": 150
},
{
"Position": {
"X": -4.06374,
"Y": 113.4698,
"Z": -413.3034
},
"MinimumAngle": 80,
"MaximumAngle": 200
},
{
"Position": {
"X": -13.96204,
"Y": 113.9696,
"Z": -383.4135
},
"MinimumAngle": 45,
"MaximumAngle": 160
}
]
},
{
"DataId": 32151,
"Locations": [
{
"Position": {
"X": -11.21539,
"Y": 114.1222,
"Z": -392.7825
},
"MinimumAngle": 70,
"MaximumAngle": 165
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32149,
"Locations": [
{
"Position": {
"X": 167.207,
"Y": 137.3464,
"Z": -336.0433
},
"MinimumAngle": 85,
"MaximumAngle": 225
}
]
},
{
"DataId": 32150,
"Locations": [
{
"Position": {
"X": 176.9339,
"Y": 138.3656,
"Z": -335.729
},
"MinimumAngle": 115,
"MaximumAngle": 220
},
{
"Position": {
"X": 182.5719,
"Y": 138.795,
"Z": -333.3691
},
"MinimumAngle": 195,
"MaximumAngle": 290
},
{
"Position": {
"X": 198.0379,
"Y": 136.6125,
"Z": -337.0126
},
"MinimumAngle": 60,
"MaximumAngle": 160
}
]
}
]
}
]
}

View File

@ -0,0 +1,140 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 620,
"AetheryteShortcut": "Peaks - Ala Gannha",
"Groups": [
{
"Nodes": [
{
"DataId": 32234,
"Locations": [
{
"Position": {
"X": -381.2856,
"Y": 66.03626,
"Z": -548.9689
}
}
]
},
{
"DataId": 32235,
"Locations": [
{
"Position": {
"X": -421.8894,
"Y": 69.34563,
"Z": -520.4478
}
},
{
"Position": {
"X": -376.2228,
"Y": 66.67438,
"Z": -545.8188
}
},
{
"Position": {
"X": -355.3144,
"Y": 66.57961,
"Z": -545.7592
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32232,
"Locations": [
{
"Position": {
"X": -517.0562,
"Y": 63.73144,
"Z": -477.6884
}
}
]
},
{
"DataId": 32233,
"Locations": [
{
"Position": {
"X": -550.7997,
"Y": 69.32131,
"Z": -449.5795
},
"MinimumAngle": 0,
"MaximumAngle": 230
},
{
"Position": {
"X": -507.8166,
"Y": 66.39982,
"Z": -470.319
}
},
{
"Position": {
"X": -494.5092,
"Y": 63.5919,
"Z": -497.5369
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32230,
"Locations": [
{
"Position": {
"X": -402.3759,
"Y": 95.33111,
"Z": -371.9796
},
"MinimumAngle": -15,
"MaximumAngle": 230
}
]
},
{
"DataId": 32231,
"Locations": [
{
"Position": {
"X": -398.7086,
"Y": 95.14203,
"Z": -377.1731
},
"MinimumAngle": 30,
"MaximumAngle": 230
},
{
"Position": {
"X": -427.5446,
"Y": 90.42126,
"Z": -391.9806
}
},
{
"Position": {
"X": -398.5008,
"Y": 98.82507,
"Z": -351.0829
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,131 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 620,
"AetheryteShortcut": "Peaks - Ala Gannha",
"Groups": [
{
"Nodes": [
{
"DataId": 32286,
"Locations": [
{
"Position": {
"X": 720.7598,
"Y": 247.8707,
"Z": -571.472
},
"MinimumAngle": 115,
"MaximumAngle": 235
}
]
},
{
"DataId": 32287,
"Locations": [
{
"Position": {
"X": 749.6198,
"Y": 250.0555,
"Z": -569.6151
},
"MinimumAngle": 160,
"MaximumAngle": 280
},
{
"Position": {
"X": 700.801,
"Y": 248.3289,
"Z": -569.3172
},
"MinimumAngle": 185,
"MaximumAngle": 275
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32285,
"Locations": [
{
"Position": {
"X": 792.5579,
"Y": 257.8186,
"Z": -661.4872
},
"MinimumAngle": 80,
"MaximumAngle": 155
},
{
"Position": {
"X": 773.1775,
"Y": 253.9753,
"Z": -671.3119
},
"MinimumAngle": -80,
"MaximumAngle": -5
}
]
},
{
"DataId": 32284,
"Locations": [
{
"Position": {
"X": 788.1879,
"Y": 257.4255,
"Z": -669.3115
},
"MinimumAngle": -65,
"MaximumAngle": 5
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32289,
"Locations": [
{
"Position": {
"X": 846.4332,
"Y": 262.9354,
"Z": -500.6171
},
"MinimumAngle": 40,
"MaximumAngle": 155
},
{
"Position": {
"X": 838.9346,
"Y": 262.0732,
"Z": -527.0631
},
"MinimumAngle": 60,
"MaximumAngle": 145
}
]
},
{
"DataId": 32288,
"Locations": [
{
"Position": {
"X": 845.8228,
"Y": 263.8849,
"Z": -511.0472
},
"MinimumAngle": -30,
"MaximumAngle": 60
}
]
}
]
}
]
}

View File

@ -0,0 +1,113 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 620,
"AetheryteShortcut": "Peaks - Ala Gannha",
"Groups": [
{
"Nodes": [
{
"DataId": 32292,
"Locations": [
{
"Position": {
"X": -276.0765,
"Y": 74.99889,
"Z": -751.7645
}
}
]
},
{
"DataId": 32293,
"Locations": [
{
"Position": {
"X": -291.6779,
"Y": 75.03039,
"Z": -740.0215
}
},
{
"Position": {
"X": -309.4909,
"Y": 74.66329,
"Z": -746.8633
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32290,
"Locations": [
{
"Position": {
"X": -377.3709,
"Y": 59.22021,
"Z": -721.5839
}
}
]
},
{
"DataId": 32291,
"Locations": [
{
"Position": {
"X": -385.6718,
"Y": 59.15918,
"Z": -741.5427
}
},
{
"Position": {
"X": -409.1402,
"Y": 56.75652,
"Z": -746.273
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32295,
"Locations": [
{
"Position": {
"X": -456.0745,
"Y": 57.47042,
"Z": -804.0213
}
},
{
"Position": {
"X": -455.9548,
"Y": 57.93848,
"Z": -785.8549
}
}
]
},
{
"DataId": 32294,
"Locations": [
{
"Position": {
"X": -472.6482,
"Y": 57.45007,
"Z": -798.8556
}
}
]
}
]
}
]
}

View File

@ -2,7 +2,11 @@
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json", "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza", "Author": "liza",
"TerritoryId": 613, "TerritoryId": 613,
"AetheryteShortcut": "Ruby Sea - Onokoro", "AetheryteShortcut": "Kugane",
"AethernetShortcut": [
"[Kugane] Aetheryte Plaza",
"[Kugane] The Ruby Price"
],
"Groups": [ "Groups": [
{ {
"Nodes": [ "Nodes": [
@ -103,6 +107,56 @@
] ]
} }
] ]
},
{
"Nodes": [
{
"DataId": 32137,
"Locations": [
{
"Position": {
"X": 136.1673,
"Y": 35.7457,
"Z": 802.5483
},
"MinimumAngle": 175,
"MaximumAngle": 300
}
]
},
{
"DataId": 32138,
"Locations": [
{
"Position": {
"X": 120.3011,
"Y": 33.62519,
"Z": 797.1313
},
"MinimumAngle": 100,
"MaximumAngle": 215
},
{
"Position": {
"X": 137.5746,
"Y": 35.89635,
"Z": 805.4796
},
"MinimumAngle": 195,
"MaximumAngle": 325
},
{
"Position": {
"X": 136.7552,
"Y": 38.41375,
"Z": 817.2667
},
"MinimumAngle": 215,
"MaximumAngle": 325
}
]
}
]
} }
] ]
} }

View File

@ -0,0 +1,135 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 613,
"AetheryteShortcut": "Kugane",
"AethernetShortcut": [
"[Kugane] Aetheryte Plaza",
"[Kugane] The Ruby Price"
],
"Groups": [
{
"Nodes": [
{
"DataId": 32296,
"Locations": [
{
"Position": {
"X": -216.1387,
"Y": 0.6300181,
"Z": 616.7697
},
"MinimumAngle": 180,
"MaximumAngle": 265
}
]
},
{
"DataId": 32297,
"Locations": [
{
"Position": {
"X": -236.5302,
"Y": 0.503479,
"Z": 634.821
},
"MinimumAngle": 60,
"MaximumAngle": 150
},
{
"Position": {
"X": -242.0282,
"Y": 1.464991,
"Z": 649.7866
},
"MinimumAngle": -20,
"MaximumAngle": 70
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32298,
"Locations": [
{
"Position": {
"X": -267.9128,
"Y": 0.6036554,
"Z": 722.319
},
"MinimumAngle": 230,
"MaximumAngle": 330
}
]
},
{
"DataId": 32299,
"Locations": [
{
"Position": {
"X": -275.2201,
"Y": 1.438162,
"Z": 727.0667
},
"MinimumAngle": 0,
"MaximumAngle": 105
},
{
"Position": {
"X": -277.8375,
"Y": 2.060616,
"Z": 721.6605
},
"MinimumAngle": 20,
"MaximumAngle": 85
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32300,
"Locations": [
{
"Position": {
"X": -148.4246,
"Y": 11.42871,
"Z": 776.8299
},
"MinimumAngle": 105,
"MaximumAngle": 240
}
]
},
{
"DataId": 32301,
"Locations": [
{
"Position": {
"X": -135.4789,
"Y": 11.61927,
"Z": 765.4382
},
"MinimumAngle": 45,
"MaximumAngle": 155
},
{
"Position": {
"X": -169.3294,
"Y": 11.36792,
"Z": 784.0237
},
"MinimumAngle": 85,
"MaximumAngle": 210
}
]
}
]
}
]
}

View File

@ -0,0 +1,115 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 613,
"AetheryteShortcut": "Ruby Sea - Tamamizu",
"Groups": [
{
"Nodes": [
{
"DataId": 32302,
"Locations": [
{
"Position": {
"X": 831.4452,
"Y": 48.62377,
"Z": -131.4108
}
}
]
},
{
"DataId": 32303,
"Locations": [
{
"Position": {
"X": 865.9036,
"Y": 46.76892,
"Z": -129.9611
}
},
{
"Position": {
"X": 822.6691,
"Y": 48.57434,
"Z": -130.6889
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32305,
"Locations": [
{
"Position": {
"X": 780.787,
"Y": 51.3394,
"Z": -265.6496
}
},
{
"Position": {
"X": 824.1245,
"Y": 40.93994,
"Z": -250.4464
}
}
]
},
{
"DataId": 32304,
"Locations": [
{
"Position": {
"X": 816.6475,
"Y": 41.2146,
"Z": -263.6606
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32306,
"Locations": [
{
"Position": {
"X": 648.2073,
"Y": 75.29906,
"Z": -226.7926
},
"MinimumAngle": 25,
"MaximumAngle": 290
}
]
},
{
"DataId": 32307,
"Locations": [
{
"Position": {
"X": 652.0435,
"Y": 71.82505,
"Z": -241.2778
}
},
{
"Position": {
"X": 645.0362,
"Y": 69.79202,
"Z": -255.1373
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,156 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 614,
"AetheryteShortcut": "Yanxia - Namai",
"Groups": [
{
"Nodes": [
{
"DataId": 32144,
"Locations": [
{
"Position": {
"X": 407.4102,
"Y": 68.66914,
"Z": 19.0117
},
"MinimumAngle": 105,
"MaximumAngle": 255
},
{
"Position": {
"X": 376.4243,
"Y": 61.81466,
"Z": 5.657309
},
"MinimumAngle": 170,
"MaximumAngle": 275
},
{
"Position": {
"X": 441.2355,
"Y": 75.06916,
"Z": 17.49573
},
"MinimumAngle": 110,
"MaximumAngle": 235
}
]
},
{
"DataId": 32143,
"Locations": [
{
"Position": {
"X": 417.9466,
"Y": 70.24178,
"Z": 19.50875
},
"MinimumAngle": 120,
"MaximumAngle": 240
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32142,
"Locations": [
{
"Position": {
"X": 606.259,
"Y": 93.63981,
"Z": 85.09741
},
"MinimumAngle": 65,
"MaximumAngle": 185
},
{
"Position": {
"X": 594.0188,
"Y": 87.54358,
"Z": 51.05505
}
},
{
"Position": {
"X": 576.0488,
"Y": 91.74075,
"Z": 114.4922
},
"MinimumAngle": 75,
"MaximumAngle": 165
}
]
},
{
"DataId": 32141,
"Locations": [
{
"Position": {
"X": 608.4475,
"Y": 94.5528,
"Z": 80.633
},
"MinimumAngle": 45,
"MaximumAngle": 135
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32146,
"Locations": [
{
"Position": {
"X": 519.749,
"Y": 46.5653,
"Z": -59.9632
},
"MinimumAngle": 25,
"MaximumAngle": 125
},
{
"Position": {
"X": 532.2807,
"Y": 41.75984,
"Z": -85.99076
},
"MinimumAngle": 55,
"MaximumAngle": 190
},
{
"Position": {
"X": 519.0377,
"Y": 44.42293,
"Z": -67.19048
},
"MinimumAngle": 30,
"MaximumAngle": 175
}
]
},
{
"DataId": 32145,
"Locations": [
{
"Position": {
"X": 520.0951,
"Y": 43.35083,
"Z": -70.45672
},
"MinimumAngle": 40,
"MaximumAngle": 145
}
]
}
]
}
]
}

View File

@ -0,0 +1,158 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 614,
"AetheryteShortcut": "Yanxia - Namai",
"Groups": [
{
"Nodes": [
{
"DataId": 32160,
"Locations": [
{
"Position": {
"X": 708.6117,
"Y": 111.2374,
"Z": -117.7716
},
"MinimumAngle": -65,
"MaximumAngle": 45
},
{
"Position": {
"X": 719.1514,
"Y": 103.8884,
"Z": -115.8518
},
"MinimumAngle": 170,
"MaximumAngle": 240
},
{
"Position": {
"X": 719.6881,
"Y": 103.6927,
"Z": -122.8691
},
"MinimumAngle": -85,
"MaximumAngle": 15
}
]
},
{
"DataId": 32159,
"Locations": [
{
"Position": {
"X": 728.5063,
"Y": 104.6812,
"Z": -115.4031
},
"MinimumAngle": 160,
"MaximumAngle": 260
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32162,
"Locations": [
{
"Position": {
"X": 786.5566,
"Y": 127.8859,
"Z": 12.83276
},
"MinimumAngle": 200,
"MaximumAngle": 280
},
{
"Position": {
"X": 843.5591,
"Y": 136.583,
"Z": 25.3552
},
"MinimumAngle": 150,
"MaximumAngle": 205
},
{
"Position": {
"X": 822.8708,
"Y": 132.8188,
"Z": 15.71949
},
"MinimumAngle": 120,
"MaximumAngle": 220
}
]
},
{
"DataId": 32161,
"Locations": [
{
"Position": {
"X": 814.1754,
"Y": 132.0118,
"Z": 22.69431
},
"MinimumAngle": 70,
"MaximumAngle": 175
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32163,
"Locations": [
{
"Position": {
"X": 893.1265,
"Y": 141.6431,
"Z": -143.2574
},
"MinimumAngle": 25,
"MaximumAngle": 140
}
]
},
{
"DataId": 32164,
"Locations": [
{
"Position": {
"X": 885.5841,
"Y": 139.7701,
"Z": -160.253
},
"MinimumAngle": 35,
"MaximumAngle": 110
},
{
"Position": {
"X": 894.9779,
"Y": 147.4415,
"Z": -128.2257
},
"MinimumAngle": 20,
"MaximumAngle": 190
},
{
"Position": {
"X": 893.0733,
"Y": 142.1001,
"Z": -140.2642
},
"MinimumAngle": 30,
"MaximumAngle": 155
}
]
}
]
}
]
}

View File

@ -0,0 +1,147 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 614,
"AetheryteShortcut": "Yanxia - Namai",
"Groups": [
{
"Nodes": [
{
"DataId": 32209,
"Locations": [
{
"Position": {
"X": 631.2573,
"Y": 127.0901,
"Z": -332.0291
},
"MinimumAngle": 155,
"MaximumAngle": 300
},
{
"Position": {
"X": 622.622,
"Y": 131.7365,
"Z": -383.0027
}
},
{
"Position": {
"X": 652.4154,
"Y": 136.6543,
"Z": -419.1716
},
"MinimumAngle": -25,
"MaximumAngle": 140
}
]
},
{
"DataId": 32208,
"Locations": [
{
"Position": {
"X": 629.0482,
"Y": 138.9971,
"Z": -423.2108
},
"MinimumAngle": 240,
"MaximumAngle": 360
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32207,
"Locations": [
{
"Position": {
"X": 708.5831,
"Y": 127.3671,
"Z": -351.2474
},
"MinimumAngle": 0,
"MaximumAngle": 100
},
{
"Position": {
"X": 684.129,
"Y": 126.6719,
"Z": -335.2414
},
"MinimumAngle": 80,
"MaximumAngle": 235
}
]
},
{
"DataId": 32206,
"Locations": [
{
"Position": {
"X": 705.5267,
"Y": 125.35,
"Z": -370.0978
},
"MinimumAngle": -35,
"MaximumAngle": 105
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32210,
"Locations": [
{
"Position": {
"X": 791.947,
"Y": 101.7719,
"Z": -288.1637
},
"MinimumAngle": 0,
"MaximumAngle": 155
}
]
},
{
"DataId": 32211,
"Locations": [
{
"Position": {
"X": 788.803,
"Y": 103.5642,
"Z": -240.686
},
"MinimumAngle": 75,
"MaximumAngle": 270
},
{
"Position": {
"X": 809.0134,
"Y": 110.9159,
"Z": -306.1294
},
"MinimumAngle": 120,
"MaximumAngle": 255
},
{
"Position": {
"X": 760.2955,
"Y": 98.77714,
"Z": -209.9551
},
"MinimumAngle": 0,
"MaximumAngle": 115
}
]
}
]
}
]
}

View File

@ -0,0 +1,129 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 814,
"AetheryteShortcut": "Kholusia - Wright",
"Groups": [
{
"Nodes": [
{
"DataId": 32816,
"Locations": [
{
"Position": {
"X": -210.0211,
"Y": 27.87489,
"Z": 244.1517
}
},
{
"Position": {
"X": -184.2966,
"Y": 33.53575,
"Z": 220.416
},
"MinimumAngle": -70,
"MaximumAngle": 100
}
]
},
{
"DataId": 32815,
"Locations": [
{
"Position": {
"X": -194.756,
"Y": 30.00866,
"Z": 235.5003
},
"MinimumAngle": 85,
"MaximumAngle": 290
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32819,
"Locations": [
{
"Position": {
"X": -184.1455,
"Y": 44.3671,
"Z": 162.0892
},
"MinimumAngle": -90,
"MaximumAngle": 100
}
]
},
{
"DataId": 32820,
"Locations": [
{
"Position": {
"X": -164.9459,
"Y": 43.40527,
"Z": 153.1118
},
"MinimumAngle": -100,
"MaximumAngle": 75
},
{
"Position": {
"X": -167.3752,
"Y": 47.25292,
"Z": 136.0359
},
"MinimumAngle": -105,
"MaximumAngle": 105
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32818,
"Locations": [
{
"Position": {
"X": -246.385,
"Y": 72.55199,
"Z": 90.56253
},
"MinimumAngle": -85,
"MaximumAngle": 80
},
{
"Position": {
"X": -208.7709,
"Y": 77.46264,
"Z": 68.17573
},
"MinimumAngle": -105,
"MaximumAngle": 90
}
]
},
{
"DataId": 32817,
"Locations": [
{
"Position": {
"X": -243.0861,
"Y": 79.1743,
"Z": 75.10091
},
"MinimumAngle": -120,
"MaximumAngle": 95
}
]
}
]
}
]
}

View File

@ -0,0 +1,131 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"TerritoryId": 814,
"AetheryteShortcut": "Kholusia - Wright",
"Groups": [
{
"Nodes": [
{
"DataId": 32825,
"Locations": [
{
"Position": {
"X": -482.4797,
"Y": 39.54587,
"Z": 243.9857
},
"MinimumAngle": -95,
"MaximumAngle": 30
}
]
},
{
"DataId": 32826,
"Locations": [
{
"Position": {
"X": -479.1443,
"Y": 39.79183,
"Z": 240.7795
},
"MinimumAngle": -75,
"MaximumAngle": 15
},
{
"Position": {
"X": -486.3334,
"Y": 39.4147,
"Z": 246.6178
},
"MinimumAngle": -105,
"MaximumAngle": 35
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32824,
"Locations": [
{
"Position": {
"X": -591.8113,
"Y": 26.1771,
"Z": 413.057
},
"MinimumAngle": 165,
"MaximumAngle": 265
},
{
"Position": {
"X": -583.5104,
"Y": 26.20471,
"Z": 419.7504
},
"MinimumAngle": 180,
"MaximumAngle": 280
}
]
},
{
"DataId": 32823,
"Locations": [
{
"Position": {
"X": -587.8331,
"Y": 26.20816,
"Z": 416.5177
},
"MinimumAngle": 155,
"MaximumAngle": 250
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32821,
"Locations": [
{
"Position": {
"X": -667.9664,
"Y": 24.58142,
"Z": 365.2537
},
"MinimumAngle": 165,
"MaximumAngle": 240
}
]
},
{
"DataId": 32822,
"Locations": [
{
"Position": {
"X": -672.0605,
"Y": 24.69111,
"Z": 363.4729
},
"MinimumAngle": 115,
"MaximumAngle": 215
},
{
"Position": {
"X": -663.9247,
"Y": 24.84755,
"Z": 366.6812
},
"MinimumAngle": 170,
"MaximumAngle": 310
}
]
}
]
}
]
}

View File

@ -25,6 +25,15 @@
"AetheryteShortcut": { "AetheryteShortcut": {
"$ref": "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Aetheryte" "$ref": "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Aetheryte"
}, },
"AethernetShortcut": {
"type": "array",
"description": "A pair of aethernet locations (from + to) to use as a shortcut",
"minItems": 2,
"maxItems": 2,
"items": {
"$ref": "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/AethernetShard"
}
},
"Groups": { "Groups": {
"type": "array", "type": "array",
"items": { "items": {

2
LLib

@ -1 +1 @@
Subproject commit 8d947be6784804a7cab120d596dd54e88e548efc Subproject commit 9db9f95b8cd3f36262b5b4b14f12b7331d3c7279

View File

@ -153,6 +153,7 @@ public class GatheringSourceGenerator : ISourceGenerator
Assignment(nameof(GatheringRoot.TerritoryId), root.TerritoryId, default) Assignment(nameof(GatheringRoot.TerritoryId), root.TerritoryId, default)
.AsSyntaxNodeOrToken(), .AsSyntaxNodeOrToken(),
Assignment(nameof(GatheringRoot.AetheryteShortcut), root.AetheryteShortcut, null), Assignment(nameof(GatheringRoot.AetheryteShortcut), root.AetheryteShortcut, null),
Assignment(nameof(GatheringRoot.AethernetShortcut), root.AethernetShortcut, null),
AssignmentList(nameof(GatheringRoot.Groups), root.Groups).AsSyntaxNodeOrToken())))); AssignmentList(nameof(GatheringRoot.Groups), root.Groups).AsSyntaxNodeOrToken()))));
} }
catch (Exception e) catch (Exception e)

View File

@ -1,8 +1,7 @@
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using Questionable.Model.Common;
using Questionable.Model.Questing.Converter; using Questionable.Model.Questing.Converter;
namespace Questionable.Model.Questing; namespace Questionable.Model.Common;
[JsonConverter(typeof(AethernetShortcutConverter))] [JsonConverter(typeof(AethernetShortcutConverter))]
public sealed class AethernetShortcut public sealed class AethernetShortcut

View File

@ -2,6 +2,7 @@
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using Questionable.Model.Common; using Questionable.Model.Common;
using Questionable.Model.Common.Converter; using Questionable.Model.Common.Converter;
using Questionable.Model.Questing.Converter;
namespace Questionable.Model.Gathering; namespace Questionable.Model.Gathering;
@ -14,5 +15,6 @@ public sealed class GatheringRoot
[JsonConverter(typeof(AetheryteConverter))] [JsonConverter(typeof(AetheryteConverter))]
public EAetheryteLocation? AetheryteShortcut { get; set; } public EAetheryteLocation? AetheryteShortcut { get; set; }
public AethernetShortcut? AethernetShortcut { get; set; }
public List<GatheringNodeGroup> Groups { get; set; } = []; public List<GatheringNodeGroup> Groups { get; set; } = [];
} }

View File

@ -4,8 +4,11 @@ using Dalamud.Game.Gui.ContextMenu;
using Dalamud.Game.Text; using Dalamud.Game.Text;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game; using FFXIVClientStructs.FFXIV.Client.Game;
using FFXIVClientStructs.FFXIV.Client.UI.Agent;
using LLib.GameData;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Questionable.Data; using Questionable.Data;
using Questionable.GameStructs;
using Questionable.Model; using Questionable.Model;
using Questionable.Model.Questing; using Questionable.Model.Questing;
@ -59,7 +62,7 @@ internal sealed class ContextMenuController : IDisposable
if (itemId >= 500_000) if (itemId >= 500_000)
itemId -= 500_000; itemId -= 500_000;
if (!_gatheringData.TryGetGatheringPointId(itemId, _clientState.LocalPlayer!.ClassJob.Id, out _)) if (!_gatheringData.TryGetGatheringPointId(itemId, (EClassJob)_clientState.LocalPlayer!.ClassJob.Id, out _))
{ {
_logger.LogInformation("No gathering point found for current job."); _logger.LogInformation("No gathering point found for current job.");
return; return;
@ -72,12 +75,23 @@ internal sealed class ContextMenuController : IDisposable
if (collectability == 0) if (collectability == 0)
return; return;
unsafe
{
var agentSatisfactionSupply = AgentSatisfactionSupply.Instance();
if (agentSatisfactionSupply->IsAgentActive())
{
quantityToGather = Math.Min(agentSatisfactionSupply->RemainingAllowances,
((AgentSatisfactionSupply2*)agentSatisfactionSupply)->TurnInsToNextRank);
}
}
args.AddMenuItem(new MenuItem args.AddMenuItem(new MenuItem
{ {
Prefix = SeIconChar.Hyadelyn, Prefix = SeIconChar.Hyadelyn,
PrefixColor = 52, PrefixColor = 52,
Name = "Gather with Questionable", Name = "Gather with Questionable",
OnClicked = _ => StartGathering(npcId, itemId, quantityToGather, collectability), OnClicked = _ => StartGathering(npcId, itemId, quantityToGather, collectability),
IsEnabled = quantityToGather > 0,
}); });
} }
} }
@ -97,7 +111,7 @@ internal sealed class ContextMenuController : IDisposable
Collectability = collectability Collectability = collectability
} }
]; ];
_questController.SetNextQuest(quest); _questController.SetGatheringQuest(quest);
_questController.ExecuteNextStep(QuestController.EAutomationType.CurrentQuestOnly); _questController.ExecuteNextStep(QuestController.EAutomationType.CurrentQuestOnly);
} }
else else

View File

@ -33,6 +33,7 @@ internal sealed class QuestController : MiniTaskController<QuestController>
private QuestProgress? _startedQuest; private QuestProgress? _startedQuest;
private QuestProgress? _nextQuest; private QuestProgress? _nextQuest;
private QuestProgress? _simulatedQuest; private QuestProgress? _simulatedQuest;
private QuestProgress? _gatheringQuest;
private EAutomationType _automationType; private EAutomationType _automationType;
/// <summary> /// <summary>
@ -79,6 +80,8 @@ internal sealed class QuestController : MiniTaskController<QuestController>
return (_simulatedQuest, ECurrentQuestType.Simulated); return (_simulatedQuest, ECurrentQuestType.Simulated);
else if (_nextQuest != null && _gameFunctions.IsReadyToAcceptQuest(_nextQuest.Quest.Id)) else if (_nextQuest != null && _gameFunctions.IsReadyToAcceptQuest(_nextQuest.Quest.Id))
return (_nextQuest, ECurrentQuestType.Next); return (_nextQuest, ECurrentQuestType.Next);
else if (_gatheringQuest != null)
return (_gatheringQuest, ECurrentQuestType.Gathering);
else if (_startedQuest != null) else if (_startedQuest != null)
return (_startedQuest, ECurrentQuestType.Normal); return (_startedQuest, ECurrentQuestType.Normal);
else else
@ -91,6 +94,7 @@ internal sealed class QuestController : MiniTaskController<QuestController>
public QuestProgress? StartedQuest => _startedQuest; public QuestProgress? StartedQuest => _startedQuest;
public QuestProgress? SimulatedQuest => _simulatedQuest; public QuestProgress? SimulatedQuest => _simulatedQuest;
public QuestProgress? NextQuest => _nextQuest; public QuestProgress? NextQuest => _nextQuest;
public QuestProgress? GatheringQuest => _gatheringQuest;
public string? DebugState { get; private set; } public string? DebugState { get; private set; }
@ -102,6 +106,7 @@ internal sealed class QuestController : MiniTaskController<QuestController>
_startedQuest = null; _startedQuest = null;
_nextQuest = null; _nextQuest = null;
_gatheringQuest = null;
_simulatedQuest = null; _simulatedQuest = null;
_safeAnimationEnd = DateTime.MinValue; _safeAnimationEnd = DateTime.MinValue;
@ -212,6 +217,17 @@ internal sealed class QuestController : MiniTaskController<QuestController>
_automationType == EAutomationType.Automatic) _automationType == EAutomationType.Automatic)
ExecuteNextStep(_automationType); ExecuteNextStep(_automationType);
} }
else if (_gatheringQuest != null)
{
questToRun = _gatheringQuest;
currentSequence = _gatheringQuest.Sequence;
if (_gatheringQuest.Step == 0 &&
_currentTask == null &&
_taskQueue.Count == 0 &&
_automationType == EAutomationType.Automatic)
ExecuteNextStep(_automationType);
}
else else
{ {
(ElementId? currentQuestId, currentSequence) = _gameFunctions.GetCurrentQuest(); (ElementId? currentQuestId, currentSequence) = _gameFunctions.GetCurrentQuest();
@ -404,6 +420,7 @@ internal sealed class QuestController : MiniTaskController<QuestController>
_logger.LogInformation("Stopping automatic questing"); _logger.LogInformation("Stopping automatic questing");
_automationType = EAutomationType.Manual; _automationType = EAutomationType.Manual;
_nextQuest = null; _nextQuest = null;
_gatheringQuest = null;
} }
} }
@ -427,6 +444,15 @@ internal sealed class QuestController : MiniTaskController<QuestController>
_nextQuest = null; _nextQuest = null;
} }
public void SetGatheringQuest(Quest? quest)
{
_logger.LogInformation("GatheringQuest: {QuestId}", quest?.Id);
if (quest != null)
_gatheringQuest = new QuestProgress(quest);
else
_gatheringQuest = null;
}
protected override void UpdateCurrentTask() protected override void UpdateCurrentTask()
{ {
if (_gameFunctions.IsOccupied()) if (_gameFunctions.IsOccupied())
@ -460,10 +486,11 @@ internal sealed class QuestController : MiniTaskController<QuestController>
if (CurrentQuestDetails?.Progress.Quest.Id is SatisfactionSupplyNpcId && if (CurrentQuestDetails?.Progress.Quest.Id is SatisfactionSupplyNpcId &&
CurrentQuestDetails?.Progress.Sequence == 0 && CurrentQuestDetails?.Progress.Sequence == 0 &&
CurrentQuestDetails?.Progress.Step == 255 && CurrentQuestDetails?.Progress.Step == 255 &&
CurrentQuestDetails?.Type == ECurrentQuestType.Next) CurrentQuestDetails?.Type == ECurrentQuestType.Gathering)
{ {
_logger.LogInformation("Completed delivery quest"); _logger.LogInformation("Completed delivery quest");
SetNextQuest(null); SetGatheringQuest(null);
Stop("Gathering quest complete");
} }
else else
{ {
@ -650,6 +677,7 @@ internal sealed class QuestController : MiniTaskController<QuestController>
{ {
Normal, Normal,
Next, Next,
Gathering,
Simulated, Simulated,
} }

View File

@ -2,6 +2,7 @@
using Dalamud.Game.Text; using Dalamud.Game.Text;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Component.GUI; using FFXIVClientStructs.FFXIV.Component.GUI;
using LLib.GameData;
using LLib.GameUI; using LLib.GameUI;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Questionable.Model.Gathering; using Questionable.Model.Gathering;
@ -138,7 +139,7 @@ internal sealed class DoGatherCollectable(
private EAction PickAction(EAction minerAction, EAction botanistAction) private EAction PickAction(EAction minerAction, EAction botanistAction)
{ {
if (clientState.LocalPlayer?.ClassJob.Id == 16) if ((EClassJob?)clientState.LocalPlayer?.ClassJob.Id == EClassJob.Miner)
return minerAction; return minerAction;
else else
return botanistAction; return botanistAction;

View File

@ -2,14 +2,12 @@
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Numerics; using System.Numerics;
using System.Security.Cryptography;
using Dalamud.Game.ClientState.Objects.Enums; using Dalamud.Game.ClientState.Objects.Enums;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using GatheringPathRenderer; using GatheringPathRenderer;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Questionable.Controller.Steps.Shared; using Questionable.Controller.Steps.Shared;
using Questionable.External;
using Questionable.Model.Gathering; using Questionable.Model.Gathering;
namespace Questionable.Controller.Steps.Gathering; namespace Questionable.Controller.Steps.Gathering;
@ -18,7 +16,6 @@ internal sealed class MoveToLandingLocation(
IServiceProvider serviceProvider, IServiceProvider serviceProvider,
GameFunctions gameFunctions, GameFunctions gameFunctions,
IObjectTable objectTable, IObjectTable objectTable,
NavmeshIpc navmeshIpc,
ILogger<MoveToLandingLocation> logger) : ITask ILogger<MoveToLandingLocation> logger) : ITask
{ {
private ushort _territoryId; private ushort _territoryId;
@ -50,25 +47,8 @@ internal sealed class MoveToLandingLocation(
target.ToString("G", CultureInfo.InvariantCulture), degrees, range); target.ToString("G", CultureInfo.InvariantCulture), degrees, range);
bool fly = gameFunctions.IsFlyingUnlocked(_territoryId); bool fly = gameFunctions.IsFlyingUnlocked(_territoryId);
Vector3? pointOnFloor = navmeshIpc.GetPointOnFloor(target with { Y = target.Y + 5f }, false);
if (pointOnFloor != null)
pointOnFloor = pointOnFloor.Value with { Y = pointOnFloor.Value.Y + (fly ? 0.5f : 0f) };
// since we only allow points that can be landed on, the distance is important but the angle shouldn't matter
if (pointOnFloor != null && Vector3.Distance(pointOnFloor.Value, location.Position) >
location.CalculateMaximumDistance())
{
pointOnFloor = location.Position + Vector3.Normalize(pointOnFloor.Value - location.Position) * location.CalculateMaximumDistance();
logger.LogInformation("Adjusted landing location: {Location}", pointOnFloor.Value.ToString("G", CultureInfo.InvariantCulture)); }
else
{
logger.LogInformation("Final landing location: {Location}",
(pointOnFloor ?? target).ToString("G", CultureInfo.InvariantCulture));
}
_moveTask = serviceProvider.GetRequiredService<Move.MoveInternal>() _moveTask = serviceProvider.GetRequiredService<Move.MoveInternal>()
.With(_territoryId, pointOnFloor ?? target, 0.25f, dataId: _gatheringNode.DataId, fly: fly, .With(_territoryId, target, 0.25f, dataId: _gatheringNode.DataId, fly: fly,
ignoreDistanceToObject: true); ignoreDistanceToObject: true);
return _moveTask.Start(); return _moveTask.Start();
} }

View File

@ -45,7 +45,7 @@ internal static class AethernetShortcut
public SkipAetheryteCondition SkipConditions { get; set; } = null!; public SkipAetheryteCondition SkipConditions { get; set; } = null!;
public ITask With(EAetheryteLocation from, EAetheryteLocation to, public ITask With(EAetheryteLocation from, EAetheryteLocation to,
SkipAetheryteCondition? skipConditions) SkipAetheryteCondition? skipConditions = null)
{ {
From = from; From = from;
To = to; To = to;

View File

@ -3,10 +3,10 @@ using System.Collections.Generic;
using Dalamud.Game.Text; using Dalamud.Game.Text;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game; using FFXIVClientStructs.FFXIV.Client.Game;
using LLib.GameData;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Questionable.Controller.Steps.Common; using Questionable.Controller.Steps.Common;
using Questionable.Data; using Questionable.Data;
using Questionable.External;
using Questionable.GatheringPaths; using Questionable.GatheringPaths;
using Questionable.Model; using Questionable.Model;
using Questionable.Model.Gathering; using Questionable.Model.Gathering;
@ -21,14 +21,15 @@ internal static class GatheringRequiredItems
MovementController movementController, MovementController movementController,
IClientState clientState, IClientState clientState,
GatheringData gatheringData, GatheringData gatheringData,
TerritoryData territoryData) : ITaskFactory TerritoryData territoryData,
AetheryteData aetheryteData) : ITaskFactory
{ {
public IEnumerable<ITask> CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step) public IEnumerable<ITask> CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step)
{ {
foreach (var requiredGatheredItems in step.RequiredGatheredItems) foreach (var requiredGatheredItems in step.RequiredGatheredItems)
{ {
if (!gatheringData.TryGetGatheringPointId(requiredGatheredItems.ItemId, if (!gatheringData.TryGetGatheringPointId(requiredGatheredItems.ItemId,
clientState.LocalPlayer!.ClassJob.Id, out var gatheringPointId)) (EClassJob)clientState.LocalPlayer!.ClassJob.Id, out var gatheringPointId))
throw new TaskException($"No gathering point found for item {requiredGatheredItems.ItemId}"); throw new TaskException($"No gathering point found for item {requiredGatheredItems.ItemId}");
if (!AssemblyGatheringLocationLoader.GetLocations() if (!AssemblyGatheringLocationLoader.GetLocations()
@ -40,8 +41,18 @@ internal static class GatheringRequiredItems
if (gatheringRoot.AetheryteShortcut != null && clientState.TerritoryType != gatheringRoot.TerritoryId) if (gatheringRoot.AetheryteShortcut != null && clientState.TerritoryType != gatheringRoot.TerritoryId)
{ {
ushort expectedTerritoryId = gatheringRoot.TerritoryId;
if (gatheringRoot.AethernetShortcut != null)
expectedTerritoryId = aetheryteData.TerritoryIds[gatheringRoot.AethernetShortcut.From];
yield return serviceProvider.GetRequiredService<AetheryteShortcut.UseAetheryteShortcut>() yield return serviceProvider.GetRequiredService<AetheryteShortcut.UseAetheryteShortcut>()
.With(null, gatheringRoot.AetheryteShortcut.Value, gatheringRoot.TerritoryId); .With(null, gatheringRoot.AetheryteShortcut.Value, expectedTerritoryId);
}
if (gatheringRoot.AethernetShortcut != null)
{
yield return serviceProvider.GetRequiredService<AethernetShortcut.UseAethernetShortcut>()
.With(gatheringRoot.AethernetShortcut.From, gatheringRoot.AethernetShortcut.To);
} }
yield return new WaitConditionTask(() => clientState.TerritoryType == gatheringRoot.TerritoryId, yield return new WaitConditionTask(() => clientState.TerritoryType == gatheringRoot.TerritoryId,

View File

@ -1,6 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using LLib.GameData;
using Lumina.Excel.GeneratedSheets; using Lumina.Excel.GeneratedSheets;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
@ -58,11 +59,11 @@ internal sealed class GatheringData
.ToDictionary(x => x.ItemId, x => x.NpcId); .ToDictionary(x => x.ItemId, x => x.NpcId);
} }
public bool TryGetGatheringPointId(uint itemId, uint classJobId, out ushort gatheringPointId) public bool TryGetGatheringPointId(uint itemId, EClassJob classJobId, out ushort gatheringPointId)
{ {
if (classJobId == 16) if (classJobId == EClassJob.Miner)
return _minerGatheringPoints.TryGetValue(itemId, out gatheringPointId); return _minerGatheringPoints.TryGetValue(itemId, out gatheringPointId);
else if (classJobId == 17) else if (classJobId == EClassJob.Botanist)
return _botanistGatheringPoints.TryGetValue(itemId, out gatheringPointId); return _botanistGatheringPoints.TryGetValue(itemId, out gatheringPointId);
else else
{ {

View File

@ -0,0 +1,28 @@
using System.Runtime.InteropServices;
namespace Questionable.GameStructs;
[StructLayout(LayoutKind.Explicit, Size = 0x500)]
internal struct AgentSatisfactionSupply2
{
/// <summary>
/// at 4/5 hearts
/// 3 deliveries: 540 / 1080
/// 4 deliveries: 720 / 1080
/// 5 deliveries: 900 / 1080
/// 5 hearts: 0 / 0
/// </summary>
[FieldOffset(0x70)] public ushort CurrentSatisfaction;
[FieldOffset(0x72)] public ushort MaxSatisfaction;
public int TurnInsToNextRank
{
get
{
if (MaxSatisfaction == 0)
return 6;
return 6 * (MaxSatisfaction - CurrentSatisfaction) / MaxSatisfaction;
}
}
}

View File

@ -1,6 +1,6 @@
<Project Sdk="Dalamud.NET.Sdk/10.0.0"> <Project Sdk="Dalamud.NET.Sdk/10.0.0">
<PropertyGroup> <PropertyGroup>
<Version>2.0</Version> <Version>2.1</Version>
<OutputPath>dist</OutputPath> <OutputPath>dist</OutputPath>
<PathMap Condition="$(SolutionDir) != ''">$(SolutionDir)=X:\</PathMap> <PathMap Condition="$(SolutionDir) != ''">$(SolutionDir)=X:\</PathMap>
<Platforms>x64</Platforms> <Platforms>x64</Platforms>

View File

@ -2,6 +2,7 @@
using System.Linq; using System.Linq;
using Questionable.Data; using Questionable.Data;
using Questionable.Model; using Questionable.Model;
using Questionable.Model.Common;
using Questionable.Model.Questing; using Questionable.Model.Questing;
namespace Questionable.Validation.Validators; namespace Questionable.Validation.Validators;