Merge branch 'gathering'
This commit is contained in:
commit
2a39d053ba
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -1,3 +1,6 @@
|
|||||||
[submodule "LLib"]
|
[submodule "LLib"]
|
||||||
path = LLib
|
path = LLib
|
||||||
url = https://git.carvel.li/liza/LLib.git
|
url = https://git.carvel.li/liza/LLib.git
|
||||||
|
[submodule "vendor/ECommons"]
|
||||||
|
path = vendor/ECommons
|
||||||
|
url = https://github.com/NightmareXIV/ECommons.git
|
||||||
|
215
GatheringPathRenderer/EditorCommands.cs
Normal file
215
GatheringPathRenderer/EditorCommands.cs
Normal file
@ -0,0 +1,215 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Numerics;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Nodes;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
using System.Text.Json.Serialization.Metadata;
|
||||||
|
using Dalamud.Game.ClientState.Objects;
|
||||||
|
using Dalamud.Game.ClientState.Objects.Enums;
|
||||||
|
using Dalamud.Game.ClientState.Objects.Types;
|
||||||
|
using Dalamud.Game.Command;
|
||||||
|
using Dalamud.Plugin.Services;
|
||||||
|
using Lumina.Excel.GeneratedSheets;
|
||||||
|
using Questionable.Model;
|
||||||
|
using Questionable.Model.Gathering;
|
||||||
|
|
||||||
|
namespace GatheringPathRenderer;
|
||||||
|
|
||||||
|
internal sealed class EditorCommands : IDisposable
|
||||||
|
{
|
||||||
|
private readonly RendererPlugin _plugin;
|
||||||
|
private readonly IDataManager _dataManager;
|
||||||
|
private readonly ICommandManager _commandManager;
|
||||||
|
private readonly ITargetManager _targetManager;
|
||||||
|
private readonly IClientState _clientState;
|
||||||
|
private readonly IChatGui _chatGui;
|
||||||
|
|
||||||
|
public EditorCommands(RendererPlugin plugin, IDataManager dataManager, ICommandManager commandManager,
|
||||||
|
ITargetManager targetManager, IClientState clientState, IChatGui chatGui)
|
||||||
|
{
|
||||||
|
_plugin = plugin;
|
||||||
|
_dataManager = dataManager;
|
||||||
|
_commandManager = commandManager;
|
||||||
|
_targetManager = targetManager;
|
||||||
|
_clientState = clientState;
|
||||||
|
_chatGui = chatGui;
|
||||||
|
|
||||||
|
_commandManager.AddHandler("/qg", new CommandInfo(ProcessCommand));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ProcessCommand(string command, string argument)
|
||||||
|
{
|
||||||
|
string[] parts = argument.Split(' ');
|
||||||
|
string subCommand = parts[0];
|
||||||
|
List<string> arguments = parts.Skip(1).ToList();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
switch (subCommand)
|
||||||
|
{
|
||||||
|
case "add":
|
||||||
|
CreateOrAddLocationToGroup(arguments);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
_chatGui.PrintError(e.ToString(), "qG");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CreateOrAddLocationToGroup(List<string> arguments)
|
||||||
|
{
|
||||||
|
var target = _targetManager.Target;
|
||||||
|
if (target == null || target.ObjectKind != ObjectKind.GatheringPoint)
|
||||||
|
throw new Exception("No valid target");
|
||||||
|
|
||||||
|
var gatheringPoint = _dataManager.GetExcelSheet<GatheringPoint>()!.GetRow(target.DataId);
|
||||||
|
if (gatheringPoint == null)
|
||||||
|
throw new Exception("Invalid gathering point");
|
||||||
|
|
||||||
|
FileInfo targetFile;
|
||||||
|
GatheringRoot root;
|
||||||
|
var locationsInTerritory = _plugin.GetLocationsInTerritory(_clientState.TerritoryType).ToList();
|
||||||
|
var location = locationsInTerritory.SingleOrDefault(x => x.Id == gatheringPoint.GatheringPointBase.Row);
|
||||||
|
if (location != null)
|
||||||
|
{
|
||||||
|
targetFile = location.File;
|
||||||
|
root = location.Root;
|
||||||
|
|
||||||
|
// if this is an existing node, ignore it
|
||||||
|
var existingNode = root.Groups.SelectMany(x => x.Nodes.Where(y => y.DataId == target.DataId))
|
||||||
|
.Any(x => x.Locations.Any(y => Vector3.Distance(y.Position, target.Position) < 0.1f));
|
||||||
|
if (existingNode)
|
||||||
|
throw new Exception("Node already exists");
|
||||||
|
|
||||||
|
if (arguments.Contains("group"))
|
||||||
|
AddToNewGroup(root, target);
|
||||||
|
else
|
||||||
|
AddToExistingGroup(root, target);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
(targetFile, root) = CreateNewFile(gatheringPoint, target);
|
||||||
|
_chatGui.Print($"Creating new file under {targetFile.FullName}", "qG");
|
||||||
|
}
|
||||||
|
|
||||||
|
_plugin.Save(targetFile, root);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddToNewGroup(GatheringRoot root, IGameObject target)
|
||||||
|
{
|
||||||
|
root.Groups.Add(new GatheringNodeGroup
|
||||||
|
{
|
||||||
|
Nodes =
|
||||||
|
[
|
||||||
|
new GatheringNode
|
||||||
|
{
|
||||||
|
DataId = target.DataId,
|
||||||
|
Locations =
|
||||||
|
[
|
||||||
|
new GatheringLocation
|
||||||
|
{
|
||||||
|
Position = target.Position,
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
_chatGui.Print("Added group.", "qG");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddToExistingGroup(GatheringRoot root, IGameObject target)
|
||||||
|
{
|
||||||
|
// find the same data id
|
||||||
|
var node = root.Groups.SelectMany(x => x.Nodes)
|
||||||
|
.SingleOrDefault(x => x.DataId == target.DataId);
|
||||||
|
if (node != null)
|
||||||
|
{
|
||||||
|
node.Locations.Add(new GatheringLocation
|
||||||
|
{
|
||||||
|
Position = target.Position,
|
||||||
|
});
|
||||||
|
_chatGui.Print($"Added location to existing node {target.DataId}.", "qG");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// find the closest group
|
||||||
|
var closestGroup = root.Groups
|
||||||
|
.Select(group => new
|
||||||
|
{
|
||||||
|
Group = group,
|
||||||
|
Distance = group.Nodes.Min(x =>
|
||||||
|
x.Locations.Min(y =>
|
||||||
|
Vector3.Distance(_clientState.LocalPlayer!.Position, y.Position)))
|
||||||
|
})
|
||||||
|
.OrderBy(x => x.Distance)
|
||||||
|
.First();
|
||||||
|
|
||||||
|
closestGroup.Group.Nodes.Add(new GatheringNode
|
||||||
|
{
|
||||||
|
DataId = target.DataId,
|
||||||
|
Locations =
|
||||||
|
[
|
||||||
|
new GatheringLocation
|
||||||
|
{
|
||||||
|
Position = target.Position,
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
_chatGui.Print($"Added new node {target.DataId}.", "qG");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public (FileInfo targetFile, GatheringRoot root) CreateNewFile(GatheringPoint gatheringPoint, IGameObject target)
|
||||||
|
{
|
||||||
|
// determine target folder
|
||||||
|
DirectoryInfo? targetFolder = _plugin.GetLocationsInTerritory(_clientState.TerritoryType).FirstOrDefault()
|
||||||
|
?.File.Directory;
|
||||||
|
if (targetFolder == null)
|
||||||
|
{
|
||||||
|
var territoryInfo = _dataManager.GetExcelSheet<TerritoryType>()!.GetRow(_clientState.TerritoryType)!;
|
||||||
|
targetFolder = _plugin.PathsDirectory
|
||||||
|
.CreateSubdirectory(ExpansionData.ExpansionFolders[(byte)territoryInfo.ExVersion.Row])
|
||||||
|
.CreateSubdirectory(territoryInfo.PlaceName.Value!.Name.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
FileInfo targetFile =
|
||||||
|
new FileInfo(
|
||||||
|
Path.Combine(targetFolder.FullName,
|
||||||
|
$"{gatheringPoint.GatheringPointBase.Row}_{gatheringPoint.PlaceName.Value!.Name}_{(_clientState.LocalPlayer!.ClassJob.Id == 16 ? "MIN" : "BTN")}.json"));
|
||||||
|
var root = new GatheringRoot
|
||||||
|
{
|
||||||
|
TerritoryId = _clientState.TerritoryType,
|
||||||
|
Groups =
|
||||||
|
[
|
||||||
|
new GatheringNodeGroup
|
||||||
|
{
|
||||||
|
Nodes =
|
||||||
|
[
|
||||||
|
new GatheringNode
|
||||||
|
{
|
||||||
|
DataId = target.DataId,
|
||||||
|
Locations =
|
||||||
|
[
|
||||||
|
new GatheringLocation
|
||||||
|
{
|
||||||
|
Position = target.Position
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
return (targetFile, root);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
_commandManager.RemoveHandler("/qg");
|
||||||
|
}
|
||||||
|
}
|
8
GatheringPathRenderer/GatheringPathRenderer.csproj
Normal file
8
GatheringPathRenderer/GatheringPathRenderer.csproj
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<Project Sdk="Dalamud.NET.Sdk/10.0.0">
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Questionable.Model\Questionable.Model.csproj" />
|
||||||
|
<ProjectReference Include="..\vendor\ECommons\ECommons\ECommons.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Import Project="..\LLib\LLib.targets"/>
|
||||||
|
</Project>
|
6
GatheringPathRenderer/GatheringPathRenderer.json
Normal file
6
GatheringPathRenderer/GatheringPathRenderer.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"Name": "GatheringPathRenderer",
|
||||||
|
"Author": "Liza Carvelli",
|
||||||
|
"Punchline": "dev only plugin: Renders gathering location.",
|
||||||
|
"Description": "dev only plugin: Renders gathering location (without ECommons polluting the entire normal project)."
|
||||||
|
}
|
290
GatheringPathRenderer/RendererPlugin.cs
Normal file
290
GatheringPathRenderer/RendererPlugin.cs
Normal file
@ -0,0 +1,290 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Nodes;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
using Dalamud.Game.ClientState.Objects;
|
||||||
|
using Dalamud.Interface.Windowing;
|
||||||
|
using Dalamud.Plugin;
|
||||||
|
using Dalamud.Plugin.Services;
|
||||||
|
using ECommons;
|
||||||
|
using ECommons.Schedulers;
|
||||||
|
using ECommons.SplatoonAPI;
|
||||||
|
using FFXIVClientStructs.FFXIV.Common.Math;
|
||||||
|
using GatheringPathRenderer.Windows;
|
||||||
|
using Questionable.Model;
|
||||||
|
using Questionable.Model.Gathering;
|
||||||
|
|
||||||
|
namespace GatheringPathRenderer;
|
||||||
|
|
||||||
|
public sealed class RendererPlugin : IDalamudPlugin
|
||||||
|
{
|
||||||
|
private const long OnTerritoryChange = -2;
|
||||||
|
|
||||||
|
private readonly WindowSystem _windowSystem = new(nameof(RendererPlugin));
|
||||||
|
private readonly List<uint> _colors = [0xFFFF2020, 0xFF20FF20, 0xFF2020FF, 0xFFFFFF20, 0xFFFF20FF, 0xFF20FFFF];
|
||||||
|
|
||||||
|
private readonly IDalamudPluginInterface _pluginInterface;
|
||||||
|
private readonly IClientState _clientState;
|
||||||
|
private readonly IPluginLog _pluginLog;
|
||||||
|
|
||||||
|
private readonly EditorCommands _editorCommands;
|
||||||
|
private readonly EditorWindow _editorWindow;
|
||||||
|
|
||||||
|
private readonly List<GatheringLocationContext> _gatheringLocations = [];
|
||||||
|
|
||||||
|
public RendererPlugin(IDalamudPluginInterface pluginInterface, IClientState clientState,
|
||||||
|
ICommandManager commandManager, IDataManager dataManager, ITargetManager targetManager, IChatGui chatGui,
|
||||||
|
IObjectTable objectTable, IPluginLog pluginLog)
|
||||||
|
{
|
||||||
|
_pluginInterface = pluginInterface;
|
||||||
|
_clientState = clientState;
|
||||||
|
_pluginLog = pluginLog;
|
||||||
|
|
||||||
|
_editorCommands = new EditorCommands(this, dataManager, commandManager, targetManager, clientState, chatGui);
|
||||||
|
_editorWindow = new EditorWindow(this, _editorCommands, dataManager, targetManager, clientState, objectTable)
|
||||||
|
{ IsOpen = true };
|
||||||
|
_windowSystem.AddWindow(_editorWindow);
|
||||||
|
|
||||||
|
_pluginInterface.GetIpcSubscriber<object>("Questionable.ReloadData")
|
||||||
|
.Subscribe(Reload);
|
||||||
|
|
||||||
|
ECommonsMain.Init(pluginInterface, this, Module.SplatoonAPI);
|
||||||
|
LoadGatheringLocationsFromDirectory();
|
||||||
|
|
||||||
|
_pluginInterface.UiBuilder.Draw += _windowSystem.Draw;
|
||||||
|
_clientState.TerritoryChanged += TerritoryChanged;
|
||||||
|
if (_clientState.IsLoggedIn)
|
||||||
|
TerritoryChanged(_clientState.TerritoryType);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal DirectoryInfo PathsDirectory
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
DirectoryInfo? solutionDirectory = _pluginInterface.AssemblyLocation.Directory?.Parent?.Parent?.Parent;
|
||||||
|
if (solutionDirectory != null)
|
||||||
|
{
|
||||||
|
DirectoryInfo pathProjectDirectory =
|
||||||
|
new DirectoryInfo(Path.Combine(solutionDirectory.FullName, "GatheringPaths"));
|
||||||
|
if (pathProjectDirectory.Exists)
|
||||||
|
return pathProjectDirectory;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Exception("Unable to resolve project path");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void Reload()
|
||||||
|
{
|
||||||
|
LoadGatheringLocationsFromDirectory();
|
||||||
|
Redraw();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LoadGatheringLocationsFromDirectory()
|
||||||
|
{
|
||||||
|
_gatheringLocations.Clear();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
foreach (var expansionFolder in ExpansionData.ExpansionFolders.Values)
|
||||||
|
LoadFromDirectory(
|
||||||
|
new DirectoryInfo(Path.Combine(PathsDirectory.FullName, expansionFolder)));
|
||||||
|
|
||||||
|
_pluginLog.Information(
|
||||||
|
$"Loaded {_gatheringLocations.Count} gathering root locations from project directory");
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
_pluginLog.Error(e, "Failed to load paths from project directory");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LoadFromDirectory(DirectoryInfo directory)
|
||||||
|
{
|
||||||
|
if (!directory.Exists)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_pluginLog.Information($"Loading locations from {directory}");
|
||||||
|
foreach (FileInfo fileInfo in directory.GetFiles("*.json"))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using FileStream stream = new FileStream(fileInfo.FullName, FileMode.Open, FileAccess.Read);
|
||||||
|
LoadLocationFromStream(fileInfo, stream);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new InvalidDataException($"Unable to load file {fileInfo.FullName}", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (DirectoryInfo childDirectory in directory.GetDirectories())
|
||||||
|
LoadFromDirectory(childDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LoadLocationFromStream(FileInfo fileInfo, Stream stream)
|
||||||
|
{
|
||||||
|
var locationNode = JsonNode.Parse(stream)!;
|
||||||
|
GatheringRoot root = locationNode.Deserialize<GatheringRoot>()!;
|
||||||
|
_gatheringLocations.Add(new GatheringLocationContext(fileInfo, ushort.Parse(fileInfo.Name.Split('_')[0]),
|
||||||
|
root));
|
||||||
|
}
|
||||||
|
|
||||||
|
internal IEnumerable<GatheringLocationContext> GetLocationsInTerritory(ushort territoryId)
|
||||||
|
=> _gatheringLocations.Where(x => x.Root.TerritoryId == territoryId);
|
||||||
|
|
||||||
|
internal void Save(FileInfo targetFile, GatheringRoot root)
|
||||||
|
{
|
||||||
|
JsonSerializerOptions options = new()
|
||||||
|
{
|
||||||
|
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingDefault,
|
||||||
|
WriteIndented = true,
|
||||||
|
};
|
||||||
|
using (var stream = File.Create(targetFile.FullName))
|
||||||
|
{
|
||||||
|
var jsonNode = (JsonObject)JsonSerializer.SerializeToNode(root, options)!;
|
||||||
|
var newNode = new JsonObject();
|
||||||
|
newNode.Add("$schema",
|
||||||
|
"https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json");
|
||||||
|
foreach (var (key, value) in jsonNode)
|
||||||
|
newNode.Add(key, value?.DeepClone());
|
||||||
|
|
||||||
|
using var writer = new Utf8JsonWriter(stream, new JsonWriterOptions
|
||||||
|
{
|
||||||
|
Indented = true
|
||||||
|
});
|
||||||
|
newNode.WriteTo(writer, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
Reload();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TerritoryChanged(ushort territoryId) => Redraw();
|
||||||
|
|
||||||
|
internal void Redraw()
|
||||||
|
{
|
||||||
|
Splatoon.RemoveDynamicElements("GatheringPathRenderer");
|
||||||
|
|
||||||
|
var elements = GetLocationsInTerritory(_clientState.TerritoryType)
|
||||||
|
.SelectMany(location =>
|
||||||
|
location.Root.Groups.SelectMany(group =>
|
||||||
|
group.Nodes.SelectMany(node => node.Locations
|
||||||
|
.SelectMany(x =>
|
||||||
|
{
|
||||||
|
bool isCone = false;
|
||||||
|
int minimumAngle = 0;
|
||||||
|
int maximumAngle = 0;
|
||||||
|
if (_editorWindow.TryGetOverride(x.InternalId, out LocationOverride? locationOverride) &&
|
||||||
|
locationOverride != null)
|
||||||
|
{
|
||||||
|
if (locationOverride.IsCone())
|
||||||
|
{
|
||||||
|
isCone = true;
|
||||||
|
minimumAngle = locationOverride.MinimumAngle.GetValueOrDefault();
|
||||||
|
maximumAngle = locationOverride.MaximumAngle.GetValueOrDefault();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isCone && x.IsCone())
|
||||||
|
{
|
||||||
|
isCone = true;
|
||||||
|
minimumAngle = x.MinimumAngle.GetValueOrDefault();
|
||||||
|
maximumAngle = x.MaximumAngle.GetValueOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
var a = GatheringMath.CalculateLandingLocation(x, 0, 0);
|
||||||
|
var b = GatheringMath.CalculateLandingLocation(x, 1, 1);
|
||||||
|
return new List<Element>
|
||||||
|
{
|
||||||
|
new Element(isCone
|
||||||
|
? ElementType.ConeAtFixedCoordinates
|
||||||
|
: ElementType.CircleAtFixedCoordinates)
|
||||||
|
{
|
||||||
|
refX = x.Position.X,
|
||||||
|
refY = x.Position.Z,
|
||||||
|
refZ = x.Position.Y,
|
||||||
|
Filled = true,
|
||||||
|
radius = x.CalculateMinimumDistance(),
|
||||||
|
Donut = x.CalculateMaximumDistance() - x.CalculateMinimumDistance(),
|
||||||
|
color = _colors[location.Root.Groups.IndexOf(group) % _colors.Count],
|
||||||
|
Enabled = true,
|
||||||
|
coneAngleMin = minimumAngle,
|
||||||
|
coneAngleMax = maximumAngle,
|
||||||
|
tether = false,
|
||||||
|
},
|
||||||
|
new Element(ElementType.CircleAtFixedCoordinates)
|
||||||
|
{
|
||||||
|
refX = x.Position.X,
|
||||||
|
refY = x.Position.Z,
|
||||||
|
refZ = x.Position.Y,
|
||||||
|
color = 0x00000000,
|
||||||
|
Enabled = true,
|
||||||
|
overlayText =
|
||||||
|
$"{location.Root.Groups.IndexOf(group)} // {node.DataId} / {node.Locations.IndexOf(x)}",
|
||||||
|
},
|
||||||
|
new Element(ElementType.CircleAtFixedCoordinates)
|
||||||
|
{
|
||||||
|
refX = a.X,
|
||||||
|
refY = a.Z,
|
||||||
|
refZ = a.Y,
|
||||||
|
color = _colors[0],
|
||||||
|
radius = 0.1f,
|
||||||
|
Enabled = true,
|
||||||
|
overlayText = "Min Angle"
|
||||||
|
},
|
||||||
|
new Element(ElementType.CircleAtFixedCoordinates)
|
||||||
|
{
|
||||||
|
refX = b.X,
|
||||||
|
refY = b.Z,
|
||||||
|
refZ = b.Y,
|
||||||
|
color = _colors[1],
|
||||||
|
radius = 0.1f,
|
||||||
|
Enabled = true,
|
||||||
|
overlayText = "Max Angle"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}))))
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
if (elements.Count == 0)
|
||||||
|
{
|
||||||
|
_pluginLog.Information("No new elements to render.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_ = new TickScheduler(delegate
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Splatoon.AddDynamicElements("GatheringPathRenderer",
|
||||||
|
elements.ToArray(),
|
||||||
|
new[] { OnTerritoryChange });
|
||||||
|
_pluginLog.Information($"Created {elements.Count} splatoon elements.");
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
_pluginLog.Error(e, "Unable to create splatoon layer");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
_clientState.TerritoryChanged -= TerritoryChanged;
|
||||||
|
_pluginInterface.UiBuilder.Draw -= _windowSystem.Draw;
|
||||||
|
|
||||||
|
Splatoon.RemoveDynamicElements("GatheringPathRenderer");
|
||||||
|
ECommonsMain.Dispose();
|
||||||
|
|
||||||
|
_pluginInterface.GetIpcSubscriber<object>("Questionable.ReloadData")
|
||||||
|
.Unsubscribe(Reload);
|
||||||
|
|
||||||
|
_editorCommands.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal sealed record GatheringLocationContext(FileInfo File, ushort Id, GatheringRoot Root);
|
||||||
|
}
|
226
GatheringPathRenderer/Windows/EditorWindow.cs
Normal file
226
GatheringPathRenderer/Windows/EditorWindow.cs
Normal file
@ -0,0 +1,226 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Numerics;
|
||||||
|
using Dalamud.Game.ClientState.Objects;
|
||||||
|
using Dalamud.Game.ClientState.Objects.Enums;
|
||||||
|
using Dalamud.Game.ClientState.Objects.Types;
|
||||||
|
using Dalamud.Interface.Colors;
|
||||||
|
using Dalamud.Interface.Windowing;
|
||||||
|
using Dalamud.Plugin.Services;
|
||||||
|
using ImGuiNET;
|
||||||
|
using Lumina.Excel.GeneratedSheets;
|
||||||
|
using Questionable.Model.Gathering;
|
||||||
|
|
||||||
|
namespace GatheringPathRenderer.Windows;
|
||||||
|
|
||||||
|
internal sealed class EditorWindow : Window
|
||||||
|
{
|
||||||
|
private readonly RendererPlugin _plugin;
|
||||||
|
private readonly EditorCommands _editorCommands;
|
||||||
|
private readonly IDataManager _dataManager;
|
||||||
|
private readonly ITargetManager _targetManager;
|
||||||
|
private readonly IClientState _clientState;
|
||||||
|
private readonly IObjectTable _objectTable;
|
||||||
|
|
||||||
|
private readonly Dictionary<Guid, LocationOverride> _changes = [];
|
||||||
|
|
||||||
|
private IGameObject? _target;
|
||||||
|
|
||||||
|
private (RendererPlugin.GatheringLocationContext Context, GatheringNode Node, GatheringLocation Location)?
|
||||||
|
_targetLocation;
|
||||||
|
|
||||||
|
public EditorWindow(RendererPlugin plugin, EditorCommands editorCommands, IDataManager dataManager,
|
||||||
|
ITargetManager targetManager, IClientState clientState, IObjectTable objectTable)
|
||||||
|
: base("Gathering Path Editor###QuestionableGatheringPathEditor")
|
||||||
|
{
|
||||||
|
_plugin = plugin;
|
||||||
|
_editorCommands = editorCommands;
|
||||||
|
_dataManager = dataManager;
|
||||||
|
_targetManager = targetManager;
|
||||||
|
_clientState = clientState;
|
||||||
|
_objectTable = objectTable;
|
||||||
|
|
||||||
|
SizeConstraints = new WindowSizeConstraints
|
||||||
|
{
|
||||||
|
MinimumSize = new Vector2(300, 300),
|
||||||
|
};
|
||||||
|
ShowCloseButton = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Update()
|
||||||
|
{
|
||||||
|
_target = _targetManager.Target;
|
||||||
|
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();
|
||||||
|
if (_target != null && _target.ObjectKind != ObjectKind.GatheringPoint)
|
||||||
|
{
|
||||||
|
_target = null;
|
||||||
|
_targetLocation = null;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (location == null)
|
||||||
|
{
|
||||||
|
_targetLocation = null;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_target ??= _objectTable.FirstOrDefault(
|
||||||
|
x => x.ObjectKind == ObjectKind.GatheringPoint &&
|
||||||
|
x.DataId == location.Node.DataId &&
|
||||||
|
Vector3.Distance(location.Location.Position, _clientState.LocalPlayer!.Position) < 3f);
|
||||||
|
_targetLocation = (location.Context, location.Node, location.Location);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool DrawConditions()
|
||||||
|
{
|
||||||
|
return _target != null || _targetLocation != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Draw()
|
||||||
|
{
|
||||||
|
if (_target != null && _targetLocation != null)
|
||||||
|
{
|
||||||
|
var context = _targetLocation.Value.Context;
|
||||||
|
var node = _targetLocation.Value.Node;
|
||||||
|
var location = _targetLocation.Value.Location;
|
||||||
|
ImGui.Text(context.File.Directory?.Name ?? string.Empty);
|
||||||
|
ImGui.Indent();
|
||||||
|
ImGui.Text(context.File.Name);
|
||||||
|
ImGui.Unindent();
|
||||||
|
ImGui.Text($"{_target.DataId} // {location.InternalId}");
|
||||||
|
ImGui.Text(string.Create(CultureInfo.InvariantCulture, $"{location.Position:G}"));
|
||||||
|
|
||||||
|
if (!_changes.TryGetValue(location.InternalId, out LocationOverride? locationOverride))
|
||||||
|
{
|
||||||
|
locationOverride = new LocationOverride();
|
||||||
|
_changes[location.InternalId] = locationOverride;
|
||||||
|
}
|
||||||
|
|
||||||
|
int minAngle = locationOverride.MinimumAngle ?? location.MinimumAngle.GetValueOrDefault();
|
||||||
|
if (ImGui.DragInt("Min Angle", ref minAngle, 5, -360, 360))
|
||||||
|
{
|
||||||
|
locationOverride.MinimumAngle = minAngle;
|
||||||
|
locationOverride.MaximumAngle ??= location.MaximumAngle.GetValueOrDefault();
|
||||||
|
_plugin.Redraw();
|
||||||
|
}
|
||||||
|
|
||||||
|
int maxAngle = locationOverride.MaximumAngle ?? location.MaximumAngle.GetValueOrDefault();
|
||||||
|
if (ImGui.DragInt("Max Angle", ref maxAngle, 5, -360, 360))
|
||||||
|
{
|
||||||
|
locationOverride.MinimumAngle ??= location.MinimumAngle.GetValueOrDefault();
|
||||||
|
locationOverride.MaximumAngle = maxAngle;
|
||||||
|
_plugin.Redraw();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool unsaved = locationOverride is { MinimumAngle: not null, MaximumAngle: not null };
|
||||||
|
ImGui.BeginDisabled(!unsaved);
|
||||||
|
if (unsaved)
|
||||||
|
ImGui.PushStyleColor(ImGuiCol.Button, ImGuiColors.DalamudRed);
|
||||||
|
if (ImGui.Button("Save"))
|
||||||
|
{
|
||||||
|
location.MinimumAngle = locationOverride.MinimumAngle;
|
||||||
|
location.MaximumAngle = locationOverride.MaximumAngle;
|
||||||
|
_plugin.Save(context.File, context.Root);
|
||||||
|
}
|
||||||
|
if (unsaved)
|
||||||
|
ImGui.PopStyleColor();
|
||||||
|
|
||||||
|
ImGui.SameLine();
|
||||||
|
if (ImGui.Button("Reset"))
|
||||||
|
{
|
||||||
|
_changes[location.InternalId] = new LocationOverride();
|
||||||
|
_plugin.Redraw();
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui.EndDisabled();
|
||||||
|
|
||||||
|
|
||||||
|
List<IGameObject> nodesInObjectTable = _objectTable
|
||||||
|
.Where(x => x.ObjectKind == ObjectKind.GatheringPoint && x.DataId == _target.DataId)
|
||||||
|
.ToList();
|
||||||
|
List<IGameObject> missingLocations = nodesInObjectTable
|
||||||
|
.Where(x => !node.Locations.Any(y => Vector3.Distance(x.Position, y.Position) < 0.1f))
|
||||||
|
.ToList();
|
||||||
|
if (missingLocations.Count > 0)
|
||||||
|
{
|
||||||
|
if (ImGui.Button("Add missing locations"))
|
||||||
|
{
|
||||||
|
foreach (var missing in missingLocations)
|
||||||
|
_editorCommands.AddToExistingGroup(context.Root, missing);
|
||||||
|
|
||||||
|
_plugin.Save(context.File, context.Root);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (_target != null)
|
||||||
|
{
|
||||||
|
var gatheringPoint = _dataManager.GetExcelSheet<GatheringPoint>()!.GetRow(_target.DataId);
|
||||||
|
if (gatheringPoint == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var locationsInTerritory = _plugin.GetLocationsInTerritory(_clientState.TerritoryType).ToList();
|
||||||
|
var location = locationsInTerritory.SingleOrDefault(x => x.Id == gatheringPoint.GatheringPointBase.Row);
|
||||||
|
if (location != null)
|
||||||
|
{
|
||||||
|
var targetFile = location.File;
|
||||||
|
var root = location.Root;
|
||||||
|
|
||||||
|
if (ImGui.Button("Add to closest group"))
|
||||||
|
{
|
||||||
|
_editorCommands.AddToExistingGroup(root, _target);
|
||||||
|
_plugin.Save(targetFile, root);
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui.BeginDisabled(root.Groups.Any(group => group.Nodes.Any(node => node.DataId == _target.DataId)));
|
||||||
|
ImGui.SameLine();
|
||||||
|
if (ImGui.Button("Add as new group"))
|
||||||
|
{
|
||||||
|
_editorCommands.AddToNewGroup(root, _target);
|
||||||
|
_plugin.Save(targetFile, root);
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui.EndDisabled();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (ImGui.Button("Create location"))
|
||||||
|
{
|
||||||
|
var (targetFile, root) = _editorCommands.CreateNewFile(gatheringPoint, _target);
|
||||||
|
_plugin.Save(targetFile, root);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool TryGetOverride(Guid internalId, out LocationOverride? locationOverride)
|
||||||
|
=> _changes.TryGetValue(internalId, out locationOverride);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal sealed class LocationOverride
|
||||||
|
{
|
||||||
|
public int? MinimumAngle { get; set; }
|
||||||
|
public int? MaximumAngle { get; set; }
|
||||||
|
public float? MinimumDistance { get; set; }
|
||||||
|
public float? MaximumDistance { get; set; }
|
||||||
|
|
||||||
|
public bool IsCone()
|
||||||
|
{
|
||||||
|
return MinimumAngle != null && MaximumAngle != null && MinimumAngle != MaximumAngle;
|
||||||
|
}
|
||||||
|
}
|
109
GatheringPathRenderer/packages.lock.json
Normal file
109
GatheringPathRenderer/packages.lock.json
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"dependencies": {
|
||||||
|
"net8.0-windows7.0": {
|
||||||
|
"DalamudPackager": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[2.1.13, )",
|
||||||
|
"resolved": "2.1.13",
|
||||||
|
"contentHash": "rMN1omGe8536f4xLMvx9NwfvpAc9YFFfeXJ1t4P4PE6Gu8WCIoFliR1sh07hM+bfODmesk/dvMbji7vNI+B/pQ=="
|
||||||
|
},
|
||||||
|
"DotNet.ReproducibleBuilds": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[1.1.1, )",
|
||||||
|
"resolved": "1.1.1",
|
||||||
|
"contentHash": "+H2t/t34h6mhEoUvHi8yGXyuZ2GjSovcGYehJrS2MDm2XgmPfZL2Sdxg+uL2lKgZ4M6tTwKHIlxOob2bgh0NRQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.SourceLink.AzureRepos.Git": "1.1.1",
|
||||||
|
"Microsoft.SourceLink.Bitbucket.Git": "1.1.1",
|
||||||
|
"Microsoft.SourceLink.GitHub": "1.1.1",
|
||||||
|
"Microsoft.SourceLink.GitLab": "1.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.SourceLink.Gitea": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[8.0.0, )",
|
||||||
|
"resolved": "8.0.0",
|
||||||
|
"contentHash": "KOBodmDnlWGIqZt2hT47Q69TIoGhIApDVLCyyj9TT5ct8ju16AbHYcB4XeknoHX562wO1pMS/1DfBIZK+V+sxg==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Build.Tasks.Git": "8.0.0",
|
||||||
|
"Microsoft.SourceLink.Common": "8.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Build.Tasks.Git": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "8.0.0",
|
||||||
|
"contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ=="
|
||||||
|
},
|
||||||
|
"Microsoft.SourceLink.AzureRepos.Git": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "1.1.1",
|
||||||
|
"contentHash": "qB5urvw9LO2bG3eVAkuL+2ughxz2rR7aYgm2iyrB8Rlk9cp2ndvGRCvehk3rNIhRuNtQaeKwctOl1KvWiklv5w==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Build.Tasks.Git": "1.1.1",
|
||||||
|
"Microsoft.SourceLink.Common": "1.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.SourceLink.Bitbucket.Git": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "1.1.1",
|
||||||
|
"contentHash": "cDzxXwlyWpLWaH0em4Idj0H3AmVo3L/6xRXKssYemx+7W52iNskj/SQ4FOmfCb8YQt39otTDNMveCZzYtMoucQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Build.Tasks.Git": "1.1.1",
|
||||||
|
"Microsoft.SourceLink.Common": "1.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.SourceLink.Common": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "8.0.0",
|
||||||
|
"contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw=="
|
||||||
|
},
|
||||||
|
"Microsoft.SourceLink.GitHub": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "1.1.1",
|
||||||
|
"contentHash": "IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Build.Tasks.Git": "1.1.1",
|
||||||
|
"Microsoft.SourceLink.Common": "1.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.SourceLink.GitLab": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "1.1.1",
|
||||||
|
"contentHash": "tvsg47DDLqqedlPeYVE2lmiTpND8F0hkrealQ5hYltSmvruy/Gr5nHAKSsjyw5L3NeM/HLMI5ORv7on/M4qyZw==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Build.Tasks.Git": "1.1.1",
|
||||||
|
"Microsoft.SourceLink.Common": "1.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Text.Encodings.Web": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "8.0.0",
|
||||||
|
"contentHash": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ=="
|
||||||
|
},
|
||||||
|
"System.Text.Json": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "8.0.4",
|
||||||
|
"contentHash": "bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==",
|
||||||
|
"dependencies": {
|
||||||
|
"System.Text.Encodings.Web": "8.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ecommons": {
|
||||||
|
"type": "Project"
|
||||||
|
},
|
||||||
|
"gatheringpaths": {
|
||||||
|
"type": "Project",
|
||||||
|
"dependencies": {
|
||||||
|
"Questionable.Model": "[1.0.0, )"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"questionable.model": {
|
||||||
|
"type": "Project",
|
||||||
|
"dependencies": {
|
||||||
|
"System.Text.Json": "[8.0.4, )"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
0
GatheringPaths/2.x - A Realm Reborn/.gitkeep
Normal file
0
GatheringPaths/2.x - A Realm Reborn/.gitkeep
Normal file
0
GatheringPaths/3.x - Heavensward/.gitkeep
Normal file
0
GatheringPaths/3.x - Heavensward/.gitkeep
Normal file
0
GatheringPaths/4.x - Stormblood/.gitkeep
Normal file
0
GatheringPaths/4.x - Stormblood/.gitkeep
Normal file
0
GatheringPaths/5.x - Shadowbringers/.gitkeep
Normal file
0
GatheringPaths/5.x - Shadowbringers/.gitkeep
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
|
||||||
|
"Author": [],
|
||||||
|
"TerritoryId": 958,
|
||||||
|
"AetheryteShortcut": "Garlemald - Camp Broken Glass",
|
||||||
|
"Groups": [
|
||||||
|
{
|
||||||
|
"Nodes": [
|
||||||
|
{
|
||||||
|
"DataId": 33932,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -80.95969,
|
||||||
|
"Y": -9.810837,
|
||||||
|
"Z": 462.2579
|
||||||
|
},
|
||||||
|
"MinimumAngle": 130,
|
||||||
|
"MaximumAngle": 260
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 33933,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -72.11935,
|
||||||
|
"Y": -10.90324,
|
||||||
|
"Z": 471.2258
|
||||||
|
},
|
||||||
|
"MinimumAngle": 105,
|
||||||
|
"MaximumAngle": 250
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -98.97565,
|
||||||
|
"Y": -5.664787,
|
||||||
|
"Z": 463.9966
|
||||||
|
},
|
||||||
|
"MinimumAngle": 60,
|
||||||
|
"MaximumAngle": 230
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -63.49503,
|
||||||
|
"Y": -11.21235,
|
||||||
|
"Z": 469.3839
|
||||||
|
},
|
||||||
|
"MinimumAngle": 80,
|
||||||
|
"MaximumAngle": 255
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nodes": [
|
||||||
|
{
|
||||||
|
"DataId": 33931,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -61.34306,
|
||||||
|
"Y": 6.11244,
|
||||||
|
"Z": 318.3409
|
||||||
|
},
|
||||||
|
"MinimumAngle": -120,
|
||||||
|
"MaximumAngle": 70
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -61.47854,
|
||||||
|
"Y": 6.076105,
|
||||||
|
"Z": 281.4938
|
||||||
|
},
|
||||||
|
"MinimumAngle": 65,
|
||||||
|
"MaximumAngle": 240
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -73.25829,
|
||||||
|
"Y": 6.108262,
|
||||||
|
"Z": 302.9926
|
||||||
|
},
|
||||||
|
"MinimumAngle": 50,
|
||||||
|
"MaximumAngle": 220
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 33930,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -51.28564,
|
||||||
|
"Y": 6.088318,
|
||||||
|
"Z": 318.0529
|
||||||
|
},
|
||||||
|
"MinimumAngle": -65,
|
||||||
|
"MaximumAngle": 110
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nodes": [
|
||||||
|
{
|
||||||
|
"DataId": 33935,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 72.58704,
|
||||||
|
"Y": -11.59895,
|
||||||
|
"Z": 354.757
|
||||||
|
},
|
||||||
|
"MinimumAngle": 75,
|
||||||
|
"MaximumAngle": 235
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 65.33016,
|
||||||
|
"Y": -11.61111,
|
||||||
|
"Z": 358.7321
|
||||||
|
},
|
||||||
|
"MinimumAngle": 65,
|
||||||
|
"MaximumAngle": 235
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 68.21196,
|
||||||
|
"Y": -11.81954,
|
||||||
|
"Z": 366.5172
|
||||||
|
},
|
||||||
|
"MinimumAngle": 5,
|
||||||
|
"MaximumAngle": 85
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 33934,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 81.30492,
|
||||||
|
"Y": -11.53227,
|
||||||
|
"Z": 347.9922
|
||||||
|
},
|
||||||
|
"MinimumAngle": 50,
|
||||||
|
"MaximumAngle": 215
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,157 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
|
||||||
|
"Author": [],
|
||||||
|
"TerritoryId": 959,
|
||||||
|
"Groups": [
|
||||||
|
{
|
||||||
|
"Nodes": [
|
||||||
|
{
|
||||||
|
"DataId": 33929,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 304.4121,
|
||||||
|
"Y": 118.8077,
|
||||||
|
"Z": 673.4494
|
||||||
|
},
|
||||||
|
"MinimumAngle": 50,
|
||||||
|
"MaximumAngle": 230
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 297.7666,
|
||||||
|
"Y": 119.4976,
|
||||||
|
"Z": 679.5604
|
||||||
|
},
|
||||||
|
"MinimumAngle": 50,
|
||||||
|
"MaximumAngle": 220
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 322.163,
|
||||||
|
"Y": 119.0883,
|
||||||
|
"Z": 657.4384
|
||||||
|
},
|
||||||
|
"MinimumAngle": 55,
|
||||||
|
"MaximumAngle": 235
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 33928,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 313.72,
|
||||||
|
"Y": 118.3442,
|
||||||
|
"Z": 664.8668
|
||||||
|
},
|
||||||
|
"MinimumAngle": 60,
|
||||||
|
"MaximumAngle": 230
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nodes": [
|
||||||
|
{
|
||||||
|
"DataId": 33927,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 394.3838,
|
||||||
|
"Y": 144.7951,
|
||||||
|
"Z": 820.7851
|
||||||
|
},
|
||||||
|
"MinimumAngle": 75,
|
||||||
|
"MaximumAngle": 250
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 421.0549,
|
||||||
|
"Y": 143.6111,
|
||||||
|
"Z": 805.9457
|
||||||
|
},
|
||||||
|
"MinimumAngle": 60,
|
||||||
|
"MaximumAngle": 225
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 414.2961,
|
||||||
|
"Y": 143.2405,
|
||||||
|
"Z": 811.3884
|
||||||
|
},
|
||||||
|
"MinimumAngle": 65,
|
||||||
|
"MaximumAngle": 230
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 33926,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 405.2481,
|
||||||
|
"Y": 143.6621,
|
||||||
|
"Z": 816.6496
|
||||||
|
},
|
||||||
|
"MinimumAngle": 75,
|
||||||
|
"MaximumAngle": 230
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nodes": [
|
||||||
|
{
|
||||||
|
"DataId": 33925,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 474.679,
|
||||||
|
"Y": 143.4776,
|
||||||
|
"Z": 698.5961
|
||||||
|
},
|
||||||
|
"MinimumAngle": 20,
|
||||||
|
"MaximumAngle": 170
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 474.8585,
|
||||||
|
"Y": 144.2588,
|
||||||
|
"Z": 685.7468
|
||||||
|
},
|
||||||
|
"MinimumAngle": 0,
|
||||||
|
"MaximumAngle": 155
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 467.506,
|
||||||
|
"Y": 144.9235,
|
||||||
|
"Z": 654.2
|
||||||
|
},
|
||||||
|
"MinimumAngle": 0,
|
||||||
|
"MaximumAngle": 150
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 33924,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 470.7754,
|
||||||
|
"Y": 144.8793,
|
||||||
|
"Z": 672.114
|
||||||
|
},
|
||||||
|
"MinimumAngle": -5,
|
||||||
|
"MaximumAngle": 165
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,159 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"TerritoryId": 957,
|
||||||
|
"AetheryteShortcut": "Thavnair - Great Work",
|
||||||
|
"Groups": [
|
||||||
|
{
|
||||||
|
"Nodes": [
|
||||||
|
{
|
||||||
|
"DataId": 33918,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -582.5132,
|
||||||
|
"Y": 40.54578,
|
||||||
|
"Z": -426.0171
|
||||||
|
},
|
||||||
|
"MinimumAngle": -50,
|
||||||
|
"MaximumAngle": 90
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 33919,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -578.2101,
|
||||||
|
"Y": 41.27147,
|
||||||
|
"Z": -447.6376
|
||||||
|
},
|
||||||
|
"MinimumAngle": 130,
|
||||||
|
"MaximumAngle": 220
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -546.2882,
|
||||||
|
"Y": 44.52267,
|
||||||
|
"Z": -435.8184
|
||||||
|
},
|
||||||
|
"MinimumAngle": 200,
|
||||||
|
"MaximumAngle": 360
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -606.7445,
|
||||||
|
"Y": 38.37634,
|
||||||
|
"Z": -425.5284
|
||||||
|
},
|
||||||
|
"MinimumAngle": -80,
|
||||||
|
"MaximumAngle": 70
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nodes": [
|
||||||
|
{
|
||||||
|
"DataId": 33920,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -488.2276,
|
||||||
|
"Y": 34.71221,
|
||||||
|
"Z": -359.6945
|
||||||
|
},
|
||||||
|
"MinimumAngle": 20,
|
||||||
|
"MaximumAngle": 128,
|
||||||
|
"MinimumDistance": 1.3
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 33921,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -498.8687,
|
||||||
|
"Y": 31.08014,
|
||||||
|
"Z": -351.9397
|
||||||
|
},
|
||||||
|
"MinimumAngle": 40,
|
||||||
|
"MaximumAngle": 190
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -490.7759,
|
||||||
|
"Y": 28.70215,
|
||||||
|
"Z": -344.4114
|
||||||
|
},
|
||||||
|
"MinimumAngle": -110,
|
||||||
|
"MaximumAngle": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -494.1286,
|
||||||
|
"Y": 32.89971,
|
||||||
|
"Z": -355.0208
|
||||||
|
},
|
||||||
|
"MinimumAngle": 80,
|
||||||
|
"MaximumAngle": 230
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nodes": [
|
||||||
|
{
|
||||||
|
"DataId": 33922,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -304.0609,
|
||||||
|
"Y": 68.76999,
|
||||||
|
"Z": -479.1875
|
||||||
|
},
|
||||||
|
"MinimumAngle": -110,
|
||||||
|
"MaximumAngle": 70
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 33923,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -293.6989,
|
||||||
|
"Y": 68.77935,
|
||||||
|
"Z": -484.2256
|
||||||
|
},
|
||||||
|
"MinimumAngle": -30,
|
||||||
|
"MaximumAngle": 110
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -295.0806,
|
||||||
|
"Y": 69.12621,
|
||||||
|
"Z": -498.1898
|
||||||
|
},
|
||||||
|
"MinimumAngle": 10,
|
||||||
|
"MaximumAngle": 200
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -281.4858,
|
||||||
|
"Y": 67.64153,
|
||||||
|
"Z": -477.6673
|
||||||
|
},
|
||||||
|
"MinimumAngle": -105,
|
||||||
|
"MaximumAngle": 75
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
158
GatheringPaths/7.x - Dawntrail/Urqopacha/974_Chabameki_MIN.json
Normal file
158
GatheringPaths/7.x - Dawntrail/Urqopacha/974_Chabameki_MIN.json
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
|
||||||
|
"Author": [],
|
||||||
|
"TerritoryId": 1187,
|
||||||
|
"AetheryteShortcut": "Urqopacha - Wachunpelo",
|
||||||
|
"Groups": [
|
||||||
|
{
|
||||||
|
"Nodes": [
|
||||||
|
{
|
||||||
|
"DataId": 34749,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -392.813,
|
||||||
|
"Y": -47.04364,
|
||||||
|
"Z": -386.862
|
||||||
|
},
|
||||||
|
"MinimumAngle": -10,
|
||||||
|
"MaximumAngle": 240
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 34750,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -402.8987,
|
||||||
|
"Y": -45.59287,
|
||||||
|
"Z": -390.7613
|
||||||
|
},
|
||||||
|
"MinimumAngle": 220,
|
||||||
|
"MaximumAngle": 305
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -388.9036,
|
||||||
|
"Y": -46.86702,
|
||||||
|
"Z": -381.3985
|
||||||
|
},
|
||||||
|
"MinimumAngle": -50,
|
||||||
|
"MaximumAngle": 210
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -394.2657,
|
||||||
|
"Y": -47.86026,
|
||||||
|
"Z": -394.9654
|
||||||
|
},
|
||||||
|
"MinimumAngle": -120,
|
||||||
|
"MaximumAngle": 120
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nodes": [
|
||||||
|
{
|
||||||
|
"DataId": 34753,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -541.7726,
|
||||||
|
"Y": -22.952,
|
||||||
|
"Z": -517.8604
|
||||||
|
},
|
||||||
|
"MinimumAngle": 215,
|
||||||
|
"MaximumAngle": 330
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 34754,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -522.9433,
|
||||||
|
"Y": -25.87319,
|
||||||
|
"Z": -537.3257
|
||||||
|
},
|
||||||
|
"MinimumAngle": 225,
|
||||||
|
"MaximumAngle": 360
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -532.3487,
|
||||||
|
"Y": -22.79275,
|
||||||
|
"Z": -510.8069
|
||||||
|
},
|
||||||
|
"MinimumAngle": 135,
|
||||||
|
"MaximumAngle": 270
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -536.2922,
|
||||||
|
"Y": -23.79476,
|
||||||
|
"Z": -526.0406
|
||||||
|
},
|
||||||
|
"MinimumAngle": -110,
|
||||||
|
"MaximumAngle": 35
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nodes": [
|
||||||
|
{
|
||||||
|
"DataId": 34751,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -448.8079,
|
||||||
|
"Y": -14.9586,
|
||||||
|
"Z": -658.0133
|
||||||
|
},
|
||||||
|
"MinimumAngle": -45,
|
||||||
|
"MaximumAngle": 115
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 34752,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -452.2813,
|
||||||
|
"Y": -12.43015,
|
||||||
|
"Z": -665.0275
|
||||||
|
},
|
||||||
|
"MinimumAngle": 0,
|
||||||
|
"MaximumAngle": 150
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -431.5875,
|
||||||
|
"Y": -16.68724,
|
||||||
|
"Z": -656.528
|
||||||
|
},
|
||||||
|
"MinimumAngle": -35,
|
||||||
|
"MaximumAngle": 90
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -439.8079,
|
||||||
|
"Y": -16.67447,
|
||||||
|
"Z": -654.6749
|
||||||
|
},
|
||||||
|
"MinimumAngle": -45,
|
||||||
|
"MaximumAngle": 85
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
150
GatheringPaths/7.x - Dawntrail/Urqopacha/992_Chabameki_BTN.json
Normal file
150
GatheringPaths/7.x - Dawntrail/Urqopacha/992_Chabameki_BTN.json
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
|
||||||
|
"Author": [],
|
||||||
|
"TerritoryId": 1187,
|
||||||
|
"AetheryteShortcut": "Urqopacha - Wachunpelo",
|
||||||
|
"Groups": [
|
||||||
|
{
|
||||||
|
"Nodes": [
|
||||||
|
{
|
||||||
|
"DataId": 34857,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -12.48859,
|
||||||
|
"Y": -133.2091,
|
||||||
|
"Z": -427.7497
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 34858,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -22.41956,
|
||||||
|
"Y": -129.3952,
|
||||||
|
"Z": -396.6573
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -16.08351,
|
||||||
|
"Y": -137.6674,
|
||||||
|
"Z": -464.35
|
||||||
|
},
|
||||||
|
"MinimumAngle": -65,
|
||||||
|
"MaximumAngle": 145
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -9.000858,
|
||||||
|
"Y": -134.9256,
|
||||||
|
"Z": -439.0332
|
||||||
|
},
|
||||||
|
"MinimumAngle": -125,
|
||||||
|
"MaximumAngle": 105
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nodes": [
|
||||||
|
{
|
||||||
|
"DataId": 34861,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -234.8222,
|
||||||
|
"Y": -99.01237,
|
||||||
|
"Z": -376.7287
|
||||||
|
},
|
||||||
|
"MinimumAngle": -180,
|
||||||
|
"MaximumAngle": 40
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 34862,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -236.0182,
|
||||||
|
"Y": -97.50027,
|
||||||
|
"Z": -372.1523
|
||||||
|
},
|
||||||
|
"MinimumAngle": -180,
|
||||||
|
"MaximumAngle": 45
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -249.7221,
|
||||||
|
"Y": -96.55618,
|
||||||
|
"Z": -386.2397
|
||||||
|
},
|
||||||
|
"MinimumAngle": 35,
|
||||||
|
"MaximumAngle": 280
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -241.8424,
|
||||||
|
"Y": -99.37369,
|
||||||
|
"Z": -386.2889
|
||||||
|
},
|
||||||
|
"MinimumAngle": -300,
|
||||||
|
"MaximumAngle": -45
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nodes": [
|
||||||
|
{
|
||||||
|
"DataId": 34860,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -169.8177,
|
||||||
|
"Y": -85.61841,
|
||||||
|
"Z": -240.1007
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -116.6446,
|
||||||
|
"Y": -93.99508,
|
||||||
|
"Z": -274.6102
|
||||||
|
},
|
||||||
|
"MinimumAngle": -140,
|
||||||
|
"MaximumAngle": 150
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -133.936,
|
||||||
|
"Y": -91.54122,
|
||||||
|
"Z": -273.3963
|
||||||
|
},
|
||||||
|
"MinimumAngle": -155,
|
||||||
|
"MaximumAngle": 85
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 34859,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -131.9198,
|
||||||
|
"Y": -89.88039,
|
||||||
|
"Z": -249.5422
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
148
GatheringPaths/7.x - Dawntrail/Urqopacha/993_Chabayuqeq_MIN.json
Normal file
148
GatheringPaths/7.x - Dawntrail/Urqopacha/993_Chabayuqeq_MIN.json
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
|
||||||
|
"Author": [],
|
||||||
|
"TerritoryId": 1187,
|
||||||
|
"AetheryteShortcut": "Urqopacha - Wachunpelo",
|
||||||
|
"Groups": [
|
||||||
|
{
|
||||||
|
"Nodes": [
|
||||||
|
{
|
||||||
|
"DataId": 34866,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 242.7737,
|
||||||
|
"Y": -135.9734,
|
||||||
|
"Z": -431.2313
|
||||||
|
},
|
||||||
|
"MinimumAngle": -55,
|
||||||
|
"MaximumAngle": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 302.1836,
|
||||||
|
"Y": -135.4149,
|
||||||
|
"Z": -359.7965
|
||||||
|
},
|
||||||
|
"MinimumAngle": 5,
|
||||||
|
"MaximumAngle": 155
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 256.1657,
|
||||||
|
"Y": -135.744,
|
||||||
|
"Z": -414.7577
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 34865,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 269.7338,
|
||||||
|
"Y": -134.0488,
|
||||||
|
"Z": -381.6242
|
||||||
|
},
|
||||||
|
"MinimumAngle": -85,
|
||||||
|
"MaximumAngle": 145
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nodes": [
|
||||||
|
{
|
||||||
|
"DataId": 34868,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 389.1952,
|
||||||
|
"Y": -154.3099,
|
||||||
|
"Z": -368.3658
|
||||||
|
},
|
||||||
|
"MinimumAngle": 105,
|
||||||
|
"MaximumAngle": 345
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 401.9319,
|
||||||
|
"Y": -150.0004,
|
||||||
|
"Z": -408.114
|
||||||
|
},
|
||||||
|
"MinimumAngle": -70,
|
||||||
|
"MaximumAngle": 85
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 406.1098,
|
||||||
|
"Y": -152.2166,
|
||||||
|
"Z": -364.7227
|
||||||
|
},
|
||||||
|
"MinimumAngle": -210,
|
||||||
|
"MaximumAngle": 35
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 34867,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 399.1297,
|
||||||
|
"Y": -152.1141,
|
||||||
|
"Z": -394.71
|
||||||
|
},
|
||||||
|
"MinimumAngle": 120,
|
||||||
|
"MaximumAngle": 330
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nodes": [
|
||||||
|
{
|
||||||
|
"DataId": 34864,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 359.517,
|
||||||
|
"Y": -161.1972,
|
||||||
|
"Z": -644.0471
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 307.4235,
|
||||||
|
"Y": -159.1669,
|
||||||
|
"Z": -622.6444
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 348.5925,
|
||||||
|
"Y": -165.3805,
|
||||||
|
"Z": -671.4193
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 34863,
|
||||||
|
"Locations": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 323.8758,
|
||||||
|
"Y": -162.9682,
|
||||||
|
"Z": -648.8156
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
30
GatheringPaths/AssemblyGatheringLocationLoader.cs
Normal file
30
GatheringPaths/AssemblyGatheringLocationLoader.cs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using System.IO;
|
||||||
|
using Questionable.Model.Gathering;
|
||||||
|
|
||||||
|
namespace Questionable.GatheringPaths;
|
||||||
|
|
||||||
|
[SuppressMessage("ReSharper", "PartialTypeWithSinglePart", Justification = "Required for RELEASE")]
|
||||||
|
public static partial class AssemblyGatheringLocationLoader
|
||||||
|
{
|
||||||
|
private static Dictionary<ushort, GatheringRoot>? _locations;
|
||||||
|
|
||||||
|
public static IReadOnlyDictionary<ushort, GatheringRoot> GetLocations()
|
||||||
|
{
|
||||||
|
if (_locations == null)
|
||||||
|
{
|
||||||
|
_locations = [];
|
||||||
|
LoadLocations();
|
||||||
|
}
|
||||||
|
|
||||||
|
return _locations ?? throw new InvalidOperationException("location data is not initialized");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Stream QuestSchema =>
|
||||||
|
typeof(AssemblyGatheringLocationLoader).Assembly.GetManifestResourceStream("Questionable.GatheringPaths.GatheringLocationSchema")!;
|
||||||
|
|
||||||
|
[SuppressMessage("ReSharper", "UnusedMember.Local")]
|
||||||
|
private static void AddLocation(ushort questId, GatheringRoot root) => _locations![questId] = root;
|
||||||
|
}
|
43
GatheringPaths/GatheringPaths.csproj
Normal file
43
GatheringPaths/GatheringPaths.csproj
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0-windows</TargetFramework>
|
||||||
|
<LangVersion>12</LangVersion>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<RootNamespace>Questionable.GatheringPaths</RootNamespace>
|
||||||
|
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
|
||||||
|
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
|
||||||
|
<DebugType>none</DebugType>
|
||||||
|
<PathMap Condition="$(SolutionDir) != ''">$(SolutionDir)=X:\</PathMap>
|
||||||
|
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
|
||||||
|
<Platforms>x64</Platforms>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Questionable.Model\Questionable.Model.csproj" />
|
||||||
|
<ProjectReference Include="..\QuestPathGenerator\QuestPathGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Remove="gatheringlocation-v1.json" />
|
||||||
|
<EmbeddedResource Include="gatheringlocation-v1.json">
|
||||||
|
<LogicalName>Questionable.GatheringPaths.GatheringLocationSchema</LogicalName>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<AdditionalFiles Include="gatheringlocation-v1.json" />
|
||||||
|
<AdditionalFiles Include="..\Questionable.Model\common-schema.json" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Remove="2.x - A Realm Reborn" />
|
||||||
|
<None Remove="3.x - Heavensward" />
|
||||||
|
<None Remove="4.x - Stormblood" />
|
||||||
|
<None Remove="5.x - Shadowbringers" />
|
||||||
|
<None Remove="6.x - Endwalker" />
|
||||||
|
<None Remove="7.x - Dawntrail" />
|
||||||
|
<AdditionalFiles Include="2.x - A Realm Reborn\**\*.json" />
|
||||||
|
<AdditionalFiles Include="3.x - Heavensward\**\*.json" />
|
||||||
|
<AdditionalFiles Include="4.x - Stormblood\**\*.json" />
|
||||||
|
<AdditionalFiles Include="5.x - Shadowbringers\**\*.json" />
|
||||||
|
<AdditionalFiles Include="6.x - Endwalker\**\*.json" />
|
||||||
|
<AdditionalFiles Include="7.x - Dawntrail\**\*.json" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
120
GatheringPaths/gatheringlocation-v1.json
Normal file
120
GatheringPaths/gatheringlocation-v1.json
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"$id": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
|
||||||
|
"title": "Gathering Location V1",
|
||||||
|
"description": "A series of gathering locationsk",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"$schema": {
|
||||||
|
"type": "string",
|
||||||
|
"const": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json"
|
||||||
|
},
|
||||||
|
"Author": {
|
||||||
|
"description": "Author of the gathering location data",
|
||||||
|
"type": [
|
||||||
|
"string",
|
||||||
|
"array"
|
||||||
|
],
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"TerritoryId": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"AetheryteShortcut": {
|
||||||
|
"$ref": "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Aetheryte"
|
||||||
|
},
|
||||||
|
"Groups": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Nodes": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"DataId": {
|
||||||
|
"type": "number",
|
||||||
|
"minimum": 30000,
|
||||||
|
"maximum": 50000
|
||||||
|
},
|
||||||
|
"Locations": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Position": {
|
||||||
|
"$ref": "#/$defs/Vector3"
|
||||||
|
},
|
||||||
|
"MinimumAngle": {
|
||||||
|
"type": "number",
|
||||||
|
"minimum": -360,
|
||||||
|
"maximum": 360
|
||||||
|
},
|
||||||
|
"MaximumAngle": {
|
||||||
|
"type": "number",
|
||||||
|
"minimum": -360,
|
||||||
|
"maximum": 360
|
||||||
|
},
|
||||||
|
"MinimumDistance": {
|
||||||
|
"type": "number",
|
||||||
|
"minimum": 0
|
||||||
|
},
|
||||||
|
"MaximumDistance": {
|
||||||
|
"type": "number",
|
||||||
|
"exclusiveMinimum": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"Position"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"DataId"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"Nodes"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"$schema",
|
||||||
|
"Author",
|
||||||
|
"TerritoryId",
|
||||||
|
"Groups"
|
||||||
|
],
|
||||||
|
"additionalProperties": false,
|
||||||
|
"$defs": {
|
||||||
|
"Vector3": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Position to (typically) walk to",
|
||||||
|
"properties": {
|
||||||
|
"X": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"Y": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"Z": {
|
||||||
|
"type": "number"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"X",
|
||||||
|
"Y",
|
||||||
|
"Z"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
26
GatheringPaths/packages.lock.json
Normal file
26
GatheringPaths/packages.lock.json
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"dependencies": {
|
||||||
|
"net8.0-windows7.0": {
|
||||||
|
"System.Text.Encodings.Web": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "8.0.0",
|
||||||
|
"contentHash": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ=="
|
||||||
|
},
|
||||||
|
"System.Text.Json": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "8.0.4",
|
||||||
|
"contentHash": "bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==",
|
||||||
|
"dependencies": {
|
||||||
|
"System.Text.Encodings.Web": "8.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"questionable.model": {
|
||||||
|
"type": "Project",
|
||||||
|
"dependencies": {
|
||||||
|
"System.Text.Json": "[8.0.4, )"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
using Questionable.Model.V1;
|
using Questionable.Model.Questing;
|
||||||
using Questionable.QuestPathGenerator;
|
using Questionable.QuestPathGenerator;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
|
163
QuestPathGenerator/GatheringSourceGenerator.cs
Normal file
163
QuestPathGenerator/GatheringSourceGenerator.cs
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text.Json;
|
||||||
|
using Json.Schema;
|
||||||
|
using Microsoft.CodeAnalysis;
|
||||||
|
using Microsoft.CodeAnalysis.CSharp;
|
||||||
|
using Microsoft.CodeAnalysis.CSharp.Syntax;
|
||||||
|
using Questionable.Model.Gathering;
|
||||||
|
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
|
||||||
|
using static Questionable.QuestPathGenerator.RoslynShortcuts;
|
||||||
|
|
||||||
|
namespace Questionable.QuestPathGenerator;
|
||||||
|
|
||||||
|
[Generator]
|
||||||
|
[SuppressMessage("MicrosoftCodeAnalysisReleaseTracking", "RS2008")]
|
||||||
|
public class GatheringSourceGenerator : ISourceGenerator
|
||||||
|
{
|
||||||
|
private static readonly DiagnosticDescriptor InvalidJson = new("GPG0001",
|
||||||
|
"Invalid JSON",
|
||||||
|
"Invalid gathering file: {0}",
|
||||||
|
nameof(GatheringSourceGenerator),
|
||||||
|
DiagnosticSeverity.Error,
|
||||||
|
true);
|
||||||
|
|
||||||
|
public void Initialize(GeneratorInitializationContext context)
|
||||||
|
{
|
||||||
|
// No initialization required for this generator.
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Execute(GeneratorExecutionContext context)
|
||||||
|
{
|
||||||
|
// Find schema definition
|
||||||
|
AdditionalText? gatheringSchema =
|
||||||
|
context.AdditionalFiles.SingleOrDefault(x => Path.GetFileName(x.Path) == "gatheringlocation-v1.json");
|
||||||
|
if (gatheringSchema != null)
|
||||||
|
GenerateGatheringSource(context, gatheringSchema);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GenerateGatheringSource(GeneratorExecutionContext context, AdditionalText jsonSchemaFile)
|
||||||
|
{
|
||||||
|
var gatheringSchema = JsonSchema.FromText(jsonSchemaFile.GetText()!.ToString());
|
||||||
|
|
||||||
|
List<(ushort, GatheringRoot)> gatheringLocations = [];
|
||||||
|
foreach (var (id, node) in Utils.GetAdditionalFiles(context, jsonSchemaFile, gatheringSchema, InvalidJson))
|
||||||
|
{
|
||||||
|
var gatheringLocation = node.Deserialize<GatheringRoot>()!;
|
||||||
|
gatheringLocations.Add((id, gatheringLocation));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gatheringLocations.Count == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var partitionedLocations = gatheringLocations
|
||||||
|
.OrderBy(x => x.Item1)
|
||||||
|
.GroupBy(x => $"LoadLocation{x.Item1 / 100}")
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
var methods = Utils.CreateMethods("LoadLocations", partitionedLocations, CreateInitializer);
|
||||||
|
|
||||||
|
var code =
|
||||||
|
CompilationUnit()
|
||||||
|
.WithUsings(
|
||||||
|
List(
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
UsingDirective(
|
||||||
|
IdentifierName("System")),
|
||||||
|
UsingDirective(
|
||||||
|
QualifiedName(
|
||||||
|
IdentifierName("System"),
|
||||||
|
IdentifierName("Numerics"))),
|
||||||
|
UsingDirective(
|
||||||
|
QualifiedName(
|
||||||
|
IdentifierName("System"),
|
||||||
|
IdentifierName("IO"))),
|
||||||
|
UsingDirective(
|
||||||
|
QualifiedName(
|
||||||
|
QualifiedName(
|
||||||
|
IdentifierName("System"), IdentifierName("Collections")),
|
||||||
|
IdentifierName("Generic"))),
|
||||||
|
UsingDirective(
|
||||||
|
QualifiedName(
|
||||||
|
QualifiedName(
|
||||||
|
IdentifierName("Questionable"),
|
||||||
|
IdentifierName("Model")),
|
||||||
|
IdentifierName("Gathering"))),
|
||||||
|
UsingDirective(
|
||||||
|
QualifiedName(
|
||||||
|
QualifiedName(
|
||||||
|
IdentifierName("Questionable"),
|
||||||
|
IdentifierName("Model")),
|
||||||
|
IdentifierName("Common")))
|
||||||
|
}))
|
||||||
|
.WithMembers(
|
||||||
|
SingletonList<MemberDeclarationSyntax>(
|
||||||
|
FileScopedNamespaceDeclaration(
|
||||||
|
QualifiedName(
|
||||||
|
IdentifierName("Questionable"),
|
||||||
|
IdentifierName("GatheringPaths")))
|
||||||
|
.WithMembers(
|
||||||
|
SingletonList<MemberDeclarationSyntax>(
|
||||||
|
ClassDeclaration("AssemblyGatheringLocationLoader")
|
||||||
|
.WithModifiers(
|
||||||
|
TokenList(Token(SyntaxKind.PartialKeyword)))
|
||||||
|
.WithMembers(List<MemberDeclarationSyntax>(methods))))))
|
||||||
|
.NormalizeWhitespace();
|
||||||
|
|
||||||
|
// Add the source code to the compilation.
|
||||||
|
context.AddSource("AssemblyGatheringLocationLoader.g.cs", code.ToFullString());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static StatementSyntax[] CreateInitializer(List<(ushort QuestId, GatheringRoot Root)> quests)
|
||||||
|
{
|
||||||
|
List<StatementSyntax> statements = [];
|
||||||
|
|
||||||
|
foreach (var quest in quests)
|
||||||
|
{
|
||||||
|
statements.Add(
|
||||||
|
ExpressionStatement(
|
||||||
|
InvocationExpression(
|
||||||
|
IdentifierName("AddLocation"))
|
||||||
|
.WithArgumentList(
|
||||||
|
ArgumentList(
|
||||||
|
SeparatedList<ArgumentSyntax>(
|
||||||
|
new SyntaxNodeOrToken[]
|
||||||
|
{
|
||||||
|
Argument(
|
||||||
|
LiteralExpression(SyntaxKind.NumericLiteralExpression,
|
||||||
|
Literal(quest.QuestId))),
|
||||||
|
Token(SyntaxKind.CommaToken),
|
||||||
|
Argument(CreateGatheringRootExpression(quest.QuestId, quest.Root))
|
||||||
|
})))));
|
||||||
|
}
|
||||||
|
|
||||||
|
return statements.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ObjectCreationExpressionSyntax CreateGatheringRootExpression(ushort locationId, GatheringRoot root)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return ObjectCreationExpression(
|
||||||
|
IdentifierName(nameof(GatheringRoot)))
|
||||||
|
.WithInitializer(
|
||||||
|
InitializerExpression(
|
||||||
|
SyntaxKind.ObjectInitializerExpression,
|
||||||
|
SeparatedList<ExpressionSyntax>(
|
||||||
|
SyntaxNodeList(
|
||||||
|
AssignmentList(nameof(GatheringRoot.Author), root.Author).AsSyntaxNodeOrToken(),
|
||||||
|
Assignment(nameof(GatheringRoot.TerritoryId), root.TerritoryId, default)
|
||||||
|
.AsSyntaxNodeOrToken(),
|
||||||
|
Assignment(nameof(GatheringRoot.AetheryteShortcut), root.AetheryteShortcut, null),
|
||||||
|
AssignmentList(nameof(GatheringRoot.Groups), root.Groups).AsSyntaxNodeOrToken()))));
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new Exception($"GatheringGen[{locationId}]: {e.Message}", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,16 +1,14 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
using System.Globalization;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text.Json.Nodes;
|
|
||||||
using Json.Schema;
|
using Json.Schema;
|
||||||
using Microsoft.CodeAnalysis;
|
using Microsoft.CodeAnalysis;
|
||||||
using Microsoft.CodeAnalysis.CSharp;
|
using Microsoft.CodeAnalysis.CSharp;
|
||||||
using Microsoft.CodeAnalysis.CSharp.Syntax;
|
using Microsoft.CodeAnalysis.CSharp.Syntax;
|
||||||
using Questionable.Model.V1;
|
using Questionable.Model.Questing;
|
||||||
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
|
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
|
||||||
using static Questionable.QuestPathGenerator.RoslynShortcuts;
|
using static Questionable.QuestPathGenerator.RoslynShortcuts;
|
||||||
|
|
||||||
@ -38,47 +36,21 @@ public class QuestSourceGenerator : ISourceGenerator
|
|||||||
|
|
||||||
public void Execute(GeneratorExecutionContext context)
|
public void Execute(GeneratorExecutionContext context)
|
||||||
{
|
{
|
||||||
List<(ushort, QuestRoot)> quests = [];
|
|
||||||
|
|
||||||
// Find schema definition
|
// Find schema definition
|
||||||
AdditionalText jsonSchemaFile =
|
AdditionalText? questSchema =
|
||||||
context.AdditionalFiles.Single(x => Path.GetFileName(x.Path) == "quest-v1.json");
|
context.AdditionalFiles.SingleOrDefault(x => Path.GetFileName(x.Path) == "quest-v1.json");
|
||||||
var questSchema = JsonSchema.FromText(jsonSchemaFile.GetText()!.ToString());
|
if (questSchema != null)
|
||||||
|
GenerateQuestSource(context, questSchema);
|
||||||
// Go through all files marked as an Additional File in file properties.
|
|
||||||
foreach (var additionalFile in context.AdditionalFiles)
|
|
||||||
{
|
|
||||||
if (additionalFile == null || additionalFile == jsonSchemaFile)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (Path.GetExtension(additionalFile.Path) != ".json")
|
|
||||||
continue;
|
|
||||||
|
|
||||||
string name = Path.GetFileName(additionalFile.Path);
|
|
||||||
if (!name.Contains('_'))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
ushort id = ushort.Parse(name.Substring(0, name.IndexOf('_')));
|
|
||||||
|
|
||||||
var text = additionalFile.GetText();
|
|
||||||
if (text == null)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
var questNode = JsonNode.Parse(text.ToString());
|
|
||||||
var evaluationResult = questSchema.Evaluate(questNode, new EvaluationOptions
|
|
||||||
{
|
|
||||||
Culture = CultureInfo.InvariantCulture,
|
|
||||||
OutputFormat = OutputFormat.List
|
|
||||||
});
|
|
||||||
if (!evaluationResult.IsValid)
|
|
||||||
{
|
|
||||||
var error = Diagnostic.Create(InvalidJson,
|
|
||||||
null,
|
|
||||||
Path.GetFileName(additionalFile.Path));
|
|
||||||
context.ReportDiagnostic(error);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var quest = questNode.Deserialize<QuestRoot>()!;
|
private void GenerateQuestSource(GeneratorExecutionContext context, AdditionalText jsonSchemaFile)
|
||||||
|
{
|
||||||
|
var questSchema = JsonSchema.FromText(jsonSchemaFile.GetText()!.ToString());
|
||||||
|
|
||||||
|
List<(ushort, QuestRoot)> quests = [];
|
||||||
|
foreach (var (id, node) in Utils.GetAdditionalFiles(context, jsonSchemaFile, questSchema, InvalidJson))
|
||||||
|
{
|
||||||
|
var quest = node.Deserialize<QuestRoot>()!;
|
||||||
if (quest.Disabled)
|
if (quest.Disabled)
|
||||||
{
|
{
|
||||||
quest.Author = [];
|
quest.Author = [];
|
||||||
@ -97,38 +69,7 @@ public class QuestSourceGenerator : ISourceGenerator
|
|||||||
.GroupBy(x => $"LoadQuests{x.Item1 / 50}")
|
.GroupBy(x => $"LoadQuests{x.Item1 / 50}")
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
List<MethodDeclarationSyntax> methods =
|
var methods = Utils.CreateMethods("LoadQuests", partitionedQuests, CreateInitializer);
|
||||||
[
|
|
||||||
MethodDeclaration(
|
|
||||||
PredefinedType(
|
|
||||||
Token(SyntaxKind.VoidKeyword)),
|
|
||||||
Identifier("LoadQuests"))
|
|
||||||
.WithModifiers(
|
|
||||||
TokenList(
|
|
||||||
Token(SyntaxKind.PrivateKeyword),
|
|
||||||
Token(SyntaxKind.StaticKeyword)))
|
|
||||||
.WithBody(
|
|
||||||
Block(
|
|
||||||
partitionedQuests
|
|
||||||
.Select(x =>
|
|
||||||
ExpressionStatement(
|
|
||||||
InvocationExpression(
|
|
||||||
IdentifierName(x.Key))))))
|
|
||||||
];
|
|
||||||
|
|
||||||
foreach (var partition in partitionedQuests)
|
|
||||||
{
|
|
||||||
methods.Add(MethodDeclaration(
|
|
||||||
PredefinedType(
|
|
||||||
Token(SyntaxKind.VoidKeyword)),
|
|
||||||
Identifier(partition.Key))
|
|
||||||
.WithModifiers(
|
|
||||||
TokenList(
|
|
||||||
Token(SyntaxKind.PrivateKeyword),
|
|
||||||
Token(SyntaxKind.StaticKeyword)))
|
|
||||||
.WithBody(
|
|
||||||
Block(CreateInitializer(partition.ToList()))));
|
|
||||||
}
|
|
||||||
|
|
||||||
var code =
|
var code =
|
||||||
CompilationUnit()
|
CompilationUnit()
|
||||||
@ -156,7 +97,13 @@ public class QuestSourceGenerator : ISourceGenerator
|
|||||||
QualifiedName(
|
QualifiedName(
|
||||||
IdentifierName("Questionable"),
|
IdentifierName("Questionable"),
|
||||||
IdentifierName("Model")),
|
IdentifierName("Model")),
|
||||||
IdentifierName("V1")))
|
IdentifierName("Questing"))),
|
||||||
|
UsingDirective(
|
||||||
|
QualifiedName(
|
||||||
|
QualifiedName(
|
||||||
|
IdentifierName("Questionable"),
|
||||||
|
IdentifierName("Model")),
|
||||||
|
IdentifierName("Common")))
|
||||||
}))
|
}))
|
||||||
.WithMembers(
|
.WithMembers(
|
||||||
SingletonList<MemberDeclarationSyntax>(
|
SingletonList<MemberDeclarationSyntax>(
|
||||||
|
@ -6,7 +6,9 @@ using System.Numerics;
|
|||||||
using Microsoft.CodeAnalysis;
|
using Microsoft.CodeAnalysis;
|
||||||
using Microsoft.CodeAnalysis.CSharp;
|
using Microsoft.CodeAnalysis.CSharp;
|
||||||
using Microsoft.CodeAnalysis.CSharp.Syntax;
|
using Microsoft.CodeAnalysis.CSharp.Syntax;
|
||||||
using Questionable.Model.V1;
|
using Questionable.Model.Common;
|
||||||
|
using Questionable.Model.Gathering;
|
||||||
|
using Questionable.Model.Questing;
|
||||||
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
|
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
|
||||||
|
|
||||||
namespace Questionable.QuestPathGenerator;
|
namespace Questionable.QuestPathGenerator;
|
||||||
@ -213,7 +215,9 @@ public static class RoslynShortcuts
|
|||||||
{
|
{
|
||||||
Argument(LiteralValue(qwv.High)),
|
Argument(LiteralValue(qwv.High)),
|
||||||
Token(SyntaxKind.CommaToken),
|
Token(SyntaxKind.CommaToken),
|
||||||
Argument(LiteralValue(qwv.Low))
|
Argument(LiteralValue(qwv.Low)),
|
||||||
|
Token(SyntaxKind.CommaToken),
|
||||||
|
Argument(LiteralValue(qwv.Mode))
|
||||||
})));
|
})));
|
||||||
}
|
}
|
||||||
else if (value is List<QuestWorkValue> list)
|
else if (value is List<QuestWorkValue> list)
|
||||||
@ -255,6 +259,9 @@ public static class RoslynShortcuts
|
|||||||
Assignment(nameof(SkipStepConditions.Never), skipStepConditions.Never,
|
Assignment(nameof(SkipStepConditions.Never), skipStepConditions.Never,
|
||||||
emptyStep.Never)
|
emptyStep.Never)
|
||||||
.AsSyntaxNodeOrToken(),
|
.AsSyntaxNodeOrToken(),
|
||||||
|
AssignmentList(nameof(SkipStepConditions.CompletionQuestVariablesFlags),
|
||||||
|
skipStepConditions.CompletionQuestVariablesFlags)
|
||||||
|
.AsSyntaxNodeOrToken(),
|
||||||
Assignment(nameof(SkipStepConditions.Flying), skipStepConditions.Flying,
|
Assignment(nameof(SkipStepConditions.Flying), skipStepConditions.Flying,
|
||||||
emptyStep.Flying)
|
emptyStep.Flying)
|
||||||
.AsSyntaxNodeOrToken(),
|
.AsSyntaxNodeOrToken(),
|
||||||
@ -307,6 +314,57 @@ public static class RoslynShortcuts
|
|||||||
Assignment(nameof(SkipAetheryteCondition.InSameTerritory),
|
Assignment(nameof(SkipAetheryteCondition.InSameTerritory),
|
||||||
skipAetheryteCondition.InSameTerritory, emptyAetheryte.InSameTerritory)))));
|
skipAetheryteCondition.InSameTerritory, emptyAetheryte.InSameTerritory)))));
|
||||||
}
|
}
|
||||||
|
else if (value is GatheringNodeGroup nodeGroup)
|
||||||
|
{
|
||||||
|
return ObjectCreationExpression(
|
||||||
|
IdentifierName(nameof(GatheringNodeGroup)))
|
||||||
|
.WithInitializer(
|
||||||
|
InitializerExpression(
|
||||||
|
SyntaxKind.ObjectInitializerExpression,
|
||||||
|
SeparatedList<ExpressionSyntax>(
|
||||||
|
SyntaxNodeList(
|
||||||
|
AssignmentList(nameof(GatheringNodeGroup.Nodes), nodeGroup.Nodes)
|
||||||
|
.AsSyntaxNodeOrToken()))));
|
||||||
|
}
|
||||||
|
else if (value is GatheringNode nodeLocation)
|
||||||
|
{
|
||||||
|
var emptyLocation = new GatheringNode();
|
||||||
|
return ObjectCreationExpression(
|
||||||
|
IdentifierName(nameof(GatheringNode)))
|
||||||
|
.WithInitializer(
|
||||||
|
InitializerExpression(
|
||||||
|
SyntaxKind.ObjectInitializerExpression,
|
||||||
|
SeparatedList<ExpressionSyntax>(
|
||||||
|
SyntaxNodeList(
|
||||||
|
Assignment(nameof(GatheringNode.DataId), nodeLocation.DataId,
|
||||||
|
emptyLocation.DataId)
|
||||||
|
.AsSyntaxNodeOrToken(),
|
||||||
|
AssignmentList(nameof(GatheringNode.Locations), nodeLocation.Locations)
|
||||||
|
.AsSyntaxNodeOrToken()))));
|
||||||
|
}
|
||||||
|
else if (value is GatheringLocation location)
|
||||||
|
{
|
||||||
|
var emptyLocation = new GatheringLocation();
|
||||||
|
return ObjectCreationExpression(
|
||||||
|
IdentifierName(nameof(GatheringLocation)))
|
||||||
|
.WithInitializer(
|
||||||
|
InitializerExpression(
|
||||||
|
SyntaxKind.ObjectInitializerExpression,
|
||||||
|
SeparatedList<ExpressionSyntax>(
|
||||||
|
SyntaxNodeList(
|
||||||
|
Assignment(nameof(GatheringLocation.Position), location.Position,
|
||||||
|
emptyLocation.Position).AsSyntaxNodeOrToken(),
|
||||||
|
Assignment(nameof(GatheringLocation.MinimumAngle), location.MinimumAngle,
|
||||||
|
emptyLocation.MinimumAngle).AsSyntaxNodeOrToken(),
|
||||||
|
Assignment(nameof(GatheringLocation.MaximumAngle), location.MaximumAngle,
|
||||||
|
emptyLocation.MaximumAngle).AsSyntaxNodeOrToken(),
|
||||||
|
Assignment(nameof(GatheringLocation.MinimumDistance),
|
||||||
|
location.MinimumDistance, emptyLocation.MinimumDistance)
|
||||||
|
.AsSyntaxNodeOrToken(),
|
||||||
|
Assignment(nameof(GatheringLocation.MaximumDistance),
|
||||||
|
location.MaximumDistance, emptyLocation.MaximumDistance)
|
||||||
|
.AsSyntaxNodeOrToken()))));
|
||||||
|
}
|
||||||
else if (value is null)
|
else if (value is null)
|
||||||
return LiteralExpression(SyntaxKind.NullLiteralExpression);
|
return LiteralExpression(SyntaxKind.NullLiteralExpression);
|
||||||
}
|
}
|
||||||
|
110
QuestPathGenerator/Utils.cs
Normal file
110
QuestPathGenerator/Utils.cs
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text.Json.Nodes;
|
||||||
|
using Json.Schema;
|
||||||
|
using Microsoft.CodeAnalysis;
|
||||||
|
using Microsoft.CodeAnalysis.CSharp;
|
||||||
|
using Microsoft.CodeAnalysis.CSharp.Syntax;
|
||||||
|
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
|
||||||
|
|
||||||
|
namespace Questionable.QuestPathGenerator;
|
||||||
|
|
||||||
|
public static class Utils
|
||||||
|
{
|
||||||
|
public static IEnumerable<(ushort, JsonNode)> GetAdditionalFiles(GeneratorExecutionContext context,
|
||||||
|
AdditionalText jsonSchemaFile, JsonSchema jsonSchema, DiagnosticDescriptor invalidJson)
|
||||||
|
{
|
||||||
|
var commonSchemaFile = context.AdditionalFiles.Single(x => Path.GetFileName(x.Path) == "common-schema.json");
|
||||||
|
List<AdditionalText> jsonSchemaFiles = [jsonSchemaFile, commonSchemaFile];
|
||||||
|
|
||||||
|
SchemaRegistry.Global.Register(
|
||||||
|
new Uri("https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json"),
|
||||||
|
JsonSchema.FromText(commonSchemaFile.GetText()!.ToString()));
|
||||||
|
|
||||||
|
foreach (var additionalFile in context.AdditionalFiles)
|
||||||
|
{
|
||||||
|
if (additionalFile == null || jsonSchemaFiles.Contains(additionalFile))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (Path.GetExtension(additionalFile.Path) != ".json")
|
||||||
|
continue;
|
||||||
|
|
||||||
|
string name = Path.GetFileName(additionalFile.Path);
|
||||||
|
if (!name.Contains("_"))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
ushort id = ushort.Parse(name.Substring(0, name.IndexOf('_')));
|
||||||
|
|
||||||
|
var text = additionalFile.GetText();
|
||||||
|
if (text == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
var node = JsonNode.Parse(text.ToString());
|
||||||
|
if (node == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
string? schemaLocation = node["$schema"]?.GetValue<string?>();
|
||||||
|
if (schemaLocation == null || new Uri(schemaLocation) != jsonSchema.GetId())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
var evaluationResult = jsonSchema.Evaluate(node, new EvaluationOptions
|
||||||
|
{
|
||||||
|
Culture = CultureInfo.InvariantCulture,
|
||||||
|
OutputFormat = OutputFormat.List,
|
||||||
|
});
|
||||||
|
if (evaluationResult.HasErrors)
|
||||||
|
{
|
||||||
|
var error = Diagnostic.Create(invalidJson,
|
||||||
|
null,
|
||||||
|
Path.GetFileName(additionalFile.Path));
|
||||||
|
context.ReportDiagnostic(error);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
yield return (id, node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<MethodDeclarationSyntax> CreateMethods<T>(string prefix,
|
||||||
|
List<IGrouping<string, (ushort, T)>> partitions,
|
||||||
|
Func<List<(ushort, T)>, StatementSyntax[]> toInitializers)
|
||||||
|
{
|
||||||
|
List<MethodDeclarationSyntax> methods =
|
||||||
|
[
|
||||||
|
MethodDeclaration(
|
||||||
|
PredefinedType(
|
||||||
|
Token(SyntaxKind.VoidKeyword)),
|
||||||
|
Identifier(prefix))
|
||||||
|
.WithModifiers(
|
||||||
|
TokenList(
|
||||||
|
Token(SyntaxKind.PrivateKeyword),
|
||||||
|
Token(SyntaxKind.StaticKeyword)))
|
||||||
|
.WithBody(
|
||||||
|
Block(
|
||||||
|
partitions
|
||||||
|
.Select(x =>
|
||||||
|
ExpressionStatement(
|
||||||
|
InvocationExpression(
|
||||||
|
IdentifierName(x.Key))))))
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach (var partition in partitions)
|
||||||
|
{
|
||||||
|
methods.Add(MethodDeclaration(
|
||||||
|
PredefinedType(
|
||||||
|
Token(SyntaxKind.VoidKeyword)),
|
||||||
|
Identifier(partition.Key))
|
||||||
|
.WithModifiers(
|
||||||
|
TokenList(
|
||||||
|
Token(SyntaxKind.PrivateKeyword),
|
||||||
|
Token(SyntaxKind.StaticKeyword)))
|
||||||
|
.WithBody(
|
||||||
|
Block(toInitializers(partition.ToList()))));
|
||||||
|
}
|
||||||
|
|
||||||
|
return methods;
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
"Author": "liza",
|
"Author": "liza",
|
||||||
"Disabled": true,
|
|
||||||
"QuestSequence": [
|
"QuestSequence": [
|
||||||
{
|
{
|
||||||
"Sequence": 0,
|
"Sequence": 0,
|
||||||
@ -24,6 +23,183 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1001739,
|
||||||
|
"Position": {
|
||||||
|
"X": -94.529724,
|
||||||
|
"Y": 6.4999976,
|
||||||
|
"Z": 39.81079
|
||||||
|
},
|
||||||
|
"TerritoryId": 131,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"DialogueChoices": [
|
||||||
|
{
|
||||||
|
"Type": "YesNo",
|
||||||
|
"Prompt": "TEXT_CLSGLA020_00253_Q2_000_1",
|
||||||
|
"Yes": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 45.13088,
|
||||||
|
"Y": 3.889354,
|
||||||
|
"Z": -166.51999
|
||||||
|
},
|
||||||
|
"TerritoryId": 130,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Ul'dah] Gladiators' Guild",
|
||||||
|
"[Ul'dah] Adventurers' Guild"
|
||||||
|
],
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
|
"InTerritory": [
|
||||||
|
141
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -116.10664,
|
||||||
|
"Y": 10.801613,
|
||||||
|
"Z": 276.979
|
||||||
|
},
|
||||||
|
"TerritoryId": 141,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "OverworldEnemies",
|
||||||
|
"ComplexCombatData": [
|
||||||
|
{
|
||||||
|
"DataId": 351,
|
||||||
|
"MinimumKillCount": 3,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
{
|
||||||
|
"Low": 3,
|
||||||
|
"Mode": "Exact"
|
||||||
|
},
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 141,
|
||||||
|
"MinimumKillCount": 3,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
"High": 3,
|
||||||
|
"Mode": "Exact"
|
||||||
|
},
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
{
|
||||||
|
"Low": 3,
|
||||||
|
"Mode": "Exact"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"High": 3,
|
||||||
|
"Mode": "Exact"
|
||||||
|
},
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 39.635372,
|
||||||
|
"Y": 3.2401803,
|
||||||
|
"Z": 273.41232
|
||||||
|
},
|
||||||
|
"TerritoryId": 141,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "OverworldEnemies",
|
||||||
|
"ComplexCombatData": [
|
||||||
|
{
|
||||||
|
"DataId": 205,
|
||||||
|
"MinimumKillCount": 3,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
"Low": 3,
|
||||||
|
"Mode": "Exact"
|
||||||
|
},
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
"Low": 3,
|
||||||
|
"Mode": "Exact"
|
||||||
|
},
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -118.17538,
|
||||||
|
"Y": 18.35357,
|
||||||
|
"Z": 341.3039
|
||||||
|
},
|
||||||
|
"TerritoryId": 141,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
|
"NotInTerritory": [
|
||||||
|
141
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1001739,
|
||||||
|
"Position": {
|
||||||
|
"X": -94.529724,
|
||||||
|
"Y": 6.4999976,
|
||||||
|
"Z": 39.81079
|
||||||
|
},
|
||||||
|
"TerritoryId": 131,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Ul'dah] Adventurers' Guild",
|
||||||
|
"[Ul'dah] Gladiators' Guild"
|
||||||
|
],
|
||||||
|
"NextQuestId": 256
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,286 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1001739,
|
||||||
|
"Position": {
|
||||||
|
"X": -94.529724,
|
||||||
|
"Y": 6.4999976,
|
||||||
|
"Z": 39.81079
|
||||||
|
},
|
||||||
|
"TerritoryId": 131,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1003990,
|
||||||
|
"Position": {
|
||||||
|
"X": 77.25635,
|
||||||
|
"Y": 4.0999947,
|
||||||
|
"Z": -138.62823
|
||||||
|
},
|
||||||
|
"TerritoryId": 130,
|
||||||
|
"InteractionType": "Emote",
|
||||||
|
"Emote": "me",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Ul'dah] Gladiators' Guild",
|
||||||
|
"[Ul'dah] Adventurers' Guild"
|
||||||
|
],
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1003984,
|
||||||
|
"Position": {
|
||||||
|
"X": 45.029297,
|
||||||
|
"Y": 3.9999998,
|
||||||
|
"Z": -128.16058
|
||||||
|
},
|
||||||
|
"TerritoryId": 130,
|
||||||
|
"InteractionType": "Emote",
|
||||||
|
"Emote": "me",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1003992,
|
||||||
|
"Position": {
|
||||||
|
"X": 12.191956,
|
||||||
|
"Y": 4.0999947,
|
||||||
|
"Z": -155.53528
|
||||||
|
},
|
||||||
|
"TerritoryId": 130,
|
||||||
|
"InteractionType": "Emote",
|
||||||
|
"Emote": "me",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1003994,
|
||||||
|
"Position": {
|
||||||
|
"X": 15.976135,
|
||||||
|
"Y": 7.9999995,
|
||||||
|
"Z": -124.071106
|
||||||
|
},
|
||||||
|
"TerritoryId": 130,
|
||||||
|
"InteractionType": "Emote",
|
||||||
|
"Emote": "me",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
16
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1004222,
|
||||||
|
"Position": {
|
||||||
|
"X": 21.927185,
|
||||||
|
"Y": 7.1999974,
|
||||||
|
"Z": -97.39838
|
||||||
|
},
|
||||||
|
"TerritoryId": 130,
|
||||||
|
"InteractionType": "Emote",
|
||||||
|
"Emote": "me"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1001353,
|
||||||
|
"Position": {
|
||||||
|
"X": 21.072632,
|
||||||
|
"Y": 7.45,
|
||||||
|
"Z": -78.78235
|
||||||
|
},
|
||||||
|
"TerritoryId": 130,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 4,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1001739,
|
||||||
|
"Position": {
|
||||||
|
"X": -94.529724,
|
||||||
|
"Y": 6.4999976,
|
||||||
|
"Z": 39.81079
|
||||||
|
},
|
||||||
|
"TerritoryId": 131,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Ul'dah] Adventurers' Guild",
|
||||||
|
"[Ul'dah] Gladiators' Guild"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 5,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -112.70276,
|
||||||
|
"Y": 7.7544775,
|
||||||
|
"Z": 9.123527
|
||||||
|
},
|
||||||
|
"TerritoryId": 131,
|
||||||
|
"InteractionType": "WalkTo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -183.00035,
|
||||||
|
"Y": 13.958975,
|
||||||
|
"Z": -13.998203
|
||||||
|
},
|
||||||
|
"TerritoryId": 130,
|
||||||
|
"InteractionType": "WalkTo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1003985,
|
||||||
|
"Position": {
|
||||||
|
"X": 201.52588,
|
||||||
|
"Y": 52.038116,
|
||||||
|
"Z": 149.40112
|
||||||
|
},
|
||||||
|
"TerritoryId": 140,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 6,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2001408,
|
||||||
|
"Position": {
|
||||||
|
"X": 154.37549,
|
||||||
|
"Y": 52.536743,
|
||||||
|
"Z": 200.91553
|
||||||
|
},
|
||||||
|
"TerritoryId": 140,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AfterInteraction",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
1246
|
||||||
|
],
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2001409,
|
||||||
|
"Position": {
|
||||||
|
"X": 141.83252,
|
||||||
|
"Y": 52.994507,
|
||||||
|
"Z": 221.54565
|
||||||
|
},
|
||||||
|
"TerritoryId": 140,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AfterInteraction",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
1390
|
||||||
|
],
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 7,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1003985,
|
||||||
|
"Position": {
|
||||||
|
"X": 201.52588,
|
||||||
|
"Y": 52.038116,
|
||||||
|
"Z": 149.40112
|
||||||
|
},
|
||||||
|
"TerritoryId": 140,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 473.74796,
|
||||||
|
"Y": 96.62057,
|
||||||
|
"Z": 159.993
|
||||||
|
},
|
||||||
|
"TerritoryId": 140,
|
||||||
|
"InteractionType": "WalkTo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -117.06801,
|
||||||
|
"Y": 9.195247,
|
||||||
|
"Z": 9.181297
|
||||||
|
},
|
||||||
|
"TerritoryId": 130,
|
||||||
|
"InteractionType": "WalkTo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1001739,
|
||||||
|
"Position": {
|
||||||
|
"X": -94.529724,
|
||||||
|
"Y": 6.4999976,
|
||||||
|
"Z": 39.81079
|
||||||
|
},
|
||||||
|
"TerritoryId": 131,
|
||||||
|
"InteractionType": "CompleteQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -37,16 +37,18 @@
|
|||||||
"SkipConditions": {
|
"SkipConditions": {
|
||||||
"AetheryteShortcutIf": {
|
"AetheryteShortcutIf": {
|
||||||
"InSameTerritory": true
|
"InSameTerritory": true
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2002380,
|
"DataId": 2002380,
|
||||||
@ -76,14 +78,18 @@
|
|||||||
"TerritoryId": 180,
|
"TerritoryId": 180,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2002379,
|
"DataId": 2002379,
|
||||||
@ -112,14 +118,18 @@
|
|||||||
"TerritoryId": 180,
|
"TerritoryId": 180,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-16
|
16
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2002382,
|
"DataId": 2002382,
|
||||||
@ -148,14 +158,18 @@
|
|||||||
"TerritoryId": 180,
|
"TerritoryId": 180,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2002381,
|
"DataId": 2002381,
|
||||||
|
@ -65,14 +65,18 @@
|
|||||||
"TerritoryId": 139,
|
"TerritoryId": 139,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Mount": true,
|
"Mount": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1007844,
|
"DataId": 1007844,
|
||||||
@ -120,16 +124,16 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 139,
|
"TerritoryId": 139,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
],
|
],
|
||||||
"SkipConditions": {
|
|
||||||
"StepIf": {
|
|
||||||
"Flying": "Unlocked"
|
"Flying": "Unlocked"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,18 +28,20 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 155,
|
"TerritoryId": 155,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true
|
||||||
|
},
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
],
|
]
|
||||||
"AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead",
|
|
||||||
"SkipConditions": {
|
|
||||||
"AetheryteShortcutIf": {
|
|
||||||
"InSameTerritory": true
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Fly": true
|
"Fly": true
|
||||||
@ -56,14 +58,18 @@
|
|||||||
"KillEnemyDataIds": [
|
"KillEnemyDataIds": [
|
||||||
1918
|
1918
|
||||||
],
|
],
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2002308,
|
"DataId": 2002308,
|
||||||
@ -127,14 +133,18 @@
|
|||||||
"InteractionType": "UseItem",
|
"InteractionType": "UseItem",
|
||||||
"ItemId": 30362,
|
"ItemId": 30362,
|
||||||
"TargetTerritoryId": 140,
|
"TargetTerritoryId": 140,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -148,14 +158,18 @@
|
|||||||
"KillEnemyDataIds": [
|
"KillEnemyDataIds": [
|
||||||
1920
|
1920
|
||||||
],
|
],
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2002310,
|
"DataId": 2002310,
|
||||||
|
@ -65,14 +65,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 148,
|
"TerritoryId": 148,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -83,14 +87,18 @@
|
|||||||
"TerritoryId": 148,
|
"TerritoryId": 148,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2000748,
|
"DataId": 2000748,
|
||||||
@ -120,14 +128,18 @@
|
|||||||
"TerritoryId": 148,
|
"TerritoryId": 148,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-16
|
16
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -137,14 +149,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 148,
|
"TerritoryId": 148,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-16
|
16
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2000751,
|
"DataId": 2000751,
|
||||||
|
@ -36,14 +36,18 @@
|
|||||||
},
|
},
|
||||||
"StopDistance": 3
|
"StopDistance": 3
|
||||||
},
|
},
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-8
|
8
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1002639,
|
"DataId": 1002639,
|
||||||
|
@ -64,14 +64,18 @@
|
|||||||
},
|
},
|
||||||
"StopDistance": 5
|
"StopDistance": 5
|
||||||
},
|
},
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-16
|
16
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1004506,
|
"DataId": 1004506,
|
||||||
|
@ -65,14 +65,18 @@
|
|||||||
"TerritoryId": 141,
|
"TerritoryId": 141,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": false,
|
"DisableNavmesh": false,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1004599,
|
"DataId": 1004599,
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
"TerritoryId": 139,
|
"TerritoryId": 139,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"Mount": true,
|
||||||
"Comment": "Avoids swimming"
|
"Comment": "Avoids swimming"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -63,14 +63,18 @@
|
|||||||
},
|
},
|
||||||
"DelaySeconds": 0.25
|
"DelaySeconds": 0.25
|
||||||
},
|
},
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-8
|
8
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2001953,
|
"DataId": 2001953,
|
||||||
@ -92,6 +96,27 @@
|
|||||||
8
|
8
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -103.87269,
|
||||||
|
"Y": 5.116502,
|
||||||
|
"Z": -73.9041
|
||||||
|
},
|
||||||
|
"TerritoryId": 153,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
"X": -90.467575,
|
"X": -90.467575,
|
||||||
@ -109,14 +134,18 @@
|
|||||||
},
|
},
|
||||||
"DelaySeconds": 0.25
|
"DelaySeconds": 0.25
|
||||||
},
|
},
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2001951,
|
"DataId": 2001951,
|
||||||
@ -146,14 +175,18 @@
|
|||||||
"TerritoryId": 153,
|
"TerritoryId": 153,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-16
|
16
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -163,14 +196,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 153,
|
"TerritoryId": 153,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-16
|
16
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2001952,
|
"DataId": 2001952,
|
||||||
|
@ -20,6 +20,17 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 1,
|
"Sequence": 1,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -119.1183,
|
||||||
|
"Y": 3.7999938,
|
||||||
|
"Z": -104.33473
|
||||||
|
},
|
||||||
|
"TerritoryId": 130,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"AetheryteShortcut": "Ul'dah",
|
||||||
|
"$": "Ul'dah Aetheryte to Immortal Flames"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1004576,
|
"DataId": 1004576,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -28,8 +39,7 @@
|
|||||||
"Z": -114.67157
|
"Z": -114.67157
|
||||||
},
|
},
|
||||||
"TerritoryId": 130,
|
"TerritoryId": 130,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact"
|
||||||
"AetheryteShortcut": "Ul'dah"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -26,6 +26,49 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 1,
|
"Sequence": 1,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -179.69392,
|
||||||
|
"Y": 18.008331,
|
||||||
|
"Z": -279.60886
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -184.29613,
|
||||||
|
"Y": 3.5985415,
|
||||||
|
"Z": -246.7013
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1006702,
|
"DataId": 1006702,
|
||||||
"Position": {
|
"Position": {
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
"Y": 26.138475,
|
"Y": 26.138475,
|
||||||
"Z": -355.0622
|
"Z": -355.0622
|
||||||
},
|
},
|
||||||
|
"StopDistance": 7,
|
||||||
"TerritoryId": 146,
|
"TerritoryId": 146,
|
||||||
"InteractionType": "AcceptQuest",
|
"InteractionType": "AcceptQuest",
|
||||||
"AetheryteShortcut": "Southern Thanalan - Little Ala Mhigo",
|
"AetheryteShortcut": "Southern Thanalan - Little Ala Mhigo",
|
||||||
@ -53,6 +54,7 @@
|
|||||||
"Y": 19.02249,
|
"Y": 19.02249,
|
||||||
"Z": -557.8546
|
"Z": -557.8546
|
||||||
},
|
},
|
||||||
|
"StopDistance": 7,
|
||||||
"TerritoryId": 146,
|
"TerritoryId": 146,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
|
@ -71,14 +71,18 @@
|
|||||||
725,
|
725,
|
||||||
726
|
726
|
||||||
],
|
],
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2002261,
|
"DataId": 2002261,
|
||||||
|
@ -64,14 +64,18 @@
|
|||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"$": "NW Skyfire Locks door (inside)",
|
"$": "NW Skyfire Locks door (inside)",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1006396,
|
"DataId": 1006396,
|
||||||
|
@ -34,14 +34,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 138,
|
"TerritoryId": 138,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -52,14 +56,18 @@
|
|||||||
"TerritoryId": 138,
|
"TerritoryId": 138,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1006500,
|
"DataId": 1006500,
|
||||||
|
@ -94,14 +94,18 @@
|
|||||||
"TerritoryId": 156,
|
"TerritoryId": 156,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Comment": "Avoids pit",
|
"Comment": "Avoids pit",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -112,14 +116,18 @@
|
|||||||
"TerritoryId": 156,
|
"TerritoryId": 156,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Comment": "Move into LOS",
|
"Comment": "Move into LOS",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2002230,
|
"DataId": 2002230,
|
||||||
|
@ -68,14 +68,18 @@
|
|||||||
"TerritoryId": 351,
|
"TerritoryId": 351,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
"TargetTerritoryId": 156,
|
"TargetTerritoryId": 156,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-2
|
2
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1009147,
|
"DataId": 1009147,
|
||||||
|
@ -76,14 +76,18 @@
|
|||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
"AetheryteShortcut": "Upper La Noscea - Camp Bronze Lake",
|
"AetheryteShortcut": "Upper La Noscea - Camp Bronze Lake",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -94,14 +98,18 @@
|
|||||||
"TerritoryId": 139,
|
"TerritoryId": 139,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"TargetTerritoryId": 180,
|
"TargetTerritoryId": 180,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -112,27 +120,35 @@
|
|||||||
"TerritoryId": 180,
|
"TerritoryId": 180,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"TerritoryId": 180,
|
"TerritoryId": 180,
|
||||||
"InteractionType": "AttuneAetheryte",
|
"InteractionType": "AttuneAetheryte",
|
||||||
"Aetheryte": "Outer La Noscea - Camp Overlook",
|
"Aetheryte": "Outer La Noscea - Camp Overlook",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -143,14 +159,18 @@
|
|||||||
"TerritoryId": 180,
|
"TerritoryId": 180,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -161,14 +181,18 @@
|
|||||||
"TerritoryId": 180,
|
"TerritoryId": 180,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -179,14 +203,18 @@
|
|||||||
"TerritoryId": 180,
|
"TerritoryId": 180,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2000075,
|
"DataId": 2000075,
|
||||||
@ -221,14 +249,18 @@
|
|||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
"AetheryteShortcut": "Western La Noscea - Aleport",
|
"AetheryteShortcut": "Western La Noscea - Aleport",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2000076,
|
"DataId": 2000076,
|
||||||
|
@ -28,14 +28,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 180,
|
"TerritoryId": 180,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2003715,
|
"DataId": 2003715,
|
||||||
|
@ -28,14 +28,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 400,
|
"TerritoryId": 400,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -46,14 +50,18 @@
|
|||||||
"TerritoryId": 400,
|
"TerritoryId": 400,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -63,14 +71,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 400,
|
"TerritoryId": 400,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1013424,
|
"DataId": 1013424,
|
||||||
@ -118,14 +130,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 400,
|
"TerritoryId": 400,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -144,14 +160,18 @@
|
|||||||
"Z": 380.9018
|
"Z": 380.9018
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1013421,
|
"DataId": 1013421,
|
||||||
|
@ -28,14 +28,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -46,14 +50,18 @@
|
|||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -64,14 +72,18 @@
|
|||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1011932,
|
"DataId": 1011932,
|
||||||
@ -99,14 +111,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -117,14 +133,18 @@
|
|||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1011924,
|
"DataId": 1011924,
|
||||||
|
@ -34,14 +34,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -52,14 +56,18 @@
|
|||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -70,14 +78,18 @@
|
|||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1011932,
|
"DataId": 1011932,
|
||||||
@ -106,14 +118,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -124,14 +140,18 @@
|
|||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1011924,
|
"DataId": 1011924,
|
||||||
|
@ -29,14 +29,18 @@
|
|||||||
"TerritoryId": 401,
|
"TerritoryId": 401,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Mount": true,
|
"Mount": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -47,14 +51,18 @@
|
|||||||
"TerritoryId": 401,
|
"TerritoryId": 401,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1013498,
|
"DataId": 1013498,
|
||||||
|
@ -86,14 +86,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 418,
|
"TerritoryId": 418,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -104,14 +108,18 @@
|
|||||||
"TerritoryId": 418,
|
"TerritoryId": 418,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1012251,
|
"DataId": 1012251,
|
||||||
|
@ -64,14 +64,18 @@
|
|||||||
null,
|
null,
|
||||||
null
|
null
|
||||||
],
|
],
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2009361,
|
"DataId": 2009361,
|
||||||
@ -160,14 +164,18 @@
|
|||||||
null,
|
null,
|
||||||
null
|
null
|
||||||
],
|
],
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2009360,
|
"DataId": 2009360,
|
||||||
@ -253,14 +261,18 @@
|
|||||||
null,
|
null,
|
||||||
null
|
null
|
||||||
],
|
],
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2009359,
|
"DataId": 2009359,
|
||||||
@ -346,14 +358,18 @@
|
|||||||
null,
|
null,
|
||||||
null
|
null
|
||||||
],
|
],
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-4
|
4
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2009364,
|
"DataId": 2009364,
|
||||||
@ -436,14 +452,18 @@
|
|||||||
null,
|
null,
|
||||||
null
|
null
|
||||||
],
|
],
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-8
|
8
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2009363,
|
"DataId": 2009363,
|
||||||
@ -529,14 +549,18 @@
|
|||||||
null,
|
null,
|
||||||
null
|
null
|
||||||
],
|
],
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-16
|
16
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2009362,
|
"DataId": 2009362,
|
||||||
|
@ -63,14 +63,18 @@
|
|||||||
"TerritoryId": 813,
|
"TerritoryId": 813,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Mount": true,
|
"Mount": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -81,14 +85,18 @@
|
|||||||
"TerritoryId": 813,
|
"TerritoryId": 813,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1027339,
|
"DataId": 1027339,
|
||||||
@ -116,14 +124,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 813,
|
"TerritoryId": 813,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -133,14 +145,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 813,
|
"TerritoryId": 813,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -150,14 +166,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 813,
|
"TerritoryId": 813,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1027420,
|
"DataId": 1027420,
|
||||||
|
@ -29,14 +29,18 @@
|
|||||||
"TerritoryId": 813,
|
"TerritoryId": 813,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Comment": "Tower Bottom",
|
"Comment": "Tower Bottom",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -48,14 +52,18 @@
|
|||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
"Comment": "Tower Bottom Platform 1",
|
"Comment": "Tower Bottom Platform 1",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2010618,
|
"DataId": 2010618,
|
||||||
|
@ -74,14 +74,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 813,
|
"TerritoryId": 813,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1028952,
|
"DataId": 1028952,
|
||||||
|
@ -28,14 +28,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 816,
|
"TerritoryId": 816,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2009820,
|
"DataId": 2009820,
|
||||||
@ -66,14 +70,18 @@
|
|||||||
"TerritoryId": 816,
|
"TerritoryId": 816,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2009819,
|
"DataId": 2009819,
|
||||||
|
@ -46,14 +46,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 816,
|
"TerritoryId": 816,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -64,14 +68,18 @@
|
|||||||
"TerritoryId": 816,
|
"TerritoryId": 816,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2009831,
|
"DataId": 2009831,
|
||||||
|
@ -150,14 +150,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 816,
|
"TerritoryId": 816,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -168,14 +172,18 @@
|
|||||||
"TerritoryId": 816,
|
"TerritoryId": 816,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2009836,
|
"DataId": 2009836,
|
||||||
@ -214,14 +222,18 @@
|
|||||||
},
|
},
|
||||||
"DelaySeconds": 0.2
|
"DelaySeconds": 0.2
|
||||||
},
|
},
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -241,14 +253,18 @@
|
|||||||
},
|
},
|
||||||
"DelaySeconds": 0.1
|
"DelaySeconds": 0.1
|
||||||
},
|
},
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -268,14 +284,18 @@
|
|||||||
},
|
},
|
||||||
"DelaySeconds": 0.1
|
"DelaySeconds": 0.1
|
||||||
},
|
},
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -295,14 +315,18 @@
|
|||||||
},
|
},
|
||||||
"DelaySeconds": 0.2
|
"DelaySeconds": 0.2
|
||||||
},
|
},
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2009835,
|
"DataId": 2009835,
|
||||||
|
@ -79,14 +79,18 @@
|
|||||||
"StopDistance": 2,
|
"StopDistance": 2,
|
||||||
"Type": "RepeatedJumps"
|
"Type": "RepeatedJumps"
|
||||||
},
|
},
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-16
|
16
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2009890,
|
"DataId": 2009890,
|
||||||
@ -128,14 +132,18 @@
|
|||||||
"StopDistance": 2,
|
"StopDistance": 2,
|
||||||
"Type": "RepeatedJumps"
|
"Type": "RepeatedJumps"
|
||||||
},
|
},
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2009887,
|
"DataId": 2009887,
|
||||||
@ -166,14 +174,18 @@
|
|||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
"Mount": true,
|
"Mount": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -196,14 +208,18 @@
|
|||||||
"StopDistance": 2,
|
"StopDistance": 2,
|
||||||
"Type": "RepeatedJumps"
|
"Type": "RepeatedJumps"
|
||||||
},
|
},
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2009888,
|
"DataId": 2009888,
|
||||||
@ -245,14 +261,18 @@
|
|||||||
"StopDistance": 2,
|
"StopDistance": 2,
|
||||||
"Type": "RepeatedJumps"
|
"Type": "RepeatedJumps"
|
||||||
},
|
},
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2009889,
|
"DataId": 2009889,
|
||||||
|
@ -60,14 +60,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 814,
|
"TerritoryId": 814,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2010088,
|
"DataId": 2010088,
|
||||||
@ -114,14 +118,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 814,
|
"TerritoryId": 814,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2010089,
|
"DataId": 2010089,
|
||||||
|
@ -48,14 +48,18 @@
|
|||||||
"TerritoryId": 819,
|
"TerritoryId": 819,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1027246,
|
"DataId": 1027246,
|
||||||
|
@ -29,14 +29,18 @@
|
|||||||
"TerritoryId": 816,
|
"TerritoryId": 816,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2010856,
|
"DataId": 2010856,
|
||||||
@ -83,14 +87,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 816,
|
"TerritoryId": 816,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2010857,
|
"DataId": 2010857,
|
||||||
|
@ -31,7 +31,35 @@
|
|||||||
"InteractionType": "UseItem",
|
"InteractionType": "UseItem",
|
||||||
"ItemId": 2002943,
|
"ItemId": 2002943,
|
||||||
"AetheryteShortcut": "Il Mheg - Pia Enni",
|
"AetheryteShortcut": "Il Mheg - Pia Enni",
|
||||||
"Fly": true
|
"Fly": true,
|
||||||
|
"RequiredQuestVariables": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[1],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1032202,
|
||||||
|
"Position": {
|
||||||
|
"X": 10.849121,
|
||||||
|
"Y": 100.161,
|
||||||
|
"Z": -886.22876
|
||||||
|
},
|
||||||
|
"TerritoryId": 816,
|
||||||
|
"InteractionType": "UseItem",
|
||||||
|
"ItemId": 2002943,
|
||||||
|
"Fly": true,
|
||||||
|
"RequiredQuestVariables": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[2],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -0,0 +1,3 @@
|
|||||||
|
0 0 ? 0 0 0
|
||||||
|
1 → 1032203
|
||||||
|
2 → 1032202
|
27
QuestPaths/6.x - Endwalker/4807_DebugGathering.json
Normal file
27
QuestPaths/6.x - Endwalker/4807_DebugGathering.json
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -435.39066,
|
||||||
|
"Y": -9.809827,
|
||||||
|
"Z": -594.5472
|
||||||
|
},
|
||||||
|
"TerritoryId": 1187,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true,
|
||||||
|
"RequiredGatheredItems": [
|
||||||
|
{
|
||||||
|
"ItemId": 43992,
|
||||||
|
"ItemCount": 1234
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -29,14 +29,18 @@
|
|||||||
"StopDistance": 1,
|
"StopDistance": 1,
|
||||||
"TerritoryId": 959,
|
"TerritoryId": 959,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -56,14 +60,18 @@
|
|||||||
},
|
},
|
||||||
"Mount": false,
|
"Mount": false,
|
||||||
"Comment": "Platform 1",
|
"Comment": "Platform 1",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -82,14 +90,18 @@
|
|||||||
"DelaySeconds": 0.25
|
"DelaySeconds": 0.25
|
||||||
},
|
},
|
||||||
"Comment": "Platform 2",
|
"Comment": "Platform 2",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -108,14 +120,18 @@
|
|||||||
"DelaySeconds": 0.25
|
"DelaySeconds": 0.25
|
||||||
},
|
},
|
||||||
"Comment": "Platform 3",
|
"Comment": "Platform 3",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -134,14 +150,18 @@
|
|||||||
"DelaySeconds": 0.25
|
"DelaySeconds": 0.25
|
||||||
},
|
},
|
||||||
"Comment": "Platform 4",
|
"Comment": "Platform 4",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -160,14 +180,18 @@
|
|||||||
"DelaySeconds": 0.25
|
"DelaySeconds": 0.25
|
||||||
},
|
},
|
||||||
"Comment": "Platform 5",
|
"Comment": "Platform 5",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -186,14 +210,18 @@
|
|||||||
"DelaySeconds": 0.25
|
"DelaySeconds": 0.25
|
||||||
},
|
},
|
||||||
"Comment": "Platform 6",
|
"Comment": "Platform 6",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -204,14 +232,18 @@
|
|||||||
"TerritoryId": 959,
|
"TerritoryId": 959,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1041789,
|
"DataId": 1041789,
|
||||||
@ -287,14 +319,18 @@
|
|||||||
},
|
},
|
||||||
"Mount": false,
|
"Mount": false,
|
||||||
"Comment": "Platform 1",
|
"Comment": "Platform 1",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -314,14 +350,18 @@
|
|||||||
"DelaySeconds": 0.25
|
"DelaySeconds": 0.25
|
||||||
},
|
},
|
||||||
"Comment": "Platform 2",
|
"Comment": "Platform 2",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -341,14 +381,18 @@
|
|||||||
"DelaySeconds": 0.25
|
"DelaySeconds": 0.25
|
||||||
},
|
},
|
||||||
"Comment": "Platform 3",
|
"Comment": "Platform 3",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -368,14 +412,18 @@
|
|||||||
"DelaySeconds": 0.25
|
"DelaySeconds": 0.25
|
||||||
},
|
},
|
||||||
"Comment": "Platform 4",
|
"Comment": "Platform 4",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -395,14 +443,18 @@
|
|||||||
"DelaySeconds": 0.25
|
"DelaySeconds": 0.25
|
||||||
},
|
},
|
||||||
"Comment": "Platform 5",
|
"Comment": "Platform 5",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -422,14 +474,18 @@
|
|||||||
"DelaySeconds": 0.25
|
"DelaySeconds": 0.25
|
||||||
},
|
},
|
||||||
"Comment": "Platform 6",
|
"Comment": "Platform 6",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1041791,
|
"DataId": 1041791,
|
||||||
|
@ -61,14 +61,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2011914,
|
"DataId": 2011914,
|
||||||
|
@ -74,7 +74,7 @@
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
],
|
],
|
||||||
"$": "QuestVariables after killing enemy: 17 1 0 0 0 64"
|
"$": "QuestVariables after killing enemy: 17 1 0 0 0 64"
|
||||||
},
|
},
|
||||||
|
@ -66,14 +66,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1037715,
|
"DataId": 1037715,
|
||||||
|
@ -112,14 +112,18 @@
|
|||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Mount": true,
|
"Mount": true,
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2012111,
|
"DataId": 2012111,
|
||||||
@ -180,14 +184,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
],
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
"Comment": "Avoids combat"
|
"Comment": "Avoids combat"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -219,14 +227,18 @@
|
|||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Comment": "Avoids combat",
|
"Comment": "Avoids combat",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-16
|
16
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2012110,
|
"DataId": 2012110,
|
||||||
|
@ -60,14 +60,18 @@
|
|||||||
"TerritoryId": 963,
|
"TerritoryId": 963,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
],
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
"Sprint": true
|
"Sprint": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -71,14 +71,18 @@
|
|||||||
"Z": -1.1141448
|
"Z": -1.1141448
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-16
|
16
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2012128,
|
"DataId": 2012128,
|
||||||
|
@ -109,14 +109,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 960,
|
"TerritoryId": 960,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2012354,
|
"DataId": 2012354,
|
||||||
|
@ -51,14 +51,18 @@
|
|||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"AetheryteShortcut": "Thavnair - Yedlihmad",
|
"AetheryteShortcut": "Thavnair - Yedlihmad",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1037631,
|
"DataId": 1037631,
|
||||||
|
@ -97,14 +97,18 @@
|
|||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1037655,
|
"DataId": 1037655,
|
||||||
@ -151,14 +155,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1037708,
|
"DataId": 1037708,
|
||||||
@ -169,15 +177,19 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -68,14 +68,18 @@
|
|||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2012455,
|
"DataId": 2012455,
|
||||||
@ -105,14 +109,18 @@
|
|||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2012457,
|
"DataId": 2012457,
|
||||||
@ -141,14 +149,18 @@
|
|||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2012456,
|
"DataId": 2012456,
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1038500,
|
||||||
|
"Position": {
|
||||||
|
"X": -357.83936,
|
||||||
|
"Y": 21.84602,
|
||||||
|
"Z": -91.32526
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1038500,
|
||||||
|
"Position": {
|
||||||
|
"X": -357.83936,
|
||||||
|
"Y": 21.84602,
|
||||||
|
"Z": -91.32526
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "CompleteQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,68 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1038504,
|
||||||
|
"Position": {
|
||||||
|
"X": -357.62573,
|
||||||
|
"Y": 21.64856,
|
||||||
|
"Z": -95.99457
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1038505,
|
||||||
|
"Position": {
|
||||||
|
"X": -376.45538,
|
||||||
|
"Y": 18.999998,
|
||||||
|
"Z": 37.00305
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1038503,
|
||||||
|
"Position": {
|
||||||
|
"X": -367.0863,
|
||||||
|
"Y": 21.84602,
|
||||||
|
"Z": -101.701416
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1038501,
|
||||||
|
"Position": {
|
||||||
|
"X": -367.3305,
|
||||||
|
"Y": 21.846018,
|
||||||
|
"Z": -102.983154
|
||||||
|
},
|
||||||
|
"StopDistance": 7,
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"NextQuestId": 4154
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1038501,
|
||||||
|
"Position": {
|
||||||
|
"X": -367.3305,
|
||||||
|
"Y": 21.846018,
|
||||||
|
"Z": -102.983154
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1038501,
|
||||||
|
"Position": {
|
||||||
|
"X": -367.3305,
|
||||||
|
"Y": 21.846018,
|
||||||
|
"Z": -102.983154
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AetheryteShortcut": "Old Sharlayan",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Old Sharlayan] Aetheryte Plaza",
|
||||||
|
"[Old Sharlayan] The Studium"
|
||||||
|
],
|
||||||
|
"RequiredGatheredItems": [
|
||||||
|
{
|
||||||
|
"ItemId": 35600,
|
||||||
|
"ItemCount": 6,
|
||||||
|
"Collectability": 600
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"NextQuestId": 4155
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1038501,
|
||||||
|
"Position": {
|
||||||
|
"X": -367.3305,
|
||||||
|
"Y": 21.846018,
|
||||||
|
"Z": -102.983154
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1038501,
|
||||||
|
"Position": {
|
||||||
|
"X": -367.3305,
|
||||||
|
"Y": 21.846018,
|
||||||
|
"Z": -102.983154
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AetheryteShortcut": "Old Sharlayan",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Old Sharlayan] Aetheryte Plaza",
|
||||||
|
"[Old Sharlayan] The Studium"
|
||||||
|
],
|
||||||
|
"RequiredGatheredItems": [
|
||||||
|
{
|
||||||
|
"ItemId": 35601,
|
||||||
|
"ItemCount": 6,
|
||||||
|
"Collectability": 600
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"NextQuestId": 4156
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1038501,
|
||||||
|
"Position": {
|
||||||
|
"X": -367.3305,
|
||||||
|
"Y": 21.846018,
|
||||||
|
"Z": -102.983154
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1038501,
|
||||||
|
"Position": {
|
||||||
|
"X": -367.3305,
|
||||||
|
"Y": 21.846018,
|
||||||
|
"Z": -102.983154
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AetheryteShortcut": "Old Sharlayan",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Old Sharlayan] Aetheryte Plaza",
|
||||||
|
"[Old Sharlayan] The Studium"
|
||||||
|
],
|
||||||
|
"RequiredGatheredItems": [
|
||||||
|
{
|
||||||
|
"ItemId": 35602,
|
||||||
|
"ItemCount": 6,
|
||||||
|
"Collectability": 600
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"NextQuestId": 4157
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1038501,
|
||||||
|
"Position": {
|
||||||
|
"X": -367.3305,
|
||||||
|
"Y": 21.846018,
|
||||||
|
"Z": -102.983154
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -45,14 +45,18 @@
|
|||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
"Land": true,
|
"Land": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1042372,
|
"DataId": 1042372,
|
||||||
@ -84,14 +88,18 @@
|
|||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
"Land": true,
|
"Land": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1042371,
|
"DataId": 1042371,
|
||||||
@ -123,14 +131,18 @@
|
|||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
"Land": true,
|
"Land": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1042373,
|
"DataId": 1042373,
|
||||||
|
@ -45,14 +45,18 @@
|
|||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
"Land": true,
|
"Land": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2012887,
|
"DataId": 2012887,
|
||||||
@ -84,14 +88,18 @@
|
|||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
"Land": true,
|
"Land": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2012888,
|
"DataId": 2012888,
|
||||||
@ -123,14 +131,18 @@
|
|||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
"Land": true,
|
"Land": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2012889,
|
"DataId": 2012889,
|
||||||
@ -149,7 +161,7 @@
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -29,14 +29,18 @@
|
|||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2012902,
|
"DataId": 2012902,
|
||||||
@ -66,14 +70,18 @@
|
|||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2012901,
|
"DataId": 2012901,
|
||||||
@ -103,14 +111,18 @@
|
|||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2012900,
|
"DataId": 2012900,
|
||||||
|
@ -30,14 +30,18 @@
|
|||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2012907,
|
"DataId": 2012907,
|
||||||
|
@ -34,14 +34,18 @@
|
|||||||
"[Radz-at-Han] The Gate of First Sight (Thavnair)"
|
"[Radz-at-Han] The Gate of First Sight (Thavnair)"
|
||||||
],
|
],
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1042462,
|
"DataId": 1042462,
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
"Author": "liza",
|
"Author": "liza",
|
||||||
"Disabled": true,
|
|
||||||
"QuestSequence": [
|
"QuestSequence": [
|
||||||
{
|
{
|
||||||
"Sequence": 0,
|
"Sequence": 0,
|
||||||
@ -21,7 +20,71 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 1,
|
"Sequence": 1,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2012915,
|
||||||
|
"Position": {
|
||||||
|
"X": -383.505,
|
||||||
|
"Y": 1.0527954,
|
||||||
|
"Z": 362.99683
|
||||||
|
},
|
||||||
|
"TerritoryId": 957,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AfterInteraction",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
14680
|
||||||
|
],
|
||||||
|
"Fly": true,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2012914,
|
||||||
|
"Position": {
|
||||||
|
"X": -399.83215,
|
||||||
|
"Y": 1.6326294,
|
||||||
|
"Z": 291.73718
|
||||||
|
},
|
||||||
|
"TerritoryId": 957,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2012913,
|
||||||
|
"Position": {
|
||||||
|
"X": -444.0528,
|
||||||
|
"Y": 0.38146973,
|
||||||
|
"Z": 249.53076
|
||||||
|
},
|
||||||
|
"TerritoryId": 957,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AfterInteraction",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
14680
|
||||||
|
],
|
||||||
|
"Fly": true,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -0,0 +1,134 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1042300,
|
||||||
|
"Position": {
|
||||||
|
"X": -76.82922,
|
||||||
|
"Y": 39.977543,
|
||||||
|
"Z": 309.98706
|
||||||
|
},
|
||||||
|
"TerritoryId": 957,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1042336,
|
||||||
|
"Position": {
|
||||||
|
"X": 409.964,
|
||||||
|
"Y": 18.253498,
|
||||||
|
"Z": -461.53967
|
||||||
|
},
|
||||||
|
"TerritoryId": 957,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Thavnair - Palaka's Stand",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2012970,
|
||||||
|
"Position": {
|
||||||
|
"X": 197.4364,
|
||||||
|
"Y": 9.323181,
|
||||||
|
"Z": -438.71216
|
||||||
|
},
|
||||||
|
"TerritoryId": 957,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2012924,
|
||||||
|
"Position": {
|
||||||
|
"X": 179.33923,
|
||||||
|
"Y": 7.309021,
|
||||||
|
"Z": -392.44684
|
||||||
|
},
|
||||||
|
"TerritoryId": 957,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AfterInteraction",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
14683
|
||||||
|
],
|
||||||
|
"Fly": true,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1042339,
|
||||||
|
"Position": {
|
||||||
|
"X": 145.95251,
|
||||||
|
"Y": 9.608223,
|
||||||
|
"Z": -234.24127
|
||||||
|
},
|
||||||
|
"TerritoryId": 957,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 4,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1042343,
|
||||||
|
"Position": {
|
||||||
|
"X": 142.53455,
|
||||||
|
"Y": 10.132848,
|
||||||
|
"Z": -232.89844
|
||||||
|
},
|
||||||
|
"StopDistance": 7,
|
||||||
|
"TerritoryId": 957,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1042300,
|
||||||
|
"Position": {
|
||||||
|
"X": -76.82922,
|
||||||
|
"Y": 39.977543,
|
||||||
|
"Z": 309.98706
|
||||||
|
},
|
||||||
|
"TerritoryId": 957,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AetheryteShortcut": "Thavnair - Yedlihmad",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -111,14 +111,18 @@
|
|||||||
},
|
},
|
||||||
"DelaySeconds": 0.25
|
"DelaySeconds": 0.25
|
||||||
},
|
},
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-64
|
64
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2014134,
|
"DataId": 2014134,
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1047095,
|
||||||
|
"Position": {
|
||||||
|
"X": 139.5437,
|
||||||
|
"Y": -13.99,
|
||||||
|
"Z": 10.60498
|
||||||
|
},
|
||||||
|
"TerritoryId": 1185,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1047095,
|
||||||
|
"Position": {
|
||||||
|
"X": 139.5437,
|
||||||
|
"Y": -13.99,
|
||||||
|
"Z": 10.60498
|
||||||
|
},
|
||||||
|
"TerritoryId": 1185,
|
||||||
|
"InteractionType": "CompleteQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1047151,
|
||||||
|
"Position": {
|
||||||
|
"X": 130.2052,
|
||||||
|
"Y": -14,
|
||||||
|
"Z": 16.952698
|
||||||
|
},
|
||||||
|
"TerritoryId": 1185,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1047164,
|
||||||
|
"Position": {
|
||||||
|
"X": 217.21204,
|
||||||
|
"Y": -14,
|
||||||
|
"Z": -8.316223
|
||||||
|
},
|
||||||
|
"TerritoryId": 1185,
|
||||||
|
"InteractionType": "CompleteQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1047132,
|
||||||
|
"Position": {
|
||||||
|
"X": 217.36475,
|
||||||
|
"Y": -14.000001,
|
||||||
|
"Z": -5.6916504
|
||||||
|
},
|
||||||
|
"TerritoryId": 1185,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1047132,
|
||||||
|
"Position": {
|
||||||
|
"X": 217.36475,
|
||||||
|
"Y": -14.000001,
|
||||||
|
"Z": -5.6916504
|
||||||
|
},
|
||||||
|
"TerritoryId": 1185,
|
||||||
|
"InteractionType": "CompleteQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -47,14 +47,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 1187,
|
"TerritoryId": 1187,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1046874,
|
"DataId": 1046874,
|
||||||
|
@ -142,14 +142,18 @@
|
|||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
"Mount": true,
|
"Mount": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2013653,
|
"DataId": 2013653,
|
||||||
@ -177,14 +181,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 1189,
|
"TerritoryId": 1189,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2013655,
|
"DataId": 2013655,
|
||||||
|
@ -113,14 +113,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 1191,
|
"TerritoryId": 1191,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2013819,
|
"DataId": 2013819,
|
||||||
|
@ -131,14 +131,18 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 1192,
|
"TerritoryId": 1192,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-16
|
16
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1047904,
|
"DataId": 1047904,
|
||||||
|
@ -29,14 +29,18 @@
|
|||||||
"TerritoryId": 1191,
|
"TerritoryId": 1191,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-128
|
128
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2014091,
|
"DataId": 2014091,
|
||||||
@ -85,14 +89,18 @@
|
|||||||
"TerritoryId": 1191,
|
"TerritoryId": 1191,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2014093,
|
"DataId": 2014093,
|
||||||
|
@ -31,17 +31,17 @@
|
|||||||
"Fly": true,
|
"Fly": true,
|
||||||
"SkipConditions": {
|
"SkipConditions": {
|
||||||
"StepIf": {
|
"StepIf": {
|
||||||
"Flying": "Locked"
|
"Flying": "Locked",
|
||||||
}
|
|
||||||
},
|
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
-32
|
32
|
||||||
]
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2014184,
|
"DataId": 2014184,
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user