Add gathering for weekly custom deliveries (with paths for Zhloe, M'naago, Kurenai...
authorLiza Carvelli <liza@carvel.li>
Mon, 5 Aug 2024 05:36:52 +0000 (07:36 +0200)
committerLiza Carvelli <liza@carvel.li>
Mon, 5 Aug 2024 05:37:54 +0000 (07:37 +0200)
56 files changed:
GatheringPathRenderer/RendererPlugin.cs
GatheringPathRenderer/Windows/EditorWindow.cs
GatheringPaths/3.x - Heavensward/.gitkeep [deleted file]
GatheringPaths/3.x - Heavensward/Coerthas Western Highlands/300_Twinpools_BTN.json [new file with mode: 0644]
GatheringPaths/3.x - Heavensward/Coerthas Western Highlands/351_Red Rim_MIN.json [new file with mode: 0644]
GatheringPaths/3.x - Heavensward/Coerthas Western Highlands/551_The Bed of Bones_MIN.json [new file with mode: 0644]
GatheringPaths/3.x - Heavensward/Coerthas Western Highlands/552_Gorgagne Holding_BTN.json [new file with mode: 0644]
GatheringPaths/3.x - Heavensward/The Churning Mists/355_Landlord Colony_MIN.json [new file with mode: 0644]
GatheringPaths/3.x - Heavensward/The Churning Mists/359_Four Arms_BTN.json [new file with mode: 0644]
GatheringPaths/3.x - Heavensward/The Churning Mists/553_Landlord Colony_MIN.json [new file with mode: 0644]
GatheringPaths/3.x - Heavensward/The Churning Mists/554_Ohl Tahn_BTN.json [new file with mode: 0644]
GatheringPaths/3.x - Heavensward/The Dravanian Forelands/352_Avalonia Fallen_MIN.json [new file with mode: 0644]
GatheringPaths/3.x - Heavensward/The Dravanian Forelands/358_Avalonia Fallen_BTN.json [new file with mode: 0644]
GatheringPaths/3.x - Heavensward/The Dravanian Hinterlands/353_The Makers' Quarter_MIN.json [new file with mode: 0644]
GatheringPaths/3.x - Heavensward/The Dravanian Hinterlands/361_The Answering Quarter_BTN.json [new file with mode: 0644]
GatheringPaths/3.x - Heavensward/The Sea of Clouds/354_Voor Sian Siran_MIN.json [new file with mode: 0644]
GatheringPaths/3.x - Heavensward/The Sea of Clouds/360_The Blue Window_BTN.json [new file with mode: 0644]
GatheringPaths/4.x - Stormblood/The Azim Steppe/495_Onsal Hakair_MIN.json [new file with mode: 0644]
GatheringPaths/4.x - Stormblood/The Azim Steppe/519_Nhaama's Retreat_BTN.json [new file with mode: 0644]
GatheringPaths/4.x - Stormblood/The Azim Steppe/813_Onsal Hakair_BTN.json [new file with mode: 0644]
GatheringPaths/4.x - Stormblood/The Fringes/485_East End_MIN.json [new file with mode: 0644]
GatheringPaths/4.x - Stormblood/The Fringes/486_The Striped Hills_MIN.json [new file with mode: 0644]
GatheringPaths/4.x - Stormblood/The Fringes/505_East End_BTN.json [new file with mode: 0644]
GatheringPaths/4.x - Stormblood/The Fringes/509_Dimwold_BTN.json [new file with mode: 0644]
GatheringPaths/4.x - Stormblood/The Fringes/513_Dimwold_BTN.json [new file with mode: 0644]
GatheringPaths/4.x - Stormblood/The Lochs/493_The High Bank_MIN.json [new file with mode: 0644]
GatheringPaths/4.x - Stormblood/The Lochs/514_Abalathia's Skull_BTN.json [new file with mode: 0644]
GatheringPaths/4.x - Stormblood/The Peaks/489_Rustrock_MIN.json [new file with mode: 0644]
GatheringPaths/4.x - Stormblood/The Peaks/512_The Last Forest_BTN.json [new file with mode: 0644]
GatheringPaths/4.x - Stormblood/The Peaks/531_Sleeping Stones_MIN.json [new file with mode: 0644]
GatheringPaths/4.x - Stormblood/The Peaks/532_The Last Forest_BTN.json [new file with mode: 0644]
GatheringPaths/4.x - Stormblood/The Ruby Sea/487_Hells' Lid_MIN.json
GatheringPaths/4.x - Stormblood/The Ruby Sea/533_The Turquoise Trench_MIN.json [new file with mode: 0644]
GatheringPaths/4.x - Stormblood/The Ruby Sea/534_The Isle of Bekko_BTN.json [new file with mode: 0644]
GatheringPaths/4.x - Stormblood/Yanxia/488_The Gensui Chain_MIN.json [new file with mode: 0644]
GatheringPaths/4.x - Stormblood/Yanxia/491_Unseen Spirits Laughing_MIN.json [new file with mode: 0644]
GatheringPaths/4.x - Stormblood/Yanxia/508_The Heron's Flight_BTN.json [new file with mode: 0644]
GatheringPaths/5.x - Shadowbringers/.gitkeep [deleted file]
GatheringPaths/5.x - Shadowbringers/Kholusia/649_Stonegazer_BTN.json [new file with mode: 0644]
GatheringPaths/5.x - Shadowbringers/Kholusia/650_Shadow Fault_MIN.json [new file with mode: 0644]
GatheringPaths/gatheringlocation-v1.json
LLib
QuestPathGenerator/GatheringSourceGenerator.cs
Questionable.Model/Common/AethernetShortcut.cs [new file with mode: 0644]
Questionable.Model/Gathering/GatheringRoot.cs
Questionable.Model/Questing/AethernetShortcut.cs [deleted file]
Questionable/Controller/ContextMenuController.cs
Questionable/Controller/QuestController.cs
Questionable/Controller/Steps/Gathering/DoGatherCollectable.cs
Questionable/Controller/Steps/Gathering/MoveToLandingLocation.cs
Questionable/Controller/Steps/Shared/AethernetShortcut.cs
Questionable/Controller/Steps/Shared/GatheringRequiredItems.cs
Questionable/Data/GatheringData.cs
Questionable/GameStructs/AgentSatisfactionSupply2.cs [new file with mode: 0644]
Questionable/Questionable.csproj
Questionable/Validation/Validators/AethernetShortcutValidator.cs

index f8d63632faeb0cc5c4b58e6fae9ebbfbdeffda87..55dee9847cfc0ef11a2654ba8f998c8ca0e1b350 100644 (file)
@@ -181,12 +181,14 @@ public sealed class RendererPlugin : IDalamudPlugin
                     group.Nodes.SelectMany(node => node.Locations
                         .SelectMany(x =>
                         {
+                            bool isUnsaved = false;
                             bool isCone = false;
                             int minimumAngle = 0;
                             int maximumAngle = 0;
                             if (_editorWindow.TryGetOverride(x.InternalId, out LocationOverride? locationOverride) &&
                                 locationOverride != null)
                             {
+                                isUnsaved = locationOverride.NeedsSave();
                                 if (locationOverride.IsCone())
                                 {
                                     isCone = true;
@@ -232,6 +234,7 @@ public sealed class RendererPlugin : IDalamudPlugin
                                     Enabled = true,
                                     overlayText =
                                         $"{location.Root.Groups.IndexOf(group)} // {node.DataId} / {node.Locations.IndexOf(x)}",
+                                    overlayBGColor = isUnsaved ? 0xFF2020FF : 0,
                                 },
                                 new Element(ElementType.CircleAtFixedCoordinates)
                                 {
index ace028624739e83459f94074cd275f2ccde3d07c..dd5fd09d692c59708eed153f3131bdce2126ab9c 100644 (file)
@@ -56,17 +56,19 @@ internal sealed class EditorWindow : Window
         var gatheringLocations = _plugin.GetLocationsInTerritory(_clientState.TerritoryType);
         var location = gatheringLocations.SelectMany(context =>
                 context.Root.Groups.SelectMany(group =>
-                    group.Nodes
-                        .SelectMany(node => node.Locations
-                            .Where(location =>
-                            {
-                                if (_target != null)
-                                    return Vector3.Distance(location.Position, _target.Position) < 0.1f;
-                                else
-                                    return Vector3.Distance(location.Position, _clientState.LocalPlayer!.Position) < 3f;
-                            })
-                            .Select(location => new { Context = context, Node = node, Location = location }))))
-            .FirstOrDefault();
+                    group.Nodes.SelectMany(node => node.Locations
+                        .Select(location =>
+                        {
+                            float distance;
+                            if (_target != null)
+                                distance = Vector3.Distance(location.Position, _target.Position);
+                            else
+                                distance = Vector3.Distance(location.Position, _clientState.LocalPlayer!.Position);
+
+                            return new { Context = context, Node = node, Location = location, Distance = distance };
+                        })
+                        .Where(location => location.Distance < (_target == null ? 3f : 0.1f)))))
+            .MinBy(x => x.Distance);
         if (_target != null && _target.ObjectKind != ObjectKind.GatheringPoint)
         {
             _target = null;
@@ -80,10 +82,16 @@ internal sealed class EditorWindow : Window
             return;
         }
 
-        _target ??= _objectTable.FirstOrDefault(
-            x => x.ObjectKind == ObjectKind.GatheringPoint &&
-                 x.DataId == location.Node.DataId &&
-                 Vector3.Distance(location.Location.Position, _clientState.LocalPlayer!.Position) < 3f);
+        _target ??= _objectTable.Where(x => x.ObjectKind == ObjectKind.GatheringPoint && x.DataId == location.Node.DataId)
+            .Select(x => new
+            {
+                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);
     }
 
@@ -103,7 +111,8 @@ internal sealed class EditorWindow : Window
             ImGui.Indent();
             ImGui.Text(context.File.Name);
             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}"));
 
             if (!_changes.TryGetValue(location.InternalId, out LocationOverride? locationOverride))
@@ -128,7 +137,7 @@ internal sealed class EditorWindow : Window
                 _plugin.Redraw();
             }
 
-            bool unsaved = locationOverride is { MinimumAngle: not null, MaximumAngle: not null };
+            bool unsaved = locationOverride.NeedsSave();
             ImGui.BeginDisabled(!unsaved);
             if (unsaved)
                 ImGui.PushStyleColor(ImGuiCol.Button, ImGuiColors.DalamudRed);
@@ -138,6 +147,7 @@ internal sealed class EditorWindow : Window
                 location.MaximumAngle = locationOverride.MaximumAngle;
                 _plugin.Save(context.File, context.Root);
             }
+
             if (unsaved)
                 ImGui.PopStyleColor();
 
@@ -223,4 +233,9 @@ internal sealed class LocationOverride
     {
         return MinimumAngle != null && MaximumAngle != null && MinimumAngle != MaximumAngle;
     }
+
+    public bool NeedsSave()
+    {
+        return MinimumAngle != null && MaximumAngle != null;
+    }
 }
diff --git a/GatheringPaths/3.x - Heavensward/.gitkeep b/GatheringPaths/3.x - Heavensward/.gitkeep
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/GatheringPaths/3.x - Heavensward/Coerthas Western Highlands/300_Twinpools_BTN.json b/GatheringPaths/3.x - Heavensward/Coerthas Western Highlands/300_Twinpools_BTN.json
new file mode 100644 (file)
index 0000000..2e4c56c
--- /dev/null
@@ -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
+              }
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/3.x - Heavensward/Coerthas Western Highlands/351_Red Rim_MIN.json b/GatheringPaths/3.x - Heavensward/Coerthas Western Highlands/351_Red Rim_MIN.json
new file mode 100644 (file)
index 0000000..cb1d96a
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/3.x - Heavensward/Coerthas Western Highlands/551_The Bed of Bones_MIN.json b/GatheringPaths/3.x - Heavensward/Coerthas Western Highlands/551_The Bed of Bones_MIN.json
new file mode 100644 (file)
index 0000000..2b7fbfb
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/3.x - Heavensward/Coerthas Western Highlands/552_Gorgagne Holding_BTN.json b/GatheringPaths/3.x - Heavensward/Coerthas Western Highlands/552_Gorgagne Holding_BTN.json
new file mode 100644 (file)
index 0000000..ed1967b
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/3.x - Heavensward/The Churning Mists/355_Landlord Colony_MIN.json b/GatheringPaths/3.x - Heavensward/The Churning Mists/355_Landlord Colony_MIN.json
new file mode 100644 (file)
index 0000000..56f820a
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/3.x - Heavensward/The Churning Mists/359_Four Arms_BTN.json b/GatheringPaths/3.x - Heavensward/The Churning Mists/359_Four Arms_BTN.json
new file mode 100644 (file)
index 0000000..c4a5d4b
--- /dev/null
@@ -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
+              }
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/3.x - Heavensward/The Churning Mists/553_Landlord Colony_MIN.json b/GatheringPaths/3.x - Heavensward/The Churning Mists/553_Landlord Colony_MIN.json
new file mode 100644 (file)
index 0000000..e6743d6
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/3.x - Heavensward/The Churning Mists/554_Ohl Tahn_BTN.json b/GatheringPaths/3.x - Heavensward/The Churning Mists/554_Ohl Tahn_BTN.json
new file mode 100644 (file)
index 0000000..3792592
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/3.x - Heavensward/The Dravanian Forelands/352_Avalonia Fallen_MIN.json b/GatheringPaths/3.x - Heavensward/The Dravanian Forelands/352_Avalonia Fallen_MIN.json
new file mode 100644 (file)
index 0000000..0b1e53c
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/3.x - Heavensward/The Dravanian Forelands/358_Avalonia Fallen_BTN.json b/GatheringPaths/3.x - Heavensward/The Dravanian Forelands/358_Avalonia Fallen_BTN.json
new file mode 100644 (file)
index 0000000..c672d2e
--- /dev/null
@@ -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
+              }
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/3.x - Heavensward/The Dravanian Hinterlands/353_The Makers' Quarter_MIN.json b/GatheringPaths/3.x - Heavensward/The Dravanian Hinterlands/353_The Makers' Quarter_MIN.json
new file mode 100644 (file)
index 0000000..3a1d347
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/3.x - Heavensward/The Dravanian Hinterlands/361_The Answering Quarter_BTN.json b/GatheringPaths/3.x - Heavensward/The Dravanian Hinterlands/361_The Answering Quarter_BTN.json
new file mode 100644 (file)
index 0000000..857dd70
--- /dev/null
@@ -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
+              }
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/3.x - Heavensward/The Sea of Clouds/354_Voor Sian Siran_MIN.json b/GatheringPaths/3.x - Heavensward/The Sea of Clouds/354_Voor Sian Siran_MIN.json
new file mode 100644 (file)
index 0000000..e8040da
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/3.x - Heavensward/The Sea of Clouds/360_The Blue Window_BTN.json b/GatheringPaths/3.x - Heavensward/The Sea of Clouds/360_The Blue Window_BTN.json
new file mode 100644 (file)
index 0000000..b15a042
--- /dev/null
@@ -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
+              }
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/4.x - Stormblood/The Azim Steppe/495_Onsal Hakair_MIN.json b/GatheringPaths/4.x - Stormblood/The Azim Steppe/495_Onsal Hakair_MIN.json
new file mode 100644 (file)
index 0000000..3c8c428
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/4.x - Stormblood/The Azim Steppe/519_Nhaama's Retreat_BTN.json b/GatheringPaths/4.x - Stormblood/The Azim Steppe/519_Nhaama's Retreat_BTN.json
new file mode 100644 (file)
index 0000000..bbefc52
--- /dev/null
@@ -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
+              }
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/4.x - Stormblood/The Azim Steppe/813_Onsal Hakair_BTN.json b/GatheringPaths/4.x - Stormblood/The Azim Steppe/813_Onsal Hakair_BTN.json
new file mode 100644 (file)
index 0000000..2bcf990
--- /dev/null
@@ -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
+              }
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/4.x - Stormblood/The Fringes/485_East End_MIN.json b/GatheringPaths/4.x - Stormblood/The Fringes/485_East End_MIN.json
new file mode 100644 (file)
index 0000000..27eb04f
--- /dev/null
@@ -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
+              }
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/4.x - Stormblood/The Fringes/486_The Striped Hills_MIN.json b/GatheringPaths/4.x - Stormblood/The Fringes/486_The Striped Hills_MIN.json
new file mode 100644 (file)
index 0000000..eba926f
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/4.x - Stormblood/The Fringes/505_East End_BTN.json b/GatheringPaths/4.x - Stormblood/The Fringes/505_East End_BTN.json
new file mode 100644 (file)
index 0000000..a9d9ff5
--- /dev/null
@@ -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
+              }
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/4.x - Stormblood/The Fringes/509_Dimwold_BTN.json b/GatheringPaths/4.x - Stormblood/The Fringes/509_Dimwold_BTN.json
new file mode 100644 (file)
index 0000000..bc74413
--- /dev/null
@@ -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
+              }
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/4.x - Stormblood/The Fringes/513_Dimwold_BTN.json b/GatheringPaths/4.x - Stormblood/The Fringes/513_Dimwold_BTN.json
new file mode 100644 (file)
index 0000000..9386a44
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/4.x - Stormblood/The Lochs/493_The High Bank_MIN.json b/GatheringPaths/4.x - Stormblood/The Lochs/493_The High Bank_MIN.json
new file mode 100644 (file)
index 0000000..4d75f62
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/4.x - Stormblood/The Lochs/514_Abalathia's Skull_BTN.json b/GatheringPaths/4.x - Stormblood/The Lochs/514_Abalathia's Skull_BTN.json
new file mode 100644 (file)
index 0000000..4629943
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/4.x - Stormblood/The Peaks/489_Rustrock_MIN.json b/GatheringPaths/4.x - Stormblood/The Peaks/489_Rustrock_MIN.json
new file mode 100644 (file)
index 0000000..c2172a4
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/4.x - Stormblood/The Peaks/512_The Last Forest_BTN.json b/GatheringPaths/4.x - Stormblood/The Peaks/512_The Last Forest_BTN.json
new file mode 100644 (file)
index 0000000..95642b7
--- /dev/null
@@ -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
+              }
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/4.x - Stormblood/The Peaks/531_Sleeping Stones_MIN.json b/GatheringPaths/4.x - Stormblood/The Peaks/531_Sleeping Stones_MIN.json
new file mode 100644 (file)
index 0000000..10ec916
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/4.x - Stormblood/The Peaks/532_The Last Forest_BTN.json b/GatheringPaths/4.x - Stormblood/The Peaks/532_The Last Forest_BTN.json
new file mode 100644 (file)
index 0000000..35f11b1
--- /dev/null
@@ -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
+              }
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
index 47a321d2c1f2f51010ea775f236efd2f47494ccb..9649c3b79a1cb9ca06b73f44cc9972b44672d9bf 100644 (file)
@@ -2,7 +2,11 @@
   "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
   "Author": "liza",
   "TerritoryId": 613,
-  "AetheryteShortcut": "Ruby Sea - Onokoro",
+  "AetheryteShortcut": "Kugane",
+  "AethernetShortcut": [
+    "[Kugane] Aetheryte Plaza",
+    "[Kugane] The Ruby Price"
+  ],
   "Groups": [
     {
       "Nodes": [
           ]
         }
       ]
+    },
+    {
+      "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
+            }
+          ]
+        }
+      ]
     }
   ]
 }
diff --git a/GatheringPaths/4.x - Stormblood/The Ruby Sea/533_The Turquoise Trench_MIN.json b/GatheringPaths/4.x - Stormblood/The Ruby Sea/533_The Turquoise Trench_MIN.json
new file mode 100644 (file)
index 0000000..7134c24
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/4.x - Stormblood/The Ruby Sea/534_The Isle of Bekko_BTN.json b/GatheringPaths/4.x - Stormblood/The Ruby Sea/534_The Isle of Bekko_BTN.json
new file mode 100644 (file)
index 0000000..9844919
--- /dev/null
@@ -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
+              }
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/4.x - Stormblood/Yanxia/488_The Gensui Chain_MIN.json b/GatheringPaths/4.x - Stormblood/Yanxia/488_The Gensui Chain_MIN.json
new file mode 100644 (file)
index 0000000..6e63e7c
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/4.x - Stormblood/Yanxia/491_Unseen Spirits Laughing_MIN.json b/GatheringPaths/4.x - Stormblood/Yanxia/491_Unseen Spirits Laughing_MIN.json
new file mode 100644 (file)
index 0000000..a832d56
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/4.x - Stormblood/Yanxia/508_The Heron's Flight_BTN.json b/GatheringPaths/4.x - Stormblood/Yanxia/508_The Heron's Flight_BTN.json
new file mode 100644 (file)
index 0000000..6c13feb
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/5.x - Shadowbringers/.gitkeep b/GatheringPaths/5.x - Shadowbringers/.gitkeep
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/GatheringPaths/5.x - Shadowbringers/Kholusia/649_Stonegazer_BTN.json b/GatheringPaths/5.x - Shadowbringers/Kholusia/649_Stonegazer_BTN.json
new file mode 100644 (file)
index 0000000..677ec37
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/GatheringPaths/5.x - Shadowbringers/Kholusia/650_Shadow Fault_MIN.json b/GatheringPaths/5.x - Shadowbringers/Kholusia/650_Shadow Fault_MIN.json
new file mode 100644 (file)
index 0000000..83fc609
--- /dev/null
@@ -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
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
index 5c71b8760c8b026aa62582090e9e19c380aae70f..baac742c5dfb5b988960b16196d1e586942e8e7c 100644 (file)
     "AetheryteShortcut": {
       "$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": {
       "type": "array",
       "items": {
diff --git a/LLib b/LLib
index 8d947be6784804a7cab120d596dd54e88e548efc..9db9f95b8cd3f36262b5b4b14f12b7331d3c7279 160000 (submodule)
--- a/LLib
+++ b/LLib
@@ -1 +1 @@
-Subproject commit 8d947be6784804a7cab120d596dd54e88e548efc
+Subproject commit 9db9f95b8cd3f36262b5b4b14f12b7331d3c7279
index 4995c3e4bd6995e0ca3dbeea723635eb50bbc7a0..b2177b25f390515e7a5dbcc59fd8f466d084002a 100644 (file)
@@ -153,6 +153,7 @@ public class GatheringSourceGenerator : ISourceGenerator
                                 Assignment(nameof(GatheringRoot.TerritoryId), root.TerritoryId, default)
                                     .AsSyntaxNodeOrToken(),
                                 Assignment(nameof(GatheringRoot.AetheryteShortcut), root.AetheryteShortcut, null),
+                                Assignment(nameof(GatheringRoot.AethernetShortcut), root.AethernetShortcut, null),
                                 AssignmentList(nameof(GatheringRoot.Groups), root.Groups).AsSyntaxNodeOrToken()))));
         }
         catch (Exception e)
diff --git a/Questionable.Model/Common/AethernetShortcut.cs b/Questionable.Model/Common/AethernetShortcut.cs
new file mode 100644 (file)
index 0000000..f5aaab5
--- /dev/null
@@ -0,0 +1,11 @@
+using System.Text.Json.Serialization;
+using Questionable.Model.Questing.Converter;
+
+namespace Questionable.Model.Common;
+
+[JsonConverter(typeof(AethernetShortcutConverter))]
+public sealed class AethernetShortcut
+{
+    public EAetheryteLocation From { get; set; }
+    public EAetheryteLocation To { get; set; }
+}
index 5670482ec48f10f20bbef492f77064f8b2f69bdf..9011f5625c887db4c8ffe653352b37a09581ea51 100644 (file)
@@ -2,6 +2,7 @@
 using System.Text.Json.Serialization;
 using Questionable.Model.Common;
 using Questionable.Model.Common.Converter;
+using Questionable.Model.Questing.Converter;
 
 namespace Questionable.Model.Gathering;
 
@@ -14,5 +15,6 @@ public sealed class GatheringRoot
     [JsonConverter(typeof(AetheryteConverter))]
     public EAetheryteLocation? AetheryteShortcut { get; set; }
 
+    public AethernetShortcut? AethernetShortcut { get; set; }
     public List<GatheringNodeGroup> Groups { get; set; } = [];
 }
diff --git a/Questionable.Model/Questing/AethernetShortcut.cs b/Questionable.Model/Questing/AethernetShortcut.cs
deleted file mode 100644 (file)
index 3d046c4..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-using System.Text.Json.Serialization;
-using Questionable.Model.Common;
-using Questionable.Model.Questing.Converter;
-
-namespace Questionable.Model.Questing;
-
-[JsonConverter(typeof(AethernetShortcutConverter))]
-public sealed class AethernetShortcut
-{
-    public EAetheryteLocation From { get; set; }
-    public EAetheryteLocation To { get; set; }
-}
index 13c5e03f45385639bc00b311dab39467c765431f..e4f7e3296cf4358691efd31fafa4e2618f331fe0 100644 (file)
@@ -4,8 +4,11 @@ using Dalamud.Game.Gui.ContextMenu;
 using Dalamud.Game.Text;
 using Dalamud.Plugin.Services;
 using FFXIVClientStructs.FFXIV.Client.Game;
+using FFXIVClientStructs.FFXIV.Client.UI.Agent;
+using LLib.GameData;
 using Microsoft.Extensions.Logging;
 using Questionable.Data;
+using Questionable.GameStructs;
 using Questionable.Model;
 using Questionable.Model.Questing;
 
@@ -59,7 +62,7 @@ internal sealed class ContextMenuController : IDisposable
         if (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.");
             return;
@@ -72,12 +75,23 @@ internal sealed class ContextMenuController : IDisposable
             if (collectability == 0)
                 return;
 
+            unsafe
+            {
+                var agentSatisfactionSupply = AgentSatisfactionSupply.Instance();
+                if (agentSatisfactionSupply->IsAgentActive())
+                {
+                    quantityToGather = Math.Min(agentSatisfactionSupply->RemainingAllowances,
+                        ((AgentSatisfactionSupply2*)agentSatisfactionSupply)->TurnInsToNextRank);
+                }
+            }
+
             args.AddMenuItem(new MenuItem
             {
                 Prefix = SeIconChar.Hyadelyn,
                 PrefixColor = 52,
                 Name = "Gather with Questionable",
                 OnClicked = _ => StartGathering(npcId, itemId, quantityToGather, collectability),
+                IsEnabled = quantityToGather > 0,
             });
         }
     }
@@ -97,7 +111,7 @@ internal sealed class ContextMenuController : IDisposable
                     Collectability = collectability
                 }
             ];
-            _questController.SetNextQuest(quest);
+            _questController.SetGatheringQuest(quest);
             _questController.ExecuteNextStep(QuestController.EAutomationType.CurrentQuestOnly);
         }
         else
index c953b851e2ca27c27c6c830dd16a75ea8709e9d1..cde68ae2173aef3af300b5208967354677690c34 100644 (file)
@@ -33,6 +33,7 @@ internal sealed class QuestController : MiniTaskController<QuestController>
     private QuestProgress? _startedQuest;
     private QuestProgress? _nextQuest;
     private QuestProgress? _simulatedQuest;
+    private QuestProgress? _gatheringQuest;
     private EAutomationType _automationType;
 
     /// <summary>
@@ -79,6 +80,8 @@ internal sealed class QuestController : MiniTaskController<QuestController>
                 return (_simulatedQuest, ECurrentQuestType.Simulated);
             else if (_nextQuest != null && _gameFunctions.IsReadyToAcceptQuest(_nextQuest.Quest.Id))
                 return (_nextQuest, ECurrentQuestType.Next);
+            else if (_gatheringQuest != null)
+                return (_gatheringQuest, ECurrentQuestType.Gathering);
             else if (_startedQuest != null)
                 return (_startedQuest, ECurrentQuestType.Normal);
             else
@@ -91,6 +94,7 @@ internal sealed class QuestController : MiniTaskController<QuestController>
     public QuestProgress? StartedQuest => _startedQuest;
     public QuestProgress? SimulatedQuest => _simulatedQuest;
     public QuestProgress? NextQuest => _nextQuest;
+    public QuestProgress? GatheringQuest => _gatheringQuest;
 
     public string? DebugState { get; private set; }
 
@@ -102,6 +106,7 @@ internal sealed class QuestController : MiniTaskController<QuestController>
 
             _startedQuest = null;
             _nextQuest = null;
+            _gatheringQuest = null;
             _simulatedQuest = null;
             _safeAnimationEnd = DateTime.MinValue;
 
@@ -212,6 +217,17 @@ internal sealed class QuestController : MiniTaskController<QuestController>
                     _automationType == EAutomationType.Automatic)
                     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
             {
                 (ElementId? currentQuestId, currentSequence) = _gameFunctions.GetCurrentQuest();
@@ -404,6 +420,7 @@ internal sealed class QuestController : MiniTaskController<QuestController>
             _logger.LogInformation("Stopping automatic questing");
             _automationType = EAutomationType.Manual;
             _nextQuest = null;
+            _gatheringQuest = null;
         }
     }
 
@@ -427,6 +444,15 @@ internal sealed class QuestController : MiniTaskController<QuestController>
             _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()
     {
         if (_gameFunctions.IsOccupied())
@@ -460,10 +486,11 @@ internal sealed class QuestController : MiniTaskController<QuestController>
             if (CurrentQuestDetails?.Progress.Quest.Id is SatisfactionSupplyNpcId &&
                 CurrentQuestDetails?.Progress.Sequence == 0 &&
                 CurrentQuestDetails?.Progress.Step == 255 &&
-                CurrentQuestDetails?.Type == ECurrentQuestType.Next)
+                CurrentQuestDetails?.Type == ECurrentQuestType.Gathering)
             {
                 _logger.LogInformation("Completed delivery quest");
-                SetNextQuest(null);
+                SetGatheringQuest(null);
+                Stop("Gathering quest complete");
             }
             else
             {
@@ -650,6 +677,7 @@ internal sealed class QuestController : MiniTaskController<QuestController>
     {
         Normal,
         Next,
+        Gathering,
         Simulated,
     }
 
index eb41094c331f9586db2d0aebacfa6f86833069ae..2590f7cfaa7ba9f23c16f6b72e7a935a131b031b 100644 (file)
@@ -2,6 +2,7 @@
 using Dalamud.Game.Text;
 using Dalamud.Plugin.Services;
 using FFXIVClientStructs.FFXIV.Component.GUI;
+using LLib.GameData;
 using LLib.GameUI;
 using Microsoft.Extensions.Logging;
 using Questionable.Model.Gathering;
@@ -138,7 +139,7 @@ internal sealed class DoGatherCollectable(
 
     private EAction PickAction(EAction minerAction, EAction botanistAction)
     {
-        if (clientState.LocalPlayer?.ClassJob.Id == 16)
+        if ((EClassJob?)clientState.LocalPlayer?.ClassJob.Id == EClassJob.Miner)
             return minerAction;
         else
             return botanistAction;
index 5f6a2844a052eb179f5d19d3fe361a55afc6be94..46cc268c8c8a465fe40919c91f5af6085ecc9523 100644 (file)
@@ -2,14 +2,12 @@
 using System.Globalization;
 using System.Linq;
 using System.Numerics;
-using System.Security.Cryptography;
 using Dalamud.Game.ClientState.Objects.Enums;
 using Dalamud.Plugin.Services;
 using GatheringPathRenderer;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Logging;
 using Questionable.Controller.Steps.Shared;
-using Questionable.External;
 using Questionable.Model.Gathering;
 
 namespace Questionable.Controller.Steps.Gathering;
@@ -18,7 +16,6 @@ internal sealed class MoveToLandingLocation(
     IServiceProvider serviceProvider,
     GameFunctions gameFunctions,
     IObjectTable objectTable,
-    NavmeshIpc navmeshIpc,
     ILogger<MoveToLandingLocation> logger) : ITask
 {
     private ushort _territoryId;
@@ -50,25 +47,8 @@ internal sealed class MoveToLandingLocation(
             target.ToString("G", CultureInfo.InvariantCulture), degrees, range);
 
         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>()
-            .With(_territoryId, pointOnFloor ?? target, 0.25f, dataId: _gatheringNode.DataId, fly: fly,
+            .With(_territoryId, target, 0.25f, dataId: _gatheringNode.DataId, fly: fly,
                 ignoreDistanceToObject: true);
         return _moveTask.Start();
     }
index a66e7c0f5f3c15c5da5892a400729c7932272e93..d8d33cfba7c1b1b322534588493540f7fb0e4ad9 100644 (file)
@@ -45,7 +45,7 @@ internal static class AethernetShortcut
         public SkipAetheryteCondition SkipConditions { get; set; } = null!;
 
         public ITask With(EAetheryteLocation from, EAetheryteLocation to,
-            SkipAetheryteCondition? skipConditions)
+            SkipAetheryteCondition? skipConditions = null)
         {
             From = from;
             To = to;
index a2428a8d1398f09c72fd950f9379055dc987fb58..df213a33f072bd4524c0932732732a82e90d246c 100644 (file)
@@ -3,10 +3,10 @@ using System.Collections.Generic;
 using Dalamud.Game.Text;
 using Dalamud.Plugin.Services;
 using FFXIVClientStructs.FFXIV.Client.Game;
+using LLib.GameData;
 using Microsoft.Extensions.DependencyInjection;
 using Questionable.Controller.Steps.Common;
 using Questionable.Data;
-using Questionable.External;
 using Questionable.GatheringPaths;
 using Questionable.Model;
 using Questionable.Model.Gathering;
@@ -21,14 +21,15 @@ internal static class GatheringRequiredItems
         MovementController movementController,
         IClientState clientState,
         GatheringData gatheringData,
-        TerritoryData territoryData) : ITaskFactory
+        TerritoryData territoryData,
+        AetheryteData aetheryteData) : ITaskFactory
     {
         public IEnumerable<ITask> CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step)
         {
             foreach (var requiredGatheredItems in step.RequiredGatheredItems)
             {
                 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}");
 
                 if (!AssemblyGatheringLocationLoader.GetLocations()
@@ -40,8 +41,18 @@ internal static class GatheringRequiredItems
 
                 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>()
-                        .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,
index 5877a1a3bdaa6655120092888cad94a0dfe3742e..e1f6f2c5ec6d7477d096442087fb06f0ae27f250 100644 (file)
@@ -1,6 +1,7 @@
 using System.Collections.Generic;
 using System.Linq;
 using Dalamud.Plugin.Services;
+using LLib.GameData;
 using Lumina.Excel.GeneratedSheets;
 using Microsoft.Extensions.Logging;
 
@@ -58,11 +59,11 @@ internal sealed class GatheringData
             .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);
-        else if (classJobId == 17)
+        else if (classJobId == EClassJob.Botanist)
             return _botanistGatheringPoints.TryGetValue(itemId, out gatheringPointId);
         else
         {
diff --git a/Questionable/GameStructs/AgentSatisfactionSupply2.cs b/Questionable/GameStructs/AgentSatisfactionSupply2.cs
new file mode 100644 (file)
index 0000000..70573fa
--- /dev/null
@@ -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;
+        }
+    }
+}
index 1e9d92faf906befc2cd96c4def2864fb7faabc15..bc46664552c962813e1fc3836ae34045882fc5b8 100644 (file)
@@ -1,6 +1,6 @@
 <Project Sdk="Dalamud.NET.Sdk/10.0.0">
     <PropertyGroup>
-        <Version>2.0</Version>
+        <Version>2.1</Version>
         <OutputPath>dist</OutputPath>
         <PathMap Condition="$(SolutionDir) != ''">$(SolutionDir)=X:\</PathMap>
         <Platforms>x64</Platforms>
index af380f8a58fbd8310078a064435a250f15413219..037ba3f4e0ef648a932b8bcb2dfdc04ed1a5d0b4 100644 (file)
@@ -2,6 +2,7 @@
 using System.Linq;
 using Questionable.Data;
 using Questionable.Model;
+using Questionable.Model.Common;
 using Questionable.Model.Questing;
 
 namespace Questionable.Validation.Validators;