Compare commits
40 Commits
Author | SHA1 | Date | |
---|---|---|---|
71a34e7b21 | |||
61c160ecfb | |||
009b81a90d | |||
|
260a9c1d30 | ||
|
ba54a1601c | ||
4d966e4353 | |||
|
70a7d22afc | ||
5a18813c9f | |||
e0a7b09848 | |||
238641f350 | |||
|
0e71d37424 | ||
|
501a2bd06d | ||
|
ccf077ed6b | ||
|
9dfe110d38 | ||
92b97a7caa | |||
c86f9955f7 | |||
5da2dc9f8e | |||
0265fcc0ae | |||
73e030b620 | |||
145a989a07 | |||
6c1c66971d | |||
07c5faa781 | |||
c1aadb8c9c | |||
6e1ee729da | |||
4d397022b9 | |||
1d9198eacd | |||
472aeac04a | |||
03f4c39ba8 | |||
28795e68e4 | |||
3ab1069ab7 | |||
f71ddeddfa | |||
c65da42cd1 | |||
ed4d279432 | |||
d4c1b4b3ac | |||
3b1bfcaade | |||
0d7263604b | |||
a540fd8b86 | |||
993d6918ec | |||
6342da8348 | |||
af545ea29b |
@ -1,5 +1,5 @@
|
|||||||
<Project>
|
<Project>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Version>4.0</Version>
|
<Version>4.4</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -3,16 +3,12 @@ using System.Collections.Generic;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Numerics;
|
using System.Numerics;
|
||||||
using System.Text.Json;
|
|
||||||
using System.Text.Json.Nodes;
|
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
using System.Text.Json.Serialization.Metadata;
|
|
||||||
using Dalamud.Game.ClientState.Objects;
|
using Dalamud.Game.ClientState.Objects;
|
||||||
using Dalamud.Game.ClientState.Objects.Enums;
|
using Dalamud.Game.ClientState.Objects.Enums;
|
||||||
using Dalamud.Game.ClientState.Objects.Types;
|
using Dalamud.Game.ClientState.Objects.Types;
|
||||||
using Dalamud.Game.Command;
|
using Dalamud.Game.Command;
|
||||||
using Dalamud.Plugin.Services;
|
using Dalamud.Plugin.Services;
|
||||||
using Lumina.Excel.GeneratedSheets;
|
using Lumina.Excel.Sheets;
|
||||||
using Questionable.Model;
|
using Questionable.Model;
|
||||||
using Questionable.Model.Gathering;
|
using Questionable.Model.Gathering;
|
||||||
using Questionable.Model.Questing;
|
using Questionable.Model.Questing;
|
||||||
@ -70,14 +66,14 @@ internal sealed class EditorCommands : IDisposable
|
|||||||
if (target == null || target.ObjectKind != ObjectKind.GatheringPoint)
|
if (target == null || target.ObjectKind != ObjectKind.GatheringPoint)
|
||||||
throw new Exception("No valid target");
|
throw new Exception("No valid target");
|
||||||
|
|
||||||
var gatheringPoint = _dataManager.GetExcelSheet<GatheringPoint>()!.GetRow(target.DataId);
|
var gatheringPoint = _dataManager.GetExcelSheet<GatheringPoint>().GetRowOrDefault(target.DataId);
|
||||||
if (gatheringPoint == null)
|
if (gatheringPoint == null)
|
||||||
throw new Exception("Invalid gathering point");
|
throw new Exception("Invalid gathering point");
|
||||||
|
|
||||||
FileInfo targetFile;
|
FileInfo targetFile;
|
||||||
GatheringRoot root;
|
GatheringRoot root;
|
||||||
var locationsInTerritory = _plugin.GetLocationsInTerritory(_clientState.TerritoryType).ToList();
|
var locationsInTerritory = _plugin.GetLocationsInTerritory(_clientState.TerritoryType).ToList();
|
||||||
var location = locationsInTerritory.SingleOrDefault(x => x.Id == gatheringPoint.GatheringPointBase.Row);
|
var location = locationsInTerritory.SingleOrDefault(x => x.Id == gatheringPoint.Value.GatheringPointBase.RowId);
|
||||||
if (location != null)
|
if (location != null)
|
||||||
{
|
{
|
||||||
targetFile = location.File;
|
targetFile = location.File;
|
||||||
@ -96,7 +92,7 @@ internal sealed class EditorCommands : IDisposable
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
(targetFile, root) = CreateNewFile(gatheringPoint, target);
|
(targetFile, root) = CreateNewFile(gatheringPoint.Value, target);
|
||||||
_chatGui.Print($"Creating new file under {targetFile.FullName}", "qG");
|
_chatGui.Print($"Creating new file under {targetFile.FullName}", "qG");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,16 +170,16 @@ internal sealed class EditorCommands : IDisposable
|
|||||||
?.File.Directory;
|
?.File.Directory;
|
||||||
if (targetFolder == null)
|
if (targetFolder == null)
|
||||||
{
|
{
|
||||||
var territoryInfo = _dataManager.GetExcelSheet<TerritoryType>()!.GetRow(_clientState.TerritoryType)!;
|
var territoryInfo = _dataManager.GetExcelSheet<TerritoryType>().GetRow(_clientState.TerritoryType);
|
||||||
targetFolder = _plugin.PathsDirectory
|
targetFolder = _plugin.PathsDirectory
|
||||||
.CreateSubdirectory(ExpansionData.ExpansionFolders[(EExpansionVersion)territoryInfo.ExVersion.Row])
|
.CreateSubdirectory(ExpansionData.ExpansionFolders[(EExpansionVersion)territoryInfo.ExVersion.RowId])
|
||||||
.CreateSubdirectory(territoryInfo.PlaceName.Value!.Name.ToString());
|
.CreateSubdirectory(territoryInfo.PlaceName.Value.Name.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
FileInfo targetFile =
|
FileInfo targetFile =
|
||||||
new FileInfo(
|
new FileInfo(
|
||||||
Path.Combine(targetFolder.FullName,
|
Path.Combine(targetFolder.FullName,
|
||||||
$"{gatheringPoint.GatheringPointBase.Row}_{gatheringPoint.PlaceName.Value!.Name}_{(_clientState.LocalPlayer!.ClassJob.Id == 16 ? "MIN" : "BTN")}.json"));
|
$"{gatheringPoint.GatheringPointBase.RowId}_{gatheringPoint.PlaceName.Value.Name}_{(_clientState.LocalPlayer!.ClassJob.RowId == 16 ? "MIN" : "BTN")}.json"));
|
||||||
var root = new GatheringRoot
|
var root = new GatheringRoot
|
||||||
{
|
{
|
||||||
Author = [_configuration.AuthorName],
|
Author = [_configuration.AuthorName],
|
||||||
|
@ -59,7 +59,7 @@ public sealed class RendererPlugin : IDalamudPlugin
|
|||||||
_editorWindow = new EditorWindow(this, _editorCommands, dataManager, targetManager, clientState, objectTable)
|
_editorWindow = new EditorWindow(this, _editorCommands, dataManager, targetManager, clientState, objectTable)
|
||||||
{ IsOpen = true };
|
{ IsOpen = true };
|
||||||
_windowSystem.AddWindow(_editorWindow);
|
_windowSystem.AddWindow(_editorWindow);
|
||||||
_currentClassJob = (EClassJob?)_clientState.LocalPlayer?.ClassJob.Id ?? EClassJob.Adventurer;
|
_currentClassJob = (EClassJob?)_clientState.LocalPlayer?.ClassJob.RowId ?? EClassJob.Adventurer;
|
||||||
|
|
||||||
_pluginInterface.GetIpcSubscriber<object>("Questionable.ReloadData")
|
_pluginInterface.GetIpcSubscriber<object>("Questionable.ReloadData")
|
||||||
.Subscribe(Reload);
|
.Subscribe(Reload);
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Numerics;
|
using System.Numerics;
|
||||||
using Dalamud.Game.ClientState.Objects;
|
using Dalamud.Game.ClientState.Objects;
|
||||||
@ -11,7 +10,7 @@ using Dalamud.Interface.Colors;
|
|||||||
using Dalamud.Interface.Windowing;
|
using Dalamud.Interface.Windowing;
|
||||||
using Dalamud.Plugin.Services;
|
using Dalamud.Plugin.Services;
|
||||||
using ImGuiNET;
|
using ImGuiNET;
|
||||||
using Lumina.Excel.GeneratedSheets;
|
using Lumina.Excel.Sheets;
|
||||||
using Questionable.Model.Gathering;
|
using Questionable.Model.Gathering;
|
||||||
|
|
||||||
namespace GatheringPathRenderer.Windows;
|
namespace GatheringPathRenderer.Windows;
|
||||||
@ -205,12 +204,12 @@ internal sealed class EditorWindow : Window
|
|||||||
}
|
}
|
||||||
else if (_target != null)
|
else if (_target != null)
|
||||||
{
|
{
|
||||||
var gatheringPoint = _dataManager.GetExcelSheet<GatheringPoint>()!.GetRow(_target.DataId);
|
var gatheringPoint = _dataManager.GetExcelSheet<GatheringPoint>().GetRowOrDefault(_target.DataId);
|
||||||
if (gatheringPoint == null)
|
if (gatheringPoint == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var locationsInTerritory = _plugin.GetLocationsInTerritory(_clientState.TerritoryType).ToList();
|
var locationsInTerritory = _plugin.GetLocationsInTerritory(_clientState.TerritoryType).ToList();
|
||||||
var location = locationsInTerritory.SingleOrDefault(x => x.Id == gatheringPoint.GatheringPointBase.Row);
|
var location = locationsInTerritory.SingleOrDefault(x => x.Id == gatheringPoint.Value.GatheringPointBase.RowId);
|
||||||
if (location != null)
|
if (location != null)
|
||||||
{
|
{
|
||||||
var targetFile = location.File;
|
var targetFile = location.File;
|
||||||
@ -234,9 +233,9 @@ internal sealed class EditorWindow : Window
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (ImGui.Button($"Create location ({gatheringPoint.GatheringPointBase.Row})"))
|
if (ImGui.Button($"Create location ({gatheringPoint.Value.GatheringPointBase.RowId})"))
|
||||||
{
|
{
|
||||||
var (targetFile, root) = _editorCommands.CreateNewFile(gatheringPoint, _target);
|
var (targetFile, root) = _editorCommands.CreateNewFile(gatheringPoint.Value, _target);
|
||||||
_plugin.Save(targetFile, root);
|
_plugin.Save(targetFile, root);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,9 +4,9 @@
|
|||||||
"net8.0-windows7.0": {
|
"net8.0-windows7.0": {
|
||||||
"DalamudPackager": {
|
"DalamudPackager": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[2.1.13, )",
|
"requested": "[11.0.0, )",
|
||||||
"resolved": "2.1.13",
|
"resolved": "11.0.0",
|
||||||
"contentHash": "rMN1omGe8536f4xLMvx9NwfvpAc9YFFfeXJ1t4P4PE6Gu8WCIoFliR1sh07hM+bfODmesk/dvMbji7vNI+B/pQ=="
|
"contentHash": "bjT7XUlhIJSmsE/O76b7weUX+evvGQctbQB8aKXt94o+oPWxHpCepxAGMs7Thow3AzCyqWs7cOpp9/2wcgRRQA=="
|
||||||
},
|
},
|
||||||
"DotNet.ReproducibleBuilds": {
|
"DotNet.ReproducibleBuilds": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
@ -87,7 +87,7 @@
|
|||||||
"llib": {
|
"llib": {
|
||||||
"type": "Project",
|
"type": "Project",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"DalamudPackager": "[2.1.13, )"
|
"DalamudPackager": "[11.0.0, )"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"questionable.model": {
|
"questionable.model": {
|
||||||
|
2
LLib
2
LLib
@ -1 +1 @@
|
|||||||
Subproject commit 70b0bef2459898a70f7b34b4d196bbaeb72397b1
|
Subproject commit 783fea977a2524dd63e717367fc026c52efe6c23
|
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
"Author": "plogon_enjoyer",
|
"Author": "plogon_enjoyer",
|
||||||
|
"Disabled": true,
|
||||||
"QuestSequence": [
|
"QuestSequence": [
|
||||||
{
|
{
|
||||||
"Sequence": 0,
|
"Sequence": 0,
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
"Author": "plogon_enjoyer",
|
"Author": "plogon_enjoyer",
|
||||||
|
"Disabled": true,
|
||||||
|
"Comment": "WIP too many cases",
|
||||||
"QuestSequence": [
|
"QuestSequence": [
|
||||||
{
|
{
|
||||||
"Sequence": 0,
|
"Sequence": 0,
|
||||||
@ -17,9 +19,118 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -175.15483,
|
||||||
|
"Y": 40,
|
||||||
|
"Z": 159.05237
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2003019,
|
||||||
|
"Position": {
|
||||||
|
"X": -88.059875,
|
||||||
|
"Y": 43.503418,
|
||||||
|
"Z": 149.00427
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"RequiredQuestVariables": [null, [4], null, null, null, null],
|
||||||
|
"Mount": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2003022,
|
||||||
|
"Position": {
|
||||||
|
"X": -170.85535,
|
||||||
|
"Y": 39.993896,
|
||||||
|
"Z": 135.45422
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"RequiredQuestVariables": [null, [5], null, null, null, null],
|
||||||
|
"Mount": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2003017,
|
||||||
|
"Position": {
|
||||||
|
"X": -97.48993,
|
||||||
|
"Y": 45.792236,
|
||||||
|
"Z": 197.28381
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"RequiredQuestVariables": [null, [20], null, null, null, null],
|
||||||
|
"Mount": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2003020,
|
||||||
|
"Position": {
|
||||||
|
"X": -77.836365,
|
||||||
|
"Y": 43.4729,
|
||||||
|
"Z": 155.50464
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"RequiredQuestVariables": [null, [21], null, null, null, null],
|
||||||
|
"Mount": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2003015,
|
||||||
|
"Position": {
|
||||||
|
"X": 133.62317,
|
||||||
|
"Y": 13.961914,
|
||||||
|
"Z": 152.26978
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"RequiredQuestVariables": [null, [36], null, null, null, null],
|
||||||
|
"Mount": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2003018,
|
||||||
|
"Position": {
|
||||||
|
"X": -100.572266,
|
||||||
|
"Y": 45.76172,
|
||||||
|
"Z": 211.04749
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"RequiredQuestVariables": [null, [37], null, null, null, null],
|
||||||
|
"Mount": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2003016,
|
||||||
|
"Position": {
|
||||||
|
"X": 185.19873,
|
||||||
|
"Y": 13.992493,
|
||||||
|
"Z": 231.89136
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"RequiredQuestVariables": [null, [52, 53], null, null, null, null],
|
||||||
|
"Mount": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 30.256956,
|
||||||
|
"Y": 38.639523,
|
||||||
|
"Z": 145.03891
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Mount": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1005551,
|
"DataId": 1005551,
|
||||||
"Position": {
|
"Position": {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
"Author": "plogon_enjoyer",
|
"Author": "plogon_enjoyer",
|
||||||
|
"Disabled": true,
|
||||||
"QuestSequence": [
|
"QuestSequence": [
|
||||||
{
|
{
|
||||||
"Sequence": 0,
|
"Sequence": 0,
|
||||||
|
@ -0,0 +1,213 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "plogon_enjoyer",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1005551,
|
||||||
|
"Position": {
|
||||||
|
"X": 98.924194,
|
||||||
|
"Y": 15.29447,
|
||||||
|
"Z": -349.4469
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1005745,
|
||||||
|
"Position": {
|
||||||
|
"X": 22.720581,
|
||||||
|
"Y": 4.240738,
|
||||||
|
"Z": -443.07623
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -126.48953,
|
||||||
|
"Y": 27.57419,
|
||||||
|
"Z": 138.61473
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2003048,
|
||||||
|
"Position": {
|
||||||
|
"X": -136.85822,
|
||||||
|
"Y": 18.753235,
|
||||||
|
"Z": 116.50256
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"RequiredQuestVariables": [null, null, [1, 2], null, null, null],
|
||||||
|
"Mount": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2003049,
|
||||||
|
"Position": {
|
||||||
|
"X": -121.78229,
|
||||||
|
"Y": 28.732666,
|
||||||
|
"Z": 140.33716
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"RequiredQuestVariables": [null, null, [3], null, null, null],
|
||||||
|
"Mount": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2003050,
|
||||||
|
"Position": {
|
||||||
|
"X": -91.96619,
|
||||||
|
"Y": 43.07617,
|
||||||
|
"Z": 156.84741
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"RequiredQuestVariables": [null, null, [4], null, null, null],
|
||||||
|
"Mount": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2003051,
|
||||||
|
"Position": {
|
||||||
|
"X": -55.40558,
|
||||||
|
"Y": 42.526855,
|
||||||
|
"Z": 192.18738
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"RequiredQuestVariables": [null, null, [1, 3, 4], null, null, null],
|
||||||
|
"Mount": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2003052,
|
||||||
|
"Position": {
|
||||||
|
"X": 6.668152,
|
||||||
|
"Y": 36.9115,
|
||||||
|
"Z": 207.01917
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"RequiredQuestVariables": [null, null, [2], null, null, null],
|
||||||
|
"Mount": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2003053,
|
||||||
|
"Position": {
|
||||||
|
"X": 73.31958,
|
||||||
|
"Y": 31.784546,
|
||||||
|
"Z": 153.76514
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"RequiredQuestVariables": [null, null, [1], null, null, null],
|
||||||
|
"Mount": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2003054,
|
||||||
|
"Position": {
|
||||||
|
"X": 79.42322,
|
||||||
|
"Y": 25.802979,
|
||||||
|
"Z": 208.66711
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"RequiredQuestVariables": [null, null, [2, 4], null, null, null],
|
||||||
|
"Mount": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2003055,
|
||||||
|
"Position": {
|
||||||
|
"X": 106.889404,
|
||||||
|
"Y": 14.602844,
|
||||||
|
"Z": 147.53943
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"RequiredQuestVariables": [null, null, [3], null, null, null],
|
||||||
|
"Mount": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 135.42383,
|
||||||
|
"Y": 8.102478,
|
||||||
|
"Z": 178.36267
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AutoOnEnterArea",
|
||||||
|
"KillEnemyDataIds": [2456],
|
||||||
|
"Mount": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2003056,
|
||||||
|
"Position": {
|
||||||
|
"X": 135.42383,
|
||||||
|
"Y": 8.102478,
|
||||||
|
"Z": 178.36267
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -63.849556,
|
||||||
|
"Y": 26.409807,
|
||||||
|
"Z": -383.9894
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"AetheryteShortcut": "Southern Thanalan - Little Ala Mhigo",
|
||||||
|
"Mount": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1005745,
|
||||||
|
"Position": {
|
||||||
|
"X": 22.720581,
|
||||||
|
"Y": 4.240738,
|
||||||
|
"Z": -443.07623
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1005551,
|
||||||
|
"Position": {
|
||||||
|
"X": 98.924194,
|
||||||
|
"Y": 15.29447,
|
||||||
|
"Z": -349.4469
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1011030,
|
||||||
|
"Position": {
|
||||||
|
"X": 7.522644,
|
||||||
|
"Y": -1.7667189E-06,
|
||||||
|
"Z": -68.589294
|
||||||
|
},
|
||||||
|
"TerritoryId": 388,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1010472,
|
||||||
|
"Position": {
|
||||||
|
"X": -53.26935,
|
||||||
|
"Y": 0.3093315,
|
||||||
|
"Z": 69.41321
|
||||||
|
},
|
||||||
|
"TerritoryId": 148,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AetheryteShortcut": "Central Shroud - Bentbranch Meadows"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,118 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1016089,
|
||||||
|
"Position": {
|
||||||
|
"X": -799.46594,
|
||||||
|
"Y": -133.2695,
|
||||||
|
"Z": -404.1352
|
||||||
|
},
|
||||||
|
"TerritoryId": 401,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1016093,
|
||||||
|
"Position": {
|
||||||
|
"X": -776.0281,
|
||||||
|
"Y": -133.35559,
|
||||||
|
"Z": -414.32825
|
||||||
|
},
|
||||||
|
"TerritoryId": 401,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1016219,
|
||||||
|
"Position": {
|
||||||
|
"X": 14.389221,
|
||||||
|
"Y": -111.05486,
|
||||||
|
"Z": 413.71777
|
||||||
|
},
|
||||||
|
"TerritoryId": 401,
|
||||||
|
"InteractionType": "Action",
|
||||||
|
"Action": "Buffet (Sanuwa)",
|
||||||
|
"Fly": true,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1016217,
|
||||||
|
"Position": {
|
||||||
|
"X": 97.48987,
|
||||||
|
"Y": -86.45681,
|
||||||
|
"Z": 466.57495
|
||||||
|
},
|
||||||
|
"TerritoryId": 401,
|
||||||
|
"InteractionType": "Action",
|
||||||
|
"Action": "Buffet (Sanuwa)",
|
||||||
|
"Fly": true,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1016218,
|
||||||
|
"Position": {
|
||||||
|
"X": 137.95679,
|
||||||
|
"Y": -87.380325,
|
||||||
|
"Z": 434.62268
|
||||||
|
},
|
||||||
|
"TerritoryId": 401,
|
||||||
|
"InteractionType": "Action",
|
||||||
|
"Action": "Buffet (Sanuwa)",
|
||||||
|
"Fly": true,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1016089,
|
||||||
|
"Position": {
|
||||||
|
"X": -799.46594,
|
||||||
|
"Y": -133.2695,
|
||||||
|
"Z": -404.1352
|
||||||
|
},
|
||||||
|
"TerritoryId": 401,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"Fly": true,
|
||||||
|
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -62,6 +62,16 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 58.39701,
|
||||||
|
"Y": -48.000008,
|
||||||
|
"Z": -172.36507
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1016803,
|
"DataId": 1016803,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -70,8 +80,7 @@
|
|||||||
"Z": -174.63953
|
"Z": -174.63953
|
||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "CompleteQuest",
|
"InteractionType": "CompleteQuest"
|
||||||
"Fly": true
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -58,6 +58,16 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 2,
|
"Sequence": 2,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 58.39701,
|
||||||
|
"Y": -48.000008,
|
||||||
|
"Z": -172.36507
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1016803,
|
"DataId": 1016803,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -66,8 +76,7 @@
|
|||||||
"Z": -174.63953
|
"Z": -174.63953
|
||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact"
|
||||||
"Fly": true
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -102,6 +111,16 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 58.39701,
|
||||||
|
"Y": -48.000008,
|
||||||
|
"Z": -172.36507
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1016803,
|
"DataId": 1016803,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -110,8 +129,7 @@
|
|||||||
"Z": -174.63953
|
"Z": -174.63953
|
||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "CompleteQuest",
|
"InteractionType": "CompleteQuest"
|
||||||
"Fly": true
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -98,6 +98,17 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 58.39701,
|
||||||
|
"Y": -48.000008,
|
||||||
|
"Z": -172.36507
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true,
|
||||||
|
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1016803,
|
"DataId": 1016803,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -106,9 +117,7 @@
|
|||||||
"Z": -174.63953
|
"Z": -174.63953
|
||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "CompleteQuest",
|
"InteractionType": "CompleteQuest"
|
||||||
"Fly": true,
|
|
||||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -62,6 +62,17 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 58.39701,
|
||||||
|
"Y": -48.000008,
|
||||||
|
"Z": -172.36507
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true,
|
||||||
|
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1016803,
|
"DataId": 1016803,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -70,9 +81,7 @@
|
|||||||
"Z": -174.63953
|
"Z": -174.63953
|
||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "CompleteQuest",
|
"InteractionType": "CompleteQuest"
|
||||||
"Fly": true,
|
|
||||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -91,6 +91,17 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 58.39701,
|
||||||
|
"Y": -48.000008,
|
||||||
|
"Z": -172.36507
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true,
|
||||||
|
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1016803,
|
"DataId": 1016803,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -99,9 +110,7 @@
|
|||||||
"Z": -174.63953
|
"Z": -174.63953
|
||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "CompleteQuest",
|
"InteractionType": "CompleteQuest"
|
||||||
"Fly": true,
|
|
||||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -91,6 +91,17 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 58.39701,
|
||||||
|
"Y": -48.000008,
|
||||||
|
"Z": -172.36507
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true,
|
||||||
|
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1016803,
|
"DataId": 1016803,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -99,9 +110,7 @@
|
|||||||
"Z": -174.63953
|
"Z": -174.63953
|
||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "CompleteQuest",
|
"InteractionType": "CompleteQuest"
|
||||||
"Fly": true,
|
|
||||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -73,6 +73,17 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 58.39701,
|
||||||
|
"Y": -48.000008,
|
||||||
|
"Z": -172.36507
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true,
|
||||||
|
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1016803,
|
"DataId": 1016803,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -81,9 +92,7 @@
|
|||||||
"Z": -174.63953
|
"Z": -174.63953
|
||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "CompleteQuest",
|
"InteractionType": "CompleteQuest"
|
||||||
"Fly": true,
|
|
||||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -58,6 +58,17 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 2,
|
"Sequence": 2,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 58.39701,
|
||||||
|
"Y": -48.000008,
|
||||||
|
"Z": -172.36507
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true,
|
||||||
|
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1016803,
|
"DataId": 1016803,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -66,9 +77,7 @@
|
|||||||
"Z": -174.63953
|
"Z": -174.63953
|
||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact"
|
||||||
"Fly": true,
|
|
||||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -88,14 +88,13 @@
|
|||||||
"Steps": [
|
"Steps": [
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
"X": 59.511234,
|
"X": 58.39701,
|
||||||
"Y": -48,
|
"Y": -48.000008,
|
||||||
"Z": -171.35385
|
"Z": -172.36507
|
||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
"Land": true,
|
|
||||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -148,14 +148,14 @@
|
|||||||
"Steps": [
|
"Steps": [
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
"X": 59.511234,
|
"X": 58.39701,
|
||||||
"Y": -48,
|
"Y": -48.000008,
|
||||||
"Z": -171.35385
|
"Z": -172.36507
|
||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
"Land": true
|
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1016803,
|
"DataId": 1016803,
|
||||||
|
@ -78,6 +78,17 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 58.39701,
|
||||||
|
"Y": -48.000008,
|
||||||
|
"Z": -172.36507
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true,
|
||||||
|
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1016803,
|
"DataId": 1016803,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -86,9 +97,7 @@
|
|||||||
"Z": -174.63953
|
"Z": -174.63953
|
||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "CompleteQuest",
|
"InteractionType": "CompleteQuest"
|
||||||
"Fly": true,
|
|
||||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -55,6 +55,16 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 58.39701,
|
||||||
|
"Y": -48.000008,
|
||||||
|
"Z": -172.36507
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1016803,
|
"DataId": 1016803,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -63,8 +73,7 @@
|
|||||||
"Z": -174.63953
|
"Z": -174.63953
|
||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "CompleteQuest",
|
"InteractionType": "CompleteQuest"
|
||||||
"Fly": true
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -91,6 +91,17 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 2,
|
"Sequence": 2,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 58.39701,
|
||||||
|
"Y": -48.000008,
|
||||||
|
"Z": -172.36507
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true,
|
||||||
|
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1016803,
|
"DataId": 1016803,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -99,9 +110,7 @@
|
|||||||
"Z": -174.63953
|
"Z": -174.63953
|
||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact"
|
||||||
"Fly": true,
|
|
||||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -0,0 +1,125 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1016803,
|
||||||
|
"Position": {
|
||||||
|
"X": 57.297607,
|
||||||
|
"Y": -47.842846,
|
||||||
|
"Z": -174.63953
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1016865,
|
||||||
|
"Position": {
|
||||||
|
"X": -272.23627,
|
||||||
|
"Y": -35.408485,
|
||||||
|
"Z": 219.07373
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine",
|
||||||
|
"Fly": true,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1016864,
|
||||||
|
"Position": {
|
||||||
|
"X": -452.32324,
|
||||||
|
"Y": -35.352047,
|
||||||
|
"Z": 174.30371
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1016866,
|
||||||
|
"Position": {
|
||||||
|
"X": -397.05505,
|
||||||
|
"Y": -34.192406,
|
||||||
|
"Z": 243.12195
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AfterInteraction",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
5551
|
||||||
|
],
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1016866,
|
||||||
|
"Position": {
|
||||||
|
"X": -397.05505,
|
||||||
|
"Y": -34.192406,
|
||||||
|
"Z": 243.12195
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 58.39701,
|
||||||
|
"Y": -48.000008,
|
||||||
|
"Z": -172.36507
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1016803,
|
||||||
|
"Position": {
|
||||||
|
"X": 57.297607,
|
||||||
|
"Y": -47.842846,
|
||||||
|
"Z": -174.63953
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "CompleteQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -101,6 +101,16 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 58.39701,
|
||||||
|
"Y": -48.000008,
|
||||||
|
"Z": -172.36507
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1016803,
|
"DataId": 1016803,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -109,8 +119,7 @@
|
|||||||
"Z": -174.63953
|
"Z": -174.63953
|
||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "CompleteQuest",
|
"InteractionType": "CompleteQuest"
|
||||||
"Fly": true
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -100,6 +100,16 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 58.39701,
|
||||||
|
"Y": -48.000008,
|
||||||
|
"Z": -172.36507
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1016803,
|
"DataId": 1016803,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -108,8 +118,7 @@
|
|||||||
"Z": -174.63953
|
"Z": -174.63953
|
||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "CompleteQuest",
|
"InteractionType": "CompleteQuest"
|
||||||
"Fly": true
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -73,6 +73,17 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 58.39701,
|
||||||
|
"Y": -48.000008,
|
||||||
|
"Z": -172.36507
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true,
|
||||||
|
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1016803,
|
"DataId": 1016803,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -81,9 +92,7 @@
|
|||||||
"Z": -174.63953
|
"Z": -174.63953
|
||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "CompleteQuest",
|
"InteractionType": "CompleteQuest"
|
||||||
"Fly": true,
|
|
||||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -101,6 +101,16 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 58.39701,
|
||||||
|
"Y": -48.000008,
|
||||||
|
"Z": -172.36507
|
||||||
|
},
|
||||||
|
"TerritoryId": 398,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1016803,
|
"DataId": 1016803,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -109,8 +119,7 @@
|
|||||||
"Z": -174.63953
|
"Z": -174.63953
|
||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "CompleteQuest",
|
"InteractionType": "CompleteQuest"
|
||||||
"Fly": true
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -22,9 +22,9 @@
|
|||||||
"Steps": [
|
"Steps": [
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
"X": 291.9449,
|
"X": 318.06195,
|
||||||
"Y": -62.62814,
|
"Y": -83.027016,
|
||||||
"Z": -214.1033
|
"Z": -226.5931
|
||||||
},
|
},
|
||||||
"TerritoryId": 613,
|
"TerritoryId": 613,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
@ -153,16 +153,6 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 2,
|
"Sequence": 2,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
{
|
|
||||||
"Position": {
|
|
||||||
"X": 804.21405,
|
|
||||||
"Y": 1.4000988,
|
|
||||||
"Z": 720.92487
|
|
||||||
},
|
|
||||||
"TerritoryId": 613,
|
|
||||||
"InteractionType": "WalkTo",
|
|
||||||
"Fly": true
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"DataId": 1024460,
|
"DataId": 1024460,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -172,6 +162,11 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 613,
|
"TerritoryId": 613,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Kugane",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Kugane] Aetheryte Plaza",
|
||||||
|
"[Kugane] The Ruby Price"
|
||||||
|
],
|
||||||
"Fly": true
|
"Fly": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -187,8 +182,8 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 613,
|
"TerritoryId": 613,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true,
|
"AetheryteShortcut": "Ruby Sea - Tamamizu",
|
||||||
"AetheryteShortcut": "Ruby Sea - Tamamizu"
|
"Fly": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1024217,
|
"DataId": 1024217,
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 613,
|
"TerritoryId": 613,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"RestartNavigationIfCancelled": false,
|
||||||
"Fly": true
|
"Fly": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -38,6 +39,7 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 613,
|
"TerritoryId": 613,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
"RestartNavigationIfCancelled": false,
|
||||||
"Fly": true
|
"Fly": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -58,9 +60,9 @@
|
|||||||
"Steps": [
|
"Steps": [
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
"X": 368.39856,
|
"X": 367.17773,
|
||||||
"Y": -116.624695,
|
"Y": -119.94679,
|
||||||
"Z": -291.34058
|
"Z": -292.3781
|
||||||
},
|
},
|
||||||
"TerritoryId": 613,
|
"TerritoryId": 613,
|
||||||
"InteractionType": "UseItem",
|
"InteractionType": "UseItem",
|
||||||
|
@ -0,0 +1,103 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "plogon_enjoyer",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1032659,
|
||||||
|
"Position": {
|
||||||
|
"X": 802.79236,
|
||||||
|
"Y": -45.91779,
|
||||||
|
"Z": -218.58557
|
||||||
|
},
|
||||||
|
"TerritoryId": 817,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1027716,
|
||||||
|
"Position": {
|
||||||
|
"X": 494.9873,
|
||||||
|
"Y": -6.555339,
|
||||||
|
"Z": -224.93329
|
||||||
|
},
|
||||||
|
"TerritoryId": 817,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Rak'tika - Fanow",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1032732,
|
||||||
|
"Position": {
|
||||||
|
"X": -26.93219,
|
||||||
|
"Y": -24.638563,
|
||||||
|
"Z": 319.35608
|
||||||
|
},
|
||||||
|
"TerritoryId": 817,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Rak'tika - Slitherbough",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1032750,
|
||||||
|
"Position": {
|
||||||
|
"X": -523.827,
|
||||||
|
"Y": 0.143766,
|
||||||
|
"Z": 227.55774
|
||||||
|
},
|
||||||
|
"TerritoryId": 817,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 4,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1032750,
|
||||||
|
"Position": {
|
||||||
|
"X": -523.827,
|
||||||
|
"Y": 0.143766,
|
||||||
|
"Z": 227.55774
|
||||||
|
},
|
||||||
|
"TerritoryId": 817,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1032660,
|
||||||
|
"Position": {
|
||||||
|
"X": 804.4098,
|
||||||
|
"Y": -45.9255,
|
||||||
|
"Z": -216.41876
|
||||||
|
},
|
||||||
|
"TerritoryId": 817,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AetheryteShortcut": "Rak'tika - Fanow",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,117 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "plogon_enjoyer",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1027234,
|
||||||
|
"Position": {
|
||||||
|
"X": 10.2387085,
|
||||||
|
"Y": 20.185999,
|
||||||
|
"Z": -138.2315
|
||||||
|
},
|
||||||
|
"TerritoryId": 819,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1028326,
|
||||||
|
"Position": {
|
||||||
|
"X": 10.940674,
|
||||||
|
"Y": 20.186,
|
||||||
|
"Z": -142.53455
|
||||||
|
},
|
||||||
|
"TerritoryId": 819,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"DialogueChoices": [
|
||||||
|
{
|
||||||
|
"Prompt": "TEXT_LUCKLA203_03232_Q1_000_000",
|
||||||
|
"Type": "List",
|
||||||
|
"Answer": "TEXT_LUCKLA203_03232_A1_000_001"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"TerritoryId": 819,
|
||||||
|
"InteractionType": "Craft",
|
||||||
|
"ItemId": 27247,
|
||||||
|
"ItemCount": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1027234,
|
||||||
|
"Position": {
|
||||||
|
"X": 10.2387085,
|
||||||
|
"Y": 20.185999,
|
||||||
|
"Z": -138.2315
|
||||||
|
},
|
||||||
|
"TerritoryId": 819,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1028438,
|
||||||
|
"Position": {
|
||||||
|
"X": -55.832825,
|
||||||
|
"Y": 3.9998174,
|
||||||
|
"Z": 198.6571
|
||||||
|
},
|
||||||
|
"TerritoryId": 819,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Crystarium] The Crystalline Mean",
|
||||||
|
"[Crystarium] Musica Universalis Markets"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 4,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1028438,
|
||||||
|
"Position": {
|
||||||
|
"X": -55.832825,
|
||||||
|
"Y": 3.9998174,
|
||||||
|
"Z": 198.6571
|
||||||
|
},
|
||||||
|
"TerritoryId": 819,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1027234,
|
||||||
|
"Position": {
|
||||||
|
"X": 10.2387085,
|
||||||
|
"Y": 20.185999,
|
||||||
|
"Z": -138.2315
|
||||||
|
},
|
||||||
|
"TerritoryId": 819,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Crystarium] Musica Universalis Markets",
|
||||||
|
"[Crystarium] The Crystalline Mean"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,133 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "plogon_enjoyer",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1027235,
|
||||||
|
"Position": {
|
||||||
|
"X": -19.516357,
|
||||||
|
"Y": 20.186,
|
||||||
|
"Z": -130.1748
|
||||||
|
},
|
||||||
|
"TerritoryId": 819,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1028484,
|
||||||
|
"Position": {
|
||||||
|
"X": -129.35083,
|
||||||
|
"Y": 0,
|
||||||
|
"Z": -62.912964
|
||||||
|
},
|
||||||
|
"TerritoryId": 819,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Crystarium] The Crystalline Mean",
|
||||||
|
"[Crystarium] Temenos Rookery"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1028484,
|
||||||
|
"Position": {
|
||||||
|
"X": -129.35083,
|
||||||
|
"Y": 0,
|
||||||
|
"Z": -62.912964
|
||||||
|
},
|
||||||
|
"TerritoryId": 819,
|
||||||
|
"InteractionType": "Say",
|
||||||
|
"ChatMessage": {
|
||||||
|
"Key": "TEXT_LUCKLA302_03234_SAYTODO_000_013"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"TerritoryId": 819,
|
||||||
|
"InteractionType": "Craft",
|
||||||
|
"ItemId": 27253,
|
||||||
|
"ItemCount": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1030659,
|
||||||
|
"Position": {
|
||||||
|
"X": -131.15137,
|
||||||
|
"Y": 0,
|
||||||
|
"Z": -65.53754
|
||||||
|
},
|
||||||
|
"TerritoryId": 819,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 4,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1028485,
|
||||||
|
"Position": {
|
||||||
|
"X": -492.3934,
|
||||||
|
"Y": 69.70277,
|
||||||
|
"Z": 570.18384
|
||||||
|
},
|
||||||
|
"TerritoryId": 816,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Il Mheg - Lydha Lran",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 5,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1028487,
|
||||||
|
"Position": {
|
||||||
|
"X": 337.84998,
|
||||||
|
"Y": 87.30014,
|
||||||
|
"Z": -710.65845
|
||||||
|
},
|
||||||
|
"TerritoryId": 816,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Il Mheg - Wolekdorf",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1027235,
|
||||||
|
"Position": {
|
||||||
|
"X": -19.516357,
|
||||||
|
"Y": 20.186,
|
||||||
|
"Z": -130.1748
|
||||||
|
},
|
||||||
|
"TerritoryId": 819,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AetheryteShortcut": "Crystarium",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Crystarium] Aetheryte Plaza",
|
||||||
|
"[Crystarium] The Crystalline Mean"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,131 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "plogon_enjoyer",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1027235,
|
||||||
|
"Position": {
|
||||||
|
"X": -19.516357,
|
||||||
|
"Y": 20.186,
|
||||||
|
"Z": -130.1748
|
||||||
|
},
|
||||||
|
"TerritoryId": 819,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1030659,
|
||||||
|
"Position": {
|
||||||
|
"X": -131.15137,
|
||||||
|
"Y": 0,
|
||||||
|
"Z": -65.53754
|
||||||
|
},
|
||||||
|
"TerritoryId": 819,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Crystarium] The Crystalline Mean",
|
||||||
|
"[Crystarium] Temenos Rookery"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"TerritoryId": 819,
|
||||||
|
"InteractionType": "Craft",
|
||||||
|
"ItemId": 27255,
|
||||||
|
"ItemCount": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1030659,
|
||||||
|
"Position": {
|
||||||
|
"X": -131.15137,
|
||||||
|
"Y": 0,
|
||||||
|
"Z": -65.53754
|
||||||
|
},
|
||||||
|
"TerritoryId": 819,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1028489,
|
||||||
|
"Position": {
|
||||||
|
"X": 355.42847,
|
||||||
|
"Y": 3.8289368,
|
||||||
|
"Z": 224.17017
|
||||||
|
},
|
||||||
|
"TerritoryId": 813,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Lakeland - Fort Jobb",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 4,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1028491,
|
||||||
|
"Position": {
|
||||||
|
"X": 29.251465,
|
||||||
|
"Y": 36.20521,
|
||||||
|
"Z": -207.38544
|
||||||
|
},
|
||||||
|
"TerritoryId": 819,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 5,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1030659,
|
||||||
|
"Position": {
|
||||||
|
"X": -131.15137,
|
||||||
|
"Y": 0,
|
||||||
|
"Z": -65.53754
|
||||||
|
},
|
||||||
|
"TerritoryId": 819,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Crystarium] The Amaro Launch",
|
||||||
|
"[Crystarium] Temenos Rookery"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1027235,
|
||||||
|
"Position": {
|
||||||
|
"X": -19.516357,
|
||||||
|
"Y": 20.186,
|
||||||
|
"Z": -130.1748
|
||||||
|
},
|
||||||
|
"TerritoryId": 819,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Crystarium] Temenos Rookery",
|
||||||
|
"[Crystarium] The Crystalline Mean"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1036044,
|
||||||
|
"Position": {
|
||||||
|
"X": 652.7046,
|
||||||
|
"Y": 297.47797,
|
||||||
|
"Z": -171.03839
|
||||||
|
},
|
||||||
|
"TerritoryId": 814,
|
||||||
|
"InteractionType": "AcceptQuest",
|
||||||
|
"AetheryteShortcut": "Kholusia - Tomra",
|
||||||
|
"Fly": true,
|
||||||
|
"DialogueChoices": [
|
||||||
|
{
|
||||||
|
"Type": "List",
|
||||||
|
"Prompt": "TEXT_LUCKTA523_04052_Q1_000_000",
|
||||||
|
"Answer": "TEXT_LUCKTA523_04052_A1_000_001"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 552.4747,
|
||||||
|
"Y": 294.7846,
|
||||||
|
"Z": -137.54712
|
||||||
|
},
|
||||||
|
"TerritoryId": 814,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "OverworldEnemies",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
10391
|
||||||
|
],
|
||||||
|
"CombatItemUse": {
|
||||||
|
"ItemId": 2003071,
|
||||||
|
"Condition": "Health%",
|
||||||
|
"Value": 30
|
||||||
|
},
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1036044,
|
||||||
|
"Position": {
|
||||||
|
"X": 652.7046,
|
||||||
|
"Y": 297.47797,
|
||||||
|
"Z": -171.03839
|
||||||
|
},
|
||||||
|
"TerritoryId": 814,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,84 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1044547,
|
||||||
|
"Position": {
|
||||||
|
"X": -241.68768,
|
||||||
|
"Y": 51.058994,
|
||||||
|
"Z": 620.8744
|
||||||
|
},
|
||||||
|
"TerritoryId": 816,
|
||||||
|
"InteractionType": "AcceptQuest",
|
||||||
|
"AetheryteShortcut": "Il Mheg - Lydha Lran",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DialogueChoices": [
|
||||||
|
{
|
||||||
|
"Type": "List",
|
||||||
|
"Prompt": "TEXT_SUBCTS681_04716_Q1_000_003",
|
||||||
|
"Answer": "TEXT_SUBCTS681_04716_A1_000_001"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1044560,
|
||||||
|
"Position": {
|
||||||
|
"X": -241.68768,
|
||||||
|
"Y": 51.058994,
|
||||||
|
"Z": 620.8744
|
||||||
|
},
|
||||||
|
"TerritoryId": 816,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2013247,
|
||||||
|
"Position": {
|
||||||
|
"X": 428.15283,
|
||||||
|
"Y": 3.2196045,
|
||||||
|
"Z": 23.483582
|
||||||
|
},
|
||||||
|
"TerritoryId": 817,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Rak'tika - Fanow",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1044560,
|
||||||
|
"Position": {
|
||||||
|
"X": -241.68768,
|
||||||
|
"Y": 51.058994,
|
||||||
|
"Z": 620.8744
|
||||||
|
},
|
||||||
|
"TerritoryId": 816,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AetheryteShortcut": "Il Mheg - Lydha Lran",
|
||||||
|
"Fly": true,
|
||||||
|
"NextQuestId": 4717
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1044550,
|
||||||
|
"Position": {
|
||||||
|
"X": -239.70398,
|
||||||
|
"Y": 51.05899,
|
||||||
|
"Z": 622.2477
|
||||||
|
},
|
||||||
|
"StopDistance": 5,
|
||||||
|
"TerritoryId": 816,
|
||||||
|
"InteractionType": "AcceptQuest",
|
||||||
|
"AetheryteShortcut": "Il Mheg - Lydha Lran",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1044562,
|
||||||
|
"Position": {
|
||||||
|
"X": -294.97223,
|
||||||
|
"Y": 67.46317,
|
||||||
|
"Z": 603.6621
|
||||||
|
},
|
||||||
|
"TerritoryId": 816,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -21,6 +21,17 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 1,
|
"Sequence": 1,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 807.9048,
|
||||||
|
"Y": 152.2857,
|
||||||
|
"Z": -243.60707
|
||||||
|
},
|
||||||
|
"TerritoryId": 961,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"AetheryteShortcut": "Elpis - Anagnorisis",
|
||||||
|
"Fly": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2012293,
|
"DataId": 2012293,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -30,8 +41,6 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 961,
|
"TerritoryId": 961,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
"AetheryteShortcut": "Elpis - Anagnorisis",
|
|
||||||
"Fly": true,
|
|
||||||
"TargetTerritoryId": 1025
|
"TargetTerritoryId": 1025
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -120,7 +129,8 @@
|
|||||||
"Z": 301.9912
|
"Z": 301.9912
|
||||||
},
|
},
|
||||||
"TerritoryId": 956,
|
"TerritoryId": 956,
|
||||||
"InteractionType": "CompleteQuest"
|
"InteractionType": "CompleteQuest",
|
||||||
|
"NextQuestId": 5252
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,126 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1048609,
|
||||||
|
"Position": {
|
||||||
|
"X": -10.696594,
|
||||||
|
"Y": 2.4000525,
|
||||||
|
"Z": -31.174255
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "AcceptQuest",
|
||||||
|
"AetheryteShortcut": "Old Sharlayan",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1045332,
|
||||||
|
"Position": {
|
||||||
|
"X": -639.704,
|
||||||
|
"Y": -27.177149,
|
||||||
|
"Z": 301.9912
|
||||||
|
},
|
||||||
|
"TerritoryId": 956,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Labyrinthos - Aporia"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 807.9048,
|
||||||
|
"Y": 152.2857,
|
||||||
|
"Z": -243.60707
|
||||||
|
},
|
||||||
|
"TerritoryId": 961,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"AetheryteShortcut": "Elpis - Anagnorisis",
|
||||||
|
"Fly": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2012293,
|
||||||
|
"Position": {
|
||||||
|
"X": 809.9336,
|
||||||
|
"Y": 151.81189,
|
||||||
|
"Z": -243.42719
|
||||||
|
},
|
||||||
|
"TerritoryId": 961,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"TargetTerritoryId": 1025
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1048610,
|
||||||
|
"Position": {
|
||||||
|
"X": 93.94971,
|
||||||
|
"Y": -1E-11,
|
||||||
|
"Z": 61.020752
|
||||||
|
},
|
||||||
|
"TerritoryId": 1025,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2014542,
|
||||||
|
"Position": {
|
||||||
|
"X": 104.57007,
|
||||||
|
"Y": -0.015319824,
|
||||||
|
"Z": 46.25
|
||||||
|
},
|
||||||
|
"TerritoryId": 1025,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 4,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1048610,
|
||||||
|
"Position": {
|
||||||
|
"X": 93.94971,
|
||||||
|
"Y": -1E-11,
|
||||||
|
"Z": 61.020752
|
||||||
|
},
|
||||||
|
"TerritoryId": 1025,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1045332,
|
||||||
|
"Position": {
|
||||||
|
"X": -639.704,
|
||||||
|
"Y": -27.177149,
|
||||||
|
"Z": 301.9912
|
||||||
|
},
|
||||||
|
"TerritoryId": 956,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AetheryteShortcut": "Labyrinthos - Aporia"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,62 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1037575,
|
||||||
|
"Position": {
|
||||||
|
"X": 6.454529,
|
||||||
|
"Y": -31.530432,
|
||||||
|
"Z": -78.14148
|
||||||
|
},
|
||||||
|
"TerritoryId": 956,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 379.89767,
|
||||||
|
"Y": 68.15723,
|
||||||
|
"Z": -169.26231
|
||||||
|
},
|
||||||
|
"TerritoryId": 956,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "OverworldEnemies",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
13415
|
||||||
|
],
|
||||||
|
"CombatItemUse": {
|
||||||
|
"ItemId": 2003316,
|
||||||
|
"Condition": "Health%",
|
||||||
|
"Value": 50
|
||||||
|
},
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1037575,
|
||||||
|
"Position": {
|
||||||
|
"X": 6.454529,
|
||||||
|
"Y": -31.530432,
|
||||||
|
"Z": -78.14148
|
||||||
|
},
|
||||||
|
"TerritoryId": 956,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AetheryteShortcut": "Labyrinthos - Sharlayan Hamlet",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,123 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1044156,
|
||||||
|
"Position": {
|
||||||
|
"X": -276.3562,
|
||||||
|
"Y": 39.993896,
|
||||||
|
"Z": 224.26172
|
||||||
|
},
|
||||||
|
"TerritoryId": 1055,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2013553,
|
||||||
|
"Position": {
|
||||||
|
"X": -389.82227,
|
||||||
|
"Y": 3.250122,
|
||||||
|
"Z": 238.02539
|
||||||
|
},
|
||||||
|
"TerritoryId": 1055,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1046221,
|
||||||
|
"Position": {
|
||||||
|
"X": -303.12048,
|
||||||
|
"Y": 39.993896,
|
||||||
|
"Z": 244.80042
|
||||||
|
},
|
||||||
|
"TerritoryId": 1055,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1046279,
|
||||||
|
"Position": {
|
||||||
|
"X": -147.17328,
|
||||||
|
"Y": 48.330666,
|
||||||
|
"Z": 164.38538
|
||||||
|
},
|
||||||
|
"TerritoryId": 1055,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1046281,
|
||||||
|
"Position": {
|
||||||
|
"X": -118.21167,
|
||||||
|
"Y": 91.550545,
|
||||||
|
"Z": 398.79456
|
||||||
|
},
|
||||||
|
"TerritoryId": 1055,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 4,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1046221,
|
||||||
|
"Position": {
|
||||||
|
"X": -303.12048,
|
||||||
|
"Y": 39.993896,
|
||||||
|
"Z": 244.80042
|
||||||
|
},
|
||||||
|
"TerritoryId": 1055,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1046284,
|
||||||
|
"Position": {
|
||||||
|
"X": -402.2431,
|
||||||
|
"Y": 1.7196094,
|
||||||
|
"Z": 226.4591
|
||||||
|
},
|
||||||
|
"StopDistance": 5,
|
||||||
|
"TerritoryId": 1055,
|
||||||
|
"InteractionType": "CompleteQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -53,7 +53,21 @@
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null
|
null
|
||||||
]
|
],
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"NearPosition": {
|
||||||
|
"Position": {
|
||||||
|
"X": 770.7179,
|
||||||
|
"Y": 12.84657,
|
||||||
|
"Z": -263.99634
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"MaximumDistance": 300
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2014481,
|
"DataId": 2014481,
|
||||||
|
@ -39,7 +39,21 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 1188,
|
"TerritoryId": 1188,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
"Fly": true
|
"Fly": true,
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"NearPosition": {
|
||||||
|
"Position": {
|
||||||
|
"X": 770.7179,
|
||||||
|
"Y": 12.84657,
|
||||||
|
"Z": -263.99634
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"MaximumDistance": 300
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -48,7 +48,21 @@
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
64
|
64
|
||||||
]
|
],
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"NearPosition": {
|
||||||
|
"Position": {
|
||||||
|
"X": 770.7179,
|
||||||
|
"Y": 12.84657,
|
||||||
|
"Z": -263.99634
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"MaximumDistance": 300
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2014485,
|
"DataId": 2014485,
|
||||||
@ -101,7 +115,21 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 1188,
|
"TerritoryId": 1188,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true
|
"Fly": true,
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"NearPosition": {
|
||||||
|
"Position": {
|
||||||
|
"X": 770.7179,
|
||||||
|
"Y": 12.84657,
|
||||||
|
"Z": -263.99634
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"MaximumDistance": 300
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1051711,
|
"DataId": 1051711,
|
||||||
|
@ -39,7 +39,21 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 1188,
|
"TerritoryId": 1188,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
"Fly": true
|
"Fly": true,
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"NearPosition": {
|
||||||
|
"Position": {
|
||||||
|
"X": 770.7179,
|
||||||
|
"Y": 12.84657,
|
||||||
|
"Z": -263.99634
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"MaximumDistance": 300
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -62,6 +76,42 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 3,
|
"Sequence": 3,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 548.1944,
|
||||||
|
"Y": 6.15866,
|
||||||
|
"Z": -196.99664
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "WalkTo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 610.0975,
|
||||||
|
"Y": 7.8043165,
|
||||||
|
"Z": -228.70596
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "WalkTo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 680.4834,
|
||||||
|
"Y": 10.053757,
|
||||||
|
"Z": -263.73697
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "WalkTo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 743.98376,
|
||||||
|
"Y": 9.793373,
|
||||||
|
"Z": -263.45914
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "WalkTo"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1052306,
|
"DataId": 1052306,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -85,7 +135,21 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 1188,
|
"TerritoryId": 1188,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true
|
"Fly": true,
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"NearPosition": {
|
||||||
|
"Position": {
|
||||||
|
"X": 770.7179,
|
||||||
|
"Y": 12.84657,
|
||||||
|
"Z": -263.99634
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"MaximumDistance": 300
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1051711,
|
"DataId": 1051711,
|
||||||
|
@ -31,9 +31,20 @@
|
|||||||
"Sequence": 1,
|
"Sequence": 1,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
{
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -165.49648,
|
||||||
|
"Y": 8.736965,
|
||||||
|
"Z": -401.72836
|
||||||
|
},
|
||||||
"TerritoryId": 1188,
|
"TerritoryId": 1188,
|
||||||
"InteractionType": "None",
|
"InteractionType": "WalkTo",
|
||||||
"AetheryteShortcut": "Kozama'uka - Ok'hanu"
|
"AetheryteShortcut": "Kozama'uka - Ok'hanu",
|
||||||
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
|
"Flying": "Locked"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1052307,
|
"DataId": 1052307,
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
"Author": "liza",
|
"Author": "liza",
|
||||||
"Comment": "TODO untested how many RNG states this has",
|
|
||||||
"QuestSequence": [
|
"QuestSequence": [
|
||||||
{
|
{
|
||||||
"Sequence": 0,
|
"Sequence": 0,
|
||||||
@ -40,7 +39,21 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 1188,
|
"TerritoryId": 1188,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
"Fly": true
|
"Fly": true,
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"NearPosition": {
|
||||||
|
"Position": {
|
||||||
|
"X": 770.7179,
|
||||||
|
"Y": 12.84657,
|
||||||
|
"Z": -263.99634
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"MaximumDistance": 300
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -98,6 +111,32 @@
|
|||||||
null,
|
null,
|
||||||
null
|
null
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2014490,
|
||||||
|
"Position": {
|
||||||
|
"X": 485.6183,
|
||||||
|
"Y": 10.8185425,
|
||||||
|
"Z": -281.7884
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AfterInteraction",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
18173
|
||||||
|
],
|
||||||
|
"RequiredQuestVariables": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"High": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -47,7 +47,21 @@
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
128
|
128
|
||||||
]
|
],
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"NearPosition": {
|
||||||
|
"Position": {
|
||||||
|
"X": 770.7179,
|
||||||
|
"Y": 12.84657,
|
||||||
|
"Z": -263.99634
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"MaximumDistance": 300
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2014495,
|
"DataId": 2014495,
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
"Author": "liza",
|
"Author": "liza",
|
||||||
"Disabled": true,
|
|
||||||
"QuestSequence": [
|
"QuestSequence": [
|
||||||
{
|
{
|
||||||
"Sequence": 0,
|
"Sequence": 0,
|
||||||
@ -28,6 +27,93 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2014497,
|
||||||
|
"Position": {
|
||||||
|
"X": -130.7851,
|
||||||
|
"Y": 114.39685,
|
||||||
|
"Z": 240.31421
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AfterInteraction",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
18174
|
||||||
|
],
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Earthenshire",
|
||||||
|
"Fly": true,
|
||||||
|
"RequiredQuestVariables": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"High": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2014498,
|
||||||
|
"Position": {
|
||||||
|
"X": -56.565247,
|
||||||
|
"Y": 111.77234,
|
||||||
|
"Z": 172.62524
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AfterInteraction",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
18174
|
||||||
|
],
|
||||||
|
"Fly": true,
|
||||||
|
"RequiredQuestVariables": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"High": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2014499,
|
||||||
|
"Position": {
|
||||||
|
"X": -84.18408,
|
||||||
|
"Y": 111.436646,
|
||||||
|
"Z": 268.05518
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AfterInteraction",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
18174
|
||||||
|
],
|
||||||
|
"Fly": true,
|
||||||
|
"RequiredQuestVariables": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"High": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
"Author": "liza",
|
"Author": "liza",
|
||||||
"Disabled": true,
|
|
||||||
"QuestSequence": [
|
"QuestSequence": [
|
||||||
{
|
{
|
||||||
"Sequence": 0,
|
"Sequence": 0,
|
||||||
@ -28,6 +27,74 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1052324,
|
||||||
|
"Position": {
|
||||||
|
"X": -248.18805,
|
||||||
|
"Y": 110.17465,
|
||||||
|
"Z": 189.01343
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Earthenshire",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1052326,
|
||||||
|
"Position": {
|
||||||
|
"X": -304.61584,
|
||||||
|
"Y": 110.20639,
|
||||||
|
"Z": 725.39856
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true,
|
||||||
|
"RequiredQuestVariables": [
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"High": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1052435,
|
||||||
|
"Position": {
|
||||||
|
"X": 505.76025,
|
||||||
|
"Y": 115.10293,
|
||||||
|
"Z": 205.7373
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Many Fires",
|
||||||
|
"RequiredQuestVariables": [
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"High": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
"Author": "liza",
|
"Author": "liza",
|
||||||
"Disabled": true,
|
|
||||||
"QuestSequence": [
|
"QuestSequence": [
|
||||||
{
|
{
|
||||||
"Sequence": 0,
|
"Sequence": 0,
|
||||||
@ -28,6 +27,99 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1051798,
|
||||||
|
"Position": {
|
||||||
|
"X": 897.734,
|
||||||
|
"Y": 6.8223433,
|
||||||
|
"Z": -285.1759
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1052328,
|
||||||
|
"Position": {
|
||||||
|
"X": 171.6792,
|
||||||
|
"Y": 16.762953,
|
||||||
|
"Z": -112.44379
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Action",
|
||||||
|
"Action": "Bosom Brook",
|
||||||
|
"Fly": true,
|
||||||
|
"RequiredQuestVariables": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"High": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1052329,
|
||||||
|
"Position": {
|
||||||
|
"X": 216.7544,
|
||||||
|
"Y": 16.31888,
|
||||||
|
"Z": -99.687195
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Action",
|
||||||
|
"Action": "Bosom Brook",
|
||||||
|
"Fly": true,
|
||||||
|
"RequiredQuestVariables": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"High": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1052327,
|
||||||
|
"Position": {
|
||||||
|
"X": 186.38892,
|
||||||
|
"Y": 21.742897,
|
||||||
|
"Z": -74.47931
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Action",
|
||||||
|
"Action": "Bosom Brook",
|
||||||
|
"Fly": true,
|
||||||
|
"RequiredQuestVariables": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"High": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
@ -38,7 +38,21 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 1188,
|
"TerritoryId": 1188,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"Fly": true
|
"Fly": true,
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"NearPosition": {
|
||||||
|
"Position": {
|
||||||
|
"X": 770.7179,
|
||||||
|
"Y": 12.84657,
|
||||||
|
"Z": -263.99634
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"MaximumDistance": 300
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1052331,
|
"DataId": 1052331,
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
"Author": "liza",
|
"Author": "liza",
|
||||||
"Disabled": true,
|
|
||||||
"QuestSequence": [
|
"QuestSequence": [
|
||||||
{
|
{
|
||||||
"Sequence": 0,
|
"Sequence": 0,
|
||||||
@ -28,6 +27,84 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1052333,
|
||||||
|
"Position": {
|
||||||
|
"X": 775.1736,
|
||||||
|
"Y": 12.871736,
|
||||||
|
"Z": -196.0022
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1052335,
|
||||||
|
"Position": {
|
||||||
|
"X": 867.76526,
|
||||||
|
"Y": 14.402381,
|
||||||
|
"Z": -171.31305
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1052334,
|
||||||
|
"Position": {
|
||||||
|
"X": 864.5609,
|
||||||
|
"Y": 15.056413,
|
||||||
|
"Z": -256.27533
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1052336,
|
||||||
|
"Position": {
|
||||||
|
"X": 838.4375,
|
||||||
|
"Y": 14.301746,
|
||||||
|
"Z": -222.06458
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
@ -39,7 +116,7 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 1188,
|
"TerritoryId": 1188,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"AetheryteShortcut": "Kozama'uka - Dock Poga"
|
"Fly": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1051711,
|
"DataId": 1051711,
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
"Author": "liza",
|
"Author": "liza",
|
||||||
"Disabled": true,
|
|
||||||
"QuestSequence": [
|
"QuestSequence": [
|
||||||
{
|
{
|
||||||
"Sequence": 0,
|
"Sequence": 0,
|
||||||
@ -28,6 +27,62 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 746.76465,
|
||||||
|
"Y": 15.431515,
|
||||||
|
"Z": -201.92921
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"NearPosition": {
|
||||||
|
"Position": {
|
||||||
|
"X": 770.7179,
|
||||||
|
"Y": 12.84657,
|
||||||
|
"Z": -263.99634
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"MaximumDistance": 300
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1051741,
|
||||||
|
"Position": {
|
||||||
|
"X": 744.19763,
|
||||||
|
"Y": 15.431515,
|
||||||
|
"Z": -199.17603
|
||||||
|
},
|
||||||
|
"StopDistance": 7,
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1052341,
|
||||||
|
"Position": {
|
||||||
|
"X": 239.49023,
|
||||||
|
"Y": 111.689354,
|
||||||
|
"Z": 699.3667
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Many Fires",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
"Author": "liza",
|
"Author": "liza",
|
||||||
"Disabled": true,
|
|
||||||
"QuestSequence": [
|
"QuestSequence": [
|
||||||
{
|
{
|
||||||
"Sequence": 0,
|
"Sequence": 0,
|
||||||
@ -28,6 +27,109 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2014508,
|
||||||
|
"Position": {
|
||||||
|
"X": 566.1554,
|
||||||
|
"Y": 123.552246,
|
||||||
|
"Z": 700.4043
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AfterInteraction",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
18177
|
||||||
|
],
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Many Fires",
|
||||||
|
"Fly": true,
|
||||||
|
"RequiredQuestVariables": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"High": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2014509,
|
||||||
|
"Position": {
|
||||||
|
"X": 557.94604,
|
||||||
|
"Y": 124.65088,
|
||||||
|
"Z": 778.56104
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AfterInteraction",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
18177
|
||||||
|
],
|
||||||
|
"Fly": true,
|
||||||
|
"RequiredQuestVariables": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"High": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2014507,
|
||||||
|
"Position": {
|
||||||
|
"X": 721.8584,
|
||||||
|
"Y": 123.09448,
|
||||||
|
"Z": 729.9762
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AfterInteraction",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
18177
|
||||||
|
],
|
||||||
|
"Fly": true,
|
||||||
|
"RequiredQuestVariables": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"High": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1052443,
|
||||||
|
"Position": {
|
||||||
|
"X": 641.8097,
|
||||||
|
"Y": 122.10785,
|
||||||
|
"Z": 730.70874
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
"Author": "liza",
|
"Author": "liza",
|
||||||
"Disabled": true,
|
|
||||||
"QuestSequence": [
|
"QuestSequence": [
|
||||||
{
|
{
|
||||||
"Sequence": 0,
|
"Sequence": 0,
|
||||||
@ -28,6 +27,96 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2014511,
|
||||||
|
"Position": {
|
||||||
|
"X": 226.85583,
|
||||||
|
"Y": 2.9450073,
|
||||||
|
"Z": -199.6643
|
||||||
|
},
|
||||||
|
"StopDistance": 1,
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2014510,
|
||||||
|
"Position": {
|
||||||
|
"X": 218.1582,
|
||||||
|
"Y": 2.2124634,
|
||||||
|
"Z": -184.92413
|
||||||
|
},
|
||||||
|
"StopDistance": 1,
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2014512,
|
||||||
|
"Position": {
|
||||||
|
"X": 61.53955,
|
||||||
|
"Y": 8.102478,
|
||||||
|
"Z": -230.79272
|
||||||
|
},
|
||||||
|
"StopDistance": 1,
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 746.76465,
|
||||||
|
"Y": 15.431515,
|
||||||
|
"Z": -201.92921
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Dock Poga"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1051741,
|
||||||
|
"Position": {
|
||||||
|
"X": 744.19763,
|
||||||
|
"Y": 15.431515,
|
||||||
|
"Z": -199.17603
|
||||||
|
},
|
||||||
|
"StopDistance": 7,
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
@ -39,7 +128,21 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 1188,
|
"TerritoryId": 1188,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"AetheryteShortcut": "Kozama'uka - Dock Poga"
|
"Fly": true,
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"NearPosition": {
|
||||||
|
"Position": {
|
||||||
|
"X": 770.7179,
|
||||||
|
"Y": 12.84657,
|
||||||
|
"Z": -263.99634
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"MaximumDistance": 300
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1051711,
|
"DataId": 1051711,
|
||||||
|
@ -163,6 +163,21 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 780.3438,
|
||||||
|
"Y": 13.823656,
|
||||||
|
"Z": -238.32625
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
|
"AetheryteUnlocked": "Kozama'uka - Dock Poga"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"TerritoryId": 1188,
|
"TerritoryId": 1188,
|
||||||
"InteractionType": "AttuneAetheryte",
|
"InteractionType": "AttuneAetheryte",
|
||||||
|
@ -0,0 +1,171 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 809.655,
|
||||||
|
"Y": 17.004526,
|
||||||
|
"Z": -257.89868
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
||||||
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1051710,
|
||||||
|
"Position": {
|
||||||
|
"X": 822.629,
|
||||||
|
"Y": 17.102613,
|
||||||
|
"Z": -263.20288
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1051733,
|
||||||
|
"Position": {
|
||||||
|
"X": 553.06323,
|
||||||
|
"Y": 115.84422,
|
||||||
|
"Z": 173.32715
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Many Fires"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1051734,
|
||||||
|
"Position": {
|
||||||
|
"X": 588.7998,
|
||||||
|
"Y": 116.71518,
|
||||||
|
"Z": 216.84595
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1051735,
|
||||||
|
"Position": {
|
||||||
|
"X": 614.9232,
|
||||||
|
"Y": 119.49004,
|
||||||
|
"Z": 172.16748
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1051736,
|
||||||
|
"Position": {
|
||||||
|
"X": 573.3883,
|
||||||
|
"Y": 116,
|
||||||
|
"Z": 202.62451
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2014432,
|
||||||
|
"Position": {
|
||||||
|
"X": 663.569,
|
||||||
|
"Y": 117.50964,
|
||||||
|
"Z": 647.9437
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 4,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1051738,
|
||||||
|
"Position": {
|
||||||
|
"X": 661.7991,
|
||||||
|
"Y": 117.68325,
|
||||||
|
"Z": 646.6925
|
||||||
|
},
|
||||||
|
"StopDistance": 5,
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 5,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1051739,
|
||||||
|
"Position": {
|
||||||
|
"X": 410.39136,
|
||||||
|
"Y": 122.23778,
|
||||||
|
"Z": 797.5432
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 6,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1051738,
|
||||||
|
"Position": {
|
||||||
|
"X": 661.7991,
|
||||||
|
"Y": 117.68325,
|
||||||
|
"Z": 646.6925
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1051710,
|
||||||
|
"Position": {
|
||||||
|
"X": 822.629,
|
||||||
|
"Y": 17.102613,
|
||||||
|
"Z": -263.20288
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Dock Poga"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -965,7 +965,8 @@
|
|||||||
"Katon",
|
"Katon",
|
||||||
"Raiton",
|
"Raiton",
|
||||||
"Hide",
|
"Hide",
|
||||||
"Slug Shot"
|
"Slug Shot",
|
||||||
|
"Bosom Brook"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -41,5 +41,6 @@ public sealed class ActionConverter() : EnumConverter<EAction>(Values)
|
|||||||
{ EAction.Katon, "Katon" },
|
{ EAction.Katon, "Katon" },
|
||||||
{ EAction.Raiton, "Raiton" },
|
{ EAction.Raiton, "Raiton" },
|
||||||
{ EAction.SlugShot, "Slug Shot" },
|
{ EAction.SlugShot, "Slug Shot" },
|
||||||
|
{ EAction.BosomBrook, "Bosom Brook" },
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,7 @@ public enum EAction
|
|||||||
Raiton = 2267,
|
Raiton = 2267,
|
||||||
RabbitMedium = 2272,
|
RabbitMedium = 2272,
|
||||||
SlugShot = 7412,
|
SlugShot = 7412,
|
||||||
|
BosomBrook = 37173,
|
||||||
|
|
||||||
CollectMiner = 240,
|
CollectMiner = 240,
|
||||||
ScourMiner = 22182,
|
ScourMiner = 22182,
|
||||||
@ -84,6 +85,7 @@ public static class EActionExtensions
|
|||||||
or EAction.YellowGulal
|
or EAction.YellowGulal
|
||||||
or EAction.BlueGulal
|
or EAction.BlueGulal
|
||||||
or EAction.ElectrixFlux
|
or EAction.ElectrixFlux
|
||||||
or EAction.HopStep;
|
or EAction.HopStep
|
||||||
|
or EAction.BosomBrook;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=vendor_005CECommons/@EntryIndexedValue">ExplicitlyExcluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=vendor/@EntryIndexedValue">ExplicitlyExcluded</s:String>
|
||||||
<s:Boolean x:Key="/Default/Environment/AutoImport2/=CSHARP/BlackLists/=Newtonsoft_002E_002A/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/Environment/AutoImport2/=CSHARP/BlackLists/=Newtonsoft_002E_002A/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=aporia/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=aporia/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=arcadion/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=arcadion/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
@ -7,7 +7,7 @@ namespace Questionable;
|
|||||||
|
|
||||||
internal sealed class Configuration : IPluginConfiguration
|
internal sealed class Configuration : IPluginConfiguration
|
||||||
{
|
{
|
||||||
public const int PluginSetupVersion = 1;
|
public const int PluginSetupVersion = 2;
|
||||||
|
|
||||||
public int Version { get; set; } =1 ;
|
public int Version { get; set; } =1 ;
|
||||||
public int PluginSetupCompleteVersion { get; set; }
|
public int PluginSetupCompleteVersion { get; set; }
|
||||||
@ -28,7 +28,6 @@ internal sealed class Configuration : IPluginConfiguration
|
|||||||
public bool HideInAllInstances { get; set; } = true;
|
public bool HideInAllInstances { get; set; } = true;
|
||||||
public bool UseEscToCancelQuesting { get; set; } = true;
|
public bool UseEscToCancelQuesting { get; set; } = true;
|
||||||
public bool ShowIncompleteSeasonalEvents { get; set; } = true;
|
public bool ShowIncompleteSeasonalEvents { get; set; } = true;
|
||||||
public bool AutomaticallyCompleteSnipeTasks { get; set; }
|
|
||||||
public bool ConfigureTextAdvance { get; set; } = true;
|
public bool ConfigureTextAdvance { get; set; } = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,8 +142,7 @@ internal sealed class ItemUseModule : ICombatModule
|
|||||||
{
|
{
|
||||||
BattleChara* battleChara = (BattleChara*)gameObject.Address;
|
BattleChara* battleChara = (BattleChara*)gameObject.Address;
|
||||||
if (_combatData.CombatItemUse.Condition == ECombatItemUseCondition.Incapacitated)
|
if (_combatData.CombatItemUse.Condition == ECombatItemUseCondition.Incapacitated)
|
||||||
//return (byte)(((nint)battleChara + 0x1C68) & 0x40) != 0; // FIXME 7.1
|
return (battleChara->ActorControlFlags & 0x40) != 0;
|
||||||
return false;
|
|
||||||
|
|
||||||
if (_combatData.CombatItemUse.Condition == ECombatItemUseCondition.HealthPercent)
|
if (_combatData.CombatItemUse.Condition == ECombatItemUseCondition.HealthPercent)
|
||||||
return (100f * battleChara->Health / battleChara->MaxHealth) < _combatData.CombatItemUse.Value;
|
return (100f * battleChara->Health / battleChara->MaxHealth) < _combatData.CombatItemUse.Value;
|
||||||
|
@ -98,7 +98,6 @@ internal sealed class InteractionUiController : IDisposable
|
|||||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "SelectYesno", SelectYesnoPostSetup);
|
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "SelectYesno", SelectYesnoPostSetup);
|
||||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "PointMenu", PointMenuPostSetup);
|
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "PointMenu", PointMenuPostSetup);
|
||||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "HousingSelectBlock", HousingSelectBlockPostSetup);
|
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "HousingSelectBlock", HousingSelectBlockPostSetup);
|
||||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "TelepotTown", TeleportTownPostSetup);
|
|
||||||
|
|
||||||
unsafe
|
unsafe
|
||||||
{
|
{
|
||||||
@ -756,12 +755,12 @@ internal sealed class InteractionUiController : IDisposable
|
|||||||
private bool TryFindWarp(ushort targetTerritoryId, string actualPrompt, [NotNullWhen(true)] out uint? warpId,
|
private bool TryFindWarp(ushort targetTerritoryId, string actualPrompt, [NotNullWhen(true)] out uint? warpId,
|
||||||
[NotNullWhen(true)] out string? warpText)
|
[NotNullWhen(true)] out string? warpText)
|
||||||
{
|
{
|
||||||
var warps = _dataManager.GetExcelSheet<Warp>()!
|
var warps = _dataManager.GetExcelSheet<Warp>()
|
||||||
.Where(x => x.RowId > 0 && x.TerritoryType.RowId == targetTerritoryId);
|
.Where(x => x.RowId > 0 && x.TerritoryType.RowId == targetTerritoryId);
|
||||||
foreach (var entry in warps)
|
foreach (var entry in warps)
|
||||||
{
|
{
|
||||||
string? excelName = entry.Name.ToString();
|
string excelName = entry.Name.ToString();
|
||||||
string? excelQuestion = entry.Question.ToString();
|
string excelQuestion = entry.Question.ToString();
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(excelQuestion) && GameFunctions.GameStringEquals(excelQuestion, actualPrompt))
|
if (!string.IsNullOrEmpty(excelQuestion) && GameFunctions.GameStringEquals(excelQuestion, actualPrompt))
|
||||||
{
|
{
|
||||||
@ -848,46 +847,6 @@ internal sealed class InteractionUiController : IDisposable
|
|||||||
addon->FireCallbackInt(0);
|
addon->FireCallbackInt(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void TeleportTownPostSetup(AddonEvent type, AddonArgs args)
|
|
||||||
{
|
|
||||||
if (ShouldHandleUiInteractions &&
|
|
||||||
_questController.HasCurrentTaskMatching(out AethernetShortcut.Task? aethernetShortcut) &&
|
|
||||||
aethernetShortcut.From.IsFirmamentAetheryte())
|
|
||||||
{
|
|
||||||
// this might be better via atkvalues; but this works for now
|
|
||||||
uint toIndex = aethernetShortcut.To switch
|
|
||||||
{
|
|
||||||
EAetheryteLocation.FirmamentMendicantsCourt => 0,
|
|
||||||
EAetheryteLocation.FirmamentMattock => 1,
|
|
||||||
EAetheryteLocation.FirmamentNewNest => 2,
|
|
||||||
EAetheryteLocation.FirmanentSaintRoellesDais => 3,
|
|
||||||
EAetheryteLocation.FirmamentFeatherfall => 4,
|
|
||||||
EAetheryteLocation.FirmamentHoarfrostHall => 5,
|
|
||||||
EAetheryteLocation.FirmamentWesternRisensongQuarter => 6,
|
|
||||||
EAetheryteLocation.FIrmamentEasternRisensongQuarter => 7,
|
|
||||||
_ => uint.MaxValue,
|
|
||||||
};
|
|
||||||
|
|
||||||
if (toIndex == uint.MaxValue)
|
|
||||||
return;
|
|
||||||
|
|
||||||
_logger.LogInformation("Teleporting to {ToName} with menu index {ToIndex}", aethernetShortcut.From,
|
|
||||||
toIndex);
|
|
||||||
unsafe
|
|
||||||
{
|
|
||||||
var teleportToDestination = stackalloc AtkValue[]
|
|
||||||
{
|
|
||||||
new() { Type = ValueType.Int, Int = 11 },
|
|
||||||
new() { Type = ValueType.UInt, UInt = toIndex }
|
|
||||||
};
|
|
||||||
|
|
||||||
var addon = (AtkUnitBase*)args.Addon;
|
|
||||||
addon->FireCallback(2, teleportToDestination);
|
|
||||||
addon->FireCallback(2, teleportToDestination, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private StringOrRegex? ResolveReference(Quest? quest, string? excelSheet, ExcelRef? excelRef, bool isRegExp)
|
private StringOrRegex? ResolveReference(Quest? quest, string? excelSheet, ExcelRef? excelRef, bool isRegExp)
|
||||||
{
|
{
|
||||||
if (excelRef == null)
|
if (excelRef == null)
|
||||||
@ -905,7 +864,6 @@ internal sealed class InteractionUiController : IDisposable
|
|||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "TelepotTown", TeleportTownPostSetup);
|
|
||||||
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "HousingSelectBlock", HousingSelectBlockPostSetup);
|
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "HousingSelectBlock", HousingSelectBlockPostSetup);
|
||||||
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "PointMenu", PointMenuPostSetup);
|
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "PointMenu", PointMenuPostSetup);
|
||||||
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "SelectYesno", SelectYesnoPostSetup);
|
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "SelectYesno", SelectYesnoPostSetup);
|
||||||
|
@ -120,11 +120,15 @@ internal abstract class MiniTaskController<T>
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
case ETaskResult.TaskComplete:
|
case ETaskResult.TaskComplete:
|
||||||
|
case ETaskResult.CreateNewTasks:
|
||||||
_logger.LogInformation("{Task} → {Result}, remaining tasks: {RemainingTaskCount}",
|
_logger.LogInformation("{Task} → {Result}, remaining tasks: {RemainingTaskCount}",
|
||||||
_taskQueue.CurrentTaskExecutor.CurrentTask, result, _taskQueue.RemainingTasks.Count());
|
_taskQueue.CurrentTaskExecutor.CurrentTask, result, _taskQueue.RemainingTasks.Count());
|
||||||
|
|
||||||
OnTaskComplete(_taskQueue.CurrentTaskExecutor.CurrentTask);
|
OnTaskComplete(_taskQueue.CurrentTaskExecutor.CurrentTask);
|
||||||
|
|
||||||
|
if (result == ETaskResult.CreateNewTasks && _taskQueue.CurrentTaskExecutor is IExtraTaskCreator extraTaskCreator)
|
||||||
|
_taskQueue.EnqueueAll(extraTaskCreator.CreateExtraTasks());
|
||||||
|
|
||||||
_taskQueue.CurrentTaskExecutor = null;
|
_taskQueue.CurrentTaskExecutor = null;
|
||||||
|
|
||||||
// handled in next update
|
// handled in next update
|
||||||
|
@ -12,14 +12,14 @@ namespace Questionable.Controller.Steps.Common;
|
|||||||
internal static class SendNotification
|
internal static class SendNotification
|
||||||
{
|
{
|
||||||
internal sealed class Factory(
|
internal sealed class Factory(
|
||||||
Configuration configuration,
|
AutomatonIpc automatonIpc,
|
||||||
TerritoryData territoryData) : SimpleTaskFactory
|
TerritoryData territoryData) : SimpleTaskFactory
|
||||||
{
|
{
|
||||||
public override ITask? CreateTask(Quest quest, QuestSequence sequence, QuestStep step)
|
public override ITask? CreateTask(Quest quest, QuestSequence sequence, QuestStep step)
|
||||||
{
|
{
|
||||||
return step.InteractionType switch
|
return step.InteractionType switch
|
||||||
{
|
{
|
||||||
EInteractionType.Snipe when !configuration.General.AutomaticallyCompleteSnipeTasks =>
|
EInteractionType.Snipe when !automatonIpc.IsAutoSnipeEnabled =>
|
||||||
new Task(step.InteractionType, step.Comment),
|
new Task(step.InteractionType, step.Comment),
|
||||||
EInteractionType.Duty =>
|
EInteractionType.Duty =>
|
||||||
new Task(step.InteractionType, step.ContentFinderConditionId.HasValue
|
new Task(step.InteractionType, step.ContentFinderConditionId.HasValue
|
||||||
|
@ -11,6 +11,11 @@ internal enum ETaskResult
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
SkipRemainingTasksForStep,
|
SkipRemainingTasksForStep,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Assumes the task executor implements <see cref="IExtraTaskCreator"/>.
|
||||||
|
/// </summary>
|
||||||
|
CreateNewTasks,
|
||||||
|
|
||||||
NextStep,
|
NextStep,
|
||||||
End,
|
End,
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ using FFXIVClientStructs.FFXIV.Client.Game;
|
|||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Questionable.Controller.Steps.Shared;
|
using Questionable.Controller.Steps.Shared;
|
||||||
using Questionable.Controller.Utils;
|
using Questionable.Controller.Utils;
|
||||||
|
using Questionable.External;
|
||||||
using Questionable.Functions;
|
using Questionable.Functions;
|
||||||
using Questionable.Model;
|
using Questionable.Model;
|
||||||
using Questionable.Model.Questing;
|
using Questionable.Model.Questing;
|
||||||
@ -16,7 +17,7 @@ namespace Questionable.Controller.Steps.Interactions;
|
|||||||
|
|
||||||
internal static class Interact
|
internal static class Interact
|
||||||
{
|
{
|
||||||
internal sealed class Factory(Configuration configuration) : ITaskFactory
|
internal sealed class Factory(AutomatonIpc automatonIpc) : ITaskFactory
|
||||||
{
|
{
|
||||||
public IEnumerable<ITask> CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step)
|
public IEnumerable<ITask> CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step)
|
||||||
{
|
{
|
||||||
@ -43,7 +44,7 @@ internal static class Interact
|
|||||||
}
|
}
|
||||||
else if (step.InteractionType == EInteractionType.Snipe)
|
else if (step.InteractionType == EInteractionType.Snipe)
|
||||||
{
|
{
|
||||||
if (!configuration.General.AutomaticallyCompleteSnipeTasks)
|
if (!automatonIpc.IsAutoSnipeEnabled)
|
||||||
yield break;
|
yield break;
|
||||||
}
|
}
|
||||||
else if (step.InteractionType != EInteractionType.Interact)
|
else if (step.InteractionType != EInteractionType.Interact)
|
||||||
|
@ -204,19 +204,11 @@ internal static class AethernetShortcut
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void DoTeleport()
|
private void DoTeleport()
|
||||||
{
|
|
||||||
if (Task.From.IsFirmamentAetheryte())
|
|
||||||
{
|
|
||||||
logger.LogInformation("Using manual teleport interaction");
|
|
||||||
_teleported = gameFunctions.InteractWith((uint)Task.From, ObjectKind.EventObj);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
logger.LogInformation("Using lifestream to teleport to {Destination}", Task.To);
|
logger.LogInformation("Using lifestream to teleport to {Destination}", Task.To);
|
||||||
lifestreamIpc.Teleport(Task.To);
|
lifestreamIpc.Teleport(Task.To);
|
||||||
_teleported = true;
|
_teleported = true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public override ETaskResult Update()
|
public override ETaskResult Update()
|
||||||
{
|
{
|
||||||
|
@ -4,7 +4,6 @@ using System.Linq;
|
|||||||
using Dalamud.Game.Text;
|
using Dalamud.Game.Text;
|
||||||
using Dalamud.Game.Text.SeStringHandling;
|
using Dalamud.Game.Text.SeStringHandling;
|
||||||
using Dalamud.Plugin.Services;
|
using Dalamud.Plugin.Services;
|
||||||
using FFXIVClientStructs.FFXIV.Application.Network.WorkDefinitions;
|
|
||||||
using FFXIVClientStructs.FFXIV.Client.Game;
|
using FFXIVClientStructs.FFXIV.Client.Game;
|
||||||
using LLib.GameData;
|
using LLib.GameData;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
@ -19,14 +18,7 @@ namespace Questionable.Controller.Steps.Shared;
|
|||||||
|
|
||||||
internal static class Gather
|
internal static class Gather
|
||||||
{
|
{
|
||||||
internal sealed class Factory(
|
internal sealed class Factory : ITaskFactory
|
||||||
IServiceProvider serviceProvider,
|
|
||||||
MovementController movementController,
|
|
||||||
GatheringPointRegistry gatheringPointRegistry,
|
|
||||||
IClientState clientState,
|
|
||||||
GatheringData gatheringData,
|
|
||||||
TerritoryData territoryData,
|
|
||||||
ILogger<Factory> logger) : ITaskFactory
|
|
||||||
{
|
{
|
||||||
public IEnumerable<ITask> CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step)
|
public IEnumerable<ITask> CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step)
|
||||||
{
|
{
|
||||||
@ -34,17 +26,42 @@ internal static class Gather
|
|||||||
yield break;
|
yield break;
|
||||||
|
|
||||||
foreach (var itemToGather in step.ItemsToGather)
|
foreach (var itemToGather in step.ItemsToGather)
|
||||||
|
{
|
||||||
|
yield return new DelayedGatheringTask(itemToGather, quest);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal sealed record DelayedGatheringTask(GatheredItem GatheredItem, Quest Quest) : ITask
|
||||||
|
{
|
||||||
|
public override string ToString() => $"Gathering(pending for {GatheredItem.ItemId})";
|
||||||
|
}
|
||||||
|
|
||||||
|
internal sealed class DelayedGatheringExecutor(
|
||||||
|
MovementController movementController,
|
||||||
|
GatheringData gatheringData,
|
||||||
|
GatheringPointRegistry gatheringPointRegistry,
|
||||||
|
TerritoryData territoryData,
|
||||||
|
IClientState clientState,
|
||||||
|
IServiceProvider serviceProvider,
|
||||||
|
ILogger<DelayedGatheringExecutor> logger) : TaskExecutor<DelayedGatheringTask>, IExtraTaskCreator
|
||||||
|
{
|
||||||
|
protected override bool Start() => true;
|
||||||
|
|
||||||
|
public override ETaskResult Update() => ETaskResult.CreateNewTasks;
|
||||||
|
|
||||||
|
public IEnumerable<ITask> CreateExtraTasks()
|
||||||
{
|
{
|
||||||
EClassJob currentClassJob = (EClassJob)clientState.LocalPlayer!.ClassJob.RowId;
|
EClassJob currentClassJob = (EClassJob)clientState.LocalPlayer!.ClassJob.RowId;
|
||||||
if (!gatheringData.TryGetGatheringPointId(itemToGather.ItemId, currentClassJob,
|
if (!gatheringData.TryGetGatheringPointId(Task.GatheredItem.ItemId, currentClassJob,
|
||||||
out GatheringPointId? gatheringPointId))
|
out GatheringPointId? gatheringPointId))
|
||||||
throw new TaskException($"No gathering point found for item {itemToGather.ItemId}");
|
throw new TaskException($"No gathering point found for item {Task.GatheredItem.ItemId}");
|
||||||
|
|
||||||
if (!gatheringPointRegistry.TryGetGatheringPoint(gatheringPointId, out GatheringRoot? gatheringRoot))
|
if (!gatheringPointRegistry.TryGetGatheringPoint(gatheringPointId, out GatheringRoot? gatheringRoot))
|
||||||
throw new TaskException($"No path found for gathering point {gatheringPointId}");
|
throw new TaskException($"No path found for gathering point {gatheringPointId}");
|
||||||
|
|
||||||
if (HasRequiredItems(itemToGather))
|
if (HasRequiredItems(Task.GatheredItem))
|
||||||
continue;
|
yield break;
|
||||||
|
|
||||||
using (var _ = logger.BeginScope("Gathering(inner)"))
|
using (var _ = logger.BeginScope("Gathering(inner)"))
|
||||||
{
|
{
|
||||||
@ -56,7 +73,7 @@ internal static class Gather
|
|||||||
foreach (var gatheringStep in gatheringSequence.Steps)
|
foreach (var gatheringStep in gatheringSequence.Steps)
|
||||||
{
|
{
|
||||||
foreach (var task in serviceProvider.GetRequiredService<TaskCreator>()
|
foreach (var task in serviceProvider.GetRequiredService<TaskCreator>()
|
||||||
.CreateTasks(quest, gatheringSequence, gatheringStep))
|
.CreateTasks(Task.Quest, gatheringSequence, gatheringStep))
|
||||||
if (task is WaitAtEnd.NextStep)
|
if (task is WaitAtEnd.NextStep)
|
||||||
yield return new SkipMarker();
|
yield return new SkipMarker();
|
||||||
else
|
else
|
||||||
@ -71,10 +88,9 @@ internal static class Gather
|
|||||||
yield return new WaitCondition.Task(() => movementController.IsNavmeshReady,
|
yield return new WaitCondition.Task(() => movementController.IsNavmeshReady,
|
||||||
"Wait(navmesh ready)");
|
"Wait(navmesh ready)");
|
||||||
|
|
||||||
yield return new GatheringTask(gatheringPointId, itemToGather);
|
yield return new GatheringTask(gatheringPointId, Task.GatheredItem);
|
||||||
yield return new WaitAtEnd.WaitDelay();
|
yield return new WaitAtEnd.WaitDelay();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private unsafe bool HasRequiredItems(GatheredItem itemToGather)
|
private unsafe bool HasRequiredItems(GatheredItem itemToGather)
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Questionable.Model;
|
||||||
|
|
||||||
namespace Questionable.Controller.Steps;
|
namespace Questionable.Controller.Steps;
|
||||||
|
|
||||||
@ -16,6 +18,11 @@ internal interface ITaskExecutor
|
|||||||
ETaskResult Update();
|
ETaskResult Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal interface IExtraTaskCreator : ITaskExecutor
|
||||||
|
{
|
||||||
|
IEnumerable<ITask> CreateExtraTasks();
|
||||||
|
}
|
||||||
|
|
||||||
internal abstract class TaskExecutor<T> : ITaskExecutor
|
internal abstract class TaskExecutor<T> : ITaskExecutor
|
||||||
where T : class, ITask
|
where T : class, ITask
|
||||||
{
|
{
|
||||||
|
@ -18,6 +18,11 @@ internal sealed class TaskQueue
|
|||||||
_tasks.Add(task);
|
_tasks.Add(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void EnqueueAll(IEnumerable<ITask> tasks)
|
||||||
|
{
|
||||||
|
_tasks.InsertRange(0, tasks);
|
||||||
|
}
|
||||||
|
|
||||||
public bool TryDequeue([NotNullWhen(true)] out ITask? task)
|
public bool TryDequeue([NotNullWhen(true)] out ITask? task)
|
||||||
{
|
{
|
||||||
task = _tasks.FirstOrDefault();
|
task = _tasks.FirstOrDefault();
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
using System;
|
|
||||||
using Dalamud.Hooking;
|
|
||||||
using Dalamud.Plugin.Services;
|
|
||||||
using FFXIVClientStructs.FFXIV.Client.Game.Event;
|
|
||||||
using FFXIVClientStructs.FFXIV.Common.Lua;
|
|
||||||
|
|
||||||
namespace Questionable.Controller.Utils;
|
|
||||||
|
|
||||||
internal sealed unsafe class AutoSnipeHandler : IDisposable
|
|
||||||
{
|
|
||||||
private readonly QuestController _questController;
|
|
||||||
private readonly Configuration _configuration;
|
|
||||||
private readonly Hook<EnqueueSnipeTaskDelegate> _enqueueSnipeTaskHook;
|
|
||||||
|
|
||||||
private delegate ulong EnqueueSnipeTaskDelegate(EventSceneModuleImplBase* scene, lua_State* state);
|
|
||||||
|
|
||||||
public AutoSnipeHandler(QuestController questController, Configuration configuration, IGameInteropProvider gameInteropProvider)
|
|
||||||
{
|
|
||||||
_questController = questController;
|
|
||||||
_configuration = configuration;
|
|
||||||
|
|
||||||
_enqueueSnipeTaskHook =
|
|
||||||
gameInteropProvider.HookFromSignature<EnqueueSnipeTaskDelegate>(
|
|
||||||
"48 89 5C 24 ?? 48 89 6C 24 ?? 48 89 74 24 ?? 57 48 83 EC 50 48 8B F1 48 8D 4C 24 ?? E8 ?? ?? ?? ?? 48 8B 4C 24 ??",
|
|
||||||
EnqueueSnipeTask);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Enable() => _enqueueSnipeTaskHook.Enable();
|
|
||||||
|
|
||||||
private ulong EnqueueSnipeTask(EventSceneModuleImplBase* scene, lua_State* state)
|
|
||||||
{
|
|
||||||
if (_configuration.General.AutomaticallyCompleteSnipeTasks && _questController.IsRunning)
|
|
||||||
{
|
|
||||||
var val = state->top;
|
|
||||||
val->tt = 3;
|
|
||||||
val->value.n = 1;
|
|
||||||
state->top += 1;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return _enqueueSnipeTaskHook.Original.Invoke(scene, state);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
_enqueueSnipeTaskHook.Dispose();
|
|
||||||
}
|
|
||||||
}
|
|
@ -11,7 +11,7 @@ internal sealed class AetherCurrentData
|
|||||||
|
|
||||||
public AetherCurrentData(IDataManager dataManager)
|
public AetherCurrentData(IDataManager dataManager)
|
||||||
{
|
{
|
||||||
_overworldCurrents = dataManager.GetExcelSheet<AetherCurrentCompFlgSet>()!
|
_overworldCurrents = dataManager.GetExcelSheet<AetherCurrentCompFlgSet>()
|
||||||
.Where(x => x.RowId > 0)
|
.Where(x => x.RowId > 0)
|
||||||
.Where(x => x.Territory.IsValid)
|
.Where(x => x.Territory.IsValid)
|
||||||
.ToImmutableDictionary(
|
.ToImmutableDictionary(
|
||||||
|
@ -40,7 +40,7 @@ internal sealed class QuestData
|
|||||||
public QuestData(IDataManager dataManager)
|
public QuestData(IDataManager dataManager)
|
||||||
{
|
{
|
||||||
Dictionary<uint, uint> questChapters =
|
Dictionary<uint, uint> questChapters =
|
||||||
dataManager.GetExcelSheet<QuestChapter>()!
|
dataManager.GetExcelSheet<QuestChapter>()
|
||||||
.Where(x => x.RowId > 0 && x.Quest.RowId > 0)
|
.Where(x => x.RowId > 0 && x.Quest.RowId > 0)
|
||||||
.ToDictionary(x => x.Quest.RowId, x => x.Redo.RowId);
|
.ToDictionary(x => x.Quest.RowId, x => x.Redo.RowId);
|
||||||
|
|
||||||
|
40
Questionable/External/AutomatonIpc.cs
vendored
Normal file
40
Questionable/External/AutomatonIpc.cs
vendored
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
using Dalamud.Plugin;
|
||||||
|
using Dalamud.Plugin.Ipc;
|
||||||
|
using Dalamud.Plugin.Ipc.Exceptions;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
|
namespace Questionable.External;
|
||||||
|
|
||||||
|
internal sealed class AutomatonIpc
|
||||||
|
{
|
||||||
|
private readonly ILogger<AutomatonIpc> _logger;
|
||||||
|
private readonly ICallGateSubscriber<string,bool> _isTweakEnabled;
|
||||||
|
private bool _loggedIpcError;
|
||||||
|
|
||||||
|
public AutomatonIpc(IDalamudPluginInterface pluginInterface, ILogger<AutomatonIpc> logger)
|
||||||
|
{
|
||||||
|
_logger = logger;
|
||||||
|
_isTweakEnabled = pluginInterface.GetIpcSubscriber<string, bool>("Automaton.IsTweakEnabled");
|
||||||
|
logger.LogWarning("Automaton x {IsTweakEnabled}", IsAutoSnipeEnabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsAutoSnipeEnabled
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return _isTweakEnabled.InvokeFunc("AutoSnipeQuests");
|
||||||
|
}
|
||||||
|
catch (IpcError e)
|
||||||
|
{
|
||||||
|
if (!_loggedIpcError)
|
||||||
|
{
|
||||||
|
_loggedIpcError = true;
|
||||||
|
_logger.LogWarning(e, "Could not query automaton for tweak status, probably not installed");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
33
Questionable/External/LifestreamIpc.cs
vendored
33
Questionable/External/LifestreamIpc.cs
vendored
@ -1,5 +1,9 @@
|
|||||||
using Dalamud.Plugin;
|
using System.Collections.Generic;
|
||||||
|
using Dalamud.Plugin;
|
||||||
using Dalamud.Plugin.Ipc;
|
using Dalamud.Plugin.Ipc;
|
||||||
|
using Dalamud.Plugin.Services;
|
||||||
|
using Lumina.Excel.Sheets;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
using Questionable.Data;
|
using Questionable.Data;
|
||||||
using Questionable.Model.Common;
|
using Questionable.Model.Common;
|
||||||
|
|
||||||
@ -8,25 +12,40 @@ namespace Questionable.External;
|
|||||||
internal sealed class LifestreamIpc
|
internal sealed class LifestreamIpc
|
||||||
{
|
{
|
||||||
private readonly AetheryteData _aetheryteData;
|
private readonly AetheryteData _aetheryteData;
|
||||||
|
private readonly IDataManager _dataManager;
|
||||||
|
private readonly ILogger<LifestreamIpc> _logger;
|
||||||
private readonly ICallGateSubscriber<string, bool> _aethernetTeleport;
|
private readonly ICallGateSubscriber<string, bool> _aethernetTeleport;
|
||||||
|
|
||||||
public LifestreamIpc(IDalamudPluginInterface pluginInterface, AetheryteData aetheryteData)
|
public LifestreamIpc(IDalamudPluginInterface pluginInterface, AetheryteData aetheryteData, IDataManager dataManager, ILogger<LifestreamIpc> logger)
|
||||||
{
|
{
|
||||||
_aetheryteData = aetheryteData;
|
_aetheryteData = aetheryteData;
|
||||||
|
_dataManager = dataManager;
|
||||||
|
_logger = logger;
|
||||||
_aethernetTeleport = pluginInterface.GetIpcSubscriber<string, bool>("Lifestream.AethernetTeleport");
|
_aethernetTeleport = pluginInterface.GetIpcSubscriber<string, bool>("Lifestream.AethernetTeleport");
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Teleport(EAetheryteLocation aetheryteLocation)
|
public bool Teleport(EAetheryteLocation aetheryteLocation)
|
||||||
{
|
{
|
||||||
if (aetheryteLocation == EAetheryteLocation.IshgardFirmament)
|
string? name = aetheryteLocation switch
|
||||||
{
|
{
|
||||||
// TODO does this even work on non-EN clients?
|
EAetheryteLocation.IshgardFirmament => "Firmament",
|
||||||
return _aethernetTeleport.InvokeFunc("Firmament");
|
EAetheryteLocation.FirmamentMendicantsCourt => GetPlaceName(3436),
|
||||||
}
|
EAetheryteLocation.FirmamentMattock => GetPlaceName(3473),
|
||||||
|
EAetheryteLocation.FirmamentNewNest => GetPlaceName(3475),
|
||||||
|
EAetheryteLocation.FirmanentSaintRoellesDais => GetPlaceName(3474),
|
||||||
|
EAetheryteLocation.FirmamentFeatherfall => GetPlaceName(3525),
|
||||||
|
EAetheryteLocation.FirmamentHoarfrostHall => GetPlaceName(3528),
|
||||||
|
EAetheryteLocation.FirmamentWesternRisensongQuarter => GetPlaceName(3646),
|
||||||
|
EAetheryteLocation.FIrmamentEasternRisensongQuarter => GetPlaceName(3645),
|
||||||
|
_ => _aetheryteData.AethernetNames.GetValueOrDefault(aetheryteLocation),
|
||||||
|
};
|
||||||
|
|
||||||
if (!_aetheryteData.AethernetNames.TryGetValue(aetheryteLocation, out string? name))
|
if (name == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
_logger.LogInformation("Teleporting to '{Name}'", name);
|
||||||
return _aethernetTeleport.InvokeFunc(name);
|
return _aethernetTeleport.InvokeFunc(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string GetPlaceName(uint rowId) => _dataManager.GetExcelSheet<PlaceName>().GetRow(rowId).Name.ToString();
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ internal sealed unsafe class ChatFunctions
|
|||||||
.Where(x => x.TextCommand.IsValid)
|
.Where(x => x.TextCommand.IsValid)
|
||||||
.Select(x => (x.RowId, Command: x.TextCommand.Value.Command.ToString()))
|
.Select(x => (x.RowId, Command: x.TextCommand.Value.Command.ToString()))
|
||||||
.Where(x => !string.IsNullOrEmpty(x.Command) && x.Command.StartsWith('/'))
|
.Where(x => !string.IsNullOrEmpty(x.Command) && x.Command.StartsWith('/'))
|
||||||
.ToDictionary(x => (EEmote)x.RowId, x => x.Command!)
|
.ToDictionary(x => (EEmote)x.RowId, x => x.Command)
|
||||||
.AsReadOnly();
|
.AsReadOnly();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,29 +122,45 @@ internal sealed unsafe class QuestFunctions
|
|||||||
// do the MSQ; if a side quest is the first item do that side quest.
|
// do the MSQ; if a side quest is the first item do that side quest.
|
||||||
//
|
//
|
||||||
// If no quests are marked as 'priority', accepting a new quest adds it to the top of the list.
|
// If no quests are marked as 'priority', accepting a new quest adds it to the top of the list.
|
||||||
|
List<(ElementId Quest, byte Sequence)> trackedQuests = [];
|
||||||
for (int i = questManager->TrackedQuests.Length - 1; i >= 0; --i)
|
for (int i = questManager->TrackedQuests.Length - 1; i >= 0; --i)
|
||||||
{
|
{
|
||||||
ElementId currentQuest;
|
ElementId currentQuest;
|
||||||
var trackedQuest = questManager->TrackedQuests[i];
|
var trackedQuest = questManager->TrackedQuests[i];
|
||||||
switch (trackedQuest.QuestType)
|
switch (trackedQuest.QuestType)
|
||||||
{
|
{
|
||||||
default:
|
|
||||||
continue;
|
|
||||||
|
|
||||||
case 1: // normal quest
|
case 1: // normal quest
|
||||||
currentQuest = new QuestId(questManager->NormalQuests[trackedQuest.Index].QuestId);
|
currentQuest = new QuestId(questManager->NormalQuests[trackedQuest.Index].QuestId);
|
||||||
if (_questRegistry.IsKnownQuest(currentQuest))
|
if (_questRegistry.IsKnownQuest(currentQuest))
|
||||||
return (currentQuest, QuestManager.GetQuestSequence(currentQuest.Value));
|
trackedQuests.Add((currentQuest, QuestManager.GetQuestSequence(currentQuest.Value)));
|
||||||
continue;
|
break;
|
||||||
|
|
||||||
case 2: // leve
|
case 2: // leve
|
||||||
currentQuest = new LeveId(questManager->LeveQuests[trackedQuest.Index].LeveId);
|
currentQuest = new LeveId(questManager->LeveQuests[trackedQuest.Index].LeveId);
|
||||||
if (_questRegistry.IsKnownQuest(currentQuest))
|
if (_questRegistry.IsKnownQuest(currentQuest))
|
||||||
return (currentQuest, questManager->GetLeveQuestById(currentQuest.Value)->Sequence);
|
trackedQuests.Add((currentQuest, questManager->GetLeveQuestById(currentQuest.Value)->Sequence));
|
||||||
continue;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (trackedQuests.Count > 0)
|
||||||
|
{
|
||||||
|
// if we have multiple quests to turn in for an allied society, try and complete all of them
|
||||||
|
var (firstTrackedQuest, firstTrackedSequence) = trackedQuests.First();
|
||||||
|
EAlliedSociety firstTrackedAlliedSociety = GetCommonAlliedSocietyTurnIn(firstTrackedQuest);
|
||||||
|
if (firstTrackedAlliedSociety != EAlliedSociety.None && firstTrackedSequence == 255)
|
||||||
|
{
|
||||||
|
foreach (var (quest, sequence) in trackedQuests.Skip(1))
|
||||||
|
{
|
||||||
|
// only if the other quest isn't ready to be turned in
|
||||||
|
if (GetCommonAlliedSocietyTurnIn(quest) == firstTrackedAlliedSociety && sequence != 255)
|
||||||
|
return (quest, sequence);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (firstTrackedQuest, firstTrackedSequence);
|
||||||
|
}
|
||||||
|
|
||||||
ElementId? priorityQuest = GetNextPriorityQuestThatCanBeAccepted();
|
ElementId? priorityQuest = GetNextPriorityQuestThatCanBeAccepted();
|
||||||
if (priorityQuest != null)
|
if (priorityQuest != null)
|
||||||
{
|
{
|
||||||
@ -221,6 +237,21 @@ internal sealed unsafe class QuestFunctions
|
|||||||
return (currentQuest, QuestManager.GetQuestSequence(currentQuest.Value));
|
return (currentQuest, QuestManager.GetQuestSequence(currentQuest.Value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static EAlliedSociety GetCommonAlliedSocietyTurnIn(ElementId elementId)
|
||||||
|
{
|
||||||
|
if (elementId is QuestId questId)
|
||||||
|
{
|
||||||
|
return questId.Value switch
|
||||||
|
{
|
||||||
|
5215 => EAlliedSociety.None,
|
||||||
|
>= 5199 and <= 5226 => EAlliedSociety.Pelupelu,
|
||||||
|
_ => EAlliedSociety.None,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return EAlliedSociety.None;
|
||||||
|
}
|
||||||
|
|
||||||
public QuestProgressInfo? GetQuestProgressInfo(ElementId elementId)
|
public QuestProgressInfo? GetQuestProgressInfo(ElementId elementId)
|
||||||
{
|
{
|
||||||
if (elementId is QuestId questId)
|
if (elementId is QuestId questId)
|
||||||
@ -596,7 +627,7 @@ internal sealed unsafe class QuestFunctions
|
|||||||
|
|
||||||
public bool IsClassJobUnlocked(EClassJob classJob)
|
public bool IsClassJobUnlocked(EClassJob classJob)
|
||||||
{
|
{
|
||||||
var classJobRow = _dataManager.GetExcelSheet<ClassJob>()!.GetRow((uint)classJob)!;
|
var classJobRow = _dataManager.GetExcelSheet<ClassJob>().GetRow((uint)classJob);
|
||||||
var questId = (ushort)classJobRow.UnlockQuest.RowId;
|
var questId = (ushort)classJobRow.UnlockQuest.RowId;
|
||||||
if (questId != 0)
|
if (questId != 0)
|
||||||
return IsQuestComplete(new QuestId(questId));
|
return IsQuestComplete(new QuestId(questId));
|
||||||
@ -607,7 +638,7 @@ internal sealed unsafe class QuestFunctions
|
|||||||
|
|
||||||
public bool IsJobUnlocked(EClassJob classJob)
|
public bool IsJobUnlocked(EClassJob classJob)
|
||||||
{
|
{
|
||||||
var classJobRow = _dataManager.GetExcelSheet<ClassJob>()!.GetRow((uint)classJob)!;
|
var classJobRow = _dataManager.GetExcelSheet<ClassJob>().GetRow((uint)classJob);
|
||||||
return IsClassJobUnlocked((EClassJob)classJobRow.ClassJobParent.RowId);
|
return IsClassJobUnlocked((EClassJob)classJobRow.ClassJobParent.RowId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ internal sealed class SatisfactionSupplyInfo : IQuestInfo
|
|||||||
IssuerDataId = npc.Npc.RowId;
|
IssuerDataId = npc.Npc.RowId;
|
||||||
Level = npc.LevelUnlock;
|
Level = npc.LevelUnlock;
|
||||||
SortKey = QuestId.Value;
|
SortKey = QuestId.Value;
|
||||||
Expansion = (EExpansionVersion)npc.QuestRequired.Value!.Expansion.RowId;
|
Expansion = (EExpansionVersion)npc.QuestRequired.Value.Expansion.RowId;
|
||||||
PreviousQuests = [new PreviousQuestInfo(new QuestId((ushort)(npc.QuestRequired.RowId & 0xFFFF)))];
|
PreviousQuests = [new PreviousQuestInfo(new QuestId((ushort)(npc.QuestRequired.RowId & 0xFFFF)))];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,7 +112,6 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
|||||||
serviceCollection.AddSingleton<ChatFunctions>();
|
serviceCollection.AddSingleton<ChatFunctions>();
|
||||||
serviceCollection.AddSingleton<QuestFunctions>();
|
serviceCollection.AddSingleton<QuestFunctions>();
|
||||||
serviceCollection.AddSingleton<DalamudReflector>();
|
serviceCollection.AddSingleton<DalamudReflector>();
|
||||||
serviceCollection.AddSingleton<AutoSnipeHandler>();
|
|
||||||
|
|
||||||
serviceCollection.AddSingleton<AetherCurrentData>();
|
serviceCollection.AddSingleton<AetherCurrentData>();
|
||||||
serviceCollection.AddSingleton<AetheryteData>();
|
serviceCollection.AddSingleton<AetheryteData>();
|
||||||
@ -128,6 +127,7 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
|||||||
serviceCollection.AddSingleton<QuestionableIpc>();
|
serviceCollection.AddSingleton<QuestionableIpc>();
|
||||||
serviceCollection.AddSingleton<TextAdvanceIpc>();
|
serviceCollection.AddSingleton<TextAdvanceIpc>();
|
||||||
serviceCollection.AddSingleton<NotificationMasterIpc>();
|
serviceCollection.AddSingleton<NotificationMasterIpc>();
|
||||||
|
serviceCollection.AddSingleton<AutomatonIpc>();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void AddTaskFactories(ServiceCollection serviceCollection)
|
private static void AddTaskFactories(ServiceCollection serviceCollection)
|
||||||
@ -147,7 +147,6 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
|||||||
.AddTaskFactoryAndExecutor<StepDisabled.SkipRemainingTasks, StepDisabled.Factory,
|
.AddTaskFactoryAndExecutor<StepDisabled.SkipRemainingTasks, StepDisabled.Factory,
|
||||||
StepDisabled.SkipDisabledStepsExecutor>();
|
StepDisabled.SkipDisabledStepsExecutor>();
|
||||||
serviceCollection.AddTaskFactory<EquipRecommended.BeforeDutyOrInstance>();
|
serviceCollection.AddTaskFactory<EquipRecommended.BeforeDutyOrInstance>();
|
||||||
serviceCollection.AddTaskFactoryAndExecutor<Gather.GatheringTask, Gather.Factory, Gather.StartGathering>();
|
|
||||||
serviceCollection.AddTaskExecutor<Gather.SkipMarker, Gather.DoSkip>();
|
serviceCollection.AddTaskExecutor<Gather.SkipMarker, Gather.DoSkip>();
|
||||||
serviceCollection
|
serviceCollection
|
||||||
.AddTaskFactoryAndExecutor<AetheryteShortcut.Task, AetheryteShortcut.Factory,
|
.AddTaskFactoryAndExecutor<AetheryteShortcut.Task, AetheryteShortcut.Factory,
|
||||||
@ -156,6 +155,8 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
|||||||
.AddTaskExecutor<AetheryteShortcut.MoveAwayFromAetheryte, AetheryteShortcut.MoveAwayFromAetheryteExecutor>();
|
.AddTaskExecutor<AetheryteShortcut.MoveAwayFromAetheryte, AetheryteShortcut.MoveAwayFromAetheryteExecutor>();
|
||||||
serviceCollection
|
serviceCollection
|
||||||
.AddTaskFactoryAndExecutor<SkipCondition.SkipTask, SkipCondition.Factory, SkipCondition.CheckSkip>();
|
.AddTaskFactoryAndExecutor<SkipCondition.SkipTask, SkipCondition.Factory, SkipCondition.CheckSkip>();
|
||||||
|
serviceCollection.AddTaskFactoryAndExecutor<Gather.GatheringTask, Gather.Factory, Gather.StartGathering>();
|
||||||
|
serviceCollection.AddTaskExecutor<Gather.DelayedGatheringTask, Gather.DelayedGatheringExecutor>();
|
||||||
serviceCollection
|
serviceCollection
|
||||||
.AddTaskFactoryAndExecutor<AethernetShortcut.Task, AethernetShortcut.Factory,
|
.AddTaskFactoryAndExecutor<AethernetShortcut.Task, AethernetShortcut.Factory,
|
||||||
AethernetShortcut.UseAethernetShortcut>();
|
AethernetShortcut.UseAethernetShortcut>();
|
||||||
@ -299,8 +300,8 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
|||||||
serviceProvider.GetRequiredService<ShopController>();
|
serviceProvider.GetRequiredService<ShopController>();
|
||||||
serviceProvider.GetRequiredService<QuestionableIpc>();
|
serviceProvider.GetRequiredService<QuestionableIpc>();
|
||||||
serviceProvider.GetRequiredService<DalamudInitializer>();
|
serviceProvider.GetRequiredService<DalamudInitializer>();
|
||||||
serviceProvider.GetRequiredService<AutoSnipeHandler>().Enable();
|
|
||||||
serviceProvider.GetRequiredService<TextAdvanceIpc>();
|
serviceProvider.GetRequiredService<TextAdvanceIpc>();
|
||||||
|
serviceProvider.GetRequiredService<AutomatonIpc>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
|
@ -115,18 +115,6 @@ internal sealed class ConfigWindow : LWindow, IPersistableWindowConfig
|
|||||||
_configuration.General.ConfigureTextAdvance = configureTextAdvance;
|
_configuration.General.ConfigureTextAdvance = configureTextAdvance;
|
||||||
Save();
|
Save();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui.CollapsingHeader("Cheats"))
|
|
||||||
{
|
|
||||||
ImGui.TextColored(ImGuiColors.DalamudRed,
|
|
||||||
"This setting will be removed in a future version, and will be\navailable through TextAdvance instead.");
|
|
||||||
bool automaticallyCompleteSnipeTasks = _configuration.General.AutomaticallyCompleteSnipeTasks;
|
|
||||||
if (ImGui.Checkbox("Automatically complete snipe tasks", ref automaticallyCompleteSnipeTasks))
|
|
||||||
{
|
|
||||||
_configuration.General.AutomaticallyCompleteSnipeTasks = automaticallyCompleteSnipeTasks;
|
|
||||||
Save();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DrawNotificationsTab()
|
private void DrawNotificationsTab()
|
||||||
|
@ -108,9 +108,9 @@ internal sealed class GatheringJournalComponent
|
|||||||
.GroupBy(x => x.GatheringPointId)
|
.GroupBy(x => x.GatheringPointId)
|
||||||
.ToDictionary(x => x.Key, x => x.First());
|
.ToDictionary(x => x.Key, x => x.First());
|
||||||
|
|
||||||
var itemSheet = dataManager.GetExcelSheet<Item>()!;
|
var itemSheet = dataManager.GetExcelSheet<Item>();
|
||||||
|
|
||||||
_gatheringItems = dataManager.GetExcelSheet<GatheringItem>()!
|
_gatheringItems = dataManager.GetExcelSheet<GatheringItem>()
|
||||||
.Where(x => x.RowId != 0 && x.GatheringItemLevel.RowId != 0)
|
.Where(x => x.RowId != 0 && x.GatheringItemLevel.RowId != 0)
|
||||||
.Select(x => new
|
.Select(x => new
|
||||||
{
|
{
|
||||||
@ -120,7 +120,7 @@ internal sealed class GatheringJournalComponent
|
|||||||
.Where(x => !string.IsNullOrEmpty(x.Name))
|
.Where(x => !string.IsNullOrEmpty(x.Name))
|
||||||
.ToDictionary(x => x.GatheringItemId, x => x.Name!);
|
.ToDictionary(x => x.GatheringItemId, x => x.Name!);
|
||||||
|
|
||||||
_gatheringPointsByExpansion = dataManager.GetExcelSheet<GatheringPoint>()!
|
_gatheringPointsByExpansion = dataManager.GetExcelSheet<GatheringPoint>()
|
||||||
.Where(x => x.GatheringPointBase.RowId != 0)
|
.Where(x => x.GatheringPointBase.RowId != 0)
|
||||||
.Where(x => x.GatheringPointBase.RowId is < 653 or > 680) // exclude ishgard restoration phase 1
|
.Where(x => x.GatheringPointBase.RowId is < 653 or > 680) // exclude ishgard restoration phase 1
|
||||||
.DistinctBy(x => x.GatheringPointBase.RowId)
|
.DistinctBy(x => x.GatheringPointBase.RowId)
|
||||||
@ -128,7 +128,7 @@ internal sealed class GatheringJournalComponent
|
|||||||
{
|
{
|
||||||
GatheringPointId = x.RowId,
|
GatheringPointId = x.RowId,
|
||||||
Point = new DefaultGatheringPoint(new GatheringPointId((ushort)x.GatheringPointBase.RowId),
|
Point = new DefaultGatheringPoint(new GatheringPointId((ushort)x.GatheringPointBase.RowId),
|
||||||
x.GatheringPointBase.Value!.GatheringType.RowId switch
|
x.GatheringPointBase.Value.GatheringType.RowId switch
|
||||||
{
|
{
|
||||||
0 or 1 => EClassJob.Miner,
|
0 or 1 => EClassJob.Miner,
|
||||||
2 or 3 => EClassJob.Botanist,
|
2 or 3 => EClassJob.Botanist,
|
||||||
@ -159,7 +159,7 @@ internal sealed class GatheringJournalComponent
|
|||||||
_gatheringPointRegistry.TryGetGatheringPoint(x.Point.Id, out GatheringRoot? gatheringRoot))
|
_gatheringPointRegistry.TryGetGatheringPoint(x.Point.Id, out GatheringRoot? gatheringRoot))
|
||||||
{
|
{
|
||||||
// for some reason the game doesn't know where this gathering location is
|
// for some reason the game doesn't know where this gathering location is
|
||||||
var territoryType = territoryTypeSheet.GetRow(gatheringRoot.Steps.Last().TerritoryId)!;
|
var territoryType = territoryTypeSheet.GetRow(gatheringRoot.Steps.Last().TerritoryId);
|
||||||
return x.Point with
|
return x.Point with
|
||||||
{
|
{
|
||||||
Expansion = (EExpansionVersion)territoryType.ExVersion.RowId,
|
Expansion = (EExpansionVersion)territoryType.ExVersion.RowId,
|
||||||
|
@ -10,10 +10,11 @@ using ImGuiNET;
|
|||||||
using LLib;
|
using LLib;
|
||||||
using LLib.ImGui;
|
using LLib.ImGui;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Questionable.External;
|
||||||
|
|
||||||
namespace Questionable.Windows;
|
namespace Questionable.Windows;
|
||||||
|
|
||||||
internal sealed class OneTimeSetupWindow : LWindow, IDisposable
|
internal sealed class OneTimeSetupWindow : LWindow
|
||||||
{
|
{
|
||||||
private static readonly IReadOnlyList<PluginInfo> RequiredPlugins =
|
private static readonly IReadOnlyList<PluginInfo> RequiredPlugins =
|
||||||
[
|
[
|
||||||
@ -22,35 +23,24 @@ internal sealed class OneTimeSetupWindow : LWindow, IDisposable
|
|||||||
vnavmesh handles the navigation within a zone, moving
|
vnavmesh handles the navigation within a zone, moving
|
||||||
your character to the next quest-related objective.
|
your character to the next quest-related objective.
|
||||||
""",
|
""",
|
||||||
new Uri("https://github.com/awgil/ffxiv_navmesh/")),
|
new Uri("https://github.com/awgil/ffxiv_navmesh/"),
|
||||||
|
new Uri("https://puni.sh/api/repository/veyn")),
|
||||||
new("Lifestream",
|
new("Lifestream",
|
||||||
"""
|
"""
|
||||||
Used to travel to aethernet shards in cities.
|
Used to travel to aethernet shards in cities.
|
||||||
""",
|
""",
|
||||||
new Uri("https://github.com/NightmareXIV/Lifestream")),
|
new Uri("https://github.com/NightmareXIV/Lifestream"),
|
||||||
|
new Uri("https://github.com/NightmareXIV/MyDalamudPlugins/raw/main/pluginmaster.json")),
|
||||||
new("TextAdvance",
|
new("TextAdvance",
|
||||||
"""
|
"""
|
||||||
Automatically accepts and turns in quests, skips cutscenes
|
Automatically accepts and turns in quests, skips cutscenes
|
||||||
and dialogue.
|
and dialogue.
|
||||||
""",
|
""",
|
||||||
new Uri("https://github.com/NightmareXIV/TextAdvance")),
|
new Uri("https://github.com/NightmareXIV/TextAdvance"),
|
||||||
|
new Uri("https://github.com/NightmareXIV/MyDalamudPlugins/raw/main/pluginmaster.json")),
|
||||||
];
|
];
|
||||||
|
|
||||||
private static readonly IReadOnlyList<PluginInfo> RecommendedPlugins =
|
private readonly IReadOnlyList<PluginInfo> _recommendedPlugins;
|
||||||
[
|
|
||||||
new("Rotation Solver Reborn",
|
|
||||||
"""
|
|
||||||
Automatically handles most combat interactions you encounter
|
|
||||||
during quests, including being interrupted by mobs.
|
|
||||||
""",
|
|
||||||
new Uri("https://github.com/FFXIV-CombatReborn/RotationSolverReborn")),
|
|
||||||
new("NotificationMaster",
|
|
||||||
"""
|
|
||||||
Sends a configurable out-of-game notification if a quest
|
|
||||||
requires manual actions.
|
|
||||||
""",
|
|
||||||
new Uri("https://github.com/NightmareXIV/NotificationMaster")),
|
|
||||||
];
|
|
||||||
|
|
||||||
private readonly Configuration _configuration;
|
private readonly Configuration _configuration;
|
||||||
private readonly IDalamudPluginInterface _pluginInterface;
|
private readonly IDalamudPluginInterface _pluginInterface;
|
||||||
@ -59,7 +49,7 @@ internal sealed class OneTimeSetupWindow : LWindow, IDisposable
|
|||||||
private readonly ILogger<OneTimeSetupWindow> _logger;
|
private readonly ILogger<OneTimeSetupWindow> _logger;
|
||||||
|
|
||||||
public OneTimeSetupWindow(Configuration configuration, IDalamudPluginInterface pluginInterface, UiUtils uiUtils,
|
public OneTimeSetupWindow(Configuration configuration, IDalamudPluginInterface pluginInterface, UiUtils uiUtils,
|
||||||
DalamudReflector dalamudReflector, ILogger<OneTimeSetupWindow> logger)
|
DalamudReflector dalamudReflector, ILogger<OneTimeSetupWindow> logger, AutomatonIpc automatonIpc)
|
||||||
: base("Questionable Setup###QuestionableOneTimeSetup",
|
: base("Questionable Setup###QuestionableOneTimeSetup",
|
||||||
ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.AlwaysAutoResize | ImGuiWindowFlags.NoSavedSettings, true)
|
ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.AlwaysAutoResize | ImGuiWindowFlags.NoSavedSettings, true)
|
||||||
{
|
{
|
||||||
@ -69,6 +59,33 @@ internal sealed class OneTimeSetupWindow : LWindow, IDisposable
|
|||||||
_dalamudReflector = dalamudReflector;
|
_dalamudReflector = dalamudReflector;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
|
||||||
|
_recommendedPlugins =
|
||||||
|
[
|
||||||
|
new("Rotation Solver Reborn",
|
||||||
|
"""
|
||||||
|
Automatically handles most combat interactions you encounter
|
||||||
|
during quests, including being interrupted by mobs.
|
||||||
|
""",
|
||||||
|
new Uri("https://github.com/FFXIV-CombatReborn/RotationSolverReborn"),
|
||||||
|
new Uri(
|
||||||
|
"https://raw.githubusercontent.com/FFXIV-CombatReborn/CombatRebornRepo/main/pluginmaster.json")),
|
||||||
|
new PluginInfo("Automaton",
|
||||||
|
"""
|
||||||
|
Automaton is a collection of automation-related tweaks.
|
||||||
|
The 'Sniper no sniping' tweak can complete snipe tasks automatically.
|
||||||
|
""",
|
||||||
|
new Uri("https://github.com/Jaksuhn/Automaton"),
|
||||||
|
new Uri("https://puni.sh/api/repository/croizat"),
|
||||||
|
[new PluginDetailInfo("'Sniper no sniping' enabled", () => automatonIpc.IsAutoSnipeEnabled)]),
|
||||||
|
new("NotificationMaster",
|
||||||
|
"""
|
||||||
|
Sends a configurable out-of-game notification if a quest
|
||||||
|
requires manual actions.
|
||||||
|
""",
|
||||||
|
new Uri("https://github.com/NightmareXIV/NotificationMaster"),
|
||||||
|
null),
|
||||||
|
];
|
||||||
|
|
||||||
RespectCloseHotkey = false;
|
RespectCloseHotkey = false;
|
||||||
ShowCloseButton = false;
|
ShowCloseButton = false;
|
||||||
AllowPinning = false;
|
AllowPinning = false;
|
||||||
@ -101,7 +118,7 @@ internal sealed class OneTimeSetupWindow : LWindow, IDisposable
|
|||||||
ImGui.Text("The following plugins are recommended, but not required:");
|
ImGui.Text("The following plugins are recommended, but not required:");
|
||||||
using (ImRaii.PushIndent())
|
using (ImRaii.PushIndent())
|
||||||
{
|
{
|
||||||
foreach (var plugin in RecommendedPlugins)
|
foreach (var plugin in _recommendedPlugins)
|
||||||
DrawPlugin(plugin, checklistPadding);
|
DrawPlugin(plugin, checklistPadding);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,8 +166,28 @@ internal sealed class OneTimeSetupWindow : LWindow, IDisposable
|
|||||||
using (ImRaii.PushIndent(checklistPadding))
|
using (ImRaii.PushIndent(checklistPadding))
|
||||||
{
|
{
|
||||||
ImGui.TextUnformatted(plugin.Details);
|
ImGui.TextUnformatted(plugin.Details);
|
||||||
if (!isInstalled && ImGui.Button("Open Repository"))
|
if (plugin.DetailsToCheck != null)
|
||||||
Util.OpenLink(plugin.Uri.ToString());
|
{
|
||||||
|
foreach (var detail in plugin.DetailsToCheck)
|
||||||
|
_uiUtils.ChecklistItem(detail.DisplayName, isInstalled && detail.Predicate());
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui.Spacing();
|
||||||
|
|
||||||
|
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Globe, "Open Website"))
|
||||||
|
Util.OpenLink(plugin.WebsiteUri.ToString());
|
||||||
|
|
||||||
|
ImGui.SameLine();
|
||||||
|
if (plugin.DalamudRepositoryUri != null)
|
||||||
|
{
|
||||||
|
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Code, "Open Repository"))
|
||||||
|
Util.OpenLink(plugin.DalamudRepositoryUri.ToString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ImGui.AlignTextToFramePadding();
|
||||||
|
ImGuiComponents.HelpMarker("Available on official Dalamud Repository");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -162,12 +199,12 @@ internal sealed class OneTimeSetupWindow : LWindow, IDisposable
|
|||||||
return _dalamudReflector.TryGetDalamudPlugin(internalName, out _, suppressErrors: true, ignoreCache: true);
|
return _dalamudReflector.TryGetDalamudPlugin(internalName, out _, suppressErrors: true, ignoreCache: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
private sealed record PluginInfo(
|
private sealed record PluginInfo(
|
||||||
string DisplayName,
|
string DisplayName,
|
||||||
string Details,
|
string Details,
|
||||||
Uri Uri);
|
Uri WebsiteUri,
|
||||||
|
Uri? DalamudRepositoryUri,
|
||||||
|
List<PluginDetailInfo>? DetailsToCheck = null);
|
||||||
|
|
||||||
|
private sealed record PluginDetailInfo(string DisplayName, Func<bool> Predicate);
|
||||||
}
|
}
|
||||||
|
@ -13,9 +13,9 @@
|
|||||||
},
|
},
|
||||||
"DalamudPackager": {
|
"DalamudPackager": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[2.1.13, )",
|
"requested": "[11.0.0, )",
|
||||||
"resolved": "2.1.13",
|
"resolved": "11.0.0",
|
||||||
"contentHash": "rMN1omGe8536f4xLMvx9NwfvpAc9YFFfeXJ1t4P4PE6Gu8WCIoFliR1sh07hM+bfODmesk/dvMbji7vNI+B/pQ=="
|
"contentHash": "bjT7XUlhIJSmsE/O76b7weUX+evvGQctbQB8aKXt94o+oPWxHpCepxAGMs7Thow3AzCyqWs7cOpp9/2wcgRRQA=="
|
||||||
},
|
},
|
||||||
"DotNet.ReproducibleBuilds": {
|
"DotNet.ReproducibleBuilds": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
@ -174,13 +174,13 @@
|
|||||||
"gatheringpaths": {
|
"gatheringpaths": {
|
||||||
"type": "Project",
|
"type": "Project",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Questionable.Model": "[3.12.0, )"
|
"Questionable.Model": "[4.0.0, )"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"llib": {
|
"llib": {
|
||||||
"type": "Project",
|
"type": "Project",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"DalamudPackager": "[2.1.13, )"
|
"DalamudPackager": "[11.0.0, )"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"notificationmasterapi": {
|
"notificationmasterapi": {
|
||||||
@ -195,7 +195,7 @@
|
|||||||
"questpaths": {
|
"questpaths": {
|
||||||
"type": "Project",
|
"type": "Project",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Questionable.Model": "[3.12.0, )"
|
"Questionable.Model": "[4.0.0, )"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
2
vendor/ECommons
vendored
2
vendor/ECommons
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 71ee09f7cc2230a73503b945422760da1368405c
|
Subproject commit 6ea40a9eea2e805f2f566fe0493749c7c0639ea3
|
Loading…
Reference in New Issue
Block a user