Compare commits

..

No commits in common. "master" and "master" have entirely different histories.

155 changed files with 833 additions and 4217 deletions

6
.gitmodules vendored
View File

@ -1,9 +1,9 @@
[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
[submodule "vendor/NotificationMasterAPI"] [submodule "vendor/NotificationMasterAPI"]
path = vendor/NotificationMasterAPI path = vendor/NotificationMasterAPI
url = https://github.com/NightmareXIV/NotificationMasterAPI.git url = https://github.com/NightmareXIV/NotificationMasterAPI.git
[submodule "vendor/pictomancy"]
path = vendor/pictomancy
url = https://github.com/sourpuh/ffxiv_pictomancy

View File

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

View File

@ -9,7 +9,7 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\LLib\LLib.csproj" /> <ProjectReference Include="..\LLib\LLib.csproj" />
<ProjectReference Include="..\Questionable.Model\Questionable.Model.csproj" /> <ProjectReference Include="..\Questionable.Model\Questionable.Model.csproj" />
<ProjectReference Include="..\vendor\pictomancy\Pictomancy\Pictomancy.csproj" /> <ProjectReference Include="..\vendor\ECommons\ECommons\ECommons.csproj" />
</ItemGroup> </ItemGroup>
<Import Project="..\LLib\LLib.targets"/> <Import Project="..\LLib\LLib.targets"/>

View File

@ -2,6 +2,6 @@
"Name": "GatheringPathRenderer", "Name": "GatheringPathRenderer",
"Author": "Liza Carvelli", "Author": "Liza Carvelli",
"Punchline": "[Questionable dev plugin]: Renders gathering location.", "Punchline": "[Questionable dev plugin]: Renders gathering location.",
"Description": "[Questionable dev plugin]: Renders gathering location using Pictomancy.", "Description": "[Questionable dev plugin]: Renders gathering location using Splatoon.",
"RepoUrl": "https://git.carvel.li/liza/Questionable/src/branch/master/GatheringPathRenderer" "RepoUrl": "https://git.carvel.li/liza/Questionable/src/branch/master/GatheringPathRenderer"
} }

View File

@ -4,7 +4,6 @@ using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Numerics;
using System.Text.Encodings.Web; using System.Text.Encodings.Web;
using System.Text.Json; using System.Text.Json;
using System.Text.Json.Nodes; using System.Text.Json.Nodes;
@ -14,9 +13,11 @@ using Dalamud.Game.ClientState.Objects;
using Dalamud.Interface.Windowing; using Dalamud.Interface.Windowing;
using Dalamud.Plugin; using Dalamud.Plugin;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using ECommons;
using ECommons.Schedulers;
using ECommons.SplatoonAPI;
using GatheringPathRenderer.Windows; using GatheringPathRenderer.Windows;
using LLib.GameData; using LLib.GameData;
using Pictomancy;
using Questionable.Model.Gathering; using Questionable.Model.Gathering;
namespace GatheringPathRenderer; namespace GatheringPathRenderer;
@ -24,8 +25,10 @@ namespace GatheringPathRenderer;
[SuppressMessage("ReSharper", "ClassNeverInstantiated.Global")] [SuppressMessage("ReSharper", "ClassNeverInstantiated.Global")]
public sealed class RendererPlugin : IDalamudPlugin public sealed class RendererPlugin : IDalamudPlugin
{ {
private const long OnTerritoryChange = -2;
private readonly WindowSystem _windowSystem = new(nameof(RendererPlugin)); private readonly WindowSystem _windowSystem = new(nameof(RendererPlugin));
private readonly List<uint> _colors = [0x40FF2020, 0x4020FF20, 0x402020FF, 0x40FFFF20, 0x40FF20FF, 0x4020FFFF]; private readonly List<uint> _colors = [0xFFFF2020, 0xFF20FF20, 0xFF2020FF, 0xFFFFFF20, 0xFFFF20FF, 0xFF20FFFF];
private readonly IDalamudPluginInterface _pluginInterface; private readonly IDalamudPluginInterface _pluginInterface;
private readonly IClientState _clientState; private readonly IClientState _clientState;
@ -55,8 +58,7 @@ public sealed class RendererPlugin : IDalamudPlugin
_editorCommands = new EditorCommands(this, dataManager, commandManager, targetManager, clientState, chatGui, _editorCommands = new EditorCommands(this, dataManager, commandManager, targetManager, clientState, chatGui,
configuration); configuration);
var configWindow = new ConfigWindow(pluginInterface, configuration); var configWindow = new ConfigWindow(pluginInterface, configuration);
_editorWindow = new EditorWindow(this, _editorCommands, dataManager, targetManager, clientState, objectTable, _editorWindow = new EditorWindow(this, _editorCommands, dataManager, targetManager, clientState, objectTable, configWindow)
configWindow)
{ IsOpen = true }; { IsOpen = true };
_windowSystem.AddWindow(configWindow); _windowSystem.AddWindow(configWindow);
_windowSystem.AddWindow(_editorWindow); _windowSystem.AddWindow(_editorWindow);
@ -65,12 +67,14 @@ public sealed class RendererPlugin : IDalamudPlugin
_pluginInterface.GetIpcSubscriber<object>("Questionable.ReloadData") _pluginInterface.GetIpcSubscriber<object>("Questionable.ReloadData")
.Subscribe(Reload); .Subscribe(Reload);
PictoService.Initialize(pluginInterface); ECommonsMain.Init(pluginInterface, this, Module.SplatoonAPI);
LoadGatheringLocationsFromDirectory(); LoadGatheringLocationsFromDirectory();
_pluginInterface.UiBuilder.Draw += _windowSystem.Draw; _pluginInterface.UiBuilder.Draw += _windowSystem.Draw;
_pluginInterface.UiBuilder.Draw += Draw; _clientState.TerritoryChanged += TerritoryChanged;
_clientState.ClassJobChanged += ClassJobChanged; _clientState.ClassJobChanged += ClassJobChanged;
if (_clientState.IsLoggedIn)
TerritoryChanged(_clientState.TerritoryType);
} }
internal DirectoryInfo PathsDirectory internal DirectoryInfo PathsDirectory
@ -89,8 +93,7 @@ public sealed class RendererPlugin : IDalamudPlugin
throw new Exception($"Unable to resolve project path ({_pluginInterface.AssemblyLocation.Directory})"); throw new Exception($"Unable to resolve project path ({_pluginInterface.AssemblyLocation.Directory})");
#else #else
var allPluginsDirectory = var allPluginsDirectory = _pluginInterface.ConfigFile.Directory ?? throw new Exception("Unknown directory for plugin configs");
_pluginInterface.ConfigFile.Directory ?? throw new Exception("Unknown directory for plugin configs");
return allPluginsDirectory return allPluginsDirectory
.CreateSubdirectory("Questionable") .CreateSubdirectory("Questionable")
.CreateSubdirectory("GatheringPaths"); .CreateSubdirectory("GatheringPaths");
@ -101,6 +104,7 @@ public sealed class RendererPlugin : IDalamudPlugin
internal void Reload() internal void Reload()
{ {
LoadGatheringLocationsFromDirectory(); LoadGatheringLocationsFromDirectory();
Redraw();
} }
private void LoadGatheringLocationsFromDirectory() private void LoadGatheringLocationsFromDirectory()
@ -120,6 +124,7 @@ public sealed class RendererPlugin : IDalamudPlugin
_pluginLog.Information( _pluginLog.Information(
$"Loaded {_gatheringLocations.Count} gathering root locations from {PathsDirectory.FullName} directory"); $"Loaded {_gatheringLocations.Count} gathering root locations from {PathsDirectory.FullName} directory");
#endif #endif
} }
catch (Exception e) catch (Exception e)
{ {
@ -204,39 +209,32 @@ public sealed class RendererPlugin : IDalamudPlugin
} }
} }
private void TerritoryChanged(ushort territoryId) => Redraw();
private void ClassJobChanged(uint classJobId) private void ClassJobChanged(uint classJobId)
{ {
_currentClassJob = (EClassJob)classJobId; _currentClassJob = (EClassJob)classJobId;
Redraw(_currentClassJob);
} }
private void Draw() internal void Redraw() => Redraw(_currentClassJob);
private void Redraw(EClassJob classJob)
{ {
if (!_currentClassJob.IsGatherer()) Splatoon.RemoveDynamicElements("GatheringPathRenderer");
if (!classJob.IsGatherer())
return; return;
using var drawList = PictoService.Draw(); var elements = GetLocationsInTerritory(_clientState.TerritoryType)
if (drawList == null) .SelectMany(location =>
return; location.Root.Groups.SelectMany(group =>
group.Nodes.SelectMany(node => node.Locations
Vector3 position = _clientState.LocalPlayer?.Position ?? Vector3.Zero; .SelectMany(x =>
foreach (var location in GetLocationsInTerritory(_clientState.TerritoryType))
{
if (!location.Root.Groups.Any(gr =>
gr.Nodes.Any(
no => no.Locations.Any(
loc => Vector3.Distance(loc.Position, position) < 200f))))
continue;
foreach (var group in location.Root.Groups)
{
foreach (GatheringNode node in group.Nodes)
{
foreach (var x in node.Locations)
{ {
bool isUnsaved = false; bool isUnsaved = false;
bool isCone = false; bool isCone = false;
float minimumAngle = 0; int minimumAngle = 0;
float maximumAngle = 0; int maximumAngle = 0;
if (_editorWindow.TryGetOverride(x.InternalId, out LocationOverride? locationOverride) && if (_editorWindow.TryGetOverride(x.InternalId, out LocationOverride? locationOverride) &&
locationOverride != null) locationOverride != null)
{ {
@ -256,28 +254,42 @@ public sealed class RendererPlugin : IDalamudPlugin
maximumAngle = x.MaximumAngle.GetValueOrDefault(); maximumAngle = x.MaximumAngle.GetValueOrDefault();
} }
minimumAngle *= (float)Math.PI / 180;
maximumAngle *= (float)Math.PI / 180;
if (!isCone || maximumAngle - minimumAngle >= 2 * Math.PI)
{
minimumAngle = 0;
maximumAngle = (float)Math.PI * 2;
}
uint color = _colors[location.Root.Groups.IndexOf(group) % _colors.Count];
drawList.AddFanFilled(x.Position,
locationOverride?.MinimumDistance ?? x.CalculateMinimumDistance(),
locationOverride?.MaximumDistance ?? x.CalculateMaximumDistance(),
minimumAngle, maximumAngle, color);
drawList.AddFan(x.Position,
locationOverride?.MinimumDistance ?? x.CalculateMinimumDistance(),
locationOverride?.MaximumDistance ?? x.CalculateMaximumDistance(),
minimumAngle, maximumAngle, color | 0xFF000000);
drawList.AddText(x.Position, isUnsaved ? 0xFFFF0000 : 0xFFFFFFFF, $"{location.Root.Groups.IndexOf(group)} // {node.DataId} / {node.Locations.IndexOf(x)} || {minimumAngle}, {maximumAngle}", 1f);
#if false #if false
var a = GatheringMath.CalculateLandingLocation(x, 0, 0); var a = GatheringMath.CalculateLandingLocation(x, 0, 0);
var b = GatheringMath.CalculateLandingLocation(x, 1, 1); var b = GatheringMath.CalculateLandingLocation(x, 1, 1);
#endif
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 = locationOverride?.MinimumDistance ?? x.CalculateMinimumDistance(),
Donut = (locationOverride?.MaximumDistance ?? x.CalculateMaximumDistance()) -
(locationOverride?.MinimumDistance ?? 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 = 0xFFFFFFFF,
radius = 0.1f,
Enabled = true,
overlayText =
$"{location.Root.Groups.IndexOf(group)} // {node.DataId} / {node.Locations.IndexOf(x)}",
overlayBGColor = isUnsaved ? 0xFF2020FF : 0xFF000000,
},
#if false
new Element(ElementType.CircleAtFixedCoordinates) new Element(ElementType.CircleAtFixedCoordinates)
{ {
refX = a.X, refX = a.X,
@ -299,19 +311,40 @@ public sealed class RendererPlugin : IDalamudPlugin
overlayText = "Max Angle" overlayText = "Max Angle"
} }
#endif #endif
};
}))))
.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() public void Dispose()
{ {
_clientState.ClassJobChanged -= ClassJobChanged; _clientState.ClassJobChanged -= ClassJobChanged;
_pluginInterface.UiBuilder.Draw -= Draw; _clientState.TerritoryChanged -= TerritoryChanged;
_pluginInterface.UiBuilder.Draw -= _windowSystem.Draw; _pluginInterface.UiBuilder.Draw -= _windowSystem.Draw;
PictoService.Dispose(); Splatoon.RemoveDynamicElements("GatheringPathRenderer");
ECommonsMain.Dispose();
_pluginInterface.GetIpcSubscriber<object>("Questionable.ReloadData") _pluginInterface.GetIpcSubscriber<object>("Questionable.ReloadData")
.Unsubscribe(Reload); .Unsubscribe(Reload);

View File

@ -154,6 +154,7 @@ internal sealed class EditorWindow : Window
{ {
locationOverride.MinimumAngle = minAngle; locationOverride.MinimumAngle = minAngle;
locationOverride.MaximumAngle = maxAngle; locationOverride.MaximumAngle = maxAngle;
_plugin.Redraw();
} }
float minDistance = locationOverride.MinimumDistance ?? location.CalculateMinimumDistance(); float minDistance = locationOverride.MinimumDistance ?? location.CalculateMinimumDistance();
@ -162,6 +163,7 @@ internal sealed class EditorWindow : Window
{ {
locationOverride.MinimumDistance = minDistance; locationOverride.MinimumDistance = minDistance;
locationOverride.MaximumDistance = maxDistance; locationOverride.MaximumDistance = maxDistance;
_plugin.Redraw();
} }
bool unsaved = locationOverride.NeedsSave(); bool unsaved = locationOverride.NeedsSave();
@ -192,6 +194,7 @@ internal sealed class EditorWindow : Window
if (ImGui.Button("Reset")) if (ImGui.Button("Reset"))
{ {
_changes[location.InternalId] = new LocationOverride(); _changes[location.InternalId] = new LocationOverride();
_plugin.Redraw();
} }
ImGui.EndDisabled(); ImGui.EndDisabled();

View File

@ -35,16 +35,6 @@
"resolved": "8.0.0", "resolved": "8.0.0",
"contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ==" "contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ=="
}, },
"Microsoft.NETCore.Platforms": {
"type": "Transitive",
"resolved": "1.1.0",
"contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A=="
},
"Microsoft.NETCore.Targets": {
"type": "Transitive",
"resolved": "1.1.0",
"contentHash": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg=="
},
"Microsoft.SourceLink.AzureRepos.Git": { "Microsoft.SourceLink.AzureRepos.Git": {
"type": "Transitive", "type": "Transitive",
"resolved": "1.1.1", "resolved": "1.1.1",
@ -86,944 +76,13 @@
"Microsoft.SourceLink.Common": "1.1.1" "Microsoft.SourceLink.Common": "1.1.1"
} }
}, },
"Microsoft.Win32.Primitives": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"NETStandard.Library": {
"type": "Transitive",
"resolved": "1.6.1",
"contentHash": "WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.Win32.Primitives": "4.3.0",
"System.AppContext": "4.3.0",
"System.Collections": "4.3.0",
"System.Collections.Concurrent": "4.3.0",
"System.Console": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.Tools": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Globalization": "4.3.0",
"System.Globalization.Calendars": "4.3.0",
"System.IO": "4.3.0",
"System.IO.Compression": "4.3.0",
"System.IO.Compression.ZipFile": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Linq": "4.3.0",
"System.Linq.Expressions": "4.3.0",
"System.Net.Http": "4.3.0",
"System.Net.Primitives": "4.3.0",
"System.Net.Sockets": "4.3.0",
"System.ObjectModel": "4.3.0",
"System.Reflection": "4.3.0",
"System.Reflection.Extensions": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.InteropServices.RuntimeInformation": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Security.Cryptography.X509Certificates": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Text.Encoding.Extensions": "4.3.0",
"System.Text.RegularExpressions": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"System.Threading.Timer": "4.3.0",
"System.Xml.ReaderWriter": "4.3.0",
"System.Xml.XDocument": "4.3.0"
}
},
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q=="
},
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA=="
},
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw=="
},
"runtime.native.System": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0"
}
},
"runtime.native.System.IO.Compression": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0"
}
},
"runtime.native.System.Net.Http": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0"
}
},
"runtime.native.System.Security.Cryptography.Apple": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==",
"dependencies": {
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0"
}
},
"runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==",
"dependencies": {
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A=="
},
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ=="
},
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ=="
},
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g=="
},
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg=="
},
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ=="
},
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A=="
},
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg=="
},
"SharpDX": {
"type": "Transitive",
"resolved": "4.2.0",
"contentHash": "3pv0LFMvfK/dv1qISJnn8xBeeT6R/FRvr0EV4KI2DGsL84Qlv6P7isWqxGyU0LCwlSVCJN3jgHJ4Bl0KI2PJww==",
"dependencies": {
"NETStandard.Library": "1.6.1"
}
},
"SharpDX.D3DCompiler": {
"type": "Transitive",
"resolved": "4.2.0",
"contentHash": "Rnsd6Ilp127xbXqhTit8WKFQUrXwWxqVGpglyWDNkIBCk0tWXNQEjrJpsl0KAObzyZaa33+EXAikLVt5fnd3GA==",
"dependencies": {
"NETStandard.Library": "1.6.1",
"SharpDX": "4.2.0"
}
},
"SharpDX.Direct2D1": {
"type": "Transitive",
"resolved": "4.2.0",
"contentHash": "Qs8LzDMaQf1u3KB8ArHu9pDv6itZ++QXs99a/bVAG+nKr0Hx5NG4mcN5vsfE0mVR2TkeHfeUm4PksRah6VUPtA==",
"dependencies": {
"NETStandard.Library": "1.6.1",
"SharpDX": "4.2.0",
"SharpDX.DXGI": "4.2.0"
}
},
"SharpDX.Direct3D11": {
"type": "Transitive",
"resolved": "4.2.0",
"contentHash": "oTm/iT5X/IIuJ8kNYP+DTC/MhBhqtRF5dbgPPFgLBdQv0BKzNTzXQQXd7SveBFjQg6hXEAJ2jGCAzNYvGFc9LA==",
"dependencies": {
"NETStandard.Library": "1.6.1",
"SharpDX": "4.2.0",
"SharpDX.DXGI": "4.2.0"
}
},
"SharpDX.DXGI": {
"type": "Transitive",
"resolved": "4.2.0",
"contentHash": "UjKqkgWc8U+SP+j3LBzFP6OB6Ntapjih7Xo+g1rLcsGbIb5KwewBrBChaUu7sil8rWoeVU/k0EJd3SMN4VqNZw==",
"dependencies": {
"NETStandard.Library": "1.6.1",
"SharpDX": "4.2.0"
}
},
"System.AppContext": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==",
"dependencies": {
"System.Runtime": "4.3.0"
}
},
"System.Buffers": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "ratu44uTIHgeBeI0dE8DWvmXVBSo4u7ozRZZHOMmK/JPpYyo0dAfgSiHlpiObMQ5lEtEyIXA40sKRYg5J6A8uQ==",
"dependencies": {
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Threading": "4.3.0"
}
},
"System.Collections": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Collections.Concurrent": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==",
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Globalization": "4.3.0",
"System.Reflection": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.Console": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.Runtime": "4.3.0",
"System.Text.Encoding": "4.3.0"
}
},
"System.Diagnostics.Debug": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Diagnostics.DiagnosticSource": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "tD6kosZnTAGdrEa0tZSuFyunMbt/5KYDnHdndJYGqZoNy00XVXyACd5d6KnE1YgYv3ne2CjtAfNXo/fwEhnKUA==",
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Reflection": "4.3.0",
"System.Runtime": "4.3.0",
"System.Threading": "4.3.0"
}
},
"System.Diagnostics.Tools": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Diagnostics.Tracing": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Globalization": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Globalization.Calendars": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Globalization": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Globalization.Extensions": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Globalization": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.InteropServices": "4.3.0"
}
},
"System.IO": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.IO.Compression": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Buffers": "4.3.0",
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"runtime.native.System": "4.3.0",
"runtime.native.System.IO.Compression": "4.3.0"
}
},
"System.IO.Compression.ZipFile": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==",
"dependencies": {
"System.Buffers": "4.3.0",
"System.IO": "4.3.0",
"System.IO.Compression": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Text.Encoding": "4.3.0"
}
},
"System.IO.FileSystem": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.IO.FileSystem.Primitives": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==",
"dependencies": {
"System.Runtime": "4.3.0"
}
},
"System.Linq": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==",
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0"
}
},
"System.Linq.Expressions": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==",
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.Linq": "4.3.0",
"System.ObjectModel": "4.3.0",
"System.Reflection": "4.3.0",
"System.Reflection.Emit": "4.3.0",
"System.Reflection.Emit.ILGeneration": "4.3.0",
"System.Reflection.Emit.Lightweight": "4.3.0",
"System.Reflection.Extensions": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Reflection.TypeExtensions": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Threading": "4.3.0"
}
},
"System.Net.Http": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.DiagnosticSource": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Globalization": "4.3.0",
"System.Globalization.Extensions": "4.3.0",
"System.IO": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.Net.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.OpenSsl": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Security.Cryptography.X509Certificates": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"runtime.native.System": "4.3.0",
"runtime.native.System.Net.Http": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"System.Net.Primitives": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0"
}
},
"System.Net.Sockets": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.Net.Primitives": "4.3.0",
"System.Runtime": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.ObjectModel": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==",
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Threading": "4.3.0"
}
},
"System.Reflection": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Reflection.Emit": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==",
"dependencies": {
"System.IO": "4.3.0",
"System.Reflection": "4.3.0",
"System.Reflection.Emit.ILGeneration": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Reflection.Emit.ILGeneration": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==",
"dependencies": {
"System.Reflection": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Reflection.Emit.Lightweight": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==",
"dependencies": {
"System.Reflection": "4.3.0",
"System.Reflection.Emit.ILGeneration": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Reflection.Extensions": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Reflection": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Reflection.Primitives": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Reflection.TypeExtensions": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==",
"dependencies": {
"System.Reflection": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Resources.ResourceManager": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Globalization": "4.3.0",
"System.Reflection": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Runtime": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0"
}
},
"System.Runtime.Extensions": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Runtime.Handles": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Runtime.InteropServices": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Reflection": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0"
}
},
"System.Runtime.InteropServices.RuntimeInformation": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==",
"dependencies": {
"System.Reflection": "4.3.0",
"System.Reflection.Extensions": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Threading": "4.3.0",
"runtime.native.System": "4.3.0"
}
},
"System.Runtime.Numerics": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==",
"dependencies": {
"System.Globalization": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0"
}
},
"System.Security.Cryptography.Algorithms": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Collections": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"runtime.native.System.Security.Cryptography.Apple": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"System.Security.Cryptography.Cng": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0"
}
},
"System.Security.Cryptography.Csp": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.IO": "4.3.0",
"System.Reflection": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0"
}
},
"System.Security.Cryptography.Encoding": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Collections": "4.3.0",
"System.Collections.Concurrent": "4.3.0",
"System.Linq": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"System.Security.Cryptography.OpenSsl": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==",
"dependencies": {
"System.Collections": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"System.Security.Cryptography.Primitives": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==",
"dependencies": {
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.Security.Cryptography.X509Certificates": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.Globalization.Calendars": "4.3.0",
"System.IO": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Cng": "4.3.0",
"System.Security.Cryptography.Csp": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.OpenSsl": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"runtime.native.System": "4.3.0",
"runtime.native.System.Net.Http": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"System.Text.Encoding": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Text.Encoding.Extensions": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0",
"System.Text.Encoding": "4.3.0"
}
},
"System.Text.Json": { "System.Text.Json": {
"type": "Transitive", "type": "Transitive",
"resolved": "8.0.5", "resolved": "8.0.5",
"contentHash": "0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg==" "contentHash": "0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg=="
}, },
"System.Text.RegularExpressions": { "ecommons": {
"type": "Transitive", "type": "Project"
"resolved": "4.3.0",
"contentHash": "RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==",
"dependencies": {
"System.Runtime": "4.3.0"
}
},
"System.Threading": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==",
"dependencies": {
"System.Runtime": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.Threading.Tasks": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Threading.Tasks.Extensions": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==",
"dependencies": {
"System.Collections": "4.3.0",
"System.Runtime": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.Threading.Timer": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Xml.ReaderWriter": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==",
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Text.Encoding.Extensions": "4.3.0",
"System.Text.RegularExpressions": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"System.Threading.Tasks.Extensions": "4.3.0"
}
},
"System.Xml.XDocument": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==",
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.Tools": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.Reflection": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"System.Xml.ReaderWriter": "4.3.0"
}
}, },
"llib": { "llib": {
"type": "Project", "type": "Project",
@ -1031,14 +90,6 @@
"DalamudPackager": "[11.0.0, )" "DalamudPackager": "[11.0.0, )"
} }
}, },
"pictomancy": {
"type": "Project",
"dependencies": {
"SharpDX.D3DCompiler": "[4.2.0, )",
"SharpDX.Direct2D1": "[4.2.0, )",
"SharpDX.Direct3D11": "[4.2.0, )"
}
},
"questionable.model": { "questionable.model": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {

2
LLib

@ -1 +1 @@
Subproject commit edab3c7ecc6bd66ac07e3c3938eb9c8a835a1c42 Subproject commit 746d14681baa91132784ab17f8f49671e86ea211

View File

@ -123,9 +123,6 @@ internal static class QuestStepExtensions
Assignment(nameof(QuestStep.AutoDutyEnabled), Assignment(nameof(QuestStep.AutoDutyEnabled),
step.AutoDutyEnabled, emptyStep.AutoDutyEnabled) step.AutoDutyEnabled, emptyStep.AutoDutyEnabled)
.AsSyntaxNodeOrToken(), .AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.SinglePlayerDutyOptions), step.SinglePlayerDutyOptions,
emptyStep.SinglePlayerDutyOptions)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.SkipConditions), step.SkipConditions, Assignment(nameof(QuestStep.SkipConditions), step.SkipConditions,
emptyStep.SkipConditions) emptyStep.SkipConditions)
.AsSyntaxNodeOrToken(), .AsSyntaxNodeOrToken(),

View File

@ -1,30 +0,0 @@
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Questionable.Model.Questing;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
using static Questionable.QuestPathGenerator.RoslynShortcuts;
namespace Questionable.QuestPathGenerator.RoslynElements;
internal static class SinglePlayerDutyOptionsExtensions
{
public static ExpressionSyntax ToExpressionSyntax(this SinglePlayerDutyOptions dutyOptions)
{
var emptyOptions = new SinglePlayerDutyOptions();
return ObjectCreationExpression(
IdentifierName(nameof(SinglePlayerDutyOptions)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(SinglePlayerDutyOptions.Enabled),
dutyOptions.Enabled, emptyOptions.Enabled)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(SinglePlayerDutyOptions.Notes), dutyOptions.Notes)
.AsSyntaxNodeOrToken(),
Assignment(nameof(SinglePlayerDutyOptions.Index),
dutyOptions.Index, emptyOptions.Index)
.AsSyntaxNodeOrToken()))));
}
}

View File

@ -62,7 +62,6 @@ public static class RoslynShortcuts
ComplexCombatData complexCombatData => complexCombatData.ToExpressionSyntax(), ComplexCombatData complexCombatData => complexCombatData.ToExpressionSyntax(),
QuestWorkValue questWorkValue => questWorkValue.ToExpressionSyntax(), QuestWorkValue questWorkValue => questWorkValue.ToExpressionSyntax(),
List<QuestWorkValue> list => list.ToExpressionSyntax(), // TODO fix in AssignmentList List<QuestWorkValue> list => list.ToExpressionSyntax(), // TODO fix in AssignmentList
SinglePlayerDutyOptions dutyOptions => dutyOptions.ToExpressionSyntax(),
SkipConditions skipConditions => skipConditions.ToExpressionSyntax(), SkipConditions skipConditions => skipConditions.ToExpressionSyntax(),
SkipStepConditions skipStepConditions => skipStepConditions.ToExpressionSyntax(), SkipStepConditions skipStepConditions => skipStepConditions.ToExpressionSyntax(),
SkipItemConditions skipItemCondition => skipItemCondition.ToExpressionSyntax(), SkipItemConditions skipItemCondition => skipItemCondition.ToExpressionSyntax(),

View File

@ -57,9 +57,6 @@
}, },
"TerritoryId": 153, "TerritoryId": 153,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Index": 1
},
"Fly": true "Fly": true
} }
] ]

View File

@ -62,9 +62,6 @@
}, },
"TerritoryId": 154, "TerritoryId": 154,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Index": 1
},
"AetheryteShortcut": "North Shroud - Fallgourd Float", "AetheryteShortcut": "North Shroud - Fallgourd Float",
"Fly": true "Fly": true
} }

View File

@ -119,10 +119,7 @@
"Z": 29.06836 "Z": 29.06836
}, },
"TerritoryId": 152, "TerritoryId": 152,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Index": 1
}
} }
] ]
}, },

View File

@ -140,10 +140,6 @@
}, },
"TerritoryId": 141, "TerritoryId": 141,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
},
"Fly": true "Fly": true
} }
] ]

View File

@ -92,9 +92,6 @@
}, },
"TerritoryId": 130, "TerritoryId": 130,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Index": 1
},
"AetheryteShortcut": "Ul'dah" "AetheryteShortcut": "Ul'dah"
} }
] ]

View File

@ -29,7 +29,13 @@
}, },
"TerritoryId": 129, "TerritoryId": 129,
"InteractionType": "Interact", "InteractionType": "Interact",
"TargetTerritoryId": 129 "DialogueChoices": [
{
"Type": "YesNo",
"Prompt": "TEXT_CLSROG011_00102_Q9_000_901",
"Yes": true
}
]
}, },
{ {
"DataId": 1009943, "DataId": 1009943,

View File

@ -5,26 +5,6 @@
{ {
"Sequence": 0, "Sequence": 0,
"Steps": [ "Steps": [
{
"TerritoryId": 129,
"InteractionType": "EquipItem",
"ItemId": 7952,
"AetheryteShortcut": "Limsa Lominsa",
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
},
"StepIf": {
"Item": {
"NotInInventory": true
}
}
}
},
{
"TerritoryId": 129,
"InteractionType": "EquipRecommended"
},
{ {
"DataId": 1009944, "DataId": 1009944,
"Position": { "Position": {
@ -34,12 +14,16 @@
}, },
"TerritoryId": 129, "TerritoryId": 129,
"InteractionType": "Interact", "InteractionType": "Interact",
"AetheryteShortcut": "Limsa Lominsa",
"TargetTerritoryId": 129, "TargetTerritoryId": 129,
"AethernetShortcut": [ "AethernetShortcut": [
"[Limsa Lominsa] Aetheryte Plaza", "[Limsa Lominsa] Aetheryte Plaza",
"[Limsa Lominsa] Fishermens' Guild" "[Limsa Lominsa] Fishermens' Guild"
], ],
"SkipConditions": { "SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
},
"StepIf": { "StepIf": {
"ExtraCondition": "RoguesGuild" "ExtraCondition": "RoguesGuild"
} }
@ -61,25 +45,6 @@
{ {
"Sequence": 1, "Sequence": 1,
"Steps": [ "Steps": [
{
"DataId": 2004936,
"Position": {
"X": -151.90363,
"Y": -128.16058,
"Z": 256.8551
},
"TerritoryId": 129,
"InteractionType": "Interact",
"TargetTerritoryId": 129,
"SkipConditions": {
"StepIf": {
"InTerritory": [
134
],
"ExtraCondition": "NotRoguesGuild"
}
}
},
{ {
"Position": { "Position": {
"X": 31.662792, "X": 31.662792,

View File

@ -152,9 +152,15 @@
"TerritoryId": 129, "TerritoryId": 129,
"InteractionType": "Interact", "InteractionType": "Interact",
"TargetTerritoryId": 129, "TargetTerritoryId": 129,
"AethernetShortcut": [
"[Limsa Lominsa] Fishermens' Guild",
"[Limsa Lominsa] The Aftcastle"
],
"SkipConditions": { "SkipConditions": {
"StepIf": { "StepIf": {
"ExtraCondition": "NotRoguesGuild" "InTerritory": [
128
]
} }
} }
}, },
@ -167,10 +173,6 @@
}, },
"TerritoryId": 128, "TerritoryId": 128,
"InteractionType": "Interact", "InteractionType": "Interact",
"AethernetShortcut": [
"[Limsa Lominsa] Fishermens' Guild",
"[Limsa Lominsa] The Aftcastle"
],
"DialogueChoices": [ "DialogueChoices": [
{ {
"Type": "List", "Type": "List",

View File

@ -291,17 +291,7 @@
"Z": 239.30713 "Z": 239.30713
}, },
"TerritoryId": 129, "TerritoryId": 129,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": false,
"TestedBossModVersion": 292,
"Notes": [
"(phase 1) AI doesn't move or pick up the stolen firearms",
"(phase 1 + 2) AI automatically removes Hidden status",
"(phase 2) AI only moves while targeted enemies are in range + gets stuck on corners while trying to get to irrelevant enemies",
"(phase 2) AI doesn't even attempt to navigate to the end of the quest"
]
}
} }
] ]
}, },

View File

@ -35,10 +35,6 @@
}, },
"TerritoryId": 137, "TerritoryId": 137,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
},
"AetheryteShortcut": "Eastern La Noscea - Wineport", "AetheryteShortcut": "Eastern La Noscea - Wineport",
"Fly": true "Fly": true
} }

View File

@ -116,10 +116,6 @@
}, },
"TerritoryId": 152, "TerritoryId": 152,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
},
"Fly": true "Fly": true
} }
] ]

View File

@ -65,8 +65,7 @@
"AetheryteShortcut": "East Shroud - Hawthorne Hut", "AetheryteShortcut": "East Shroud - Hawthorne Hut",
"SkipConditions": { "SkipConditions": {
"AetheryteShortcutIf": { "AetheryteShortcutIf": {
"InSameTerritory": true, "InSameTerritory": true
"AetheryteLocked": "East Shroud - Hawthorne Hut"
} }
} }
} }
@ -117,11 +116,7 @@
"Z": 35.568726 "Z": 35.568726
}, },
"TerritoryId": 152, "TerritoryId": 152,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
}
} }
] ]
}, },

View File

@ -33,39 +33,6 @@
{ {
"Sequence": 1, "Sequence": 1,
"Steps": [ "Steps": [
{
"DataId": 1001263,
"Position": {
"X": 181.41443,
"Y": -2.3519497,
"Z": -240.40594
},
"TerritoryId": 133,
"InteractionType": "Interact",
"TargetTerritoryId": 152,
"AethernetShortcut": [
"[Gridania] Conjurers' Guild",
"[Gridania] Lancers' Guild"
],
"SkipConditions": {
"StepIf": {
"AetheryteUnlocked": "East Shroud - Hawthorne Hut",
"InTerritory": [
152
]
}
}
},
{
"TerritoryId": 152,
"InteractionType": "AttuneAetheryte",
"Aetheryte": "East Shroud - Hawthorne Hut",
"SkipConditions": {
"StepIf": {
"AetheryteUnlocked": "East Shroud - Hawthorne Hut"
}
}
},
{ {
"Position": { "Position": {
"X": -276.804, "X": -276.804,
@ -75,12 +42,7 @@
"TerritoryId": 152, "TerritoryId": 152,
"InteractionType": "WalkTo", "InteractionType": "WalkTo",
"AetheryteShortcut": "East Shroud - Hawthorne Hut", "AetheryteShortcut": "East Shroud - Hawthorne Hut",
"Fly": true, "Fly": true
"SkipConditions": {
"AetheryteShortcutIf": {
"AetheryteLocked": "East Shroud - Hawthorne Hut"
}
}
}, },
{ {
"DataId": 2000889, "DataId": 2000889,
@ -250,10 +212,6 @@
}, },
"TerritoryId": 152, "TerritoryId": 152,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
},
"Fly": true "Fly": true
} }
] ]

View File

@ -138,11 +138,7 @@
"Z": 192.2179 "Z": 192.2179
}, },
"TerritoryId": 148, "TerritoryId": 148,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
}
} }
] ]
}, },

View File

@ -111,14 +111,7 @@
"Z": 295.52136 "Z": 295.52136
}, },
"TerritoryId": 148, "TerritoryId": 148,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292,
"Notes": [
"Healer NPC is only killed after the boss dies; all NPCs need to be killed for the duty to complete"
]
}
} }
] ]
}, },

View File

@ -28,14 +28,7 @@
"Z": -309.55975 "Z": -309.55975
}, },
"TerritoryId": 148, "TerritoryId": 148,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": false,
"TestedBossModVersion": 292,
"Notes": [
"AI doesn't automatically target newly spawning adds until after the boss died, and dies (tested on CNJ)"
]
}
} }
] ]
}, },

View File

@ -77,13 +77,6 @@
}, },
"TerritoryId": 148, "TerritoryId": 148,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292,
"Notes": [
"(Phase 1) Healer NPCs are only killed after the boss dies - allied NPCs will kill them eventually; all NPCs need to be killed for the duty to complete"
]
},
"AetheryteShortcut": "Central Shroud - Bentbranch Meadows" "AetheryteShortcut": "Central Shroud - Bentbranch Meadows"
} }
] ]

View File

@ -69,13 +69,6 @@
}, },
"TerritoryId": 135, "TerritoryId": 135,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Enabled": false,
"TestedBossModVersion": 292,
"Notes": [
"(Phase 1, second enemy group) Stuck with enemy being out of sight -- but still able to attack you (tested on ACN)"
]
},
"AetheryteShortcut": "Lower La Noscea - Moraby Drydocks" "AetheryteShortcut": "Lower La Noscea - Moraby Drydocks"
} }
] ]

View File

@ -45,11 +45,8 @@
"TerritoryId": 134, "TerritoryId": 134,
"InteractionType": "Combat", "InteractionType": "Combat",
"EnemySpawnType": "AutoOnEnterArea", "EnemySpawnType": "AutoOnEnterArea",
"ComplexCombatData": [ "KillEnemyDataIds": [
{ 52
"DataId": 52,
"IgnoreQuestMarker": true
}
] ]
}, },
{ {

View File

@ -73,11 +73,7 @@
"Z": -432.15082 "Z": -432.15082
}, },
"TerritoryId": 134, "TerritoryId": 134,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
}
} }
] ]
}, },

View File

@ -28,14 +28,7 @@
"Z": -141.7716 "Z": -141.7716
}, },
"TerritoryId": 134, "TerritoryId": 134,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": false,
"TestedBossModVersion": 292,
"Notes": [
"AI doesn't automatically target newly spawning adds until after the boss died (requires healing luck on ACN)"
]
}
} }
] ]
}, },

View File

@ -58,13 +58,6 @@
}, },
"TerritoryId": 138, "TerritoryId": 138,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292,
"Notes": [
"(Phase 1) Kills PGL NPCs and then the boss - allied NPCs will kill most other NPCs eventually; all NPCs need to be killed for the duty to complete"
]
},
"AetheryteShortcut": "Western La Noscea - Swiftperch" "AetheryteShortcut": "Western La Noscea - Swiftperch"
} }
] ]

View File

@ -44,11 +44,7 @@
"Z": -242.51166 "Z": -242.51166
}, },
"TerritoryId": 145, "TerritoryId": 145,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
}
} }
] ]
}, },

View File

@ -79,10 +79,6 @@
}, },
"TerritoryId": 130, "TerritoryId": 130,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
},
"AetheryteShortcut": "Ul'dah", "AetheryteShortcut": "Ul'dah",
"AethernetShortcut": [ "AethernetShortcut": [
"[Ul'dah] Aetheryte Plaza", "[Ul'dah] Aetheryte Plaza",
@ -91,9 +87,6 @@
} }
] ]
}, },
{
"Sequence": 5
},
{ {
"Sequence": 255, "Sequence": 255,
"Steps": [ "Steps": [

View File

@ -63,22 +63,12 @@
"AethernetShortcut": [ "AethernetShortcut": [
"[Gridania] Aetheryte Plaza", "[Gridania] Aetheryte Plaza",
"[Gridania] Lancers' Guild" "[Gridania] Lancers' Guild"
], ]
"SkipConditions": {
"StepIf": {
"AetheryteUnlocked": "East Shroud - Hawthorne Hut"
}
}
}, },
{ {
"TerritoryId": 152, "TerritoryId": 152,
"InteractionType": "AttuneAetheryte", "InteractionType": "AttuneAetheryte",
"Aetheryte": "East Shroud - Hawthorne Hut", "Aetheryte": "East Shroud - Hawthorne Hut"
"SkipConditions": {
"StepIf": {
"AetheryteUnlocked": "East Shroud - Hawthorne Hut"
}
}
}, },
{ {
"DataId": 1004886, "DataId": 1004886,
@ -88,17 +78,7 @@
"Z": 475.30322 "Z": 475.30322
}, },
"TerritoryId": 152, "TerritoryId": 152,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
},
"AetheryteShortcut": "East Shroud - Hawthorne Hut",
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
} }
] ]
}, },

View File

@ -64,10 +64,6 @@
}, },
"TerritoryId": 135, "TerritoryId": 135,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
},
"AethernetShortcut": [ "AethernetShortcut": [
"[Limsa Lominsa] The Aftcastle", "[Limsa Lominsa] The Aftcastle",
"[Limsa Lominsa] Tempest Gate (Lower La Noscea)" "[Limsa Lominsa] Tempest Gate (Lower La Noscea)"

View File

@ -59,10 +59,6 @@
}, },
"TerritoryId": 140, "TerritoryId": 140,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
},
"AetheryteShortcut": "Western Thanalan - Horizon" "AetheryteShortcut": "Western Thanalan - Horizon"
} }
] ]

View File

@ -46,8 +46,7 @@
}, },
"StopDistance": 7, "StopDistance": 7,
"TerritoryId": 141, "TerritoryId": 141,
"InteractionType": "Interact", "InteractionType": "Interact"
"DelaySecondsAtStart": 2
} }
] ]
}, },

View File

@ -158,11 +158,7 @@
"Z": 117.29602 "Z": 117.29602
}, },
"TerritoryId": 141, "TerritoryId": 141,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
}
} }
] ]
}, },

View File

@ -21,15 +21,6 @@
{ {
"Sequence": 255, "Sequence": 255,
"Steps": [ "Steps": [
{
"Position": {
"X": -174.73444,
"Y": 15.450659,
"Z": -266.76144
},
"TerritoryId": 140,
"InteractionType": "WalkTo"
},
{ {
"Position": { "Position": {
"X": -289.1099, "X": -289.1099,

View File

@ -37,11 +37,7 @@
"Z": -293.1411 "Z": -293.1411
}, },
"TerritoryId": 140, "TerritoryId": 140,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
}
} }
] ]
}, },

View File

@ -29,7 +29,7 @@
}, },
"TerritoryId": 141, "TerritoryId": 141,
"InteractionType": "Combat", "InteractionType": "Combat",
"EnemySpawnType": "FinishCombatIfAny", "EnemySpawnType": "OverworldEnemies",
"KillEnemyDataIds": [ "KillEnemyDataIds": [
352, 352,
353 353
@ -53,25 +53,6 @@
{ {
"Sequence": 255, "Sequence": 255,
"Steps": [ "Steps": [
{
"Position": {
"X": 131.78122,
"Y": 20.119337,
"Z": -115.27284
},
"TerritoryId": 141,
"InteractionType": "WalkTo"
},
{
"Position": {
"X": 127.7017,
"Y": -0.15994573,
"Z": -161.89238
},
"TerritoryId": 141,
"InteractionType": "WalkTo",
"DisableNavmesh": true
},
{ {
"DataId": 1001605, "DataId": 1001605,
"Position": { "Position": {

View File

@ -28,11 +28,7 @@
"Z": 536.88855 "Z": 536.88855
}, },
"TerritoryId": 141, "TerritoryId": 141,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
}
} }
] ]
}, },

View File

@ -64,14 +64,7 @@
"Z": -131.48706 "Z": -131.48706
}, },
"TerritoryId": 141, "TerritoryId": 141,
"InteractionType": "SinglePlayerDuty", "InteractionType": "Interact",
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292,
"Notes": [
"(Phase 1) Healer NPCs are only killed after the boss dies - allied NPCs will kill them eventually; all NPCs need to be killed for the duty to complete"
]
},
"AetheryteShortcut": "Central Thanalan - Black Brush Station" "AetheryteShortcut": "Central Thanalan - Black Brush Station"
} }
] ]

View File

@ -73,23 +73,13 @@
}, },
"TerritoryId": 133, "TerritoryId": 133,
"InteractionType": "Interact", "InteractionType": "Interact",
"TargetTerritoryId": 152, "TargetTerritoryId": 152
"SkipConditions": {
"StepIf": {
"AetheryteUnlocked": "East Shroud - Hawthorne Hut"
}
}
}, },
{ {
"TerritoryId": 152, "TerritoryId": 152,
"InteractionType": "AttuneAetheryte", "InteractionType": "AttuneAetheryte",
"Aetheryte": "East Shroud - Hawthorne Hut", "Aetheryte": "East Shroud - Hawthorne Hut",
"StopDistance": 5, "StopDistance": 5
"SkipConditions": {
"StepIf": {
"AetheryteUnlocked": "East Shroud - Hawthorne Hut"
}
}
}, },
{ {
"DataId": 1006188, "DataId": 1006188,
@ -99,13 +89,7 @@
"Z": 283.4973 "Z": 283.4973
}, },
"TerritoryId": 152, "TerritoryId": 152,
"InteractionType": "CompleteQuest", "InteractionType": "CompleteQuest"
"AetheryteShortcut": "East Shroud - Hawthorne Hut",
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
} }
] ]
} }

View File

@ -64,11 +64,7 @@
"Z": -39.383606 "Z": -39.383606
}, },
"TerritoryId": 152, "TerritoryId": 152,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
}
} }
] ]
}, },

View File

@ -83,14 +83,7 @@
"Z": -12.985474 "Z": -12.985474
}, },
"TerritoryId": 153, "TerritoryId": 153,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292,
"Notes": [
"AI will kill initial adds before the boss, but not switch target whenever new enemies spawn; all NPCs need to be killed for the duty to complete"
]
}
} }
] ]
}, },

View File

@ -26,28 +26,6 @@
{ {
"Sequence": 1, "Sequence": 1,
"Steps": [ "Steps": [
{
"Position": {
"X": -225.94685,
"Y": 26.139933,
"Z": -340.8984
},
"TerritoryId": 146,
"InteractionType": "WalkTo",
"Mount": true,
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
}
}
},
{ {
"DataId": 2001980, "DataId": 2001980,
"Position": { "Position": {

View File

@ -159,11 +159,7 @@
"Z": -805.478 "Z": -805.478
}, },
"TerritoryId": 140, "TerritoryId": 140,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
}
} }
] ]
}, },

View File

@ -103,11 +103,7 @@
"Z": 479.9724 "Z": 479.9724
}, },
"TerritoryId": 1053, "TerritoryId": 1053,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
}
} }
] ]
}, },

View File

@ -68,15 +68,6 @@
{ {
"Sequence": 3, "Sequence": 3,
"Steps": [ "Steps": [
{
"Position": {
"X": -561.9863,
"Y": 9.919454,
"Z": 66.29564
},
"TerritoryId": 152,
"InteractionType": "WalkTo"
},
{ {
"DataId": 1008276, "DataId": 1008276,
"Position": { "Position": {

View File

@ -102,7 +102,7 @@
}, },
"TerritoryId": 137, "TerritoryId": 137,
"InteractionType": "WalkTo", "InteractionType": "WalkTo",
"Mount": true "Fly": true
}, },
{ {
"Position": { "Position": {

View File

@ -78,10 +78,6 @@
"StopDistance": 1, "StopDistance": 1,
"TerritoryId": 156, "TerritoryId": 156,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
},
"Fly": true "Fly": true
} }
] ]

View File

@ -120,15 +120,6 @@
8 8
] ]
}, },
{
"Position": {
"X": -140.77458,
"Y": 39.99999,
"Z": 155.4174
},
"TerritoryId": 128,
"InteractionType": "WalkTo"
},
{ {
"DataId": 1009133, "DataId": 1009133,
"Position": { "Position": {

View File

@ -100,28 +100,6 @@
2 2
] ]
}, },
{
"Position": {
"X": 86.662384,
"Y": 28.34813,
"Z": -627.5218
},
"TerritoryId": 156,
"InteractionType": "WalkTo",
"Fly": true,
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{ {
"DataId": 1009143, "DataId": 1009143,
"Position": { "Position": {
@ -131,6 +109,7 @@
}, },
"TerritoryId": 156, "TerritoryId": 156,
"InteractionType": "Interact", "InteractionType": "Interact",
"Fly": true,
"$": "1 112 0 0 0 2 -> 2 96 0 0 0 34", "$": "1 112 0 0 0 2 -> 2 96 0 0 0 34",
"CompletionQuestVariablesFlags": [ "CompletionQuestVariablesFlags": [
null, null,

View File

@ -71,14 +71,6 @@
}, },
"TerritoryId": 147, "TerritoryId": 147,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292,
"Notes": [
"Will target Eline first (other NPCs later), and move to some -other- group of NPCs; only re-targets once they're at 1 HP (for Eline) or die",
"If the target isn't in melee range but other NPCs are, whether any AOEs are used for nearby enemies seems random"
]
},
"Fly": true, "Fly": true,
"AetheryteShortcut": "Northern Thanalan - Ceruleum Processing Plant" "AetheryteShortcut": "Northern Thanalan - Ceruleum Processing Plant"
} }

View File

@ -28,16 +28,7 @@
"Z": -328.66406 "Z": -328.66406
}, },
"TerritoryId": 155, "TerritoryId": 155,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": false,
"TestedBossModVersion": 292,
"Notes": [
"WIP: Needs to be re-tested",
"AI doesn't move after starting the instance, so enemies won't be triggered",
"(First Barrier) If the player is too far south, after being stunned by Vishap's roar, AI doesn't move out of the AOE and dies to the Cauterize"
]
}
} }
] ]
}, },

View File

@ -80,8 +80,7 @@
}, },
"TerritoryId": 148, "TerritoryId": 148,
"InteractionType": "UseItem", "InteractionType": "UseItem",
"ItemId": 4868, "ItemId": 4868
"Fly": true
}, },
{ {
"Position": { "Position": {

View File

@ -46,10 +46,6 @@
}, },
"TerritoryId": 155, "TerritoryId": 155,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
},
"Fly": true "Fly": true
} }
] ]

View File

@ -95,11 +95,7 @@
}, },
"TerritoryId": 138, "TerritoryId": 138,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"Fly": true, "Fly": true
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
}
} }
] ]
}, },

View File

@ -30,11 +30,7 @@
}, },
"TerritoryId": 397, "TerritoryId": 397,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"Comment": "Walk straight to Gorgagne Mills basement, ignore footprints", "Comment": "Walk straight to Gorgagne Mills basement, ignore footprints"
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
}
} }
] ]
}, },

View File

@ -58,11 +58,7 @@
"Z": 349.96558 "Z": 349.96558
}, },
"TerritoryId": 401, "TerritoryId": 401,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
}
} }
] ]
}, },

View File

@ -78,11 +78,7 @@
"AethernetShortcut": [ "AethernetShortcut": [
"[Ishgard] The Forgotten Knight", "[Ishgard] The Forgotten Knight",
"[Ishgard] The Tribunal" "[Ishgard] The Tribunal"
], ]
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
}
} }
] ]
}, },

View File

@ -28,14 +28,7 @@
"Z": 388.63196 "Z": 388.63196
}, },
"TerritoryId": 145, "TerritoryId": 145,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292,
"Notes": [
"Will not move into melee range to kill the gate; Alphinaud will kill it after a while"
]
}
} }
] ]
}, },

View File

@ -21,16 +21,6 @@
{ {
"Sequence": 1, "Sequence": 1,
"Steps": [ "Steps": [
{
"Position": {
"X": 474.62885,
"Y": 200.2377,
"Z": 657.9519
},
"TerritoryId": 397,
"InteractionType": "WalkTo",
"AetheryteShortcut": "Coerthas Western Highlands - Falcon's Nest"
},
{ {
"Position": { "Position": {
"X": 486.38373, "X": 486.38373,
@ -38,7 +28,8 @@
"Z": 239.54294 "Z": 239.54294
}, },
"TerritoryId": 397, "TerritoryId": 397,
"InteractionType": "WalkTo" "InteractionType": "WalkTo",
"AetheryteShortcut": "Coerthas Western Highlands - Falcon's Nest"
}, },
{ {
"Position": { "Position": {
@ -78,11 +69,7 @@
}, },
"TerritoryId": 397, "TerritoryId": 397,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"DisableNavmesh": true, "DisableNavmesh": true
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
}
} }
] ]
}, },

View File

@ -59,14 +59,7 @@
"KillEnemyDataIds": [ "KillEnemyDataIds": [
4015 4015
], ],
"CompletionQuestVariablesFlags": [ "$": "0 0 0 0 0 0 -> "
null,
null,
null,
null,
null,
128
]
}, },
{ {
"Position": { "Position": {
@ -79,14 +72,6 @@
"EnemySpawnType": "AutoOnEnterArea", "EnemySpawnType": "AutoOnEnterArea",
"KillEnemyDataIds": [ "KillEnemyDataIds": [
4015 4015
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
] ]
} }
] ]

View File

@ -89,16 +89,6 @@
"InteractionType": "WalkTo", "InteractionType": "WalkTo",
"Mount": true "Mount": true
}, },
{
"Position": {
"X": -335.0186,
"Y": 13.983504,
"Z": -100.87753
},
"TerritoryId": 140,
"InteractionType": "WalkTo",
"Fly": true
},
{ {
"DataId": 1004019, "DataId": 1004019,
"Position": { "Position": {
@ -108,6 +98,7 @@
}, },
"TerritoryId": 140, "TerritoryId": 140,
"InteractionType": "Interact", "InteractionType": "Interact",
"Fly": true,
"TargetTerritoryId": 140 "TargetTerritoryId": 140
}, },
{ {

View File

@ -74,11 +74,7 @@
"Z": 37.247192 "Z": 37.247192
}, },
"TerritoryId": 418, "TerritoryId": 418,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
}
} }
] ]
}, },

View File

@ -56,11 +56,7 @@
"TerritoryId": 401, "TerritoryId": 401,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"Emote": "lookout", "Emote": "lookout",
"StopDistance": 0.25, "StopDistance": 0.25
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
}
} }
] ]
}, },

View File

@ -47,11 +47,7 @@
"AethernetShortcut": [ "AethernetShortcut": [
"[Idyllshire] Aetheryte Plaza", "[Idyllshire] Aetheryte Plaza",
"[Idyllshire] Epilogue Gate (Eastern Hinterlands)" "[Idyllshire] Epilogue Gate (Eastern Hinterlands)"
], ]
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
}
} }
] ]
}, },

View File

@ -68,11 +68,7 @@
"Z": 553.97876 "Z": 553.97876
}, },
"TerritoryId": 402, "TerritoryId": 402,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty"
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 292
}
} }
] ]
}, },

View File

@ -34,7 +34,7 @@
"Z": -509.51404 "Z": -509.51404
}, },
"TerritoryId": 622, "TerritoryId": 622,
"InteractionType": "SinglePlayerDuty", "InteractionType": "Interact",
"Fly": true "Fly": true
} }
] ]

View File

@ -35,7 +35,7 @@
"Z": 686.427 "Z": 686.427
}, },
"TerritoryId": 135, "TerritoryId": 135,
"InteractionType": "SinglePlayerDuty", "InteractionType": "Interact",
"AetheryteShortcut": "Lower La Noscea - Moraby Drydocks" "AetheryteShortcut": "Lower La Noscea - Moraby Drydocks"
} }
] ]

View File

@ -61,19 +61,7 @@
"TerritoryId": 156, "TerritoryId": 156,
"InteractionType": "Interact", "InteractionType": "Interact",
"AetheryteShortcut": "Mor Dhona", "AetheryteShortcut": "Mor Dhona",
"TargetTerritoryId": 351, "TargetTerritoryId": 351
"SkipConditions": {
"AetheryteShortcutIf": {
"InTerritory": [
351
]
},
"StepIf": {
"InTerritory": [
351
]
}
}
}, },
{ {
"DataId": 1032081, "DataId": 1032081,
@ -85,17 +73,13 @@
"TerritoryId": 351, "TerritoryId": 351,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"Comment": "Estinien vs. Arch Ultima", "Comment": "Estinien vs. Arch Ultima",
"SinglePlayerDutyOptions": { "DialogueChoices": [
"Enabled": false, {
"TestedBossModVersion": 292, "Type": "YesNo",
"Notes": [ "Prompt": "TEXT_LUCKMG110_03682_Q1_100_125",
"AI doesn't move automatically for the first boss", "Yes": true
"AI doesn't move automatically for the dialogue with gaius on the bridge", }
"After walking downstairs automatically, AI tries to run back towards the stairs (ignoring the arena boudnary)",
"After moving from the arena boundary, AI doesn't move into melee range and stops too far away when initially attacking"
] ]
},
"$": "This doesn't have a duty confirmation dialog, so we're treating TEXT_LUCKMG110_03682_Q1_100_125 as one"
} }
] ]
}, },

View File

@ -46,13 +46,6 @@
}, },
"TerritoryId": 817, "TerritoryId": 817,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Enabled": false,
"TestedBossModVersion": 292,
"Notes": [
"Doesn't walk to the teleporter to finish the duty"
]
},
"Fly": true, "Fly": true,
"Comment": "A Sleep Disturbed (Opo-Opo, Wolf, Serpent)", "Comment": "A Sleep Disturbed (Opo-Opo, Wolf, Serpent)",
"$": "The dialogue choices and data ids here are recycled", "$": "The dialogue choices and data ids here are recycled",

View File

@ -78,14 +78,6 @@
}, },
"TerritoryId": 918, "TerritoryId": 918,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Enabled": false,
"TestedBossModVersion": 292,
"Notes": [
"(phase 2) AI doesn't target Ardbert to start combat",
"(phase 2) VBM module: Elidibus' line cleave only covers half the length of the actual line (survivable)"
]
},
"Comment": "Fight NPCs, then Elidibus", "Comment": "Fight NPCs, then Elidibus",
"DialogueChoices": [ "DialogueChoices": [
{ {

View File

@ -84,10 +84,7 @@
}, },
"TerritoryId": 180, "TerritoryId": 180,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": { "Comment": "Great Ship Vylbrand"
"Enabled": true,
"TestedBossModVersion": 292
}
} }
] ]
}, },

View File

@ -46,15 +46,6 @@
"StopDistance": 7, "StopDistance": 7,
"TerritoryId": 132, "TerritoryId": 132,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Enabled": false,
"TestedBossModVersion": 293,
"Notes": [
"(Lunar Odin) AI doesn't pull Odin to start combat",
"(Lunar Ravana) AI doesn't pull Ravana to start combat",
"(Lunar Ravana) AI doesn't move out of directional parry directions"
]
},
"Comment": "Death Unto Dawn" "Comment": "Death Unto Dawn"
} }
] ]

View File

@ -99,9 +99,6 @@
} }
] ]
}, },
{
"Sequence": 5
},
{ {
"Sequence": 255, "Sequence": 255,
"Steps": [ "Steps": [

View File

@ -54,11 +54,6 @@
}, },
"TerritoryId": 816, "TerritoryId": 816,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Enabled": true,
"TestedBossModVersion": 293,
"$": "test: Redacted"
},
"ItemId": 2002569 "ItemId": 2002569
} }
] ]

View File

@ -104,9 +104,6 @@
"StopDistance": 5, "StopDistance": 5,
"TerritoryId": 829, "TerritoryId": 829,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": {
"Index": 1
},
"DialogueChoices": [ "DialogueChoices": [
{ {
"Type": "List", "Type": "List",

View File

@ -153,7 +153,7 @@
"Y": -14.169313, "Y": -14.169313,
"Z": 114.76306 "Z": 114.76306
}, },
"StopDistance": 6.9, "StopDistance": 7,
"TerritoryId": 962, "TerritoryId": 962,
"InteractionType": "Interact" "InteractionType": "Interact"
} }

View File

@ -146,8 +146,7 @@
"TerritoryId": 956, "TerritoryId": 956,
"InteractionType": "UseItem", "InteractionType": "UseItem",
"ItemId": 2003129, "ItemId": 2003129,
"Mount": false, "Mount": false
"DelaySecondsAtStart": 2
} }
] ]
}, },

View File

@ -30,13 +30,6 @@
"TerritoryId": 621, "TerritoryId": 621,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"Comment": "A Frosty Reception", "Comment": "A Frosty Reception",
"SinglePlayerDutyOptions": {
"Enabled": false,
"TestedBossModVersion": 293,
"Notes": [
"(Thancred) How many enemies get pulled during the stealth section is random; if you pull multiple you can die here. Can probably be fixed by retrying on very easy."
]
},
"DialogueChoices": [ "DialogueChoices": [
{ {
"Type": "List", "Type": "List",

View File

@ -59,15 +59,7 @@
}, },
"TerritoryId": 958, "TerritoryId": 958,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": { "Comment": "In from the Cold",
"Enabled": false,
"Notes": [
"Instance probably only works on very easy difficulty",
"AI doesn't move to first enemy",
"AI doesn't unmount from the Magitek Reaper",
"Navmesh takes 5+ minutes to build"
]
},
"DialogueChoices": [ "DialogueChoices": [
{ {
"Type": "YesNo", "Type": "YesNo",

View File

@ -54,10 +54,7 @@
}, },
"TerritoryId": 961, "TerritoryId": 961,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": { "Comment": "Venat"
"Enabled": true,
"TestedBossModVersion": 294
}
} }
] ]
}, },

View File

@ -29,11 +29,8 @@
}, },
"TerritoryId": 958, "TerritoryId": 958,
"InteractionType": "SinglePlayerDuty", "InteractionType": "SinglePlayerDuty",
"SinglePlayerDutyOptions": { "AetheryteShortcut": "Garlemald - Camp Broken Glass",
"Enabled": true, "Comment": "As the Heavens Burn"
"TestedBossModVersion": 294
},
"AetheryteShortcut": "Garlemald - Camp Broken Glass"
} }
] ]
}, },

View File

@ -302,7 +302,6 @@
"WakingSandsSolar", "WakingSandsSolar",
"RisingStonesSolar", "RisingStonesSolar",
"RoguesGuild", "RoguesGuild",
"NotRoguesGuild",
"DockStorehouse" "DockStorehouse"
] ]
} }
@ -1258,50 +1257,6 @@
] ]
} }
}, },
{
"if": {
"properties": {
"InteractionType": {
"const": "SinglePlayerDuty"
}
}
},
"then": {
"properties": {
"SinglePlayerDutyOptions": {
"type": "object",
"properties": {
"Enabled": {
"type": "boolean"
},
"Notes": {
"type": "array",
"items": {
"type": "string"
}
},
"Index": {
"type": "integer",
"minimum": 0,
"maximum": 1,
"description": "If a quest has multiple solo instances (which affects 5 quests total), indicates which one this is"
},
"TestedBossModVersion": {
"type": "number",
"minimum": 292
},
"$": {
"type": "string"
}
},
"TODO_required": [
"Enabled"
],
"additionalProperties": false
}
}
}
},
{ {
"if": { "if": {
"properties": { "properties": {

View File

@ -11,7 +11,6 @@ public sealed class SkipConditionConverter() : EnumConverter<EExtraSkipCondition
{ EExtraSkipCondition.WakingSandsSolar, "WakingSandsSolar" }, { EExtraSkipCondition.WakingSandsSolar, "WakingSandsSolar" },
{ EExtraSkipCondition.RisingStonesSolar, "RisingStonesSolar"}, { EExtraSkipCondition.RisingStonesSolar, "RisingStonesSolar"},
{ EExtraSkipCondition.RoguesGuild, "RoguesGuild"}, { EExtraSkipCondition.RoguesGuild, "RoguesGuild"},
{ EExtraSkipCondition.NotRoguesGuild, "NotRoguesGuild"},
{ EExtraSkipCondition.DockStorehouse, "DockStorehouse"}, { EExtraSkipCondition.DockStorehouse, "DockStorehouse"},
}; };
} }

View File

@ -15,7 +15,6 @@ public enum EExtraSkipCondition
/// Location for ROG quests in Limsa Lominsa; located far underneath the actual lower decks. /// Location for ROG quests in Limsa Lominsa; located far underneath the actual lower decks.
/// </summary> /// </summary>
RoguesGuild, RoguesGuild,
NotRoguesGuild,
/// <summary> /// <summary>
/// Location for NIN quests in Eastern La Noscea; located far underneath the actual zone. /// Location for NIN quests in Eastern La Noscea; located far underneath the actual zone.

View File

@ -91,8 +91,6 @@ public abstract class ElementId : IComparable<ElementId>, IEquatable<ElementId>
public sealed class QuestId(ushort value) : ElementId(value) public sealed class QuestId(ushort value) : ElementId(value)
{ {
public static QuestId FromRowId(uint rowId) => new((ushort)(rowId & 0xFFFF));
public override string ToString() public override string ToString()
{ {
return Value.ToString(CultureInfo.InvariantCulture); return Value.ToString(CultureInfo.InvariantCulture);

View File

@ -75,8 +75,6 @@ public sealed class QuestStep
public JumpDestination? JumpDestination { get; set; } public JumpDestination? JumpDestination { get; set; }
public uint? ContentFinderConditionId { get; set; } public uint? ContentFinderConditionId { get; set; }
public bool AutoDutyEnabled { get; set; } public bool AutoDutyEnabled { get; set; }
public SinglePlayerDutyOptions? SinglePlayerDutyOptions { get; set; }
public byte SinglePlayerDutyIndex => SinglePlayerDutyOptions?.Index ?? 0;
public SkipConditions? SkipConditions { get; set; } public SkipConditions? SkipConditions { get; set; }
public List<List<QuestWorkValue>?> RequiredQuestVariables { get; set; } = new(); public List<List<QuestWorkValue>?> RequiredQuestVariables { get; set; } = new();
@ -113,15 +111,12 @@ public sealed class QuestStep
public float CalculateActualStopDistance() public float CalculateActualStopDistance()
{ {
if (StopDistance is { } stopDistance) if (InteractionType == EInteractionType.WalkTo)
return stopDistance; return StopDistance ?? 0.25f;
if (InteractionType == EInteractionType.AttuneAetheryte)
return InteractionType switch return StopDistance ?? 10f;
{ else
EInteractionType.WalkTo => 0.25f, return StopDistance ?? DefaultStopDistance;
EInteractionType.AttuneAetheryte => 10f,
_ => DefaultStopDistance
};
} }
/// <summary> /// <summary>

View File

@ -1,10 +0,0 @@
using System.Collections.Generic;
namespace Questionable.Model.Questing;
public sealed class SinglePlayerDutyOptions
{
public bool Enabled { get; set; }
public List<string> Notes { get; set; } = [];
public byte Index { get; set; }
}

View File

@ -1,6 +1,6 @@
{ {
"$schema": "https://json-schema.org/draft/2020-12/schema", "$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-aethernetshard.json", "$id": "/liza/Questionable/raw/branch/master/Questionable.Model/common-aethernetshard.json",
"type": "string", "type": "string",
"enum": [ "enum": [
"[Gridania] Aetheryte Plaza", "[Gridania] Aetheryte Plaza",

View File

@ -1,6 +1,6 @@
{ {
"$schema": "https://json-schema.org/draft/2020-12/schema", "$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-aetheryte.json", "$id": "/liza/Questionable/raw/branch/master/Questionable.Model/common-aetheryte.json",
"type": "string", "type": "string",
"enum": [ "enum": [
"Gridania", "Gridania",

View File

@ -1,6 +1,6 @@
{ {
"$schema": "https://json-schema.org/draft/2020-12/schema", "$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://git.carvel.li//liza/Questionable/raw/branch/master/Questionable.Model/common-classjob.json", "$id": "/liza/Questionable/raw/branch/master/Questionable.Model/common-classjob.json",
"type": "string", "type": "string",
"enum": [ "enum": [
"Gladiator", "Gladiator",

View File

@ -1,6 +1,6 @@
{ {
"$schema": "https://json-schema.org/draft/2020-12/schema", "$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://git.carvel.li//liza/Questionable/raw/branch/master/Questionable.Model/common-completionflags.json", "$id": "/liza/Questionable/raw/branch/master/Questionable.Model/common-completionflags.json",
"type": "array", "type": "array",
"description": "Quest Variables that dictate whether or not this step is skipped: null is don't check, positive values need to be set, negative values need to be unset", "description": "Quest Variables that dictate whether or not this step is skipped: null is don't check, positive values need to be set, negative values need to be unset",
"items": { "items": {

View File

@ -1,6 +1,6 @@
{ {
"$schema": "https://json-schema.org/draft/2020-12/schema", "$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://git.carvel.li//liza/Questionable/raw/branch/master/Questionable.Model/common-vector3.json", "$id": "/liza/Questionable/raw/branch/master/Questionable.Model/common-vector3.json",
"type": "object", "type": "object",
"description": "Position in the world", "description": "Position in the world",
"properties": { "properties": {

View File

@ -19,6 +19,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GatheringPaths", "Gathering
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GatheringPathRenderer", "GatheringPathRenderer\GatheringPathRenderer.csproj", "{F514DA95-9867-4F3F-8062-ACE0C62E8740}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GatheringPathRenderer", "GatheringPathRenderer\GatheringPathRenderer.csproj", "{F514DA95-9867-4F3F-8062-ACE0C62E8740}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ECommons", "vendor\ECommons\ECommons\ECommons.csproj", "{A12D7B4B-8E6E-4DCF-A41A-12F62E9FF94B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BBFFC6EA-15B1-48FC-B4D3-D9491278C27F}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BBFFC6EA-15B1-48FC-B4D3-D9491278C27F}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
Directory.Build.targets = Directory.Build.targets Directory.Build.targets = Directory.Build.targets
@ -28,8 +30,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vendor", "vendor", "{8F5EC9
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NotificationMasterAPI", "vendor\NotificationMasterAPI\NotificationMasterAPI\NotificationMasterAPI.csproj", "{9BD494ED-22F2-487B-BCE1-435399A8720E}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NotificationMasterAPI", "vendor\NotificationMasterAPI\NotificationMasterAPI\NotificationMasterAPI.csproj", "{9BD494ED-22F2-487B-BCE1-435399A8720E}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pictomancy", "vendor\pictomancy\Pictomancy\Pictomancy.csproj", "{D1AE2F8C-BDE7-457F-A369-973101044A25}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64 Debug|x64 = Debug|x64
@ -68,20 +68,20 @@ Global
{F514DA95-9867-4F3F-8062-ACE0C62E8740}.Debug|x64.Build.0 = Debug|x64 {F514DA95-9867-4F3F-8062-ACE0C62E8740}.Debug|x64.Build.0 = Debug|x64
{F514DA95-9867-4F3F-8062-ACE0C62E8740}.Release|x64.ActiveCfg = Release|x64 {F514DA95-9867-4F3F-8062-ACE0C62E8740}.Release|x64.ActiveCfg = Release|x64
{F514DA95-9867-4F3F-8062-ACE0C62E8740}.Release|x64.Build.0 = Release|x64 {F514DA95-9867-4F3F-8062-ACE0C62E8740}.Release|x64.Build.0 = Release|x64
{A12D7B4B-8E6E-4DCF-A41A-12F62E9FF94B}.Debug|x64.ActiveCfg = Debug|x64
{A12D7B4B-8E6E-4DCF-A41A-12F62E9FF94B}.Debug|x64.Build.0 = Debug|x64
{A12D7B4B-8E6E-4DCF-A41A-12F62E9FF94B}.Release|x64.ActiveCfg = Release|x64
{A12D7B4B-8E6E-4DCF-A41A-12F62E9FF94B}.Release|x64.Build.0 = Release|x64
{9BD494ED-22F2-487B-BCE1-435399A8720E}.Debug|x64.ActiveCfg = Debug|x64 {9BD494ED-22F2-487B-BCE1-435399A8720E}.Debug|x64.ActiveCfg = Debug|x64
{9BD494ED-22F2-487B-BCE1-435399A8720E}.Debug|x64.Build.0 = Debug|x64 {9BD494ED-22F2-487B-BCE1-435399A8720E}.Debug|x64.Build.0 = Debug|x64
{9BD494ED-22F2-487B-BCE1-435399A8720E}.Release|x64.ActiveCfg = Release|x64 {9BD494ED-22F2-487B-BCE1-435399A8720E}.Release|x64.ActiveCfg = Release|x64
{9BD494ED-22F2-487B-BCE1-435399A8720E}.Release|x64.Build.0 = Release|x64 {9BD494ED-22F2-487B-BCE1-435399A8720E}.Release|x64.Build.0 = Release|x64
{D1AE2F8C-BDE7-457F-A369-973101044A25}.Debug|x64.ActiveCfg = Debug|x64
{D1AE2F8C-BDE7-457F-A369-973101044A25}.Debug|x64.Build.0 = Debug|x64
{D1AE2F8C-BDE7-457F-A369-973101044A25}.Release|x64.ActiveCfg = Release|x64
{D1AE2F8C-BDE7-457F-A369-973101044A25}.Release|x64.Build.0 = Release|x64
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
EndGlobalSection EndGlobalSection
GlobalSection(NestedProjects) = preSolution GlobalSection(NestedProjects) = preSolution
{A12D7B4B-8E6E-4DCF-A41A-12F62E9FF94B} = {8F5EC9D5-4CE7-433B-BB3A-782500E84DDB}
{9BD494ED-22F2-487B-BCE1-435399A8720E} = {8F5EC9D5-4CE7-433B-BB3A-782500E84DDB} {9BD494ED-22F2-487B-BCE1-435399A8720E} = {8F5EC9D5-4CE7-433B-BB3A-782500E84DDB}
{D1AE2F8C-BDE7-457F-A369-973101044A25} = {8F5EC9D5-4CE7-433B-BB3A-782500E84DDB}
EndGlobalSection EndGlobalSection
EndGlobal EndGlobal

Some files were not shown because too many files have changed in this diff Show More